diff --git a/.gitignore b/.gitignore index 94bc442b..aedcfe25 100644 --- a/.gitignore +++ b/.gitignore @@ -69,4 +69,5 @@ crashlytics-build.properties # Temporary auto-generated Android Assets /[Aa]ssets/[Ss]treamingAssets/aa.meta -/[Aa]ssets/[Ss]treamingAssets/aa/* \ No newline at end of file +/[Aa]ssets/[Ss]treamingAssets/aa/* +了不起的甲骨文录屏(全部).mp4 diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 00000000..ddb6ff85 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,5 @@ +{ + "recommendations": [ + "visualstudiotoolsforunity.vstuc" + ] +} diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 00000000..da60e25a --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,10 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Attach to Unity", + "type": "vstuc", + "request": "attach" + } + ] +} \ No newline at end of file diff --git a/Assets - 快捷方式.lnk b/Assets - 快捷方式.lnk deleted file mode 100644 index 532fc92b..00000000 Binary files a/Assets - 快捷方式.lnk and /dev/null differ diff --git a/Assets/Bakery/ftGlobalStorage.asset b/Assets/Bakery/ftGlobalStorage.asset index cea2b7b1..73476c07 100644 --- a/Assets/Bakery/ftGlobalStorage.asset +++ b/Assets/Bakery/ftGlobalStorage.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c58ad790177b409830c169ebd572f92ccdca360a71bbb2b8551a93997030c054 -size 48621 +oid sha256:1539b4acbc775e7c72dba4652d8a70784d8719f47670de93240d5f903f388c26 +size 51961 diff --git a/Assets/Bakery/shader/Bakery_ShaderGraphHDRP.unitypackage.meta b/Assets/Bakery/shader/Bakery_ShaderGraphHDRP.unitypackage.meta deleted file mode 100644 index a023a5e6..00000000 --- a/Assets/Bakery/shader/Bakery_ShaderGraphHDRP.unitypackage.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: b1b95168f2f925246bf670cb2bc2bf79 -timeCreated: 1573412449 -licenseType: Store -DefaultImporter: - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Bakery/shader/Bakery_ShaderGraphURP.unitypackage.meta b/Assets/Bakery/shader/Bakery_ShaderGraphURP.unitypackage.meta deleted file mode 100644 index c57a21cc..00000000 --- a/Assets/Bakery/shader/Bakery_ShaderGraphURP.unitypackage.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: ec3754b09ac1517429546e96e7b25708 -timeCreated: 1606124300 -licenseType: Store -DefaultImporter: - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Hands/1.3.0/HandVisualizer/Materials/HandsDefaultMaterial.mat b/Assets/Samples/XR Hands/1.3.0/HandVisualizer/Materials/HandsDefaultMaterial.mat deleted file mode 100644 index 04b02ad7..00000000 --- a/Assets/Samples/XR Hands/1.3.0/HandVisualizer/Materials/HandsDefaultMaterial.mat +++ /dev/null @@ -1,79 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: HandsDefaultMaterial - m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} - m_ShaderKeywords: _ALPHABLEND_ON - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 3000 - stringTagMap: - RenderType: Transparent - disabledShaderPasses: [] - 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: 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_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 10 - - _GlossMapScale: 1 - - _Glossiness: 0 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 2 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 5 - - _UVSec: 0 - - _ZWrite: 0 - m_Colors: - - _Color: {r: 0.66518503, g: 0.66518503, b: 0.66518503, a: 0.64705884} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - m_BuildTextureStacks: [] diff --git a/Assets/Samples/XR Hands/1.3.0/HandVisualizer/Materials/Red.mat b/Assets/Samples/XR Hands/1.3.0/HandVisualizer/Materials/Red.mat deleted file mode 100644 index a35c5b13..00000000 --- a/Assets/Samples/XR Hands/1.3.0/HandVisualizer/Materials/Red.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: Red - m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} - m_ShaderKeywords: _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: -1 - stringTagMap: {} - disabledShaderPasses: [] - 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: 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_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: 1 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 0, b: 0, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - m_BuildTextureStacks: [] diff --git a/Assets/Samples/XR Hands/1.3.0/HandVisualizer/Materials/White.mat b/Assets/Samples/XR Hands/1.3.0/HandVisualizer/Materials/White.mat deleted file mode 100644 index 1c152bbe..00000000 --- a/Assets/Samples/XR Hands/1.3.0/HandVisualizer/Materials/White.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: White - m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} - m_ShaderKeywords: _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: -1 - stringTagMap: {} - disabledShaderPasses: [] - 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: 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_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: 1 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 0.96862745, g: 0.96862745, b: 0.96862745, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - m_BuildTextureStacks: [] diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2.meta b/Assets/Samples/XR Hands/1.5.0.meta similarity index 77% rename from Assets/Samples/XR Interaction Toolkit/2.5.2.meta rename to Assets/Samples/XR Hands/1.5.0.meta index eed7ca52..b1ab6c67 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2.meta +++ b/Assets/Samples/XR Hands/1.5.0.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 4ff62424fed81d44f84fa198683a61f4 +guid: 271eb5dfca4564f448d3fff94a6e5c40 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/Samples/XR Hands/1.3.0/HandVisualizer.meta b/Assets/Samples/XR Hands/1.5.0/HandVisualizer.meta similarity index 77% rename from Assets/Samples/XR Hands/1.3.0/HandVisualizer.meta rename to Assets/Samples/XR Hands/1.5.0/HandVisualizer.meta index 78ad8d94..ab1b75ba 100644 --- a/Assets/Samples/XR Hands/1.3.0/HandVisualizer.meta +++ b/Assets/Samples/XR Hands/1.5.0/HandVisualizer.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 05bfd248ba5534649b1ab682957b4797 +guid: e8a91104a2a89eb45bcbd9f0791d9afb folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/Samples/XR Hands/1.3.0/HandVisualizer/.sample.json b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/.sample.json similarity index 100% rename from Assets/Samples/XR Hands/1.3.0/HandVisualizer/.sample.json rename to Assets/Samples/XR Hands/1.5.0/HandVisualizer/.sample.json diff --git a/Assets/Samples/XR Hands/1.3.0/HandVisualizer/HandVisualizer.unity b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/HandVisualizer.unity similarity index 97% rename from Assets/Samples/XR Hands/1.3.0/HandVisualizer/HandVisualizer.unity rename to Assets/Samples/XR Hands/1.5.0/HandVisualizer/HandVisualizer.unity index d1851977..85a19f17 100644 --- a/Assets/Samples/XR Hands/1.3.0/HandVisualizer/HandVisualizer.unity +++ b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/HandVisualizer.unity @@ -130,7 +130,7 @@ LightingSettings: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_Name: - serializedVersion: 3 + serializedVersion: 4 m_GIWorkflowMode: 1 m_EnableBakedLightmaps: 1 m_EnableRealtimeLightmaps: 0 @@ -143,7 +143,7 @@ LightingSettings: m_LightmapMaxSize: 1024 m_BakeResolution: 40 m_Padding: 2 - m_TextureCompression: 1 + m_LightmapCompression: 2 m_AO: 0 m_AOMaxDistance: 1 m_CompAOExponent: 1 @@ -184,6 +184,7 @@ LightingSettings: m_PVRFilteringAtrousPositionSigmaDirect: 0.5 m_PVRFilteringAtrousPositionSigmaIndirect: 2 m_PVRFilteringAtrousPositionSigmaAO: 1 + m_PVRTiledBaking: 0 --- !u!1 &92641028 stripped GameObject: m_CorrespondingSourceObject: {fileID: 3133494152545806682, guid: 3f7511fbc40ae7a4b89c3298a3de199d, type: 3} @@ -224,6 +225,7 @@ Transform: 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: 944581975} m_RootOrder: 0 @@ -311,7 +313,6 @@ MonoBehaviour: m_EditorClassIdentifier: m_TrackingType: 0 m_UpdateType: 0 - m_IgnoreTrackingState: 0 m_PositionInput: m_UseReference: 0 m_Action: @@ -368,18 +369,6 @@ MonoBehaviour: m_Flags: 0 m_Flags: 0 m_Reference: {fileID: 0} - m_TrackingStateInput: - m_UseReference: 0 - m_Action: - m_Name: Tracking State Input - m_Type: 0 - m_ExpectedControlType: - m_Id: c977d269-d657-44ef-bd6a-27abbc374a51 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 0} m_PositionAction: m_Name: m_Type: 0 @@ -484,6 +473,7 @@ Transform: 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: 944581975} m_RootOrder: 1 @@ -501,7 +491,6 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UseOptimizedControls: 0 - m_Origin: {fileID: 1085439596} m_LeftHandMesh: {fileID: 1048441851} m_RightHandMesh: {fileID: 92641028} m_HandMeshMaterial: {fileID: 2100000, guid: 613690cd962241049a0ec289a6ff835e, type: 2} @@ -519,9 +508,12 @@ MonoBehaviour: m_GameObject: {fileID: 935940900} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: dd65cb8a4b261f34a969e4b0a69791a1, type: 3} + m_Script: {fileID: 11500000, guid: ac5903b776721d74786a2e43f00b949a, type: 3} m_Name: m_EditorClassIdentifier: + m_ProcessorExampleMode: 0 + m_LeftHandSmoothingFactor: 16 + m_RightHandSmoothingFactor: 16 --- !u!1 &944581974 GameObject: m_ObjectHideFlags: 0 @@ -548,6 +540,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 1.2, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 215855081} - {fileID: 935940901} @@ -667,6 +660,7 @@ Transform: 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: 944581975} m_Father: {fileID: 0} @@ -761,6 +755,7 @@ Transform: m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} m_LocalPosition: {x: 0, y: 3, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} m_RootOrder: 0 diff --git a/Assets/Samples/XR Hands/1.3.0/HandVisualizer/HandVisualizer.unity.meta b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/HandVisualizer.unity.meta similarity index 100% rename from Assets/Samples/XR Hands/1.3.0/HandVisualizer/HandVisualizer.unity.meta rename to Assets/Samples/XR Hands/1.5.0/HandVisualizer/HandVisualizer.unity.meta diff --git a/Assets/Samples/XR Hands/1.3.0/HandVisualizer/Materials.meta b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Materials.meta similarity index 100% rename from Assets/Samples/XR Hands/1.3.0/HandVisualizer/Materials.meta rename to Assets/Samples/XR Hands/1.5.0/HandVisualizer/Materials.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials/Controls_Black.mat b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Materials/Blue.mat similarity index 73% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials/Controls_Black.mat rename to Assets/Samples/XR Hands/1.5.0/HandVisualizer/Materials/Blue.mat index f865c931..17bbc756 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials/Controls_Black.mat +++ b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Materials/Blue.mat @@ -1,6 +1,6 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: ---- !u!114 &-6052782388386979577 +--- !u!114 &-7628788528051855285 MonoBehaviour: m_ObjectHideFlags: 11 m_CorrespondingSourceObject: {fileID: 0} @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 4 + version: 5 --- !u!21 &2100000 Material: serializedVersion: 8 @@ -20,11 +20,12 @@ Material: m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: Controls_Black + m_Name: Blue m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} - m_ValidKeywords: [] + m_ValidKeywords: + - _EMISSION m_InvalidKeywords: [] - m_LightmapFlags: 4 + m_LightmapFlags: 0 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 m_CustomRenderQueue: -1 @@ -33,6 +34,10 @@ Material: m_SavedProperties: serializedVersion: 3 m_TexEnvs: + - _AlphaTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} - _BaseMap: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} @@ -91,37 +96,64 @@ Material: m_Offset: {x: 0, y: 0} m_Ints: [] m_Floats: + - PixelSnap: 0 - _AlphaClip: 0 - _Blend: 0 + - _BlendOp: 0 - _BumpScale: 1 + - _CameraFadingEnabled: 0 + - _CameraFarFadeDistance: 2 + - _CameraNearFadeDistance: 1 - _ClearCoatMask: 0 - _ClearCoatSmoothness: 0 + - _ColorMask: 15 - _Cull: 2 - _Cutoff: 0.5 - _DetailAlbedoMapScale: 1 - _DetailNormalMapScale: 1 + - _DistortionBlend: 0.5 + - _DistortionEnabled: 0 + - _DistortionStrength: 1 + - _DistortionStrengthScaled: 0 - _DstBlend: 0 + - _EmissionEnabled: 0 + - _EnableExternalAlpha: 0 - _EnvironmentReflections: 1 + - _FlipbookMode: 0 - _GlossMapScale: 1 - _Glossiness: 0 - _GlossyReflections: 1 + - _LightingEnabled: 1 - _Metallic: 0 - _Mode: 0 - _OcclusionStrength: 1 - _Parallax: 0.02 - _QueueOffset: 0 - _ReceiveShadows: 1 - - _Smoothness: 0.672 + - _Smoothness: 0.5 - _SmoothnessTextureChannel: 0 + - _SoftParticlesEnabled: 0 + - _SoftParticlesFarFadeDistance: 1 + - _SoftParticlesNearFadeDistance: 0 - _SpecularHighlights: 1 - _SrcBlend: 1 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilOp: 0 + - _StencilReadMask: 255 + - _StencilWriteMask: 255 - _Surface: 0 - _UVSec: 0 + - _UseUIAlphaClip: 0 - _WorkflowMode: 1 - _ZWrite: 1 m_Colors: - - _BaseColor: {r: 0, g: 0, b: 0, a: 1} - - _Color: {r: 0.18460976, g: 0.18460976, b: 0.18460976, a: 1} + - _BaseColor: {r: 0, g: 0, b: 1, a: 1} + - _CameraFadeParams: {r: 0, g: Infinity, b: 0, a: 0} + - _Color: {r: 0, g: 0, b: 1, 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} + - _SoftParticleFadeParams: {r: 0, g: 0, b: 0, a: 0} - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} m_BuildTextureStacks: [] diff --git a/Assets/Samples/XR Hands/1.3.0/HandVisualizer/Materials/Blue.mat.meta b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Materials/Blue.mat.meta similarity index 100% rename from Assets/Samples/XR Hands/1.3.0/HandVisualizer/Materials/Blue.mat.meta rename to Assets/Samples/XR Hands/1.5.0/HandVisualizer/Materials/Blue.mat.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials/PrimitivesYellow.mat b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Materials/Green.mat similarity index 72% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials/PrimitivesYellow.mat rename to Assets/Samples/XR Hands/1.5.0/HandVisualizer/Materials/Green.mat index ecff591f..17b20ab6 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials/PrimitivesYellow.mat +++ b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Materials/Green.mat @@ -7,12 +7,12 @@ Material: m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: PrimitivesYellow + m_Name: Green m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} m_ValidKeywords: - - _GLOSSYREFLECTIONS_OFF + - _EMISSION m_InvalidKeywords: [] - m_LightmapFlags: 4 + m_LightmapFlags: 0 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 m_CustomRenderQueue: -1 @@ -21,6 +21,10 @@ Material: m_SavedProperties: serializedVersion: 3 m_TexEnvs: + - _AlphaTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} - _BaseMap: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} @@ -79,41 +83,68 @@ Material: m_Offset: {x: 0, y: 0} m_Ints: [] m_Floats: + - PixelSnap: 0 - _AlphaClip: 0 - _Blend: 0 + - _BlendOp: 0 - _BumpScale: 1 + - _CameraFadingEnabled: 0 + - _CameraFarFadeDistance: 2 + - _CameraNearFadeDistance: 1 - _ClearCoatMask: 0 - _ClearCoatSmoothness: 0 + - _ColorMask: 15 - _Cull: 2 - _Cutoff: 0.5 - _DetailAlbedoMapScale: 1 - _DetailNormalMapScale: 1 + - _DistortionBlend: 0.5 + - _DistortionEnabled: 0 + - _DistortionStrength: 1 + - _DistortionStrengthScaled: 0 - _DstBlend: 0 + - _EmissionEnabled: 0 + - _EnableExternalAlpha: 0 - _EnvironmentReflections: 1 - - _GlossMapScale: 0 + - _FlipbookMode: 0 + - _GlossMapScale: 1 - _Glossiness: 0 - - _GlossyReflections: 0 + - _GlossyReflections: 1 + - _LightingEnabled: 1 - _Metallic: 0 - _Mode: 0 - _OcclusionStrength: 1 - - _Parallax: 0.005 + - _Parallax: 0.02 - _QueueOffset: 0 - _ReceiveShadows: 1 - _Smoothness: 0.5 - _SmoothnessTextureChannel: 0 + - _SoftParticlesEnabled: 0 + - _SoftParticlesFarFadeDistance: 1 + - _SoftParticlesNearFadeDistance: 0 - _SpecularHighlights: 1 - _SrcBlend: 1 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilOp: 0 + - _StencilReadMask: 255 + - _StencilWriteMask: 255 - _Surface: 0 - _UVSec: 0 + - _UseUIAlphaClip: 0 - _WorkflowMode: 1 - _ZWrite: 1 m_Colors: - - _BaseColor: {r: 0.94509804, g: 1, b: 0.5803922, a: 1} - - _Color: {r: 1, g: 0.9212777, b: 0.5019608, a: 1} + - _BaseColor: {r: 0, g: 1, b: 0, a: 1} + - _CameraFadeParams: {r: 0, g: Infinity, b: 0, a: 0} + - _Color: {r: 0, g: 1, b: 0, 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} + - _SoftParticleFadeParams: {r: 0, g: 0, b: 0, a: 0} - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} m_BuildTextureStacks: [] ---- !u!114 &7412609096850590555 +--- !u!114 &9064977523446290879 MonoBehaviour: m_ObjectHideFlags: 11 m_CorrespondingSourceObject: {fileID: 0} @@ -125,4 +156,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 4 + version: 5 diff --git a/Assets/Samples/XR Hands/1.3.0/HandVisualizer/Materials/Green.mat.meta b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Materials/Green.mat.meta similarity index 100% rename from Assets/Samples/XR Hands/1.3.0/HandVisualizer/Materials/Green.mat.meta rename to Assets/Samples/XR Hands/1.5.0/HandVisualizer/Materials/Green.mat.meta diff --git a/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Materials/HandsDefaultMaterial.mat b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Materials/HandsDefaultMaterial.mat new file mode 100644 index 00000000..704258c2 --- /dev/null +++ b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Materials/HandsDefaultMaterial.mat @@ -0,0 +1,164 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-6565127186501960882 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 5 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: HandsDefaultMaterial + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ValidKeywords: + - _ALPHABLEND_ON + - _EMISSION + m_InvalidKeywords: + - _SURFACE_TYPE_TRANSPARENT + m_LightmapFlags: 0 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + disabledShaderPasses: + - DepthOnly + - SHADOWCASTER + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AlphaTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - PixelSnap: 0 + - _AlphaClip: 0 + - _Blend: 0 + - _BlendOp: 0 + - _BumpScale: 1 + - _CameraFadingEnabled: 0 + - _CameraFarFadeDistance: 2 + - _CameraNearFadeDistance: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _ColorMask: 15 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DistortionBlend: 0.5 + - _DistortionEnabled: 0 + - _DistortionStrength: 1 + - _DistortionStrengthScaled: 0 + - _DstBlend: 10 + - _EmissionEnabled: 0 + - _EnableExternalAlpha: 0 + - _EnvironmentReflections: 1 + - _FlipbookMode: 0 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _LightingEnabled: 1 + - _Metallic: 0 + - _Mode: 2 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0 + - _SmoothnessTextureChannel: 0 + - _SoftParticlesEnabled: 0 + - _SoftParticlesFarFadeDistance: 1 + - _SoftParticlesNearFadeDistance: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 5 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilOp: 0 + - _StencilReadMask: 255 + - _StencilWriteMask: 255 + - _Surface: 1 + - _UVSec: 0 + - _UseUIAlphaClip: 0 + - _WorkflowMode: 1 + - _ZWrite: 0 + m_Colors: + - _BaseColor: {r: 0.66518503, g: 0.66518503, b: 0.66518503, a: 0.64705884} + - _CameraFadeParams: {r: 0, g: Infinity, b: 0, a: 0} + - _Color: {r: 0.66518503, g: 0.66518503, b: 0.66518503, a: 0.64705884} + - _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} + - _SoftParticleFadeParams: {r: 0, g: 0, b: 0, a: 0} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/Samples/XR Hands/1.3.0/HandVisualizer/Materials/HandsDefaultMaterial.mat.meta b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Materials/HandsDefaultMaterial.mat.meta similarity index 100% rename from Assets/Samples/XR Hands/1.3.0/HandVisualizer/Materials/HandsDefaultMaterial.mat.meta rename to Assets/Samples/XR Hands/1.5.0/HandVisualizer/Materials/HandsDefaultMaterial.mat.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials/AccentButton.mat b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Materials/Red.mat similarity index 74% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials/AccentButton.mat rename to Assets/Samples/XR Hands/1.5.0/HandVisualizer/Materials/Red.mat index 5072ae17..b3230480 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials/AccentButton.mat +++ b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Materials/Red.mat @@ -1,18 +1,5 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: ---- !u!114 &-8120562580438748798 -MonoBehaviour: - m_ObjectHideFlags: 11 - 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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} - m_Name: - m_EditorClassIdentifier: - version: 4 --- !u!21 &2100000 Material: serializedVersion: 8 @@ -20,11 +7,12 @@ Material: m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: AccentButton + m_Name: Red m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} - m_ValidKeywords: [] + m_ValidKeywords: + - _EMISSION m_InvalidKeywords: [] - m_LightmapFlags: 4 + m_LightmapFlags: 0 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 m_CustomRenderQueue: -1 @@ -33,6 +21,10 @@ Material: m_SavedProperties: serializedVersion: 3 m_TexEnvs: + - _AlphaTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} - _BaseMap: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} @@ -91,20 +83,34 @@ Material: m_Offset: {x: 0, y: 0} m_Ints: [] m_Floats: + - PixelSnap: 0 - _AlphaClip: 0 - _Blend: 0 + - _BlendOp: 0 - _BumpScale: 1 + - _CameraFadingEnabled: 0 + - _CameraFarFadeDistance: 2 + - _CameraNearFadeDistance: 1 - _ClearCoatMask: 0 - _ClearCoatSmoothness: 0 + - _ColorMask: 15 - _Cull: 2 - _Cutoff: 0.5 - _DetailAlbedoMapScale: 1 - _DetailNormalMapScale: 1 + - _DistortionBlend: 0.5 + - _DistortionEnabled: 0 + - _DistortionStrength: 1 + - _DistortionStrengthScaled: 0 - _DstBlend: 0 + - _EmissionEnabled: 0 + - _EnableExternalAlpha: 0 - _EnvironmentReflections: 1 + - _FlipbookMode: 0 - _GlossMapScale: 1 - _Glossiness: 0 - _GlossyReflections: 1 + - _LightingEnabled: 1 - _Metallic: 0 - _Mode: 0 - _OcclusionStrength: 1 @@ -113,15 +119,41 @@ Material: - _ReceiveShadows: 1 - _Smoothness: 0.5 - _SmoothnessTextureChannel: 0 + - _SoftParticlesEnabled: 0 + - _SoftParticlesFarFadeDistance: 1 + - _SoftParticlesNearFadeDistance: 0 - _SpecularHighlights: 1 - _SrcBlend: 1 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilOp: 0 + - _StencilReadMask: 255 + - _StencilWriteMask: 255 - _Surface: 0 - _UVSec: 0 + - _UseUIAlphaClip: 0 - _WorkflowMode: 1 - _ZWrite: 1 m_Colors: - - _BaseColor: {r: 0.9275999, g: 0.58167726, b: 0.58167726, a: 1} - - _Color: {r: 0.7169812, g: 0.15218942, b: 0.15218942, a: 1} + - _BaseColor: {r: 1, g: 0, b: 0, a: 1} + - _CameraFadeParams: {r: 0, g: Infinity, b: 0, a: 0} + - _Color: {r: 1, g: 0, b: 0, 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} + - _SoftParticleFadeParams: {r: 0, g: 0, b: 0, a: 0} - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} m_BuildTextureStacks: [] +--- !u!114 &2151432713694262380 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 5 diff --git a/Assets/Samples/XR Hands/1.3.0/HandVisualizer/Materials/Red.mat.meta b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Materials/Red.mat.meta similarity index 100% rename from Assets/Samples/XR Hands/1.3.0/HandVisualizer/Materials/Red.mat.meta rename to Assets/Samples/XR Hands/1.5.0/HandVisualizer/Materials/Red.mat.meta diff --git a/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Materials/TransparentRed.mat b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Materials/TransparentRed.mat new file mode 100644 index 00000000..b95247f8 --- /dev/null +++ b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Materials/TransparentRed.mat @@ -0,0 +1,165 @@ +%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: TransparentRed + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _ALPHAPREMULTIPLY_ON + - _EMISSION + m_InvalidKeywords: [] + m_LightmapFlags: 0 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + 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} + - _BaseMap: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - PixelSnap: 0 + - _AlphaClip: 0 + - _Blend: 0 + - _BlendOp: 0 + - _BumpScale: 1 + - _CameraFadingEnabled: 0 + - _CameraFarFadeDistance: 2 + - _CameraNearFadeDistance: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _ColorMask: 15 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DistortionBlend: 0.5 + - _DistortionEnabled: 0 + - _DistortionStrength: 1 + - _DistortionStrengthScaled: 0 + - _DstBlend: 10 + - _EmissionEnabled: 0 + - _EnableExternalAlpha: 0 + - _EnvironmentReflections: 1 + - _FlipbookMode: 0 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _LightingEnabled: 1 + - _Metallic: 0 + - _Mode: 3 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SoftParticlesEnabled: 0 + - _SoftParticlesFarFadeDistance: 1 + - _SoftParticlesNearFadeDistance: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilOp: 0 + - _StencilReadMask: 255 + - _StencilWriteMask: 255 + - _Surface: 0 + - _UVSec: 0 + - _UseUIAlphaClip: 0 + - _WorkflowMode: 1 + - _ZWrite: 0 + m_Colors: + - _BaseColor: {r: 1, g: 0, b: 0, a: 1} + - _CameraFadeParams: {r: 0, g: Infinity, b: 0, a: 0} + - _Color: {r: 1, g: 0, b: 0, a: 0.54509807} + - _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} + - _SoftParticleFadeParams: {r: 0, g: 0, b: 0, a: 0} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &2151432713694262380 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 5 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials/PrimitivesBlue.mat.meta b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Materials/TransparentRed.mat.meta similarity index 79% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials/PrimitivesBlue.mat.meta rename to Assets/Samples/XR Hands/1.5.0/HandVisualizer/Materials/TransparentRed.mat.meta index c8ff740b..b9b16d41 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials/PrimitivesBlue.mat.meta +++ b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Materials/TransparentRed.mat.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 3a84a7b91ec88714486e0c4cc9a5dc01 +guid: d149182fa7aa1dc47bd32b2a6da80ec9 NativeFormatImporter: externalObjects: {} mainObjectFileID: 2100000 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials/ChessPiece.mat b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Materials/White.mat similarity index 72% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials/ChessPiece.mat rename to Assets/Samples/XR Hands/1.5.0/HandVisualizer/Materials/White.mat index 7d1afaf1..eff54015 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials/ChessPiece.mat +++ b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Materials/White.mat @@ -7,12 +7,12 @@ Material: m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: ChessPiece + m_Name: White m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} m_ValidKeywords: - - _GLOSSYREFLECTIONS_OFF + - _EMISSION m_InvalidKeywords: [] - m_LightmapFlags: 4 + m_LightmapFlags: 0 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 m_CustomRenderQueue: -1 @@ -21,6 +21,10 @@ Material: m_SavedProperties: serializedVersion: 3 m_TexEnvs: + - _AlphaTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} - _BaseMap: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} @@ -79,41 +83,68 @@ Material: m_Offset: {x: 0, y: 0} m_Ints: [] m_Floats: + - PixelSnap: 0 - _AlphaClip: 0 - _Blend: 0 + - _BlendOp: 0 - _BumpScale: 1 + - _CameraFadingEnabled: 0 + - _CameraFarFadeDistance: 2 + - _CameraNearFadeDistance: 1 - _ClearCoatMask: 0 - _ClearCoatSmoothness: 0 + - _ColorMask: 15 - _Cull: 2 - _Cutoff: 0.5 - _DetailAlbedoMapScale: 1 - _DetailNormalMapScale: 1 + - _DistortionBlend: 0.5 + - _DistortionEnabled: 0 + - _DistortionStrength: 1 + - _DistortionStrengthScaled: 0 - _DstBlend: 0 + - _EmissionEnabled: 0 + - _EnableExternalAlpha: 0 - _EnvironmentReflections: 1 - - _GlossMapScale: 0 + - _FlipbookMode: 0 + - _GlossMapScale: 1 - _Glossiness: 0 - - _GlossyReflections: 0 + - _GlossyReflections: 1 + - _LightingEnabled: 1 - _Metallic: 0 - _Mode: 0 - _OcclusionStrength: 1 - - _Parallax: 0.005 + - _Parallax: 0.02 - _QueueOffset: 0 - _ReceiveShadows: 1 - _Smoothness: 0.5 - _SmoothnessTextureChannel: 0 + - _SoftParticlesEnabled: 0 + - _SoftParticlesFarFadeDistance: 1 + - _SoftParticlesNearFadeDistance: 0 - _SpecularHighlights: 1 - _SrcBlend: 1 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilOp: 0 + - _StencilReadMask: 255 + - _StencilWriteMask: 255 - _Surface: 0 - _UVSec: 0 + - _UseUIAlphaClip: 0 - _WorkflowMode: 1 - _ZWrite: 1 m_Colors: - - _BaseColor: {r: 0.94509804, g: 1, b: 0.5803922, a: 1} - - _Color: {r: 0.92156863, g: 0.9490196, b: 1, a: 1} + - _BaseColor: {r: 0.9686274, g: 0.9686274, b: 0.9686274, a: 1} + - _CameraFadeParams: {r: 0, g: Infinity, b: 0, a: 0} + - _Color: {r: 0.9686274, g: 0.9686274, b: 0.9686274, 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} + - _SoftParticleFadeParams: {r: 0, g: 0, b: 0, a: 0} - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} m_BuildTextureStacks: [] ---- !u!114 &7412609096850590555 +--- !u!114 &447292672560585647 MonoBehaviour: m_ObjectHideFlags: 11 m_CorrespondingSourceObject: {fileID: 0} @@ -125,4 +156,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 4 + version: 5 diff --git a/Assets/Samples/XR Hands/1.3.0/HandVisualizer/Materials/White.mat.meta b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Materials/White.mat.meta similarity index 100% rename from Assets/Samples/XR Hands/1.3.0/HandVisualizer/Materials/White.mat.meta rename to Assets/Samples/XR Hands/1.5.0/HandVisualizer/Materials/White.mat.meta diff --git a/Assets/Samples/XR Hands/1.3.0/HandVisualizer/Models.meta b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Models.meta similarity index 100% rename from Assets/Samples/XR Hands/1.3.0/HandVisualizer/Models.meta rename to Assets/Samples/XR Hands/1.5.0/HandVisualizer/Models.meta diff --git a/Assets/Samples/XR Hands/1.3.0/HandVisualizer/Models/LeftHand.fbx b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Models/LeftHand.fbx similarity index 100% rename from Assets/Samples/XR Hands/1.3.0/HandVisualizer/Models/LeftHand.fbx rename to Assets/Samples/XR Hands/1.5.0/HandVisualizer/Models/LeftHand.fbx diff --git a/Assets/Samples/XR Hands/1.3.0/HandVisualizer/Models/LeftHand.fbx.meta b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Models/LeftHand.fbx.meta similarity index 100% rename from Assets/Samples/XR Hands/1.3.0/HandVisualizer/Models/LeftHand.fbx.meta rename to Assets/Samples/XR Hands/1.5.0/HandVisualizer/Models/LeftHand.fbx.meta diff --git a/Assets/Samples/XR Hands/1.3.0/HandVisualizer/Models/RightHand.fbx b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Models/RightHand.fbx similarity index 100% rename from Assets/Samples/XR Hands/1.3.0/HandVisualizer/Models/RightHand.fbx rename to Assets/Samples/XR Hands/1.5.0/HandVisualizer/Models/RightHand.fbx diff --git a/Assets/Samples/XR Hands/1.3.0/HandVisualizer/Models/RightHand.fbx.meta b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Models/RightHand.fbx.meta similarity index 100% rename from Assets/Samples/XR Hands/1.3.0/HandVisualizer/Models/RightHand.fbx.meta rename to Assets/Samples/XR Hands/1.5.0/HandVisualizer/Models/RightHand.fbx.meta diff --git a/Assets/Samples/XR Hands/1.3.0/HandVisualizer/Prefabs.meta b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Prefabs.meta similarity index 100% rename from Assets/Samples/XR Hands/1.3.0/HandVisualizer/Prefabs.meta rename to Assets/Samples/XR Hands/1.5.0/HandVisualizer/Prefabs.meta diff --git a/Assets/Samples/XR Hands/1.3.0/HandVisualizer/Prefabs/Joint.prefab b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Prefabs/Joint.prefab similarity index 91% rename from Assets/Samples/XR Hands/1.3.0/HandVisualizer/Prefabs/Joint.prefab rename to Assets/Samples/XR Hands/1.5.0/HandVisualizer/Prefabs/Joint.prefab index a07a9bd3..9c5829bc 100644 --- a/Assets/Samples/XR Hands/1.3.0/HandVisualizer/Prefabs/Joint.prefab +++ b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Prefabs/Joint.prefab @@ -25,12 +25,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 734748737383922805} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0.005, z: 0} m_LocalScale: {x: 0.005, y: 0.005, z: 0.005} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4831140773533800019} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &6434675759608581130 MeshFilter: @@ -51,6 +52,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -106,12 +108,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 998394589122162542} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 0.01, y: 0.01, z: 0.01} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 8123511170798101446} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &1887305460834055526 MeshFilter: @@ -132,6 +135,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -187,12 +191,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1884330011090648049} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.005, y: 0, z: 0} m_LocalScale: {x: 0.005, y: 0.005, z: 0.005} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4831140773533800019} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &1819206441057094587 MeshFilter: @@ -213,6 +218,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -253,6 +259,7 @@ GameObject: m_Component: - component: {fileID: 8123511170798101446} - component: {fileID: 2704860076515533465} + - component: {fileID: 7456416708721142674} m_Layer: 0 m_Name: Joint m_TagString: Untagged @@ -267,17 +274,19 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 6507399986997092475} + 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: 6518585025970797200} - {fileID: 4831140773533800019} m_Father: {fileID: 0} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!120 &2704860076515533465 LineRenderer: + serializedVersion: 2 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -287,6 +296,7 @@ LineRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 0 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 0 @@ -364,16 +374,35 @@ LineRenderer: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 numCornerVertices: 0 numCapVertices: 0 alignment: 0 textureMode: 0 + textureScale: {x: 1, y: 1} shadowBias: 0.5 generateLightingData: 0 + m_MaskInteraction: 0 m_UseWorldSpace: 1 m_Loop: 0 + m_ApplyActiveColorSpace: 0 +--- !u!114 &7456416708721142674 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6507399986997092475} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6e1c395ff62a3a14dbeb293298bb46bf, type: 3} + m_Name: + m_EditorClassIdentifier: + m_JointVisual: {fileID: 998394589122162542} + m_HighFidelityJointMaterial: {fileID: 2100000, guid: c3474c208278e814cb8d1c29aa806e81, type: 2} + m_LowFidelityJointMaterial: {fileID: 2100000, guid: d149182fa7aa1dc47bd32b2a6da80ec9, type: 2} --- !u!1 &6513021459858911318 GameObject: m_ObjectHideFlags: 0 @@ -399,12 +428,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 6513021459858911318} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0.005} m_LocalScale: {x: 0.005, y: 0.005, z: 0.005} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4831140773533800019} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &8027412990048445551 MeshFilter: @@ -425,6 +455,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -478,13 +509,14 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 6855854388140184776} + 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: 5222184468966665097} - {fileID: 2107813110650148675} - {fileID: 791700661656661422} m_Father: {fileID: 8123511170798101446} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Assets/Samples/XR Hands/1.3.0/HandVisualizer/Prefabs/Joint.prefab.meta b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Prefabs/Joint.prefab.meta similarity index 100% rename from Assets/Samples/XR Hands/1.3.0/HandVisualizer/Prefabs/Joint.prefab.meta rename to Assets/Samples/XR Hands/1.5.0/HandVisualizer/Prefabs/Joint.prefab.meta diff --git a/Assets/Samples/XR Hands/1.3.0/HandVisualizer/Prefabs/Left Hand Tracking.prefab b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Prefabs/Left Hand Tracking.prefab similarity index 100% rename from Assets/Samples/XR Hands/1.3.0/HandVisualizer/Prefabs/Left Hand Tracking.prefab rename to Assets/Samples/XR Hands/1.5.0/HandVisualizer/Prefabs/Left Hand Tracking.prefab diff --git a/Assets/Samples/XR Hands/1.3.0/HandVisualizer/Prefabs/Left Hand Tracking.prefab.meta b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Prefabs/Left Hand Tracking.prefab.meta similarity index 100% rename from Assets/Samples/XR Hands/1.3.0/HandVisualizer/Prefabs/Left Hand Tracking.prefab.meta rename to Assets/Samples/XR Hands/1.5.0/HandVisualizer/Prefabs/Left Hand Tracking.prefab.meta diff --git a/Assets/Samples/XR Hands/1.3.0/HandVisualizer/Prefabs/Right Hand Tracking.prefab b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Prefabs/Right Hand Tracking.prefab similarity index 100% rename from Assets/Samples/XR Hands/1.3.0/HandVisualizer/Prefabs/Right Hand Tracking.prefab rename to Assets/Samples/XR Hands/1.5.0/HandVisualizer/Prefabs/Right Hand Tracking.prefab diff --git a/Assets/Samples/XR Hands/1.3.0/HandVisualizer/Prefabs/Right Hand Tracking.prefab.meta b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Prefabs/Right Hand Tracking.prefab.meta similarity index 100% rename from Assets/Samples/XR Hands/1.3.0/HandVisualizer/Prefabs/Right Hand Tracking.prefab.meta rename to Assets/Samples/XR Hands/1.5.0/HandVisualizer/Prefabs/Right Hand Tracking.prefab.meta diff --git a/Assets/Samples/XR Hands/1.3.0/HandVisualizer/Prefabs/VelocityPrefab.prefab b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Prefabs/VelocityPrefab.prefab similarity index 100% rename from Assets/Samples/XR Hands/1.3.0/HandVisualizer/Prefabs/VelocityPrefab.prefab rename to Assets/Samples/XR Hands/1.5.0/HandVisualizer/Prefabs/VelocityPrefab.prefab diff --git a/Assets/Samples/XR Hands/1.3.0/HandVisualizer/Prefabs/VelocityPrefab.prefab.meta b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Prefabs/VelocityPrefab.prefab.meta similarity index 100% rename from Assets/Samples/XR Hands/1.3.0/HandVisualizer/Prefabs/VelocityPrefab.prefab.meta rename to Assets/Samples/XR Hands/1.5.0/HandVisualizer/Prefabs/VelocityPrefab.prefab.meta diff --git a/Assets/Samples/XR Hands/1.3.0/HandVisualizer/README.md b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/README.md similarity index 65% rename from Assets/Samples/XR Hands/1.3.0/HandVisualizer/README.md rename to Assets/Samples/XR Hands/1.5.0/HandVisualizer/README.md index 0ed5f6cf..5704d731 100644 --- a/Assets/Samples/XR Hands/1.3.0/HandVisualizer/README.md +++ b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/README.md @@ -1,3 +1,3 @@ # Hand Visualizer Sample -Demonstrates driving meshes and free-floating debug-draw objects on an XR Origin by using `XRHandSubsystem`. +Demonstrates driving meshes and free-floating debug-draw objects on an XR Origin by using `XRHandSubsystem`. diff --git a/Assets/Samples/XR Hands/1.3.0/HandVisualizer/README.md.meta b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/README.md.meta similarity index 100% rename from Assets/Samples/XR Hands/1.3.0/HandVisualizer/README.md.meta rename to Assets/Samples/XR Hands/1.5.0/HandVisualizer/README.md.meta diff --git a/Assets/Samples/XR Hands/1.3.0/HandVisualizer/Scripts.meta b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Scripts.meta similarity index 100% rename from Assets/Samples/XR Hands/1.3.0/HandVisualizer/Scripts.meta rename to Assets/Samples/XR Hands/1.5.0/HandVisualizer/Scripts.meta diff --git a/Assets/Samples/XR Hands/1.3.0/HandVisualizer/Scripts/HandProcessor.cs b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Scripts/HandProcessor.cs similarity index 99% rename from Assets/Samples/XR Hands/1.3.0/HandVisualizer/Scripts/HandProcessor.cs rename to Assets/Samples/XR Hands/1.5.0/HandVisualizer/Scripts/HandProcessor.cs index d22da74b..3c575bc2 100644 --- a/Assets/Samples/XR Hands/1.3.0/HandVisualizer/Scripts/HandProcessor.cs +++ b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Scripts/HandProcessor.cs @@ -99,7 +99,7 @@ namespace UnityEngine.XR.Hands.Samples.VisualizerSample currentLeftHandPosition = Vector3.Lerp(m_LastLeftHandPosition, currentLeftHandPosition, tweenAmt); m_LeftHandPose.position = currentLeftHandPosition; m_LeftHandPose.rotation = leftPose.rotation; - + leftHand.SetRootPose(m_LeftHandPose); subsystem.SetCorrespondingHand(leftHand); } @@ -116,7 +116,7 @@ namespace UnityEngine.XR.Hands.Samples.VisualizerSample currentRightHandPosition = Vector3.Lerp(m_LastRightHandPosition, currentRightHandPosition, tweenAmt); m_RightHandPose.position = currentRightHandPosition; m_RightHandPose.rotation = rightPose.rotation; - + rightHand.SetRootPose(m_RightHandPose); subsystem.SetCorrespondingHand(rightHand); } @@ -129,7 +129,7 @@ namespace UnityEngine.XR.Hands.Samples.VisualizerSample { var leftHand = subsystem.leftHand; var leftHandPose = leftHand.rootPose; - + var rightHand = subsystem.rightHand; var rightHandPose = rightHand.rootPose; diff --git a/Assets/Samples/XR Hands/1.3.0/HandVisualizer/Scripts/HandProcessor.cs.meta b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Scripts/HandProcessor.cs.meta similarity index 100% rename from Assets/Samples/XR Hands/1.3.0/HandVisualizer/Scripts/HandProcessor.cs.meta rename to Assets/Samples/XR Hands/1.5.0/HandVisualizer/Scripts/HandProcessor.cs.meta diff --git a/Assets/Samples/XR Hands/1.3.0/HandVisualizer/Scripts/HandVisualizer.cs b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Scripts/HandVisualizer.cs similarity index 98% rename from Assets/Samples/XR Hands/1.3.0/HandVisualizer/Scripts/HandVisualizer.cs rename to Assets/Samples/XR Hands/1.5.0/HandVisualizer/Scripts/HandVisualizer.cs index 5ecd3aac..37a556db 100644 --- a/Assets/Samples/XR Hands/1.3.0/HandVisualizer/Scripts/HandVisualizer.cs +++ b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Scripts/HandVisualizer.cs @@ -328,6 +328,7 @@ namespace UnityEngine.XR.Hands.Samples.VisualizerSample GameObject[] m_DrawJoints = new GameObject[XRHandJointID.EndMarker.ToIndex()]; GameObject[] m_VelocityParents = new GameObject[XRHandJointID.EndMarker.ToIndex()]; LineRenderer[] m_Lines = new LineRenderer[XRHandJointID.EndMarker.ToIndex()]; + JointVisualizer[] m_JointVisualizers = new JointVisualizer[XRHandJointID.EndMarker.ToIndex()]; static Vector3[] s_LinePointsReuse = new Vector3[2]; XRHandMeshController m_MeshController; @@ -358,6 +359,9 @@ namespace UnityEngine.XR.Hands.Samples.VisualizerSample m_Lines[jointIndex].startWidth = m_Lines[jointIndex].endWidth = k_LineWidth; s_LinePointsReuse[0] = s_LinePointsReuse[1] = jointDrivenTransform.position; m_Lines[jointIndex].SetPositions(s_LinePointsReuse); + + if (m_DrawJoints[jointIndex].TryGetComponent(out var jointVisualizer)) + m_JointVisualizers[jointIndex] = jointVisualizer; } var isSceneObject = meshPrefab.scene.IsValid(); @@ -519,6 +523,8 @@ namespace UnityEngine.XR.Hands.Samples.VisualizerSample return; var jointIndex = joint.id.ToIndex(); + m_JointVisualizers[jointIndex].NotifyTrackingState(joint.trackingState); + if (!joint.TryGetPose(out var pose)) return; diff --git a/Assets/Samples/XR Hands/1.3.0/HandVisualizer/Scripts/HandVisualizer.cs.meta b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Scripts/HandVisualizer.cs.meta similarity index 100% rename from Assets/Samples/XR Hands/1.3.0/HandVisualizer/Scripts/HandVisualizer.cs.meta rename to Assets/Samples/XR Hands/1.5.0/HandVisualizer/Scripts/HandVisualizer.cs.meta diff --git a/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Scripts/JointVisualizer.cs b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Scripts/JointVisualizer.cs new file mode 100644 index 00000000..d8b67e94 --- /dev/null +++ b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Scripts/JointVisualizer.cs @@ -0,0 +1,38 @@ +using UnityEngine; +using UnityEngine.XR.Hands.Processing; + +namespace UnityEngine.XR.Hands.Samples.VisualizerSample +{ + public class JointVisualizer : MonoBehaviour + { + [SerializeField] + GameObject m_JointVisual; + + [SerializeField] + Material m_HighFidelityJointMaterial; + + [SerializeField] + Material m_LowFidelityJointMaterial; + + bool m_HighFidelityJoint; + + Renderer m_JointRenderer; + + public void NotifyTrackingState(XRHandJointTrackingState jointTrackingState) + { + bool highFidelityJoint = (jointTrackingState & XRHandJointTrackingState.HighFidelityPose) == XRHandJointTrackingState.HighFidelityPose; + if (m_HighFidelityJoint == highFidelityJoint) + return; + + m_JointRenderer.material = highFidelityJoint ? m_HighFidelityJointMaterial : m_LowFidelityJointMaterial; + + m_HighFidelityJoint = highFidelityJoint; + } + + void Start() + { + if (m_JointVisual.TryGetComponent(out var jointRenderer)) + m_JointRenderer = jointRenderer; + } + } +} diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/GrabTransformerRotationAxisLock.cs.meta b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Scripts/JointVisualizer.cs.meta similarity index 83% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/GrabTransformerRotationAxisLock.cs.meta rename to Assets/Samples/XR Hands/1.5.0/HandVisualizer/Scripts/JointVisualizer.cs.meta index bbb7e603..9f1035de 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/GrabTransformerRotationAxisLock.cs.meta +++ b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Scripts/JointVisualizer.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 24386a87b5e733943809081267792754 +guid: 6e1c395ff62a3a14dbeb293298bb46bf MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/Samples/XR Hands/1.3.0/HandVisualizer/Unity.XR.Hands.Samples.VisualizerSample.asmdef b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Unity.XR.Hands.Samples.VisualizerSample.asmdef similarity index 100% rename from Assets/Samples/XR Hands/1.3.0/HandVisualizer/Unity.XR.Hands.Samples.VisualizerSample.asmdef rename to Assets/Samples/XR Hands/1.5.0/HandVisualizer/Unity.XR.Hands.Samples.VisualizerSample.asmdef diff --git a/Assets/Samples/XR Hands/1.3.0/HandVisualizer/Unity.XR.Hands.Samples.VisualizerSample.asmdef.meta b/Assets/Samples/XR Hands/1.5.0/HandVisualizer/Unity.XR.Hands.Samples.VisualizerSample.asmdef.meta similarity index 100% rename from Assets/Samples/XR Hands/1.3.0/HandVisualizer/Unity.XR.Hands.Samples.VisualizerSample.asmdef.meta rename to Assets/Samples/XR Hands/1.5.0/HandVisualizer/Unity.XR.Hands.Samples.VisualizerSample.asmdef.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/.sample.json b/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/.sample.json deleted file mode 100644 index a713927d..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/.sample.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "displayName": "Hands Interaction Demo", - "description": "Sample scene and other assets for hand-tracking integration with the XR Interaction Toolkit." -} diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/AffordanceThemes/FingerColorAffordanceTheme.asset b/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/AffordanceThemes/FingerColorAffordanceTheme.asset deleted file mode 100644 index e425fecd..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/AffordanceThemes/FingerColorAffordanceTheme.asset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:01154342071281e2feb5abb8c23e049fd7af7d6ed6a4098ac40802509d1602e3 -size 2630 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/AffordanceThemes/HandEdgeColorAffordanceTheme.asset b/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/AffordanceThemes/HandEdgeColorAffordanceTheme.asset deleted file mode 100644 index bfcf99c3..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/AffordanceThemes/HandEdgeColorAffordanceTheme.asset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:10fb8722f33e396229a074dfa33ace29c45b93116674e99f2ab7279e5aa47ed4 -size 2604 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/AffordanceThemes/InteractionColorAffordanceTheme.asset b/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/AffordanceThemes/InteractionColorAffordanceTheme.asset deleted file mode 100644 index aec99823..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/AffordanceThemes/InteractionColorAffordanceTheme.asset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e6eb72c270064614205d7ac297090f72e72b41f3427f81150490e6647f008b9a -size 2632 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/AffordanceThemes/AudioAffordanceTheme.asset b/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/AffordanceThemes/AudioAffordanceTheme.asset deleted file mode 100644 index 7fc642bb..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/AffordanceThemes/AudioAffordanceTheme.asset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:19af6caba4f748599cf7dc222798d91de0e03a891fa037b8cb939a39a4758200 -size 1198 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/AffordanceThemes/CapsuleScaleTheme.asset b/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/AffordanceThemes/CapsuleScaleTheme.asset deleted file mode 100644 index 44bb3748..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/AffordanceThemes/CapsuleScaleTheme.asset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8ebdb5c2844d7f3429970dc572d7f798d1b71e0cbda1a136662b166780cefcdd -size 2321 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/AffordanceThemes/Chess/InteractionBlendShapeAffordanceTheme.asset b/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/AffordanceThemes/Chess/InteractionBlendShapeAffordanceTheme.asset deleted file mode 100644 index 47437630..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/AffordanceThemes/Chess/InteractionBlendShapeAffordanceTheme.asset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a83a40f37973133de8af989ddc6aef6393d0af05ae1ccc1bb78b0cbc51572a07 -size 1771 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/AffordanceThemes/Chess/WhiteChessPieceColorTheme.asset b/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/AffordanceThemes/Chess/WhiteChessPieceColorTheme.asset deleted file mode 100644 index 027f5b47..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/AffordanceThemes/Chess/WhiteChessPieceColorTheme.asset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:14cc149a371d9b761490fcbadec4f799bc81fc6bfcd2ba5446c65eec0bc50ad7 -size 2291 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/AffordanceThemes/InteractionLargeScaleAffordanceTheme.asset b/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/AffordanceThemes/InteractionLargeScaleAffordanceTheme.asset deleted file mode 100644 index 1ee6dea5..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/AffordanceThemes/InteractionLargeScaleAffordanceTheme.asset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f123ee64d342ca246ccee60a1a7c75a22dc45bb19450ba6076748acf35e87fd9 -size 1777 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/AffordanceThemes/InteractionScaleAffordanceTheme.asset b/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/AffordanceThemes/InteractionScaleAffordanceTheme.asset deleted file mode 100644 index ce5e72e1..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/AffordanceThemes/InteractionScaleAffordanceTheme.asset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f57082ff897799724975396e8a22c648c9ce9883af71ac2dd8e422b4202dc6c0 -size 1771 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials/PrimitivesBlue.mat b/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials/PrimitivesBlue.mat deleted file mode 100644 index 83635f71..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials/PrimitivesBlue.mat +++ /dev/null @@ -1,46 +0,0 @@ -%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: PrimitivesBlue - m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} - m_Parent: {fileID: 2100000, guid: a05114129e33f6a4ebf59935affa0661, type: 2} - m_ModifiedSerializedProperties: 0 - m_ValidKeywords: [] - m_InvalidKeywords: - - _GLOSSYREFLECTIONS_OFF - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: -1 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_LockedProperties: - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: [] - m_Ints: [] - m_Floats: [] - m_Colors: - - _BaseColor: {r: 0.14901961, g: 0.36862746, b: 0.78039217, a: 1} - - _Color: {r: 0.14901957, g: 0.36862743, b: 0.78039217, a: 1} - m_BuildTextureStacks: [] ---- !u!114 &85588075474967055 -MonoBehaviour: - m_ObjectHideFlags: 11 - 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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} - m_Name: - m_EditorClassIdentifier: - version: 7 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials/PrimitivesCoral.mat b/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials/PrimitivesCoral.mat deleted file mode 100644 index 37f1ad31..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials/PrimitivesCoral.mat +++ /dev/null @@ -1,46 +0,0 @@ -%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: PrimitivesCoral - m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} - m_Parent: {fileID: 2100000, guid: e2fab14359f78ac44b6fb07523f664d7, type: 2} - m_ModifiedSerializedProperties: 0 - m_ValidKeywords: [] - m_InvalidKeywords: - - _GLOSSYREFLECTIONS_OFF - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: -1 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_LockedProperties: - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: [] - m_Ints: [] - m_Floats: [] - m_Colors: - - _BaseColor: {r: 1, g: 0.69411767, b: 0.6666667, a: 1} - - _Color: {r: 1, g: 0.69411767, b: 0.6666667, a: 1} - m_BuildTextureStacks: [] ---- !u!114 &5864103573171651692 -MonoBehaviour: - m_ObjectHideFlags: 11 - 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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} - m_Name: - m_EditorClassIdentifier: - version: 7 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials/Table Surface.mat b/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials/Table Surface.mat deleted file mode 100644 index 1edab8fe..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials/Table Surface.mat +++ /dev/null @@ -1,47 +0,0 @@ -%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: Table Surface - m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} - m_Parent: {fileID: 2100000, guid: 29c87041b300ced459bdbe474db25114, type: 2} - m_ModifiedSerializedProperties: 16 - m_ValidKeywords: [] - m_InvalidKeywords: - - _GLOSSYREFLECTIONS_OFF - - _MAPPING_LATITUDE_LONGITUDE_LAYOUT - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: -1 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_LockedProperties: - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: [] - m_Ints: [] - m_Floats: [] - m_Colors: - - _BaseColor: {r: 0.94509804, g: 1, b: 0.5803922, a: 1} - - _Color: {r: 0.945098, g: 1, b: 0.5803921, a: 1} - m_BuildTextureStacks: [] ---- !u!114 &7412609096850590555 -MonoBehaviour: - m_ObjectHideFlags: 11 - 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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} - m_Name: - m_EditorClassIdentifier: - version: 7 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Chess.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Chess.meta deleted file mode 100644 index 38a973f1..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Chess.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: cc6da3b6c17dad04f924dbc96b4c8114 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/XR Interaction Hands Setup.prefab b/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/XR Interaction Hands Setup.prefab deleted file mode 100644 index e31c902b..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/XR Interaction Hands Setup.prefab +++ /dev/null @@ -1,282 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &865075385244835223 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5773256366622995465} - m_Layer: 0 - m_Name: XR Interaction Hands Setup - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &5773256366622995465 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 865075385244835223} - 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: 4763085287912399982} - - {fileID: 4763085286836561809} - - {fileID: 4763085287379932445} - - {fileID: 8733093507751517968} - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &4763085286836561815 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4763085286836561809} - - component: {fileID: 4763085286836561808} - m_Layer: 0 - m_Name: XR Interaction Manager - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4763085286836561809 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4763085286836561815} - 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: 5773256366622995465} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &4763085286836561808 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4763085286836561815} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 83e4e6cca11330d4088d729ab4fc9d9f, type: 3} - m_Name: - m_EditorClassIdentifier: - m_StartingHoverFilters: [] - m_StartingSelectFilters: [] ---- !u!1 &4763085287379932418 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4763085287379932445} - - component: {fileID: 4763085287379932444} - - component: {fileID: 4763085287379932446} - m_Layer: 0 - m_Name: EventSystem - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4763085287379932445 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4763085287379932418} - 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: 5773256366622995465} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &4763085287379932444 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4763085287379932418} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} - m_Name: - m_EditorClassIdentifier: - m_FirstSelected: {fileID: 0} - m_sendNavigationEvents: 1 - m_DragThreshold: 10 ---- !u!114 &4763085287379932446 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4763085287379932418} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: ab68ce6587aab0146b8dabefbd806791, type: 3} - m_Name: - m_EditorClassIdentifier: - m_SendPointerHoverToParent: 1 - m_ClickSpeed: 0.3 - m_MoveDeadzone: 0.6 - m_RepeatDelay: 0.5 - m_RepeatRate: 0.1 - m_TrackedDeviceDragThresholdMultiplier: 2 - m_TrackedScrollDeltaMultiplier: 5 - m_ActiveInputMode: 1 - m_MaxTrackedDeviceRaycastDistance: 1000 - m_EnableXRInput: 1 - m_EnableMouseInput: 1 - m_EnableTouchInput: 1 - m_PointAction: {fileID: 2869410428622933342, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_LeftClickAction: {fileID: 1855836014308820768, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_MiddleClickAction: {fileID: -6289560987278519447, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_RightClickAction: {fileID: -2562941478296515153, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_ScrollWheelAction: {fileID: 5825226938762934180, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_NavigateAction: {fileID: -7967456002180160679, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_SubmitAction: {fileID: 3994978066732806534, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_CancelAction: {fileID: 2387711382375263438, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_EnableBuiltinActionsAsFallback: 1 - m_EnableGamepadInput: 1 - m_EnableJoystickInput: 1 - m_HorizontalAxis: Horizontal - m_VerticalAxis: Vertical - m_SubmitButton: Submit - m_CancelButton: Cancel ---- !u!1 &4763085287912399980 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4763085287912399982} - - component: {fileID: 4763085287912399981} - m_Layer: 0 - m_Name: Input Action Manager - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4763085287912399982 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4763085287912399980} - 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: 5773256366622995465} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &4763085287912399981 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4763085287912399980} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 017c5e3933235514c9520e1dace2a4b2, type: 3} - m_Name: - m_EditorClassIdentifier: - m_ActionAssets: - - {fileID: -944628639613478452, guid: c348712bda248c246b8c49b3db54643f, type: 3} ---- !u!1001 &7492724527406118749 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 5773256366622995465} - m_Modifications: - - target: {fileID: 2218496723442559053, guid: d6878e1999eb4b44a9f5a263af86c185, type: 3} - propertyPath: m_RootOrder - value: 3 - objectReference: {fileID: 0} - - target: {fileID: 2218496723442559053, guid: d6878e1999eb4b44a9f5a263af86c185, type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2218496723442559053, guid: d6878e1999eb4b44a9f5a263af86c185, type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2218496723442559053, guid: d6878e1999eb4b44a9f5a263af86c185, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2218496723442559053, guid: d6878e1999eb4b44a9f5a263af86c185, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 2218496723442559053, guid: d6878e1999eb4b44a9f5a263af86c185, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2218496723442559053, guid: d6878e1999eb4b44a9f5a263af86c185, type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2218496723442559053, guid: d6878e1999eb4b44a9f5a263af86c185, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2218496723442559053, guid: d6878e1999eb4b44a9f5a263af86c185, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2218496723442559053, guid: d6878e1999eb4b44a9f5a263af86c185, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2218496723442559053, guid: d6878e1999eb4b44a9f5a263af86c185, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2218496723442559054, guid: d6878e1999eb4b44a9f5a263af86c185, type: 3} - propertyPath: m_Name - value: XR Origin (XR Rig) - objectReference: {fileID: 0} - - target: {fileID: 3113582726751902587, guid: d6878e1999eb4b44a9f5a263af86c185, type: 3} - propertyPath: m_Origin - value: - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: d6878e1999eb4b44a9f5a263af86c185, type: 3} ---- !u!4 &8733093507751517968 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 2218496723442559053, guid: d6878e1999eb4b44a9f5a263af86c185, type: 3} - m_PrefabInstance: {fileID: 7492724527406118749} - m_PrefabAsset: {fileID: 0} diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Scripts/HideObjectWhenRayInteractorBlocked.cs b/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Scripts/HideObjectWhenRayInteractorBlocked.cs deleted file mode 100644 index c0884083..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Scripts/HideObjectWhenRayInteractorBlocked.cs +++ /dev/null @@ -1,33 +0,0 @@ -namespace UnityEngine.XR.Interaction.Toolkit.Samples.Hands -{ - /// - /// Hides the specified GameObject when the associated XRRayInteractor is blocked by an interaction within its group. - /// - public class HideObjectWhenRayInteractorBlocked : MonoBehaviour - { - [SerializeField] - [Tooltip("The XRRayInteractor that this component monitors for blockages.")] - XRRayInteractor m_Interactor; - - [SerializeField] - [Tooltip("The GameObject to hide when the XRRayInteractor is blocked.")] - GameObject m_ObjectToHide; - - /// - /// See . - /// - void OnEnable() - { - if (m_Interactor == null || m_ObjectToHide == null) - enabled = false; - } - - /// - /// See . - /// - void Update() - { - m_ObjectToHide.SetActive(m_Interactor.isActiveAndEnabled && !m_Interactor.IsBlockedByInteractionWithinGroup()); - } - } -} \ No newline at end of file diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Scripts/PinchPointFollow.cs b/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Scripts/PinchPointFollow.cs deleted file mode 100644 index 6cf7b378..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Scripts/PinchPointFollow.cs +++ /dev/null @@ -1,112 +0,0 @@ -#if XR_HANDS_1_2_OR_NEWER -using Unity.XR.CoreUtils; -using Unity.XR.CoreUtils.Bindings; -using UnityEngine.XR.Hands; -using UnityEngine.XR.Interaction.Toolkit.Utilities.Tweenables.Primitives; -#endif - -namespace UnityEngine.XR.Interaction.Toolkit.Samples.Hands -{ - /// - /// A class that follows the pinch point between the thumb and index finger using XR Hand Tracking. - /// It updates its position to the midpoint between the thumb and index tip while optionally adjusting its rotation - /// to look at a specified target. The rotation towards the target can also be smoothly interpolated over time. - /// - public class PinchPointFollow : MonoBehaviour - { - [SerializeField] - [Tooltip("The XR Hand Tracking Events component that will be used to subscribe to hand tracking events.")] -#if XR_HANDS_1_2_OR_NEWER - XRHandTrackingEvents m_XRHandTrackingEvents; -#else - Object m_XRHandTrackingEvents; -#endif - - [SerializeField] - [Tooltip("The transform to match the rotation of.")] - Transform m_TargetRotation; - - [SerializeField] - [Tooltip("The transform will use the XRRayInteractor endpoint position to calculate the transform rotation.")] - XRRayInteractor m_RayInteractor; - - [SerializeField] - [Tooltip("How fast to match rotation (0 means no rotation smoothing.)")] - [Range(0f, 32f)] - float m_RotationSmoothingSpeed = 12f; - -#if XR_HANDS_1_2_OR_NEWER - bool m_HasRayInteractor; - bool m_HasTargetRotationTransform; - - OneEuroFilterVector3 m_OneEuroFilterVector3; - readonly QuaternionTweenableVariable m_QuaternionTweenableVariable = new QuaternionTweenableVariable(); - readonly BindingsGroup m_BindingsGroup = new BindingsGroup(); -#endif - - /// - /// See . - /// - void OnEnable() - { -#if XR_HANDS_1_2_OR_NEWER - if (m_XRHandTrackingEvents != null) - m_XRHandTrackingEvents.jointsUpdated.AddListener(OnJointsUpdated); - - m_OneEuroFilterVector3 = new OneEuroFilterVector3(transform.localPosition); - m_HasRayInteractor = m_RayInteractor != null; - m_HasTargetRotationTransform = m_TargetRotation != null; - m_BindingsGroup.AddBinding(m_QuaternionTweenableVariable.Subscribe(newValue => transform.rotation = newValue)); -#else - Debug.LogWarning("PinchPointFollow requires XR Hands (com.unity.xr.hands) 1.2.0 or newer. Disabling component.", this); - enabled = false; -#endif - } - - /// - /// See . - /// - void OnDisable() - { -#if XR_HANDS_1_2_OR_NEWER - m_BindingsGroup.Clear(); - if (m_XRHandTrackingEvents != null) - m_XRHandTrackingEvents.jointsUpdated.RemoveListener(OnJointsUpdated); -#endif - } - -#if XR_HANDS_1_2_OR_NEWER - void OnJointsUpdated(XRHandJointsUpdatedEventArgs args) - { - var thumbTip = args.hand.GetJoint(XRHandJointID.ThumbTip); - if (!thumbTip.TryGetPose(out var thumbTipPose)) - return; - - var indexTip = args.hand.GetJoint(XRHandJointID.IndexTip); - if (!indexTip.TryGetPose(out var indexTipPose)) - return; - - var targetPos = Vector3.Lerp(thumbTipPose.position, indexTipPose.position, 0.5f); - var filteredTargetPos = m_OneEuroFilterVector3.Filter(targetPos, Time.deltaTime); - - // Hand pose data is in local space relative to the xr origin. - transform.localPosition = filteredTargetPos; - - if (m_HasTargetRotationTransform && m_HasRayInteractor) - { - // Given that the ray endpoint is in worldspace, we need to use the worldspace transform of this point to determine the target rotation. - // This allows us to keep orientation consistent when moving the xr origin for locomotion. - var targetDir = (m_RayInteractor.rayEndPoint - transform.position).normalized; - var targetRot = Quaternion.LookRotation(targetDir); - - // If there aren't any major swings in rotation, follow the target rotation. - if (Vector3.Dot(m_TargetRotation.forward, targetDir) > 0.5f) - m_QuaternionTweenableVariable.target = targetRot; - } - - var tweenTarget = m_RotationSmoothingSpeed > 0f ? m_RotationSmoothingSpeed * Time.deltaTime : 1f; - m_QuaternionTweenableVariable.HandleTween(tweenTarget); - } -#endif - } -} diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/.sample.json b/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/.sample.json deleted file mode 100644 index 4f89a74b..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/.sample.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "displayName": "Starter Assets", - "description": "Assets to streamline setup of behaviors, including a default set of input actions and presets for use with XR Interaction Toolkit behaviors that use the Input System." -} diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoScene.unity b/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoScene.unity deleted file mode 100644 index 76e4e473..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoScene.unity +++ /dev/null @@ -1,10838 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 9 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 0 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.18028378, g: 0.22571412, b: 0.30692285, a: 1} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 12 - m_GIWorkflowMode: 1 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 1 - m_EnableRealtimeLightmaps: 0 - m_LightmapEditorSettings: - serializedVersion: 12 - m_Resolution: 2 - m_BakeResolution: 40 - m_AtlasSize: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_ExtractAmbientOcclusion: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 - m_ReflectionCompression: 2 - m_MixedBakeMode: 2 - m_BakeBackend: 1 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 512 - m_PVRBounces: 2 - m_PVREnvironmentSampleCount: 256 - m_PVREnvironmentReferencePointCount: 2048 - m_PVRFilteringMode: 1 - m_PVRDenoiserTypeDirect: 1 - m_PVRDenoiserTypeIndirect: 1 - m_PVRDenoiserTypeAO: 1 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVREnvironmentMIS: 1 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ExportTrainingData: 0 - m_TrainingDataDestination: TrainingData - m_LightProbeSampleCountMultiplier: 4 - m_LightingDataAsset: {fileID: 0} - m_LightingSettings: {fileID: 0} ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - maxJobWorkers: 0 - preserveTilesOutsideBounds: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1 &139655395 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 139655396} - - component: {fileID: 139655398} - - component: {fileID: 139655397} - m_Layer: 5 - m_Name: Panel - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &139655396 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 139655395} - 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: 1714474116} - m_Father: {fileID: 1209329928} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0} - m_AnchorMax: {x: 0.5, y: 0} - m_AnchoredPosition: {x: 0, y: 25} - m_SizeDelta: {x: 150, y: 50} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &139655397 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 139655395} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0, g: 0, b: 0, a: 0.7490196} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!222 &139655398 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 139655395} - m_CullTransparentMesh: 1 ---- !u!1 &144254102 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 144254103} - - component: {fileID: 144254105} - - component: {fileID: 144254104} - m_Layer: 5 - m_Name: Header Panel - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &144254103 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 144254102} - 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: 1247873231} - m_Father: {fileID: 788111585} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: -48.5} - m_SizeDelta: {x: 0, y: 98.63} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &144254104 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 144254102} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0, g: 0, b: 0, a: 0.7490196} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!222 &144254105 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 144254102} - m_CullTransparentMesh: 1 ---- !u!1 &157733528 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 157733529} - - component: {fileID: 157733531} - - component: {fileID: 157733530} - m_Layer: 5 - m_Name: Panel - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &157733529 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 157733528} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: -0.000029802322} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 421848384} - m_Father: {fileID: 788111585} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0} - m_AnchorMax: {x: 0.5, y: 0} - m_AnchoredPosition: {x: -275, y: 50} - m_SizeDelta: {x: 250, y: 100} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &157733530 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 157733528} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0, g: 0, b: 0, a: 0.7490196} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!222 &157733531 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 157733528} - m_CullTransparentMesh: 1 ---- !u!1001 &208985960 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 1565887663814566040, guid: 3e07eccb5e6f459d886de95044adb1d9, type: 3} - propertyPath: m_Name - value: Teleportation Environment - objectReference: {fileID: 0} - - target: {fileID: 1565887663814566041, guid: 3e07eccb5e6f459d886de95044adb1d9, type: 3} - propertyPath: m_RootOrder - value: 3 - objectReference: {fileID: 0} - - target: {fileID: 1565887663814566041, guid: 3e07eccb5e6f459d886de95044adb1d9, type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1565887663814566041, guid: 3e07eccb5e6f459d886de95044adb1d9, type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1565887663814566041, guid: 3e07eccb5e6f459d886de95044adb1d9, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1565887663814566041, guid: 3e07eccb5e6f459d886de95044adb1d9, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 1565887663814566041, guid: 3e07eccb5e6f459d886de95044adb1d9, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1565887663814566041, guid: 3e07eccb5e6f459d886de95044adb1d9, type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1565887663814566041, guid: 3e07eccb5e6f459d886de95044adb1d9, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1565887663814566041, guid: 3e07eccb5e6f459d886de95044adb1d9, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1565887663814566041, guid: 3e07eccb5e6f459d886de95044adb1d9, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1565887663814566041, guid: 3e07eccb5e6f459d886de95044adb1d9, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 3e07eccb5e6f459d886de95044adb1d9, type: 3} ---- !u!1 &235184210 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 235184214} - - component: {fileID: 235184213} - - component: {fileID: 235184212} - - component: {fileID: 235184211} - m_Layer: 0 - m_Name: Grab Interactable Table - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!65 &235184211 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 235184210} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!23 &235184212 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 235184210} - 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: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 1 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!33 &235184213 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 235184210} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &235184214 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 235184210} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 4, y: 0.625, z: -2.5} - m_LocalScale: {x: 0.4, y: 1, z: 1.85} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 439588100} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &336426667 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 336426668} - - component: {fileID: 336426670} - - component: {fileID: 336426669} - m_Layer: 5 - m_Name: Panel - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &336426668 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 336426667} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: -0.000029802322} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 196977305468683333} - m_Father: {fileID: 604367606304239380} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0} - m_AnchorMax: {x: 0.5, y: 0} - m_AnchoredPosition: {x: -250.00003, y: 35} - m_SizeDelta: {x: 200, y: 75} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &336426669 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 336426667} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0, g: 0, b: 0, a: 0.7490196} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!222 &336426670 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 336426667} - m_CullTransparentMesh: 1 ---- !u!1 &421848383 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 421848384} - - component: {fileID: 421848387} - - component: {fileID: 421848386} - - component: {fileID: 421848385} - m_Layer: 5 - m_Name: Gaze Hover - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &421848384 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 421848383} - 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: 157733529} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0.000091552734, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &421848385 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 421848383} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 18 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 1 - m_MaxSize: 50 - m_Alignment: 4 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: Gaze Hover ---- !u!114 &421848386 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 421848383} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} - m_Name: - m_EditorClassIdentifier: - m_HorizontalFit: 0 - m_VerticalFit: 2 ---- !u!222 &421848387 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 421848383} - m_CullTransparentMesh: 0 ---- !u!1 &439588099 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 439588100} - m_Layer: 0 - m_Name: Demo Environment - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &439588100 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 439588099} - 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: 1815318737} - - {fileID: 604367606304239380} - - {fileID: 235184214} - - {fileID: 3807310296116640662} - - {fileID: 4581292472285887094} - - {fileID: 788111585} - - {fileID: 1579013953} - - {fileID: 1917198434} - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &547229427 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 547229428} - m_Layer: 0 - m_Name: Gaze Interactables - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &547229428 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 547229427} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -1.5, y: 0.663, z: -4.5} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 4351758153949589637} - - {fileID: 4943412724412835364} - - {fileID: 4943412722798158840} - - {fileID: 1209329928} - m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &564796391 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 564796392} - - component: {fileID: 564796394} - - component: {fileID: 564796393} - m_Layer: 5 - m_Name: Panel - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &564796392 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 564796391} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0.000029802322} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 1021619524} - m_Father: {fileID: 604367606304239380} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0} - m_AnchorMax: {x: 0.5, y: 0} - m_AnchoredPosition: {x: 250.00003, y: 35} - m_SizeDelta: {x: 200, y: 75} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &564796393 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 564796391} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0, g: 0, b: 0, a: 0.7490196} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!222 &564796394 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 564796391} - m_CullTransparentMesh: 1 ---- !u!1 &650025388 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 650025389} - - component: {fileID: 650025394} - - component: {fileID: 650025393} - - component: {fileID: 650025392} - - component: {fileID: 650025391} - - component: {fileID: 650025390} - m_Layer: 5 - m_Name: "\uF702UI Canvas" - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &650025389 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 650025388} - m_LocalRotation: {x: 0, y: 1, z: 0, w: 0} - m_LocalPosition: {x: 0, y: 0, z: 0.0638} - m_LocalScale: {x: 0.0021239999, y: 0.0021239999, z: 0.0021239999} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 1936063056} - - {fileID: 810021790} - m_Father: {fileID: 1289056247} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0.0002, y: -0.0508} - m_SizeDelta: {x: 42.1, y: 20.3} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &650025390 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 650025388} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: ba6ff5e7c92519444bc2a7ca46558963, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Text: {fileID: 810021791} ---- !u!114 &650025391 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 650025388} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 7951c64acb0fa62458bf30a60089fe2d, type: 3} - m_Name: - m_EditorClassIdentifier: - m_IgnoreReversedGraphics: 0 - m_CheckFor2DOcclusion: 0 - m_CheckFor3DOcclusion: 0 - m_BlockingMask: - serializedVersion: 2 - m_Bits: 55 - m_RaycastTriggerInteraction: 1 ---- !u!114 &650025392 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 650025388} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} - m_Name: - m_EditorClassIdentifier: - m_IgnoreReversedGraphics: 1 - m_BlockingObjects: 0 - m_BlockingMask: - serializedVersion: 2 - m_Bits: 55 ---- !u!114 &650025393 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 650025388} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UiScaleMode: 0 - m_ReferencePixelsPerUnit: 100 - m_ScaleFactor: 1 - m_ReferenceResolution: {x: 800, y: 600} - m_ScreenMatchMode: 0 - m_MatchWidthOrHeight: 0 - m_PhysicalUnit: 3 - m_FallbackScreenDPI: 96 - m_DefaultSpriteDPI: 96 - m_DynamicPixelsPerUnit: 10 - m_PresetInfoIsWorld: 1 ---- !u!223 &650025394 -Canvas: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 650025388} - m_Enabled: 1 - serializedVersion: 3 - m_RenderMode: 2 - m_Camera: {fileID: 0} - m_PlaneDistance: 100 - m_PixelPerfect: 0 - m_ReceivesEvents: 1 - m_OverrideSorting: 0 - m_OverridePixelPerfect: 0 - m_SortingBucketNormalizedSize: 0 - m_AdditionalShaderChannelsFlag: 25 - m_SortingLayerID: 0 - m_SortingOrder: 0 - m_TargetDisplay: 0 ---- !u!1 &788111584 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 788111585} - - component: {fileID: 788111590} - - component: {fileID: 788111589} - - component: {fileID: 788111588} - - component: {fileID: 788111587} - m_Layer: 5 - m_Name: Gaze Interactable Info - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &788111585 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 788111584} - m_LocalRotation: {x: 0, y: 1, z: 0, w: 0} - m_LocalPosition: {x: 0, y: 0, z: -5} - m_LocalScale: {x: 0.002, y: 0.002, z: 0.002} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 144254103} - - {fileID: 157733529} - - {fileID: 1740969851} - - {fileID: 1807497890} - m_Father: {fileID: 439588100} - m_RootOrder: 5 - m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: -1.5, y: 1.5} - m_SizeDelta: {x: 800, y: 200} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &788111587 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 788111584} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 7951c64acb0fa62458bf30a60089fe2d, type: 3} - m_Name: - m_EditorClassIdentifier: - m_IgnoreReversedGraphics: 0 - m_CheckFor2DOcclusion: 0 - m_CheckFor3DOcclusion: 0 - m_BlockingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RaycastTriggerInteraction: 1 ---- !u!114 &788111588 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 788111584} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} - m_Name: - m_EditorClassIdentifier: - m_IgnoreReversedGraphics: 1 - m_BlockingObjects: 0 - m_BlockingMask: - serializedVersion: 2 - m_Bits: 4294967295 ---- !u!114 &788111589 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 788111584} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UiScaleMode: 0 - m_ReferencePixelsPerUnit: 100 - m_ScaleFactor: 1 - m_ReferenceResolution: {x: 800, y: 600} - m_ScreenMatchMode: 0 - m_MatchWidthOrHeight: 0 - m_PhysicalUnit: 3 - m_FallbackScreenDPI: 96 - m_DefaultSpriteDPI: 96 - m_DynamicPixelsPerUnit: 1 - m_PresetInfoIsWorld: 1 ---- !u!223 &788111590 -Canvas: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 788111584} - m_Enabled: 1 - serializedVersion: 3 - m_RenderMode: 2 - m_Camera: {fileID: 1731298971} - m_PlaneDistance: 100 - m_PixelPerfect: 0 - m_ReceivesEvents: 1 - m_OverrideSorting: 0 - m_OverridePixelPerfect: 0 - m_SortingBucketNormalizedSize: 0 - m_AdditionalShaderChannelsFlag: 25 - m_SortingLayerID: 0 - m_SortingOrder: 0 - m_TargetDisplay: 0 ---- !u!1 &810021789 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 810021790} - - component: {fileID: 810021792} - - component: {fileID: 810021791} - m_Layer: 5 - m_Name: Text - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &810021790 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 810021789} - 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: 650025389} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: -10, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &810021791 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 810021789} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 18 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 0 - m_MaxSize: 300 - m_Alignment: 5 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: 0 ---- !u!222 &810021792 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 810021789} - m_CullTransparentMesh: 1 ---- !u!1 &874919884 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 874919885} - - component: {fileID: 874919887} - - component: {fileID: 874919886} - m_Layer: 5 - m_Name: Panel - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &874919885 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 874919884} - 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: 1522956427} - m_Father: {fileID: 604367606304239380} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0} - m_AnchorMax: {x: 0.5, y: 0} - m_AnchoredPosition: {x: 0, y: 35} - m_SizeDelta: {x: 200, y: 75} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &874919886 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 874919884} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0, g: 0, b: 0, a: 0.7490196} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!222 &874919887 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 874919884} - m_CullTransparentMesh: 1 ---- !u!1001 &876656115 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 732877344778758187, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 732877344778758187, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 732877344778758187, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 732877344778758187, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 732877344778758187, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1465720397298211355, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMax.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1465720397298211355, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1465720398002813458, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMax.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1465720398002813458, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1465720398002813458, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMin.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1465720398059456908, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1465720398059456908, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1465720398059456908, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1465720398059456908, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1477547282043262312, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1477547282043262312, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1477547282043262312, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1477547282043262312, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1956391703820887915, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1956391703820887915, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1956391703820887915, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1956391703820887915, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1962376703435983919, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1962376703435983919, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1962376703435983919, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2923970395470667645, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2923970395470667645, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2923970395470667645, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2923970395470667645, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3322978173798649548, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3322978173798649548, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3322978173798649548, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3322978173798649548, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3322978174125981243, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3322978174125981243, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3322978174125981243, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_SizeDelta.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3322978174125981243, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.x - value: 150 - objectReference: {fileID: 0} - - target: {fileID: 3322978174125981243, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3322978174681443215, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3322978174681443215, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3322978174681443215, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_SizeDelta.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3322978174681443215, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.x - value: 475 - objectReference: {fileID: 0} - - target: {fileID: 3322978174681443215, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3352765378411564996, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3352765378411564996, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3352765378411564996, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3352765378411564996, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3690213291364595752, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3690213291364595752, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3690213291364595752, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3690213291364595752, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4015128326712939850, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_Camera - value: - objectReference: {fileID: 1731298971} - - target: {fileID: 4015128326712939851, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_Pivot.x - value: 0.5 - objectReference: {fileID: 0} - - target: {fileID: 4015128326712939851, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_Pivot.y - value: 0.5 - objectReference: {fileID: 0} - - target: {fileID: 4015128326712939851, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_RootOrder - value: 6 - objectReference: {fileID: 0} - - target: {fileID: 4015128326712939851, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMax.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4015128326712939851, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4015128326712939851, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMin.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4015128326712939851, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4015128326712939851, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_SizeDelta.x - value: 1000 - objectReference: {fileID: 0} - - target: {fileID: 4015128326712939851, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_SizeDelta.y - value: 360 - objectReference: {fileID: 0} - - target: {fileID: 4015128326712939851, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4015128326712939851, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4015128326712939851, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_LocalPosition.z - value: -2.5 - objectReference: {fileID: 0} - - target: {fileID: 4015128326712939851, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_LocalRotation.w - value: 0.7071068 - objectReference: {fileID: 0} - - target: {fileID: 4015128326712939851, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4015128326712939851, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_LocalRotation.y - value: -0.7071068 - objectReference: {fileID: 0} - - target: {fileID: 4015128326712939851, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4015128326712939851, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.x - value: -4 - objectReference: {fileID: 0} - - target: {fileID: 4015128326712939851, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.y - value: 1.5 - objectReference: {fileID: 0} - - target: {fileID: 4015128326712939851, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4015128326712939851, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: -90 - objectReference: {fileID: 0} - - target: {fileID: 4015128326712939851, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4015128326712939855, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_Name - value: UI Sample - objectReference: {fileID: 0} - - target: {fileID: 4220274215976610951, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4220274215976610951, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4220274215976610951, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4220274215976610951, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4220274215976610951, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4422659089949380333, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4422659089949380333, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4422659089949380333, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4422659089949380333, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4422659089949380333, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4422659090696076826, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4422659090696076826, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4422659090696076826, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4422659090696076826, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4422659090696076826, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4422659091188657070, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4422659091188657070, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4422659091188657070, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4422659091188657070, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4588051828473420344, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4588051828473420344, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4588051828473420344, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4588051828473420344, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4950580794031056704, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4950580794031056704, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4950580794031056704, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_SizeDelta.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4950580794031056704, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.x - value: 150 - objectReference: {fileID: 0} - - target: {fileID: 4950580794031056704, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5459145654789298736, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMax.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5459145654789298736, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5459145655105915303, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5459145655105915303, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5459145655105915303, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5459145655105915303, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5459145655158323769, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMax.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5459145655158323769, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5459145655158323769, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMin.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5684358024879033404, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5684358024879033404, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5849765079216124530, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_SizeDelta.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5849765079944474460, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_Size - value: 0.9999997 - objectReference: {fileID: 0} - - target: {fileID: 5849765080478431418, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMax.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5849765080478431418, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5849765080478431418, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5849765080480587862, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5849765080480587862, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5849765080480587862, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5849765080480587862, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5849765080850205986, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMax.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5849765080850205986, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5849765080850205986, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMin.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 6546457552942104298, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 6546457552942104298, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 6546457552942104298, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8180815008627773159, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8180815008627773159, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8180815008627773159, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8180815008627773159, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8180815009374535184, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8180815009374535184, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8180815009374535184, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8180815009374535184, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8180815009888545700, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8180815009888545700, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8180815009888545700, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8180815009888545700, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8575284107106180950, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8575284107106180950, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8575284107106180950, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8575284107106180950, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8607500784391115102, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8607500784391115102, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8607500784391115102, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8607500784391115102, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} ---- !u!1001 &893438434 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 1014857019} - m_Modifications: - - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_RootOrder - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_LocalPosition.x - value: 0.5 - objectReference: {fileID: 0} - - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_LocalPosition.y - value: 0.0768 - objectReference: {fileID: 0} - - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_LocalPosition.z - value: 0.091 - objectReference: {fileID: 0} - - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4922582553321831162, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_Name - value: Push Button - objectReference: {fileID: 0} - - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_SelectExited.m_PersistentCalls.m_Calls.Array.size - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_SelectEntered.m_PersistentCalls.m_Calls.Array.size - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_SelectExited.m_PersistentCalls.m_Calls.Array.data[0].m_Mode - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_SelectEntered.m_PersistentCalls.m_Calls.Array.data[0].m_Mode - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_SelectExited.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 1750799822} - - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_SelectEntered.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 1750799822} - - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_SelectExited.m_PersistentCalls.m_Calls.Array.data[0].m_CallState - value: 2 - objectReference: {fileID: 0} - - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_SelectEntered.m_PersistentCalls.m_Calls.Array.data[0].m_CallState - value: 2 - objectReference: {fileID: 0} - - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_SelectExited.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName - value: Stop - objectReference: {fileID: 0} - - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_SelectEntered.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName - value: Play - objectReference: {fileID: 0} - - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_SelectExited.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName - value: UnityEngine.ParticleSystem, UnityEngine - objectReference: {fileID: 0} - - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_SelectEntered.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName - value: UnityEngine.ParticleSystem, UnityEngine - objectReference: {fileID: 0} - - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_SelectEntered.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_BoolArgument - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_SelectExited.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName - value: UnityEngine.Object, UnityEngine - objectReference: {fileID: 0} - - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_SelectEntered.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName - value: UnityEngine.Object, UnityEngine - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} ---- !u!4 &893438435 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - m_PrefabInstance: {fileID: 893438434} - m_PrefabAsset: {fileID: 0} ---- !u!1 &967567311 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 967567312} - - component: {fileID: 967567315} - - component: {fileID: 967567314} - - component: {fileID: 967567313} - m_Layer: 5 - m_Name: Gaze Select/Auto Deselect - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &967567312 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 967567311} - 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: 1807497890} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: -0.0002746582, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &967567313 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 967567311} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 18 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 1 - m_MaxSize: 40 - m_Alignment: 4 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: 'Gaze Select - - Auto Deselect - - Interactable override times' ---- !u!114 &967567314 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 967567311} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} - m_Name: - m_EditorClassIdentifier: - m_HorizontalFit: 0 - m_VerticalFit: 2 ---- !u!222 &967567315 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 967567311} - m_CullTransparentMesh: 0 ---- !u!1 &1014857018 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1014857019} - m_Layer: 0 - m_Name: Poke Interactions Sample - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1014857019 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1014857018} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 1.5, y: 1.13, z: -4.45} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 893438435} - - {fileID: 1270176778} - - {fileID: 1289056247} - m_Father: {fileID: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1021619523 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1021619524} - - component: {fileID: 1021619527} - - component: {fileID: 1021619526} - - component: {fileID: 1021619525} - m_Layer: 5 - m_Name: Velocity-Tracked Text - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1021619524 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1021619523} - 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: 564796392} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: -0.0002746582, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1021619525 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1021619523} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 18 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 1 - m_MaxSize: 40 - m_Alignment: 4 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: 'Velocity Tracked - - Movement' ---- !u!114 &1021619526 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1021619523} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} - m_Name: - m_EditorClassIdentifier: - m_HorizontalFit: 0 - m_VerticalFit: 2 ---- !u!222 &1021619527 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1021619523} - m_CullTransparentMesh: 0 ---- !u!1 &1202312658 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1202312659} - - component: {fileID: 1202312661} - - component: {fileID: 1202312660} - m_Layer: 5 - m_Name: Header Panel - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1202312659 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1202312658} - 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: 196977306215183538} - m_Father: {fileID: 604367606304239380} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: -48.5} - m_SizeDelta: {x: 0, y: 98.63} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1202312660 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1202312658} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0, g: 0, b: 0, a: 0.7490196} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!222 &1202312661 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1202312658} - m_CullTransparentMesh: 1 ---- !u!1 &1209329927 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1209329928} - - component: {fileID: 1209329933} - - component: {fileID: 1209329932} - - component: {fileID: 1209329931} - - component: {fileID: 1209329930} - m_Layer: 5 - m_Name: Gaze Select/Deselect Interactable Info - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!224 &1209329928 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1209329927} - m_LocalRotation: {x: -0, y: 1, z: -0, w: 0} - m_LocalPosition: {x: 0, y: 0, z: 0.23999977} - m_LocalScale: {x: 0.002, y: 0.002, z: 0.002} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 139655396} - m_Father: {fileID: 547229428} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: -0.5, y: 0.4} - m_SizeDelta: {x: 150, y: 50} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1209329930 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1209329927} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 7951c64acb0fa62458bf30a60089fe2d, type: 3} - m_Name: - m_EditorClassIdentifier: - m_IgnoreReversedGraphics: 0 - m_CheckFor2DOcclusion: 0 - m_CheckFor3DOcclusion: 0 - m_BlockingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RaycastTriggerInteraction: 1 ---- !u!114 &1209329931 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1209329927} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} - m_Name: - m_EditorClassIdentifier: - m_IgnoreReversedGraphics: 1 - m_BlockingObjects: 0 - m_BlockingMask: - serializedVersion: 2 - m_Bits: 4294967295 ---- !u!114 &1209329932 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1209329927} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UiScaleMode: 0 - m_ReferencePixelsPerUnit: 100 - m_ScaleFactor: 1 - m_ReferenceResolution: {x: 800, y: 600} - m_ScreenMatchMode: 0 - m_MatchWidthOrHeight: 0 - m_PhysicalUnit: 3 - m_FallbackScreenDPI: 96 - m_DefaultSpriteDPI: 96 - m_DynamicPixelsPerUnit: 1 - m_PresetInfoIsWorld: 1 ---- !u!223 &1209329933 -Canvas: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1209329927} - m_Enabled: 1 - serializedVersion: 3 - m_RenderMode: 2 - m_Camera: {fileID: 1731298971} - m_PlaneDistance: 100 - m_PixelPerfect: 0 - m_ReceivesEvents: 1 - m_OverrideSorting: 0 - m_OverridePixelPerfect: 0 - m_SortingBucketNormalizedSize: 0 - m_AdditionalShaderChannelsFlag: 25 - m_SortingLayerID: 0 - m_SortingOrder: 0 - m_TargetDisplay: 0 ---- !u!1 &1247873230 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1247873231} - - component: {fileID: 1247873233} - - component: {fileID: 1247873232} - m_Layer: 5 - m_Name: Header Text - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1247873231 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1247873230} - 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: 144254103} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: -0.6850014} - m_SizeDelta: {x: -428, y: -65.13} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1247873232 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1247873230} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 24 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 2 - m_MaxSize: 40 - m_Alignment: 4 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: Gaze Interactable Objects ---- !u!222 &1247873233 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1247873230} - m_CullTransparentMesh: 0 ---- !u!1001 &1270176777 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 1014857019} - m_Modifications: - - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_RootOrder - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_LocalPosition.x - value: 0.028 - objectReference: {fileID: 0} - - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_LocalPosition.y - value: 0.0768 - objectReference: {fileID: 0} - - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_LocalPosition.z - value: 0.091 - objectReference: {fileID: 0} - - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4922582553321831162, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_Name - value: Push Button - objectReference: {fileID: 0} - - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_SelectEntered.m_PersistentCalls.m_Calls.Array.size - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_SelectEntered.m_PersistentCalls.m_Calls.Array.data[0].m_Mode - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_SelectEntered.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 1270176780} - - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_SelectEntered.m_PersistentCalls.m_Calls.Array.data[0].m_CallState - value: 2 - objectReference: {fileID: 0} - - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_SelectEntered.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName - value: Play - objectReference: {fileID: 0} - - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_SelectEntered.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName - value: UnityEngine.AudioSource, UnityEngine - objectReference: {fileID: 0} - - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_SelectEntered.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument - value: - objectReference: {fileID: 0} - - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_SelectEntered.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName - value: UnityEngine.Object, UnityEngine - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} ---- !u!4 &1270176778 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - m_PrefabInstance: {fileID: 1270176777} - m_PrefabAsset: {fileID: 0} ---- !u!1 &1270176779 stripped -GameObject: - m_CorrespondingSourceObject: {fileID: 4922582553321831162, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - m_PrefabInstance: {fileID: 1270176777} - m_PrefabAsset: {fileID: 0} ---- !u!82 &1270176780 -AudioSource: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1270176779} - m_Enabled: 1 - serializedVersion: 4 - OutputAudioMixerGroup: {fileID: 0} - m_audioClip: {fileID: 8300000, guid: 16fba6d30ed741d4a9fdd6e79ee2f3ac, type: 3} - m_PlayOnAwake: 0 - 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!1001 &1289056246 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 1014857019} - m_Modifications: - - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_RootOrder - value: 2 - objectReference: {fileID: 0} - - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_LocalPosition.x - value: -0.5 - objectReference: {fileID: 0} - - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_LocalPosition.y - value: 0.0768 - objectReference: {fileID: 0} - - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_LocalPosition.z - value: 0.091 - objectReference: {fileID: 0} - - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4922582553321831162, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_Name - value: Push Button - objectReference: {fileID: 0} - - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_SelectEntered.m_PersistentCalls.m_Calls.Array.size - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_SelectEntered.m_PersistentCalls.m_Calls.Array.data[0].m_Mode - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_SelectEntered.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 650025390} - - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_SelectEntered.m_PersistentCalls.m_Calls.Array.data[0].m_CallState - value: 2 - objectReference: {fileID: 0} - - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_SelectEntered.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName - value: IncrementText - objectReference: {fileID: 0} - - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_SelectEntered.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName - value: UnityEngine.XR.Interaction.Toolkit.Samples.StarterAssets.IncrementUIText, - Unity.XR.Interaction.Toolkit.Samples.StarterAssets - objectReference: {fileID: 0} - - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - propertyPath: m_SelectEntered.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName - value: UnityEngine.Object, UnityEngine - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} ---- !u!4 &1289056247 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} - m_PrefabInstance: {fileID: 1289056246} - m_PrefabAsset: {fileID: 0} ---- !u!1 &1486677401 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1486677402} - - component: {fileID: 1486677405} - - component: {fileID: 1486677404} - - component: {fileID: 1486677403} - m_Layer: 5 - m_Name: Gaze Assisted - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1486677402 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1486677401} - 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: 1740969851} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1486677403 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1486677401} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 18 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 1 - m_MaxSize: 40 - m_Alignment: 4 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: Gaze Assisted ---- !u!114 &1486677404 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1486677401} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} - m_Name: - m_EditorClassIdentifier: - m_HorizontalFit: 0 - m_VerticalFit: 2 ---- !u!222 &1486677405 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1486677401} - m_CullTransparentMesh: 0 ---- !u!1001 &1519520462 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 1060243933316379515, guid: 6821e1b7f44d8c44b8a2ba02f37309d5, type: 3} - propertyPath: m_Name - value: Interactables Sample - objectReference: {fileID: 0} - - target: {fileID: 2991896912978869755, guid: 6821e1b7f44d8c44b8a2ba02f37309d5, type: 3} - propertyPath: m_RootOrder - value: 5 - objectReference: {fileID: 0} - - target: {fileID: 2991896912978869755, guid: 6821e1b7f44d8c44b8a2ba02f37309d5, type: 3} - propertyPath: m_LocalPosition.x - value: 4 - objectReference: {fileID: 0} - - target: {fileID: 2991896912978869755, guid: 6821e1b7f44d8c44b8a2ba02f37309d5, type: 3} - propertyPath: m_LocalPosition.y - value: 0.663 - objectReference: {fileID: 0} - - target: {fileID: 2991896912978869755, guid: 6821e1b7f44d8c44b8a2ba02f37309d5, type: 3} - propertyPath: m_LocalPosition.z - value: -2.5 - objectReference: {fileID: 0} - - target: {fileID: 2991896912978869755, guid: 6821e1b7f44d8c44b8a2ba02f37309d5, type: 3} - propertyPath: m_LocalRotation.w - value: 0.7071068 - objectReference: {fileID: 0} - - target: {fileID: 2991896912978869755, guid: 6821e1b7f44d8c44b8a2ba02f37309d5, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2991896912978869755, guid: 6821e1b7f44d8c44b8a2ba02f37309d5, type: 3} - propertyPath: m_LocalRotation.y - value: -0.7071068 - objectReference: {fileID: 0} - - target: {fileID: 2991896912978869755, guid: 6821e1b7f44d8c44b8a2ba02f37309d5, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2991896912978869755, guid: 6821e1b7f44d8c44b8a2ba02f37309d5, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2991896912978869755, guid: 6821e1b7f44d8c44b8a2ba02f37309d5, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: -90 - objectReference: {fileID: 0} - - target: {fileID: 2991896912978869755, guid: 6821e1b7f44d8c44b8a2ba02f37309d5, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 6821e1b7f44d8c44b8a2ba02f37309d5, type: 3} ---- !u!1 &1522956426 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1522956427} - - component: {fileID: 1522956430} - - component: {fileID: 1522956429} - - component: {fileID: 1522956428} - m_Layer: 5 - m_Name: Instananeous Text - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1522956427 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1522956426} - 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: 874919885} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1522956428 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1522956426} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 18 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 1 - m_MaxSize: 40 - m_Alignment: 4 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: 'Instantaneous - - Movement' ---- !u!114 &1522956429 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1522956426} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} - m_Name: - m_EditorClassIdentifier: - m_HorizontalFit: 0 - m_VerticalFit: 2 ---- !u!222 &1522956430 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1522956426} - m_CullTransparentMesh: 0 ---- !u!1 &1579013952 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1579013953} - - component: {fileID: 1579013956} - - component: {fileID: 1579013955} - - component: {fileID: 1579013954} - m_Layer: 0 - m_Name: Gaze Interactable Table - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1579013953 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1579013952} - m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068} - m_LocalPosition: {x: -1.5, y: 0.625, z: -4.5} - m_LocalScale: {x: 0.4, y: 1, z: 1.85} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 439588100} - m_RootOrder: 6 - m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0} ---- !u!65 &1579013954 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1579013952} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!23 &1579013955 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1579013952} - 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: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 1 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!33 &1579013956 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1579013952} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!1 &1589715509 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1589715510} - - component: {fileID: 1589715512} - - component: {fileID: 1589715511} - m_Layer: 5 - m_Name: Header Panel - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1589715510 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1589715509} - 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: 1743632700} - m_Father: {fileID: 1917198434} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: -48.5} - m_SizeDelta: {x: 0, y: 98.63} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1589715511 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1589715509} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0, g: 0, b: 0, a: 0.7490196} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!222 &1589715512 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1589715509} - m_CullTransparentMesh: 1 ---- !u!1 &1714474115 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1714474116} - - component: {fileID: 1714474119} - - component: {fileID: 1714474118} - - component: {fileID: 1714474117} - m_Layer: 5 - m_Name: Interactable State - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1714474116 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1714474115} - 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: 139655396} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: -33} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1714474117 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1714474115} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 16 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 1 - m_MaxSize: 40 - m_Alignment: 4 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: Hovered ---- !u!114 &1714474118 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1714474115} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} - m_Name: - m_EditorClassIdentifier: - m_HorizontalFit: 0 - m_VerticalFit: 2 ---- !u!222 &1714474119 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1714474115} - m_CullTransparentMesh: 0 ---- !u!1001 &1731298970 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 2819856895474916288, guid: 895f6f3c2d334633b5800312285058d2, type: 3} - propertyPath: m_IsActive - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 3415145736139425353, guid: 895f6f3c2d334633b5800312285058d2, type: 3} - propertyPath: m_IsActive - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4134505312059479865, guid: 895f6f3c2d334633b5800312285058d2, type: 3} - propertyPath: m_RootOrder - value: 4 - objectReference: {fileID: 0} - - target: {fileID: 4134505312059479865, guid: 895f6f3c2d334633b5800312285058d2, type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4134505312059479865, guid: 895f6f3c2d334633b5800312285058d2, type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4134505312059479865, guid: 895f6f3c2d334633b5800312285058d2, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4134505312059479865, guid: 895f6f3c2d334633b5800312285058d2, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4134505312059479865, guid: 895f6f3c2d334633b5800312285058d2, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4134505312059479865, guid: 895f6f3c2d334633b5800312285058d2, type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4134505312059479865, guid: 895f6f3c2d334633b5800312285058d2, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4134505312059479865, guid: 895f6f3c2d334633b5800312285058d2, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4134505312059479865, guid: 895f6f3c2d334633b5800312285058d2, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4134505312059479865, guid: 895f6f3c2d334633b5800312285058d2, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 7313654230448209575, guid: 895f6f3c2d334633b5800312285058d2, type: 3} - propertyPath: m_Name - value: XR Interaction Setup - objectReference: {fileID: 0} - - target: {fileID: 7696548424635294051, guid: 895f6f3c2d334633b5800312285058d2, type: 3} - propertyPath: m_LocalPosition.y - value: 0.125 - objectReference: {fileID: 0} - - target: {fileID: 7696548424635294051, guid: 895f6f3c2d334633b5800312285058d2, type: 3} - propertyPath: m_LocalPosition.z - value: 2.93 - objectReference: {fileID: 0} - - target: {fileID: 7696548424635294051, guid: 895f6f3c2d334633b5800312285058d2, type: 3} - propertyPath: m_LocalRotation.w - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 7696548424635294051, guid: 895f6f3c2d334633b5800312285058d2, type: 3} - propertyPath: m_LocalRotation.y - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 7696548424635294051, guid: 895f6f3c2d334633b5800312285058d2, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 180 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 895f6f3c2d334633b5800312285058d2, type: 3} ---- !u!20 &1731298971 stripped -Camera: - m_CorrespondingSourceObject: {fileID: 9014170783809206330, guid: 895f6f3c2d334633b5800312285058d2, type: 3} - m_PrefabInstance: {fileID: 1731298970} - m_PrefabAsset: {fileID: 0} ---- !u!1 &1740969850 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1740969851} - - component: {fileID: 1740969853} - - component: {fileID: 1740969852} - m_Layer: 5 - m_Name: Panel - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1740969851 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1740969850} - 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: 1486677402} - m_Father: {fileID: 788111585} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0} - m_AnchorMax: {x: 0.5, y: 0} - m_AnchoredPosition: {x: 0, y: 50} - m_SizeDelta: {x: 275, y: 100} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1740969852 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1740969850} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0, g: 0, b: 0, a: 0.7490196} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!222 &1740969853 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1740969850} - m_CullTransparentMesh: 1 ---- !u!1 &1743632699 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1743632700} - - component: {fileID: 1743632702} - - component: {fileID: 1743632701} - m_Layer: 5 - m_Name: Header Text - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1743632700 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1743632699} - 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: 1589715510} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: -0.6850014} - m_SizeDelta: {x: -400, y: -65.13} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1743632701 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1743632699} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 24 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 2 - m_MaxSize: 40 - m_Alignment: 4 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: Climb Interactable Objects ---- !u!222 &1743632702 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1743632699} - m_CullTransparentMesh: 0 ---- !u!1 &1750799819 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1750799820} - - component: {fileID: 1750799822} - - component: {fileID: 1750799821} - m_Layer: 0 - m_Name: Particle System - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1750799820 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1750799819} - m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071068} - m_LocalPosition: {x: 0.003, y: -0.01, z: -0.011} - m_LocalScale: {x: 0.1, y: 0.10000001, z: 0.10000001} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 893438435} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: -90, y: 0, z: 0} ---- !u!199 &1750799821 -ParticleSystemRenderer: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1750799819} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 0 - m_ReflectionProbeUsage: 0 - m_RayTracingMode: 0 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 10301, 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_RenderMode: 0 - m_MeshDistribution: 0 - m_SortMode: 0 - m_MinParticleSize: 0 - m_MaxParticleSize: 0.5 - m_CameraVelocityScale: 0 - m_VelocityScale: 0 - m_LengthScale: 2 - m_SortingFudge: 0 - m_NormalDirection: 1 - m_ShadowBias: 0 - m_RenderAlignment: 0 - m_Pivot: {x: 0, y: 0, z: 0} - m_Flip: {x: 0, y: 0, z: 0} - m_UseCustomVertexStreams: 0 - m_EnableGPUInstancing: 1 - m_ApplyActiveColorSpace: 1 - m_AllowRoll: 1 - m_FreeformStretching: 0 - m_RotateWithStretchDirection: 1 - m_VertexStreams: 00010304 - m_Mesh: {fileID: 0} - m_Mesh1: {fileID: 0} - m_Mesh2: {fileID: 0} - m_Mesh3: {fileID: 0} - m_MeshWeighting: 1 - m_MeshWeighting1: 1 - m_MeshWeighting2: 1 - m_MeshWeighting3: 1 - m_MaskInteraction: 0 ---- !u!198 &1750799822 -ParticleSystem: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1750799819} - serializedVersion: 8 - lengthInSec: 5 - simulationSpeed: 1 - stopAction: 0 - cullingMode: 0 - ringBufferMode: 0 - ringBufferLoopRange: {x: 0, y: 1} - emitterVelocityMode: 0 - looping: 1 - prewarm: 0 - playOnAwake: 0 - useUnscaledTime: 0 - autoRandomSeed: 1 - startDelay: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - moveWithTransform: 0 - moveWithCustomTransform: {fileID: 0} - scalingMode: 1 - randomSeed: 0 - InitialModule: - serializedVersion: 3 - enabled: 1 - startLifetime: - serializedVersion: 2 - minMaxState: 0 - scalar: 5 - minScalar: 5 - maxCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - startSpeed: - serializedVersion: 2 - minMaxState: 0 - scalar: 10 - minScalar: 5 - maxCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - startColor: - serializedVersion: 2 - minMaxState: 0 - minColor: {r: 1, g: 1, b: 1, a: 1} - maxColor: {r: 0.9622642, g: 0.19517623, b: 0.20951429, a: 1} - maxGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - minGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - startSize: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - startSizeY: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - startSizeZ: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - startRotationX: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - startRotationY: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - startRotation: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - randomizeRotationDirection: 0 - maxNumParticles: 1000 - customEmitterVelocity: {x: 0, y: 0, z: 0} - size3D: 0 - rotation3D: 0 - gravityModifier: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - ShapeModule: - serializedVersion: 6 - enabled: 1 - type: 4 - angle: 13.08 - length: 5 - boxThickness: {x: 0, y: 0, z: 0} - radiusThickness: 0 - donutRadius: 0.2 - m_Position: {x: 0, y: 0, z: 0} - m_Rotation: {x: 0, y: 0, z: 0} - m_Scale: {x: 1, y: 1, z: 1} - placementMode: 0 - m_MeshMaterialIndex: 0 - m_MeshNormalOffset: 0 - m_MeshSpawn: - mode: 0 - spread: 0 - speed: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - m_Mesh: {fileID: 0} - m_MeshRenderer: {fileID: 0} - m_SkinnedMeshRenderer: {fileID: 0} - m_Sprite: {fileID: 0} - m_SpriteRenderer: {fileID: 0} - m_UseMeshMaterialIndex: 0 - m_UseMeshColors: 1 - alignToDirection: 0 - m_Texture: {fileID: 0} - m_TextureClipChannel: 3 - m_TextureClipThreshold: 0 - m_TextureUVChannel: 0 - m_TextureColorAffectsParticles: 1 - m_TextureAlphaAffectsParticles: 1 - m_TextureBilinearFiltering: 0 - randomDirectionAmount: 0 - sphericalDirectionAmount: 0 - randomPositionAmount: 0 - radius: - value: 0.5 - mode: 0 - spread: 0 - speed: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - arc: - value: 360 - mode: 0 - spread: 0 - speed: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - EmissionModule: - enabled: 1 - serializedVersion: 4 - rateOverTime: - serializedVersion: 2 - minMaxState: 0 - scalar: 50 - minScalar: 10 - maxCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - rateOverDistance: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - m_BurstCount: 0 - m_Bursts: [] - SizeModule: - enabled: 1 - curve: - serializedVersion: 2 - minMaxState: 1 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0.1511612 - inSlope: 2 - outSlope: 2 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - - serializedVersion: 3 - time: 0.054507792 - value: 0.57502365 - inSlope: -2.1679857 - outSlope: -2.1679857 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.07063622 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - y: - serializedVersion: 2 - minMaxState: 1 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 1 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 1 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - z: - serializedVersion: 2 - minMaxState: 1 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 1 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 1 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - separateAxes: 0 - RotationModule: - enabled: 0 - x: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - y: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - curve: - serializedVersion: 2 - minMaxState: 0 - scalar: 0.7853982 - minScalar: 0.7853982 - maxCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - separateAxes: 0 - ColorModule: - enabled: 0 - gradient: - serializedVersion: 2 - minMaxState: 1 - minColor: {r: 1, g: 1, b: 1, a: 1} - maxColor: {r: 1, g: 1, b: 1, a: 1} - maxGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - minGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - UVModule: - serializedVersion: 2 - enabled: 0 - mode: 0 - timeMode: 0 - fps: 30 - frameOverTime: - serializedVersion: 2 - minMaxState: 1 - scalar: 0.9999 - minScalar: 0.9999 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 1 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 1 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - startFrame: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - speedRange: {x: 0, y: 1} - tilesX: 1 - tilesY: 1 - animationType: 0 - rowIndex: 0 - cycles: 1 - uvChannelMask: -1 - rowMode: 1 - sprites: - - sprite: {fileID: 0} - flipU: 0 - flipV: 0 - VelocityModule: - enabled: 0 - x: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - y: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - z: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - orbitalX: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - orbitalY: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - orbitalZ: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - orbitalOffsetX: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - orbitalOffsetY: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - orbitalOffsetZ: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - radial: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - speedModifier: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - inWorldSpace: 0 - InheritVelocityModule: - enabled: 0 - m_Mode: 0 - m_Curve: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - LifetimeByEmitterSpeedModule: - enabled: 0 - m_Curve: - serializedVersion: 2 - minMaxState: 1 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: -0.8 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0.2 - inSlope: -0.8 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - m_Range: {x: 0, y: 1} - ForceModule: - enabled: 1 - x: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - y: - serializedVersion: 2 - minMaxState: 0 - scalar: -9.8 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - z: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - inWorldSpace: 1 - randomizePerFrame: 0 - ExternalForcesModule: - serializedVersion: 2 - enabled: 0 - multiplierCurve: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - influenceFilter: 0 - influenceMask: - serializedVersion: 2 - m_Bits: 4294967295 - influenceList: [] - ClampVelocityModule: - enabled: 0 - x: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - y: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - z: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - magnitude: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - separateAxis: 0 - inWorldSpace: 0 - multiplyDragByParticleSize: 1 - multiplyDragByParticleVelocity: 1 - dampen: 0 - drag: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - NoiseModule: - enabled: 0 - strength: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - strengthY: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - strengthZ: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - separateAxes: 0 - frequency: 0.5 - damping: 1 - octaves: 1 - octaveMultiplier: 0.5 - octaveScale: 2 - quality: 2 - scrollSpeed: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - remap: - serializedVersion: 2 - minMaxState: 1 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: -1 - inSlope: 0 - outSlope: 2 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 2 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - remapY: - serializedVersion: 2 - minMaxState: 1 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: -1 - inSlope: 0 - outSlope: 2 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 2 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - remapZ: - serializedVersion: 2 - minMaxState: 1 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: -1 - inSlope: 0 - outSlope: 2 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 2 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - remapEnabled: 0 - positionAmount: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - rotationAmount: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - sizeAmount: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - SizeBySpeedModule: - enabled: 0 - curve: - serializedVersion: 2 - minMaxState: 1 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 1 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 1 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - y: - serializedVersion: 2 - minMaxState: 1 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 1 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 1 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - z: - serializedVersion: 2 - minMaxState: 1 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 1 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 1 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - range: {x: 0, y: 1} - separateAxes: 0 - RotationBySpeedModule: - enabled: 0 - x: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - y: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - curve: - serializedVersion: 2 - minMaxState: 0 - scalar: 0.7853982 - minScalar: 0.7853982 - maxCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - separateAxes: 0 - range: {x: 0, y: 1} - ColorBySpeedModule: - enabled: 0 - gradient: - serializedVersion: 2 - minMaxState: 1 - minColor: {r: 1, g: 1, b: 1, a: 1} - maxColor: {r: 1, g: 1, b: 1, a: 1} - maxGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - minGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - range: {x: 0, y: 1} - CollisionModule: - enabled: 0 - serializedVersion: 4 - type: 0 - collisionMode: 0 - colliderForce: 0 - multiplyColliderForceByParticleSize: 0 - multiplyColliderForceByParticleSpeed: 0 - multiplyColliderForceByCollisionAngle: 1 - m_Planes: [] - m_Dampen: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - m_Bounce: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - m_EnergyLossOnCollision: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - minKillSpeed: 0 - maxKillSpeed: 10000 - radiusScale: 1 - collidesWith: - serializedVersion: 2 - m_Bits: 4294967295 - maxCollisionShapes: 256 - quality: 0 - voxelSize: 0.5 - collisionMessages: 0 - collidesWithDynamic: 1 - interiorCollisions: 0 - TriggerModule: - enabled: 0 - serializedVersion: 2 - inside: 1 - outside: 0 - enter: 0 - exit: 0 - colliderQueryMode: 0 - radiusScale: 1 - primitives: [] - SubModule: - serializedVersion: 2 - enabled: 0 - subEmitters: - - serializedVersion: 3 - emitter: {fileID: 0} - type: 0 - properties: 0 - emitProbability: 1 - LightsModule: - enabled: 0 - ratio: 0 - light: {fileID: 0} - randomDistribution: 1 - color: 1 - range: 1 - intensity: 1 - rangeCurve: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - intensityCurve: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - maxLights: 20 - TrailModule: - enabled: 0 - mode: 0 - ratio: 1 - lifetime: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minVertexDistance: 0.2 - textureMode: 0 - ribbonCount: 1 - shadowBias: 0.5 - worldSpace: 0 - dieWithParticles: 1 - sizeAffectsWidth: 1 - sizeAffectsLifetime: 0 - inheritParticleColor: 1 - generateLightingData: 0 - splitSubEmitterRibbons: 0 - attachRibbonsToTransform: 0 - colorOverLifetime: - serializedVersion: 2 - minMaxState: 0 - minColor: {r: 1, g: 1, b: 1, a: 1} - maxColor: {r: 1, g: 1, b: 1, a: 1} - maxGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - minGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - widthOverTrail: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - 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: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - colorOverTrail: - serializedVersion: 2 - minMaxState: 0 - minColor: {r: 1, g: 1, b: 1, a: 1} - maxColor: {r: 1, g: 1, b: 1, a: 1} - maxGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - minGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - CustomDataModule: - enabled: 0 - mode0: 0 - vectorComponentCount0: 4 - color0: - serializedVersion: 2 - minMaxState: 0 - minColor: {r: 1, g: 1, b: 1, a: 1} - maxColor: {r: 1, g: 1, b: 1, a: 1} - maxGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - minGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - colorLabel0: Color - vector0_0: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - vectorLabel0_0: X - vector0_1: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - vectorLabel0_1: Y - vector0_2: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - vectorLabel0_2: Z - vector0_3: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - vectorLabel0_3: W - mode1: 0 - vectorComponentCount1: 4 - color1: - serializedVersion: 2 - minMaxState: 0 - minColor: {r: 1, g: 1, b: 1, a: 1} - maxColor: {r: 1, g: 1, b: 1, a: 1} - maxGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - minGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - colorLabel1: Color - vector1_0: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - vectorLabel1_0: X - vector1_1: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - vectorLabel1_1: Y - vector1_2: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - vectorLabel1_2: Z - vector1_3: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - 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 - vectorLabel1_3: W ---- !u!1 &1807497889 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1807497890} - - component: {fileID: 1807497892} - - component: {fileID: 1807497891} - m_Layer: 5 - m_Name: Panel - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1807497890 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1807497889} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0.000029802322} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 967567312} - m_Father: {fileID: 788111585} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0} - m_AnchorMax: {x: 0.5, y: 0} - m_AnchoredPosition: {x: 275, y: 50} - m_SizeDelta: {x: 250, y: 100} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1807497891 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1807497889} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0, g: 0, b: 0, a: 0.7490196} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!222 &1807497892 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1807497889} - m_CullTransparentMesh: 1 ---- !u!1 &1815318735 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1815318737} - - component: {fileID: 1815318736} - m_Layer: 0 - m_Name: Directional Light - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!108 &1815318736 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1815318735} - m_Enabled: 1 - serializedVersion: 10 - m_Type: 1 - m_Shape: 0 - m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} - m_Intensity: 1 - m_Range: 10 - m_SpotAngle: 30 - m_InnerSpotAngle: 21.80208 - m_CookieSize: 10 - m_Shadows: - m_Type: 2 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_CullingMatrixOverride: - e00: 1 - e01: 0 - e02: 0 - e03: 0 - e10: 0 - e11: 1 - e12: 0 - e13: 0 - e20: 0 - e21: 0 - e22: 1 - e23: 0 - e30: 0 - e31: 0 - e32: 0 - e33: 1 - m_UseCullingMatrixOverride: 0 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingLayerMask: 1 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} - m_UseBoundingSphereOverride: 0 - m_UseViewFrustumForShadowCasterCull: 1 - m_ShadowRadius: 0 - m_ShadowAngle: 0 ---- !u!4 &1815318737 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1815318735} - m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} - m_LocalPosition: {x: 0, y: 3, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 439588100} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} ---- !u!1 &1880968183 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1880968184} - - component: {fileID: 1880968186} - - component: {fileID: 1880968185} - m_Layer: 0 - m_Name: Sphere - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &1880968184 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1880968183} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 1, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 4351758153949589637} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &1880968185 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1880968183} - 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: 5561349426305759274, guid: 9e1dc1c14313460d872de39e35129b39, type: 3} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 1 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!33 &1880968186 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1880968183} - m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} ---- !u!1 &1917198433 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1917198434} - - component: {fileID: 1917198438} - - component: {fileID: 1917198437} - - component: {fileID: 1917198436} - - component: {fileID: 1917198435} - m_Layer: 5 - m_Name: Climb Interactable Info - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1917198434 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1917198433} - m_LocalRotation: {x: 0, y: -0.7071068, z: 0, w: 0.7071068} - m_LocalPosition: {x: 0, y: 0, z: 1.306} - m_LocalScale: {x: 0.002, y: 0.002, z: 0.002} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 1589715510} - m_Father: {fileID: 439588100} - m_RootOrder: 7 - m_LocalEulerAnglesHint: {x: 0, y: -90, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: -2.867, y: 1.5} - m_SizeDelta: {x: 700, y: 200} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1917198435 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1917198433} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 7951c64acb0fa62458bf30a60089fe2d, type: 3} - m_Name: - m_EditorClassIdentifier: - m_IgnoreReversedGraphics: 0 - m_CheckFor2DOcclusion: 0 - m_CheckFor3DOcclusion: 0 - m_BlockingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RaycastTriggerInteraction: 1 ---- !u!114 &1917198436 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1917198433} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} - m_Name: - m_EditorClassIdentifier: - m_IgnoreReversedGraphics: 1 - m_BlockingObjects: 0 - m_BlockingMask: - serializedVersion: 2 - m_Bits: 4294967295 ---- !u!114 &1917198437 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1917198433} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UiScaleMode: 0 - m_ReferencePixelsPerUnit: 100 - m_ScaleFactor: 1 - m_ReferenceResolution: {x: 800, y: 600} - m_ScreenMatchMode: 0 - m_MatchWidthOrHeight: 0 - m_PhysicalUnit: 3 - m_FallbackScreenDPI: 96 - m_DefaultSpriteDPI: 96 - m_DynamicPixelsPerUnit: 1 - m_PresetInfoIsWorld: 1 ---- !u!223 &1917198438 -Canvas: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1917198433} - m_Enabled: 1 - serializedVersion: 3 - m_RenderMode: 2 - m_Camera: {fileID: 1731298971} - m_PlaneDistance: 100 - m_PixelPerfect: 0 - m_ReceivesEvents: 1 - m_OverrideSorting: 0 - m_OverridePixelPerfect: 0 - m_SortingBucketNormalizedSize: 0 - m_AdditionalShaderChannelsFlag: 25 - m_SortingLayerID: 0 - m_SortingOrder: 0 - m_TargetDisplay: 0 ---- !u!1 &1936063055 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1936063056} - - component: {fileID: 1936063058} - - component: {fileID: 1936063057} - m_Layer: 5 - m_Name: Panel - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1936063056 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1936063055} - 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: 650025389} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1936063057 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1936063055} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.16862746, g: 0.16862746, b: 0.16862746, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!222 &1936063058 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1936063055} - m_CullTransparentMesh: 1 ---- !u!1 &196977305468683332 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 196977305468683333} - - component: {fileID: 196977305468683336} - - component: {fileID: 196977305468683334} - - component: {fileID: 4934032446432824226} - m_Layer: 5 - m_Name: Kinematic Text - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &196977305468683333 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 196977305468683332} - 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: 336426668} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0.000091552734, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &196977305468683334 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 196977305468683332} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} - m_Name: - m_EditorClassIdentifier: - m_HorizontalFit: 0 - m_VerticalFit: 2 ---- !u!222 &196977305468683336 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 196977305468683332} - m_CullTransparentMesh: 0 ---- !u!1 &196977306215183537 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 196977306215183538} - - component: {fileID: 196977306215183541} - - component: {fileID: 9108292829394508247} - m_Layer: 5 - m_Name: Header Text - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &196977306215183538 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 196977306215183537} - 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: 1202312659} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: -0.6850014} - m_SizeDelta: {x: -428, y: -65.13} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &196977306215183541 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 196977306215183537} - m_CullTransparentMesh: 0 ---- !u!23 &304875268724588487 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1417002648429656558} - 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: 5561349426305759274, guid: 63e02ddb08ce42da868504e1333d48ae, type: 3} - 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 &604367606304239376 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 604367606304239380} - - component: {fileID: 604367606304239381} - - component: {fileID: 604367606304239378} - - component: {fileID: 604367606304239379} - - component: {fileID: 604367606304239383} - m_Layer: 5 - m_Name: Grab Interactable Info - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &604367606304239378 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 604367606304239376} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UiScaleMode: 0 - m_ReferencePixelsPerUnit: 100 - m_ScaleFactor: 1 - m_ReferenceResolution: {x: 800, y: 600} - m_ScreenMatchMode: 0 - m_MatchWidthOrHeight: 0 - m_PhysicalUnit: 3 - m_FallbackScreenDPI: 96 - m_DefaultSpriteDPI: 96 - m_DynamicPixelsPerUnit: 1 - m_PresetInfoIsWorld: 1 ---- !u!114 &604367606304239379 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 604367606304239376} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} - m_Name: - m_EditorClassIdentifier: - m_IgnoreReversedGraphics: 1 - m_BlockingObjects: 0 - m_BlockingMask: - serializedVersion: 2 - m_Bits: 4294967295 ---- !u!224 &604367606304239380 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 604367606304239376} - m_LocalRotation: {x: -0, y: 0.7071068, z: -0, w: 0.7071068} - m_LocalPosition: {x: 0, y: 0, z: -2.5} - m_LocalScale: {x: 0.002, y: 0.002, z: 0.002} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 1202312659} - - {fileID: 336426668} - - {fileID: 874919885} - - {fileID: 564796392} - m_Father: {fileID: 439588100} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 4.5, y: 1.5} - m_SizeDelta: {x: 700, y: 200} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!223 &604367606304239381 -Canvas: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 604367606304239376} - m_Enabled: 1 - serializedVersion: 3 - m_RenderMode: 2 - m_Camera: {fileID: 1731298971} - m_PlaneDistance: 100 - m_PixelPerfect: 0 - m_ReceivesEvents: 1 - m_OverrideSorting: 0 - m_OverridePixelPerfect: 0 - m_SortingBucketNormalizedSize: 0 - m_AdditionalShaderChannelsFlag: 25 - m_SortingLayerID: 0 - m_SortingOrder: 0 - m_TargetDisplay: 0 ---- !u!114 &604367606304239383 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 604367606304239376} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 7951c64acb0fa62458bf30a60089fe2d, type: 3} - m_Name: - m_EditorClassIdentifier: - m_IgnoreReversedGraphics: 0 - m_CheckFor2DOcclusion: 0 - m_CheckFor3DOcclusion: 0 - m_BlockingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RaycastTriggerInteraction: 1 ---- !u!64 &1139231440288762857 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7733875956082356047} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 4 - m_Convex: 1 - m_CookingOptions: 30 - m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} ---- !u!1 &1417002648429656558 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4351758153949589637} - - component: {fileID: 4136355493345961344} - - component: {fileID: 304875268724588487} - - component: {fileID: 1417002648429656559} - - component: {fileID: 6720061550881514980} - m_Layer: 0 - m_Name: Gaze Hover Simple Interactable - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!65 &1417002648429656559 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1417002648429656558} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!114 &2719188128611660613 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7733875956082356047} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 8a35f6cfbfba9b548aaa00d52cfe8a50, type: 3} - m_Name: - m_EditorClassIdentifier: - m_InteractionManager: {fileID: 0} - m_Colliders: [] - m_InteractionLayerMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_InteractionLayers: - m_Bits: 1 - m_DistanceCalculationMode: 1 - m_SelectMode: 0 - m_FocusMode: 1 - m_CustomReticle: {fileID: 0} - m_AllowGazeInteraction: 1 - m_AllowGazeSelect: 0 - m_OverrideGazeTimeToSelect: 0 - m_GazeTimeToSelect: 2 - m_OverrideTimeToAutoDeselectGaze: 0 - m_TimeToAutoDeselectGaze: 2 - m_AllowGazeAssistance: 1 - m_FirstHoverEntered: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 8990637463419988326} - m_TargetAssemblyTypeName: UnityEngine.Renderer, UnityEngine - m_MethodName: set_material - m_Mode: 2 - m_Arguments: - m_ObjectArgument: {fileID: 5561349426305759274, guid: 9e1dc1c14313460d872de39e35129b39, type: 3} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Material, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 - m_LastHoverExited: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 8990637463419988326} - m_TargetAssemblyTypeName: UnityEngine.Renderer, UnityEngine - m_MethodName: set_material - m_Mode: 2 - m_Arguments: - m_ObjectArgument: {fileID: 5561349426305759274, guid: 63e02ddb08ce42da868504e1333d48ae, type: 3} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Material, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 - m_HoverEntered: - m_PersistentCalls: - m_Calls: [] - m_HoverExited: - m_PersistentCalls: - m_Calls: [] - m_FirstSelectEntered: - m_PersistentCalls: - m_Calls: [] - m_LastSelectExited: - m_PersistentCalls: - m_Calls: [] - m_SelectEntered: - m_PersistentCalls: - m_Calls: [] - m_SelectExited: - m_PersistentCalls: - m_Calls: [] - m_FirstFocusEntered: - m_PersistentCalls: - m_Calls: [] - m_LastFocusExited: - m_PersistentCalls: - m_Calls: [] - m_FocusEntered: - m_PersistentCalls: - m_Calls: [] - m_FocusExited: - m_PersistentCalls: - m_Calls: [] - m_Activated: - m_PersistentCalls: - m_Calls: [] - m_Deactivated: - m_PersistentCalls: - m_Calls: [] - m_StartingHoverFilters: [] - m_StartingSelectFilters: [] - m_StartingInteractionStrengthFilters: [] - m_OnFirstHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnLastHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectEntered: - m_PersistentCalls: - m_Calls: [] - m_OnSelectExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectCanceled: - m_PersistentCalls: - m_Calls: [] - m_OnActivate: - m_PersistentCalls: - m_Calls: [] - m_OnDeactivate: - m_PersistentCalls: - m_Calls: [] ---- !u!114 &2719188129144207001 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7733875955549809299} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 8a35f6cfbfba9b548aaa00d52cfe8a50, type: 3} - m_Name: - m_EditorClassIdentifier: - m_InteractionManager: {fileID: 0} - m_Colliders: [] - m_InteractionLayerMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_InteractionLayers: - m_Bits: 1 - m_DistanceCalculationMode: 1 - m_SelectMode: 0 - m_FocusMode: 1 - m_CustomReticle: {fileID: 0} - m_AllowGazeInteraction: 1 - m_AllowGazeSelect: 1 - m_OverrideGazeTimeToSelect: 1 - m_GazeTimeToSelect: 2 - m_OverrideTimeToAutoDeselectGaze: 1 - m_TimeToAutoDeselectGaze: 4 - m_AllowGazeAssistance: 0 - m_FirstHoverEntered: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 8990637461805051066} - m_TargetAssemblyTypeName: UnityEngine.Renderer, UnityEngine - m_MethodName: set_material - m_Mode: 2 - m_Arguments: - m_ObjectArgument: {fileID: 5561349426305759274, guid: 9e1dc1c14313460d872de39e35129b39, type: 3} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Material, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 - - m_Target: {fileID: 1209329927} - m_TargetAssemblyTypeName: UnityEngine.GameObject, UnityEngine - m_MethodName: SetActive - m_Mode: 6 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 1 - m_CallState: 2 - - m_Target: {fileID: 1714474117} - m_TargetAssemblyTypeName: UnityEngine.UI.Text, UnityEngine.UI - m_MethodName: set_text - m_Mode: 5 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: Hovered - m_BoolArgument: 1 - m_CallState: 2 - m_LastHoverExited: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 8990637461805051066} - m_TargetAssemblyTypeName: UnityEngine.Renderer, UnityEngine - m_MethodName: set_material - m_Mode: 2 - m_Arguments: - m_ObjectArgument: {fileID: 5561349426305759274, guid: 63e02ddb08ce42da868504e1333d48ae, type: 3} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Material, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 - - m_Target: {fileID: 1209329927} - m_TargetAssemblyTypeName: UnityEngine.GameObject, UnityEngine - m_MethodName: SetActive - m_Mode: 6 - 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 - m_HoverEntered: - m_PersistentCalls: - m_Calls: [] - m_HoverExited: - m_PersistentCalls: - m_Calls: [] - m_FirstSelectEntered: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 1714474117} - m_TargetAssemblyTypeName: UnityEngine.UI.Text, UnityEngine.UI - m_MethodName: set_text - m_Mode: 5 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: Selected - m_BoolArgument: 0 - m_CallState: 2 - m_LastSelectExited: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 1714474117} - m_TargetAssemblyTypeName: UnityEngine.UI.Text, UnityEngine.UI - m_MethodName: set_text - m_Mode: 5 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: Deselected - m_BoolArgument: 0 - m_CallState: 2 - - m_Target: {fileID: 8990637461805051066} - m_TargetAssemblyTypeName: UnityEngine.Renderer, UnityEngine - m_MethodName: set_material - m_Mode: 2 - m_Arguments: - m_ObjectArgument: {fileID: 5561349426305759274, guid: 63e02ddb08ce42da868504e1333d48ae, type: 3} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Material, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 - m_SelectEntered: - m_PersistentCalls: - m_Calls: [] - m_SelectExited: - m_PersistentCalls: - m_Calls: [] - m_FirstFocusEntered: - m_PersistentCalls: - m_Calls: [] - m_LastFocusExited: - m_PersistentCalls: - m_Calls: [] - m_FocusEntered: - m_PersistentCalls: - m_Calls: [] - m_FocusExited: - m_PersistentCalls: - m_Calls: [] - m_Activated: - m_PersistentCalls: - m_Calls: [] - m_Deactivated: - m_PersistentCalls: - m_Calls: [] - m_StartingHoverFilters: [] - m_StartingSelectFilters: [] - m_StartingInteractionStrengthFilters: [] - m_OnFirstHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnLastHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectEntered: - m_PersistentCalls: - m_Calls: [] - m_OnSelectExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectCanceled: - m_PersistentCalls: - m_Calls: [] - m_OnActivate: - m_PersistentCalls: - m_Calls: [] - m_OnDeactivate: - m_PersistentCalls: - m_Calls: [] ---- !u!114 &3807310294900035020 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3807310294900035022} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0, g: 0, b: 0, a: 0.7490196} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!222 &3807310294900035021 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3807310294900035022} - m_CullTransparentMesh: 1 ---- !u!1 &3807310294900035022 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3807310294900035023} - - component: {fileID: 3807310294900035021} - - component: {fileID: 3807310294900035020} - m_Layer: 5 - m_Name: Panel - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &3807310294900035023 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3807310294900035022} - 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: 3807310296080488667} - m_Father: {fileID: 3807310296116640662} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0} - m_AnchorMax: {x: 0.5, y: 0} - m_AnchoredPosition: {x: 0, y: 50} - m_SizeDelta: {x: 275, y: 100} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &3807310295319535098 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3807310295319535103} - m_CullTransparentMesh: 1 ---- !u!224 &3807310295319535100 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3807310295319535103} - 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: 3807310295681469693} - m_Father: {fileID: 3807310296116640662} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0} - m_AnchorMax: {x: 0.5, y: 0} - m_AnchoredPosition: {x: 275, y: 50} - m_SizeDelta: {x: 250, y: 100} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &3807310295319535101 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3807310295319535103} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0, g: 0, b: 0, a: 0.7490196} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &3807310295319535103 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3807310295319535100} - - component: {fileID: 3807310295319535098} - - component: {fileID: 3807310295319535101} - m_Layer: 5 - m_Name: Panel - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &3807310295418403514 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3807310295418403519} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} - m_Name: - m_EditorClassIdentifier: - m_HorizontalFit: 0 - m_VerticalFit: 2 ---- !u!222 &3807310295418403515 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3807310295418403519} - m_CullTransparentMesh: 0 ---- !u!224 &3807310295418403516 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3807310295418403519} - 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: 3807310296483843619} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &3807310295418403517 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3807310295418403519} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 18 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 1 - m_MaxSize: 50 - m_Alignment: 4 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: Enable Particle System ---- !u!1 &3807310295418403519 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3807310295418403516} - - component: {fileID: 3807310295418403515} - - component: {fileID: 3807310295418403514} - - component: {fileID: 3807310295418403517} - m_Layer: 5 - m_Name: Enable Particle System - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &3807310295488059788 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3807310295488059790} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0, g: 0, b: 0, a: 0.7490196} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!222 &3807310295488059789 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3807310295488059790} - m_CullTransparentMesh: 1 ---- !u!1 &3807310295488059790 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3807310295488059791} - - component: {fileID: 3807310295488059789} - - component: {fileID: 3807310295488059788} - m_Layer: 5 - m_Name: Header Panel - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &3807310295488059791 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3807310295488059790} - 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: 3807310295959509738} - m_Father: {fileID: 3807310296116640662} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: -48.5} - m_SizeDelta: {x: 0, y: 98.63} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &3807310295681469688 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3807310295681469692} - m_CullTransparentMesh: 0 ---- !u!114 &3807310295681469690 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3807310295681469692} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 18 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 1 - m_MaxSize: 40 - m_Alignment: 4 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: Increment UI Text ---- !u!114 &3807310295681469691 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3807310295681469692} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} - m_Name: - m_EditorClassIdentifier: - m_HorizontalFit: 0 - m_VerticalFit: 2 ---- !u!1 &3807310295681469692 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3807310295681469693} - - component: {fileID: 3807310295681469688} - - component: {fileID: 3807310295681469691} - - component: {fileID: 3807310295681469690} - m_Layer: 5 - m_Name: Increment UI Text - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &3807310295681469693 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3807310295681469692} - 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: 3807310295319535100} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &3807310295959509736 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3807310295959509741} - m_CullTransparentMesh: 0 ---- !u!224 &3807310295959509738 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3807310295959509741} - 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: 3807310295488059791} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: -0.6850014} - m_SizeDelta: {x: -428, y: -65.13} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &3807310295959509739 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3807310295959509741} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 24 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 2 - m_MaxSize: 40 - m_Alignment: 4 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: Poke Interaction Examples ---- !u!1 &3807310295959509741 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3807310295959509738} - - component: {fileID: 3807310295959509736} - - component: {fileID: 3807310295959509739} - m_Layer: 5 - m_Name: Header Text - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!222 &3807310296080488662 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3807310296080488666} - m_CullTransparentMesh: 0 ---- !u!114 &3807310296080488664 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3807310296080488666} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 18 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 1 - m_MaxSize: 40 - m_Alignment: 4 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: Play Sound ---- !u!114 &3807310296080488665 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3807310296080488666} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} - m_Name: - m_EditorClassIdentifier: - m_HorizontalFit: 0 - m_VerticalFit: 2 ---- !u!1 &3807310296080488666 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3807310296080488667} - - component: {fileID: 3807310296080488662} - - component: {fileID: 3807310296080488665} - - component: {fileID: 3807310296080488664} - m_Layer: 5 - m_Name: Play Sound - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &3807310296080488667 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3807310296080488666} - 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: 3807310294900035023} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!223 &3807310296116640658 -Canvas: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3807310296116640665} - m_Enabled: 1 - serializedVersion: 3 - m_RenderMode: 2 - m_Camera: {fileID: 1731298971} - m_PlaneDistance: 100 - m_PixelPerfect: 0 - m_ReceivesEvents: 1 - m_OverrideSorting: 0 - m_OverridePixelPerfect: 0 - m_SortingBucketNormalizedSize: 0 - m_AdditionalShaderChannelsFlag: 25 - m_SortingLayerID: 0 - m_SortingOrder: 0 - m_TargetDisplay: 0 ---- !u!114 &3807310296116640660 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3807310296116640665} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} - m_Name: - m_EditorClassIdentifier: - m_IgnoreReversedGraphics: 1 - m_BlockingObjects: 0 - m_BlockingMask: - serializedVersion: 2 - m_Bits: 4294967295 ---- !u!114 &3807310296116640661 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3807310296116640665} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UiScaleMode: 0 - m_ReferencePixelsPerUnit: 100 - m_ScaleFactor: 1 - m_ReferenceResolution: {x: 800, y: 600} - m_ScreenMatchMode: 0 - m_MatchWidthOrHeight: 0 - m_PhysicalUnit: 3 - m_FallbackScreenDPI: 96 - m_DefaultSpriteDPI: 96 - m_DynamicPixelsPerUnit: 1 - m_PresetInfoIsWorld: 1 ---- !u!224 &3807310296116640662 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3807310296116640665} - m_LocalRotation: {x: 0, y: 1, z: 0, w: 0} - m_LocalPosition: {x: 0, y: 0, z: -5} - m_LocalScale: {x: 0.002, y: 0.002, z: 0.002} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 3807310295488059791} - - {fileID: 3807310296483843619} - - {fileID: 3807310294900035023} - - {fileID: 3807310295319535100} - m_Father: {fileID: 439588100} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 1.5, y: 1.5} - m_SizeDelta: {x: 800, y: 200} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &3807310296116640663 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3807310296116640665} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 7951c64acb0fa62458bf30a60089fe2d, type: 3} - m_Name: - m_EditorClassIdentifier: - m_IgnoreReversedGraphics: 0 - m_CheckFor2DOcclusion: 0 - m_CheckFor3DOcclusion: 0 - m_BlockingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RaycastTriggerInteraction: 1 ---- !u!1 &3807310296116640665 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3807310296116640662} - - component: {fileID: 3807310296116640658} - - component: {fileID: 3807310296116640661} - - component: {fileID: 3807310296116640660} - - component: {fileID: 3807310296116640663} - m_Layer: 5 - m_Name: Poke Interactions Info - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &3807310296483843616 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3807310296483843618} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0, g: 0, b: 0, a: 0.7490196} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!222 &3807310296483843617 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3807310296483843618} - m_CullTransparentMesh: 1 ---- !u!1 &3807310296483843618 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3807310296483843619} - - component: {fileID: 3807310296483843617} - - component: {fileID: 3807310296483843616} - m_Layer: 5 - m_Name: Panel - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &3807310296483843619 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3807310296483843618} - 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: 3807310295418403516} - m_Father: {fileID: 3807310296116640662} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0} - m_AnchorMax: {x: 0.5, y: 0} - m_AnchoredPosition: {x: -275, y: 50} - m_SizeDelta: {x: 250, y: 100} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!1001 &3953970342977539823 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 3953970342314940649, guid: 2ea572d587ee60f44bd5baa3bc2d6503, type: 3} - propertyPath: m_RootOrder - value: 7 - objectReference: {fileID: 0} - - target: {fileID: 3953970342314940649, guid: 2ea572d587ee60f44bd5baa3bc2d6503, type: 3} - propertyPath: m_LocalPosition.x - value: -3.75 - objectReference: {fileID: 0} - - target: {fileID: 3953970342314940649, guid: 2ea572d587ee60f44bd5baa3bc2d6503, type: 3} - propertyPath: m_LocalPosition.y - value: 0.125 - objectReference: {fileID: 0} - - target: {fileID: 3953970342314940649, guid: 2ea572d587ee60f44bd5baa3bc2d6503, type: 3} - propertyPath: m_LocalPosition.z - value: 2.5 - objectReference: {fileID: 0} - - target: {fileID: 3953970342314940649, guid: 2ea572d587ee60f44bd5baa3bc2d6503, type: 3} - propertyPath: m_LocalRotation.w - value: 0.7071068 - objectReference: {fileID: 0} - - target: {fileID: 3953970342314940649, guid: 2ea572d587ee60f44bd5baa3bc2d6503, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3953970342314940649, guid: 2ea572d587ee60f44bd5baa3bc2d6503, type: 3} - propertyPath: m_LocalRotation.y - value: 0.7071068 - objectReference: {fileID: 0} - - target: {fileID: 3953970342314940649, guid: 2ea572d587ee60f44bd5baa3bc2d6503, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3953970342314940649, guid: 2ea572d587ee60f44bd5baa3bc2d6503, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3953970342314940649, guid: 2ea572d587ee60f44bd5baa3bc2d6503, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 90 - objectReference: {fileID: 0} - - target: {fileID: 3953970342314940649, guid: 2ea572d587ee60f44bd5baa3bc2d6503, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3953970342314940650, guid: 2ea572d587ee60f44bd5baa3bc2d6503, type: 3} - propertyPath: m_Name - value: Climb Sample - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 2ea572d587ee60f44bd5baa3bc2d6503, type: 3} ---- !u!33 &4136355493345961344 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1417002648429656558} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &4351758153949589637 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1417002648429656558} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0.5, y: 0.58, z: 0} - m_LocalScale: {x: 0.2, y: 0.2, z: 0.2} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 1880968184} - m_Father: {fileID: 547229428} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &4581292472285887089 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4581292472285887094} - - component: {fileID: 4581292472285887093} - - component: {fileID: 4581292472285887092} - - component: {fileID: 4581292472285887095} - m_Layer: 0 - m_Name: Poke Interactions Table - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &4581292472285887092 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4581292472285887089} - 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: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 1 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!33 &4581292472285887093 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4581292472285887089} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &4581292472285887094 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4581292472285887089} - m_LocalRotation: {x: -0, y: 0.7071068, z: -0, w: 0.7071068} - m_LocalPosition: {x: 1.5, y: 0.625, z: -4.4199996} - m_LocalScale: {x: 0.40000004, y: 1, z: 1.85} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 439588100} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0} ---- !u!65 &4581292472285887095 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4581292472285887089} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &4726882081983558433 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7733875956082356047} - m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} ---- !u!33 &4726882083590108925 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7733875955549809299} - m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} ---- !u!114 &4934032446432824226 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 196977305468683332} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 18 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 1 - m_MaxSize: 50 - m_Alignment: 4 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: 'Kinematic - - Movement' ---- !u!4 &4943412722798158840 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7733875955549809299} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -0.5, y: 0.58, z: 0} - m_LocalScale: {x: 0.2, y: 0.2, z: 0.2} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 547229428} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!4 &4943412724412835364 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7733875956082356047} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0.58, z: 0} - m_LocalScale: {x: 0.2, y: 0.1, z: 0.2} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 547229428} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &6720061550881514980 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1417002648429656558} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 8a35f6cfbfba9b548aaa00d52cfe8a50, type: 3} - m_Name: - m_EditorClassIdentifier: - m_InteractionManager: {fileID: 0} - m_Colliders: [] - m_InteractionLayerMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_InteractionLayers: - m_Bits: 1 - m_DistanceCalculationMode: 1 - m_SelectMode: 0 - m_FocusMode: 1 - m_CustomReticle: {fileID: 0} - m_AllowGazeInteraction: 1 - m_AllowGazeSelect: 0 - m_OverrideGazeTimeToSelect: 0 - m_GazeTimeToSelect: 0 - m_OverrideTimeToAutoDeselectGaze: 0 - m_TimeToAutoDeselectGaze: 3 - m_AllowGazeAssistance: 0 - m_FirstHoverEntered: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 304875268724588487} - m_TargetAssemblyTypeName: UnityEngine.Renderer, UnityEngine - m_MethodName: set_material - m_Mode: 2 - m_Arguments: - m_ObjectArgument: {fileID: 5561349426305759274, guid: 9e1dc1c14313460d872de39e35129b39, type: 3} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Material, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 - - m_Target: {fileID: 1880968183} - m_TargetAssemblyTypeName: UnityEngine.GameObject, UnityEngine - m_MethodName: SetActive - m_Mode: 6 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 1 - m_CallState: 2 - - m_Target: {fileID: 0} - m_TargetAssemblyTypeName: UnityEngine.GameObject, UnityEngine - m_MethodName: SetActive - m_Mode: 6 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 1 - m_CallState: 2 - m_LastHoverExited: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 304875268724588487} - m_TargetAssemblyTypeName: UnityEngine.Renderer, UnityEngine - m_MethodName: set_material - m_Mode: 2 - m_Arguments: - m_ObjectArgument: {fileID: 5561349426305759274, guid: 63e02ddb08ce42da868504e1333d48ae, type: 3} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Material, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 - - m_Target: {fileID: 1880968183} - m_TargetAssemblyTypeName: UnityEngine.GameObject, UnityEngine - m_MethodName: SetActive - m_Mode: 6 - 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 - m_HoverEntered: - m_PersistentCalls: - m_Calls: [] - m_HoverExited: - m_PersistentCalls: - m_Calls: [] - m_FirstSelectEntered: - m_PersistentCalls: - m_Calls: [] - m_LastSelectExited: - m_PersistentCalls: - m_Calls: [] - m_SelectEntered: - m_PersistentCalls: - m_Calls: [] - m_SelectExited: - m_PersistentCalls: - m_Calls: [] - m_FirstFocusEntered: - m_PersistentCalls: - m_Calls: [] - m_LastFocusExited: - m_PersistentCalls: - m_Calls: [] - m_FocusEntered: - m_PersistentCalls: - m_Calls: [] - m_FocusExited: - m_PersistentCalls: - m_Calls: [] - m_Activated: - m_PersistentCalls: - m_Calls: [] - m_Deactivated: - m_PersistentCalls: - m_Calls: [] - m_StartingHoverFilters: [] - m_StartingSelectFilters: [] - m_StartingInteractionStrengthFilters: [] - m_OnFirstHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnLastHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectEntered: - m_PersistentCalls: - m_Calls: [] - m_OnSelectExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectCanceled: - m_PersistentCalls: - m_Calls: [] - m_OnActivate: - m_PersistentCalls: - m_Calls: [] - m_OnDeactivate: - m_PersistentCalls: - m_Calls: [] ---- !u!1 &7733875955549809299 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4943412722798158840} - - component: {fileID: 4726882083590108925} - - component: {fileID: 8990637461805051066} - - component: {fileID: 7733875955549809300} - - component: {fileID: 2719188129144207001} - m_Layer: 0 - m_Name: Gaze Select/Deselect Simple Interactable - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!135 &7733875955549809300 -SphereCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7733875955549809299} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Radius: 0.5 - m_Center: {x: 0, y: 0, z: 0} ---- !u!1 &7733875956082356047 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4943412724412835364} - - component: {fileID: 4726882081983558433} - - component: {fileID: 8990637463419988326} - - component: {fileID: 1139231440288762857} - - component: {fileID: 2719188128611660613} - m_Layer: 0 - m_Name: Gaze Assisted Simple Interactable - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &8990637461805051066 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7733875955549809299} - 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: 5561349426305759274, guid: 63e02ddb08ce42da868504e1333d48ae, type: 3} - 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!23 &8990637463419988326 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7733875956082356047} - 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: 5561349426305759274, guid: 63e02ddb08ce42da868504e1333d48ae, type: 3} - 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 &9108292829394508247 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 196977306215183537} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 24 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 2 - m_MaxSize: 40 - m_Alignment: 4 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: Grab Interactable Objects diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/AffordanceThemes/InteractionColorAffordanceTheme.asset b/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/AffordanceThemes/InteractionColorAffordanceTheme.asset deleted file mode 100644 index 788c4471..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/AffordanceThemes/InteractionColorAffordanceTheme.asset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6653db802ddc18d5141074872dd16d45cb21f344b3b699de736bf58ef1dc4264 -size 2632 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Editor/Scripts/StarterAssetsSampleProjectValidation.cs b/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Editor/Scripts/StarterAssetsSampleProjectValidation.cs deleted file mode 100644 index fa427410..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Editor/Scripts/StarterAssetsSampleProjectValidation.cs +++ /dev/null @@ -1,76 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using Unity.XR.CoreUtils.Editor; -using UnityEngine.XR.Interaction.Toolkit; - -namespace UnityEditor.XR.Interaction.Toolkit.Samples -{ - /// - /// Unity Editor class which registers Project Validation rules for the Starter Assets sample package. - /// - class StarterAssetsSampleProjectValidation - { - const string k_Category = "XR Interaction Toolkit"; - const string k_StarterAssetsSampleName = "Starter Assets"; - const string k_TeleportLayerName = "Teleport"; - const int k_TeleportLayerIndex = 31; - - static readonly BuildTargetGroup[] s_BuildTargetGroups = - ((BuildTargetGroup[])Enum.GetValues(typeof(BuildTargetGroup))).Distinct().ToArray(); - - static readonly List s_BuildValidationRules = new List(); - - [InitializeOnLoadMethod] - static void RegisterProjectValidationRules() - { - // In the Player Settings UI we have to delay the call one frame to let the settings provider get initialized - // since we need to access the settings asset to set the rule's non-delegate properties (FixItAutomatic). - EditorApplication.delayCall += AddRules; - } - - static void AddRules() - { - if (s_BuildValidationRules.Count == 0) - { - s_BuildValidationRules.Add( - new BuildValidationRule - { - Category = k_Category, - Message = $"[{k_StarterAssetsSampleName}] Interaction Layer {k_TeleportLayerIndex} should be set to '{k_TeleportLayerName}' for teleportation locomotion.", - FixItMessage = $"XR Interaction Toolkit samples reserve Interaction Layer {k_TeleportLayerIndex} for teleportation locomotion. Set Interaction Layer {k_TeleportLayerIndex} to '{k_TeleportLayerName}' to prevent conflicts.", - HelpText = "Please note Interaction Layers are unique to the XR Interaction Toolkit and can be found in Edit > Project Settings > XR Plug-in Management > XR Interaction Toolkit", - FixItAutomatic = InteractionLayerSettings.Instance.IsLayerEmpty(k_TeleportLayerIndex) || IsInteractionLayerTeleport(), - Error = false, - CheckPredicate = IsInteractionLayerTeleport, - FixIt = () => - { - if (InteractionLayerSettings.Instance.IsLayerEmpty(k_TeleportLayerIndex) || DisplayTeleportDialog()) - InteractionLayerSettings.Instance.SetLayerNameAt(k_TeleportLayerIndex, k_TeleportLayerName); - else - SettingsService.OpenProjectSettings(XRInteractionToolkitSettingsProvider.k_SettingsPath); - }, - }); - } - - foreach (var buildTargetGroup in s_BuildTargetGroups) - { - BuildValidator.AddRules(buildTargetGroup, s_BuildValidationRules); - } - } - - static bool IsInteractionLayerTeleport() - { - return string.Equals(InteractionLayerSettings.Instance.GetLayerNameAt(k_TeleportLayerIndex), k_TeleportLayerName, StringComparison.OrdinalIgnoreCase); - } - - static bool DisplayTeleportDialog() - { - return EditorUtility.DisplayDialog( - "Fixing Teleport Interaction Layer", - $"Interaction Layer {k_TeleportLayerIndex} for teleportation locomotion is currently set to '{InteractionLayerSettings.Instance.GetLayerNameAt(k_TeleportLayerIndex)}' instead of '{k_TeleportLayerName}'", - "Automatically Replace", - "Cancel"); - } - } -} \ No newline at end of file diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Models/XRControllerLeft.fbx b/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Models/XRControllerLeft.fbx deleted file mode 100644 index 60b81f37..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Models/XRControllerLeft.fbx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:15a3a6081895394ba55b5564a8c96e0d6134c9d57e030ef24acd7d5ec2e215fc -size 214016 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Models/XRControllerRight.fbx b/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Models/XRControllerRight.fbx deleted file mode 100644 index 2c3efed3..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Models/XRControllerRight.fbx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ad3f6aa2f60a8ba72d2d5d3ced96399922da6fe7c65c31acb374ae9e2acabaed -size 422656 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Interactors/Direct Interactor.prefab b/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Interactors/Direct Interactor.prefab deleted file mode 100644 index c994d2bf..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Interactors/Direct Interactor.prefab +++ /dev/null @@ -1,138 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &8841706926471734270 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6189354538098044173} - - component: {fileID: 664489801923019586} - - component: {fileID: 6059725000919627127} - m_Layer: 0 - m_Name: Direct Interactor - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &6189354538098044173 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8841706926471734270} - 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!114 &664489801923019586 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8841706926471734270} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4253f32900bcc4d499d675566142ded0, type: 3} - m_Name: - m_EditorClassIdentifier: - m_InteractionManager: {fileID: 0} - m_InteractionLayerMask: - serializedVersion: 2 - m_Bits: 23 - m_InteractionLayers: - m_Bits: 1 - m_AttachTransform: {fileID: 0} - m_KeepSelectedTargetValid: 1 - m_DisableVisualsWhenBlockedInGroup: 1 - m_StartingSelectedInteractable: {fileID: 0} - m_StartingTargetFilter: {fileID: 0} - m_HoverEntered: - m_PersistentCalls: - m_Calls: [] - m_HoverExited: - m_PersistentCalls: - m_Calls: [] - m_SelectEntered: - m_PersistentCalls: - m_Calls: [] - m_SelectExited: - m_PersistentCalls: - m_Calls: [] - m_StartingHoverFilters: [] - m_StartingSelectFilters: [] - m_OnHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectEntered: - m_PersistentCalls: - m_Calls: [] - m_OnSelectExited: - m_PersistentCalls: - m_Calls: [] - m_SelectActionTrigger: 1 - m_HideControllerOnSelect: 0 - m_AllowHoveredActivate: 0 - m_TargetPriorityMode: 0 - m_PlayAudioClipOnSelectEntered: 0 - m_AudioClipForOnSelectEntered: {fileID: 0} - m_PlayAudioClipOnSelectExited: 0 - m_AudioClipForOnSelectExited: {fileID: 0} - m_PlayAudioClipOnSelectCanceled: 0 - m_AudioClipForOnSelectCanceled: {fileID: 0} - m_PlayAudioClipOnHoverEntered: 0 - m_AudioClipForOnHoverEntered: {fileID: 0} - m_PlayAudioClipOnHoverExited: 0 - m_AudioClipForOnHoverExited: {fileID: 0} - m_PlayAudioClipOnHoverCanceled: 0 - m_AudioClipForOnHoverCanceled: {fileID: 0} - m_AllowHoverAudioWhileSelecting: 0 - m_PlayHapticsOnSelectEntered: 1 - m_HapticSelectEnterIntensity: 0.5 - m_HapticSelectEnterDuration: 0.1 - m_PlayHapticsOnSelectExited: 1 - m_HapticSelectExitIntensity: 0.5 - m_HapticSelectExitDuration: 0.1 - m_PlayHapticsOnSelectCanceled: 0 - m_HapticSelectCancelIntensity: 0 - m_HapticSelectCancelDuration: 0 - m_PlayHapticsOnHoverEntered: 1 - m_HapticHoverEnterIntensity: 0.25 - m_HapticHoverEnterDuration: 0.1 - m_PlayHapticsOnHoverExited: 1 - m_HapticHoverExitIntensity: 0.25 - m_HapticHoverExitDuration: 0.1 - m_PlayHapticsOnHoverCanceled: 0 - m_HapticHoverCancelIntensity: 0 - m_HapticHoverCancelDuration: 0 - m_AllowHoverHapticsWhileSelecting: 0 - m_ImproveAccuracyWithSphereCollider: 1 - m_PhysicsLayerMask: - serializedVersion: 2 - m_Bits: 1 - m_PhysicsTriggerInteraction: 1 ---- !u!135 &6059725000919627127 -SphereCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8841706926471734270} - m_Material: {fileID: 0} - m_IsTrigger: 1 - m_Enabled: 1 - serializedVersion: 2 - m_Radius: 0.1 - m_Center: {x: 0, y: 0, z: 0} diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Interactors/Poke Interactor.prefab b/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Interactors/Poke Interactor.prefab deleted file mode 100644 index 617ac459..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Interactors/Poke Interactor.prefab +++ /dev/null @@ -1,269 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &1096232077998711156 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8259524632637961923} - - component: {fileID: 5061549556326891251} - - component: {fileID: 1925769544920504264} - m_Layer: 0 - m_Name: Poke Point - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &8259524632637961923 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1096232077998711156} - m_LocalRotation: {x: 0.043619405, y: 0, z: 0, w: 0.9990483} - m_LocalPosition: {x: 0, y: -0.01, z: 0.025} - m_LocalScale: {x: 0.01, y: 0.01, z: 0.01} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 3652727254930583670} - m_Father: {fileID: 780270278251679399} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 5, y: 0, z: 0} ---- !u!33 &5061549556326891251 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1096232077998711156} - m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &1925769544920504264 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1096232077998711156} - 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: 670224309865224971, guid: 11cd62256b1d470f922b2c8e6446cc77, type: 3} - 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 &4125421792874400280 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 780270278251679399} - - component: {fileID: 2417358720014700305} - m_Layer: 0 - m_Name: Poke Interactor - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &780270278251679399 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4125421792874400280} - 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: 8259524632637961923} - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &2417358720014700305 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4125421792874400280} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 0924bcaa9eb50df458a783ae0e2b59f5, type: 3} - m_Name: - m_EditorClassIdentifier: - m_InteractionManager: {fileID: 0} - m_InteractionLayerMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_InteractionLayers: - m_Bits: 4294967295 - m_AttachTransform: {fileID: 8259524632637961923} - m_KeepSelectedTargetValid: 1 - m_DisableVisualsWhenBlockedInGroup: 1 - m_StartingSelectedInteractable: {fileID: 0} - m_StartingTargetFilter: {fileID: 0} - m_HoverEntered: - m_PersistentCalls: - m_Calls: [] - m_HoverExited: - m_PersistentCalls: - m_Calls: [] - m_SelectEntered: - m_PersistentCalls: - m_Calls: [] - m_SelectExited: - m_PersistentCalls: - m_Calls: [] - m_StartingHoverFilters: [] - m_StartingSelectFilters: [] - m_OnHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectEntered: - m_PersistentCalls: - m_Calls: [] - m_OnSelectExited: - m_PersistentCalls: - m_Calls: [] - m_PokeDepth: 0.1 - m_PokeWidth: 0.0075 - m_PokeSelectWidth: 0.015 - m_PokeHoverRadius: 0.015 - m_PokeInteractionOffset: 0.005 - m_PhysicsLayerMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_PhysicsTriggerInteraction: 1 - m_RequirePokeFilter: 1 - m_EnableUIInteraction: 1 - m_DebugVisualizationsEnabled: 0 - m_UIHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_UIHoverExited: - m_PersistentCalls: - m_Calls: [] ---- !u!1 &7700498066419981941 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3652727254930583670} - - component: {fileID: 6633174523433423063} - - component: {fileID: 8692027818177823645} - m_Layer: 0 - m_Name: Cylinder - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &3652727254930583670 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7700498066419981941} - m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} - m_LocalPosition: {x: 0, y: -0.1, z: -4} - m_LocalScale: {x: 0.5, y: 3.6, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 8259524632637961923} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} ---- !u!33 &6633174523433423063 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7700498066419981941} - m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &8692027818177823645 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7700498066419981941} - 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: 5561349426305759274, guid: 9e1dc1c14313460d872de39e35129b39, type: 3} - 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} diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Teleport/Directional Teleport Reticle.prefab b/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Teleport/Directional Teleport Reticle.prefab deleted file mode 100644 index 21191aff..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Teleport/Directional Teleport Reticle.prefab +++ /dev/null @@ -1,183 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &8748868027195207512 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8568544637412148623} - m_Layer: 0 - m_Name: Directional Teleport Reticle - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &8568544637412148623 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8748868027195207512} - 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: 7034613628462190461} - - {fileID: 8604691383457356503} - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1001 &7355872082156136598 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 8568544637412148623} - m_Modifications: - - target: {fileID: -8679921383154817045, guid: be2911572dc3afa448d24b4e97edc5f1, type: 3} - propertyPath: m_RootOrder - value: 0 - objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: be2911572dc3afa448d24b4e97edc5f1, type: 3} - propertyPath: m_LocalScale.x - value: 0.50000024 - objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: be2911572dc3afa448d24b4e97edc5f1, type: 3} - propertyPath: m_LocalScale.y - value: 0.5000001 - objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: be2911572dc3afa448d24b4e97edc5f1, type: 3} - propertyPath: m_LocalScale.z - value: 0.24999999 - objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: be2911572dc3afa448d24b4e97edc5f1, type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: be2911572dc3afa448d24b4e97edc5f1, type: 3} - propertyPath: m_LocalPosition.y - value: 0.01999997 - objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: be2911572dc3afa448d24b4e97edc5f1, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: be2911572dc3afa448d24b4e97edc5f1, type: 3} - propertyPath: m_LocalRotation.w - value: 0.7071068 - objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: be2911572dc3afa448d24b4e97edc5f1, type: 3} - propertyPath: m_LocalRotation.x - value: 0.7071068 - objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: be2911572dc3afa448d24b4e97edc5f1, type: 3} - propertyPath: m_LocalRotation.y - value: -0 - objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: be2911572dc3afa448d24b4e97edc5f1, type: 3} - propertyPath: m_LocalRotation.z - value: -0 - objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: be2911572dc3afa448d24b4e97edc5f1, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 90 - objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: be2911572dc3afa448d24b4e97edc5f1, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: be2911572dc3afa448d24b4e97edc5f1, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 919132149155446097, guid: be2911572dc3afa448d24b4e97edc5f1, type: 3} - propertyPath: m_Name - value: Reticle_Torus - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: be2911572dc3afa448d24b4e97edc5f1, type: 3} ---- !u!4 &7034613628462190461 stripped -Transform: - m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: be2911572dc3afa448d24b4e97edc5f1, type: 3} - m_PrefabInstance: {fileID: 7355872082156136598} - m_PrefabAsset: {fileID: 0} ---- !u!1001 &8133703530275568956 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 8568544637412148623} - m_Modifications: - - target: {fileID: -8679921383154817045, guid: ab3a79eba4de4be0ad5fead9fb858190, type: 3} - propertyPath: m_RootOrder - value: 1 - objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: ab3a79eba4de4be0ad5fead9fb858190, type: 3} - propertyPath: m_LocalScale.x - value: 0.25 - objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: ab3a79eba4de4be0ad5fead9fb858190, type: 3} - propertyPath: m_LocalScale.y - value: 0.25 - objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: ab3a79eba4de4be0ad5fead9fb858190, type: 3} - propertyPath: m_LocalScale.z - value: 0.15 - objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: ab3a79eba4de4be0ad5fead9fb858190, type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: ab3a79eba4de4be0ad5fead9fb858190, type: 3} - propertyPath: m_LocalPosition.y - value: 0.02 - objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: ab3a79eba4de4be0ad5fead9fb858190, type: 3} - propertyPath: m_LocalPosition.z - value: 0.4 - objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: ab3a79eba4de4be0ad5fead9fb858190, type: 3} - propertyPath: m_LocalRotation.w - value: -0.27059805 - objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: ab3a79eba4de4be0ad5fead9fb858190, type: 3} - propertyPath: m_LocalRotation.x - value: -0.27059805 - objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: ab3a79eba4de4be0ad5fead9fb858190, type: 3} - propertyPath: m_LocalRotation.y - value: 0.6532815 - objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: ab3a79eba4de4be0ad5fead9fb858190, type: 3} - propertyPath: m_LocalRotation.z - value: -0.6532815 - objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: ab3a79eba4de4be0ad5fead9fb858190, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 90 - objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: ab3a79eba4de4be0ad5fead9fb858190, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 180 - objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: ab3a79eba4de4be0ad5fead9fb858190, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: -45 - objectReference: {fileID: 0} - - target: {fileID: 919132149155446097, guid: ab3a79eba4de4be0ad5fead9fb858190, type: 3} - propertyPath: m_Name - value: Primitive_Wedge - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: ab3a79eba4de4be0ad5fead9fb858190, type: 3} ---- !u!4 &8604691383457356503 stripped -Transform: - m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: ab3a79eba4de4be0ad5fead9fb858190, type: 3} - m_PrefabInstance: {fileID: 8133703530275568956} - m_PrefabAsset: {fileID: 0} diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/XR Interaction Setup.prefab b/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/XR Interaction Setup.prefab deleted file mode 100644 index cfc174cb..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/XR Interaction Setup.prefab +++ /dev/null @@ -1,559 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &3127728406573987378 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3127728406573987373} - - component: {fileID: 3127728406573987372} - - component: {fileID: 3127728406573987374} - m_Layer: 0 - m_Name: EventSystem - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &3127728406573987373 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3127728406573987378} - 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: 4134505312059479865} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &3127728406573987372 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3127728406573987378} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} - m_Name: - m_EditorClassIdentifier: - m_FirstSelected: {fileID: 0} - m_sendNavigationEvents: 1 - m_DragThreshold: 10 ---- !u!114 &3127728406573987374 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3127728406573987378} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: ab68ce6587aab0146b8dabefbd806791, type: 3} - m_Name: - m_EditorClassIdentifier: - m_SendPointerHoverToParent: 1 - m_ClickSpeed: 0.3 - m_MoveDeadzone: 0.6 - m_RepeatDelay: 0.5 - m_RepeatRate: 0.1 - m_TrackedDeviceDragThresholdMultiplier: 2 - m_TrackedScrollDeltaMultiplier: 5 - m_ActiveInputMode: 1 - m_MaxTrackedDeviceRaycastDistance: 1000 - m_EnableXRInput: 1 - m_EnableMouseInput: 1 - m_EnableTouchInput: 1 - m_PointAction: {fileID: 2869410428622933342, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_LeftClickAction: {fileID: 1855836014308820768, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_MiddleClickAction: {fileID: -6289560987278519447, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_RightClickAction: {fileID: -2562941478296515153, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_ScrollWheelAction: {fileID: 5825226938762934180, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_NavigateAction: {fileID: -7967456002180160679, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_SubmitAction: {fileID: 3994978066732806534, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_CancelAction: {fileID: 2387711382375263438, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_EnableBuiltinActionsAsFallback: 1 - m_EnableGamepadInput: 1 - m_EnableJoystickInput: 1 - m_HorizontalAxis: Horizontal - m_VerticalAxis: Vertical - m_SubmitButton: Submit - m_CancelButton: Cancel ---- !u!1 &3127728407087826087 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3127728407087826081} - - component: {fileID: 3127728407087826080} - m_Layer: 0 - m_Name: XR Interaction Manager - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &3127728407087826081 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3127728407087826087} - 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: 4134505312059479865} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &3127728407087826080 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3127728407087826087} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 83e4e6cca11330d4088d729ab4fc9d9f, type: 3} - m_Name: - m_EditorClassIdentifier: - m_StartingHoverFilters: [] - m_StartingSelectFilters: [] ---- !u!1 &3127728408163665756 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3127728408163665758} - - component: {fileID: 3127728408163665757} - m_Layer: 0 - m_Name: Input Action Manager - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &3127728408163665758 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3127728408163665756} - 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: 4134505312059479865} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &3127728408163665757 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3127728408163665756} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 017c5e3933235514c9520e1dace2a4b2, type: 3} - m_Name: - m_EditorClassIdentifier: - m_ActionAssets: - - {fileID: -944628639613478452, guid: c348712bda248c246b8c49b3db54643f, type: 3} ---- !u!1 &7313654230448209575 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4134505312059479865} - m_Layer: 0 - m_Name: XR Interaction Setup - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4134505312059479865 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7313654230448209575} - 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: 3127728408163665758} - - {fileID: 3127728407087826081} - - {fileID: 3127728406573987373} - - {fileID: 7696548424635294051} - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1001 &2181405618368934381 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 9014170783809206335} - m_Modifications: - - target: {fileID: 8429981633443581377, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_Name - value: TunnelingVignette - objectReference: {fileID: 0} - - target: {fileID: 8429981633443581382, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_RootOrder - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8429981633443581382, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8429981633443581382, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8429981633443581382, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8429981633443581382, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 8429981633443581382, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8429981633443581382, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8429981633443581382, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8429981633443581382, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8429981633443581382, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8429981633443581382, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocomotionVignetteProviders.Array.size - value: 5 - objectReference: {fileID: 0} - - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocomotionVignetteProviders.Array.data[0].m_Enabled - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocomotionVignetteProviders.Array.data[1].m_Enabled - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocomotionVignetteProviders.Array.data[2].m_Enabled - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocomotionVignetteProviders.Array.data[3].m_Enabled - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocomotionVignetteProviders.Array.data[4].m_Enabled - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocomotionVignetteProviders.Array.data[0].m_LocomotionProvider - value: - objectReference: {fileID: 2728902658200667494} - - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocomotionVignetteProviders.Array.data[1].m_LocomotionProvider - value: - objectReference: {fileID: 9168142743249570444} - - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocomotionVignetteProviders.Array.data[2].m_LocomotionProvider - value: - objectReference: {fileID: 7002313976673130572} - - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocomotionVignetteProviders.Array.data[3].m_LocomotionProvider - value: - objectReference: {fileID: 7303196168416792226} - - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocomotionVignetteProviders.Array.data[4].m_LocomotionProvider - value: - objectReference: {fileID: 3656114934633903323} - - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocomotionVignetteProviders.Array.data[0].m_OverrideParameters.m_EaseInTime - value: 0.3 - objectReference: {fileID: 0} - - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocomotionVignetteProviders.Array.data[1].m_OverrideParameters.m_EaseInTime - value: 0.3 - objectReference: {fileID: 0} - - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocomotionVignetteProviders.Array.data[2].m_OverrideParameters.m_EaseInTime - value: 0.3 - objectReference: {fileID: 0} - - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocomotionVignetteProviders.Array.data[3].m_OverrideParameters.m_EaseInTime - value: 0.3 - objectReference: {fileID: 0} - - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocomotionVignetteProviders.Array.data[4].m_OverrideParameters.m_EaseInTime - value: 0.3 - objectReference: {fileID: 0} - - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocomotionVignetteProviders.Array.data[0].m_OverrideParameters.m_EaseOutTime - value: 0.3 - objectReference: {fileID: 0} - - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocomotionVignetteProviders.Array.data[1].m_OverrideParameters.m_EaseOutTime - value: 0.3 - objectReference: {fileID: 0} - - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocomotionVignetteProviders.Array.data[2].m_OverrideParameters.m_EaseOutTime - value: 0.3 - objectReference: {fileID: 0} - - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocomotionVignetteProviders.Array.data[3].m_OverrideParameters.m_EaseOutTime - value: 0.3 - objectReference: {fileID: 0} - - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocomotionVignetteProviders.Array.data[4].m_OverrideParameters.m_EaseOutTime - value: 0.3 - objectReference: {fileID: 0} - - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocomotionVignetteProviders.Array.data[0].m_OverrideParameters.m_ApertureSize - value: 0.7 - objectReference: {fileID: 0} - - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocomotionVignetteProviders.Array.data[1].m_OverrideParameters.m_ApertureSize - value: 0.7 - objectReference: {fileID: 0} - - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocomotionVignetteProviders.Array.data[2].m_OverrideParameters.m_ApertureSize - value: 0.7 - objectReference: {fileID: 0} - - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocomotionVignetteProviders.Array.data[3].m_OverrideParameters.m_ApertureSize - value: 0.7 - objectReference: {fileID: 0} - - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocomotionVignetteProviders.Array.data[4].m_OverrideParameters.m_ApertureSize - value: 0.7 - objectReference: {fileID: 0} - - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocomotionVignetteProviders.Array.data[0].m_OverrideParameters.m_VignetteColor.a - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocomotionVignetteProviders.Array.data[1].m_OverrideParameters.m_VignetteColor.a - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocomotionVignetteProviders.Array.data[2].m_OverrideParameters.m_VignetteColor.a - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocomotionVignetteProviders.Array.data[3].m_OverrideParameters.m_VignetteColor.a - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocomotionVignetteProviders.Array.data[4].m_OverrideParameters.m_VignetteColor.a - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocomotionVignetteProviders.Array.data[0].m_OverrideParameters.m_FeatheringEffect - value: 0.2 - objectReference: {fileID: 0} - - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocomotionVignetteProviders.Array.data[1].m_OverrideParameters.m_FeatheringEffect - value: 0.2 - objectReference: {fileID: 0} - - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocomotionVignetteProviders.Array.data[2].m_OverrideParameters.m_FeatheringEffect - value: 0.2 - objectReference: {fileID: 0} - - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocomotionVignetteProviders.Array.data[3].m_OverrideParameters.m_FeatheringEffect - value: 0.2 - objectReference: {fileID: 0} - - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocomotionVignetteProviders.Array.data[4].m_OverrideParameters.m_FeatheringEffect - value: 0.2 - objectReference: {fileID: 0} - - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocomotionVignetteProviders.Array.data[0].m_OverrideParameters.m_VignetteColorBlend.a - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocomotionVignetteProviders.Array.data[1].m_OverrideParameters.m_VignetteColorBlend.a - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocomotionVignetteProviders.Array.data[2].m_OverrideParameters.m_VignetteColorBlend.a - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocomotionVignetteProviders.Array.data[3].m_OverrideParameters.m_VignetteColorBlend.a - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} - propertyPath: m_LocomotionVignetteProviders.Array.data[4].m_OverrideParameters.m_VignetteColorBlend.a - value: 1 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} ---- !u!1001 &9014170785273859917 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 4134505312059479865} - m_Modifications: - - target: {fileID: 1717954561962503725, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} - propertyPath: m_Name - value: XR Origin (XR Rig) - objectReference: {fileID: 0} - - target: {fileID: 1717954561962503726, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} - propertyPath: m_RootOrder - value: 3 - objectReference: {fileID: 0} - - target: {fileID: 1717954561962503726, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1717954561962503726, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1717954561962503726, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1717954561962503726, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 1717954561962503726, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1717954561962503726, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1717954561962503726, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1717954561962503726, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1717954561962503726, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1717954561962503726, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} ---- !u!114 &2728902658200667494 stripped -MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 6397299583031462443, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} - m_PrefabInstance: {fileID: 9014170785273859917} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 2213c36610e3b1c4bbf886810ed9db12, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!114 &3656114934633903323 stripped -MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 5739245880472075158, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} - m_PrefabInstance: {fileID: 9014170785273859917} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 496880615cd240be960d436c1c8ae570, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!114 &7002313976673130572 stripped -MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 2032798983271290625, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} - m_PrefabInstance: {fileID: 9014170785273859917} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 8b94c4c83dec6a94fbaebf543478259e, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!114 &7303196168416792226 stripped -MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 1748222016861356527, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} - m_PrefabInstance: {fileID: 9014170785273859917} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 01f69dc1cb084aa42b2f2f8cd87bc770, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!4 &7696548424635294051 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 1717954561962503726, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} - m_PrefabInstance: {fileID: 9014170785273859917} - m_PrefabAsset: {fileID: 0} ---- !u!4 &9014170783809206335 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 1767192434, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} - m_PrefabInstance: {fileID: 9014170785273859917} - m_PrefabAsset: {fileID: 0} ---- !u!114 &9168142743249570444 stripped -MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 153982007679157697, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} - m_PrefabInstance: {fileID: 9014170785273859917} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 9b1e8c997df241c1a67045eeac79b41b, type: 3} - m_Name: - m_EditorClassIdentifier: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Continuous Move.preset.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Continuous Move.preset.meta deleted file mode 100644 index 6ec78be4..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Continuous Move.preset.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 91f9da00cfdac5d49955df2d2d820b9c -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Continuous Turn.preset b/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Continuous Turn.preset deleted file mode 100644 index 3badcea7..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Continuous Turn.preset +++ /dev/null @@ -1,115 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!181963792 &2655988077585873504 -Preset: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: XRI Default Continuous Turn - m_TargetType: - m_NativeTypeID: 114 - m_ManagedTypePPtr: {fileID: 11500000, guid: 919e39492806b334982b6b84c90dd927, type: 3} - m_ManagedTypeFallback: - m_Properties: - - target: {fileID: 0} - propertyPath: m_Enabled - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_EditorHideFlags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_EditorClassIdentifier - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_System - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TurnSpeed - value: 60 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_LeftHandTurnAction.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_LeftHandTurnAction.m_Action.m_Name - value: Left Hand Turn - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_LeftHandTurnAction.m_Action.m_Type - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_LeftHandTurnAction.m_Action.m_ExpectedControlType - value: Vector2 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_LeftHandTurnAction.m_Action.m_Id - value: b9ac2485-f305-451c-9106-d1d25cc235dc - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_LeftHandTurnAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_LeftHandTurnAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_LeftHandTurnAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_LeftHandTurnAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_LeftHandTurnAction.m_Reference - value: - objectReference: {fileID: 1010738217276881514, guid: c348712bda248c246b8c49b3db54643f, type: 3} - - target: {fileID: 0} - propertyPath: m_RightHandTurnAction.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RightHandTurnAction.m_Action.m_Name - value: Right Hand Turn - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RightHandTurnAction.m_Action.m_Type - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RightHandTurnAction.m_Action.m_ExpectedControlType - value: Vector2 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RightHandTurnAction.m_Action.m_Id - value: 93119ec4-ae3b-41c0-8fb4-7ff4c5e6f732 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RightHandTurnAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RightHandTurnAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RightHandTurnAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RightHandTurnAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RightHandTurnAction.m_Reference - value: - objectReference: {fileID: -6493913391331992944, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_ExcludedProperties: [] diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Continuous Turn.preset.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Continuous Turn.preset.meta deleted file mode 100644 index a7e16263..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Continuous Turn.preset.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 0caad3af14f9a414dbdf25ed41e5aa47 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Gaze Controller.preset b/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Gaze Controller.preset deleted file mode 100644 index 975cede3..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Gaze Controller.preset +++ /dev/null @@ -1,747 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!181963792 &2655988077585873504 -Preset: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: XRI Default Gaze Controller - m_TargetType: - m_NativeTypeID: 114 - m_ManagedTypePPtr: {fileID: 11500000, guid: caff514de9b15ad48ab85dcff5508221, type: 3} - m_ManagedTypeFallback: - m_Properties: - - target: {fileID: 0} - propertyPath: m_Enabled - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_EditorHideFlags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_EditorClassIdentifier - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UpdateTrackingType - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_EnableInputTracking - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_EnableInputActions - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ModelPrefab - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ModelParent - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_Model - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_AnimateModel - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ModelSelectTransition - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ModelDeSelectTransition - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PositionAction.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PositionAction.m_Action.m_Name - value: Position - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PositionAction.m_Action.m_Type - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PositionAction.m_Action.m_ExpectedControlType - value: Vector3 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PositionAction.m_Action.m_Id - value: c5c11aa1-bde1-4a3a-a80e-886509abbc16 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PositionAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PositionAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PositionAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PositionAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PositionAction.m_Reference - value: - objectReference: {fileID: 3220680263695665919, guid: c348712bda248c246b8c49b3db54643f, type: 3} - - target: {fileID: 0} - propertyPath: m_RotationAction.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotationAction.m_Action.m_Name - value: Rotation - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotationAction.m_Action.m_Type - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotationAction.m_Action.m_ExpectedControlType - value: Quaternion - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotationAction.m_Action.m_Id - value: 49d34eac-625a-45e4-99f1-520d9a91587d - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotationAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotationAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotationAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotationAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotationAction.m_Reference - value: - objectReference: {fileID: -5930349909990434036, guid: c348712bda248c246b8c49b3db54643f, type: 3} - - target: {fileID: 0} - propertyPath: m_IsTrackedAction.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_IsTrackedAction.m_Action.m_Name - value: Is Tracked - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_IsTrackedAction.m_Action.m_Type - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_IsTrackedAction.m_Action.m_ExpectedControlType - value: Button - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_IsTrackedAction.m_Action.m_Id - value: 5c0d8bf3-8c9a-43da-89cf-8d09230caf0e - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_IsTrackedAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_IsTrackedAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_IsTrackedAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_IsTrackedAction.m_Action.m_Flags - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_IsTrackedAction.m_Reference - value: - objectReference: {fileID: -831106814531524825, guid: c348712bda248c246b8c49b3db54643f, type: 3} - - target: {fileID: 0} - propertyPath: m_TrackingStateAction.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TrackingStateAction.m_Action.m_Name - value: Tracking State - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TrackingStateAction.m_Action.m_Type - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TrackingStateAction.m_Action.m_ExpectedControlType - value: Integer - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TrackingStateAction.m_Action.m_Id - value: 776eea05-891d-47cc-ba9d-8353541bbc61 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TrackingStateAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TrackingStateAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TrackingStateAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TrackingStateAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TrackingStateAction.m_Reference - value: - objectReference: {fileID: 2069149553511882089, guid: c348712bda248c246b8c49b3db54643f, type: 3} - - target: {fileID: 0} - propertyPath: m_SelectAction.m_UseReference - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectAction.m_Action.m_Name - value: Select - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectAction.m_Action.m_Type - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectAction.m_Action.m_ExpectedControlType - value: Button - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectAction.m_Action.m_Id - value: d90b6a89-0f2d-4711-b5e3-6f709d46a3e9 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectAction.m_Reference - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectActionValue.m_UseReference - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectActionValue.m_Action.m_Name - value: Select Action Value - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectActionValue.m_Action.m_Type - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectActionValue.m_Action.m_ExpectedControlType - value: Axis - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectActionValue.m_Action.m_Id - value: 982fe616-81e7-4cea-8b1c-0fc18677699d - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectActionValue.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectActionValue.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectActionValue.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectActionValue.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectActionValue.m_Reference - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateAction.m_UseReference - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateAction.m_Action.m_Name - value: Activate - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateAction.m_Action.m_Type - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateAction.m_Action.m_ExpectedControlType - value: Button - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateAction.m_Action.m_Id - value: 19b691c8-8354-453a-818d-9ab6fc719aa7 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateAction.m_Reference - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateActionValue.m_UseReference - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateActionValue.m_Action.m_Name - value: Activate Action Value - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateActionValue.m_Action.m_Type - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateActionValue.m_Action.m_ExpectedControlType - value: Axis - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateActionValue.m_Action.m_Id - value: 8f68251c-035b-44ae-9665-8d736bde8dbe - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateActionValue.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateActionValue.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateActionValue.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateActionValue.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateActionValue.m_Reference - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressAction.m_UseReference - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressAction.m_Action.m_Name - value: UI Press - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressAction.m_Action.m_Type - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressAction.m_Action.m_ExpectedControlType - value: Button - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressAction.m_Action.m_Id - value: cdf9e438-d5dd-488a-b24c-92607b3cf39e - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressAction.m_Reference - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressActionValue.m_UseReference - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressActionValue.m_Action.m_Name - value: UI Press Action Value - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressActionValue.m_Action.m_Type - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressActionValue.m_Action.m_ExpectedControlType - value: Axis - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressActionValue.m_Action.m_Id - value: d4ffb96f-9b0b-4d82-93a2-b7bd82d288c9 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressActionValue.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressActionValue.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressActionValue.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressActionValue.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressActionValue.m_Reference - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIScrollAction.m_UseReference - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIScrollAction.m_Action.m_Name - value: UI Scroll - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIScrollAction.m_Action.m_Type - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIScrollAction.m_Action.m_ExpectedControlType - value: Vector2 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIScrollAction.m_Action.m_Id - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIScrollAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIScrollAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIScrollAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIScrollAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIScrollAction.m_Reference - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_HapticDeviceAction.m_UseReference - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_HapticDeviceAction.m_Action.m_Name - value: Haptic Device - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_HapticDeviceAction.m_Action.m_Type - value: 2 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_HapticDeviceAction.m_Action.m_ExpectedControlType - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_HapticDeviceAction.m_Action.m_Id - value: 9b83662a-0fd2-4aee-aae5-c6634d0fbafc - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_HapticDeviceAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_HapticDeviceAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_HapticDeviceAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_HapticDeviceAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_HapticDeviceAction.m_Reference - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotateAnchorAction.m_UseReference - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotateAnchorAction.m_Action.m_Name - value: Rotate Anchor - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotateAnchorAction.m_Action.m_Type - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotateAnchorAction.m_Action.m_ExpectedControlType - value: Vector2 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotateAnchorAction.m_Action.m_Id - value: 4cae4fad-cc16-4684-8fec-1ba47667d275 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotateAnchorAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotateAnchorAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotateAnchorAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotateAnchorAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotateAnchorAction.m_Reference - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_DirectionalAnchorRotationAction.m_UseReference - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_DirectionalAnchorRotationAction.m_Action.m_Name - value: Directional Anchor Rotation - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_DirectionalAnchorRotationAction.m_Action.m_Type - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_DirectionalAnchorRotationAction.m_Action.m_ExpectedControlType - value: Vector2 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_DirectionalAnchorRotationAction.m_Action.m_Id - value: f58ccfc7-633b-46cf-9164-6dfafd85bf99 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_DirectionalAnchorRotationAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_DirectionalAnchorRotationAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_DirectionalAnchorRotationAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_DirectionalAnchorRotationAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_DirectionalAnchorRotationAction.m_Reference - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TranslateAnchorAction.m_UseReference - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TranslateAnchorAction.m_Action.m_Name - value: Translate Anchor - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TranslateAnchorAction.m_Action.m_Type - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TranslateAnchorAction.m_Action.m_ExpectedControlType - value: Vector2 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TranslateAnchorAction.m_Action.m_Id - value: 83996765-f9ca-47e0-969e-b8fa763170db - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TranslateAnchorAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TranslateAnchorAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TranslateAnchorAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TranslateAnchorAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TranslateAnchorAction.m_Reference - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleToggleAction.m_UseReference - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleToggleAction.m_Action.m_Name - value: Scale Toggle - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleToggleAction.m_Action.m_Type - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleToggleAction.m_Action.m_ExpectedControlType - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleToggleAction.m_Action.m_Id - value: c491f7d4-d5f5-485e-8ebe-d323ea5e8eee - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleToggleAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleToggleAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleToggleAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleToggleAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleToggleAction.m_Reference - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleDeltaAction.m_UseReference - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleDeltaAction.m_Action.m_Name - value: Scale Delta - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleDeltaAction.m_Action.m_Type - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleDeltaAction.m_Action.m_ExpectedControlType - value: Vector2 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleDeltaAction.m_Action.m_Id - value: 702606e7-26dd-4ff2-8e26-59078e8cafee - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleDeltaAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleDeltaAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleDeltaAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleDeltaAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleDeltaAction.m_Reference - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ButtonPressPoint - value: 0.5 - objectReference: {fileID: 0} - m_ExcludedProperties: [] diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Left Controller.preset b/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Left Controller.preset deleted file mode 100644 index 6489b29f..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Left Controller.preset +++ /dev/null @@ -1,747 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!181963792 &2655988077585873504 -Preset: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: XRI Default Left Controller - m_TargetType: - m_NativeTypeID: 114 - m_ManagedTypePPtr: {fileID: 11500000, guid: caff514de9b15ad48ab85dcff5508221, type: 3} - m_ManagedTypeFallback: - m_Properties: - - target: {fileID: 0} - propertyPath: m_Enabled - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_EditorHideFlags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_EditorClassIdentifier - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UpdateTrackingType - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_EnableInputTracking - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_EnableInputActions - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ModelPrefab - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ModelParent - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_Model - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_AnimateModel - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ModelSelectTransition - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ModelDeSelectTransition - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PositionAction.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PositionAction.m_Action.m_Name - value: Position - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PositionAction.m_Action.m_Type - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PositionAction.m_Action.m_ExpectedControlType - value: Vector3 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PositionAction.m_Action.m_Id - value: 8b170a9b-132e-486d-947e-6a244d4362ea - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PositionAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PositionAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PositionAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PositionAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PositionAction.m_Reference - value: - objectReference: {fileID: -2024308242397127297, guid: c348712bda248c246b8c49b3db54643f, type: 3} - - target: {fileID: 0} - propertyPath: m_RotationAction.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotationAction.m_Action.m_Name - value: Rotation - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotationAction.m_Action.m_Type - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotationAction.m_Action.m_ExpectedControlType - value: Quaternion - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotationAction.m_Action.m_Id - value: 080819c2-8547-4beb-8522-e6356be16fb1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotationAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotationAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotationAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotationAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotationAction.m_Reference - value: - objectReference: {fileID: 8248158260566104461, guid: c348712bda248c246b8c49b3db54643f, type: 3} - - target: {fileID: 0} - propertyPath: m_IsTrackedAction.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_IsTrackedAction.m_Action.m_Name - value: Is Tracked - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_IsTrackedAction.m_Action.m_Type - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_IsTrackedAction.m_Action.m_ExpectedControlType - value: Button - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_IsTrackedAction.m_Action.m_Id - value: 22c1da5c-d38f-4253-a25c-fe94205f2ec5 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_IsTrackedAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_IsTrackedAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_IsTrackedAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_IsTrackedAction.m_Action.m_Flags - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_IsTrackedAction.m_Reference - value: - objectReference: {fileID: 840156964685210860, guid: c348712bda248c246b8c49b3db54643f, type: 3} - - target: {fileID: 0} - propertyPath: m_TrackingStateAction.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TrackingStateAction.m_Action.m_Name - value: Tracking State - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TrackingStateAction.m_Action.m_Type - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TrackingStateAction.m_Action.m_ExpectedControlType - value: Integer - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TrackingStateAction.m_Action.m_Id - value: f3874727-df53-4207-8cd4-6248164663d7 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TrackingStateAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TrackingStateAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TrackingStateAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TrackingStateAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TrackingStateAction.m_Reference - value: - objectReference: {fileID: 684395432459739428, guid: c348712bda248c246b8c49b3db54643f, type: 3} - - target: {fileID: 0} - propertyPath: m_SelectAction.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectAction.m_Action.m_Name - value: Select - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectAction.m_Action.m_Type - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectAction.m_Action.m_ExpectedControlType - value: Button - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectAction.m_Action.m_Id - value: 8e000d1c-13a4-4cc0-ad37-f2e125874399 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectAction.m_Reference - value: - objectReference: {fileID: -6131295136447488360, guid: c348712bda248c246b8c49b3db54643f, type: 3} - - target: {fileID: 0} - propertyPath: m_SelectActionValue.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectActionValue.m_Action.m_Name - value: Select Action Value - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectActionValue.m_Action.m_Type - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectActionValue.m_Action.m_ExpectedControlType - value: Axis - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectActionValue.m_Action.m_Id - value: e015d020-ed5c-40b6-b968-fa9881521f0e - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectActionValue.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectActionValue.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectActionValue.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectActionValue.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectActionValue.m_Reference - value: - objectReference: {fileID: 6558622148059887818, guid: c348712bda248c246b8c49b3db54643f, type: 3} - - target: {fileID: 0} - propertyPath: m_ActivateAction.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateAction.m_Action.m_Name - value: Activate - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateAction.m_Action.m_Type - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateAction.m_Action.m_ExpectedControlType - value: Button - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateAction.m_Action.m_Id - value: 3995f9f4-6aa7-409a-80d2-5f7ea1464fde - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateAction.m_Reference - value: - objectReference: {fileID: -5982496924579745919, guid: c348712bda248c246b8c49b3db54643f, type: 3} - - target: {fileID: 0} - propertyPath: m_ActivateActionValue.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateActionValue.m_Action.m_Name - value: Activate Action Value - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateActionValue.m_Action.m_Type - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateActionValue.m_Action.m_ExpectedControlType - value: Axis - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateActionValue.m_Action.m_Id - value: 492aea1c-7d58-4cb0-8e3c-257d2f651c04 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateActionValue.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateActionValue.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateActionValue.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateActionValue.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateActionValue.m_Reference - value: - objectReference: {fileID: -4289430672226363583, guid: c348712bda248c246b8c49b3db54643f, type: 3} - - target: {fileID: 0} - propertyPath: m_UIPressAction.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressAction.m_Action.m_Name - value: UI Press - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressAction.m_Action.m_Type - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressAction.m_Action.m_ExpectedControlType - value: Button - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressAction.m_Action.m_Id - value: db89d01c-df6f-4954-b868-103dd5bdb514 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressAction.m_Reference - value: - objectReference: {fileID: -6395602842196007441, guid: c348712bda248c246b8c49b3db54643f, type: 3} - - target: {fileID: 0} - propertyPath: m_UIPressActionValue.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressActionValue.m_Action.m_Name - value: UI Press Action Value - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressActionValue.m_Action.m_Type - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressActionValue.m_Action.m_ExpectedControlType - value: Axis - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressActionValue.m_Action.m_Id - value: 6258f0cd-e000-49ea-b3b6-7c930f12c390 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressActionValue.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressActionValue.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressActionValue.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressActionValue.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressActionValue.m_Reference - value: - objectReference: {fileID: 71106601250685021, guid: c348712bda248c246b8c49b3db54643f, type: 3} - - target: {fileID: 0} - propertyPath: m_UIScrollAction.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIScrollAction.m_Action.m_Name - value: UI Scroll - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIScrollAction.m_Action.m_Type - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIScrollAction.m_Action.m_ExpectedControlType - value: Vector2 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIScrollAction.m_Action.m_Id - value: b74fcfe3-d94d-4bf1-960a-364568ffe66b - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIScrollAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIScrollAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIScrollAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIScrollAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIScrollAction.m_Reference - value: - objectReference: {fileID: 2464016903823916871, guid: c348712bda248c246b8c49b3db54643f, type: 3} - - target: {fileID: 0} - propertyPath: m_HapticDeviceAction.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_HapticDeviceAction.m_Action.m_Name - value: Haptic Device - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_HapticDeviceAction.m_Action.m_Type - value: 2 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_HapticDeviceAction.m_Action.m_ExpectedControlType - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_HapticDeviceAction.m_Action.m_Id - value: 3e09b626-c80d-40ec-9592-eb3fe89c2038 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_HapticDeviceAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_HapticDeviceAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_HapticDeviceAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_HapticDeviceAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_HapticDeviceAction.m_Reference - value: - objectReference: {fileID: -8785819595477538065, guid: c348712bda248c246b8c49b3db54643f, type: 3} - - target: {fileID: 0} - propertyPath: m_RotateAnchorAction.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotateAnchorAction.m_Action.m_Name - value: Rotate Anchor - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotateAnchorAction.m_Action.m_Type - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotateAnchorAction.m_Action.m_ExpectedControlType - value: Vector2 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotateAnchorAction.m_Action.m_Id - value: 3dca8766-e652-4e78-8406-420aa73ba338 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotateAnchorAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotateAnchorAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotateAnchorAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotateAnchorAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotateAnchorAction.m_Reference - value: - objectReference: {fileID: -7363382999065477798, guid: c348712bda248c246b8c49b3db54643f, type: 3} - - target: {fileID: 0} - propertyPath: m_DirectionalAnchorRotationAction.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_DirectionalAnchorRotationAction.m_Action.m_Name - value: Directional Anchor Rotation - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_DirectionalAnchorRotationAction.m_Action.m_Type - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_DirectionalAnchorRotationAction.m_Action.m_ExpectedControlType - value: Vector2 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_DirectionalAnchorRotationAction.m_Action.m_Id - value: 7d323aae-15a7-4c32-a2b9-0653cb108725 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_DirectionalAnchorRotationAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_DirectionalAnchorRotationAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_DirectionalAnchorRotationAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_DirectionalAnchorRotationAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_DirectionalAnchorRotationAction.m_Reference - value: - objectReference: {fileID: -8811388872089202044, guid: c348712bda248c246b8c49b3db54643f, type: 3} - - target: {fileID: 0} - propertyPath: m_TranslateAnchorAction.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TranslateAnchorAction.m_Action.m_Name - value: Translate Anchor - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TranslateAnchorAction.m_Action.m_Type - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TranslateAnchorAction.m_Action.m_ExpectedControlType - value: Vector2 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TranslateAnchorAction.m_Action.m_Id - value: e873605e-6a95-4389-8fbe-39069340ba92 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TranslateAnchorAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TranslateAnchorAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TranslateAnchorAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TranslateAnchorAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TranslateAnchorAction.m_Reference - value: - objectReference: {fileID: 7779212132400271959, guid: c348712bda248c246b8c49b3db54643f, type: 3} - - target: {fileID: 0} - propertyPath: m_ScaleToggleAction.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleToggleAction.m_Action.m_Name - value: Scale Toggle - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleToggleAction.m_Action.m_Type - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleToggleAction.m_Action.m_ExpectedControlType - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleToggleAction.m_Action.m_Id - value: f154653e-fb1f-4aa0-b5a4-b7541ef2cad9 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleToggleAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleToggleAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleToggleAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleToggleAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleToggleAction.m_Reference - value: - objectReference: {fileID: -335775248641796371, guid: c348712bda248c246b8c49b3db54643f, type: 3} - - target: {fileID: 0} - propertyPath: m_ScaleDeltaAction.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleDeltaAction.m_Action.m_Name - value: Scale Delta - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleDeltaAction.m_Action.m_Type - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleDeltaAction.m_Action.m_ExpectedControlType - value: Vector2 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleDeltaAction.m_Action.m_Id - value: a45a321f-4e2e-479e-a3ab-da25a505e44e - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleDeltaAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleDeltaAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleDeltaAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleDeltaAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleDeltaAction.m_Reference - value: - objectReference: {fileID: -1636515391019944688, guid: c348712bda248c246b8c49b3db54643f, type: 3} - - target: {fileID: 0} - propertyPath: m_ButtonPressPoint - value: 0.5 - objectReference: {fileID: 0} - m_ExcludedProperties: [] diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Left Controller.preset.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Left Controller.preset.meta deleted file mode 100644 index 569f8bbc..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Left Controller.preset.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: ffd8268f7307a0c48a067dad4a8fe060 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Left Grab Move.preset b/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Left Grab Move.preset deleted file mode 100644 index 40817339..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Left Grab Move.preset +++ /dev/null @@ -1,103 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!181963792 &2655988077585873504 -Preset: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: XRI Default Left Grab Move - m_TargetType: - m_NativeTypeID: 114 - m_ManagedTypePPtr: {fileID: 11500000, guid: 8b94c4c83dec6a94fbaebf543478259e, type: 3} - m_ManagedTypeFallback: - m_Properties: - - target: {fileID: 0} - propertyPath: m_Enabled - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_EditorHideFlags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_EditorClassIdentifier - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_System - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_EnableFreeXMovement - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_EnableFreeYMovement - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_EnableFreeZMovement - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UseGravity - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_GravityApplicationMode - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ControllerTransform - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_EnableMoveWhileSelecting - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_MoveFactor - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_GrabMoveAction.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_GrabMoveAction.m_Action.m_Name - value: Grab Move - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_GrabMoveAction.m_Action.m_Type - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_GrabMoveAction.m_Action.m_ExpectedControlType - value: Button - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_GrabMoveAction.m_Action.m_Id - value: 35be39bb-16ac-4214-8350-769ed84fbd11 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_GrabMoveAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_GrabMoveAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_GrabMoveAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_GrabMoveAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_GrabMoveAction.m_Reference - value: - objectReference: {fileID: -3742484312079769484, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_ExcludedProperties: [] diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Right Controller.preset b/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Right Controller.preset deleted file mode 100644 index 65f91052..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Right Controller.preset +++ /dev/null @@ -1,747 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!181963792 &2655988077585873504 -Preset: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: XRI Default Right Controller - m_TargetType: - m_NativeTypeID: 114 - m_ManagedTypePPtr: {fileID: 11500000, guid: caff514de9b15ad48ab85dcff5508221, type: 3} - m_ManagedTypeFallback: - m_Properties: - - target: {fileID: 0} - propertyPath: m_Enabled - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_EditorHideFlags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_EditorClassIdentifier - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UpdateTrackingType - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_EnableInputTracking - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_EnableInputActions - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ModelPrefab - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ModelParent - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_Model - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_AnimateModel - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ModelSelectTransition - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ModelDeSelectTransition - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PositionAction.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PositionAction.m_Action.m_Name - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PositionAction.m_Action.m_Type - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PositionAction.m_Action.m_ExpectedControlType - value: Vector3 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PositionAction.m_Action.m_Id - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PositionAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PositionAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PositionAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PositionAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PositionAction.m_Reference - value: - objectReference: {fileID: -3326005586356538449, guid: c348712bda248c246b8c49b3db54643f, type: 3} - - target: {fileID: 0} - propertyPath: m_RotationAction.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotationAction.m_Action.m_Name - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotationAction.m_Action.m_Type - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotationAction.m_Action.m_ExpectedControlType - value: Quaternion - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotationAction.m_Action.m_Id - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotationAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotationAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotationAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotationAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotationAction.m_Reference - value: - objectReference: {fileID: 5101698808175986029, guid: c348712bda248c246b8c49b3db54643f, type: 3} - - target: {fileID: 0} - propertyPath: m_IsTrackedAction.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_IsTrackedAction.m_Action.m_Name - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_IsTrackedAction.m_Action.m_Type - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_IsTrackedAction.m_Action.m_ExpectedControlType - value: Button - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_IsTrackedAction.m_Action.m_Id - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_IsTrackedAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_IsTrackedAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_IsTrackedAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_IsTrackedAction.m_Action.m_Flags - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_IsTrackedAction.m_Reference - value: - objectReference: {fileID: -7044516463258014562, guid: c348712bda248c246b8c49b3db54643f, type: 3} - - target: {fileID: 0} - propertyPath: m_TrackingStateAction.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TrackingStateAction.m_Action.m_Name - value: Tracking State - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TrackingStateAction.m_Action.m_Type - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TrackingStateAction.m_Action.m_ExpectedControlType - value: Integer - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TrackingStateAction.m_Action.m_Id - value: 008dba4e-870a-43fb-9a1f-1a7bc3ecec0c - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TrackingStateAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TrackingStateAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TrackingStateAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TrackingStateAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TrackingStateAction.m_Reference - value: - objectReference: {fileID: -1277054153949319361, guid: c348712bda248c246b8c49b3db54643f, type: 3} - - target: {fileID: 0} - propertyPath: m_SelectAction.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectAction.m_Action.m_Name - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectAction.m_Action.m_Type - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectAction.m_Action.m_ExpectedControlType - value: Button - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectAction.m_Action.m_Id - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectAction.m_Reference - value: - objectReference: {fileID: 187161793506945269, guid: c348712bda248c246b8c49b3db54643f, type: 3} - - target: {fileID: 0} - propertyPath: m_SelectActionValue.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectActionValue.m_Action.m_Name - value: Select Action Value - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectActionValue.m_Action.m_Type - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectActionValue.m_Action.m_ExpectedControlType - value: Axis - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectActionValue.m_Action.m_Id - value: 6b1e5826-d74e-452e-ab31-5d6eae6f407e - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectActionValue.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectActionValue.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectActionValue.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectActionValue.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_SelectActionValue.m_Reference - value: - objectReference: {fileID: -1758520528963094988, guid: c348712bda248c246b8c49b3db54643f, type: 3} - - target: {fileID: 0} - propertyPath: m_ActivateAction.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateAction.m_Action.m_Name - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateAction.m_Action.m_Type - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateAction.m_Action.m_ExpectedControlType - value: Button - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateAction.m_Action.m_Id - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateAction.m_Reference - value: - objectReference: {fileID: 83097790271614945, guid: c348712bda248c246b8c49b3db54643f, type: 3} - - target: {fileID: 0} - propertyPath: m_ActivateActionValue.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateActionValue.m_Action.m_Name - value: Activate Action Value - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateActionValue.m_Action.m_Type - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateActionValue.m_Action.m_ExpectedControlType - value: Axis - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateActionValue.m_Action.m_Id - value: 98d3d870-d1c9-4fbe-9790-8d0c2cb9ffc0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateActionValue.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateActionValue.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateActionValue.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateActionValue.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ActivateActionValue.m_Reference - value: - objectReference: {fileID: 7904272356298805229, guid: c348712bda248c246b8c49b3db54643f, type: 3} - - target: {fileID: 0} - propertyPath: m_UIPressAction.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressAction.m_Action.m_Name - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressAction.m_Action.m_Type - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressAction.m_Action.m_ExpectedControlType - value: Button - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressAction.m_Action.m_Id - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressAction.m_Reference - value: - objectReference: {fileID: 3279264004350380116, guid: c348712bda248c246b8c49b3db54643f, type: 3} - - target: {fileID: 0} - propertyPath: m_UIPressActionValue.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressActionValue.m_Action.m_Name - value: UI Press Action Value - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressActionValue.m_Action.m_Type - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressActionValue.m_Action.m_ExpectedControlType - value: Axis - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressActionValue.m_Action.m_Id - value: bf4ab5bd-3648-4de6-a1f6-8e879b2612c2 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressActionValue.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressActionValue.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressActionValue.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressActionValue.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIPressActionValue.m_Reference - value: - objectReference: {fileID: -5908353012961274365, guid: c348712bda248c246b8c49b3db54643f, type: 3} - - target: {fileID: 0} - propertyPath: m_UIScrollAction.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIScrollAction.m_Action.m_Name - value: UI Scroll - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIScrollAction.m_Action.m_Type - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIScrollAction.m_Action.m_ExpectedControlType - value: Vector2 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIScrollAction.m_Action.m_Id - value: a6c0ac1e-4065-4abc-ac84-e81172fbfdd4 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIScrollAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIScrollAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIScrollAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIScrollAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UIScrollAction.m_Reference - value: - objectReference: {fileID: -6756787485274679044, guid: c348712bda248c246b8c49b3db54643f, type: 3} - - target: {fileID: 0} - propertyPath: m_HapticDeviceAction.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_HapticDeviceAction.m_Action.m_Name - value: Haptic Device - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_HapticDeviceAction.m_Action.m_Type - value: 2 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_HapticDeviceAction.m_Action.m_ExpectedControlType - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_HapticDeviceAction.m_Action.m_Id - value: 59ea1b94-e9f8-4049-ab97-5920b11143a5 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_HapticDeviceAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_HapticDeviceAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_HapticDeviceAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_HapticDeviceAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_HapticDeviceAction.m_Reference - value: - objectReference: {fileID: -8222252007134549311, guid: c348712bda248c246b8c49b3db54643f, type: 3} - - target: {fileID: 0} - propertyPath: m_RotateAnchorAction.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotateAnchorAction.m_Action.m_Name - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotateAnchorAction.m_Action.m_Type - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotateAnchorAction.m_Action.m_ExpectedControlType - value: Vector2 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotateAnchorAction.m_Action.m_Id - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotateAnchorAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotateAnchorAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotateAnchorAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotateAnchorAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_RotateAnchorAction.m_Reference - value: - objectReference: {fileID: -5913262927076077117, guid: c348712bda248c246b8c49b3db54643f, type: 3} - - target: {fileID: 0} - propertyPath: m_DirectionalAnchorRotationAction.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_DirectionalAnchorRotationAction.m_Action.m_Name - value: Directional Anchor Rotation - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_DirectionalAnchorRotationAction.m_Action.m_Type - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_DirectionalAnchorRotationAction.m_Action.m_ExpectedControlType - value: Vector2 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_DirectionalAnchorRotationAction.m_Action.m_Id - value: 72b93609-c58e-411b-a958-c221860f8269 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_DirectionalAnchorRotationAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_DirectionalAnchorRotationAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_DirectionalAnchorRotationAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_DirectionalAnchorRotationAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_DirectionalAnchorRotationAction.m_Reference - value: - objectReference: {fileID: -440298646266941818, guid: c348712bda248c246b8c49b3db54643f, type: 3} - - target: {fileID: 0} - propertyPath: m_TranslateAnchorAction.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TranslateAnchorAction.m_Action.m_Name - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TranslateAnchorAction.m_Action.m_Type - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TranslateAnchorAction.m_Action.m_ExpectedControlType - value: Vector2 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TranslateAnchorAction.m_Action.m_Id - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TranslateAnchorAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TranslateAnchorAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TranslateAnchorAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TranslateAnchorAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TranslateAnchorAction.m_Reference - value: - objectReference: {fileID: 875253871413052681, guid: c348712bda248c246b8c49b3db54643f, type: 3} - - target: {fileID: 0} - propertyPath: m_ScaleToggleAction.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleToggleAction.m_Action.m_Name - value: Scale Toggle - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleToggleAction.m_Action.m_Type - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleToggleAction.m_Action.m_ExpectedControlType - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleToggleAction.m_Action.m_Id - value: 0ec63ab1-52db-4370-be3a-274ee310dae9 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleToggleAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleToggleAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleToggleAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleToggleAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleToggleAction.m_Reference - value: - objectReference: {fileID: -2524354804938687746, guid: c348712bda248c246b8c49b3db54643f, type: 3} - - target: {fileID: 0} - propertyPath: m_ScaleDeltaAction.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleDeltaAction.m_Action.m_Name - value: Scale Delta - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleDeltaAction.m_Action.m_Type - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleDeltaAction.m_Action.m_ExpectedControlType - value: Vector2 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleDeltaAction.m_Action.m_Id - value: 693cabdd-8776-492d-8641-2f6adc511d4c - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleDeltaAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleDeltaAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleDeltaAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleDeltaAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScaleDeltaAction.m_Reference - value: - objectReference: {fileID: -6447266317303757838, guid: c348712bda248c246b8c49b3db54643f, type: 3} - - target: {fileID: 0} - propertyPath: m_ButtonPressPoint - value: 0.5 - objectReference: {fileID: 0} - m_ExcludedProperties: [] diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Right Controller.preset.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Right Controller.preset.meta deleted file mode 100644 index 82b2e982..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Right Controller.preset.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 1421ad86ff3787b4dae70fe9e699a25f -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Right Grab Move.preset b/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Right Grab Move.preset deleted file mode 100644 index 5992ed80..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Right Grab Move.preset +++ /dev/null @@ -1,103 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!181963792 &2655988077585873504 -Preset: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: XRI Default Right Grab Move - m_TargetType: - m_NativeTypeID: 114 - m_ManagedTypePPtr: {fileID: 11500000, guid: 8b94c4c83dec6a94fbaebf543478259e, type: 3} - m_ManagedTypeFallback: - m_Properties: - - target: {fileID: 0} - propertyPath: m_Enabled - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_EditorHideFlags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_EditorClassIdentifier - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_System - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_EnableFreeXMovement - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_EnableFreeYMovement - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_EnableFreeZMovement - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UseGravity - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_GravityApplicationMode - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ControllerTransform - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_EnableMoveWhileSelecting - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_MoveFactor - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_GrabMoveAction.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_GrabMoveAction.m_Action.m_Name - value: Grab Move - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_GrabMoveAction.m_Action.m_Type - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_GrabMoveAction.m_Action.m_ExpectedControlType - value: Button - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_GrabMoveAction.m_Action.m_Id - value: e4bae209-d3e4-46d5-b781-79850736a98d - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_GrabMoveAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_GrabMoveAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_GrabMoveAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_GrabMoveAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_GrabMoveAction.m_Reference - value: - objectReference: {fileID: 15759602096507913, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_ExcludedProperties: [] diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default XR Screen Space Controller.preset b/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default XR Screen Space Controller.preset deleted file mode 100644 index b2a1485b..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default XR Screen Space Controller.preset +++ /dev/null @@ -1,435 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!181963792 &2655988077585873504 -Preset: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: XRI Default XR Screen Space Controller - m_TargetType: - m_NativeTypeID: 114 - m_ManagedTypePPtr: {fileID: 11500000, guid: b7e4c509417774e7e8a8784a2739de68, type: 3} - m_ManagedTypeFallback: - m_Properties: - - target: {fileID: 0} - propertyPath: m_Enabled - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_EditorHideFlags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_EditorClassIdentifier - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_UpdateTrackingType - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_EnableInputTracking - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_EnableInputActions - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ModelPrefab - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ModelParent - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_Model - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_AnimateModel - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ModelSelectTransition - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ModelDeSelectTransition - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_EnableTouchscreenGestureInputController - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TapStartPositionAction.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TapStartPositionAction.m_Action.m_Name - value: Tap Start Position - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TapStartPositionAction.m_Action.m_Type - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TapStartPositionAction.m_Action.m_ExpectedControlType - value: Vector2 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TapStartPositionAction.m_Action.m_Id - value: 92224516-b7ff-4476-bcee-ac90d78580f7 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TapStartPositionAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TapStartPositionAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TapStartPositionAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TapStartPositionAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TapStartPositionAction.m_Reference - value: - objectReference: {fileID: 2494954584338170553, guid: c348712bda248c246b8c49b3db54643f, type: 3} - - target: {fileID: 0} - propertyPath: m_DragCurrentPositionAction.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_DragCurrentPositionAction.m_Action.m_Name - value: Drag Current Position - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_DragCurrentPositionAction.m_Action.m_Type - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_DragCurrentPositionAction.m_Action.m_ExpectedControlType - value: Vector2 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_DragCurrentPositionAction.m_Action.m_Id - value: f1e3548b-3ed6-4e99-a0a4-be61acca187a - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_DragCurrentPositionAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_DragCurrentPositionAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_DragCurrentPositionAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_DragCurrentPositionAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_DragCurrentPositionAction.m_Reference - value: - objectReference: {fileID: -7530398834462728267, guid: c348712bda248c246b8c49b3db54643f, type: 3} - - target: {fileID: 0} - propertyPath: m_DragDeltaAction.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_DragDeltaAction.m_Action.m_Name - value: Drag Delta - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_DragDeltaAction.m_Action.m_Type - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_DragDeltaAction.m_Action.m_ExpectedControlType - value: Vector2 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_DragDeltaAction.m_Action.m_Id - value: 225cbc26-23a5-4084-9eca-ef3b0aedf80f - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_DragDeltaAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_DragDeltaAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_DragDeltaAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_DragDeltaAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_DragDeltaAction.m_Reference - value: - objectReference: {fileID: -3603844561257126198, guid: c348712bda248c246b8c49b3db54643f, type: 3} - - target: {fileID: 0} - propertyPath: m_PinchStartPositionAction.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PinchStartPositionAction.m_Action.m_Name - value: Pinch Start Position - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PinchStartPositionAction.m_Action.m_Type - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PinchStartPositionAction.m_Action.m_ExpectedControlType - value: Vector2 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PinchStartPositionAction.m_Action.m_Id - value: 23bda604-799e-4d5c-a28c-a7aa89ae7d7e - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PinchStartPositionAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PinchStartPositionAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PinchStartPositionAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PinchStartPositionAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PinchStartPositionAction.m_Reference - value: - objectReference: {fileID: 9070054806217310167, guid: c348712bda248c246b8c49b3db54643f, type: 3} - - target: {fileID: 0} - propertyPath: m_PinchGapAction.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PinchGapAction.m_Action.m_Name - value: Pinch Gap - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PinchGapAction.m_Action.m_Type - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PinchGapAction.m_Action.m_ExpectedControlType - value: Axis - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PinchGapAction.m_Action.m_Id - value: ef16b2f3-a8bb-40e9-8e11-29c3c7fffcde - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PinchGapAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PinchGapAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PinchGapAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PinchGapAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PinchGapAction.m_Reference - value: - objectReference: {fileID: 3166769696172522120, guid: c348712bda248c246b8c49b3db54643f, type: 3} - - target: {fileID: 0} - propertyPath: m_PinchGapDeltaAction.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PinchGapDeltaAction.m_Action.m_Name - value: Pinch Gap Delta - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PinchGapDeltaAction.m_Action.m_Type - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PinchGapDeltaAction.m_Action.m_ExpectedControlType - value: Axis - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PinchGapDeltaAction.m_Action.m_Id - value: 818c3483-a72e-402c-b79d-eed7878ec7fd - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PinchGapDeltaAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PinchGapDeltaAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PinchGapDeltaAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PinchGapDeltaAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_PinchGapDeltaAction.m_Reference - value: - objectReference: {fileID: -5112888916153672211, guid: c348712bda248c246b8c49b3db54643f, type: 3} - - target: {fileID: 0} - propertyPath: m_TwistStartPositionAction.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TwistStartPositionAction.m_Action.m_Name - value: Twist Start Position - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TwistStartPositionAction.m_Action.m_Type - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TwistStartPositionAction.m_Action.m_ExpectedControlType - value: Vector2 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TwistStartPositionAction.m_Action.m_Id - value: abd8efdb-6861-4448-8ad7-061bf538d6ec - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TwistStartPositionAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TwistStartPositionAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TwistStartPositionAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TwistStartPositionAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TwistStartPositionAction.m_Reference - value: - objectReference: {fileID: -1941033212670429761, guid: c348712bda248c246b8c49b3db54643f, type: 3} - - target: {fileID: 0} - propertyPath: m_TwistDeltaRotationAction.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TwistDeltaRotationAction.m_Action.m_Name - value: Twist Delta Rotation - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TwistDeltaRotationAction.m_Action.m_Type - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TwistDeltaRotationAction.m_Action.m_ExpectedControlType - value: Axis - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TwistDeltaRotationAction.m_Action.m_Id - value: 8c4e1c5a-020b-4b79-b1a9-11c167503b70 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TwistDeltaRotationAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TwistDeltaRotationAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TwistDeltaRotationAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TwistDeltaRotationAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_TwistDeltaRotationAction.m_Reference - value: - objectReference: {fileID: -8156239294363760665, guid: c348712bda248c246b8c49b3db54643f, type: 3} - - target: {fileID: 0} - propertyPath: m_ScreenTouchCountAction.m_UseReference - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScreenTouchCountAction.m_Action.m_Name - value: Screen Touch Count - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScreenTouchCountAction.m_Action.m_Type - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScreenTouchCountAction.m_Action.m_ExpectedControlType - value: Integer - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScreenTouchCountAction.m_Action.m_Id - value: 909c4e64-82b6-4d74-9913-2d58aff78cad - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScreenTouchCountAction.m_Action.m_Processors - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScreenTouchCountAction.m_Action.m_Interactions - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScreenTouchCountAction.m_Action.m_SingletonActionBindings.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScreenTouchCountAction.m_Action.m_Flags - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ScreenTouchCountAction.m_Reference - value: - objectReference: {fileID: 4162966010302970412, guid: c348712bda248c246b8c49b3db54643f, type: 3} - - target: {fileID: 0} - propertyPath: m_ControllerCamera - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_BlockInteractionsWithScreenSpaceUI - value: 1 - objectReference: {fileID: 0} - m_ExcludedProperties: [] diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator.meta deleted file mode 100644 index af974dba..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: dfe493d171654d142909b6fcb3c57fe8 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/.sample.json b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/.sample.json deleted file mode 100644 index afea4c84..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/.sample.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "displayName": "XR Device Simulator", - "description": "Assets related to the simulation of XR HMD and controllers." -} diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Hand Expression Captures.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Hand Expression Captures.meta deleted file mode 100644 index 0b7f5fa7..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Hand Expression Captures.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 6e328aec6ff17084fb147d5b790becee -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Hand Expression Captures/Fist Expression Capture.asset b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Hand Expression Captures/Fist Expression Capture.asset deleted file mode 100644 index 2e5efbf6..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Hand Expression Captures/Fist Expression Capture.asset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3857c082dd0bdd0b37a12b84b334e67f31e724ec1f18aac6c23b09200e12c5f1 -size 6583 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Hand Expression Captures/Grab Expression Capture.asset b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Hand Expression Captures/Grab Expression Capture.asset deleted file mode 100644 index d34aa5b0..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Hand Expression Captures/Grab Expression Capture.asset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d8e9d9df655c2811e70056ccf04881b72d3390515d51095713199d7b973c6352 -size 7306 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Hand Expression Captures/Open Expression Capture.asset b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Hand Expression Captures/Open Expression Capture.asset deleted file mode 100644 index b8ffcefe..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Hand Expression Captures/Open Expression Capture.asset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c8e5b515f6a9f88dd211b7494c5fd13d140801445d3863cb5b097a2da7379f9f -size 7377 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Hand Expression Captures/Pinch Expression Capture.asset b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Hand Expression Captures/Pinch Expression Capture.asset deleted file mode 100644 index 2f8a535d..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Hand Expression Captures/Pinch Expression Capture.asset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b70d7a9d3c1afcd148712630252b8b7b0e6d4d0bdf20b74f060ba57d1f0bab11 -size 7262 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Hand Expression Captures/Poke Expression Capture.asset b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Hand Expression Captures/Poke Expression Capture.asset deleted file mode 100644 index 66a7af17..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Hand Expression Captures/Poke Expression Capture.asset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6645406e810ad0c85338a4f7cd77f0f692e8a0b08b7b46226821a3597e99ca43 -size 7409 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Hand Expression Captures/Poke Expression Capture.asset.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Hand Expression Captures/Poke Expression Capture.asset.meta deleted file mode 100644 index 64925109..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Hand Expression Captures/Poke Expression Capture.asset.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 95c319715e9d2644da8ae09af8ccfee6 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 11400000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Hand Expression Captures/Resting Expression Capture.asset b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Hand Expression Captures/Resting Expression Capture.asset deleted file mode 100644 index 5af83d24..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Hand Expression Captures/Resting Expression Capture.asset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1547bc633571bca88fac1c392bd992a6e8d0c2edabd6d44ad0462b806d643fce -size 6585 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Hand Expression Captures/Resting Expression Capture.asset.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Hand Expression Captures/Resting Expression Capture.asset.meta deleted file mode 100644 index 59b633fa..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Hand Expression Captures/Resting Expression Capture.asset.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 5be099e6e6012c244bb41881b6c0ea07 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 11400000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Hand Expression Captures/Thumb Expression Capture.asset b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Hand Expression Captures/Thumb Expression Capture.asset deleted file mode 100644 index 03e6ded1..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Hand Expression Captures/Thumb Expression Capture.asset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:018c506eee803a09d700782f649c853fa360f6dd9d12ac7eb36a942194e52f9c -size 7305 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Hand Expression Captures/Thumb Expression Capture.asset.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Hand Expression Captures/Thumb Expression Capture.asset.meta deleted file mode 100644 index 8b4d49a5..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Hand Expression Captures/Thumb Expression Capture.asset.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 9d8c9c84da35a7c4c89efd57343c1df8 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 11400000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Scripts.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Scripts.meta deleted file mode 100644 index 88f3c967..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Scripts.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 000d1a33d8d2f8445bb24d7d483fc34d -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Scripts/XRDeviceSimulatorControllerUI.cs b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Scripts/XRDeviceSimulatorControllerUI.cs deleted file mode 100644 index 748eeced..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Scripts/XRDeviceSimulatorControllerUI.cs +++ /dev/null @@ -1,253 +0,0 @@ -using UnityEngine.InputSystem; -using UnityEngine.UI; -using UnityEngine.XR.Interaction.Toolkit.Inputs.Simulation; - -namespace UnityEngine.XR.Interaction.Toolkit.Samples.DeviceSimulator -{ - [RequireComponent(typeof(XRDeviceSimulatorUI))] - class XRDeviceSimulatorControllerUI : MonoBehaviour - { - [Header("General")] - - [SerializeField] - Image m_ControllerImage; - - [SerializeField] - Image m_ControllerOverlayImage; - - [Header("Primary Button")] - - [SerializeField] - Image m_PrimaryButtonImage; - - [SerializeField] - Text m_PrimaryButtonText; - - [SerializeField] - Image m_PrimaryButtonIcon; - - [Header("Secondary Button")] - - [SerializeField] - Image m_SecondaryButtonImage; - - [SerializeField] - Text m_SecondaryButtonText; - - [SerializeField] - Image m_SecondaryButtonIcon; - - [Header("Trigger")] - - [SerializeField] - Image m_TriggerButtonImage; - - [SerializeField] - Text m_TriggerButtonText; - - [SerializeField] - Image m_TriggerButtonIcon; - - [Header("Grip")] - - [SerializeField] - Image m_GripButtonImage; - - [SerializeField] - Text m_GripButtonText; - - [SerializeField] - Image m_GripButtonIcon; - - [Header("Thumbstick")] - - [SerializeField] - Image m_ThumbstickButtonImage; - - [SerializeField] - Text m_ThumbstickButtonText; - - [SerializeField] - Image m_ThumbstickButtonIcon; - - [Header("Menu")] - - [SerializeField] - Image m_MenuButtonImage; - - [SerializeField] - Text m_MenuButtonText; - - [SerializeField] - Image m_MenuButtonIcon; - - XRDeviceSimulatorUI m_MainUIManager; - - bool m_PrimaryButtonActivated; - bool m_SecondaryButtonActivated; - bool m_TriggerActivated; - bool m_GripActivated; - bool m_MenuActivated; - bool m_XAxisTranslateActivated; - bool m_YAxisTranslateActivated; - - protected void Awake() - { - m_MainUIManager = GetComponent(); - } - - internal void Initialize(XRDeviceSimulator simulator) - { - m_PrimaryButtonText.text = simulator.primaryButtonAction.action.controls[0].displayName; - m_SecondaryButtonText.text = simulator.secondaryButtonAction.action.controls[0].displayName; - m_GripButtonText.text = simulator.gripAction.action.controls[0].displayName; - m_TriggerButtonText.text = simulator.triggerAction.action.controls[0].displayName; - m_MenuButtonText.text = simulator.menuAction.action.controls[0].displayName; - - var disabledImgColor = m_MainUIManager.disabledColor; - m_ThumbstickButtonImage.color = disabledImgColor; - m_ControllerImage.color = m_MainUIManager.disabledDeviceColor; - m_ControllerOverlayImage.color = disabledImgColor; - } - - internal void SetAsActiveController(bool active, XRDeviceSimulator simulator, bool isRestingHand = false) - { - var controls = isRestingHand ? - simulator.restingHandAxis2DAction.action.controls : - simulator.axis2DAction.action.controls; - - m_ThumbstickButtonText.text = $"{controls[0].displayName}, {controls[1].displayName}, {controls[2].displayName}, {controls[3].displayName}"; - - UpdateButtonVisuals(active, m_PrimaryButtonIcon, m_PrimaryButtonText, simulator.primaryButtonAction.action.controls[0]); - UpdateButtonVisuals(active, m_SecondaryButtonIcon, m_SecondaryButtonText, simulator.secondaryButtonAction.action.controls[0]); - UpdateButtonVisuals(active, m_TriggerButtonIcon, m_TriggerButtonText, simulator.triggerAction.action.controls[0]); - UpdateButtonVisuals(active, m_GripButtonIcon, m_GripButtonText, simulator.gripAction.action.controls[0]); - UpdateButtonVisuals(active, m_MenuButtonIcon, m_MenuButtonText, simulator.menuAction.action.controls[0]); - UpdateButtonVisuals(active || isRestingHand, m_ThumbstickButtonIcon, m_ThumbstickButtonText, simulator.axis2DAction.action.controls[0]); - - if (active) - { - UpdateButtonColor(m_PrimaryButtonImage, m_PrimaryButtonActivated); - UpdateButtonColor(m_SecondaryButtonImage, m_SecondaryButtonActivated); - UpdateButtonColor(m_TriggerButtonImage, m_TriggerActivated); - UpdateButtonColor(m_GripButtonImage, m_GripActivated); - UpdateButtonColor(m_MenuButtonImage, m_MenuActivated); - UpdateButtonColor(m_ThumbstickButtonImage, m_XAxisTranslateActivated || m_YAxisTranslateActivated); - - m_ControllerImage.color = m_MainUIManager.deviceColor; - m_ControllerOverlayImage.color = m_MainUIManager.enabledColor; - } - else - { - UpdateDisableControllerButton(m_PrimaryButtonActivated, m_PrimaryButtonImage, m_PrimaryButtonIcon, m_PrimaryButtonText); - UpdateDisableControllerButton(m_SecondaryButtonActivated, m_SecondaryButtonImage, m_SecondaryButtonIcon, m_SecondaryButtonText); - UpdateDisableControllerButton(m_TriggerActivated, m_TriggerButtonImage, m_TriggerButtonIcon, m_TriggerButtonText); - UpdateDisableControllerButton(m_GripActivated, m_GripButtonImage, m_GripButtonIcon, m_GripButtonText); - UpdateDisableControllerButton(m_MenuActivated, m_MenuButtonImage, m_MenuButtonIcon, m_MenuButtonText); - - if (!isRestingHand) - UpdateDisableControllerButton(m_XAxisTranslateActivated || m_YAxisTranslateActivated, m_ThumbstickButtonImage, m_ThumbstickButtonIcon, m_ThumbstickButtonText); - else - m_ThumbstickButtonImage.color = m_MainUIManager.buttonColor; - - m_ControllerImage.color = m_MainUIManager.disabledDeviceColor; - m_ControllerOverlayImage.color = m_MainUIManager.disabledColor; - } - } - - // This function keeps the button selected color active if the key if hold when the controller is disabled. - // Other buttons are disabled to avoid adding extra noise. - void UpdateDisableControllerButton(bool active, Image button, Image buttonIcon, Text buttonText) - { - if(active) - { - var tmpColor = m_MainUIManager.selectedColor; - tmpColor.a = 0.5f; - button.color = tmpColor; - buttonText.gameObject.SetActive(true); - buttonIcon.gameObject.SetActive(true); - } - else - { - button.color = m_MainUIManager.disabledButtonColor; - buttonText.gameObject.SetActive(false); - buttonIcon.gameObject.SetActive(false); - } - } - - void UpdateButtonVisuals(bool active, Image buttonIcon, Text buttonText, InputControl control) - { - buttonText.gameObject.SetActive(active); - buttonIcon.gameObject.SetActive(active); - - var color = active ? m_MainUIManager.enabledColor : m_MainUIManager.disabledColor; - buttonText.color = color; - buttonIcon.color = color; - - buttonIcon.transform.localScale = Vector3.one; - buttonIcon.sprite = m_MainUIManager.GetInputIcon(control); - switch (control.name) - { - case "leftButton": - buttonText.text = "L Mouse"; - buttonIcon.color = Color.white; - buttonIcon.transform.localScale = new Vector3(-1f, 1f, 1f); - break; - case "rightButton": - buttonText.text = "R Mouse"; - buttonIcon.color = Color.white; - break; - default: - buttonIcon.sprite = m_MainUIManager.keyboardSprite; - break; - } - } - - void UpdateButtonColor(Image image, bool activated) - { - image.color = activated ? m_MainUIManager.selectedColor : m_MainUIManager.buttonColor; - } - - internal void OnPrimaryButton(bool activated) - { - m_PrimaryButtonActivated = activated; - UpdateButtonColor(m_PrimaryButtonImage, activated); - } - - internal void OnSecondaryButton(bool activated) - { - m_SecondaryButtonActivated = activated; - UpdateButtonColor(m_SecondaryButtonImage, activated); - } - - internal void OnTrigger(bool activated) - { - m_TriggerActivated = activated; - UpdateButtonColor(m_TriggerButtonImage, activated); - } - - internal void OnGrip(bool activated) - { - m_GripActivated = activated; - UpdateButtonColor(m_GripButtonImage, activated); - } - - internal void OnMenu(bool activated) - { - m_MenuActivated = activated; - UpdateButtonColor(m_MenuButtonImage, activated); - } - - internal void OnXAxisTranslatePerformed(bool activated) - { - m_XAxisTranslateActivated = activated; - UpdateButtonColor(m_ThumbstickButtonImage, activated); - } - - internal void OnZAxisTranslatePerformed(bool activated) - { - m_YAxisTranslateActivated = activated; - UpdateButtonColor(m_ThumbstickButtonImage, activated); - } - } -} diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Scripts/XRDeviceSimulatorHandsUI.cs b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Scripts/XRDeviceSimulatorHandsUI.cs deleted file mode 100644 index 657199c7..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Scripts/XRDeviceSimulatorHandsUI.cs +++ /dev/null @@ -1,182 +0,0 @@ -using System; -using System.Collections.Generic; -using UnityEngine.InputSystem; -using UnityEngine.UI; -using UnityEngine.XR.Interaction.Toolkit.Inputs.Simulation; - -namespace UnityEngine.XR.Interaction.Toolkit.Samples.DeviceSimulator -{ - [RequireComponent(typeof(XRDeviceSimulatorUI))] - class XRDeviceSimulatorHandsUI : MonoBehaviour - { - [Serializable] - class HandExpressionUI - { - [SerializeField] - Sprite m_Sprite; - [SerializeField] - Image m_ButtonImage; - [SerializeField] - Image m_Icon; - [SerializeField] - Text m_BindText; - [SerializeField] - Text m_TitleText; - - InputAction m_Action; - - public Sprite sprite - { - get => m_Sprite; - set => m_Sprite = value; - } - - public void Initialize(InputAction action, string name, Sprite icon) - { - m_Action = action; - m_BindText.text = m_Action.controls[0].displayName; - m_TitleText.text = $"[{name}]"; - if (icon != null) - m_Sprite = icon; - } - - public void UpdateButtonVisuals(bool active, XRDeviceSimulatorUI uiManager) - { - UpdateButtonActive(active); - - Color color = active ? uiManager.enabledColor : uiManager.disabledColor; - m_BindText.color = color; - m_TitleText.color = color; - m_Icon.color = color; - - m_Icon.transform.localScale = Vector3.one; - m_Icon.sprite = uiManager.GetInputIcon(m_Action?.controls[0]); - } - - public void SetButtonColor(Color color) - { - m_ButtonImage.color = color; - } - - public void UpdateButtonActive(bool active) - { - m_BindText.gameObject.SetActive(active); - m_TitleText.gameObject.SetActive(active); - m_Icon.gameObject.SetActive(active); - } - } - - [Header("General")] - - [SerializeField] - Image m_HandImage; - - [SerializeField] - Sprite m_HandDefaultSprite; - - [SerializeField] - List m_Expressions = new List(); - - XRDeviceSimulatorUI m_MainUIManager; - HandExpressionUI m_ActiveExpression; - - protected void Awake() - { - m_MainUIManager = GetComponent(); - } - - internal void Initialize(XRDeviceSimulator simulator) - { - for (var index = 0; index < simulator.simulatedHandExpressions.Count; ++index) - { - var simulatedExpression = simulator.simulatedHandExpressions[index]; - if (index >= m_Expressions.Count) - { - Debug.LogWarning("The Device Simulator has more expressions than the UI can display.", this); - } - else - { - m_Expressions[index].Initialize(simulatedExpression.toggleAction, simulatedExpression.name, simulatedExpression.icon); - } - } - - m_HandImage.color = m_MainUIManager.disabledDeviceColor; - } - - internal void SetActive(bool active, XRDeviceSimulator simulator) - { - foreach (var expression in m_Expressions) - { - expression.UpdateButtonVisuals(active, m_MainUIManager); - } - - if (active) - { - foreach (var expression in m_Expressions) - { - var isActiveExpression = m_ActiveExpression == expression; - expression.SetButtonColor(isActiveExpression ? m_MainUIManager.selectedColor : m_MainUIManager.buttonColor); - } - - m_HandImage.color = m_MainUIManager.deviceColor; - } - else - { - var disabledSelectedColor = m_MainUIManager.selectedColor; - disabledSelectedColor.a = 0.5f; - foreach (var expression in m_Expressions) - { - var isActiveExpression = m_ActiveExpression == expression; - expression.SetButtonColor(isActiveExpression ? disabledSelectedColor : m_MainUIManager.disabledButtonColor); - expression.UpdateButtonActive(isActiveExpression); - } - - m_HandImage.color = m_MainUIManager.disabledDeviceColor; - } - } - - internal void ToggleExpression(XRDeviceSimulator.SimulatedHandExpression simulatedExpression, XRDeviceSimulator simulator) - { - // The index of the hand expression corresponds 1:1 with the index of the UI button - var index = simulator.simulatedHandExpressions.IndexOf(simulatedExpression); - if (index >= m_Expressions.Count) - { - Debug.LogWarning("The Device Simulator has more expressions than the UI can display.", this); - } - else if (index < 0) - { - Debug.LogError($"The Device Simulator tried to toggle {simulatedExpression.name} but it was not found in the list of simulated hand expressions, the UI can not be updated.", this); - } - else - { - ToggleExpression(m_Expressions[index]); - } - } - - void ToggleExpression(HandExpressionUI expression) - { - if (m_ActiveExpression == expression) - { - SetExpressionActiveStatus(false, expression); - m_ActiveExpression = null; - m_HandImage.sprite = m_HandDefaultSprite; - } - else - { - if (m_ActiveExpression != null) - SetExpressionActiveStatus(false, m_ActiveExpression); - - SetExpressionActiveStatus(true, expression); - m_ActiveExpression = expression; - } - } - - void SetExpressionActiveStatus(bool isActive, HandExpressionUI expression) - { - expression.SetButtonColor(isActive ? m_MainUIManager.selectedColor : m_MainUIManager.buttonColor); - if (isActive) - m_HandImage.sprite = expression.sprite; - } - } -} - diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Scripts/XRDeviceSimulatorUI.cs b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Scripts/XRDeviceSimulatorUI.cs deleted file mode 100644 index b32c2123..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Scripts/XRDeviceSimulatorUI.cs +++ /dev/null @@ -1,1165 +0,0 @@ -using System; -using UnityEngine.InputSystem; -using UnityEngine.Serialization; -using UnityEngine.UI; -using UnityEngine.XR.Interaction.Toolkit.Inputs.Simulation; - -#if UNITY_EDITOR -using UnityEditor; -#endif - -namespace UnityEngine.XR.Interaction.Toolkit.Samples.DeviceSimulator -{ - class XRDeviceSimulatorUI : MonoBehaviour - { - XRDeviceSimulator m_Simulator; - - const string k_MouseDeviceType = "Mouse"; - const string k_TranslateLookText = "Move"; - const string k_RotateLookText = "Look"; - -#if UNITY_EDITOR - const string k_MenuOpenStateKey = "XRI." + nameof(XRDeviceSimulatorUI) + ".MenuOpenState"; -#endif - [SerializeField] - [HideInInspector] - bool m_IsMenuOpen = true; - - bool isMenuOpen - { - get - { -#if UNITY_EDITOR - m_IsMenuOpen = EditorPrefs.GetBool(k_MenuOpenStateKey, m_IsMenuOpen); -#endif - return m_IsMenuOpen; - } - - set - { - m_IsMenuOpen = value; -#if UNITY_EDITOR - EditorPrefs.SetBool(k_MenuOpenStateKey, m_IsMenuOpen); -#endif - } - } - - [Header("Open/Close Panels")] - - [SerializeField] - GameObject m_XRDeviceSimulatorMainPanel; - [SerializeField] - GameObject m_XRDeviceSimulatorCollapsedPanel; - - [Header("Sprites")] - - [SerializeField] - Sprite m_HmdSpriteDark; - [SerializeField] - Sprite m_HmdSpriteLight; - - [SerializeField] - Sprite m_KeyboardSprite; - internal Sprite keyboardSprite => m_KeyboardSprite; - - [SerializeField] - Sprite m_MouseSprite; - internal Sprite mouseSprite => m_MouseSprite; - - [SerializeField] - Sprite m_RMouseSpriteDark; - internal Sprite rMouseSpriteDark => m_RMouseSpriteDark; - - [SerializeField] - Sprite m_RMouseSpriteLight; - internal Sprite rMouseSpriteLight => m_RMouseSpriteLight; - - [HideInInspector] - [SerializeField] - Sprite m_RMouseSprite; - internal Sprite rMouseSprite - { - get - { -#if !UNITY_EDITOR - if (m_RMouseSprite == null) - m_RMouseSprite = m_RMouseSpriteDark; -#endif - return m_RMouseSprite; - } - } - - [SerializeField] - Sprite m_RoundedRectangle; - - [Header("General")] - - [SerializeField] - Text m_CycleDevicesText; - - [SerializeField] - Text m_CurrentSelectedDeviceText; - - [Header("Headset Device")] - - [SerializeField] - Image m_HeadsetImage; - - [Space] - - [SerializeField] - Image m_HeadsetMoveButton; - - [SerializeField] - Image m_HeadsetMoveButtonIcon; - - [SerializeField] - Text m_HeadsetMoveButtonText; - - [SerializeField] - Image m_HeadsetMoveValueIcon; - - [SerializeField] - Text m_HeadsetMoveValueText; - - [Space] - - [SerializeField] - Image m_HeadsetLookButton; - - [SerializeField] - Text m_HeadsetLookButtonText; - - [SerializeField] - Image m_HeadsetLookValueIcon; - - [SerializeField] - Text m_HeadsetLookValueText; - - [Space] - - [SerializeField] - [FormerlySerializedAs("m_ShowCursorButton")] - Image m_CursorLockButton; - - [SerializeField] - [FormerlySerializedAs("m_ShowCursorValueText")] - Text m_CursorLockValueText; - - [Space] - - [SerializeField] - Text m_MouseModeButtonText; - - [SerializeField] - Text m_MouseModeValueText; - - [Space] - - [SerializeField] - Image m_HeadsetSelectedButton; - - [SerializeField] - Text m_HeadsetSelectedValueText; - - [Header("Controllers")] - - [SerializeField] - Image m_ControllerSelectedButton; - - [SerializeField] - Image m_ControllerSelectedIcon; - - [SerializeField] - Text m_ControllerSelectedText; - - [SerializeField] - Text m_ControllersSelectedValueText; - - [SerializeField] - CanvasGroup m_ControllersCanvasGroup; - - [Header("Left Controller")] - - [SerializeField] - XRDeviceSimulatorControllerUI m_LeftController; - - [SerializeField] - Text m_LeftControllerButtonText; - - [Header("Right Controller")] - - [SerializeField] - XRDeviceSimulatorControllerUI m_RightController; - - [SerializeField] - Text m_RightControllerButtonText; - - [Header("Hands")] - - [SerializeField] - Image m_HandsSelectedButton; - - [SerializeField] - Image m_HandsSelectedIcon; - - [SerializeField] - Text m_HandsSelectedText; - - [SerializeField] - Image m_HandsSelectedValueIcon; - - [SerializeField] - Text m_HandsSelectedValueText; - - [SerializeField] - CanvasGroup m_HandsCanvasGroup; - - [Header("Left Hand")] - - [SerializeField] - XRDeviceSimulatorHandsUI m_LeftHand; - - [SerializeField] - Text m_LeftHandButtonText; - - [Header("Right Hand")] - - [SerializeField] - XRDeviceSimulatorHandsUI m_RightHand; - - [SerializeField] - Text m_RightHandButtonText; - - static readonly Color k_EnabledColorDark = new Color(0xC4 / 255f, 0xC4 / 255f, 0xC4 / 255f); - static readonly Color k_EnabledColorLight = new Color(0x55/255f, 0x55/255f, 0x55/255f); - [HideInInspector] - [SerializeField] - Color m_EnabledColor = Color.clear; - internal Color enabledColor - { - get - { -#if !UNITY_EDITOR - if (m_EnabledColor == Color.clear) - m_EnabledColor = k_EnabledColorDark; -#endif - return m_EnabledColor; - } - } - - static readonly Color k_DisabledColorDark = new Color(0xC4 / 255f, 0xC4 / 255f, 0xC4 / 255f, 0.5f); - static readonly Color k_DisabledColorLight = new Color(0x55/255f, 0x55/255f, 0x55/255f, 0.5f); - [HideInInspector] - [SerializeField] - Color m_DisabledColor = Color.clear; - internal Color disabledColor - { - get - { -#if !UNITY_EDITOR - if (m_DisabledColor == Color.clear) - m_DisabledColor = k_DisabledColorDark; -#endif - return m_DisabledColor; - } - } - - static readonly Color k_ButtonColorDark = new Color(0x55 / 255f, 0x55 / 255f, 0x55 / 255f); - static readonly Color k_ButtonColorLight = new Color(0xE4/255f, 0xE4/255f, 0xE4/255f); - [HideInInspector] - [SerializeField] - Color m_ButtonColor = Color.clear; - internal Color buttonColor - { - get - { -#if !UNITY_EDITOR - if (m_ButtonColor == Color.clear) - m_ButtonColor = k_ButtonColorDark; -#endif - return m_ButtonColor; - } - } - - static readonly Color k_DisabledButtonColorDark = new Color(0x55 / 255f, 0x55 / 255f, 0x55 / 255f, 0.5f); - static readonly Color k_DisabledButtonColorLight = new Color(0xE4 / 255f, 0xE4 / 255f, 0xE4 / 255f, 0.5f); - [HideInInspector] - [SerializeField] - Color m_DisabledButtonColor = Color.clear; - internal Color disabledButtonColor - { - get - { -#if !UNITY_EDITOR - if (m_DisabledButtonColor == Color.clear) - m_DisabledButtonColor = k_DisabledButtonColorDark; -#endif - return m_DisabledButtonColor; - } - } - - static readonly Color k_SelectedColorDark = new Color(0x4F / 255f, 0x65 / 255f, 0x7F / 255f); - static readonly Color k_SelectedColorLight = new Color(0x96/255f, 0xC3/255f, 0xFB/255f); - [HideInInspector] - [SerializeField] - Color m_SelectedColor = Color.clear; - internal Color selectedColor - { - get - { -#if !UNITY_EDITOR - if (m_SelectedColor == Color.clear) - m_SelectedColor = k_SelectedColorDark; -#endif - return m_SelectedColor; - } - } - - static readonly Color k_BackgroundColorDark = Color.black; - static readonly Color k_BackgroundColorLight = new Color(0xB6/255f, 0xB6/255f, 0xB6/255f); - [HideInInspector] - [SerializeField] - Color m_BackgroundColor = Color.clear; - internal Color backgroundColor - { - get - { -#if !UNITY_EDITOR - if (m_BackgroundColor == Color.clear) - m_BackgroundColor = k_BackgroundColorDark; -#endif - return m_BackgroundColor; - } - } - - static readonly Color k_DeviceColorDark = new Color(0x6E / 255f, 0x6E / 255f, 0x6E / 255f); - static readonly Color k_DeviceColorLight = new Color(0xE4 / 255f, 0xE4 / 255f, 0xE4 / 255f); - [HideInInspector] - [SerializeField] - Color m_DeviceColor = Color.clear; - internal Color deviceColor - { - get - { -#if !UNITY_EDITOR - if (m_DeviceColor == Color.clear) - m_DeviceColor = k_DeviceColorDark; -#endif - return m_DeviceColor; - } - } - - static readonly Color k_DisabledDeviceColorDark = new Color(0x58 / 255f, 0x58 / 255f, 0x58 / 255f); - static readonly Color k_DisabledDeviceColorLight = new Color(0xA2 / 255f, 0xA2 / 255f, 0xA2 / 255f, 0.5f); - [HideInInspector] - [SerializeField] - Color m_DisabledDeviceColor = Color.clear; - internal Color disabledDeviceColor - { - get - { -#if !UNITY_EDITOR - if (m_DisabledDeviceColor == Color.clear) - m_DisabledDeviceColor = k_DisabledDeviceColorDark; -#endif - return m_DisabledDeviceColor; - } - } - - - // Handles 2 axis activation for 1 UI Button - bool m_XAxisActivated; - bool m_ZAxisActivated; - - /// - /// See . - /// - protected void Start() - { - var simulator = GetComponentInParent(); - if (simulator != null) - Initialize(simulator); - } - - /// - /// See . - /// - protected void OnDestroy() - { - if (m_Simulator != null) - { - Unsubscribe(m_Simulator.manipulateLeftAction, OnManipulateLeftAction); - Unsubscribe(m_Simulator.manipulateRightAction, OnManipulateRightAction); - Unsubscribe(m_Simulator.toggleManipulateLeftAction, OnToggleManipulateLeftAction); - Unsubscribe(m_Simulator.toggleManipulateRightAction, OnToggleManipulateRightAction); - Unsubscribe(m_Simulator.toggleManipulateBodyAction, OnToggleManipulateBodyAction); - Unsubscribe(m_Simulator.manipulateHeadAction, OnManipulateHeadAction); - Unsubscribe(m_Simulator.handControllerModeAction, OnHandControllerModeAction); - Unsubscribe(m_Simulator.cycleDevicesAction, OnCycleDevicesAction); - Unsubscribe(m_Simulator.stopManipulationAction, OnStopManipulationAction); - Unsubscribe(m_Simulator.toggleMouseTransformationModeAction, OnToggleMouseTransformationModeAction); - Unsubscribe(m_Simulator.negateModeAction, OnNegateModeAction); - Unsubscribe(m_Simulator.toggleCursorLockAction, OnToggleCursorLockAction); - Unsubscribe(m_Simulator.keyboardXTranslateAction, OnKeyboardXTranslateAction); - Unsubscribe(m_Simulator.keyboardYTranslateAction, OnKeyboardYTranslateAction); - Unsubscribe(m_Simulator.keyboardZTranslateAction, OnKeyboardZTranslateAction); - Unsubscribe(m_Simulator.restingHandAxis2DAction, OnRestingHandAxis2DAction); - Unsubscribe(m_Simulator.gripAction, OnGripAction); - Unsubscribe(m_Simulator.triggerAction, OnTriggerAction); - Unsubscribe(m_Simulator.menuAction, OnMenuAction); - Unsubscribe(m_Simulator.primaryButtonAction, OnPrimaryButtonAction); - Unsubscribe(m_Simulator.secondaryButtonAction, OnSecondaryButtonAction); -#if XR_HANDS_1_1_OR_NEWER - foreach (var simulatedExpression in m_Simulator.simulatedHandExpressions) - { - simulatedExpression.performed -= OnHandExpressionAction; - } -#endif - - } - } - - void Initialize(XRDeviceSimulator simulator) - { - m_Simulator = simulator; - InitColorTheme(); - Initialize(); - // Start with the headset enabled - OnSetMouseMode(); - OnActivateHeadsetDevice(); - } - - void InitColorTheme() - { -#if UNITY_EDITOR - var isEditorPro = EditorGUIUtility.isProSkin; - m_EnabledColor = isEditorPro ? k_EnabledColorDark : k_EnabledColorLight; - m_DisabledColor = isEditorPro ? k_DisabledColorDark : k_DisabledColorLight; - m_ButtonColor = isEditorPro ? k_ButtonColorDark : k_ButtonColorLight; - m_DisabledButtonColor = isEditorPro ? k_DisabledButtonColorDark : k_DisabledButtonColorLight; - m_SelectedColor = isEditorPro ? k_SelectedColorDark : k_SelectedColorLight; - m_BackgroundColor = isEditorPro ? k_BackgroundColorDark : k_BackgroundColorLight; - m_DeviceColor = isEditorPro ? k_DeviceColorDark : k_DeviceColorLight; - m_DisabledDeviceColor = isEditorPro ? k_DisabledDeviceColorDark : k_DisabledDeviceColorLight; - m_HeadsetImage.sprite = isEditorPro ? m_HmdSpriteDark : m_HmdSpriteLight; - m_RMouseSprite = isEditorPro ? m_RMouseSpriteDark : m_RMouseSpriteLight; -#endif - } - - void Initialize() - { - var bckgrdAlpha = m_XRDeviceSimulatorMainPanel.GetComponent().color.a; - - foreach (var image in GetComponentsInChildren(true)) - image.color = image.sprite == null || image.sprite == m_RoundedRectangle ? buttonColor : enabledColor; - - - foreach (var text in GetComponentsInChildren(true)) - text.color = enabledColor; - - m_HeadsetImage.color = Color.white; - - var bckgrdColor = backgroundColor; - bckgrdColor.a = bckgrdAlpha; - m_XRDeviceSimulatorMainPanel.GetComponent().color = bckgrdColor; - m_XRDeviceSimulatorCollapsedPanel.GetComponent().color = bckgrdColor; - - m_CycleDevicesText.text = m_Simulator.cycleDevicesAction.action.controls[0].displayName; - - // Headset - var toggleManipulateBodyActionControl = m_Simulator.toggleManipulateBodyAction.action.controls[0]; - m_HeadsetSelectedValueText.text = $"{toggleManipulateBodyActionControl.displayName}"; - - var ctrlsBinding1 = m_Simulator.axis2DAction.action.controls; - var ctrlsBinding2 = m_Simulator.keyboardYTranslateAction.action.controls; - m_HeadsetMoveValueText.text = $"{ctrlsBinding1[0].displayName},{ctrlsBinding1[1].displayName},{ctrlsBinding1[2].displayName},{ctrlsBinding1[3].displayName} + " + - $"{ctrlsBinding2[0].displayName},{ctrlsBinding2[1].displayName}"; - - m_CursorLockValueText.text = m_Simulator.toggleCursorLockAction.action.controls[0].displayName; - m_CursorLockButton.color = Cursor.lockState == CursorLockMode.Locked ? selectedColor : buttonColor; - - m_HeadsetLookButtonText.text = m_Simulator.mouseTransformationMode == XRDeviceSimulator.TransformationMode.Translate ? k_TranslateLookText : k_RotateLookText; - m_MouseModeValueText.text = m_Simulator.toggleMouseTransformationModeAction.action.controls[0].displayName; - - var manipulateHeadActionControl = m_Simulator.manipulateHeadAction.action.controls[0]; - m_HeadsetLookValueIcon.sprite = GetInputIcon(manipulateHeadActionControl); - if (manipulateHeadActionControl.name.Equals("leftButton") || manipulateHeadActionControl.name.Equals("rightButton")) - { - m_HeadsetLookValueIcon.color = Color.white; - - // If the binding is using the left button, mirror the MouseR image - if (manipulateHeadActionControl.name.Equals("leftButton")) - m_HeadsetLookValueIcon.transform.localScale = new Vector3(-1f, 1f, 1f); - } - m_HeadsetLookValueText.text = manipulateHeadActionControl.device.name == k_MouseDeviceType ? k_MouseDeviceType : manipulateHeadActionControl.displayName; - - m_LeftController.Initialize(m_Simulator); - m_RightController.Initialize(m_Simulator); - var toggleSlashHoldLeftText = $"{m_Simulator.toggleManipulateLeftAction.action.controls[0].displayName} / {m_Simulator.manipulateLeftAction.action.controls[0].displayName} [Hold]"; - var toggleSlashHoldRightText = $"{m_Simulator.toggleManipulateRightAction.action.controls[0].displayName} / {m_Simulator.manipulateRightAction.action.controls[0].displayName} [Hold]"; - m_LeftControllerButtonText.text = toggleSlashHoldLeftText; - m_RightControllerButtonText.text = toggleSlashHoldRightText; - - m_LeftHand.Initialize(m_Simulator); - m_RightHand.Initialize(m_Simulator); - m_LeftHandButtonText.text = toggleSlashHoldLeftText; - m_RightHandButtonText.text = toggleSlashHoldRightText; - - UpdateDeviceInputMethod(); - - HandsSetActive(false); - -#if XR_HANDS_1_1_OR_NEWER - m_HandsSelectedValueIcon.color = enabledColor; - m_HandsSelectedValueText.color = enabledColor; -#else - m_HandsSelectedValueIcon.color = disabledColor; - m_HandsSelectedValueText.color = disabledColor; -#endif - - m_HeadsetMoveButtonIcon.color = enabledColor; - - // Update OnDestroy with corresponding Unsubscribe call when adding here - Subscribe(m_Simulator.manipulateLeftAction, OnManipulateLeftAction); - Subscribe(m_Simulator.manipulateRightAction, OnManipulateRightAction); - Subscribe(m_Simulator.toggleManipulateLeftAction, OnToggleManipulateLeftAction); - Subscribe(m_Simulator.toggleManipulateRightAction, OnToggleManipulateRightAction); - Subscribe(m_Simulator.toggleManipulateBodyAction, OnToggleManipulateBodyAction); - Subscribe(m_Simulator.manipulateHeadAction, OnManipulateHeadAction); - Subscribe(m_Simulator.handControllerModeAction, OnHandControllerModeAction); - Subscribe(m_Simulator.cycleDevicesAction, OnCycleDevicesAction); - Subscribe(m_Simulator.stopManipulationAction, OnStopManipulationAction); - Subscribe(m_Simulator.toggleMouseTransformationModeAction, OnToggleMouseTransformationModeAction); - Subscribe(m_Simulator.negateModeAction, OnNegateModeAction); - Subscribe(m_Simulator.toggleCursorLockAction, OnToggleCursorLockAction); - Subscribe(m_Simulator.keyboardXTranslateAction, OnKeyboardXTranslateAction); - Subscribe(m_Simulator.keyboardYTranslateAction, OnKeyboardYTranslateAction); - Subscribe(m_Simulator.keyboardZTranslateAction, OnKeyboardZTranslateAction); - Subscribe(m_Simulator.restingHandAxis2DAction, OnRestingHandAxis2DAction); - Subscribe(m_Simulator.gripAction, OnGripAction); - Subscribe(m_Simulator.triggerAction, OnTriggerAction); - Subscribe(m_Simulator.menuAction, OnMenuAction); - Subscribe(m_Simulator.primaryButtonAction, OnPrimaryButtonAction); - Subscribe(m_Simulator.secondaryButtonAction, OnSecondaryButtonAction); -#if XR_HANDS_1_1_OR_NEWER - foreach (var simulatedExpression in m_Simulator.simulatedHandExpressions) - { - simulatedExpression.performed += OnHandExpressionAction; - } -#endif - - m_XRDeviceSimulatorMainPanel.SetActive(isMenuOpen); - m_XRDeviceSimulatorCollapsedPanel.SetActive(!isMenuOpen); - } - - void UpdateDeviceInputMethod() - { - var toggleManipulateText = $"{m_Simulator.toggleManipulateLeftAction.action.controls[0].displayName}, {m_Simulator.toggleManipulateRightAction.action.controls[0].displayName} [Toggle]"; -#if XR_HANDS_1_1_OR_NEWER - var modeChangeText = m_Simulator.handControllerModeAction != null ? $"{m_Simulator.handControllerModeAction.action.controls[0].displayName}" : string.Empty; -#else - var modeChangeText = string.Empty; -#endif - - m_ControllersSelectedValueText.text = m_Simulator.deviceMode == XRDeviceSimulator.DeviceMode.Controller ? toggleManipulateText : modeChangeText; - m_HandsSelectedValueText.text = m_Simulator.deviceMode == XRDeviceSimulator.DeviceMode.Hand ? toggleManipulateText : modeChangeText; - - var modeColor = m_Simulator.deviceMode == XRDeviceSimulator.DeviceMode.Controller ? enabledColor : disabledColor; - m_ControllerSelectedIcon.color = modeColor; - m_ControllerSelectedText.color = modeColor; - - modeColor = m_Simulator.deviceMode == XRDeviceSimulator.DeviceMode.Hand ? enabledColor : disabledColor; - m_HandsSelectedIcon.color = modeColor; - m_HandsSelectedText.color = modeColor; - } - - internal Sprite GetInputIcon(InputControl control) - { - if (control == null) - return null; - - var icon = keyboardSprite; - if (control.device.name == k_MouseDeviceType) - { - switch (control.name) - { - case "leftButton": - case "rightButton": - icon = rMouseSprite; - break; - default: - icon = mouseSprite; - break; - } - } - - return icon; - } - - /// - /// Hides the simulator UI panel when called while displaying the simulator button. - /// - public void OnClickCloseSimulatorUIPanel() - { - isMenuOpen = false; - m_XRDeviceSimulatorMainPanel.SetActive(false); - m_XRDeviceSimulatorCollapsedPanel.SetActive(true); - } - - /// - /// Displays the simulator UI panel when called while hiding the simulator button. - /// - public void OnClickOpenSimulatorUIPanel() - { - isMenuOpen = true; - m_XRDeviceSimulatorMainPanel.SetActive(true); - m_XRDeviceSimulatorCollapsedPanel.SetActive(false); - } - - void OnActivateLeftDevice() - { - if (m_Simulator.deviceMode == XRDeviceSimulator.DeviceMode.Controller) - OnActivateLeftController(); - else if (m_Simulator.deviceMode == XRDeviceSimulator.DeviceMode.Hand) - OnActivateLeftHand(); - } - - void OnActivateRightDevice() - { - if (m_Simulator.deviceMode == XRDeviceSimulator.DeviceMode.Controller) - OnActivateRightController(); - else if (m_Simulator.deviceMode == XRDeviceSimulator.DeviceMode.Hand) - OnActivateRightHand(); - } - - void OnActivateBothDevices() - { - if (m_Simulator.deviceMode == XRDeviceSimulator.DeviceMode.Controller) - OnActivateBothControllers(); - else if (m_Simulator.deviceMode == XRDeviceSimulator.DeviceMode.Hand) - OnActivateBothHands(); - } - - /// - /// Sets the Left Controller device as active to receive input. - /// - void OnActivateLeftController() - { - m_CurrentSelectedDeviceText.text = "Left Controller"; - OnActivateController(m_LeftController); - } - - /// - /// Sets the Right Controller device as active to receive input. - /// - void OnActivateRightController() - { - m_CurrentSelectedDeviceText.text = "Right Controller"; - OnActivateController(m_RightController); - } - - void OnActivateController(XRDeviceSimulatorControllerUI controller) - { - ControllersSetActive(true); - PushCurrentButtonState(controller); - controller.SetAsActiveController(true, m_Simulator); - var other = controller == m_LeftController ? m_RightController : m_LeftController; - other.SetAsActiveController(false, m_Simulator, true); - - HeadDeviceSetActive(false); - HandsSetActive(false); - } - - /// - /// Sets both Left & Right Controller devices as active to receive input. - /// - void OnActivateBothControllers() - { - ControllersSetActive(true); - m_CurrentSelectedDeviceText.text = "Left & Right Controllers"; - PushCurrentButtonState(m_LeftController); - PushCurrentButtonState(m_RightController); - m_LeftController.SetAsActiveController(true, m_Simulator); - m_RightController.SetAsActiveController(true, m_Simulator); - - HeadDeviceSetActive(false); - HandsSetActive(false); - } - - void PushCurrentButtonState(XRDeviceSimulatorControllerUI controller) - { - controller.OnGrip(m_Simulator.gripAction.action.inProgress); - controller.OnTrigger(m_Simulator.triggerAction.action.inProgress); - controller.OnMenu(m_Simulator.menuAction.action.inProgress); - controller.OnPrimaryButton(m_Simulator.primaryButtonAction.action.inProgress); - controller.OnSecondaryButton(m_Simulator.secondaryButtonAction.action.inProgress); - controller.OnXAxisTranslatePerformed(m_Simulator.keyboardXTranslateAction.action.inProgress); - controller.OnZAxisTranslatePerformed(m_Simulator.keyboardZTranslateAction.action.inProgress); - } - - /// - /// Sets the Left Hand device as active to receive input. - /// - void OnActivateLeftHand() - { - m_CurrentSelectedDeviceText.text = "Left Hand"; - OnActivateHand(m_LeftHand); - } - - /// - /// Sets the Right Hand device as active to receive input. - /// - void OnActivateRightHand() - { - m_CurrentSelectedDeviceText.text = "Right Hand"; - OnActivateHand(m_RightHand); - } - - void OnActivateHand(XRDeviceSimulatorHandsUI hand) - { - HandsSetActive(true); - hand.SetActive(true, m_Simulator); - XRDeviceSimulatorHandsUI otherHand = hand == m_LeftHand ? m_RightHand : m_LeftHand; - otherHand.SetActive(false, m_Simulator); - - HeadDeviceSetActive(false); - ControllersSetActive(false); - } - - /// - /// Sets both Left & Right Hand devices as active to receive input. - /// - void OnActivateBothHands() - { - HandsSetActive(true); - m_CurrentSelectedDeviceText.text = "Left & Right Hands"; - m_LeftHand.SetActive(true, m_Simulator); - m_RightHand.SetActive(true, m_Simulator); - - HeadDeviceSetActive(false); - ControllersSetActive(false); - } - - /// - /// Sets the headset device as active to receive input. - /// - void OnActivateHeadsetDevice(bool activated = true) - { - m_LeftController.SetAsActiveController(false, m_Simulator); - m_RightController.SetAsActiveController(false, m_Simulator); - - m_LeftHand.SetActive(false, m_Simulator); - m_RightHand.SetActive(false, m_Simulator); - - m_CurrentSelectedDeviceText.text = activated ? "Head Mounted Display (HMD)" : "None"; - m_HeadsetImage.gameObject.SetActive(activated); - - HeadDeviceSetActive(activated); - - if (m_Simulator.manipulatingFPS) - { - ControllersSetActive(false, m_Simulator.deviceMode == XRDeviceSimulator.DeviceMode.Controller); - HandsSetActive(false, m_Simulator.deviceMode == XRDeviceSimulator.DeviceMode.Hand); - } - else - { - HandsSetActive(false, Mathf.Approximately(m_HandsCanvasGroup.alpha, 1f)); - ControllersSetActive(false, Mathf.Approximately(m_ControllersCanvasGroup.alpha, 1f)); - } - } - - /// - /// Updates all the UI associated the the Headset. - /// - /// Whether the headset is the active device or not. - void HeadDeviceSetActive(bool active) - { - m_HeadsetImage.gameObject.SetActive(active); - m_HeadsetSelectedButton.color = active ? selectedColor : buttonColor; - - var currentColor = active ? enabledColor : disabledColor; - m_HeadsetMoveButtonIcon.color = currentColor; - m_HeadsetMoveButtonText.color = currentColor; - m_HeadsetMoveValueIcon.color = currentColor; - m_HeadsetMoveValueText.color = currentColor; - - m_HeadsetMoveButton.color = active ? buttonColor : disabledButtonColor; - } - - void HandsSetActive(bool isActive, bool showCanvasGroup = false) - { - m_HandsCanvasGroup.alpha = isActive || showCanvasGroup ? 1f : 0f; - -#if XR_HANDS_1_1_OR_NEWER - m_HandsSelectedButton.color = isActive ? selectedColor : buttonColor; -#else - m_HandsSelectedButton.color = disabledButtonColor; -#endif - } - - void ControllersSetActive(bool isActive, bool showCanvasGroup = false) - { - m_ControllersCanvasGroup.alpha = isActive || showCanvasGroup ? 1f : 0f; - m_ControllerSelectedButton.color = isActive ? selectedColor : buttonColor; - } - - static void Subscribe(InputActionReference reference, Action performedOrCanceled) - { - var action = reference != null ? reference.action : null; - if (action != null && performedOrCanceled != null) - { - action.performed += performedOrCanceled; - action.canceled += performedOrCanceled; - } - } - - static void Unsubscribe(InputActionReference reference, Action performedOrCanceled) - { - var action = reference != null ? reference.action : null; - if (action != null && performedOrCanceled != null) - { - action.performed -= performedOrCanceled; - action.canceled -= performedOrCanceled; - } - } - - void OnManipulateLeftAction(InputAction.CallbackContext context) - { - if (context.phase.IsInProgress()) - { - if (m_Simulator.manipulatingLeftDevice && m_Simulator.manipulatingRightDevice) - OnActivateBothDevices(); - else if (m_Simulator.manipulatingLeftDevice) - OnActivateLeftDevice(); - } - else - { - if (m_Simulator.manipulatingRightDevice) - OnActivateRightDevice(); - else - OnActivateHeadsetDevice(m_Simulator.manipulatingFPS); - } - } - - void OnManipulateRightAction(InputAction.CallbackContext context) - { - if (context.phase.IsInProgress()) - { - if (m_Simulator.manipulatingLeftDevice && m_Simulator.manipulatingRightDevice) - OnActivateBothDevices(); - else if (m_Simulator.manipulatingRightDevice) - OnActivateRightDevice(); - } - else - { - if (m_Simulator.manipulatingLeftDevice) - OnActivateLeftDevice(); - else - OnActivateHeadsetDevice(m_Simulator.manipulatingFPS); - } - } - - void OnToggleManipulateLeftAction(InputAction.CallbackContext context) - { - if (context.phase.IsInProgress()) - { - if (m_Simulator.manipulatingLeftDevice) - OnActivateLeftDevice(); - else - OnActivateHeadsetDevice(); - } - } - - void OnToggleManipulateRightAction(InputAction.CallbackContext context) - { - if (context.phase.IsInProgress()) - { - if (m_Simulator.manipulatingRightDevice) - OnActivateRightDevice(); - else - OnActivateHeadsetDevice(); - } - } - - void OnToggleManipulateBodyAction(InputAction.CallbackContext context) - { - if (context.phase.IsInProgress()) - { - OnActivateHeadsetDevice(); - } - } - - void OnManipulateHeadAction(InputAction.CallbackContext context) - { - var isInProgress = context.phase.IsInProgress(); - var noDevices = !m_Simulator.manipulatingLeftDevice && !m_Simulator.manipulatingRightDevice; - if (isInProgress) - { - if (m_Simulator.manipulatingFPS || noDevices) - OnActivateHeadsetDevice(); - } - else if (noDevices) - { - OnActivateHeadsetDevice(m_Simulator.manipulatingFPS); - } - - m_HeadsetLookButton.color = isInProgress ? selectedColor : buttonColor; - } - - void OnHandControllerModeAction(InputAction.CallbackContext context) - { -#if XR_HANDS_1_1_OR_NEWER - if (context.phase.IsInProgress()) - { - if (m_Simulator.manipulatingLeftDevice && m_Simulator.manipulatingRightDevice) - OnActivateBothDevices(); - else if (m_Simulator.manipulatingLeftDevice) - OnActivateLeftDevice(); - else if (m_Simulator.manipulatingRightDevice) - OnActivateRightDevice(); - else if (m_Simulator.manipulatingFPS) - OnActivateHeadsetDevice(); - else - { - ControllersSetActive(false, m_Simulator.deviceMode == XRDeviceSimulator.DeviceMode.Controller); - HandsSetActive(false, m_Simulator.deviceMode == XRDeviceSimulator.DeviceMode.Hand); - } - } - - UpdateDeviceInputMethod(); -#endif - } - - void OnCycleDevicesAction(InputAction.CallbackContext context) - { - if (context.phase.IsInProgress()) - { - if (m_Simulator.manipulatingFPS) - OnActivateHeadsetDevice(); - - if (m_Simulator.manipulatingLeftDevice) - OnActivateLeftDevice(); - - if (m_Simulator.manipulatingRightDevice) - OnActivateRightDevice(); - } - } - - void OnStopManipulationAction(InputAction.CallbackContext context) - { - if (context.phase.IsInProgress()) - OnActivateHeadsetDevice(m_Simulator.manipulatingFPS); - } - - void OnToggleMouseTransformationModeAction(InputAction.CallbackContext context) - { - if (context.phase.IsInProgress()) - OnSetMouseMode(); - } - - void OnNegateModeAction(InputAction.CallbackContext context) - { - OnSetMouseMode(); - } - - void OnToggleCursorLockAction(InputAction.CallbackContext context) - { - if (context.phase.IsInProgress()) - OnCursorLockChanged(); - } - - void OnKeyboardXTranslateAction(InputAction.CallbackContext context) - { - OnXAxisTranslatePerformed(context.phase.IsInProgress(), false); - } - - void OnKeyboardYTranslateAction(InputAction.CallbackContext context) - { - OnYAxisTranslatePerformed(context.phase.IsInProgress()); - } - - void OnKeyboardZTranslateAction(InputAction.CallbackContext context) - { - OnZAxisTranslatePerformed(context.phase.IsInProgress(), false); - } - - void OnRestingHandAxis2DAction(InputAction.CallbackContext context) - { - var restingHandAxis2DInput = Vector2.ClampMagnitude(context.ReadValue(), 1f); - if (context.phase.IsInProgress()) - { - if (restingHandAxis2DInput.x != 0f) - OnXAxisTranslatePerformed(true, true); - if (restingHandAxis2DInput.y != 0f) - OnZAxisTranslatePerformed(true, true); - } - else - { - if (restingHandAxis2DInput.x == 0f) - OnXAxisTranslatePerformed(false, true); - if (restingHandAxis2DInput.y == 0f) - OnZAxisTranslatePerformed(false, true); - } - } - - void OnGripAction(InputAction.CallbackContext context) - { - OnGripPerformed(context.phase.IsInProgress()); - } - - void OnTriggerAction(InputAction.CallbackContext context) - { - OnTriggerPerformed(context.phase.IsInProgress()); - } - - void OnMenuAction(InputAction.CallbackContext context) - { - OnMenuPerformed(context.phase.IsInProgress()); - } - - void OnPrimaryButtonAction(InputAction.CallbackContext context) - { - OnPrimaryButtonPerformed(context.phase.IsInProgress()); - } - - void OnSecondaryButtonAction(InputAction.CallbackContext context) - { - OnSecondaryButtonPerformed(context.phase.IsInProgress()); - } - - void OnHandExpressionAction(XRDeviceSimulator.SimulatedHandExpression simulatedExpression, InputAction.CallbackContext context) - { - if (context.phase.IsInProgress()) - { - if (m_Simulator.manipulatingLeftHand) - m_LeftHand.ToggleExpression(simulatedExpression, m_Simulator); - - if (m_Simulator.manipulatingRightHand) - m_RightHand.ToggleExpression(simulatedExpression, m_Simulator); - } - } - - void OnSetMouseMode() - { - // Translate/Rotate - m_MouseModeButtonText.text = m_Simulator.negateMode - ? XRDeviceSimulator.Negate(m_Simulator.mouseTransformationMode).ToString() - : m_Simulator.mouseTransformationMode.ToString(); - // Move/Look - m_HeadsetLookButtonText.text = - m_Simulator.mouseTransformationMode == XRDeviceSimulator.TransformationMode.Translate - ? k_TranslateLookText - : k_RotateLookText; - } - - void OnCursorLockChanged() - { - m_CursorLockButton.color = Cursor.lockState == CursorLockMode.Locked ? selectedColor : buttonColor; - } - - // x-axis [A-D] - void OnXAxisTranslatePerformed(bool activated, bool restingHand) - { - var active = activated; - if (!restingHand) - { - m_XAxisActivated = activated; - active |= m_ZAxisActivated; - } - - if (m_Simulator.manipulatingLeftController) - { - var lController = restingHand ? m_RightController : m_LeftController; - lController.OnXAxisTranslatePerformed(active); - } - - if (m_Simulator.manipulatingRightController) - { - var rController = restingHand ? m_LeftController : m_RightController; - rController.OnXAxisTranslatePerformed(active); - } - - if (m_Simulator.manipulatingFPS) - m_HeadsetMoveButton.color = active ? selectedColor : buttonColor; - } - - // y-axis [Q-E] - void OnYAxisTranslatePerformed(bool activated) - { - if (m_Simulator.manipulatingFPS) - m_HeadsetMoveButton.color = activated ? selectedColor : buttonColor; - } - - // z-axis [W-S] - void OnZAxisTranslatePerformed(bool activated, bool restingHand) - { - var active = activated; - if (!restingHand) - { - m_ZAxisActivated = activated; - active |= m_XAxisActivated; - } - - if (m_Simulator.manipulatingLeftController) - { - var lController = restingHand ? m_RightController : m_LeftController; - lController.OnZAxisTranslatePerformed(active); - } - - if (m_Simulator.manipulatingRightController) - { - var rController = restingHand ? m_LeftController : m_RightController; - rController.OnZAxisTranslatePerformed(active); - } - - if (m_Simulator.manipulatingFPS) - m_HeadsetMoveButton.color = active ? selectedColor : buttonColor; - } - - void OnMenuPerformed(bool activated) - { - if (m_Simulator.manipulatingLeftController) - m_LeftController.OnMenu(activated); - - if (m_Simulator.manipulatingRightController) - m_RightController.OnMenu(activated); - } - - void OnGripPerformed(bool activated) - { - if (m_Simulator.manipulatingLeftController) - m_LeftController.OnGrip(activated); - - if (m_Simulator.manipulatingRightController) - m_RightController.OnGrip(activated); - } - - void OnTriggerPerformed(bool activated) - { - if (m_Simulator.manipulatingLeftController) - m_LeftController.OnTrigger(activated); - - if (m_Simulator.manipulatingRightController) - m_RightController.OnTrigger(activated); - } - - void OnPrimaryButtonPerformed(bool activated) - { - if (m_Simulator.manipulatingLeftController) - m_LeftController.OnPrimaryButton(activated); - - if (m_Simulator.manipulatingRightController) - m_RightController.OnPrimaryButton(activated); - } - - void OnSecondaryButtonPerformed(bool activated) - { - if (m_Simulator.manipulatingLeftController) - m_LeftController.OnSecondaryButton(activated); - - if (m_Simulator.manipulatingRightController) - m_RightController.OnSecondaryButton(activated); - } - } -} diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI.meta deleted file mode 100644 index 24e50c11..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 1713155dc4dd14e65b554e9690db4a5b -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/ControllerDevice.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/ControllerDevice.meta deleted file mode 100644 index bd6a3be6..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/ControllerDevice.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: f797978be572d4bbe98809565eb58099 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/ControllerDevice/ControllerLeft.png b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/ControllerDevice/ControllerLeft.png deleted file mode 100644 index 78b6389a..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/ControllerDevice/ControllerLeft.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:79d00128f31818a7a1213100d500d91e36e363c1fb49b6f08b4eb0709d6dca8e -size 25129 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/ControllerDevice/ControllerLeft.png.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/ControllerDevice/ControllerLeft.png.meta deleted file mode 100644 index a10c7b1c..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/ControllerDevice/ControllerLeft.png.meta +++ /dev/null @@ -1,159 +0,0 @@ -fileFormatVersion: 2 -guid: 10abf1be8eef148d4aa4b96b2af7a9f0 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - 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: 1 - wrapV: 1 - wrapW: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - 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: 1 - spriteTessellationDetail: -1 - textureType: 8 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - cookieLightType: 1 - 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: 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: 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: Server - 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: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/ControllerDevice/ControllerOverlayLinesLeft.png b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/ControllerDevice/ControllerOverlayLinesLeft.png deleted file mode 100644 index 59b99f96..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/ControllerDevice/ControllerOverlayLinesLeft.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c0527b4f6c8df5f45ebcaf313f2e3d6fcde7951bd99d12df4cd03e3b70e2f200 -size 10158 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/ControllerDevice/ControllerOverlayLinesLeft.png.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/ControllerDevice/ControllerOverlayLinesLeft.png.meta deleted file mode 100644 index 2728bbbe..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/ControllerDevice/ControllerOverlayLinesLeft.png.meta +++ /dev/null @@ -1,159 +0,0 @@ -fileFormatVersion: 2 -guid: cd4fe4c19a40743a6896069a50a394ec -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - 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: 1 - wrapV: 1 - wrapW: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - 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: 1 - spriteTessellationDetail: -1 - textureType: 8 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - cookieLightType: 1 - 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: 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: 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: Server - 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: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/ControllerDevice/ControllerOverlayLinesRight.png b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/ControllerDevice/ControllerOverlayLinesRight.png deleted file mode 100644 index feb29795..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/ControllerDevice/ControllerOverlayLinesRight.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0edeb277d5b7e94b8a597ddfbdda2e5b71172b86020846e24e15ae46c859e68a -size 10696 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/ControllerDevice/ControllerOverlayLinesRight.png.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/ControllerDevice/ControllerOverlayLinesRight.png.meta deleted file mode 100644 index 6224d656..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/ControllerDevice/ControllerOverlayLinesRight.png.meta +++ /dev/null @@ -1,159 +0,0 @@ -fileFormatVersion: 2 -guid: 310ef0f38fe364cc986d05acdbdf1183 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - 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: 1 - wrapV: 1 - wrapW: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - 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: 1 - spriteTessellationDetail: -1 - textureType: 8 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - cookieLightType: 1 - 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: 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: 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: Server - 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: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/ControllerDevice/ControllerRight.png b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/ControllerDevice/ControllerRight.png deleted file mode 100644 index a250a258..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/ControllerDevice/ControllerRight.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:29f8ffba3736a2d61c599f8e9703af8b2104216305ea2431e44dad2926c81c20 -size 25056 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/ControllerDevice/ControllerRight.png.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/ControllerDevice/ControllerRight.png.meta deleted file mode 100644 index d3a0a2e4..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/ControllerDevice/ControllerRight.png.meta +++ /dev/null @@ -1,159 +0,0 @@ -fileFormatVersion: 2 -guid: 17c263f6077f14b218b13656aacd9551 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - 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: 1 - wrapV: 1 - wrapW: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - 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: 1 - spriteTessellationDetail: -1 - textureType: 8 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - cookieLightType: 1 - 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: 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: 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: Server - 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: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/ControllerDevice/xr_ctlr.png b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/ControllerDevice/xr_ctlr.png deleted file mode 100644 index 73f3360d..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/ControllerDevice/xr_ctlr.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:eaad62a8149dc77b8c3ec9fbdb7c84117004b3f340247e68bacd190a08f4fbf3 -size 17982 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/ControllerDevice/xr_ctlr.png.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/ControllerDevice/xr_ctlr.png.meta deleted file mode 100644 index 51f295c5..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/ControllerDevice/xr_ctlr.png.meta +++ /dev/null @@ -1,147 +0,0 @@ -fileFormatVersion: 2 -guid: 7d7a2f6c5e996e24388af5a8227afdcf -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - 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: 1 - wrapV: 1 - wrapW: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - 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: 1 - spriteTessellationDetail: -1 - textureType: 8 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - cookieLightType: 1 - 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: 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: 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: Server - 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: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General.meta deleted file mode 100644 index 9b4e1d8d..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 7029f8d454f034b71b5b1eb1ba1b324d -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/CloseWindow.png b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/CloseWindow.png deleted file mode 100644 index f4324f0b..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/CloseWindow.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1c80c4cbc8f0121be5d5873c40753ce07f06d155d2e09fca91278fb0a14de645 -size 7147 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/CloseWindow.png.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/CloseWindow.png.meta deleted file mode 100644 index d7dddbda..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/CloseWindow.png.meta +++ /dev/null @@ -1,159 +0,0 @@ -fileFormatVersion: 2 -guid: c76518a5819794083a346812c0906b77 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - 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: 1 - wrapV: 1 - wrapW: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - 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: 1 - spriteTessellationDetail: -1 - textureType: 8 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - cookieLightType: 1 - 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: 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: 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: Server - 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: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/CycleXRDevices.png b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/CycleXRDevices.png deleted file mode 100644 index 244b880d..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/CycleXRDevices.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7fbd32c3ecc30c0d2fe5472fc9e30949b3019dd64e620ef0b9da09dd1b814d0c -size 7983 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/CycleXRDevices.png.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/CycleXRDevices.png.meta deleted file mode 100644 index 7f05ab29..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/CycleXRDevices.png.meta +++ /dev/null @@ -1,159 +0,0 @@ -fileFormatVersion: 2 -guid: 731e7aed8e9f540ac8bf2a7b66abdaf6 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - 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: 1 - wrapV: 1 - wrapW: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - 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: 1 - spriteTessellationDetail: -1 - textureType: 8 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - cookieLightType: 1 - 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: 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: 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: Server - 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: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/DeviceSimUI_bg.png b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/DeviceSimUI_bg.png deleted file mode 100644 index 8ee15040..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/DeviceSimUI_bg.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a80162589cfec10782e719b9e7bce6ba8ef53f9a89aff7d565a5f9059bd840a2 -size 1945 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/DeviceSimUI_bg.png.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/DeviceSimUI_bg.png.meta deleted file mode 100644 index 6a872878..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/DeviceSimUI_bg.png.meta +++ /dev/null @@ -1,159 +0,0 @@ -fileFormatVersion: 2 -guid: d7348fb3f11ba4f6f933462328963785 -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: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 30, y: 30, z: 30, w: 30} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 8 - 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 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 1537655665 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/Gripper.png b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/Gripper.png deleted file mode 100644 index 914994d8..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/Gripper.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:78f4090624e61dd778b99327d5b2037aa48ac099c8335f4689b341704aaa9e5b -size 3154 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/Gripper.png.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/Gripper.png.meta deleted file mode 100644 index a5a6b1d4..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/Gripper.png.meta +++ /dev/null @@ -1,147 +0,0 @@ -fileFormatVersion: 2 -guid: 17689808316e14280ad508a625c4c88f -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - 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: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - 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: 1 - spriteTessellationDetail: -1 - textureType: 8 - 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: LinuxHeadlessSimulation - 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: Server - 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: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/KeyboardIcon.png b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/KeyboardIcon.png deleted file mode 100644 index 238c22b9..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/KeyboardIcon.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7536939b48027a0cbaaa5c6f5817c63738c95fa02f062c4dc17d0f8ae171be3c -size 5866 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/KeyboardIcon.png.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/KeyboardIcon.png.meta deleted file mode 100644 index 70d53484..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/KeyboardIcon.png.meta +++ /dev/null @@ -1,159 +0,0 @@ -fileFormatVersion: 2 -guid: 76dc0abb2ebb44c9a9bd39266f0b3c91 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - 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: 1 - wrapV: 1 - wrapW: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - 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: 1 - spriteTessellationDetail: -1 - textureType: 8 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - cookieLightType: 1 - 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: 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: 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: Server - 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: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/Locked.png b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/Locked.png deleted file mode 100644 index a4bd009b..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/Locked.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:92408e4ef1bb3696169216fa6351a37ae4f61de5829b6440350dc54ff0fb099f -size 5673 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/Locked.png.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/Locked.png.meta deleted file mode 100644 index 47513827..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/Locked.png.meta +++ /dev/null @@ -1,159 +0,0 @@ -fileFormatVersion: 2 -guid: 3aad042fcb57b4bed9d9a46b932df060 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - 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: 1 - wrapV: 1 - wrapW: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - 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: 1 - spriteTessellationDetail: -1 - textureType: 8 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - cookieLightType: 1 - 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: 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: 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: Server - 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: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/Look.png b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/Look.png deleted file mode 100644 index ab7715ad..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/Look.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:feb8cd575af71167f58e5c4ef44eac0cf5a0f44317f736095cf944e2bfb1fafe -size 6733 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/Look.png.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/Look.png.meta deleted file mode 100644 index 1b7d97b1..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/Look.png.meta +++ /dev/null @@ -1,159 +0,0 @@ -fileFormatVersion: 2 -guid: 5410adf0b914f49438506b7dd0022773 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - 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: 1 - wrapV: 1 - wrapW: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - 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: 1 - spriteTessellationDetail: -1 - textureType: 8 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - cookieLightType: 1 - 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: 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: 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: Server - 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: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/OpenWindow.png b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/OpenWindow.png deleted file mode 100644 index fb27ea0b..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/OpenWindow.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:943b1d2156c17918e1694322a3ea5eedc84acd81efe2915345ad2ce7c00a93c2 -size 5680 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/OpenWindow.png.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/OpenWindow.png.meta deleted file mode 100644 index 3409c1dd..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/OpenWindow.png.meta +++ /dev/null @@ -1,159 +0,0 @@ -fileFormatVersion: 2 -guid: 633d1ace045fe402a9b307cb58251aa4 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - 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: 1 - wrapV: 1 - wrapW: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - 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: 1 - spriteTessellationDetail: -1 - textureType: 8 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - cookieLightType: 1 - 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: 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: 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: Server - 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: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/Unlocked.png b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/Unlocked.png deleted file mode 100644 index fe194d54..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/Unlocked.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:19cc1a266418a9552348459d43148df776d382c6ff38ae2d3cc5c8a03416bb59 -size 4359 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/Unlocked.png.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/Unlocked.png.meta deleted file mode 100644 index 12daeee8..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/Unlocked.png.meta +++ /dev/null @@ -1,159 +0,0 @@ -fileFormatVersion: 2 -guid: f01f3bb228b3b4251a04e2036212d115 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - 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: 1 - wrapV: 1 - wrapW: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - 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: 1 - spriteTessellationDetail: -1 - textureType: 8 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - cookieLightType: 1 - 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: 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: 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: Server - 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: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/btn_bgbottom.png b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/btn_bgbottom.png deleted file mode 100644 index ee92ec44..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/btn_bgbottom.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:755f08b896235c2d53ac2729da896c253cf3f147dcab154ea21ec2792af421ad -size 569 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/btn_bgbottom.png.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/btn_bgbottom.png.meta deleted file mode 100644 index 61093873..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/General/btn_bgbottom.png.meta +++ /dev/null @@ -1,147 +0,0 @@ -fileFormatVersion: 2 -guid: 89cb99e3e22696848a1cbce7b320f520 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - 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: 1 - wrapV: 1 - wrapW: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 16, y: 0, z: 13, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 - alphaIsTransparency: 1 - spriteTessellationDetail: -1 - textureType: 8 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - cookieLightType: 1 - 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: 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: 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: Server - 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: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands.meta deleted file mode 100644 index 4d4a1932..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 83f134399f6a4734c9c82f339cbf170a -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands/Hand_Default.png b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands/Hand_Default.png deleted file mode 100644 index 61e0990f..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands/Hand_Default.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:722e0ba3e9cf7729152874779fe5b706bfa445aa06105abb0790c6f67952535c -size 9881 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands/Hand_Default.png.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands/Hand_Default.png.meta deleted file mode 100644 index 1f6c35d3..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands/Hand_Default.png.meta +++ /dev/null @@ -1,172 +0,0 @@ -fileFormatVersion: 2 -guid: 7d3dbc333af046c4193982e1166659dd -TextureImporter: - internalIDToNameTable: - - first: - 213: -4228467354032736297 - second: Default - externalObjects: {} - serializedVersion: 12 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - 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: 1 - wrapV: 1 - wrapW: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 23, y: 0, z: 23, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 - alphaIsTransparency: 1 - spriteTessellationDetail: -1 - textureType: 8 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - cookieLightType: 1 - 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: 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: 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: Server - 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: - - serializedVersion: 2 - name: Default - rect: - serializedVersion: 2 - x: 22 - y: 0 - width: 468 - height: 571 - alignment: 0 - pivot: {x: 0.5, y: 0.5} - border: {x: 0, y: 0, z: 0, w: 0} - outline: [] - physicsShape: [] - tessellationDetail: 0 - bones: [] - spriteID: 7d7fa8a48577155c0800000000000000 - internalID: -4228467354032736297 - vertices: [] - indices: - edges: [] - weights: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: - Default: -4228467354032736297 - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands/Hand_Fist.png b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands/Hand_Fist.png deleted file mode 100644 index a6a15321..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands/Hand_Fist.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9783290d04a0fa048dee44fa9e59509fdff020bf44968f546e608bdf07b358ac -size 12933 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands/Hand_Fist.png.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands/Hand_Fist.png.meta deleted file mode 100644 index b35f2318..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands/Hand_Fist.png.meta +++ /dev/null @@ -1,172 +0,0 @@ -fileFormatVersion: 2 -guid: a6e9e9736379c164e81fdfd2c806a91c -TextureImporter: - internalIDToNameTable: - - first: - 213: -4228467354032736297 - second: Poke - externalObjects: {} - serializedVersion: 12 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - 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: 1 - wrapV: 1 - wrapW: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 23, y: 0, z: 23, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 - alphaIsTransparency: 1 - spriteTessellationDetail: -1 - textureType: 8 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - cookieLightType: 1 - 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: 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: 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: Server - 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: - - serializedVersion: 2 - name: Poke - rect: - serializedVersion: 2 - x: 41 - y: 0 - width: 429 - height: 568 - alignment: 0 - pivot: {x: 0.5, y: 0.5} - border: {x: 0, y: 0, z: 0, w: 0} - outline: [] - physicsShape: [] - tessellationDetail: 0 - bones: [] - spriteID: 7d7fa8a48577155c0800000000000000 - internalID: -4228467354032736297 - vertices: [] - indices: - edges: [] - weights: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: - Poke: -4228467354032736297 - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands/Hand_Grab.png b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands/Hand_Grab.png deleted file mode 100644 index 4717dad6..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands/Hand_Grab.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d2c1333963ecbe3bba0387ab456c6f4dc598c461bb68b60cda6e6fac960fa2d6 -size 15126 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands/Hand_Grab.png.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands/Hand_Grab.png.meta deleted file mode 100644 index adc0cc0b..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands/Hand_Grab.png.meta +++ /dev/null @@ -1,172 +0,0 @@ -fileFormatVersion: 2 -guid: bd6b9153aa3b96f49b238bbf6ae68b80 -TextureImporter: - internalIDToNameTable: - - first: - 213: -4228467354032736297 - second: Grab - externalObjects: {} - serializedVersion: 12 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - 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: 1 - wrapV: 1 - wrapW: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 23, y: 0, z: 23, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 - alphaIsTransparency: 1 - spriteTessellationDetail: -1 - textureType: 8 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - cookieLightType: 1 - 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: 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: 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: Server - 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: - - serializedVersion: 2 - name: Grab - rect: - serializedVersion: 2 - x: 25 - y: 0 - width: 462 - height: 542 - alignment: 0 - pivot: {x: 0.5, y: 0.5} - border: {x: 0, y: 0, z: 0, w: 0} - outline: [] - physicsShape: [] - tessellationDetail: 0 - bones: [] - spriteID: 7d7fa8a48577155c0800000000000000 - internalID: -4228467354032736297 - vertices: [] - indices: - edges: [] - weights: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: - Grab: -4228467354032736297 - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands/Hand_Open.png b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands/Hand_Open.png deleted file mode 100644 index 58ec367d..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands/Hand_Open.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4f6a75dbce8b6a40a6d80dbc9869d4c62aa3c352103d80559908105b4cde5f1b -size 9927 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands/Hand_Open.png.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands/Hand_Open.png.meta deleted file mode 100644 index 95e96f81..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands/Hand_Open.png.meta +++ /dev/null @@ -1,172 +0,0 @@ -fileFormatVersion: 2 -guid: ceccab26080354140af21950c6d338d5 -TextureImporter: - internalIDToNameTable: - - first: - 213: -4228467354032736297 - second: Poke - externalObjects: {} - serializedVersion: 12 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - 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: 1 - wrapV: 1 - wrapW: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 23, y: 0, z: 23, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 - alphaIsTransparency: 1 - spriteTessellationDetail: -1 - textureType: 8 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - cookieLightType: 1 - 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: 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: 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: Server - 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: - - serializedVersion: 2 - name: Poke - rect: - serializedVersion: 2 - x: 41 - y: 0 - width: 429 - height: 568 - alignment: 0 - pivot: {x: 0.5, y: 0.5} - border: {x: 0, y: 0, z: 0, w: 0} - outline: [] - physicsShape: [] - tessellationDetail: 0 - bones: [] - spriteID: 7d7fa8a48577155c0800000000000000 - internalID: -4228467354032736297 - vertices: [] - indices: - edges: [] - weights: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: - Poke: -4228467354032736297 - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands/Hand_Pinch.png b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands/Hand_Pinch.png deleted file mode 100644 index a95d94ed..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands/Hand_Pinch.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e96700d9bef361643de9cc6e1b0adadce57d48403df9140f2206b0dbee7cdfc1 -size 12073 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands/Hand_Pinch.png.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands/Hand_Pinch.png.meta deleted file mode 100644 index ece8809a..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands/Hand_Pinch.png.meta +++ /dev/null @@ -1,172 +0,0 @@ -fileFormatVersion: 2 -guid: a6721511441c05a43964dac58584c890 -TextureImporter: - internalIDToNameTable: - - first: - 213: -4228467354032736297 - second: Pinch - externalObjects: {} - serializedVersion: 12 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - 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: 1 - wrapV: 1 - wrapW: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 23, y: 0, z: 23, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 - alphaIsTransparency: 1 - spriteTessellationDetail: -1 - textureType: 8 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - cookieLightType: 1 - 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: 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: 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: Server - 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: - - serializedVersion: 2 - name: Pinch - rect: - serializedVersion: 2 - x: 58 - y: 0 - width: 396 - height: 568 - alignment: 0 - pivot: {x: 0.5, y: 0.5} - border: {x: 0, y: 0, z: 0, w: 0} - outline: [] - physicsShape: [] - tessellationDetail: 0 - bones: [] - spriteID: 7d7fa8a48577155c0800000000000000 - internalID: -4228467354032736297 - vertices: [] - indices: - edges: [] - weights: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: - Pinch: -4228467354032736297 - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands/Hand_Poke.png b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands/Hand_Poke.png deleted file mode 100644 index 813b8879..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands/Hand_Poke.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:690a3ceacf0f982789674fbf5485e69df4b07754793b2f990e2aee6369841ef4 -size 7376 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands/Hand_Poke.png.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands/Hand_Poke.png.meta deleted file mode 100644 index 35dd3031..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands/Hand_Poke.png.meta +++ /dev/null @@ -1,172 +0,0 @@ -fileFormatVersion: 2 -guid: a2586e6b399337f409118c79273dc29d -TextureImporter: - internalIDToNameTable: - - first: - 213: -4228467354032736297 - second: Poke - externalObjects: {} - serializedVersion: 12 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - 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: 1 - wrapV: 1 - wrapW: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 23, y: 0, z: 23, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 - alphaIsTransparency: 1 - spriteTessellationDetail: -1 - textureType: 8 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - cookieLightType: 1 - 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: 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: 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: Server - 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: - - serializedVersion: 2 - name: Poke - rect: - serializedVersion: 2 - x: 41 - y: 0 - width: 429 - height: 568 - alignment: 0 - pivot: {x: 0.5, y: 0.5} - border: {x: 0, y: 0, z: 0, w: 0} - outline: [] - physicsShape: [] - tessellationDetail: 0 - bones: [] - spriteID: 7d7fa8a48577155c0800000000000000 - internalID: -4228467354032736297 - vertices: [] - indices: - edges: [] - weights: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: - Poke: -4228467354032736297 - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands/Hand_Thumb.png b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands/Hand_Thumb.png deleted file mode 100644 index 5ba950c7..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands/Hand_Thumb.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d0d69f35511d5fd0a54123080f99fbd9aa6060315ed3e063af5f5f230563c7fc -size 6530 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands/Hand_Thumb.png.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands/Hand_Thumb.png.meta deleted file mode 100644 index af16cc88..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands/Hand_Thumb.png.meta +++ /dev/null @@ -1,172 +0,0 @@ -fileFormatVersion: 2 -guid: 3b2e62babc5249f42921c2cd027852cd -TextureImporter: - internalIDToNameTable: - - first: - 213: -4228467354032736297 - second: Thumb - externalObjects: {} - serializedVersion: 12 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - 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: 1 - wrapV: 1 - wrapW: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 23, y: 0, z: 23, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 - alphaIsTransparency: 1 - spriteTessellationDetail: -1 - textureType: 8 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - cookieLightType: 1 - 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: 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: 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: Server - 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: - - serializedVersion: 2 - name: Thumb - rect: - serializedVersion: 2 - x: 61 - y: 30 - width: 387 - height: 497 - alignment: 0 - pivot: {x: 0.5, y: 0.5} - border: {x: 0, y: 0, z: 0, w: 0} - outline: [] - physicsShape: [] - tessellationDetail: 0 - bones: [] - spriteID: 7d7fa8a48577155c0800000000000000 - internalID: -4228467354032736297 - vertices: [] - indices: - edges: [] - weights: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: - Thumb: -4228467354032736297 - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands/hand.png b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands/hand.png deleted file mode 100644 index 8eb6ed59..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands/hand.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8c544932e641e84ea22470ea49fa25851d4f1d3a12db786eb7380a16d4b22709 -size 11255 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/HeadDevice.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/HeadDevice.meta deleted file mode 100644 index efc6bd1a..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/HeadDevice.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 01820cd5d6cab46b9afde2261f687a48 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/HeadDevice/HMD.png b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/HeadDevice/HMD.png deleted file mode 100644 index f4cecab2..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/HeadDevice/HMD.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b7b21228ea261ab082789baf67a7a41436abd72ac4965a6f9abb2eb4ab04d13c -size 9918 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/HeadDevice/HMDOverlay.png b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/HeadDevice/HMDOverlay.png deleted file mode 100644 index 9fd8a631..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/HeadDevice/HMDOverlay.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:bd5e682bbc4a4f3bbe3b1ed8ad164a2421585a57dda6589f9e2c0a51af91efdf -size 14953 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/HeadDevice/HMDOverlay.png.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/HeadDevice/HMDOverlay.png.meta deleted file mode 100644 index 3bd2f7c6..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/HeadDevice/HMDOverlay.png.meta +++ /dev/null @@ -1,159 +0,0 @@ -fileFormatVersion: 2 -guid: fb2db2f40ceaf458085c82fc17cfe800 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - 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: 1 - wrapV: 1 - wrapW: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - 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: 1 - spriteTessellationDetail: -1 - textureType: 8 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - cookieLightType: 1 - 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: 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: 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: Server - 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: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/HeadDevice/HMD_d.png b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/HeadDevice/HMD_d.png deleted file mode 100644 index 23b048ea..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/HeadDevice/HMD_d.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e0e515dbfba75cfd610d4330f7118342cea3b096a027a073da521e84e1975313 -size 11463 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/HeadDevice/MoveRotateTool.png b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/HeadDevice/MoveRotateTool.png deleted file mode 100644 index 0e80aa40..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/HeadDevice/MoveRotateTool.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:65a9676918ef7c04cb741ad71ae4d4023c42ea9b09a95109676856a7886f721d -size 15421 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/HeadDevice/MoveRotateTool.png.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/HeadDevice/MoveRotateTool.png.meta deleted file mode 100644 index 09591723..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/HeadDevice/MoveRotateTool.png.meta +++ /dev/null @@ -1,147 +0,0 @@ -fileFormatVersion: 2 -guid: 139237a044d8e4255b40bb472c842087 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - 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: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - 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: 1 - spriteTessellationDetail: -1 - textureType: 8 - 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: LinuxHeadlessSimulation - 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: Server - 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: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/HeadDevice/Movement.png b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/HeadDevice/Movement.png deleted file mode 100644 index 26eb7c89..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/HeadDevice/Movement.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:174553c9e368846e7569f5e2f5a75c57b2904ad6af6cc1ac2df3b54cd77fd837 -size 8801 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/HeadDevice/Movement.png.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/HeadDevice/Movement.png.meta deleted file mode 100644 index f874b479..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/HeadDevice/Movement.png.meta +++ /dev/null @@ -1,147 +0,0 @@ -fileFormatVersion: 2 -guid: 1d56a2d39cfbb49149abbf0076259327 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - 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: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - 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: 1 - spriteTessellationDetail: -1 - textureType: 8 - 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: LinuxHeadlessSimulation - 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: Server - 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: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/HeadDevice/XR.png b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/HeadDevice/XR.png deleted file mode 100644 index 7f3e3537..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/HeadDevice/XR.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:71fb6bb98ea3d0999a06ab1f5c2740af35cd5b3844339ff70f81d5778de418aa -size 8084 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/HeadDevice/XR.png.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/HeadDevice/XR.png.meta deleted file mode 100644 index 68b02060..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/HeadDevice/XR.png.meta +++ /dev/null @@ -1,147 +0,0 @@ -fileFormatVersion: 2 -guid: 0265e2b6afccd49de9c1f0b3a1fb4285 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - 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: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - 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: 1 - spriteTessellationDetail: -1 - textureType: 8 - 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: LinuxHeadlessSimulation - 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: Server - 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: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/HeadDevice/xr_hmd.png b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/HeadDevice/xr_hmd.png deleted file mode 100644 index 6c606e1d..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/HeadDevice/xr_hmd.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:610987a545b7f6a1a019be60e3e13e031a4773ce9a596b961a484e98c282702d -size 13063 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/HeadDevice/xr_hmd.png.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/HeadDevice/xr_hmd.png.meta deleted file mode 100644 index f61254d7..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/HeadDevice/xr_hmd.png.meta +++ /dev/null @@ -1,147 +0,0 @@ -fileFormatVersion: 2 -guid: 08548d5ac6b7bc64da0b332636c5cc91 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - 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: 1 - wrapV: 1 - wrapW: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - 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: 1 - spriteTessellationDetail: -1 - textureType: 8 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - cookieLightType: 1 - 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: 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: 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: Server - 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: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Mouse.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Mouse.meta deleted file mode 100644 index 1f332d32..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Mouse.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: ba08c76319c794c15b21c9d8eaeac0e8 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Mouse/Cursor.png b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Mouse/Cursor.png deleted file mode 100644 index 65cf12ab..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Mouse/Cursor.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9a62296ddf332a7b61bdad087a94ab1aa94c5ace006fdaf856ac5e81061286dc -size 7340 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Mouse/Cursor.png.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Mouse/Cursor.png.meta deleted file mode 100644 index 80487ff0..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Mouse/Cursor.png.meta +++ /dev/null @@ -1,147 +0,0 @@ -fileFormatVersion: 2 -guid: 9e4e923f2e0534a56b6a0c2321388194 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - 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: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - 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: 1 - spriteTessellationDetail: -1 - textureType: 8 - 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: LinuxHeadlessSimulation - 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: Server - 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: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Mouse/Mouse.png b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Mouse/Mouse.png deleted file mode 100644 index 02905872..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Mouse/Mouse.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ab29e387f72f5cb23da9dcf15ce6b59182f178686b2034b5f8eb5f06cde29555 -size 8314 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Mouse/Mouse.png.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Mouse/Mouse.png.meta deleted file mode 100644 index fb047e4d..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Mouse/Mouse.png.meta +++ /dev/null @@ -1,147 +0,0 @@ -fileFormatVersion: 2 -guid: f997d60d79a4e45cab6b1814e377a1b3 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - 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: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - 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: 1 - spriteTessellationDetail: -1 - textureType: 8 - 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: LinuxHeadlessSimulation - 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: Server - 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: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Mouse/MouseMoveAround.png b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Mouse/MouseMoveAround.png deleted file mode 100644 index c12d90f4..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Mouse/MouseMoveAround.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:86f1f9d709374f6a89c8fe64b8dc59981c35925dae25663224897b0bd4a9c7f5 -size 10824 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Mouse/MouseMoveAround.png.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Mouse/MouseMoveAround.png.meta deleted file mode 100644 index d30fec52..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Mouse/MouseMoveAround.png.meta +++ /dev/null @@ -1,147 +0,0 @@ -fileFormatVersion: 2 -guid: 013811fdd48c040339e9adc40e692381 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - 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: 1 - wrapV: 1 - wrapW: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - 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: 1 - spriteTessellationDetail: -1 - textureType: 8 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - cookieLightType: 1 - 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: 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: 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: Server - 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: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Mouse/MouseR.png b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Mouse/MouseR.png deleted file mode 100644 index e05d723e..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Mouse/MouseR.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2c871b07c0d15df590f79c8fbcc35c1623cbe4c58739e1c73cf9ea3dfd968dd2 -size 13952 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Mouse/MouseR_d.png b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Mouse/MouseR_d.png deleted file mode 100644 index cab44bbd..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Mouse/MouseR_d.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:18e1353bdd32a7d82049a768fa30d4d82818eabc79c343c16a2fbc5b9e778ea8 -size 8840 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Mouse/MouseR_d.png.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Mouse/MouseR_d.png.meta deleted file mode 100644 index d0a12878..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Mouse/MouseR_d.png.meta +++ /dev/null @@ -1,147 +0,0 @@ -fileFormatVersion: 2 -guid: 308cc8b73722e43eab64c228a76560a6 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - 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: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - 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: 1 - spriteTessellationDetail: -1 - textureType: 8 - 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: LinuxHeadlessSimulation - 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: Server - 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: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/XR Device Simulator UI.prefab b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/XR Device Simulator UI.prefab deleted file mode 100644 index 68e0ea28..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/XR Device Simulator UI.prefab +++ /dev/null @@ -1,14338 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &29886561319578157 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6564093916900289784} - - component: {fileID: 9003411996149372339} - - component: {fileID: 4412908402409514172} - m_Layer: 5 - m_Name: MoveValuesIcon - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &6564093916900289784 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 29886561319578157} - 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: 7436509360777108265} - 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: -105, y: 0.1223} - m_SizeDelta: {x: 30.2816, y: 30.281} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &9003411996149372339 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 29886561319578157} - m_CullTransparentMesh: 1 ---- !u!114 &4412908402409514172 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 29886561319578157} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 76dc0abb2ebb44c9a9bd39266f0b3c91, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &33136997142522377 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4724759744330099547} - - component: {fileID: 5533521331356562919} - - component: {fileID: 896150445585326192} - m_Layer: 5 - m_Name: LExpression1Name - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &4724759744330099547 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 33136997142522377} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1212292503507699025} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 65, y: -0.000030517578} - m_SizeDelta: {x: 187, y: 67.552} - m_Pivot: {x: 0, y: 0.5} ---- !u!222 &5533521331356562919 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 33136997142522377} - m_CullTransparentMesh: 0 ---- !u!114 &896150445585326192 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 33136997142522377} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 42 - m_FontStyle: 0 - m_BestFit: 1 - m_MinSize: 0 - m_MaxSize: 45 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: Name ---- !u!1 &163993027286486330 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5263640784426806787} - - component: {fileID: 8863868735850889056} - - component: {fileID: 2349352921063641774} - m_Layer: 5 - m_Name: HandValueText - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &5263640784426806787 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 163993027286486330} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 8539554857296250557} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 22.195, y: 0.12232971} - m_SizeDelta: {x: 153.08, y: 29.552} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &8863868735850889056 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 163993027286486330} - m_CullTransparentMesh: 0 ---- !u!114 &2349352921063641774 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 163993027286486330} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 42 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 0 - m_MaxSize: 115 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: Mode Bind ---- !u!1 &288779701782643498 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6846750111691592490} - - component: {fileID: 8838573467402483601} - - component: {fileID: 2206758073391603004} - m_Layer: 5 - m_Name: Text - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &6846750111691592490 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 288779701782643498} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 8751572082322455077} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 19.8, y: 0.12232971} - m_SizeDelta: {x: 153.08, y: 29.552} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &8838573467402483601 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 288779701782643498} - m_CullTransparentMesh: 1 ---- !u!114 &2206758073391603004 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 288779701782643498} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 42 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 0 - m_MaxSize: 115 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: Cycle XR Input ---- !u!1 &317419840061793591 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7455357491218910397} - - component: {fileID: 6982135072744269101} - - component: {fileID: 4724637474301667115} - m_Layer: 5 - m_Name: RMenuIcon - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &7455357491218910397 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 317419840061793591} - 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: 4904194509911213832} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 20, y: 0} - m_SizeDelta: {x: 30.2816, y: 30.281} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &6982135072744269101 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 317419840061793591} - m_CullTransparentMesh: 1 ---- !u!114 &4724637474301667115 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 317419840061793591} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 76dc0abb2ebb44c9a9bd39266f0b3c91, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &350084410891778195 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 9184085923298778894} - m_Layer: 0 - m_Name: LookRow - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &9184085923298778894 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 350084410891778195} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 27911596466560415} - - {fileID: 8658708234692622649} - m_Father: {fileID: 4406604062793069055} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 604, y: 40} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!1 &417301699863401290 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5498894420459434082} - m_Layer: 0 - m_Name: RightController - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &5498894420459434082 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 417301699863401290} - 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: 8484091777571837807} - - {fileID: 4367518527615682733} - - {fileID: 2664160203474198374} - m_Father: {fileID: 2375198052207354545} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: -0.5, y: 0} - m_SizeDelta: {x: -4.0000076, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!1 &425703931829518118 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2375198052207354545} - - component: {fileID: 4327810280124264318} - m_Layer: 0 - m_Name: ControllersOption - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &2375198052207354545 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 425703931829518118} - 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: 7103409666290189088} - - {fileID: 5498894420459434082} - m_Father: {fileID: 8808850000785169588} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.95} - m_AnchorMax: {x: 1, y: 0.95} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 285} - m_Pivot: {x: 0.5, y: 1} ---- !u!225 &4327810280124264318 -CanvasGroup: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 425703931829518118} - m_Enabled: 1 - m_Alpha: 1 - m_Interactable: 1 - m_BlocksRaycasts: 1 - m_IgnoreParentGroups: 0 ---- !u!1 &527109076315265493 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 854703824096013381} - - component: {fileID: 2061555217664257282} - - component: {fileID: 5718527880201402332} - - component: {fileID: 319370952726439739} - m_Layer: 5 - m_Name: EnableDisableDeviceSimUIBtn - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &854703824096013381 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 527109076315265493} - 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: 1847791695669142127} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 1, y: 0.5} - m_AnchorMax: {x: 1, y: 0.5} - m_AnchoredPosition: {x: -17.399994, y: 0} - m_SizeDelta: {x: 23.4046, y: 23.4046} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &2061555217664257282 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 527109076315265493} - m_CullTransparentMesh: 0 ---- !u!114 &5718527880201402332 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 527109076315265493} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 633d1ace045fe402a9b307cb58251aa4, type: 3} - m_Type: 0 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!114 &319370952726439739 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 527109076315265493} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Navigation: - m_Mode: 3 - m_WrapAround: 0 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 1 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_SelectedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_SelectedTrigger: Selected - m_DisabledTrigger: Disabled - m_Interactable: 1 - m_TargetGraphic: {fileID: 5718527880201402332} - m_OnClick: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 4465484215854679096} - m_TargetAssemblyTypeName: - m_MethodName: OnClickOpenSimulatorUIPanel - 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 ---- !u!1 &573412519329463009 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1104218346663881301} - - component: {fileID: 5609248285039019312} - - component: {fileID: 448065570012514258} - m_Layer: 5 - m_Name: Icon - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1104218346663881301 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 573412519329463009} - 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: 1085174744544309416} - 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: -105, y: 0.1223} - m_SizeDelta: {x: 30.2816, y: 30.281} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &5609248285039019312 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 573412519329463009} - m_CullTransparentMesh: 1 ---- !u!114 &448065570012514258 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 573412519329463009} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 76dc0abb2ebb44c9a9bd39266f0b3c91, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &619729475870094166 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 767564925141842383} - - component: {fileID: 6105033498792898461} - - component: {fileID: 3527199368015468659} - m_Layer: 5 - m_Name: LExpression2Icon - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &767564925141842383 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 619729475870094166} - 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: 7210374592701731116} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 20, y: 0} - m_SizeDelta: {x: 30.2816, y: 30.281} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &6105033498792898461 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 619729475870094166} - m_CullTransparentMesh: 1 ---- !u!114 &3527199368015468659 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 619729475870094166} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 76dc0abb2ebb44c9a9bd39266f0b3c91, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &675065661486396138 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2242974542416564068} - - component: {fileID: 1394824713245469580} - - component: {fileID: 6809351870642506038} - m_Layer: 5 - m_Name: RExpression4Name - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &2242974542416564068 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 675065661486396138} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 2751124339627162720} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 65, y: -0.000030517578} - m_SizeDelta: {x: 187, y: 67.552} - m_Pivot: {x: 0, y: 0.5} ---- !u!222 &1394824713245469580 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 675065661486396138} - m_CullTransparentMesh: 0 ---- !u!114 &6809351870642506038 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 675065661486396138} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 42 - m_FontStyle: 0 - m_BestFit: 1 - m_MinSize: 0 - m_MaxSize: 45 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: Name ---- !u!1 &891647659842723807 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8751572082322455077} - m_Layer: 5 - m_Name: Button - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &8751572082322455077 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 891647659842723807} - 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: 4427714418502242799} - - {fileID: 2396100969233817086} - - {fileID: 6846750111691592490} - m_Father: {fileID: 6167112928552560931} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.39900002, y: 0} - m_AnchorMax: {x: 0.6, y: 1} - m_AnchoredPosition: {x: -170, y: 0.05000305} - m_SizeDelta: {x: 140, y: -2} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!1 &899118421566338131 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4904194509911213832} - - component: {fileID: 3842944074029756636} - - component: {fileID: 4193425104184663439} - m_Layer: 0 - m_Name: RMenuButton - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &4904194509911213832 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 899118421566338131} - 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: 7455357491218910397} - - {fileID: 292161024320626674} - m_Father: {fileID: 8484091777571837807} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 153, y: 40} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &3842944074029756636 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 899118421566338131} - m_CullTransparentMesh: 1 ---- !u!114 &4193425104184663439 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 899118421566338131} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.34509805, g: 0.34509805, b: 0.34509805, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &918743290184469441 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 372728133250704906} - - component: {fileID: 2359414082534323022} - - component: {fileID: 2259021782619594240} - m_Layer: 5 - m_Name: LTriggerIcon - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &372728133250704906 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 918743290184469441} - 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: 6390267479988922023} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 20, y: 0} - m_SizeDelta: {x: 30.2816, y: 30.281} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &2359414082534323022 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 918743290184469441} - m_CullTransparentMesh: 1 ---- !u!114 &2259021782619594240 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 918743290184469441} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 76dc0abb2ebb44c9a9bd39266f0b3c91, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &980490071309630459 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3002383805111170562} - - component: {fileID: 103746841167109125} - - component: {fileID: 3702832121472537402} - m_Layer: 5 - m_Name: LGripIcon - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &3002383805111170562 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 980490071309630459} - 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: 5961962218551576997} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 20, y: 0} - m_SizeDelta: {x: 30.2816, y: 30.281} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &103746841167109125 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 980490071309630459} - m_CullTransparentMesh: 1 ---- !u!114 &3702832121472537402 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 980490071309630459} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 76dc0abb2ebb44c9a9bd39266f0b3c91, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &1024428468574385309 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1399327480036815817} - m_Layer: 0 - m_Name: HMDRow - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1399327480036815817 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1024428468574385309} - 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: 8266049202949608784} - - {fileID: 6797212258523857263} - m_Father: {fileID: 4183362681496228909} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 604, y: 40} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!1 &1116603017172164502 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4512836958538490338} - - component: {fileID: 4229588115787512468} - - component: {fileID: 6568751946127306849} - m_Layer: 5 - m_Name: RExpression3Name - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &4512836958538490338 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1116603017172164502} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 7767859450673573951} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 62, y: -0.000030517578} - m_SizeDelta: {x: 187, y: 67.552} - m_Pivot: {x: 0, y: 0.5} ---- !u!222 &4229588115787512468 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1116603017172164502} - m_CullTransparentMesh: 0 ---- !u!114 &6568751946127306849 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1116603017172164502} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 42 - m_FontStyle: 0 - m_BestFit: 1 - m_MinSize: 0 - m_MaxSize: 45 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: Name ---- !u!1 &1235111873063437235 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 991961384998303619} - - component: {fileID: 3560906529752670682} - - component: {fileID: 8940433140144978684} - m_Layer: 5 - m_Name: LExpression4Bind - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &991961384998303619 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1235111873063437235} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 5040200856308678447} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 97.201996, y: 0} - m_SizeDelta: {x: 221.224, y: 67.552} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &3560906529752670682 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1235111873063437235} - m_CullTransparentMesh: 0 ---- !u!114 &8940433140144978684 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1235111873063437235} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 45 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 0 - m_MaxSize: 58 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: K ---- !u!1 &1290735137696290609 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5103673373263905850} - - component: {fileID: 2508919105726794454} - - component: {fileID: 1917492824301861101} - m_Layer: 0 - m_Name: LControllerOverlay - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &5103673373263905850 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1290735137696290609} - 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: 754334856648844837} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: -32.212082, y: 8.400002} - m_SizeDelta: {x: -47.0388, y: -6.8} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &2508919105726794454 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1290735137696290609} - m_CullTransparentMesh: 1 ---- !u!114 &1917492824301861101 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1290735137696290609} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: cd4fe4c19a40743a6896069a50a394ec, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &1292333690699179336 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2813366516863096307} - - component: {fileID: 2291087181951237043} - m_Layer: 0 - m_Name: HandsOption - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &2813366516863096307 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1292333690699179336} - 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: 6688826027410024821} - - {fileID: 6555096854186027131} - m_Father: {fileID: 8808850000785169588} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.95} - m_AnchorMax: {x: 1, y: 0.95} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 285} - m_Pivot: {x: 0.5, y: 1} ---- !u!225 &2291087181951237043 -CanvasGroup: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1292333690699179336} - m_Enabled: 1 - m_Alpha: 1 - m_Interactable: 1 - m_BlocksRaycasts: 1 - m_IgnoreParentGroups: 0 ---- !u!1 &1380295093179848584 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 515894777509433301} - - component: {fileID: 4017185309695555305} - - component: {fileID: 1488390788848035247} - m_Layer: 5 - m_Name: Icon - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &515894777509433301 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1380295093179848584} - 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: 8170169633823365925} - m_RootOrder: 1 - 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: -105, y: 0.1223} - m_SizeDelta: {x: 30.2816, y: 30.281} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &4017185309695555305 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1380295093179848584} - m_CullTransparentMesh: 1 ---- !u!114 &1488390788848035247 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1380295093179848584} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 290d158031622c645aa55f8bd981be12, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &1399090967636622272 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2396100969233817086} - - component: {fileID: 3063966763485816098} - - component: {fileID: 684899110839510463} - m_Layer: 5 - m_Name: Icon - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &2396100969233817086 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1399090967636622272} - 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: 8751572082322455077} - m_RootOrder: 1 - 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: -105, y: 0.1223} - m_SizeDelta: {x: 30.2816, y: 30.281} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &3063966763485816098 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1399090967636622272} - m_CullTransparentMesh: 1 ---- !u!114 &684899110839510463 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1399090967636622272} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 731e7aed8e9f540ac8bf2a7b66abdaf6, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &1433554934514912911 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1847791695669142127} - - component: {fileID: 8285680151353500705} - - component: {fileID: 8604789029105032418} - - component: {fileID: 5189412477027441689} - m_Layer: 5 - m_Name: EnableSimulatorBar - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!224 &1847791695669142127 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1433554934514912911} - 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: 7311062688384262108} - - {fileID: 7046821532197945560} - - {fileID: 854703824096013381} - m_Father: {fileID: 6889984780207233200} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0.15, y: 0} - m_AnchoredPosition: {x: 32, y: 30.900024} - m_SizeDelta: {x: 41.9366, y: 37.6646} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &8285680151353500705 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1433554934514912911} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Navigation: - m_Mode: 3 - m_WrapAround: 0 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 1 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_SelectedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_SelectedTrigger: Selected - m_DisabledTrigger: Disabled - m_Interactable: 1 - m_TargetGraphic: {fileID: 5718527880201402332} - m_OnClick: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 4465484215854679096} - m_TargetAssemblyTypeName: - m_MethodName: OnClickOpenSimulatorUIPanel - 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 ---- !u!222 &8604789029105032418 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1433554934514912911} - m_CullTransparentMesh: 1 ---- !u!114 &5189412477027441689 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1433554934514912911} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0, g: 0, b: 0, a: 0.9411765} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &1441005171086257829 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2652949427206271823} - - component: {fileID: 6915133030309022791} - - component: {fileID: 5405710756525641134} - m_Layer: 5 - m_Name: LExpression3stickIcon - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &2652949427206271823 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1441005171086257829} - 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: 6202310348302799411} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 20, y: 0} - m_SizeDelta: {x: 30.2816, y: 30.281} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &6915133030309022791 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1441005171086257829} - m_CullTransparentMesh: 1 ---- !u!114 &5405710756525641134 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1441005171086257829} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 76dc0abb2ebb44c9a9bd39266f0b3c91, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &1453598747111334183 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2314820697440113883} - - component: {fileID: 1781393369442898685} - - component: {fileID: 1263497930375873354} - m_Layer: 5 - m_Name: RTriggerIcon - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &2314820697440113883 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1453598747111334183} - 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: 8962740172795211005} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 20, y: 0} - m_SizeDelta: {x: 30.2816, y: 30.281} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &1781393369442898685 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1453598747111334183} - m_CullTransparentMesh: 1 ---- !u!114 &1263497930375873354 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1453598747111334183} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 76dc0abb2ebb44c9a9bd39266f0b3c91, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &1457549226246381164 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1085174744544309416} - - component: {fileID: 8772983746740546457} - m_Layer: 5 - m_Name: Values - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1085174744544309416 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1457549226246381164} - 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: 1104218346663881301} - - {fileID: 8763124700897412298} - m_Father: {fileID: 6167112928552560931} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.39900002, y: 0} - m_AnchorMax: {x: 0.6, y: 1} - m_AnchoredPosition: {x: 170.04999, y: 0.000045776367} - m_SizeDelta: {x: 140.09998, y: -7.9637} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &8772983746740546457 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1457549226246381164} - m_CullTransparentMesh: 0 ---- !u!1 &1457686681557724166 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 409826334328055989} - - component: {fileID: 8372359366222228000} - - component: {fileID: 6428185077648664342} - m_Layer: 5 - m_Name: RExpression5Name - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &409826334328055989 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1457686681557724166} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 3612895881655085730} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 65, y: -0.000030517578} - m_SizeDelta: {x: 187, y: 67.552} - m_Pivot: {x: 0, y: 0.5} ---- !u!222 &8372359366222228000 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1457686681557724166} - m_CullTransparentMesh: 0 ---- !u!114 &6428185077648664342 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1457686681557724166} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 42 - m_FontStyle: 0 - m_BestFit: 1 - m_MinSize: 0 - m_MaxSize: 45 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: Name ---- !u!1 &1549790480480682592 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 55462233220691548} - - component: {fileID: 8051212359518039854} - - component: {fileID: 8392449034562604138} - m_Layer: 5 - m_Name: LookIcon - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &55462233220691548 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1549790480480682592} - 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: 27911596466560415} - m_RootOrder: 1 - 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: -105, y: 0.1223} - m_SizeDelta: {x: 30.2816, y: 30.281} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &8051212359518039854 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1549790480480682592} - m_CullTransparentMesh: 1 ---- !u!114 &8392449034562604138 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1549790480480682592} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 5410adf0b914f49438506b7dd0022773, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &1615103310603384712 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1410681280152203499} - m_Layer: 5 - m_Name: TitleBar - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1410681280152203499 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1615103310603384712} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 8553038877798206587} - - {fileID: 738610811508460873} - - {fileID: 4781838991281678427} - m_Father: {fileID: 1638209659654700137} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 40} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!1 &1638209659654700138 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1638209659654700137} - - component: {fileID: 1638209659654700183} - - component: {fileID: 1638209659654700136} - - component: {fileID: 8373482760433716144} - - component: {fileID: 7342397014618987969} - - component: {fileID: 5617939588127036811} - m_Layer: 5 - m_Name: SimulatorUIPanel - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1638209659654700137 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1638209659654700138} - 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: 1410681280152203499} - - {fileID: 7957317870655340943} - - {fileID: 1090898951568715956} - - {fileID: 5603832654879856732} - - {fileID: 4578268034687854241} - - {fileID: 394164018060954109} - - {fileID: 8808850000785169588} - m_Father: {fileID: 6889984780207233200} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 11.10022, y: 11.9002075} - m_SizeDelta: {x: 600, y: 805} - m_Pivot: {x: 0, y: 0} ---- !u!222 &1638209659654700183 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1638209659654700138} - m_CullTransparentMesh: 0 ---- !u!114 &1638209659654700136 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1638209659654700138} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0, g: 0, b: 0, a: 0.9411765} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 0 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: d7348fb3f11ba4f6f933462328963785, type: 3} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 4 ---- !u!223 &8373482760433716144 -Canvas: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1638209659654700138} - m_Enabled: 1 - serializedVersion: 3 - m_RenderMode: 2 - m_Camera: {fileID: 0} - m_PlaneDistance: 100 - m_PixelPerfect: 0 - m_ReceivesEvents: 1 - m_OverrideSorting: 0 - m_OverridePixelPerfect: 0 - m_SortingBucketNormalizedSize: 0 - m_AdditionalShaderChannelsFlag: 0 - m_SortingLayerID: 0 - m_SortingOrder: 0 - m_TargetDisplay: 0 ---- !u!114 &7342397014618987969 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1638209659654700138} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} - m_Name: - m_EditorClassIdentifier: - m_IgnoreReversedGraphics: 1 - m_BlockingObjects: 0 - m_BlockingMask: - serializedVersion: 2 - m_Bits: 4294967295 ---- !u!114 &5617939588127036811 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1638209659654700138} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Padding: - m_Left: 8 - m_Right: 8 - m_Top: 4 - m_Bottom: 0 - m_ChildAlignment: 1 - m_Spacing: 4 - m_ChildForceExpandWidth: 1 - m_ChildForceExpandHeight: 0 - m_ChildControlWidth: 1 - m_ChildControlHeight: 0 - m_ChildScaleWidth: 0 - m_ChildScaleHeight: 0 - m_ReverseArrangement: 0 ---- !u!1 &1663757067517280574 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2530981367770184548} - - component: {fileID: 5653173672739062593} - - component: {fileID: 3756260170801479298} - m_Layer: 5 - m_Name: RExpression0Bind - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &2530981367770184548 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1663757067517280574} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 2314423295413228411} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 97.201996, y: 0} - m_SizeDelta: {x: 221.224, y: 67.552} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &5653173672739062593 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1663757067517280574} - m_CullTransparentMesh: 0 ---- !u!114 &3756260170801479298 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1663757067517280574} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 45 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 0 - m_MaxSize: 58 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: K ---- !u!1 &1673955981598254796 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6202310348302799411} - - component: {fileID: 2432247319275533986} - - component: {fileID: 1991930889870372846} - m_Layer: 0 - m_Name: LExpression3stickButton - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &6202310348302799411 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1673955981598254796} - 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: 2652949427206271823} - - {fileID: 2960622662769578833} - m_Father: {fileID: 537185462701595200} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 153, y: 40} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &2432247319275533986 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1673955981598254796} - m_CullTransparentMesh: 1 ---- !u!114 &1991930889870372846 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1673955981598254796} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.34509805, g: 0.34509805, b: 0.34509805, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &1781016146146422816 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2406183980836748438} - - component: {fileID: 2419496096052406531} - m_Layer: 5 - m_Name: CursorLockValues - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &2406183980836748438 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1781016146146422816} - 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: 2422384417788841944} - - {fileID: 5143173518027953146} - m_Father: {fileID: 1525949943038772175} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.39900002, y: 0} - m_AnchorMax: {x: 0.6, y: 1} - m_AnchoredPosition: {x: 170.04999, y: 0.000049591064} - m_SizeDelta: {x: 140.09998, y: -7.9637} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &2419496096052406531 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1781016146146422816} - m_CullTransparentMesh: 0 ---- !u!1 &1821013151456585862 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7046821532197945560} - - component: {fileID: 4288979108967705192} - - component: {fileID: 3769962371045323743} - m_Layer: 5 - m_Name: XRDeviceSimLabel - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &7046821532197945560 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1821013151456585862} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1847791695669142127} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0.95, y: 0.5} - m_AnchoredPosition: {x: 42.4, y: 0.028502} - m_SizeDelta: {x: 69.1924, y: 30} - m_Pivot: {x: 0, y: 0.5} ---- !u!222 &4288979108967705192 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1821013151456585862} - m_CullTransparentMesh: 0 ---- !u!114 &3769962371045323743 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1821013151456585862} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, 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_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 45 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 1 - m_MaxSize: 45 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: XR Device Simulator ---- !u!1 &1841772207644620690 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2654451137050611357} - - component: {fileID: 3041199095894004741} - - component: {fileID: 7660593326172566200} - m_Layer: 5 - m_Name: RExpression1Bind - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &2654451137050611357 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1841772207644620690} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 628890490560670852} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 97.201996, y: 0} - m_SizeDelta: {x: 221.224, y: 67.552} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &3041199095894004741 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1841772207644620690} - m_CullTransparentMesh: 0 ---- !u!114 &7660593326172566200 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1841772207644620690} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 45 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 0 - m_MaxSize: 58 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: K ---- !u!1 &1879870509476960300 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5162934926535781650} - - component: {fileID: 4144682753921727013} - - component: {fileID: 2489405138923825782} - m_Layer: 5 - m_Name: LExpression2Name - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &5162934926535781650 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1879870509476960300} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 7210374592701731116} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 65, y: -0.000030517578} - m_SizeDelta: {x: 187, y: 67.552} - m_Pivot: {x: 0, y: 0.5} ---- !u!222 &4144682753921727013 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1879870509476960300} - m_CullTransparentMesh: 0 ---- !u!114 &2489405138923825782 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1879870509476960300} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 42 - m_FontStyle: 0 - m_BestFit: 1 - m_MinSize: 0 - m_MaxSize: 45 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: Name ---- !u!1 &1880509402485185474 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5143173518027953146} - - component: {fileID: 9029590796770340829} - - component: {fileID: 7120185377061894656} - m_Layer: 5 - m_Name: CursorLockValuesText - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &5143173518027953146 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1880509402485185474} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 2406183980836748438} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 22.195, y: 0.12232971} - m_SizeDelta: {x: 153.08, y: 29.552} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &9029590796770340829 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1880509402485185474} - m_CullTransparentMesh: 0 ---- !u!114 &7120185377061894656 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1880509402485185474} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 42 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 0 - m_MaxSize: 115 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: Cursor Lock Bind ---- !u!1 &1964459031498800111 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 745060623745093323} - - component: {fileID: 1512257954614430635} - - component: {fileID: 5513420064914589275} - m_Layer: 5 - m_Name: Icon - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &745060623745093323 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1964459031498800111} - 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: 8539554857296250557} - 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: -105, y: 0.1223} - m_SizeDelta: {x: 30.2816, y: 30.281} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &1512257954614430635 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1964459031498800111} - m_CullTransparentMesh: 1 ---- !u!114 &5513420064914589275 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1964459031498800111} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 76dc0abb2ebb44c9a9bd39266f0b3c91, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &1995946693877701722 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1623475918692148195} - - component: {fileID: 1769047129883669882} - - component: {fileID: 5510960597349055456} - m_Layer: 5 - m_Name: SelectedDeviceLabelText - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1623475918692148195 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1995946693877701722} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 4578268034687854241} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 6, y: 0} - m_SizeDelta: {x: 305.1899, y: 80} - m_Pivot: {x: 0, y: 0.5} ---- !u!222 &1769047129883669882 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1995946693877701722} - m_CullTransparentMesh: 0 ---- !u!114 &5510960597349055456 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1995946693877701722} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 42 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 2 - m_MaxSize: 65 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: 'Selected Device Input:' ---- !u!1 &2131535862148234197 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8763124700897412298} - - component: {fileID: 4555752327305268219} - - component: {fileID: 3371161537473467337} - m_Layer: 5 - m_Name: CycleDevicesValueText - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &8763124700897412298 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2131535862148234197} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1085174744544309416} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 22.195, y: 0.12232971} - m_SizeDelta: {x: 153.08, y: 29.552} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &4555752327305268219 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2131535862148234197} - m_CullTransparentMesh: 0 ---- !u!114 &3371161537473467337 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2131535862148234197} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 42 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 0 - m_MaxSize: 115 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: Cycle Input Bind ---- !u!1 &2135720888712615138 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5498112335980241132} - - component: {fileID: 1878560617760582763} - - component: {fileID: 8909736703795628118} - m_Layer: 0 - m_Name: LMenuButton - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &5498112335980241132 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2135720888712615138} - 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: 5603575353259662594} - - {fileID: 641378907099528958} - m_Father: {fileID: 537185462701595200} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 153, y: 40} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &1878560617760582763 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2135720888712615138} - m_CullTransparentMesh: 1 ---- !u!114 &8909736703795628118 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2135720888712615138} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.34509805, g: 0.34509805, b: 0.34509805, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &2137780061940803423 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8962740172795211005} - - component: {fileID: 1901149270623407753} - m_Layer: 0 - m_Name: RTriggerButton - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &8962740172795211005 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2137780061940803423} - 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: 5152145393546829585} - - {fileID: 2314820697440113883} - - {fileID: 3390664557058780491} - m_Father: {fileID: 8484091777571837807} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 153, y: 40} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &1901149270623407753 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2137780061940803423} - m_CullTransparentMesh: 1 ---- !u!1 &2182330743212455642 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8553038877798206587} - - component: {fileID: 5389574167438611395} - - component: {fileID: 713741333973026277} - m_Layer: 5 - m_Name: Expression2ber - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &8553038877798206587 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2182330743212455642} - m_LocalRotation: {x: -0, y: -0.007421163, z: -0, w: 0.99997246} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1410681280152203499} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: -0.85, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 20, y: 0} - m_SizeDelta: {x: 24, y: 32} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &5389574167438611395 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2182330743212455642} - m_CullTransparentMesh: 0 ---- !u!114 &713741333973026277 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2182330743212455642} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 0.50980395} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 0 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 17689808316e14280ad508a625c4c88f, type: 3} - m_Type: 0 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &2226580167897586669 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3180943858290137582} - - component: {fileID: 6819955918819985804} - - component: {fileID: 5648968487775849891} - m_Layer: 5 - m_Name: RExpression4Bind - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &3180943858290137582 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2226580167897586669} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 2751124339627162720} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 41.895996, y: 0.000030517578} - m_SizeDelta: {x: 221.224, y: 67.552} - m_Pivot: {x: 0, y: 0.5} ---- !u!222 &6819955918819985804 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2226580167897586669} - m_CullTransparentMesh: 0 ---- !u!114 &5648968487775849891 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2226580167897586669} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 45 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 0 - m_MaxSize: 58 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: K ---- !u!1 &2348578284143685332 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3612895881655085730} - - component: {fileID: 725123968201573872} - - component: {fileID: 1181791779424155912} - m_Layer: 0 - m_Name: RExpression5Button - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &3612895881655085730 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2348578284143685332} - 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: 935807462341057155} - - {fileID: 465409959190680123} - - {fileID: 409826334328055989} - m_Father: {fileID: 4545038286919774978} - m_RootOrder: 5 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 40} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &725123968201573872 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2348578284143685332} - m_CullTransparentMesh: 1 ---- !u!114 &1181791779424155912 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2348578284143685332} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.34509805, g: 0.34509805, b: 0.34509805, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 89cb99e3e22696848a1cbce7b320f520, type: 3} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 2.1 ---- !u!1 &2365963657154936774 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 935807462341057155} - - component: {fileID: 5052249791306596192} - - component: {fileID: 2771097682585405286} - m_Layer: 5 - m_Name: RExpression5Icon - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &935807462341057155 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2365963657154936774} - 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: 3612895881655085730} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 20, y: 0} - m_SizeDelta: {x: 30.2816, y: 30.281} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &5052249791306596192 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2365963657154936774} - m_CullTransparentMesh: 1 ---- !u!114 &2771097682585405286 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2365963657154936774} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 76dc0abb2ebb44c9a9bd39266f0b3c91, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &2397317225420271712 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4485096097327297355} - - component: {fileID: 3942849203344239731} - - component: {fileID: 1452563728541468582} - m_Layer: 5 - m_Name: TranslateRotateValueText - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &4485096097327297355 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2397317225420271712} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 3173181438937221057} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 22.195, y: 0.12232971} - m_SizeDelta: {x: 153.08, y: 29.552} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &3942849203344239731 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2397317225420271712} - m_CullTransparentMesh: 0 ---- !u!114 &1452563728541468582 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2397317225420271712} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 42 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 0 - m_MaxSize: 115 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: Trans/Rot Bind ---- !u!1 &2417464569090688095 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5704057125620080137} - - component: {fileID: 4192292608462103628} - - component: {fileID: 7011038037310918980} - m_Layer: 0 - m_Name: RHandImage - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &5704057125620080137 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2417464569090688095} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 1} - m_LocalScale: {x: -1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1510148679143476660} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 3.199997, y: 7} - m_SizeDelta: {x: -10, y: -30} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &4192292608462103628 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2417464569090688095} - m_CullTransparentMesh: 1 ---- !u!114 &7011038037310918980 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2417464569090688095} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.34509805, g: 0.34509805, b: 0.34509805, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 7d3dbc333af046c4193982e1166659dd, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &2458146433507042555 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6334405593256699930} - - component: {fileID: 4269084033447071151} - - component: {fileID: 4915680145212764521} - m_Layer: 5 - m_Name: LExpression0Name - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &6334405593256699930 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2458146433507042555} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 7868162925709135601} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 65, y: -0.000030517578} - m_SizeDelta: {x: 187, y: 67.552} - m_Pivot: {x: 0, y: 0.5} ---- !u!222 &4269084033447071151 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2458146433507042555} - m_CullTransparentMesh: 0 ---- !u!114 &4915680145212764521 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2458146433507042555} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 42 - m_FontStyle: 0 - m_BestFit: 1 - m_MinSize: 0 - m_MaxSize: 45 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: Name ---- !u!1 &2491538659893612444 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6503857598836605731} - - component: {fileID: 5117451523078471704} - - component: {fileID: 3788994023320568023} - m_Layer: 5 - m_Name: TranslateRotateValuesIcon - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &6503857598836605731 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2491538659893612444} - 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: 3173181438937221057} - 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: -105, y: 0.1223} - m_SizeDelta: {x: 30.2816, y: 30.281} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &5117451523078471704 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2491538659893612444} - m_CullTransparentMesh: 1 ---- !u!114 &3788994023320568023 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2491538659893612444} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 76dc0abb2ebb44c9a9bd39266f0b3c91, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &2508556569675021754 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4760555099384953812} - - component: {fileID: 5982869663070455285} - m_Layer: 5 - m_Name: RHandKeyBind - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &4760555099384953812 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2508556569675021754} - 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: 5490768048793251116} - m_Father: {fileID: 6555096854186027131} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.05} - m_AnchorMax: {x: 0, y: 0.05} - m_AnchoredPosition: {x: 5, y: 0} - m_SizeDelta: {x: 115, y: 30} - m_Pivot: {x: 0, y: 0.5} ---- !u!222 &5982869663070455285 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2508556569675021754} - m_CullTransparentMesh: 0 ---- !u!1 &2509709677482505961 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5040200856308678447} - - component: {fileID: 291741579297379389} - - component: {fileID: 7349879440043119360} - m_Layer: 0 - m_Name: LExpression4Button - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &5040200856308678447 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2509709677482505961} - 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: 2747793972913805400} - - {fileID: 991961384998303619} - - {fileID: 8920373798682849898} - m_Father: {fileID: 6462993320847643308} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 40} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &291741579297379389 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2509709677482505961} - m_CullTransparentMesh: 1 ---- !u!114 &7349879440043119360 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2509709677482505961} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.34509805, g: 0.34509805, b: 0.34509805, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &2510550684656054875 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7408420773471807684} - - component: {fileID: 4432250112999290239} - - component: {fileID: 4372048392552825536} - m_Layer: 5 - m_Name: RExpression0Name - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &7408420773471807684 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2510550684656054875} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 2314423295413228411} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 65, y: -0.000030517578} - m_SizeDelta: {x: 187, y: 67.552} - m_Pivot: {x: 0, y: 0.5} ---- !u!222 &4432250112999290239 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2510550684656054875} - m_CullTransparentMesh: 0 ---- !u!114 &4372048392552825536 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2510550684656054875} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 42 - m_FontStyle: 0 - m_BestFit: 1 - m_MinSize: 0 - m_MaxSize: 45 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: Name ---- !u!1 &2512809935938349301 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 282613771757399827} - - component: {fileID: 4244358826933145780} - - component: {fileID: 8175907446859678347} - m_Layer: 5 - m_Name: RPrimaryIcon - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &282613771757399827 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2512809935938349301} - 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: 5026453929358367971} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 20, y: 0} - m_SizeDelta: {x: 30.2816, y: 30.281} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &4244358826933145780 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2512809935938349301} - m_CullTransparentMesh: 1 ---- !u!114 &8175907446859678347 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2512809935938349301} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 76dc0abb2ebb44c9a9bd39266f0b3c91, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &2544441221253198812 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4575570135842204626} - - component: {fileID: 1228761651011966808} - - component: {fileID: 6380410165078616517} - m_Layer: 5 - m_Name: LPrimaryIcon - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &4575570135842204626 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2544441221253198812} - 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: 6624498863070468513} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 20, y: 0} - m_SizeDelta: {x: 30.2816, y: 30.281} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &1228761651011966808 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2544441221253198812} - m_CullTransparentMesh: 1 ---- !u!114 &6380410165078616517 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2544441221253198812} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 76dc0abb2ebb44c9a9bd39266f0b3c91, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &2563383922611151181 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8170169633823365925} - - component: {fileID: 3341638294502099933} - m_Layer: 5 - m_Name: HandSelectedButton - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &8170169633823365925 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2563383922611151181} - 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: 2843830431281675184} - - {fileID: 515894777509433301} - - {fileID: 5062348927342029757} - m_Father: {fileID: 3525313934337792023} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.39900002, y: 0} - m_AnchorMax: {x: 0.6, y: 1} - m_AnchoredPosition: {x: -170, y: 0} - m_SizeDelta: {x: 140, y: -2} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &3341638294502099933 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2563383922611151181} - m_CullTransparentMesh: 0 ---- !u!1 &2567165557641468514 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2751124339627162720} - - component: {fileID: 7265238840095409033} - - component: {fileID: 4147372594905128267} - m_Layer: 0 - m_Name: RExpression4Button - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &2751124339627162720 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2567165557641468514} - 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: 7656103794068767007} - - {fileID: 3180943858290137582} - - {fileID: 2242974542416564068} - m_Father: {fileID: 4545038286919774978} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 40} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &7265238840095409033 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2567165557641468514} - m_CullTransparentMesh: 1 ---- !u!114 &4147372594905128267 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2567165557641468514} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.34509805, g: 0.34509805, b: 0.34509805, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &2571744950061384180 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4056566217759540397} - - component: {fileID: 2854555404489834978} - - component: {fileID: 5399548881570719173} - m_Layer: 5 - m_Name: SelectedDeviceValueText - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &4056566217759540397 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2571744950061384180} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 4578268034687854241} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 220, y: 0} - m_SizeDelta: {x: 800, y: 80} - m_Pivot: {x: 0, y: 0.5} ---- !u!222 &2854555404489834978 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2571744950061384180} - m_CullTransparentMesh: 0 ---- !u!114 &5399548881570719173 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2571744950061384180} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 42 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 2 - m_MaxSize: 65 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: Left Controller ---- !u!1 &2585335064459905670 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6627277116764366358} - - component: {fileID: 6931135121293626001} - - component: {fileID: 1701825277887249889} - m_Layer: 0 - m_Name: RControllerOverlay - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &6627277116764366358 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2585335064459905670} - 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: 4367518527615682733} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 31.700012, y: 8.400002} - m_SizeDelta: {x: -47, y: -6.8} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &6931135121293626001 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2585335064459905670} - m_CullTransparentMesh: 1 ---- !u!114 &1701825277887249889 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2585335064459905670} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 310ef0f38fe364cc986d05acdbdf1183, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &2727674280257469146 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5737249769705389612} - - component: {fileID: 6808051102596636311} - - component: {fileID: 517803879020285813} - m_Layer: 5 - m_Name: MoveText - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &5737249769705389612 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2727674280257469146} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 8059781972635455925} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 19.8, y: 0.12232971} - m_SizeDelta: {x: 153.08, y: 29.552} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &6808051102596636311 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2727674280257469146} - m_CullTransparentMesh: 0 ---- !u!114 &517803879020285813 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2727674280257469146} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 42 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 0 - m_MaxSize: 115 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: Movement ---- !u!1 &2763414223905074762 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8484091777571837807} - - component: {fileID: 7324957562884675474} - m_Layer: 0 - m_Name: ButtonsList - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &8484091777571837807 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2763414223905074762} - 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: 8962740172795211005} - - {fileID: 5417714045102847244} - - {fileID: 4126372588271254228} - - {fileID: 4904194509911213832} - - {fileID: 5026453929358367971} - - {fileID: 6173016768322924529} - m_Father: {fileID: 5498894420459434082} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 68.5, y: 22.5} - m_SizeDelta: {x: -139, y: -45} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &7324957562884675474 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2763414223905074762} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Padding: - m_Left: 0 - m_Right: 0 - m_Top: 1 - m_Bottom: 1 - m_ChildAlignment: 1 - m_Spacing: 4 - m_ChildForceExpandWidth: 1 - m_ChildForceExpandHeight: 1 - m_ChildControlWidth: 0 - m_ChildControlHeight: 0 - m_ChildScaleWidth: 0 - m_ChildScaleHeight: 0 - m_ReverseArrangement: 0 ---- !u!1 &2789687051840766311 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7687940542572837860} - - component: {fileID: 8605236439053526401} - - component: {fileID: 338382388888213524} - m_Layer: 5 - m_Name: LControllerKeyBindText - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &7687940542572837860 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2789687051840766311} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 3810526079947131977} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0.0000019073486} - m_SizeDelta: {x: 0, y: -0.000002861023} - m_Pivot: {x: 1, y: 0.5} ---- !u!222 &8605236439053526401 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2789687051840766311} - m_CullTransparentMesh: 0 ---- !u!114 &338382388888213524 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2789687051840766311} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 36 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 2 - m_MaxSize: 65 - m_Alignment: 5 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: '[Toggle]' ---- !u!1 &2805714749211467276 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5096071673048095565} - m_Layer: 0 - m_Name: ControllerRow - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &5096071673048095565 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2805714749211467276} - 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: 332777195174710517} - - {fileID: 5412799415524486407} - m_Father: {fileID: 4183362681496228909} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 604, y: 40} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!1 &2853602261547270772 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8539554857296250557} - - component: {fileID: 447566848760521853} - m_Layer: 5 - m_Name: HandSelectedValues - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &8539554857296250557 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2853602261547270772} - 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: 745060623745093323} - - {fileID: 5263640784426806787} - m_Father: {fileID: 3525313934337792023} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.39900002, y: 0} - m_AnchorMax: {x: 0.6, y: 1} - m_AnchoredPosition: {x: 170.04999, y: 0.000045776367} - m_SizeDelta: {x: 140.09998, y: -7.9637} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &447566848760521853 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2853602261547270772} - m_CullTransparentMesh: 0 ---- !u!1 &2853690658207697494 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8808850000785169588} - m_Layer: 0 - m_Name: BottomSection - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &8808850000785169588 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2853690658207697494} - 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: 8482404054746877728} - - {fileID: 2375198052207354545} - - {fileID: 2813366516863096307} - m_Father: {fileID: 1638209659654700137} - m_RootOrder: 6 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 300} - m_Pivot: {x: 0.5, y: 1} ---- !u!1 &2914163787786403359 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5062348927342029757} - - component: {fileID: 475651835165686872} - - component: {fileID: 2396995885832409176} - m_Layer: 5 - m_Name: Text - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &5062348927342029757 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2914163787786403359} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 8170169633823365925} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 19.8, y: 0.12232971} - m_SizeDelta: {x: 153.08, y: 29.552} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &475651835165686872 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2914163787786403359} - m_CullTransparentMesh: 0 ---- !u!114 &2396995885832409176 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2914163787786403359} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 42 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 0 - m_MaxSize: 115 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: Hand ---- !u!1 &2952939338510810253 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4808396553272134774} - - component: {fileID: 1112229978915961073} - - component: {fileID: 8477002242924536414} - m_Layer: 5 - m_Name: ControllerValueText - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &4808396553272134774 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2952939338510810253} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 5412799415524486407} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 22.195, y: 0.12232971} - m_SizeDelta: {x: 153.08, y: 29.552} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &1112229978915961073 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2952939338510810253} - m_CullTransparentMesh: 0 ---- !u!114 &8477002242924536414 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2952939338510810253} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 42 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 0 - m_MaxSize: 115 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: '[Toggle]' ---- !u!1 &3021344675451528225 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6349083132728924276} - - component: {fileID: 2438503803762723133} - - component: {fileID: 1574890059153190941} - m_Layer: 5 - m_Name: RExpression2Name - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &6349083132728924276 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3021344675451528225} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 3662364895757944182} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 65, y: -0.000030517578} - m_SizeDelta: {x: 187, y: 67.552} - m_Pivot: {x: 0, y: 0.5} ---- !u!222 &2438503803762723133 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3021344675451528225} - m_CullTransparentMesh: 0 ---- !u!114 &1574890059153190941 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3021344675451528225} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 42 - m_FontStyle: 0 - m_BestFit: 1 - m_MinSize: 0 - m_MaxSize: 45 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: Name ---- !u!1 &3033740514991871518 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7193435800343865340} - - component: {fileID: 28577615572376772} - - component: {fileID: 7067184257790347290} - m_Layer: 5 - m_Name: LGripText - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &7193435800343865340 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3033740514991871518} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 5961962218551576997} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 97.201996, y: 0} - m_SizeDelta: {x: 221.224, y: 67.552} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &28577615572376772 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3033740514991871518} - m_CullTransparentMesh: 0 ---- !u!114 &7067184257790347290 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3033740514991871518} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 45 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 0 - m_MaxSize: 58 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: Grip ---- !u!1 &3069041501744353071 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2747793972913805400} - - component: {fileID: 5052456898607570716} - - component: {fileID: 823229387731191209} - m_Layer: 5 - m_Name: LExpression4Icon - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &2747793972913805400 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3069041501744353071} - 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: 5040200856308678447} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 20, y: 0} - m_SizeDelta: {x: 30.2816, y: 30.281} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &5052456898607570716 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3069041501744353071} - m_CullTransparentMesh: 1 ---- !u!114 &823229387731191209 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3069041501744353071} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 76dc0abb2ebb44c9a9bd39266f0b3c91, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &3082854001174638753 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 537185462701595200} - - component: {fileID: 8453072215149212207} - m_Layer: 0 - m_Name: ButtonsList - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &537185462701595200 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3082854001174638753} - 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: 6390267479988922023} - - {fileID: 5264040794177459897} - - {fileID: 6202310348302799411} - - {fileID: 5498112335980241132} - - {fileID: 6624498863070468513} - - {fileID: 5961962218551576997} - m_Father: {fileID: 7103409666290189088} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: -69.5, y: 22.5} - m_SizeDelta: {x: -141, y: -45} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &8453072215149212207 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3082854001174638753} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Padding: - m_Left: 0 - m_Right: 4 - m_Top: 1 - m_Bottom: 1 - m_ChildAlignment: 4 - m_Spacing: 4 - m_ChildForceExpandWidth: 1 - m_ChildForceExpandHeight: 0 - m_ChildControlWidth: 0 - m_ChildControlHeight: 0 - m_ChildScaleWidth: 0 - m_ChildScaleHeight: 0 - m_ReverseArrangement: 0 ---- !u!1 &3095448225430156185 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 394164018060954109} - m_Layer: 0 - m_Name: MiddleSection - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &394164018060954109 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3095448225430156185} - 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: 4406604062793069055} - m_Father: {fileID: 1638209659654700137} - m_RootOrder: 5 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 166} - m_Pivot: {x: 0.5, y: 1} ---- !u!1 &3134920892735880532 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4406604062793069055} - - component: {fileID: 2061883755384359098} - m_Layer: 0 - m_Name: OrderedListView - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &4406604062793069055 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3134920892735880532} - 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: 9184085923298778894} - - {fileID: 5067531158375095824} - - {fileID: 1525949943038772175} - - {fileID: 8172909560867918246} - m_Father: {fileID: 394164018060954109} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &2061883755384359098 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3134920892735880532} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Padding: - m_Left: 0 - m_Right: 0 - m_Top: 0 - m_Bottom: 0 - m_ChildAlignment: 0 - m_Spacing: 2 - m_ChildForceExpandWidth: 1 - m_ChildForceExpandHeight: 1 - m_ChildControlWidth: 0 - m_ChildControlHeight: 0 - m_ChildScaleWidth: 0 - m_ChildScaleHeight: 0 - m_ReverseArrangement: 0 ---- !u!1 &3156893245344415625 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5417714045102847244} - - component: {fileID: 5704476261968104625} - - component: {fileID: 1362998691021116941} - m_Layer: 0 - m_Name: RSecondaryButton - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &5417714045102847244 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3156893245344415625} - 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: 9045665383047432220} - - {fileID: 8591091615642228418} - m_Father: {fileID: 8484091777571837807} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 153, y: 40} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &5704476261968104625 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3156893245344415625} - m_CullTransparentMesh: 1 ---- !u!114 &1362998691021116941 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3156893245344415625} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.34509805, g: 0.34509805, b: 0.34509805, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &3253854345609227040 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6133188520101204400} - - component: {fileID: 2629453016085246226} - - component: {fileID: 1100953672981393537} - m_Layer: 5 - m_Name: RExpression1Icon - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &6133188520101204400 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3253854345609227040} - 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: 628890490560670852} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 20, y: 0} - m_SizeDelta: {x: 30.2816, y: 30.281} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &2629453016085246226 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3253854345609227040} - m_CullTransparentMesh: 1 ---- !u!114 &1100953672981393537 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3253854345609227040} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 76dc0abb2ebb44c9a9bd39266f0b3c91, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &3257073808386228350 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4578268034687854241} - - component: {fileID: 6955614696914789928} - m_Layer: 5 - m_Name: SelectedDeviceTitle - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &4578268034687854241 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3257073808386228350} - 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: 1623475918692148195} - - {fileID: 4056566217759540397} - m_Father: {fileID: 1638209659654700137} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 40} - m_Pivot: {x: 0.5, y: 1} ---- !u!222 &6955614696914789928 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3257073808386228350} - m_CullTransparentMesh: 0 ---- !u!1 &3460761980366582573 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6580222380407670581} - - component: {fileID: 4543255793771256773} - - component: {fileID: 7589818591704186427} - m_Layer: 0 - m_Name: LExpression3Button - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &6580222380407670581 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3460761980366582573} - 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: 414189546133751448} - - {fileID: 5613823859235805758} - - {fileID: 3952293249097553080} - m_Father: {fileID: 6462993320847643308} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 40} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &4543255793771256773 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3460761980366582573} - m_CullTransparentMesh: 1 ---- !u!114 &7589818591704186427 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3460761980366582573} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.34509805, g: 0.34509805, b: 0.34509805, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &3510864414779368957 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6390267479988922023} - - component: {fileID: 1620742577672500824} - m_Layer: 0 - m_Name: LTriggerButton - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &6390267479988922023 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3510864414779368957} - 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: 1286743001511227838} - - {fileID: 372728133250704906} - - {fileID: 5666643825144031299} - m_Father: {fileID: 537185462701595200} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 153, y: 40} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &1620742577672500824 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3510864414779368957} - m_CullTransparentMesh: 1 ---- !u!1 &3559661271360909672 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8132287113485033861} - - component: {fileID: 4242128290924201} - - component: {fileID: 6388914560039728744} - m_Layer: 5 - m_Name: Bg - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &8132287113485033861 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3559661271360909672} - 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: 7868162925709135601} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &4242128290924201 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3559661271360909672} - m_CullTransparentMesh: 1 ---- !u!114 &6388914560039728744 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3559661271360909672} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.34509805, g: 0.34509805, b: 0.34509805, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 89cb99e3e22696848a1cbce7b320f520, type: 3} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 2.1 ---- !u!1 &3604177352531511849 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4014092977727084897} - - component: {fileID: 2784304787329509324} - - component: {fileID: 6050477616616213851} - m_Layer: 5 - m_Name: RExpression3stickIcon - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &4014092977727084897 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3604177352531511849} - 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: 4126372588271254228} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 20, y: 0} - m_SizeDelta: {x: 30.2816, y: 30.281} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &2784304787329509324 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3604177352531511849} - m_CullTransparentMesh: 1 ---- !u!114 &6050477616616213851 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3604177352531511849} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 76dc0abb2ebb44c9a9bd39266f0b3c91, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &3609452959681673164 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4957108541736216693} - - component: {fileID: 7453670857251010962} - - component: {fileID: 6487868528169299833} - m_Layer: 5 - m_Name: Icon - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &4957108541736216693 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3609452959681673164} - 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: 332777195174710517} - 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: -105, y: 0.1223} - m_SizeDelta: {x: 30.2816, y: 30.281} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &7453670857251010962 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3609452959681673164} - m_CullTransparentMesh: 1 ---- !u!114 &6487868528169299833 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3609452959681673164} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 7d7a2f6c5e996e24388af5a8227afdcf, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &3656814206179030082 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 754334856648844837} - - component: {fileID: 8838036309630221568} - m_Layer: 0 - m_Name: LController - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &754334856648844837 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3656814206179030082} - 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: 7578652588044504255} - - {fileID: 5103673373263905850} - m_Father: {fileID: 7103409666290189088} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.75, y: 0.5} - m_AnchorMax: {x: 0.75, y: 0.5} - m_AnchoredPosition: {x: 8.375, y: 10} - m_SizeDelta: {x: 138.25, y: 225} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &8838036309630221568 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3656814206179030082} - m_CullTransparentMesh: 1 ---- !u!1 &3679170552668703874 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3952293249097553080} - - component: {fileID: 6032283910589525481} - - component: {fileID: 7364929132661629932} - m_Layer: 5 - m_Name: LExpression3Name - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &3952293249097553080 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3679170552668703874} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 6580222380407670581} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 62, y: -0.000030517578} - m_SizeDelta: {x: 187, y: 67.552} - m_Pivot: {x: 0, y: 0.5} ---- !u!222 &6032283910589525481 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3679170552668703874} - m_CullTransparentMesh: 0 ---- !u!114 &7364929132661629932 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3679170552668703874} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 42 - m_FontStyle: 0 - m_BestFit: 1 - m_MinSize: 0 - m_MaxSize: 45 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: Name ---- !u!1 &3683960206838613938 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7767859450673573951} - - component: {fileID: 391297472744163890} - - component: {fileID: 8967920162631432870} - m_Layer: 0 - m_Name: RExpression3Button - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &7767859450673573951 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3683960206838613938} - 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: 928914878550950041} - - {fileID: 6829759728903216125} - - {fileID: 4512836958538490338} - m_Father: {fileID: 4545038286919774978} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 40} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &391297472744163890 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3683960206838613938} - m_CullTransparentMesh: 1 ---- !u!114 &8967920162631432870 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3683960206838613938} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.34509805, g: 0.34509805, b: 0.34509805, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &3768229474998054900 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4545038286919774978} - - component: {fileID: 3010205486228810483} - m_Layer: 0 - m_Name: ButtonsList - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &4545038286919774978 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3768229474998054900} - 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: 2314423295413228411} - - {fileID: 628890490560670852} - - {fileID: 3662364895757944182} - - {fileID: 7767859450673573951} - - {fileID: 2751124339627162720} - - {fileID: 3612895881655085730} - m_Father: {fileID: 6555096854186027131} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 64.5, y: 22.5} - m_SizeDelta: {x: -131, y: -45} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &3010205486228810483 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3768229474998054900} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Padding: - m_Left: 4 - m_Right: 0 - m_Top: 1 - m_Bottom: 1 - m_ChildAlignment: 3 - m_Spacing: 4 - m_ChildForceExpandWidth: 1 - m_ChildForceExpandHeight: 0 - m_ChildControlWidth: 1 - m_ChildControlHeight: 0 - m_ChildScaleWidth: 0 - m_ChildScaleHeight: 0 - m_ReverseArrangement: 0 ---- !u!1 &3776978895211653979 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3173181438937221057} - - component: {fileID: 4255860016238790699} - m_Layer: 5 - m_Name: TranslateRotateValues - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &3173181438937221057 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3776978895211653979} - 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: 6503857598836605731} - - {fileID: 4485096097327297355} - m_Father: {fileID: 8172909560867918246} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.39900002, y: 0} - m_AnchorMax: {x: 0.6, y: 1} - m_AnchoredPosition: {x: 170.04999, y: 0.000049591064} - m_SizeDelta: {x: 140.09998, y: -7.9637} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &4255860016238790699 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3776978895211653979} - m_CullTransparentMesh: 0 ---- !u!1 &3790520762988993474 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5412799415524486407} - - component: {fileID: 227490158794949428} - m_Layer: 5 - m_Name: ControllerSelectedValues - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &5412799415524486407 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3790520762988993474} - 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: 4241088231456432055} - - {fileID: 4808396553272134774} - m_Father: {fileID: 5096071673048095565} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.39900002, y: 0} - m_AnchorMax: {x: 0.6, y: 1} - m_AnchoredPosition: {x: 170.04999, y: 0.000045776367} - m_SizeDelta: {x: 140.09998, y: -7.9637} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &227490158794949428 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3790520762988993474} - m_CullTransparentMesh: 0 ---- !u!1 &3810754329351001909 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 414189546133751448} - - component: {fileID: 4476347012126245677} - - component: {fileID: 8327766308005330169} - m_Layer: 5 - m_Name: LExpression3Icon - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &414189546133751448 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3810754329351001909} - 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: 6580222380407670581} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 20, y: 0} - m_SizeDelta: {x: 30.2816, y: 30.281} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &4476347012126245677 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3810754329351001909} - m_CullTransparentMesh: 1 ---- !u!114 &8327766308005330169 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3810754329351001909} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 76dc0abb2ebb44c9a9bd39266f0b3c91, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &3858588951611749532 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7445554808713570671} - - component: {fileID: 3420771605062344833} - - component: {fileID: 7004533194028666124} - m_Layer: 5 - m_Name: LExpression5Icon - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &7445554808713570671 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3858588951611749532} - 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: 6234028023674512109} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 20, y: 0} - m_SizeDelta: {x: 30.2816, y: 30.281} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &3420771605062344833 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3858588951611749532} - m_CullTransparentMesh: 1 ---- !u!114 &7004533194028666124 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3858588951611749532} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 76dc0abb2ebb44c9a9bd39266f0b3c91, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &3948736539266540335 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3369260571146887227} - - component: {fileID: 4123252824241487754} - - component: {fileID: 4202919156071094973} - m_Layer: 5 - m_Name: RExpression2Bind - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &3369260571146887227 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3948736539266540335} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 3662364895757944182} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 41.895996, y: 0.000030517578} - m_SizeDelta: {x: 221.224, y: 67.552} - m_Pivot: {x: 0, y: 0.5} ---- !u!222 &4123252824241487754 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3948736539266540335} - m_CullTransparentMesh: 0 ---- !u!114 &4202919156071094973 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3948736539266540335} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 45 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 0 - m_MaxSize: 58 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: K ---- !u!1 &3957102414512565372 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7578652588044504255} - - component: {fileID: 9218511496296290192} - - component: {fileID: 4141331347712887887} - m_Layer: 0 - m_Name: LControllerImage - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &7578652588044504255 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3957102414512565372} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 754334856648844837} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: -3.2999954, y: 7} - m_SizeDelta: {x: -10, y: -30} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &9218511496296290192 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3957102414512565372} - m_CullTransparentMesh: 1 ---- !u!114 &4141331347712887887 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3957102414512565372} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.43137255, g: 0.43137255, b: 0.43137255, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 10abf1be8eef148d4aa4b96b2af7a9f0, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &3968476566427329354 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3810526079947131977} - - component: {fileID: 8884532134050846839} - m_Layer: 5 - m_Name: LControllerKeyBind - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &3810526079947131977 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3968476566427329354} - 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: 7687940542572837860} - m_Father: {fileID: 7103409666290189088} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 1, y: 0.05} - m_AnchorMax: {x: 1, y: 0.05} - m_AnchoredPosition: {x: -5, y: 0} - m_SizeDelta: {x: 115, y: 30} - m_Pivot: {x: 1, y: 0.5} ---- !u!222 &8884532134050846839 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3968476566427329354} - m_CullTransparentMesh: 0 ---- !u!1 &4135614184157301859 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1286743001511227838} - - component: {fileID: 6812402387170782214} - - component: {fileID: 7505294238925710306} - m_Layer: 5 - m_Name: Bg - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1286743001511227838 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4135614184157301859} - 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: 6390267479988922023} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &6812402387170782214 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4135614184157301859} - m_CullTransparentMesh: 1 ---- !u!114 &7505294238925710306 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4135614184157301859} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.34509805, g: 0.34509805, b: 0.34509805, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 89cb99e3e22696848a1cbce7b320f520, type: 3} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 2.1 ---- !u!1 &4139656201179475106 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5603575353259662594} - - component: {fileID: 7089921515554351199} - - component: {fileID: 4478232661827727146} - m_Layer: 5 - m_Name: LMenuIcon - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &5603575353259662594 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4139656201179475106} - 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: 5498112335980241132} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 20, y: 0} - m_SizeDelta: {x: 30.2816, y: 30.281} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &7089921515554351199 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4139656201179475106} - m_CullTransparentMesh: 1 ---- !u!114 &4478232661827727146 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4139656201179475106} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 76dc0abb2ebb44c9a9bd39266f0b3c91, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &4140800722509203119 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4183362681496228909} - - component: {fileID: 6425245057692559462} - m_Layer: 0 - m_Name: OrderedListView - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &4183362681496228909 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4140800722509203119} - 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: 6167112928552560931} - - {fileID: 1399327480036815817} - - {fileID: 5096071673048095565} - - {fileID: 3525313934337792023} - m_Father: {fileID: 1090898951568715956} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &6425245057692559462 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4140800722509203119} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Padding: - m_Left: 0 - m_Right: 0 - m_Top: 0 - m_Bottom: 0 - m_ChildAlignment: 0 - m_Spacing: 2 - m_ChildForceExpandWidth: 1 - m_ChildForceExpandHeight: 1 - m_ChildControlWidth: 0 - m_ChildControlHeight: 0 - m_ChildScaleWidth: 0 - m_ChildScaleHeight: 0 - m_ReverseArrangement: 0 ---- !u!1 &4149522570086992223 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4071469278344855793} - - component: {fileID: 4084771795773778614} - - component: {fileID: 6738185887094908372} - m_Layer: 5 - m_Name: LSecondaryText - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &4071469278344855793 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4149522570086992223} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 5264040794177459897} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 97.201996, y: 0} - m_SizeDelta: {x: 221.224, y: 67.552} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &4084771795773778614 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4149522570086992223} - m_CullTransparentMesh: 0 ---- !u!114 &6738185887094908372 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4149522570086992223} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 45 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 0 - m_MaxSize: 58 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: Secondary ---- !u!1 &4165110462371123851 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4241088231456432055} - - component: {fileID: 7718276039194784840} - - component: {fileID: 8817055426768203945} - m_Layer: 5 - m_Name: Icon - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &4241088231456432055 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4165110462371123851} - 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: 5412799415524486407} - 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: -105, y: 0.1223} - m_SizeDelta: {x: 30.2816, y: 30.281} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &7718276039194784840 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4165110462371123851} - m_CullTransparentMesh: 1 ---- !u!114 &8817055426768203945 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4165110462371123851} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 76dc0abb2ebb44c9a9bd39266f0b3c91, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &4166127257854725066 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6076226026162586969} - - component: {fileID: 1869674036692729038} - - component: {fileID: 3347247525062691385} - m_Layer: 5 - m_Name: LExpression2Bind - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &6076226026162586969 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4166127257854725066} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 7210374592701731116} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 97.201996, y: 0} - m_SizeDelta: {x: 221.224, y: 67.552} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &1869674036692729038 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4166127257854725066} - m_CullTransparentMesh: 0 ---- !u!114 &3347247525062691385 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4166127257854725066} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 45 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 0 - m_MaxSize: 58 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: K ---- !u!1 &4191912485329430863 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 641481497500139678} - - component: {fileID: 3159584211387568828} - - component: {fileID: 3271739954664199333} - m_Layer: 5 - m_Name: TranslateRotateButton - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &641481497500139678 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4191912485329430863} - 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: 7960587828077478501} - - {fileID: 2262248402257033999} - m_Father: {fileID: 8172909560867918246} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.39900002, y: 0} - m_AnchorMax: {x: 0.6, y: 1} - m_AnchoredPosition: {x: -170, y: 0} - m_SizeDelta: {x: 140, y: -2} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &3159584211387568828 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4191912485329430863} - m_CullTransparentMesh: 1 ---- !u!114 &3271739954664199333 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4191912485329430863} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.34509805, g: 0.34509805, b: 0.34509805, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 89cb99e3e22696848a1cbce7b320f520, type: 3} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 2.1 ---- !u!1 &4295091183073286520 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2566992847932450312} - - component: {fileID: 7734778160635462346} - - component: {fileID: 8408635471804533457} - m_Layer: 5 - m_Name: Bg - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &2566992847932450312 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4295091183073286520} - 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: 2314423295413228411} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &7734778160635462346 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4295091183073286520} - m_CullTransparentMesh: 1 ---- !u!114 &8408635471804533457 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4295091183073286520} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.34509805, g: 0.34509805, b: 0.34509805, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 89cb99e3e22696848a1cbce7b320f520, type: 3} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 2.1 ---- !u!1 &4320992712495594815 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8040695527253065495} - - component: {fileID: 754169444710874473} - - component: {fileID: 7058744311849270435} - m_Layer: 5 - m_Name: Text - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &8040695527253065495 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4320992712495594815} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 332777195174710517} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 19.8, y: 0.12232971} - m_SizeDelta: {x: 153.08, y: 29.552} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &754169444710874473 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4320992712495594815} - m_CullTransparentMesh: 0 ---- !u!114 &7058744311849270435 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4320992712495594815} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 42 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 0 - m_MaxSize: 115 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: Controller ---- !u!1 &4325423084509786346 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6234028023674512109} - - component: {fileID: 4977950582811160134} - - component: {fileID: 1052507032598933221} - m_Layer: 0 - m_Name: LExpression5Button - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &6234028023674512109 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4325423084509786346} - 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: 7445554808713570671} - - {fileID: 7474410419877653498} - - {fileID: 3812385094234538481} - m_Father: {fileID: 6462993320847643308} - m_RootOrder: 5 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 40} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &4977950582811160134 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4325423084509786346} - m_CullTransparentMesh: 1 ---- !u!114 &1052507032598933221 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4325423084509786346} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.34509805, g: 0.34509805, b: 0.34509805, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 89cb99e3e22696848a1cbce7b320f520, type: 3} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 2.1 ---- !u!1 &4334203052632634741 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3390664557058780491} - - component: {fileID: 3900160280289629168} - - component: {fileID: 3921153324794153759} - m_Layer: 5 - m_Name: RTriggerText - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &3390664557058780491 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4334203052632634741} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 8962740172795211005} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 97.201996, y: 0} - m_SizeDelta: {x: 221.224, y: 67.552} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &3900160280289629168 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4334203052632634741} - m_CullTransparentMesh: 0 ---- !u!114 &3921153324794153759 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4334203052632634741} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 45 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 0 - m_MaxSize: 58 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: L Mouse ---- !u!1 &4347796561219584452 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7845584875122968193} - - component: {fileID: 6879059812098169080} - - component: {fileID: 3219178859721645255} - m_Layer: 5 - m_Name: RExpression0Icon - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &7845584875122968193 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4347796561219584452} - 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: 2314423295413228411} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 20, y: 0} - m_SizeDelta: {x: 30.2816, y: 30.281} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &6879059812098169080 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4347796561219584452} - m_CullTransparentMesh: 1 ---- !u!114 &3219178859721645255 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4347796561219584452} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 76dc0abb2ebb44c9a9bd39266f0b3c91, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &4381792593294702059 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5509658837851308562} - - component: {fileID: 4699714745759703944} - - component: {fileID: 4849158320829012260} - m_Layer: 5 - m_Name: LExpression1Bind - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &5509658837851308562 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4381792593294702059} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1212292503507699025} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 97.201996, y: 0} - m_SizeDelta: {x: 221.224, y: 67.552} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &4699714745759703944 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4381792593294702059} - m_CullTransparentMesh: 0 ---- !u!114 &4849158320829012260 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4381792593294702059} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 45 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 0 - m_MaxSize: 58 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: K ---- !u!1 &4404037300537831431 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 27911596466560415} - m_Layer: 5 - m_Name: LookButton - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &27911596466560415 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4404037300537831431} - 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: 4588808533219541975} - - {fileID: 55462233220691548} - - {fileID: 6633764668880504294} - m_Father: {fileID: 9184085923298778894} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.39900002, y: 0} - m_AnchorMax: {x: 0.6, y: 1} - m_AnchoredPosition: {x: -170, y: 0} - m_SizeDelta: {x: 140, y: -2} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!1 &4417375924538051045 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2960622662769578833} - - component: {fileID: 6960406641884156449} - - component: {fileID: 2143043854366787450} - m_Layer: 5 - m_Name: LExpression3stickText - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &2960622662769578833 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4417375924538051045} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 6202310348302799411} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 97.201996, y: 0} - m_SizeDelta: {x: 221.224, y: 67.552} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &6960406641884156449 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4417375924538051045} - m_CullTransparentMesh: 0 ---- !u!114 &2143043854366787450 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4417375924538051045} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 45 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 0 - m_MaxSize: 58 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: W,A,S,D ---- !u!1 &4508788749262159961 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6633764668880504294} - - component: {fileID: 1831986100379435162} - - component: {fileID: 5211343494943572565} - m_Layer: 5 - m_Name: LookText - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &6633764668880504294 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4508788749262159961} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 27911596466560415} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 19.8, y: 0.12232971} - m_SizeDelta: {x: 153.08, y: 29.552} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &1831986100379435162 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4508788749262159961} - m_CullTransparentMesh: 1 ---- !u!114 &5211343494943572565 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4508788749262159961} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 42 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 0 - m_MaxSize: 115 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: Look ---- !u!1 &4542619164838155055 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3386596041128427819} - - component: {fileID: 7481722243555183427} - - component: {fileID: 5281075120118962380} - m_Layer: 5 - m_Name: LExpression0Bind - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &3386596041128427819 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4542619164838155055} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 7868162925709135601} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 97.201996, y: 0} - m_SizeDelta: {x: 221.224, y: 67.552} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &7481722243555183427 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4542619164838155055} - m_CullTransparentMesh: 0 ---- !u!114 &5281075120118962380 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4542619164838155055} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 45 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 0 - m_MaxSize: 58 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: K ---- !u!1 &4560080867658425365 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 465409959190680123} - - component: {fileID: 2775602096074475247} - - component: {fileID: 2539689992278812737} - m_Layer: 5 - m_Name: RExpression5Bind - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &465409959190680123 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4560080867658425365} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 3612895881655085730} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 41.895996, y: 0.000030517578} - m_SizeDelta: {x: 221.224, y: 67.552} - m_Pivot: {x: 0, y: 0.5} ---- !u!222 &2775602096074475247 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4560080867658425365} - m_CullTransparentMesh: 0 ---- !u!114 &2539689992278812737 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4560080867658425365} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 45 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 0 - m_MaxSize: 58 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: K ---- !u!1 &4579648507165661244 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3755905775850264140} - - component: {fileID: 420004008627478485} - m_Layer: 5 - m_Name: LHandKeyBind - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &3755905775850264140 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4579648507165661244} - 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: 2926349322669476933} - m_Father: {fileID: 6688826027410024821} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 1, y: 0.05} - m_AnchorMax: {x: 1, y: 0.05} - m_AnchoredPosition: {x: -5, y: 0} - m_SizeDelta: {x: 115, y: 30} - m_Pivot: {x: 1, y: 0.5} ---- !u!222 &420004008627478485 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4579648507165661244} - m_CullTransparentMesh: 0 ---- !u!1 &4584432513583164822 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2664160203474198374} - - component: {fileID: 4539270974991739954} - m_Layer: 5 - m_Name: RControllerKeyBind - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &2664160203474198374 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4584432513583164822} - 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: 7490801368496503164} - m_Father: {fileID: 5498894420459434082} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.05} - m_AnchorMax: {x: 0, y: 0.05} - m_AnchoredPosition: {x: 5, y: 0} - m_SizeDelta: {x: 115, y: 30} - m_Pivot: {x: 0, y: 0.5} ---- !u!222 &4539270974991739954 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4584432513583164822} - m_CullTransparentMesh: 0 ---- !u!1 &4660750799797771775 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7656103794068767007} - - component: {fileID: 8241717304471958062} - - component: {fileID: 5015137234996038827} - m_Layer: 5 - m_Name: RExpression4Icon - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &7656103794068767007 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4660750799797771775} - 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: 2751124339627162720} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 20, y: 0} - m_SizeDelta: {x: 30.2816, y: 30.281} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &8241717304471958062 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4660750799797771775} - m_CullTransparentMesh: 1 ---- !u!114 &5015137234996038827 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4660750799797771775} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 76dc0abb2ebb44c9a9bd39266f0b3c91, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &4680802700698435911 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4784770220189540577} - - component: {fileID: 8516581145779619093} - - component: {fileID: 1382989206379361076} - m_Layer: 5 - m_Name: LookValuesText - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &4784770220189540577 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4680802700698435911} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 8658708234692622649} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 22.195, y: 0.12232971} - m_SizeDelta: {x: 153.08, y: 29.552} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &8516581145779619093 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4680802700698435911} - m_CullTransparentMesh: 0 ---- !u!114 &1382989206379361076 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4680802700698435911} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 42 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 0 - m_MaxSize: 115 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: Mouse Move ---- !u!1 &4695206582529755048 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5961962218551576997} - - component: {fileID: 7383436562641969423} - - component: {fileID: 3768984851911990246} - m_Layer: 0 - m_Name: LGripButton - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &5961962218551576997 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4695206582529755048} - 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: 3002383805111170562} - - {fileID: 7193435800343865340} - m_Father: {fileID: 537185462701595200} - m_RootOrder: 5 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 153, y: 40} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &7383436562641969423 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4695206582529755048} - m_CullTransparentMesh: 1 ---- !u!114 &3768984851911990246 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4695206582529755048} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.34509805, g: 0.34509805, b: 0.34509805, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 89cb99e3e22696848a1cbce7b320f520, type: 3} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 2.1 ---- !u!1 &4772051548424299103 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5907894215337029604} - - component: {fileID: 4959906271408918182} - - component: {fileID: 1961592952334493289} - m_Layer: 5 - m_Name: LookValuesIcon - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &5907894215337029604 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4772051548424299103} - 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: 8658708234692622649} - 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: -105, y: 0.1223} - m_SizeDelta: {x: 30.2816, y: 30.281} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &4959906271408918182 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4772051548424299103} - m_CullTransparentMesh: 1 ---- !u!114 &1961592952334493289 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4772051548424299103} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: f997d60d79a4e45cab6b1814e377a1b3, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &4815978025416180668 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7210374592701731116} - - component: {fileID: 835322684707672675} - - component: {fileID: 3571123923799289125} - m_Layer: 0 - m_Name: LExpression2Button - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &7210374592701731116 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4815978025416180668} - 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: 767564925141842383} - - {fileID: 6076226026162586969} - - {fileID: 5162934926535781650} - m_Father: {fileID: 6462993320847643308} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 40} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &835322684707672675 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4815978025416180668} - m_CullTransparentMesh: 1 ---- !u!114 &3571123923799289125 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4815978025416180668} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.34509805, g: 0.34509805, b: 0.34509805, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &4868345648910077735 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3705340878385713561} - - component: {fileID: 1651828413451517821} - - component: {fileID: 7353517302304817799} - m_Layer: 5 - m_Name: RPrimaryText - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &3705340878385713561 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4868345648910077735} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 5026453929358367971} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 97.201996, y: 0} - m_SizeDelta: {x: 221.224, y: 67.552} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &1651828413451517821 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4868345648910077735} - m_CullTransparentMesh: 0 ---- !u!114 &7353517302304817799 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4868345648910077735} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 45 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 0 - m_MaxSize: 58 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: Primary ---- !u!1 &4931128358686969042 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8482404054746877728} - - component: {fileID: 9169376837264079424} - - component: {fileID: 2721275356292669011} - m_Layer: 0 - m_Name: HeadsetImage - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &8482404054746877728 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4931128358686969042} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 8808850000785169588} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 1} - m_AnchorMax: {x: 0.5, y: 1} - m_AnchoredPosition: {x: 0, y: -15.000029} - m_SizeDelta: {x: 100, y: 50} - m_Pivot: {x: 0.5, y: 1} ---- !u!222 &9169376837264079424 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4931128358686969042} - m_CullTransparentMesh: 1 ---- !u!114 &2721275356292669011 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4931128358686969042} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 177f60e6b21ff774093004ca330b2241, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &5002853142303174881 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2314423295413228411} - - component: {fileID: 2781131191768778335} - m_Layer: 0 - m_Name: RExpression0Button - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &2314423295413228411 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5002853142303174881} - 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: 2566992847932450312} - - {fileID: 7845584875122968193} - - {fileID: 2530981367770184548} - - {fileID: 7408420773471807684} - m_Father: {fileID: 4545038286919774978} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 40} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &2781131191768778335 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5002853142303174881} - m_CullTransparentMesh: 1 ---- !u!1 &5124320464015588982 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8172909560867918246} - m_Layer: 0 - m_Name: TranslateRotateRow - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &8172909560867918246 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5124320464015588982} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 641481497500139678} - - {fileID: 3173181438937221057} - m_Father: {fileID: 4406604062793069055} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 604, y: 40} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!1 &5144230184382144275 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6834570650340802011} - - component: {fileID: 5022682649648832736} - - component: {fileID: 4302573497791843332} - m_Layer: 0 - m_Name: LHandImage - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &6834570650340802011 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5144230184382144275} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 7362995812378593056} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: -3.300003, y: 7} - m_SizeDelta: {x: -10, y: -30} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &5022682649648832736 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5144230184382144275} - m_CullTransparentMesh: 1 ---- !u!114 &4302573497791843332 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5144230184382144275} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.34509805, g: 0.34509805, b: 0.34509805, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 7d3dbc333af046c4193982e1166659dd, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &5159842120800599147 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8658708234692622649} - - component: {fileID: 7067700435668743572} - m_Layer: 5 - m_Name: LookValues - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &8658708234692622649 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5159842120800599147} - 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: 5907894215337029604} - - {fileID: 4784770220189540577} - m_Father: {fileID: 9184085923298778894} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.39900002, y: 0} - m_AnchorMax: {x: 0.6, y: 1} - m_AnchoredPosition: {x: 170.04999, y: 0.000049591064} - m_SizeDelta: {x: 140.09998, y: -7.9637} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &7067700435668743572 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5159842120800599147} - m_CullTransparentMesh: 0 ---- !u!1 &5186017913614716935 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 928914878550950041} - - component: {fileID: 1592211538357293145} - - component: {fileID: 7097752115947953456} - m_Layer: 5 - m_Name: RExpression3Icon - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &928914878550950041 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5186017913614716935} - 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: 7767859450673573951} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 20, y: 0} - m_SizeDelta: {x: 30.2816, y: 30.281} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &1592211538357293145 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5186017913614716935} - m_CullTransparentMesh: 1 ---- !u!114 &7097752115947953456 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5186017913614716935} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 76dc0abb2ebb44c9a9bd39266f0b3c91, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &5264252996979404251 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5490768048793251116} - - component: {fileID: 5640519250381773497} - - component: {fileID: 5631620507944027750} - m_Layer: 5 - m_Name: RHandKeyBindText - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &5490768048793251116 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5264252996979404251} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 4760555099384953812} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: -0.000002861023} - m_SizeDelta: {x: 0, y: -0.000005722046} - m_Pivot: {x: 0, y: 0.5} ---- !u!222 &5640519250381773497 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5264252996979404251} - m_CullTransparentMesh: 0 ---- !u!114 &5631620507944027750 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5264252996979404251} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 36 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 2 - m_MaxSize: 65 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: '[Toggle]' ---- !u!1 &5306658030273723222 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4781838991281678427} - - component: {fileID: 3461636229979111402} - - component: {fileID: 4757261489836328332} - - component: {fileID: 3878188125220695243} - m_Layer: 5 - m_Name: CloseUIBtn - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &4781838991281678427 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5306658030273723222} - 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: 1410681280152203499} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 1, y: 0.5} - m_AnchorMax: {x: 1, y: 0.5} - m_AnchoredPosition: {x: -20, y: 0} - m_SizeDelta: {x: 32, y: 32} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &3461636229979111402 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5306658030273723222} - m_CullTransparentMesh: 0 ---- !u!114 &4757261489836328332 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5306658030273723222} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 0 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: c76518a5819794083a346812c0906b77, type: 3} - m_Type: 0 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!114 &3878188125220695243 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5306658030273723222} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Navigation: - m_Mode: 3 - m_WrapAround: 0 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 1 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_SelectedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_SelectedTrigger: Selected - m_DisabledTrigger: Disabled - m_Interactable: 1 - m_TargetGraphic: {fileID: 4757261489836328332} - m_OnClick: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 4465484215854679096} - m_TargetAssemblyTypeName: - m_MethodName: OnClickCloseSimulatorUIPanel - 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 ---- !u!1 &5377099287645797415 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1090898951568715956} - m_Layer: 0 - m_Name: TopSection - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1090898951568715956 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5377099287645797415} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 4183362681496228909} - m_Father: {fileID: 1638209659654700137} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 175} - m_Pivot: {x: 0.5, y: 1} ---- !u!1 &5474911868306362253 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7490801368496503164} - - component: {fileID: 73079961534976668} - - component: {fileID: 4155314165934772199} - m_Layer: 5 - m_Name: RControllerKeyBindText - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &7490801368496503164 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5474911868306362253} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 2664160203474198374} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: -0.000002861023} - m_SizeDelta: {x: 0, y: -0.000005722046} - m_Pivot: {x: 0, y: 0.5} ---- !u!222 &73079961534976668 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5474911868306362253} - m_CullTransparentMesh: 0 ---- !u!114 &4155314165934772199 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5474911868306362253} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 36 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 2 - m_MaxSize: 65 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: '[Toggle]' ---- !u!1 &5592726928964046354 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5026453929358367971} - - component: {fileID: 1305193763681998796} - - component: {fileID: 4707216344160266519} - m_Layer: 0 - m_Name: RPrimaryButton - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &5026453929358367971 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5592726928964046354} - 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: 282613771757399827} - - {fileID: 3705340878385713561} - m_Father: {fileID: 8484091777571837807} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 153, y: 40} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &1305193763681998796 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5592726928964046354} - m_CullTransparentMesh: 1 ---- !u!114 &4707216344160266519 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5592726928964046354} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.34509805, g: 0.34509805, b: 0.34509805, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &5686209082028937530 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7591974749378975761} - - component: {fileID: 422230263331092271} - - component: {fileID: 8284150429798826035} - m_Layer: 5 - m_Name: CursorLockIcon - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &7591974749378975761 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5686209082028937530} - 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: 7838612929920592448} - 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: -105, y: 0.1223} - m_SizeDelta: {x: 30.2816, y: 30.281} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &422230263331092271 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5686209082028937530} - m_CullTransparentMesh: 1 ---- !u!114 &8284150429798826035 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5686209082028937530} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 9e4e923f2e0534a56b6a0c2321388194, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &5692100895278696486 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7957317870655340943} - - component: {fileID: 2898328057681303322} - m_Layer: 5 - m_Name: XRInputMethodsLabel - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &7957317870655340943 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5692100895278696486} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 7920521666892899266} - m_Father: {fileID: 1638209659654700137} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 40} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &2898328057681303322 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5692100895278696486} - m_CullTransparentMesh: 0 ---- !u!1 &5700625697054680277 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7103409666290189088} - m_Layer: 0 - m_Name: LeftController - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &7103409666290189088 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5700625697054680277} - 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: 537185462701595200} - - {fileID: 754334856648844837} - - {fileID: 3810526079947131977} - m_Father: {fileID: 2375198052207354545} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0.5, y: 1} - m_AnchoredPosition: {x: 1, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!1 &5724322852318047251 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2803143897982347169} - - component: {fileID: 5600310592711868575} - - component: {fileID: 7359137029063965929} - m_Layer: 5 - m_Name: LSecondaryIcon - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &2803143897982347169 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5724322852318047251} - 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: 5264040794177459897} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 20, y: 0} - m_SizeDelta: {x: 30.2816, y: 30.281} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &5600310592711868575 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5724322852318047251} - m_CullTransparentMesh: 1 ---- !u!114 &7359137029063965929 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5724322852318047251} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 76dc0abb2ebb44c9a9bd39266f0b3c91, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &5880637838539333524 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1510148679143476660} - - component: {fileID: 5347067544782346359} - m_Layer: 0 - m_Name: RHand - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1510148679143476660 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5880637838539333524} - 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: 5704057125620080137} - m_Father: {fileID: 6555096854186027131} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.25, y: 0.5} - m_AnchorMax: {x: 0.25, y: 0.5} - m_AnchoredPosition: {x: -11.7, y: 10} - m_SizeDelta: {x: 135, y: 225} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &5347067544782346359 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5880637838539333524} - m_CullTransparentMesh: 1 ---- !u!1 &5890872487850813880 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4366457965414634530} - - component: {fileID: 5046759505379620248} - - component: {fileID: 8839167712524059776} - m_Layer: 5 - m_Name: RGripIcon - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &4366457965414634530 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5890872487850813880} - 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: 6173016768322924529} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 20, y: 0} - m_SizeDelta: {x: 30.2816, y: 30.281} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &5046759505379620248 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5890872487850813880} - m_CullTransparentMesh: 1 ---- !u!114 &8839167712524059776 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5890872487850813880} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 76dc0abb2ebb44c9a9bd39266f0b3c91, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &6058238264489723445 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2728807970551288091} - - component: {fileID: 9030921633862422929} - - component: {fileID: 2067075132594572646} - m_Layer: 5 - m_Name: RGripText - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &2728807970551288091 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6058238264489723445} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 6173016768322924529} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 97.201996, y: 0} - m_SizeDelta: {x: 221.224, y: 67.552} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &9030921633862422929 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6058238264489723445} - m_CullTransparentMesh: 0 ---- !u!114 &2067075132594572646 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6058238264489723445} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 45 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 0 - m_MaxSize: 58 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: Grip ---- !u!1 &6073524971075917010 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5040662063865177185} - - component: {fileID: 6546049369509115381} - - component: {fileID: 8280149368199386730} - m_Layer: 5 - m_Name: Text - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &5040662063865177185 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6073524971075917010} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 8266049202949608784} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 19.8, y: 0.12232971} - m_SizeDelta: {x: 153.08, y: 29.552} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &6546049369509115381 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6073524971075917010} - m_CullTransparentMesh: 0 ---- !u!114 &8280149368199386730 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6073524971075917010} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 42 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 0 - m_MaxSize: 115 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: HMD ---- !u!1 &6079551086519483268 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 641378907099528958} - - component: {fileID: 7483261958102367550} - - component: {fileID: 7542507035909431882} - m_Layer: 5 - m_Name: LMenuText - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &641378907099528958 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6079551086519483268} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 5498112335980241132} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 97.201996, y: 0} - m_SizeDelta: {x: 221.224, y: 67.552} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &7483261958102367550 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6079551086519483268} - m_CullTransparentMesh: 0 ---- !u!114 &7542507035909431882 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6079551086519483268} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 45 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 0 - m_MaxSize: 58 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: Menu ---- !u!1 &6110355962726056997 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 217723402183666948} - - component: {fileID: 7515056654543532597} - - component: {fileID: 6248745479877647734} - m_Layer: 5 - m_Name: MoveIcon - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &217723402183666948 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6110355962726056997} - 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: 8059781972635455925} - 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: -105, y: 0.1223} - m_SizeDelta: {x: 30.2816, y: 30.281} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &7515056654543532597 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6110355962726056997} - m_CullTransparentMesh: 1 ---- !u!114 &6248745479877647734 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6110355962726056997} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 1d56a2d39cfbb49149abbf0076259327, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &6211571586753507704 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5603832654879856732} - - component: {fileID: 4564452692390123240} - - component: {fileID: 2365044581243270202} - m_Layer: 5 - m_Name: Separator - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &5603832654879856732 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6211571586753507704} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1638209659654700137} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 2} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &4564452692390123240 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6211571586753507704} - m_CullTransparentMesh: 1 ---- !u!114 &2365044581243270202 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6211571586753507704} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.34509805, g: 0.34509805, b: 0.34509805, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 0} - m_Type: 0 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &6241285283790333551 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 9045665383047432220} - - component: {fileID: 6073157546749883684} - - component: {fileID: 2880029118767939635} - m_Layer: 5 - m_Name: RSecondaryIcon - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &9045665383047432220 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6241285283790333551} - 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: 5417714045102847244} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 20, y: 0} - m_SizeDelta: {x: 30.2816, y: 30.281} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &6073157546749883684 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6241285283790333551} - m_CullTransparentMesh: 1 ---- !u!114 &2880029118767939635 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6241285283790333551} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 76dc0abb2ebb44c9a9bd39266f0b3c91, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &6258417348793935797 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7838612929920592448} - - component: {fileID: 6306803474220772754} - - component: {fileID: 7134225087827827873} - m_Layer: 5 - m_Name: CursorLockButton - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &7838612929920592448 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6258417348793935797} - 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: 7591974749378975761} - - {fileID: 4655979479453782547} - m_Father: {fileID: 1525949943038772175} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.39900002, y: 0} - m_AnchorMax: {x: 0.6, y: 1} - m_AnchoredPosition: {x: -170, y: 0} - m_SizeDelta: {x: 140, y: -2} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &6306803474220772754 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6258417348793935797} - m_CullTransparentMesh: 0 ---- !u!114 &7134225087827827873 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6258417348793935797} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.34509805, g: 0.34509805, b: 0.34509805, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &6320559314919906147 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4655979479453782547} - - component: {fileID: 7213067749628437573} - - component: {fileID: 8592730955871035129} - m_Layer: 5 - m_Name: CursorLockText - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &4655979479453782547 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6320559314919906147} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 7838612929920592448} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 19.8, y: 0.12232971} - m_SizeDelta: {x: 153.08, y: 29.552} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &7213067749628437573 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6320559314919906147} - m_CullTransparentMesh: 0 ---- !u!114 &8592730955871035129 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6320559314919906147} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 42 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 0 - m_MaxSize: 115 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: Cursor Lock ---- !u!1 &6401519027833211422 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1644568580757268702} - - component: {fileID: 6839629451215005830} - - component: {fileID: 8744337181181706107} - m_Layer: 5 - m_Name: LExpression0Icon - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1644568580757268702 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6401519027833211422} - 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: 7868162925709135601} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 20, y: 0} - m_SizeDelta: {x: 30.2816, y: 30.281} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &6839629451215005830 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6401519027833211422} - m_CullTransparentMesh: 1 ---- !u!114 &8744337181181706107 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6401519027833211422} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 76dc0abb2ebb44c9a9bd39266f0b3c91, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &6446265796040595061 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6167112928552560931} - m_Layer: 0 - m_Name: CycleXRInputRow - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &6167112928552560931 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6446265796040595061} - 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: 8751572082322455077} - - {fileID: 1085174744544309416} - m_Father: {fileID: 4183362681496228909} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 604, y: 40} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!1 &6451191403789274921 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3812385094234538481} - - component: {fileID: 4061229266252227109} - - component: {fileID: 6988461728819528333} - m_Layer: 5 - m_Name: LExpression5Name - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &3812385094234538481 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6451191403789274921} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 6234028023674512109} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 65, y: -0.000030517578} - m_SizeDelta: {x: 187, y: 67.552} - m_Pivot: {x: 0, y: 0.5} ---- !u!222 &4061229266252227109 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6451191403789274921} - m_CullTransparentMesh: 0 ---- !u!114 &6988461728819528333 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6451191403789274921} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 42 - m_FontStyle: 0 - m_BestFit: 1 - m_MinSize: 0 - m_MaxSize: 45 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: Name ---- !u!1 &6456497066899002272 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6624498863070468513} - - component: {fileID: 8268537284488860631} - - component: {fileID: 8882831833105517729} - m_Layer: 0 - m_Name: LPrimaryButton - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &6624498863070468513 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6456497066899002272} - 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: 4575570135842204626} - - {fileID: 7100264250456930914} - m_Father: {fileID: 537185462701595200} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 153, y: 40} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &8268537284488860631 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6456497066899002272} - m_CullTransparentMesh: 1 ---- !u!114 &8882831833105517729 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6456497066899002272} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.34509805, g: 0.34509805, b: 0.34509805, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &6517414633578450629 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4588808533219541975} - - component: {fileID: 3060564814435003031} - - component: {fileID: 8816222108907400299} - m_Layer: 5 - m_Name: Bg - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &4588808533219541975 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6517414633578450629} - 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: 27911596466560415} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &3060564814435003031 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6517414633578450629} - m_CullTransparentMesh: 1 ---- !u!114 &8816222108907400299 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6517414633578450629} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.34509805, g: 0.34509805, b: 0.34509805, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 89cb99e3e22696848a1cbce7b320f520, type: 3} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 2.1 ---- !u!1 &6571452775300653220 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2843830431281675184} - - component: {fileID: 714980873680246536} - - component: {fileID: 1803654096424338867} - m_Layer: 5 - m_Name: HandBg - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &2843830431281675184 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6571452775300653220} - 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: 8170169633823365925} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &714980873680246536 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6571452775300653220} - m_CullTransparentMesh: 1 ---- !u!114 &1803654096424338867 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6571452775300653220} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.34509805, g: 0.34509805, b: 0.34509805, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 89cb99e3e22696848a1cbce7b320f520, type: 3} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 2.1 ---- !u!1 &6626148677775219752 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8702474825479002792} - - component: {fileID: 181602473041884184} - - component: {fileID: 8997356216852640550} - m_Layer: 5 - m_Name: RExpression3stickText - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &8702474825479002792 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6626148677775219752} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 4126372588271254228} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 97.201996, y: 0} - m_SizeDelta: {x: 221.224, y: 67.552} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &181602473041884184 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6626148677775219752} - m_CullTransparentMesh: 0 ---- !u!114 &8997356216852640550 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6626148677775219752} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 45 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 0 - m_MaxSize: 58 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: W,A,S,D ---- !u!1 &6629037898421352358 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5650525310892581216} - - component: {fileID: 4418481662742144290} - - component: {fileID: 1816450005177885120} - m_Layer: 5 - m_Name: HMDValueText - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &5650525310892581216 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6629037898421352358} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 6797212258523857263} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 22.195, y: 0.12232971} - m_SizeDelta: {x: 153.08, y: 29.552} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &4418481662742144290 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6629037898421352358} - m_CullTransparentMesh: 0 ---- !u!114 &1816450005177885120 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6629037898421352358} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 42 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 0 - m_MaxSize: 115 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: HMD Bind ---- !u!1 &6727403809735944615 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8130252941189920581} - - component: {fileID: 7207521502623590696} - - component: {fileID: 5329654153670800211} - m_Layer: 5 - m_Name: Icon - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &8130252941189920581 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6727403809735944615} - 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: 6797212258523857263} - 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: -105, y: 0.1223} - m_SizeDelta: {x: 30.2816, y: 30.281} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &7207521502623590696 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6727403809735944615} - m_CullTransparentMesh: 1 ---- !u!114 &5329654153670800211 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6727403809735944615} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 76dc0abb2ebb44c9a9bd39266f0b3c91, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &6854927009880641954 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1435818010387211638} - - component: {fileID: 6084545159862323512} - - component: {fileID: 1304613695517469534} - m_Layer: 0 - m_Name: RControllerImage - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1435818010387211638 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6854927009880641954} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 4367518527615682733} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 3.199997, y: 7} - m_SizeDelta: {x: -10, y: -30} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &6084545159862323512 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6854927009880641954} - m_CullTransparentMesh: 1 ---- !u!114 &1304613695517469534 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6854927009880641954} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.34509805, g: 0.34509805, b: 0.34509805, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 17c263f6077f14b218b13656aacd9551, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &6860690038395063160 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 9006406528424705473} - - component: {fileID: 7697561839572840220} - - component: {fileID: 4127540898704975624} - m_Layer: 5 - m_Name: Icon - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &9006406528424705473 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6860690038395063160} - 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: 8266049202949608784} - 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: -105, y: 0.1223} - m_SizeDelta: {x: 30.2816, y: 30.281} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &7697561839572840220 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6860690038395063160} - m_CullTransparentMesh: 1 ---- !u!114 &4127540898704975624 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6860690038395063160} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 08548d5ac6b7bc64da0b332636c5cc91, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &6889253956845354232 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 738610811508460873} - - component: {fileID: 4976131499544171943} - - component: {fileID: 1934479426755692708} - m_Layer: 5 - m_Name: XRDeviceSimLabel - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &738610811508460873 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6889253956845354232} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1410681280152203499} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 38, y: 0} - m_SizeDelta: {x: 470, y: 32} - m_Pivot: {x: 0, y: 0.5} ---- !u!222 &4976131499544171943 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6889253956845354232} - m_CullTransparentMesh: 0 ---- !u!114 &1934479426755692708 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6889253956845354232} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, 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_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 45 - m_FontStyle: 1 - m_BestFit: 0 - m_MinSize: 1 - m_MaxSize: 300 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: XR Device Simulator ---- !u!1 &6895722807339521491 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7097933087774045473} - - component: {fileID: 4251587358758506515} - - component: {fileID: 3447181658184698834} - m_Layer: 5 - m_Name: MoveValuesText - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &7097933087774045473 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6895722807339521491} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 7436509360777108265} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 22.195, y: 0.12232971} - m_SizeDelta: {x: 153.08, y: 29.552} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &4251587358758506515 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6895722807339521491} - m_CullTransparentMesh: 0 ---- !u!114 &3447181658184698834 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6895722807339521491} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 42 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 0 - m_MaxSize: 115 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: Movement Bind ---- !u!1 &6926658450106704013 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 292161024320626674} - - component: {fileID: 3774626748645449742} - - component: {fileID: 2009267550500725104} - m_Layer: 5 - m_Name: RMenuText - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &292161024320626674 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6926658450106704013} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 4904194509911213832} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 97.201996, y: 0} - m_SizeDelta: {x: 221.224, y: 67.552} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &3774626748645449742 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6926658450106704013} - m_CullTransparentMesh: 0 ---- !u!114 &2009267550500725104 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6926658450106704013} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 45 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 0 - m_MaxSize: 58 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: Menu ---- !u!1 &6948296404533650720 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5513303074855352272} - - component: {fileID: 1820316270378829101} - - component: {fileID: 3991019180862111495} - m_Layer: 5 - m_Name: RExpression2Icon - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &5513303074855352272 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6948296404533650720} - 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: 3662364895757944182} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 20, y: 0} - m_SizeDelta: {x: 30.2816, y: 30.281} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &1820316270378829101 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6948296404533650720} - m_CullTransparentMesh: 1 ---- !u!114 &3991019180862111495 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6948296404533650720} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 76dc0abb2ebb44c9a9bd39266f0b3c91, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &6972843308003237661 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7960587828077478501} - - component: {fileID: 1980283427671409612} - - component: {fileID: 3975362395058403299} - m_Layer: 5 - m_Name: TranslateRotateIcon - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &7960587828077478501 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6972843308003237661} - 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: 641481497500139678} - 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: -105, y: 0.1223} - m_SizeDelta: {x: 30.2816, y: 30.281} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &1980283427671409612 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6972843308003237661} - m_CullTransparentMesh: 1 ---- !u!114 &3975362395058403299 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6972843308003237661} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 139237a044d8e4255b40bb472c842087, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &7135150639758217606 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3525313934337792023} - m_Layer: 0 - m_Name: HandRow - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &3525313934337792023 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7135150639758217606} - 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: 8170169633823365925} - - {fileID: 8539554857296250557} - m_Father: {fileID: 4183362681496228909} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 604, y: 40} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!1 &7164882231009737402 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2926349322669476933} - - component: {fileID: 5738629138408965551} - - component: {fileID: 3971054272347729680} - m_Layer: 5 - m_Name: LHandKeyBindText - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &2926349322669476933 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7164882231009737402} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 3755905775850264140} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0.0000019073486} - m_SizeDelta: {x: 0, y: -0.000002861023} - m_Pivot: {x: 1, y: 0.5} ---- !u!222 &5738629138408965551 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7164882231009737402} - m_CullTransparentMesh: 0 ---- !u!114 &3971054272347729680 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7164882231009737402} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 36 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 2 - m_MaxSize: 65 - m_Alignment: 5 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: '[Toggle]' ---- !u!1 &7181221196645478565 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8591091615642228418} - - component: {fileID: 3074234920302147511} - - component: {fileID: 483164645938698941} - m_Layer: 5 - m_Name: RSecondaryText - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &8591091615642228418 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7181221196645478565} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 5417714045102847244} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 97.201996, y: 0} - m_SizeDelta: {x: 221.224, y: 67.552} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &3074234920302147511 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7181221196645478565} - m_CullTransparentMesh: 0 ---- !u!114 &483164645938698941 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7181221196645478565} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 45 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 0 - m_MaxSize: 58 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: Secondary ---- !u!1 &7238938505130696715 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 332777195174710517} - - component: {fileID: 4648403032256702414} - - component: {fileID: 32225061805576858} - m_Layer: 5 - m_Name: ControllerSelectedButton - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &332777195174710517 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7238938505130696715} - 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: 4957108541736216693} - - {fileID: 8040695527253065495} - m_Father: {fileID: 5096071673048095565} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.39900002, y: 0} - m_AnchorMax: {x: 0.6, y: 1} - m_AnchoredPosition: {x: -170, y: 0} - m_SizeDelta: {x: 140, y: -2} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &4648403032256702414 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7238938505130696715} - m_CullTransparentMesh: 0 ---- !u!114 &32225061805576858 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7238938505130696715} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.34509805, g: 0.34509805, b: 0.34509805, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &7258216382841568623 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8059781972635455925} - - component: {fileID: 5795658495555519894} - - component: {fileID: 6098669866548815350} - m_Layer: 5 - m_Name: MoveButton - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &8059781972635455925 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7258216382841568623} - 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: 217723402183666948} - - {fileID: 5737249769705389612} - m_Father: {fileID: 5067531158375095824} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.39900002, y: 0} - m_AnchorMax: {x: 0.6, y: 1} - m_AnchoredPosition: {x: -170, y: 0} - m_SizeDelta: {x: 140, y: -2} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &5795658495555519894 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7258216382841568623} - m_CullTransparentMesh: 0 ---- !u!114 &6098669866548815350 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7258216382841568623} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.34509805, g: 0.34509805, b: 0.34509805, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &7276332504517305019 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6173016768322924529} - - component: {fileID: 461917931673222571} - - component: {fileID: 1179552689117581641} - m_Layer: 0 - m_Name: RGripButton - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &6173016768322924529 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7276332504517305019} - 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: 4366457965414634530} - - {fileID: 2728807970551288091} - m_Father: {fileID: 8484091777571837807} - m_RootOrder: 5 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 153, y: 40} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &461917931673222571 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7276332504517305019} - m_CullTransparentMesh: 1 ---- !u!114 &1179552689117581641 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7276332504517305019} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.34509805, g: 0.34509805, b: 0.34509805, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 89cb99e3e22696848a1cbce7b320f520, type: 3} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 2.1 ---- !u!1 &7332564797995998783 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6555096854186027131} - m_Layer: 0 - m_Name: RightHand - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &6555096854186027131 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7332564797995998783} - 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: 4545038286919774978} - - {fileID: 1510148679143476660} - - {fileID: 4760555099384953812} - m_Father: {fileID: 2813366516863096307} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: -0.5, y: 0} - m_SizeDelta: {x: -4.0000076, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!1 &7492471381751310721 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5067531158375095824} - m_Layer: 0 - m_Name: MovementRow - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &5067531158375095824 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7492471381751310721} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 8059781972635455925} - - {fileID: 7436509360777108265} - m_Father: {fileID: 4406604062793069055} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 604, y: 40} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!1 &7494604795539143111 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7920521666892899266} - - component: {fileID: 4606686241095903233} - - component: {fileID: 1669961118827066462} - m_Layer: 5 - m_Name: Text - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &7920521666892899266 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7494604795539143111} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 7957317870655340943} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 6, y: 0} - m_SizeDelta: {x: 500, y: 80} - m_Pivot: {x: 0, y: 0.5} ---- !u!222 &4606686241095903233 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7494604795539143111} - m_CullTransparentMesh: 0 ---- !u!114 &1669961118827066462 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7494604795539143111} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 42 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 0 - m_MaxSize: 115 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: XR Input Methods ---- !u!1 &7507972748976072448 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7474410419877653498} - - component: {fileID: 1978975285318107072} - - component: {fileID: 4657459692363283452} - m_Layer: 5 - m_Name: LExpression5Bind - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &7474410419877653498 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7507972748976072448} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 6234028023674512109} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 97.201996, y: 0} - m_SizeDelta: {x: 221.224, y: 67.552} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &1978975285318107072 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7507972748976072448} - m_CullTransparentMesh: 0 ---- !u!114 &4657459692363283452 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7507972748976072448} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 45 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 0 - m_MaxSize: 58 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: K ---- !u!1 &7512441770001989854 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4126372588271254228} - - component: {fileID: 1940376828304949794} - - component: {fileID: 4168473694154048854} - m_Layer: 0 - m_Name: RExpression3stickButton - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &4126372588271254228 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7512441770001989854} - 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: 4014092977727084897} - - {fileID: 8702474825479002792} - m_Father: {fileID: 8484091777571837807} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 153, y: 40} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &1940376828304949794 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7512441770001989854} - m_CullTransparentMesh: 1 ---- !u!114 &4168473694154048854 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7512441770001989854} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.34509805, g: 0.34509805, b: 0.34509805, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &7572656654631549504 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 305517817363592027} - - component: {fileID: 4764559861082894922} - - component: {fileID: 4713727963536895302} - m_Layer: 5 - m_Name: RExpression1Name - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &305517817363592027 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7572656654631549504} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 628890490560670852} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 65, y: -0.000030517578} - m_SizeDelta: {x: 187, y: 67.552} - m_Pivot: {x: 0, y: 0.5} ---- !u!222 &4764559861082894922 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7572656654631549504} - m_CullTransparentMesh: 0 ---- !u!114 &4713727963536895302 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7572656654631549504} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 42 - m_FontStyle: 0 - m_BestFit: 1 - m_MinSize: 0 - m_MaxSize: 45 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: Name ---- !u!1 &7609329623103875362 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6797212258523857263} - - component: {fileID: 1416229376542274034} - m_Layer: 5 - m_Name: HMDSelectedValues - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &6797212258523857263 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7609329623103875362} - 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: 8130252941189920581} - - {fileID: 5650525310892581216} - m_Father: {fileID: 1399327480036815817} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.39900002, y: 0} - m_AnchorMax: {x: 0.6, y: 1} - m_AnchoredPosition: {x: 170.04999, y: 0.000045776367} - m_SizeDelta: {x: 140.09998, y: -7.9637} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &1416229376542274034 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7609329623103875362} - m_CullTransparentMesh: 0 ---- !u!1 &7662076761675301960 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6889984780207233200} - - component: {fileID: 481508915478006318} - - component: {fileID: 8693460562897698903} - - component: {fileID: 7098073663220756702} - - component: {fileID: 4465484215854679096} - - component: {fileID: 6388339889282338722} - - component: {fileID: 6188265173982644058} - - component: {fileID: 2729451482439296740} - - component: {fileID: 3686829068081992021} - m_Layer: 5 - m_Name: XR Device Simulator UI - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &6889984780207233200 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7662076761675301960} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0, y: 0, z: 0} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 1847791695669142127} - - {fileID: 1638209659654700137} - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0, y: 0} ---- !u!223 &481508915478006318 -Canvas: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7662076761675301960} - m_Enabled: 1 - serializedVersion: 3 - m_RenderMode: 0 - m_Camera: {fileID: 0} - m_PlaneDistance: 100 - m_PixelPerfect: 0 - m_ReceivesEvents: 1 - m_OverrideSorting: 0 - m_OverridePixelPerfect: 0 - m_SortingBucketNormalizedSize: 0 - m_AdditionalShaderChannelsFlag: 0 - m_SortingLayerID: 0 - m_SortingOrder: 1 - m_TargetDisplay: 0 ---- !u!114 &8693460562897698903 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7662076761675301960} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UiScaleMode: 1 - m_ReferencePixelsPerUnit: 100 - m_ScaleFactor: 1 - m_ReferenceResolution: {x: 1920, y: 1080} - m_ScreenMatchMode: 1 - m_MatchWidthOrHeight: 1 - m_PhysicalUnit: 3 - m_FallbackScreenDPI: 96 - m_DefaultSpriteDPI: 96 - m_DynamicPixelsPerUnit: 1 - m_PresetInfoIsWorld: 0 ---- !u!114 &7098073663220756702 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7662076761675301960} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} - m_Name: - m_EditorClassIdentifier: - m_IgnoreReversedGraphics: 1 - m_BlockingObjects: 0 - m_BlockingMask: - serializedVersion: 2 - m_Bits: 4294967295 ---- !u!114 &4465484215854679096 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7662076761675301960} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: e8b922481d9264546b97958b2c7cf0a0, type: 3} - m_Name: - m_EditorClassIdentifier: - m_IsMenuOpen: 1 - m_XRDeviceSimulatorMainPanel: {fileID: 1638209659654700138} - m_XRDeviceSimulatorCollapsedPanel: {fileID: 1433554934514912911} - m_HmdSpriteDark: {fileID: 21300000, guid: 177f60e6b21ff774093004ca330b2241, type: 3} - m_HmdSpriteLight: {fileID: 21300000, guid: 4eb43321e418951499417cda6141b31a, type: 3} - m_KeyboardSprite: {fileID: 21300000, guid: 76dc0abb2ebb44c9a9bd39266f0b3c91, type: 3} - m_MouseSprite: {fileID: 21300000, guid: f997d60d79a4e45cab6b1814e377a1b3, type: 3} - m_RMouseSpriteDark: {fileID: 21300000, guid: 308cc8b73722e43eab64c228a76560a6, type: 3} - m_RMouseSpriteLight: {fileID: 21300000, guid: 14e910c1fb9c7514a8106ffd25f1d892, type: 3} - m_RMouseSprite: {fileID: 0} - m_RoundedRectangle: {fileID: 21300000, guid: 89cb99e3e22696848a1cbce7b320f520, type: 3} - m_CycleDevicesText: {fileID: 3371161537473467337} - m_CurrentSelectedDeviceText: {fileID: 5399548881570719173} - m_HeadsetImage: {fileID: 2721275356292669011} - m_HeadsetMoveButton: {fileID: 6098669866548815350} - m_HeadsetMoveButtonIcon: {fileID: 6248745479877647734} - m_HeadsetMoveButtonText: {fileID: 517803879020285813} - m_HeadsetMoveValueIcon: {fileID: 4412908402409514172} - m_HeadsetMoveValueText: {fileID: 3447181658184698834} - m_HeadsetLookButton: {fileID: 8816222108907400299} - m_HeadsetLookButtonText: {fileID: 5211343494943572565} - m_HeadsetLookValueIcon: {fileID: 1961592952334493289} - m_HeadsetLookValueText: {fileID: 1382989206379361076} - m_CursorLockButton: {fileID: 7134225087827827873} - m_CursorLockValueText: {fileID: 7120185377061894656} - m_MouseModeButtonText: {fileID: 5592230383290526872} - m_MouseModeValueText: {fileID: 1452563728541468582} - m_HeadsetSelectedButton: {fileID: 1467215871600972289} - m_HeadsetSelectedValueText: {fileID: 1816450005177885120} - m_ControllerSelectedButton: {fileID: 32225061805576858} - m_ControllerSelectedIcon: {fileID: 6487868528169299833} - m_ControllerSelectedText: {fileID: 7058744311849270435} - m_ControllersSelectedValueText: {fileID: 8477002242924536414} - m_ControllersCanvasGroup: {fileID: 4327810280124264318} - m_LeftController: {fileID: 6388339889282338722} - m_LeftControllerButtonText: {fileID: 338382388888213524} - m_RightController: {fileID: 6188265173982644058} - m_RightControllerButtonText: {fileID: 4155314165934772199} - m_HandsSelectedButton: {fileID: 1803654096424338867} - m_HandsSelectedIcon: {fileID: 1488390788848035247} - m_HandsSelectedText: {fileID: 2396995885832409176} - m_HandsSelectedValueIcon: {fileID: 5513420064914589275} - m_HandsSelectedValueText: {fileID: 2349352921063641774} - m_HandsCanvasGroup: {fileID: 2291087181951237043} - m_LeftHand: {fileID: 2729451482439296740} - m_LeftHandButtonText: {fileID: 3971054272347729680} - m_RightHand: {fileID: 3686829068081992021} - m_RightHandButtonText: {fileID: 5631620507944027750} - m_EnabledColor: {r: 0, g: 0, b: 0, a: 0} - m_DisabledColor: {r: 0, g: 0, b: 0, a: 0} - m_ButtonColor: {r: 0, g: 0, b: 0, a: 0} - m_DisabledButtonColor: {r: 0, g: 0, b: 0, a: 0} - m_SelectedColor: {r: 0, g: 0, b: 0, a: 0} - m_BackgroundColor: {r: 0, g: 0, b: 0, a: 0} - m_DeviceColor: {r: 0, g: 0, b: 0, a: 0} - m_DisabledDeviceColor: {r: 0, g: 0, b: 0, a: 0} ---- !u!114 &6388339889282338722 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7662076761675301960} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: a907ece591e731e49b5d7be45f089972, type: 3} - m_Name: - m_EditorClassIdentifier: - m_ControllerImage: {fileID: 4141331347712887887} - m_ControllerOverlayImage: {fileID: 1917492824301861101} - m_PrimaryButtonImage: {fileID: 8882831833105517729} - m_PrimaryButtonText: {fileID: 632910349765199629} - m_PrimaryButtonIcon: {fileID: 6380410165078616517} - m_SecondaryButtonImage: {fileID: 2886981596322034576} - m_SecondaryButtonText: {fileID: 6738185887094908372} - m_SecondaryButtonIcon: {fileID: 7359137029063965929} - m_TriggerButtonImage: {fileID: 7505294238925710306} - m_TriggerButtonText: {fileID: 4897019901353677162} - m_TriggerButtonIcon: {fileID: 2259021782619594240} - m_GripButtonImage: {fileID: 3768984851911990246} - m_GripButtonText: {fileID: 7067184257790347290} - m_GripButtonIcon: {fileID: 3702832121472537402} - m_ThumbstickButtonImage: {fileID: 1991930889870372846} - m_ThumbstickButtonText: {fileID: 2143043854366787450} - m_ThumbstickButtonIcon: {fileID: 5405710756525641134} - m_MenuButtonImage: {fileID: 8909736703795628118} - m_MenuButtonText: {fileID: 7542507035909431882} - m_MenuButtonIcon: {fileID: 4478232661827727146} ---- !u!114 &6188265173982644058 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7662076761675301960} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: a907ece591e731e49b5d7be45f089972, type: 3} - m_Name: - m_EditorClassIdentifier: - m_ControllerImage: {fileID: 1304613695517469534} - m_ControllerOverlayImage: {fileID: 1701825277887249889} - m_PrimaryButtonImage: {fileID: 4707216344160266519} - m_PrimaryButtonText: {fileID: 7353517302304817799} - m_PrimaryButtonIcon: {fileID: 8175907446859678347} - m_SecondaryButtonImage: {fileID: 1362998691021116941} - m_SecondaryButtonText: {fileID: 483164645938698941} - m_SecondaryButtonIcon: {fileID: 2880029118767939635} - m_TriggerButtonImage: {fileID: 4658433279421441520} - m_TriggerButtonText: {fileID: 3921153324794153759} - m_TriggerButtonIcon: {fileID: 1263497930375873354} - m_GripButtonImage: {fileID: 1179552689117581641} - m_GripButtonText: {fileID: 2067075132594572646} - m_GripButtonIcon: {fileID: 8839167712524059776} - m_ThumbstickButtonImage: {fileID: 4168473694154048854} - m_ThumbstickButtonText: {fileID: 8997356216852640550} - m_ThumbstickButtonIcon: {fileID: 6050477616616213851} - m_MenuButtonImage: {fileID: 4193425104184663439} - m_MenuButtonText: {fileID: 2009267550500725104} - m_MenuButtonIcon: {fileID: 4724637474301667115} ---- !u!114 &2729451482439296740 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7662076761675301960} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f35ac646ecbef4ece8c3eac9e74e1828, type: 3} - m_Name: - m_EditorClassIdentifier: - m_HandImage: {fileID: 4302573497791843332} - m_HandDefaultSprite: {fileID: 21300000, guid: 7d3dbc333af046c4193982e1166659dd, type: 3} - m_Expressions: - - m_Sprite: {fileID: 21300000, guid: a2586e6b399337f409118c79273dc29d, type: 3} - m_ButtonImage: {fileID: 6388914560039728744} - m_Icon: {fileID: 8744337181181706107} - m_BindText: {fileID: 5281075120118962380} - m_TitleText: {fileID: 4915680145212764521} - - m_Sprite: {fileID: 21300000, guid: a6721511441c05a43964dac58584c890, type: 3} - m_ButtonImage: {fileID: 3637028803279225342} - m_Icon: {fileID: 8600818664181625786} - m_BindText: {fileID: 4849158320829012260} - m_TitleText: {fileID: 896150445585326192} - - m_Sprite: {fileID: 21300000, guid: bd6b9153aa3b96f49b238bbf6ae68b80, type: 3} - m_ButtonImage: {fileID: 3571123923799289125} - m_Icon: {fileID: 3527199368015468659} - m_BindText: {fileID: 3347247525062691385} - m_TitleText: {fileID: 2489405138923825782} - - m_Sprite: {fileID: 21300000, guid: 3b2e62babc5249f42921c2cd027852cd, type: 3} - m_ButtonImage: {fileID: 7589818591704186427} - m_Icon: {fileID: 8327766308005330169} - m_BindText: {fileID: 78520623898054945} - m_TitleText: {fileID: 7364929132661629932} - - m_Sprite: {fileID: 21300000, guid: a6e9e9736379c164e81fdfd2c806a91c, type: 3} - m_ButtonImage: {fileID: 7349879440043119360} - m_Icon: {fileID: 823229387731191209} - m_BindText: {fileID: 8940433140144978684} - m_TitleText: {fileID: 1518431423543185343} - - m_Sprite: {fileID: 21300000, guid: ceccab26080354140af21950c6d338d5, type: 3} - m_ButtonImage: {fileID: 1052507032598933221} - m_Icon: {fileID: 7004533194028666124} - m_BindText: {fileID: 4657459692363283452} - m_TitleText: {fileID: 6988461728819528333} ---- !u!114 &3686829068081992021 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7662076761675301960} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f35ac646ecbef4ece8c3eac9e74e1828, type: 3} - m_Name: - m_EditorClassIdentifier: - m_HandImage: {fileID: 7011038037310918980} - m_HandDefaultSprite: {fileID: 21300000, guid: 7d3dbc333af046c4193982e1166659dd, type: 3} - m_Expressions: - - m_Sprite: {fileID: 21300000, guid: a2586e6b399337f409118c79273dc29d, type: 3} - m_ButtonImage: {fileID: 8408635471804533457} - m_Icon: {fileID: 3219178859721645255} - m_BindText: {fileID: 3756260170801479298} - m_TitleText: {fileID: 4372048392552825536} - - m_Sprite: {fileID: 21300000, guid: a6721511441c05a43964dac58584c890, type: 3} - m_ButtonImage: {fileID: 4707963144005244523} - m_Icon: {fileID: 1100953672981393537} - m_BindText: {fileID: 7660593326172566200} - m_TitleText: {fileID: 4713727963536895302} - - m_Sprite: {fileID: 21300000, guid: bd6b9153aa3b96f49b238bbf6ae68b80, type: 3} - m_ButtonImage: {fileID: 1602736334885445488} - m_Icon: {fileID: 3991019180862111495} - m_BindText: {fileID: 4202919156071094973} - m_TitleText: {fileID: 1574890059153190941} - - m_Sprite: {fileID: 21300000, guid: 3b2e62babc5249f42921c2cd027852cd, type: 3} - m_ButtonImage: {fileID: 8967920162631432870} - m_Icon: {fileID: 7097752115947953456} - m_BindText: {fileID: 3807629265801284464} - m_TitleText: {fileID: 6568751946127306849} - - m_Sprite: {fileID: 21300000, guid: a6e9e9736379c164e81fdfd2c806a91c, type: 3} - m_ButtonImage: {fileID: 4147372594905128267} - m_Icon: {fileID: 5015137234996038827} - m_BindText: {fileID: 5648968487775849891} - m_TitleText: {fileID: 6809351870642506038} - - m_Sprite: {fileID: 21300000, guid: ceccab26080354140af21950c6d338d5, type: 3} - m_ButtonImage: {fileID: 1181791779424155912} - m_Icon: {fileID: 2771097682585405286} - m_BindText: {fileID: 2539689992278812737} - m_TitleText: {fileID: 6428185077648664342} ---- !u!1 &7767217684205517638 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4367518527615682733} - - component: {fileID: 5338477934106799850} - m_Layer: 0 - m_Name: RController - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &4367518527615682733 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7767217684205517638} - 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: 1435818010387211638} - - {fileID: 6627277116764366358} - m_Father: {fileID: 5498894420459434082} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.25, y: 0.5} - m_AnchorMax: {x: 0.25, y: 0.5} - m_AnchoredPosition: {x: -11.7, y: 10} - m_SizeDelta: {x: 135, y: 225} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &5338477934106799850 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7767217684205517638} - m_CullTransparentMesh: 1 ---- !u!1 &7785804475310567827 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7311062688384262108} - - component: {fileID: 1016616339085018005} - - component: {fileID: 4702010859104546173} - m_Layer: 5 - m_Name: Expression2ber - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &7311062688384262108 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7785804475310567827} - 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: 1847791695669142127} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 22.4, y: 0} - m_SizeDelta: {x: 30.0572, y: 30.057} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &1016616339085018005 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7785804475310567827} - m_CullTransparentMesh: 0 ---- !u!114 &4702010859104546173 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7785804475310567827} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 0.50980395} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 0 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 17689808316e14280ad508a625c4c88f, type: 3} - m_Type: 0 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &7823912433956647268 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7868162925709135601} - - component: {fileID: 1253619768238913424} - m_Layer: 0 - m_Name: LExpression0Button - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &7868162925709135601 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7823912433956647268} - 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: 8132287113485033861} - - {fileID: 1644568580757268702} - - {fileID: 3386596041128427819} - - {fileID: 6334405593256699930} - m_Father: {fileID: 6462993320847643308} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 40} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &1253619768238913424 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7823912433956647268} - m_CullTransparentMesh: 1 ---- !u!1 &7930493229975391315 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8266049202949608784} - - component: {fileID: 9010618909070482830} - - component: {fileID: 1467215871600972289} - m_Layer: 5 - m_Name: HMDSelectedButton - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &8266049202949608784 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7930493229975391315} - 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: 9006406528424705473} - - {fileID: 5040662063865177185} - m_Father: {fileID: 1399327480036815817} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.39900002, y: 0} - m_AnchorMax: {x: 0.6, y: 1} - m_AnchoredPosition: {x: -170, y: 0} - m_SizeDelta: {x: 140, y: -2} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &9010618909070482830 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7930493229975391315} - m_CullTransparentMesh: 0 ---- !u!114 &1467215871600972289 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7930493229975391315} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.34509805, g: 0.34509805, b: 0.34509805, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &8139072816079030646 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2422384417788841944} - - component: {fileID: 5007860049523255694} - - component: {fileID: 8734094869249158643} - m_Layer: 5 - m_Name: CursorLockValuesIcon - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &2422384417788841944 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8139072816079030646} - 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: 2406183980836748438} - 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: -105, y: 0.1223} - m_SizeDelta: {x: 30.2816, y: 30.281} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &5007860049523255694 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8139072816079030646} - m_CullTransparentMesh: 1 ---- !u!114 &8734094869249158643 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8139072816079030646} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 76dc0abb2ebb44c9a9bd39266f0b3c91, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &8275269619631761578 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2262248402257033999} - - component: {fileID: 6156245621217848377} - - component: {fileID: 5592230383290526872} - m_Layer: 5 - m_Name: TranslateRotateText - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &2262248402257033999 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8275269619631761578} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 641481497500139678} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 19.8, y: 0.12232971} - m_SizeDelta: {x: 153.08, y: 29.552} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &6156245621217848377 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8275269619631761578} - m_CullTransparentMesh: 0 ---- !u!114 &5592230383290526872 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8275269619631761578} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 42 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 0 - m_MaxSize: 115 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: Translate/Rotate ---- !u!1 &8367935067328627427 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4592134785764335929} - - component: {fileID: 1830045690825233993} - - component: {fileID: 8600818664181625786} - m_Layer: 5 - m_Name: LExpression1Icon - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &4592134785764335929 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8367935067328627427} - 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: 1212292503507699025} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 20, y: 0} - m_SizeDelta: {x: 30.2816, y: 30.281} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &1830045690825233993 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8367935067328627427} - m_CullTransparentMesh: 1 ---- !u!114 &8600818664181625786 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8367935067328627427} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 76dc0abb2ebb44c9a9bd39266f0b3c91, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &8400574501283423006 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5264040794177459897} - - component: {fileID: 2598416923957872529} - - component: {fileID: 2886981596322034576} - m_Layer: 0 - m_Name: LSecondaryButton - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &5264040794177459897 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8400574501283423006} - 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: 2803143897982347169} - - {fileID: 4071469278344855793} - m_Father: {fileID: 537185462701595200} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 153, y: 40} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &2598416923957872529 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8400574501283423006} - m_CullTransparentMesh: 1 ---- !u!114 &2886981596322034576 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8400574501283423006} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.34509805, g: 0.34509805, b: 0.34509805, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &8452848709503764917 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6829759728903216125} - - component: {fileID: 3435135273090065397} - - component: {fileID: 3807629265801284464} - m_Layer: 5 - m_Name: RExpression3Bind - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &6829759728903216125 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8452848709503764917} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 7767859450673573951} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 41.895996, y: 0.000030517578} - m_SizeDelta: {x: 221.224, y: 67.552} - m_Pivot: {x: 0, y: 0.5} ---- !u!222 &3435135273090065397 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8452848709503764917} - m_CullTransparentMesh: 0 ---- !u!114 &3807629265801284464 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8452848709503764917} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 45 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 0 - m_MaxSize: 58 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: K ---- !u!1 &8514291712527569200 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5613823859235805758} - - component: {fileID: 3566028923534395623} - - component: {fileID: 78520623898054945} - m_Layer: 5 - m_Name: LExpression3Bind - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &5613823859235805758 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8514291712527569200} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 6580222380407670581} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 97.201996, y: 0} - m_SizeDelta: {x: 221.224, y: 67.552} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &3566028923534395623 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8514291712527569200} - m_CullTransparentMesh: 0 ---- !u!114 &78520623898054945 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8514291712527569200} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 45 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 0 - m_MaxSize: 58 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: K ---- !u!1 &8528840613284061475 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7436509360777108265} - - component: {fileID: 1371541803007781115} - m_Layer: 5 - m_Name: MoveValues - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &7436509360777108265 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8528840613284061475} - 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: 6564093916900289784} - - {fileID: 7097933087774045473} - m_Father: {fileID: 5067531158375095824} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.39900002, y: 0} - m_AnchorMax: {x: 0.6, y: 1} - m_AnchoredPosition: {x: 170.04999, y: 0.000049591064} - m_SizeDelta: {x: 140.09998, y: -7.9637} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &1371541803007781115 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8528840613284061475} - m_CullTransparentMesh: 0 ---- !u!1 &8572838788510228545 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8920373798682849898} - - component: {fileID: 2216417143807485335} - - component: {fileID: 1518431423543185343} - m_Layer: 5 - m_Name: LExpression4Name - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &8920373798682849898 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8572838788510228545} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 5040200856308678447} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 65, y: -0.000030517578} - m_SizeDelta: {x: 187, y: 67.552} - m_Pivot: {x: 0, y: 0.5} ---- !u!222 &2216417143807485335 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8572838788510228545} - m_CullTransparentMesh: 0 ---- !u!114 &1518431423543185343 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8572838788510228545} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 42 - m_FontStyle: 0 - m_BestFit: 1 - m_MinSize: 0 - m_MaxSize: 45 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: Name ---- !u!1 &8582047947946883663 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6688826027410024821} - m_Layer: 0 - m_Name: LeftHand - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &6688826027410024821 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8582047947946883663} - 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: 6462993320847643308} - - {fileID: 7362995812378593056} - - {fileID: 3755905775850264140} - m_Father: {fileID: 2813366516863096307} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0.5, y: 1} - m_AnchoredPosition: {x: 1, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!1 &8590783831777773392 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4427714418502242799} - - component: {fileID: 5403164138019395872} - - component: {fileID: 3111093833865433912} - m_Layer: 5 - m_Name: Bg - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &4427714418502242799 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8590783831777773392} - 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: 8751572082322455077} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &5403164138019395872 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8590783831777773392} - m_CullTransparentMesh: 1 ---- !u!114 &3111093833865433912 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8590783831777773392} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.34509805, g: 0.34509805, b: 0.34509805, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 89cb99e3e22696848a1cbce7b320f520, type: 3} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 2.1 ---- !u!1 &8663577039240804130 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7100264250456930914} - - component: {fileID: 3049532958794791134} - - component: {fileID: 632910349765199629} - m_Layer: 5 - m_Name: LPrimaryText - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &7100264250456930914 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8663577039240804130} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 6624498863070468513} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 97.201996, y: 0} - m_SizeDelta: {x: 221.224, y: 67.552} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &3049532958794791134 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8663577039240804130} - m_CullTransparentMesh: 0 ---- !u!114 &632910349765199629 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8663577039240804130} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 45 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 0 - m_MaxSize: 58 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: Primary ---- !u!1 &8663589218743243089 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3662364895757944182} - - component: {fileID: 6564509416621511267} - - component: {fileID: 1602736334885445488} - m_Layer: 0 - m_Name: RExpression2Button - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &3662364895757944182 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8663589218743243089} - 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: 5513303074855352272} - - {fileID: 3369260571146887227} - - {fileID: 6349083132728924276} - m_Father: {fileID: 4545038286919774978} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 40} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &6564509416621511267 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8663589218743243089} - m_CullTransparentMesh: 1 ---- !u!114 &1602736334885445488 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8663589218743243089} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.34509805, g: 0.34509805, b: 0.34509805, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &8719476922031455850 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1212292503507699025} - - component: {fileID: 1473845179151601515} - - component: {fileID: 3637028803279225342} - m_Layer: 0 - m_Name: LExpression1Button - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1212292503507699025 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8719476922031455850} - 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: 4592134785764335929} - - {fileID: 5509658837851308562} - - {fileID: 4724759744330099547} - m_Father: {fileID: 6462993320847643308} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 40} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &1473845179151601515 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8719476922031455850} - m_CullTransparentMesh: 1 ---- !u!114 &3637028803279225342 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8719476922031455850} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.34509805, g: 0.34509805, b: 0.34509805, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &8742697322414871957 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7362995812378593056} - - component: {fileID: 7812512080827965181} - m_Layer: 0 - m_Name: LHand - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &7362995812378593056 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8742697322414871957} - 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: 6834570650340802011} - m_Father: {fileID: 6688826027410024821} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.75, y: 0.5} - m_AnchorMax: {x: 0.75, y: 0.5} - m_AnchoredPosition: {x: 10, y: 10} - m_SizeDelta: {x: 135, y: 225} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &7812512080827965181 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8742697322414871957} - m_CullTransparentMesh: 1 ---- !u!1 &8829560717555869435 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1525949943038772175} - m_Layer: 0 - m_Name: CursorLockRow - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1525949943038772175 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8829560717555869435} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 7838612929920592448} - - {fileID: 2406183980836748438} - m_Father: {fileID: 4406604062793069055} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 604, y: 40} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!1 &8888177193266023945 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 628890490560670852} - - component: {fileID: 479270234177559206} - - component: {fileID: 4707963144005244523} - m_Layer: 0 - m_Name: RExpression1Button - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &628890490560670852 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8888177193266023945} - 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: 6133188520101204400} - - {fileID: 2654451137050611357} - - {fileID: 305517817363592027} - m_Father: {fileID: 4545038286919774978} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 40} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &479270234177559206 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8888177193266023945} - m_CullTransparentMesh: 1 ---- !u!114 &4707963144005244523 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8888177193266023945} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.34509805, g: 0.34509805, b: 0.34509805, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &8931366782254180343 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6462993320847643308} - - component: {fileID: 4464046371539187347} - m_Layer: 0 - m_Name: ButtonsList - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &6462993320847643308 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8931366782254180343} - 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: 7868162925709135601} - - {fileID: 1212292503507699025} - - {fileID: 7210374592701731116} - - {fileID: 6580222380407670581} - - {fileID: 5040200856308678447} - - {fileID: 6234028023674512109} - m_Father: {fileID: 6688826027410024821} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: -66.5, y: 22.5} - m_SizeDelta: {x: -135, y: -45} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &4464046371539187347 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8931366782254180343} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Padding: - m_Left: 0 - m_Right: 4 - m_Top: 1 - m_Bottom: 1 - m_ChildAlignment: 3 - m_Spacing: 4 - m_ChildForceExpandWidth: 1 - m_ChildForceExpandHeight: 0 - m_ChildControlWidth: 1 - m_ChildControlHeight: 0 - m_ChildScaleWidth: 0 - m_ChildScaleHeight: 0 - m_ReverseArrangement: 0 ---- !u!1 &9084230541643546179 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5666643825144031299} - - component: {fileID: 6476294253658181334} - - component: {fileID: 4897019901353677162} - m_Layer: 5 - m_Name: LTriggerText - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &5666643825144031299 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 9084230541643546179} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 6390267479988922023} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 97.201996, y: 0} - m_SizeDelta: {x: 221.224, y: 67.552} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &6476294253658181334 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 9084230541643546179} - m_CullTransparentMesh: 0 ---- !u!114 &4897019901353677162 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 9084230541643546179} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 45 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 0 - m_MaxSize: 58 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: L Mouse ---- !u!1 &9218018789328391832 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5152145393546829585} - - component: {fileID: 3831204960950209518} - - component: {fileID: 4658433279421441520} - m_Layer: 5 - m_Name: Bg - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &5152145393546829585 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 9218018789328391832} - 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: 8962740172795211005} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &3831204960950209518 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 9218018789328391832} - m_CullTransparentMesh: 1 ---- !u!114 &4658433279421441520 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 9218018789328391832} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.34509805, g: 0.34509805, b: 0.34509805, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 89cb99e3e22696848a1cbce7b320f520, type: 3} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 2.1 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Unity.XR.Interaction.Toolkit.Samples.DeviceSimulator.asmdef b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Unity.XR.Interaction.Toolkit.Samples.DeviceSimulator.asmdef deleted file mode 100644 index ba301bf6..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Unity.XR.Interaction.Toolkit.Samples.DeviceSimulator.asmdef +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "Unity.XR.Interaction.Toolkit.Samples.DeviceSimulator", - "rootNamespace": "", - "references": [ - "GUID:75469ad4d38634e559750d17036d5f7c", - "GUID:dc960734dc080426fa6612f1c5fe95f3", - "GUID:fe685ec1767f73d42b749ea8045bfe43", - "GUID:ce522b6ed64c8be4c989a1d26d0e3275" - ], - "includePlatforms": [], - "excludePlatforms": [], - "allowUnsafeCode": false, - "overrideReferences": false, - "precompiledReferences": [], - "autoReferenced": true, - "defineConstraints": [], - "versionDefines": [ - { - "name": "com.unity.xr.hands", - "expression": "1.1.0", - "define": "XR_HANDS_1_1_OR_NEWER" - } - ], - "noEngineReferences": false -} \ No newline at end of file diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/XR Device Controller Controls.inputactions b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/XR Device Controller Controls.inputactions deleted file mode 100644 index 0c093dec..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/XR Device Controller Controls.inputactions +++ /dev/null @@ -1,417 +0,0 @@ -{ - "name": "XR Device Controller Controls", - "maps": [ - { - "name": "Controller", - "id": "11c7c072-283e-4c4f-969d-bea4cb0809cf", - "actions": [ - { - "name": "Axis 2D", - "type": "Value", - "id": "76f4cfaf-5aeb-4f66-87d2-a63aa567764a", - "expectedControlType": "Vector2", - "processors": "", - "interactions": "", - "initialStateCheck": true - }, - { - "name": "Resting Hand Axis 2D", - "type": "Value", - "id": "42778bc8-d1b8-438d-9618-e41a28b3dc56", - "expectedControlType": "Vector2", - "processors": "", - "interactions": "", - "initialStateCheck": true - }, - { - "name": "Grip", - "type": "Button", - "id": "c7937c78-cea4-4888-8feb-8d9da13005f2", - "expectedControlType": "Button", - "processors": "", - "interactions": "", - "initialStateCheck": false - }, - { - "name": "Trigger", - "type": "Button", - "id": "3808b2c1-2f77-4a89-bc2a-34c0e0ef0ad3", - "expectedControlType": "Button", - "processors": "", - "interactions": "", - "initialStateCheck": false - }, - { - "name": "Primary Button", - "type": "Button", - "id": "54068f2e-4569-46ab-9864-63b23fb9c26a", - "expectedControlType": "Button", - "processors": "", - "interactions": "", - "initialStateCheck": false - }, - { - "name": "Secondary Button", - "type": "Button", - "id": "970b4191-957d-4a7f-ba64-e0e701950d99", - "expectedControlType": "Button", - "processors": "", - "interactions": "", - "initialStateCheck": false - }, - { - "name": "Menu", - "type": "Button", - "id": "ccb35b49-777b-460f-bca8-3168c41cc779", - "expectedControlType": "Button", - "processors": "", - "interactions": "", - "initialStateCheck": false - }, - { - "name": "Primary 2D Axis Click", - "type": "Button", - "id": "22416e35-4897-43a8-b712-74381678af80", - "expectedControlType": "Button", - "processors": "", - "interactions": "", - "initialStateCheck": false - }, - { - "name": "Secondary 2D Axis Click", - "type": "Button", - "id": "b3a541b3-564a-4213-8a9a-a4417b3de5cf", - "expectedControlType": "Button", - "processors": "", - "interactions": "", - "initialStateCheck": false - }, - { - "name": "Primary 2D Axis Touch", - "type": "Button", - "id": "9b069098-df41-435e-9a59-ce43682df020", - "expectedControlType": "Button", - "processors": "", - "interactions": "", - "initialStateCheck": false - }, - { - "name": "Secondary 2D Axis Touch", - "type": "Button", - "id": "cf4b67af-47c4-43d7-b748-b69c7709d64b", - "expectedControlType": "Button", - "processors": "", - "interactions": "", - "initialStateCheck": false - }, - { - "name": "Primary Touch", - "type": "Button", - "id": "04a0ca31-1719-49b1-9e4c-bc95a9905486", - "expectedControlType": "Button", - "processors": "", - "interactions": "", - "initialStateCheck": false - }, - { - "name": "Secondary Touch", - "type": "Button", - "id": "613de0bf-5bc1-4b53-a4b8-0ae20fb87272", - "expectedControlType": "Button", - "processors": "", - "interactions": "", - "initialStateCheck": false - } - ], - "bindings": [ - { - "name": "2D Vector", - "id": "094bdcd9-42d3-4b66-8bf7-69d931e4af25", - "path": "2DVector", - "interactions": "", - "processors": "", - "groups": "", - "action": "Axis 2D", - "isComposite": true, - "isPartOfComposite": false - }, - { - "name": "up", - "id": "1b2e98a9-b6d7-45bf-b4cc-d679acb0502a", - "path": "/w", - "interactions": "", - "processors": "", - "groups": "", - "action": "Axis 2D", - "isComposite": false, - "isPartOfComposite": true - }, - { - "name": "down", - "id": "597b5587-05e8-4ffc-a928-539ab9f8d947", - "path": "/s", - "interactions": "", - "processors": "", - "groups": "", - "action": "Axis 2D", - "isComposite": false, - "isPartOfComposite": true - }, - { - "name": "left", - "id": "87590669-a188-4b8b-ba41-f5f8a58cede9", - "path": "/a", - "interactions": "", - "processors": "", - "groups": "", - "action": "Axis 2D", - "isComposite": false, - "isPartOfComposite": true - }, - { - "name": "right", - "id": "6e1f0a95-84c0-4e06-98b8-18728329aa43", - "path": "/d", - "interactions": "", - "processors": "", - "groups": "", - "action": "Axis 2D", - "isComposite": false, - "isPartOfComposite": true - }, - { - "name": "2D Vector", - "id": "df76e063-0f58-453c-9bdb-a000e261868d", - "path": "2DVector", - "interactions": "", - "processors": "", - "groups": "", - "action": "Resting Hand Axis 2D", - "isComposite": true, - "isPartOfComposite": false - }, - { - "name": "up", - "id": "6be1edad-fb89-4f8b-8041-8a539b9aa22e", - "path": "/i", - "interactions": "", - "processors": "", - "groups": "", - "action": "Resting Hand Axis 2D", - "isComposite": false, - "isPartOfComposite": true - }, - { - "name": "down", - "id": "387c7efc-30f2-423a-a537-9a8b6e7d7860", - "path": "/k", - "interactions": "", - "processors": "", - "groups": "", - "action": "Resting Hand Axis 2D", - "isComposite": false, - "isPartOfComposite": true - }, - { - "name": "left", - "id": "e1b7cebf-9197-42dd-91a0-6ec9bfa15f9f", - "path": "/j", - "interactions": "", - "processors": "", - "groups": "", - "action": "Resting Hand Axis 2D", - "isComposite": false, - "isPartOfComposite": true - }, - { - "name": "right", - "id": "3c625ee8-b7f9-4125-917a-f05eab326a3e", - "path": "/l", - "interactions": "", - "processors": "", - "groups": "", - "action": "Resting Hand Axis 2D", - "isComposite": false, - "isPartOfComposite": true - }, - { - "name": "2D Vector", - "id": "4f579817-5f31-4ac7-899b-04fec58abb48", - "path": "2DVector", - "interactions": "", - "processors": "", - "groups": "", - "action": "Resting Hand Axis 2D", - "isComposite": true, - "isPartOfComposite": false - }, - { - "name": "up", - "id": "20ac1683-e9a0-4cea-ac68-6689033459df", - "path": "/forwardButton", - "interactions": "", - "processors": "", - "groups": "", - "action": "Resting Hand Axis 2D", - "isComposite": false, - "isPartOfComposite": true - }, - { - "name": "down", - "id": "60663e10-c213-4c1a-9177-68680f497799", - "path": "/backButton", - "interactions": "", - "processors": "", - "groups": "", - "action": "Resting Hand Axis 2D", - "isComposite": false, - "isPartOfComposite": true - }, - { - "name": "left", - "id": "cca7347a-79f9-4a90-9912-627c7aeb7509", - "path": "/q", - "interactions": "", - "processors": "", - "groups": "", - "action": "Resting Hand Axis 2D", - "isComposite": false, - "isPartOfComposite": true - }, - { - "name": "right", - "id": "7a178081-4cf4-4dc4-ae08-3448a76351e6", - "path": "/e", - "interactions": "", - "processors": "", - "groups": "", - "action": "Resting Hand Axis 2D", - "isComposite": false, - "isPartOfComposite": true - }, - { - "name": "", - "id": "32072c42-6a30-4383-8362-d65ff475c920", - "path": "/g", - "interactions": "", - "processors": "", - "groups": "", - "action": "Grip", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "4f6dfc4a-38d9-455d-9364-3a188b0e9326", - "path": "/leftButton", - "interactions": "", - "processors": "", - "groups": "", - "action": "Trigger", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "c17eb846-7a66-4006-9d57-6b91831868d0", - "path": "/b", - "interactions": "", - "processors": "", - "groups": "", - "action": "Primary Button", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "69ce3e33-7d81-423f-b162-7232a5791c2f", - "path": "/n", - "interactions": "", - "processors": "", - "groups": "", - "action": "Secondary Button", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "45511393-aa9b-4031-8e31-4eec53ab2d3f", - "path": "/m", - "interactions": "", - "processors": "", - "groups": "", - "action": "Menu", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "8e2bc8db-cb64-45ae-967f-55e716a538ba", - "path": "/4", - "interactions": "", - "processors": "", - "groups": "", - "action": "Primary 2D Axis Click", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "37235877-ac7c-41c4-bc1b-b03be3563189", - "path": "/5", - "interactions": "", - "processors": "", - "groups": "", - "action": "Secondary 2D Axis Click", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "ff1581e6-f183-439b-8980-ad03b5a01e60", - "path": "/6", - "interactions": "", - "processors": "", - "groups": "", - "action": "Primary 2D Axis Touch", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "325ec093-e834-4551-9b8f-4a3311ed737e", - "path": "/7", - "interactions": "", - "processors": "", - "groups": "", - "action": "Secondary 2D Axis Touch", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "d5f47d18-df5a-4dcd-a20a-c1130b0d4541", - "path": "/8", - "interactions": "", - "processors": "", - "groups": "", - "action": "Primary Touch", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "ab5101fb-5323-4b55-9fe7-e6c377cf7d82", - "path": "/9", - "interactions": "", - "processors": "", - "groups": "", - "action": "Secondary Touch", - "isComposite": false, - "isPartOfComposite": false - } - ] - } - ], - "controlSchemes": [] -} \ No newline at end of file diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/XR Device Controller Controls.inputactions.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/XR Device Controller Controls.inputactions.meta deleted file mode 100644 index 6c2eac71..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/XR Device Controller Controls.inputactions.meta +++ /dev/null @@ -1,14 +0,0 @@ -fileFormatVersion: 2 -guid: 0be0028c24f2a4c14a96b6aa39055933 -ScriptedImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 2 - userData: - assetBundleName: - assetBundleVariant: - script: {fileID: 11500000, guid: 8404be70184654265930450def6a9037, type: 3} - generateWrapperCode: 0 - wrapperCodePath: - wrapperClassName: - wrapperCodeNamespace: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/XR Device Hand Controls.inputactions b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/XR Device Hand Controls.inputactions deleted file mode 100644 index f27a76cb..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/XR Device Hand Controls.inputactions +++ /dev/null @@ -1,134 +0,0 @@ -{ - "name": "XR Device Hand Controls", - "maps": [ - { - "name": "Hands", - "id": "820deea6-fad9-4f2d-9e5e-e403c9ab0ddc", - "actions": [ - { - "name": "Poke", - "type": "Button", - "id": "40eda730-1343-4304-a541-d7c035370ce5", - "expectedControlType": "Button", - "processors": "", - "interactions": "", - "initialStateCheck": false - }, - { - "name": "Pinch", - "type": "Button", - "id": "34056e04-d03d-4802-982b-a9972fd692ff", - "expectedControlType": "Button", - "processors": "", - "interactions": "", - "initialStateCheck": false - }, - { - "name": "Grab", - "type": "Button", - "id": "07d064b1-f208-4c9f-bd5a-2620a10e7bab", - "expectedControlType": "Button", - "processors": "", - "interactions": "", - "initialStateCheck": false - }, - { - "name": "Thumb", - "type": "Button", - "id": "cc02894b-62a0-483f-8d1b-87b399099928", - "expectedControlType": "Button", - "processors": "", - "interactions": "", - "initialStateCheck": false - }, - { - "name": "Open", - "type": "Button", - "id": "0221ceea-2049-4516-a5e4-23aab7d2185e", - "expectedControlType": "Button", - "processors": "", - "interactions": "", - "initialStateCheck": false - }, - { - "name": "Fist", - "type": "Button", - "id": "5f81ec5a-1bc2-4ce7-852c-d84a8000be9b", - "expectedControlType": "Button", - "processors": "", - "interactions": "", - "initialStateCheck": false - } - ], - "bindings": [ - { - "name": "", - "id": "7c5ef312-b032-4eaa-9355-b7007e83617c", - "path": "/k", - "interactions": "", - "processors": "", - "groups": "", - "action": "Grab", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "f78285cd-b2ef-40bf-9d24-127a0109f36d", - "path": "/n", - "interactions": "", - "processors": "", - "groups": "", - "action": "Poke", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "3f69143f-8648-4219-94f6-4e9827ad00de", - "path": "/m", - "interactions": "", - "processors": "", - "groups": "", - "action": "Pinch", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "b132c4e0-c5db-4c99-ab71-5939b616cf07", - "path": "/l", - "interactions": "", - "processors": "", - "groups": "", - "action": "Thumb", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "aaffc690-326b-4676-96df-8e41b88bb7e8", - "path": "/p", - "interactions": "", - "processors": "", - "groups": "", - "action": "Fist", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "ebffb4d0-8629-4206-9457-5cccde9d7c65", - "path": "/o", - "interactions": "", - "processors": "", - "groups": "", - "action": "Open", - "isComposite": false, - "isPartOfComposite": false - } - ] - } - ], - "controlSchemes": [] -} \ No newline at end of file diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/XR Device Hand Controls.inputactions.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/XR Device Hand Controls.inputactions.meta deleted file mode 100644 index dd698dca..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/XR Device Hand Controls.inputactions.meta +++ /dev/null @@ -1,14 +0,0 @@ -fileFormatVersion: 2 -guid: b72ab2a46d9094be38774d023beb4d34 -ScriptedImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 2 - userData: - assetBundleName: - assetBundleVariant: - script: {fileID: 11500000, guid: 8404be70184654265930450def6a9037, type: 3} - generateWrapperCode: 0 - wrapperCodePath: - wrapperClassName: - wrapperCodeNamespace: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/XR Device Simulator Controls.inputactions b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/XR Device Simulator Controls.inputactions deleted file mode 100644 index ed5752b1..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/XR Device Simulator Controls.inputactions +++ /dev/null @@ -1,580 +0,0 @@ -{ - "name": "XR Device Simulator Controls", - "maps": [ - { - "name": "Main", - "id": "c96c4ddb-3eb8-4074-bbd9-a8ae6f1f6475", - "actions": [ - { - "name": "Keyboard X Translate", - "type": "Value", - "id": "d4eb7006-5077-4816-9d5c-f570b6d586f3", - "expectedControlType": "Axis", - "processors": "", - "interactions": "", - "initialStateCheck": true - }, - { - "name": "Keyboard Z Translate", - "type": "Value", - "id": "3ea275ac-e111-4610-891f-105676c72cd5", - "expectedControlType": "Axis", - "processors": "", - "interactions": "", - "initialStateCheck": true - }, - { - "name": "Keyboard Y Translate", - "type": "Value", - "id": "5cc58f95-e9dc-4675-a42e-dd66874c3ba3", - "expectedControlType": "Axis", - "processors": "", - "interactions": "", - "initialStateCheck": true - }, - { - "name": "Toggle Manipulate Left", - "type": "Button", - "id": "847b79d9-a69b-4484-8688-a4bf40e58163", - "expectedControlType": "Button", - "processors": "", - "interactions": "", - "initialStateCheck": false - }, - { - "name": "Toggle Manipulate Right", - "type": "Button", - "id": "241f6068-ebc8-4c6d-b747-8bc2c1f74f87", - "expectedControlType": "Button", - "processors": "", - "interactions": "", - "initialStateCheck": false - }, - { - "name": "Toggle Manipulate Body", - "type": "Button", - "id": "c81093ea-c17e-4430-a3df-bccabef74af4", - "expectedControlType": "Button", - "processors": "", - "interactions": "", - "initialStateCheck": false - }, - { - "name": "Manipulate Left", - "type": "Button", - "id": "07c46cc4-c35d-4364-a878-68fad8ab8c64", - "expectedControlType": "Button", - "processors": "", - "interactions": "", - "initialStateCheck": false - }, - { - "name": "Manipulate Right", - "type": "Button", - "id": "307cb608-f32e-48a3-8ce6-d1cd83a5fb90", - "expectedControlType": "Button", - "processors": "", - "interactions": "", - "initialStateCheck": false - }, - { - "name": "Manipulate Head", - "type": "Button", - "id": "f5febf74-651b-4f73-8d0a-08b0acdabc4d", - "expectedControlType": "Button", - "processors": "", - "interactions": "", - "initialStateCheck": false - }, - { - "name": "Hand-Controller Mode", - "type": "Button", - "id": "31a82fde-55bc-4b18-b15a-8adc7e75658e", - "expectedControlType": "Button", - "processors": "", - "interactions": "", - "initialStateCheck": false - }, - { - "name": "Cycle Devices", - "type": "Button", - "id": "d728c6fb-4deb-4268-9110-d64c7861cd17", - "expectedControlType": "Button", - "processors": "", - "interactions": "", - "initialStateCheck": false - }, - { - "name": "Stop Manipulation", - "type": "Button", - "id": "974ae49e-da4e-4dc8-a6be-cb63986d8f8e", - "expectedControlType": "Button", - "processors": "", - "interactions": "", - "initialStateCheck": false - }, - { - "name": "Mouse Delta", - "type": "Value", - "id": "0b945dbf-d750-40cb-97c6-593686fcf012", - "expectedControlType": "Vector2", - "processors": "", - "interactions": "", - "initialStateCheck": true - }, - { - "name": "Mouse Scroll", - "type": "Value", - "id": "b2a408da-a9fd-4638-9af3-17fb9bc2811d", - "expectedControlType": "Vector2", - "processors": "", - "interactions": "", - "initialStateCheck": true - }, - { - "name": "Rotate Mode Override", - "type": "Button", - "id": "2e390909-c0f6-4ca5-b8bc-4c54090f96d9", - "expectedControlType": "Button", - "processors": "", - "interactions": "", - "initialStateCheck": false - }, - { - "name": "Toggle Mouse Transformation Mode", - "type": "Button", - "id": "ae2b5c7f-b5e0-4b93-b674-172de9f68380", - "expectedControlType": "Button", - "processors": "", - "interactions": "", - "initialStateCheck": false - }, - { - "name": "Negate Mode", - "type": "Button", - "id": "8c837143-e018-41f0-9e0e-907acb9d7360", - "expectedControlType": "Button", - "processors": "", - "interactions": "", - "initialStateCheck": false - }, - { - "name": "Z Constraint", - "type": "Button", - "id": "d3e9308c-6f8c-46f7-bb6f-14422c345983", - "expectedControlType": "Button", - "processors": "", - "interactions": "", - "initialStateCheck": false - }, - { - "name": "X Constraint", - "type": "Button", - "id": "11dc7a94-7230-49ff-b56d-06e6473e9951", - "expectedControlType": "Button", - "processors": "", - "interactions": "", - "initialStateCheck": false - }, - { - "name": "Y Constraint", - "type": "Button", - "id": "11ab79c6-b9c6-4301-8086-3e9c6904ef14", - "expectedControlType": "Button", - "processors": "", - "interactions": "", - "initialStateCheck": false - }, - { - "name": "Reset", - "type": "Button", - "id": "339ccb79-aee9-4ba4-8864-3b6c81c199db", - "expectedControlType": "Button", - "processors": "", - "interactions": "", - "initialStateCheck": false - }, - { - "name": "Toggle Cursor Lock", - "type": "Button", - "id": "9bd36ab1-f676-4ff4-8a4d-ba0c6fb36268", - "expectedControlType": "Button", - "processors": "", - "interactions": "", - "initialStateCheck": false - }, - { - "name": "Toggle Primary 2D Axis Target", - "type": "Button", - "id": "e0fdec2d-309b-4313-aad7-9dcc71f1394d", - "expectedControlType": "Button", - "processors": "", - "interactions": "", - "initialStateCheck": false - }, - { - "name": "Toggle Secondary 2D Axis Target", - "type": "Button", - "id": "b3b49ea5-f80f-4d24-a782-d61a13a004b3", - "expectedControlType": "Button", - "processors": "", - "interactions": "", - "initialStateCheck": false - }, - { - "name": "Toggle Device Position Target", - "type": "Button", - "id": "15cd3c4a-56b1-4a43-a924-a2118e2adaf4", - "expectedControlType": "Button", - "processors": "", - "interactions": "", - "initialStateCheck": false - } - ], - "bindings": [ - { - "name": "1D Axis", - "id": "db741065-2a46-439d-9e13-11960dc3355a", - "path": "1DAxis", - "interactions": "", - "processors": "", - "groups": "", - "action": "Keyboard X Translate", - "isComposite": true, - "isPartOfComposite": false - }, - { - "name": "negative", - "id": "3d2e07de-025e-4c2e-98df-250511a8ff6d", - "path": "/a", - "interactions": "", - "processors": "", - "groups": "", - "action": "Keyboard X Translate", - "isComposite": false, - "isPartOfComposite": true - }, - { - "name": "positive", - "id": "04e1437d-c862-4a04-8f8e-40e9f52c4f5e", - "path": "/d", - "interactions": "", - "processors": "", - "groups": "", - "action": "Keyboard X Translate", - "isComposite": false, - "isPartOfComposite": true - }, - { - "name": "1D Axis", - "id": "cb7c4679-31f4-4170-885a-e7d78c049443", - "path": "1DAxis", - "interactions": "", - "processors": "", - "groups": "", - "action": "Keyboard Z Translate", - "isComposite": true, - "isPartOfComposite": false - }, - { - "name": "negative", - "id": "732e790c-f2a2-4f90-b525-53139a358de7", - "path": "/s", - "interactions": "", - "processors": "", - "groups": "", - "action": "Keyboard Z Translate", - "isComposite": false, - "isPartOfComposite": true - }, - { - "name": "positive", - "id": "d5a98916-ade7-419d-a138-86bcdf05670f", - "path": "/w", - "interactions": "", - "processors": "", - "groups": "", - "action": "Keyboard Z Translate", - "isComposite": false, - "isPartOfComposite": true - }, - { - "name": "1D Axis", - "id": "fca20498-bf6f-4824-ba15-6dc2d191eb2f", - "path": "1DAxis", - "interactions": "", - "processors": "", - "groups": "", - "action": "Keyboard Y Translate", - "isComposite": true, - "isPartOfComposite": false - }, - { - "name": "negative", - "id": "2c01790c-a24a-4266-a2e9-74e2a1ca3fa7", - "path": "/q", - "interactions": "", - "processors": "", - "groups": "", - "action": "Keyboard Y Translate", - "isComposite": false, - "isPartOfComposite": true - }, - { - "name": "positive", - "id": "f5223aed-93c0-4633-8aa3-c393ce890872", - "path": "/e", - "interactions": "", - "processors": "", - "groups": "", - "action": "Keyboard Y Translate", - "isComposite": false, - "isPartOfComposite": true - }, - { - "name": "", - "id": "fcfb16fb-edee-474c-b1f2-f10b2a0a3569", - "path": "/leftShift", - "interactions": "", - "processors": "", - "groups": "", - "action": "Manipulate Left", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "e791caef-78d3-4f68-9104-212f73ac0642", - "path": "/space", - "interactions": "", - "processors": "", - "groups": "", - "action": "Manipulate Right", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "b2c1b1cd-6ea7-45b6-b68f-17b3662b4d3a", - "path": "/delta", - "interactions": "", - "processors": "", - "groups": "", - "action": "Mouse Delta", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "66e536bc-b5b6-4c7b-903a-fbcc05fc854e", - "path": "/scroll", - "interactions": "", - "processors": "", - "groups": "", - "action": "Mouse Scroll", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "2b070a4a-e044-4cbd-a8e2-6b362785bf21", - "path": "/leftCtrl", - "interactions": "", - "processors": "", - "groups": "", - "action": "Rotate Mode Override", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "0fa0d566-1e07-4e17-9b14-3e8fce69ec26", - "path": "/x", - "interactions": "", - "processors": "", - "groups": "", - "action": "X Constraint", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "71c185e1-73fb-4691-b910-70610f397b42", - "path": "/c", - "interactions": "", - "processors": "", - "groups": "", - "action": "Y Constraint", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "09809c10-d09e-4c49-b58f-1995e50cf685", - "path": "/z", - "interactions": "", - "processors": "", - "groups": "", - "action": "Z Constraint", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "7611d6eb-0ff4-431f-998d-6fa429e0e1e1", - "path": "/r", - "interactions": "", - "processors": "", - "groups": "", - "action": "Toggle Mouse Transformation Mode", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "5c889b78-f9fd-4cd7-96dd-5399428f6992", - "path": "/middleButton", - "interactions": "", - "processors": "", - "groups": "", - "action": "Negate Mode", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "85f27bdb-dfe8-48d3-8512-205b3ad6306a", - "path": "/backslash", - "interactions": "", - "processors": "", - "groups": "", - "action": "Toggle Cursor Lock", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "3542472e-e883-407a-b967-5b879b2d7dc4", - "path": "/rightButton", - "interactions": "", - "processors": "", - "groups": "", - "action": "Manipulate Head", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "cd7dcdd6-b569-4c25-87ea-c62a0fb1cf89", - "path": "/v", - "interactions": "", - "processors": "", - "groups": "", - "action": "Reset", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "4bfdd0e6-1936-4f44-8e97-20e16dbc879f", - "path": "/1", - "interactions": "", - "processors": "", - "groups": "", - "action": "Toggle Primary 2D Axis Target", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "81d47d9e-4920-4098-94d8-bac2888d6433", - "path": "/2", - "interactions": "", - "processors": "", - "groups": "", - "action": "Toggle Secondary 2D Axis Target", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "9404bec7-672a-4fb1-adb3-e2dc4e32801b", - "path": "/3", - "interactions": "", - "processors": "", - "groups": "", - "action": "Toggle Device Position Target", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "5dacc4c7-2e70-4500-8c72-99595c72b49e", - "path": "/tab", - "interactions": "", - "processors": "", - "groups": "", - "action": "Cycle Devices", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "84760c74-7de6-46dd-a097-3bc198cf63cd", - "path": "/escape", - "interactions": "", - "processors": "", - "groups": "", - "action": "Stop Manipulation", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "e8a0a3b9-06cf-40a8-86d8-1d8f1d704451", - "path": "/y", - "interactions": "", - "processors": "", - "groups": "", - "action": "Toggle Manipulate Right", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "b62df009-54c9-4b03-9721-07ca66fe1bdf", - "path": "/t", - "interactions": "", - "processors": "", - "groups": "", - "action": "Toggle Manipulate Left", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "51f71c9d-9024-4bdd-8ea6-19b987e261b1", - "path": "/u", - "interactions": "", - "processors": "", - "groups": "", - "action": "Toggle Manipulate Body", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "d7d20173-13ae-4c9f-b6a9-bf8a89517d6a", - "path": "/h", - "interactions": "", - "processors": "", - "groups": "", - "action": "Hand-Controller Mode", - "isComposite": false, - "isPartOfComposite": false - } - ] - } - ], - "controlSchemes": [] -} \ No newline at end of file diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/XR Device Simulator Controls.inputactions.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/XR Device Simulator Controls.inputactions.meta deleted file mode 100644 index 554f44e6..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/XR Device Simulator Controls.inputactions.meta +++ /dev/null @@ -1,14 +0,0 @@ -fileFormatVersion: 2 -guid: da2b439d1a2de5c46a4f428f8cf4fe19 -ScriptedImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 2 - userData: - assetBundleName: - assetBundleVariant: - script: {fileID: 11500000, guid: 8404be70184654265930450def6a9037, type: 3} - generateWrapperCode: 0 - wrapperCodePath: - wrapperClassName: - wrapperCodeNamespace: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/XR Device Simulator.prefab b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/XR Device Simulator.prefab deleted file mode 100644 index cd68795c..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/XR Device Simulator.prefab +++ /dev/null @@ -1,135 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &6598815579406187037 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6598815579406187027} - - component: {fileID: 6598815579406187026} - m_Layer: 0 - m_Name: XR Device Simulator - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &6598815579406187027 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6598815579406187037} - 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!114 &6598815579406187026 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6598815579406187037} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5b34befe5d0cbb642bb5d09104a47160, type: 3} - m_Name: - m_EditorClassIdentifier: - m_DeviceSimulatorActionAsset: {fileID: -944628639613478452, guid: da2b439d1a2de5c46a4f428f8cf4fe19, type: 3} - m_ControllerActionAsset: {fileID: -944628639613478452, guid: 0be0028c24f2a4c14a96b6aa39055933, type: 3} - m_KeyboardXTranslateAction: {fileID: -2435995061748527091, guid: da2b439d1a2de5c46a4f428f8cf4fe19, type: 3} - m_KeyboardYTranslateAction: {fileID: 4091624078112751379, guid: da2b439d1a2de5c46a4f428f8cf4fe19, type: 3} - m_KeyboardZTranslateAction: {fileID: 8957443236229058949, guid: da2b439d1a2de5c46a4f428f8cf4fe19, type: 3} - m_ManipulateLeftAction: {fileID: 3215650258570939094, guid: da2b439d1a2de5c46a4f428f8cf4fe19, type: 3} - m_ManipulateRightAction: {fileID: 138396950478516224, guid: da2b439d1a2de5c46a4f428f8cf4fe19, type: 3} - m_ToggleManipulateLeftAction: {fileID: 2547216639932606815, guid: da2b439d1a2de5c46a4f428f8cf4fe19, type: 3} - m_ToggleManipulateRightAction: {fileID: 743384497930276301, guid: da2b439d1a2de5c46a4f428f8cf4fe19, type: 3} - m_ToggleManipulateBodyAction: {fileID: -658012382136555628, guid: da2b439d1a2de5c46a4f428f8cf4fe19, type: 3} - m_ManipulateHeadAction: {fileID: -3619485213038975404, guid: da2b439d1a2de5c46a4f428f8cf4fe19, type: 3} - m_HandControllerModeAction: {fileID: -6730069882215067947, guid: da2b439d1a2de5c46a4f428f8cf4fe19, type: 3} - m_CycleDevicesAction: {fileID: -7837977739890211585, guid: da2b439d1a2de5c46a4f428f8cf4fe19, type: 3} - m_StopManipulationAction: {fileID: 1698315126802870675, guid: da2b439d1a2de5c46a4f428f8cf4fe19, type: 3} - m_MouseDeltaAction: {fileID: -1273072440521047205, guid: da2b439d1a2de5c46a4f428f8cf4fe19, type: 3} - m_MouseScrollAction: {fileID: 4546399164687744209, guid: da2b439d1a2de5c46a4f428f8cf4fe19, type: 3} - m_RotateModeOverrideAction: {fileID: -8754530952185592012, guid: da2b439d1a2de5c46a4f428f8cf4fe19, type: 3} - m_ToggleMouseTransformationModeAction: {fileID: 3100586429251580691, guid: da2b439d1a2de5c46a4f428f8cf4fe19, type: 3} - m_NegateModeAction: {fileID: 1882878426541990298, guid: da2b439d1a2de5c46a4f428f8cf4fe19, type: 3} - m_XConstraintAction: {fileID: -8086843181801629294, guid: da2b439d1a2de5c46a4f428f8cf4fe19, type: 3} - m_YConstraintAction: {fileID: 5691479700773754790, guid: da2b439d1a2de5c46a4f428f8cf4fe19, type: 3} - m_ZConstraintAction: {fileID: 1644704167276153141, guid: da2b439d1a2de5c46a4f428f8cf4fe19, type: 3} - m_ResetAction: {fileID: -2638007419058092452, guid: da2b439d1a2de5c46a4f428f8cf4fe19, type: 3} - m_ToggleCursorLockAction: {fileID: -2382836779261746822, guid: da2b439d1a2de5c46a4f428f8cf4fe19, type: 3} - m_ToggleDevicePositionTargetAction: {fileID: -6716103979869350223, guid: da2b439d1a2de5c46a4f428f8cf4fe19, type: 3} - m_TogglePrimary2DAxisTargetAction: {fileID: -7682297331024740639, guid: da2b439d1a2de5c46a4f428f8cf4fe19, type: 3} - m_ToggleSecondary2DAxisTargetAction: {fileID: 1155009490345466815, guid: da2b439d1a2de5c46a4f428f8cf4fe19, type: 3} - m_Axis2DAction: {fileID: 8275859971367427353, guid: 0be0028c24f2a4c14a96b6aa39055933, type: 3} - m_RestingHandAxis2DAction: {fileID: 6756245720351945193, guid: 0be0028c24f2a4c14a96b6aa39055933, type: 3} - m_GripAction: {fileID: 5667446173830999989, guid: 0be0028c24f2a4c14a96b6aa39055933, type: 3} - m_TriggerAction: {fileID: -2439264783773714294, guid: 0be0028c24f2a4c14a96b6aa39055933, type: 3} - m_PrimaryButtonAction: {fileID: -3599823989380923159, guid: 0be0028c24f2a4c14a96b6aa39055933, type: 3} - m_SecondaryButtonAction: {fileID: -8069514856583376848, guid: 0be0028c24f2a4c14a96b6aa39055933, type: 3} - m_MenuAction: {fileID: 4116954447336496447, guid: 0be0028c24f2a4c14a96b6aa39055933, type: 3} - m_Primary2DAxisClickAction: {fileID: 637922521265743415, guid: 0be0028c24f2a4c14a96b6aa39055933, type: 3} - m_Secondary2DAxisClickAction: {fileID: -8358032100899166728, guid: 0be0028c24f2a4c14a96b6aa39055933, type: 3} - m_Primary2DAxisTouchAction: {fileID: 2883175194488637904, guid: 0be0028c24f2a4c14a96b6aa39055933, type: 3} - m_Secondary2DAxisTouchAction: {fileID: -851591506940895311, guid: 0be0028c24f2a4c14a96b6aa39055933, type: 3} - m_PrimaryTouchAction: {fileID: -4201894270441249665, guid: 0be0028c24f2a4c14a96b6aa39055933, type: 3} - m_SecondaryTouchAction: {fileID: 5188782311186578770, guid: 0be0028c24f2a4c14a96b6aa39055933, type: 3} - m_HandActionAsset: {fileID: -944628639613478452, guid: b72ab2a46d9094be38774d023beb4d34, type: 3} - m_RestingHandExpressionCapture: {fileID: 11400000, guid: 5be099e6e6012c244bb41881b6c0ea07, type: 2} - m_SimulatedHandExpressions: - - m_Name: Poke - m_ToggleAction: {fileID: -5976510165261225158, guid: b72ab2a46d9094be38774d023beb4d34, type: 3} - m_Capture: {fileID: 11400000, guid: 95c319715e9d2644da8ae09af8ccfee6, type: 2} - - m_Name: Pinch - m_ToggleAction: {fileID: -8306000708137014372, guid: b72ab2a46d9094be38774d023beb4d34, type: 3} - m_Capture: {fileID: 11400000, guid: d6e15a52475c2564ca7d2977fdece24a, type: 2} - - m_Name: Grab - m_ToggleAction: {fileID: -4373459253818063952, guid: b72ab2a46d9094be38774d023beb4d34, type: 3} - m_Capture: {fileID: 11400000, guid: 3861c298d39c60c44b16920421444875, type: 2} - - m_Name: Thumb - m_ToggleAction: {fileID: -741559036651486339, guid: b72ab2a46d9094be38774d023beb4d34, type: 3} - m_Capture: {fileID: 11400000, guid: 9d8c9c84da35a7c4c89efd57343c1df8, type: 2} - - m_Name: Open - m_ToggleAction: {fileID: -9192331390769138535, guid: b72ab2a46d9094be38774d023beb4d34, type: 3} - m_Capture: {fileID: 11400000, guid: 05293ab353dc8a747a36ed129311686d, type: 2} - - m_Name: Fist - m_ToggleAction: {fileID: 6469712917552426222, guid: b72ab2a46d9094be38774d023beb4d34, type: 3} - m_Capture: {fileID: 11400000, guid: 2a7c8ca0feac7cc44a5c225164ef311d, type: 2} - m_CameraTransform: {fileID: 0} - m_KeyboardTranslateSpace: 0 - m_MouseTranslateSpace: 2 - m_KeyboardXTranslateSpeed: 0.2 - m_KeyboardYTranslateSpeed: 0.2 - m_KeyboardZTranslateSpeed: 0.2 - m_KeyboardBodyTranslateMultiplier: 5 - m_MouseXTranslateSensitivity: 0.0004 - m_MouseYTranslateSensitivity: 0.0004 - m_MouseScrollTranslateSensitivity: 0.0002 - m_MouseXRotateSensitivity: 0.2 - m_MouseYRotateSensitivity: 0.2 - m_MouseScrollRotateSensitivity: 0.05 - m_MouseYRotateInvert: 0 - m_DesiredCursorLockMode: 1 - m_RemoveOtherHMDDevices: 1 - m_HandTrackingCapability: 1 - m_DeviceSimulatorUI: {fileID: 7662076761675301960, guid: ead42e0472b7547fbba6c229aeaf37d3, type: 3} - m_GripAmount: 1 - m_TriggerAmount: 1 - m_HMDIsTracked: 1 - m_HMDTrackingState: 3 - m_LeftControllerIsTracked: 1 - m_LeftControllerTrackingState: 3 - m_RightControllerIsTracked: 1 - m_RightControllerTrackingState: 3 - m_LeftHandIsTracked: 1 - m_RightHandIsTracked: 1 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/XR Device Simulator.prefab.meta b/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/XR Device Simulator.prefab.meta deleted file mode 100644 index 547b6db2..00000000 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/XR Device Simulator.prefab.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 18ddb545287c546e19cc77dc9fbb2189 -PrefabImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/AffordanceThemes/PinchPoint.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7.meta similarity index 77% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/AffordanceThemes/PinchPoint.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7.meta index f7e2034d..7948c35b 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/AffordanceThemes/PinchPoint.meta +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 34e352a1666bde6488650a627865ac8b +guid: 933db1c1a66293846853af2f44218b1a folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo.meta similarity index 77% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo.meta index 30a69ce7..74ed3c5a 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo.meta +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: b7dc5072b751bf94e8e5c69ca96c2a87 +guid: be9dabad039de1f40953d60702db1f27 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/AffordanceThemes.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/AffordanceThemes.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/AffordanceThemes.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/AffordanceThemes.meta diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/AffordanceThemes/FingerColor.asset b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/AffordanceThemes/FingerColor.asset new file mode 100644 index 00000000..c4c1d996 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/AffordanceThemes/FingerColor.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9621834aa6e391901d8c0f17bc52ff91245ce35d4b3b3db06334d28f678d588e +size 2607 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/AffordanceThemes/FingerColorAffordanceTheme.asset.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/AffordanceThemes/FingerColor.asset.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/AffordanceThemes/FingerColorAffordanceTheme.asset.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/AffordanceThemes/FingerColor.asset.meta diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/AffordanceThemes/HandEdgeColor.asset b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/AffordanceThemes/HandEdgeColor.asset new file mode 100644 index 00000000..49520cda --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/AffordanceThemes/HandEdgeColor.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc4ac6c0ad1fdc498b43ab27c9d6c840a90b54e37aba52c28a366042228ed398 +size 2494 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/AffordanceThemes/HandEdgeColorAffordanceTheme.asset.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/AffordanceThemes/HandEdgeColor.asset.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/AffordanceThemes/HandEdgeColorAffordanceTheme.asset.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/AffordanceThemes/HandEdgeColor.asset.meta diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/AffordanceThemes/InteractionColor.asset b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/AffordanceThemes/InteractionColor.asset new file mode 100644 index 00000000..1f5eeae1 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/AffordanceThemes/InteractionColor.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e0f142420c2c22bfa05659d7c34be43c9fe38574521890cfb98f3d162220bc8f +size 2617 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/AffordanceThemes/InteractionColorAffordanceTheme.asset.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/AffordanceThemes/InteractionColor.asset.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/AffordanceThemes/InteractionColorAffordanceTheme.asset.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/AffordanceThemes/InteractionColor.asset.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/AffordanceThemes/PinchPoint/PinchPointBlendShape.asset b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/AffordanceThemes/PinchPointBlendShape.asset similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/AffordanceThemes/PinchPoint/PinchPointBlendShape.asset rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/AffordanceThemes/PinchPointBlendShape.asset diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/AffordanceThemes/PinchPoint/PinchPointBlendShape.asset.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/AffordanceThemes/PinchPointBlendShape.asset.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/AffordanceThemes/PinchPoint/PinchPointBlendShape.asset.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/AffordanceThemes/PinchPointBlendShape.asset.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/AffordanceThemes/PinchPoint/PinchPointColor.asset b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/AffordanceThemes/PinchPointColor.asset similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/AffordanceThemes/PinchPoint/PinchPointColor.asset rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/AffordanceThemes/PinchPointColor.asset diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/AffordanceThemes/PinchPoint/PinchPointColor.asset.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/AffordanceThemes/PinchPointColor.asset.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/AffordanceThemes/PinchPoint/PinchPointColor.asset.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/AffordanceThemes/PinchPointColor.asset.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/AffordanceThemes/PinchPoint/PinchPointEdgeStrength.asset b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/AffordanceThemes/PinchPointEdgeStrength.asset similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/AffordanceThemes/PinchPoint/PinchPointEdgeStrength.asset rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/AffordanceThemes/PinchPointEdgeStrength.asset diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/AffordanceThemes/PinchPoint/PinchPointEdgeStrength.asset.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/AffordanceThemes/PinchPointEdgeStrength.asset.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/AffordanceThemes/PinchPoint/PinchPointEdgeStrength.asset.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/AffordanceThemes/PinchPointEdgeStrength.asset.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/AffordanceThemes/PinchPoint/PinchPointHighlightColor.asset b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/AffordanceThemes/PinchPointHighlightColor.asset similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/AffordanceThemes/PinchPoint/PinchPointHighlightColor.asset rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/AffordanceThemes/PinchPointHighlightColor.asset diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/AffordanceThemes/PinchPoint/PinchPointHighlightColor.asset.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/AffordanceThemes/PinchPointHighlightColor.asset.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/AffordanceThemes/PinchPoint/PinchPointHighlightColor.asset.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/AffordanceThemes/PinchPointHighlightColor.asset.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/AffordanceThemes/PinchPoint/PinchPointLocalTransformOffset.asset b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/AffordanceThemes/PinchPointLocalTransformOffset.asset similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/AffordanceThemes/PinchPoint/PinchPointLocalTransformOffset.asset rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/AffordanceThemes/PinchPointLocalTransformOffset.asset diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/AffordanceThemes/PinchPoint/PinchPointLocalTransformOffset.asset.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/AffordanceThemes/PinchPointLocalTransformOffset.asset.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/AffordanceThemes/PinchPoint/PinchPointLocalTransformOffset.asset.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/AffordanceThemes/PinchPointLocalTransformOffset.asset.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/AffordanceThemes/PinchPoint/PinchPointUniformScaleScale.asset b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/AffordanceThemes/PinchPointUniformScaleScale.asset similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/AffordanceThemes/PinchPoint/PinchPointUniformScaleScale.asset rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/AffordanceThemes/PinchPointUniformScaleScale.asset diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/AffordanceThemes/PinchPoint/PinchPointUniformScaleScale.asset.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/AffordanceThemes/PinchPointUniformScaleScale.asset.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/AffordanceThemes/PinchPoint/PinchPointUniformScaleScale.asset.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/AffordanceThemes/PinchPointUniformScaleScale.asset.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/DatumPresets.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/DatumPresets.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/DatumPresets.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/DatumPresets.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/DatumPresets/Menu Controller Follow Preset.asset b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/DatumPresets/Menu Controller Follow Preset.asset similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/DatumPresets/Menu Controller Follow Preset.asset rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/DatumPresets/Menu Controller Follow Preset.asset diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/DatumPresets/Menu Controller Follow Preset.asset.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/DatumPresets/Menu Controller Follow Preset.asset.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/DatumPresets/Menu Controller Follow Preset.asset.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/DatumPresets/Menu Controller Follow Preset.asset.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/DatumPresets/Menu Hands Follow Preset.asset b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/DatumPresets/Menu Hands Follow Preset.asset similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/DatumPresets/Menu Hands Follow Preset.asset rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/DatumPresets/Menu Hands Follow Preset.asset diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/DatumPresets/Menu Hands Follow Preset.asset.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/DatumPresets/Menu Hands Follow Preset.asset.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/DatumPresets/Menu Hands Follow Preset.asset.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/DatumPresets/Menu Hands Follow Preset.asset.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/DatumPresets/Under Watch Controller Follow Preset.asset b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/DatumPresets/Under Watch Controller Follow Preset.asset similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/DatumPresets/Under Watch Controller Follow Preset.asset rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/DatumPresets/Under Watch Controller Follow Preset.asset diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/DatumPresets/Under Watch Controller Follow Preset.asset.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/DatumPresets/Under Watch Controller Follow Preset.asset.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/DatumPresets/Under Watch Controller Follow Preset.asset.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/DatumPresets/Under Watch Controller Follow Preset.asset.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/DatumPresets/Under Watch Hands Follow Preset.asset b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/DatumPresets/Under Watch Hands Follow Preset.asset similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/DatumPresets/Under Watch Hands Follow Preset.asset rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/DatumPresets/Under Watch Hands Follow Preset.asset diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/DatumPresets/Under Watch Hands Follow Preset.asset.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/DatumPresets/Under Watch Hands Follow Preset.asset.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/DatumPresets/Under Watch Hands Follow Preset.asset.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/DatumPresets/Under Watch Hands Follow Preset.asset.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Editor.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Editor.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Editor.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Editor.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Editor/Unity.XR.Interaction.Toolkit.Samples.Hands.Editor.asmdef b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Editor/HandsInteractionDemo.Editor.asmdef similarity index 67% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Editor/Unity.XR.Interaction.Toolkit.Samples.Hands.Editor.asmdef rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Editor/HandsInteractionDemo.Editor.asmdef index 3e210060..dc978728 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Editor/Unity.XR.Interaction.Toolkit.Samples.Hands.Editor.asmdef +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Editor/HandsInteractionDemo.Editor.asmdef @@ -1,9 +1,11 @@ { "name": "Unity.XR.Interaction.Toolkit.Samples.Hands.Editor", - "rootNamespace": "", + "rootNamespace": "UnityEditor.XR.Interaction.Toolkit.Samples.Hands.Editor", "references": [ "Unity.XR.CoreUtils", - "Unity.XR.CoreUtils.Editor" + "Unity.XR.CoreUtils.Editor", + "Unity.XR.Interaction.Toolkit", + "Unity.XR.Interaction.Toolkit.Editor" ], "includePlatforms": [ "Editor" diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Editor/Unity.XR.Interaction.Toolkit.Samples.Hands.Editor.asmdef.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Editor/HandsInteractionDemo.Editor.asmdef.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Editor/Unity.XR.Interaction.Toolkit.Samples.Hands.Editor.asmdef.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Editor/HandsInteractionDemo.Editor.asmdef.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Editor/Scripts.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Editor/Scripts.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Editor/Scripts.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Editor/Scripts.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Editor/Scripts/HandsInteractionSampleProjectValidation.cs b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Editor/Scripts/HandsSampleProjectValidation.cs similarity index 83% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Editor/Scripts/HandsInteractionSampleProjectValidation.cs rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Editor/Scripts/HandsSampleProjectValidation.cs index 999f9a89..16134b4f 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Editor/Scripts/HandsInteractionSampleProjectValidation.cs +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Editor/Scripts/HandsSampleProjectValidation.cs @@ -5,21 +5,23 @@ using Unity.XR.CoreUtils.Editor; using UnityEditor.PackageManager; using UnityEditor.PackageManager.Requests; using UnityEditor.PackageManager.UI; +using UnityEditor.XR.Interaction.Toolkit.ProjectValidation; using UnityEngine; -namespace UnityEditor.XR.Interaction.Toolkit.Samples.Hands +namespace UnityEditor.XR.Interaction.Toolkit.Samples.Hands.Editor { /// /// Unity Editor class which registers Project Validation rules for the Hands Interaction Demo sample, /// checking that other required samples and packages are installed. /// - static class HandsInteractionSampleProjectValidation + static class HandsSampleProjectValidation { const string k_SampleDisplayName = "Hands Interaction Demo"; const string k_Category = "XR Interaction Toolkit"; const string k_StarterAssetsSampleName = "Starter Assets"; const string k_HandVisualizerSampleName = "HandVisualizer"; const string k_ProjectValidationSettingsPath = "Project/XR Plug-in Management/Project Validation"; + const string k_HandsPackageDisplayName = "XR Hands"; const string k_HandsPackageName = "com.unity.xr.hands"; const string k_XRIPackageName = "com.unity.xr.interaction.toolkit"; const string k_ShaderGraphPackageName = "com.unity.shadergraph"; @@ -64,7 +66,7 @@ namespace UnityEditor.XR.Interaction.Toolkit.Samples.Hands IsRuleEnabled = () => PackageVersionUtility.GetPackageVersion(k_HandsPackageName) >= s_MinimumPackageVersion, Message = $"[{k_SampleDisplayName}] {k_HandVisualizerSampleName} sample from XR Hands ({k_HandsPackageName}) package must be imported or updated to use this sample.", Category = k_Category, - CheckPredicate = () => TryFindSample(k_HandsPackageName, string.Empty, k_HandVisualizerSampleName, out var sample) && sample.isImported, + CheckPredicate = () => ProjectValidationUtility.SampleImportMeetsMinimumVersion(k_HandsPackageDisplayName, k_HandVisualizerSampleName, PackageVersionUtility.GetPackageVersion(k_HandsPackageName)), FixIt = () => { if (TryFindSample(k_HandsPackageName, string.Empty, k_HandVisualizerSampleName, out var sample)) @@ -73,13 +75,13 @@ namespace UnityEditor.XR.Interaction.Toolkit.Samples.Hands } }, FixItAutomatic = true, - Error = true, + Error = !ProjectValidationUtility.HasSampleImported(k_HandsPackageDisplayName, k_HandVisualizerSampleName), }, new BuildValidationRule { - Message = $"[{k_SampleDisplayName}] {k_StarterAssetsSampleName} sample from XR Interaction Toolkit ({k_XRIPackageName}) package must be imported or updated to use this sample.", + Message = $"[{k_SampleDisplayName}] {k_StarterAssetsSampleName} sample from XR Interaction Toolkit ({k_XRIPackageName}) package must be imported or updated to use this sample. {GetImportSampleVersionMessage(k_Category, k_StarterAssetsSampleName, PackageVersionUtility.GetPackageVersion(k_XRIPackageName))}", Category = k_Category, - CheckPredicate = () => TryFindSample(k_XRIPackageName, string.Empty, k_StarterAssetsSampleName, out var sample) && sample.isImported, + CheckPredicate = () => ProjectValidationUtility.SampleImportMeetsMinimumVersion(k_Category, k_StarterAssetsSampleName, PackageVersionUtility.GetPackageVersion(k_XRIPackageName)), FixIt = () => { if (TryFindSample(k_XRIPackageName, string.Empty, k_StarterAssetsSampleName, out var sample)) @@ -88,7 +90,7 @@ namespace UnityEditor.XR.Interaction.Toolkit.Samples.Hands } }, FixItAutomatic = true, - Error = true, + Error = !ProjectValidationUtility.HasSampleImported(k_Category, k_StarterAssetsSampleName), }, new BuildValidationRule { @@ -206,9 +208,13 @@ namespace UnityEditor.XR.Interaction.Toolkit.Samples.Hands if (request.Status == StatusCode.Success && request.Result.Length > 0) { var versions = request.Result[0].versions; - var verifiedVersion = new PackageVersion(versions.recommended); +#if UNITY_2022_2_OR_NEWER + var recommendedVersion = new PackageVersion(versions.recommended); +#else + var recommendedVersion = new PackageVersion(versions.verified); +#endif var latestCompatible = new PackageVersion(versions.latestCompatible); - if (verifiedVersion < s_RecommendedPackageVersion && s_RecommendedPackageVersion <= latestCompatible) + if (recommendedVersion < s_RecommendedPackageVersion && s_RecommendedPackageVersion <= latestCompatible) addRequest = $"{k_HandsPackageName}@{s_RecommendedPackageVersion}"; } @@ -218,5 +224,13 @@ namespace UnityEditor.XR.Interaction.Toolkit.Samples.Hands Debug.LogError($"Package installation error: {s_HandsPackageAddRequest.Error}: {s_HandsPackageAddRequest.Error.message}"); } } + + static string GetImportSampleVersionMessage(string packageFolderName, string sampleDisplayName, PackageVersion version) + { + if (ProjectValidationUtility.SampleImportMeetsMinimumVersion(packageFolderName, sampleDisplayName, version) || !ProjectValidationUtility.HasSampleImported(packageFolderName, sampleDisplayName)) + return string.Empty; + + return $"An older version of {sampleDisplayName} has been found. This may cause errors."; + } } } diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Editor/Scripts/HandsInteractionSampleProjectValidation.cs.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Editor/Scripts/HandsSampleProjectValidation.cs.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Editor/Scripts/HandsInteractionSampleProjectValidation.cs.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Editor/Scripts/HandsSampleProjectValidation.cs.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoScene.unity b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoScene.unity similarity index 86% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoScene.unity rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoScene.unity index 0b151856..562db883 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoScene.unity +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoScene.unity @@ -38,7 +38,7 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.18387039, g: 0.22902612, b: 0.30317035, a: 1} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} m_UseRadianceAmbientProbe: 0 --- !u!157 &3 LightmapSettings: @@ -104,7 +104,7 @@ NavMeshSettings: serializedVersion: 2 m_ObjectHideFlags: 0 m_BuildSettings: - serializedVersion: 3 + serializedVersion: 2 agentTypeID: 0 agentRadius: 0.5 agentHeight: 2 @@ -117,7 +117,7 @@ NavMeshSettings: cellSize: 0.16666667 manualTileSize: 0 tileSize: 256 - buildHeightMesh: 0 + accuratePlacement: 0 maxJobWorkers: 0 preserveTilesOutsideBounds: 0 debug: @@ -128,98 +128,61 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - serializedVersion: 3 m_TransformParent: {fileID: 2105799744} m_Modifications: - - target: {fileID: 106093692981118498, guid: aec71f91a8da27d418aa44bd0c543f9b, - type: 3} + - target: {fileID: 106093692981118498, guid: aec71f91a8da27d418aa44bd0c543f9b, type: 3} propertyPath: m_Name value: SimpleSocket objectReference: {fileID: 0} - - target: {fileID: 406981427254625433, guid: aec71f91a8da27d418aa44bd0c543f9b, - type: 3} - propertyPath: m_Materials.Array.data[0] - value: - objectReference: {fileID: 2100000, guid: 57322c1d21440ff4fb14fd9bc771353e, type: 2} - - target: {fileID: 468281548969361700, guid: aec71f91a8da27d418aa44bd0c543f9b, - type: 3} - propertyPath: m_Materials.Array.data[0] - value: - objectReference: {fileID: 2100000, guid: 57322c1d21440ff4fb14fd9bc771353e, type: 2} - - target: {fileID: 734996079564348568, guid: aec71f91a8da27d418aa44bd0c543f9b, - type: 3} + - target: {fileID: 734996079564348568, guid: aec71f91a8da27d418aa44bd0c543f9b, type: 3} propertyPath: m_RootOrder value: 2 objectReference: {fileID: 0} - - target: {fileID: 734996079564348568, guid: aec71f91a8da27d418aa44bd0c543f9b, - type: 3} + - target: {fileID: 734996079564348568, guid: aec71f91a8da27d418aa44bd0c543f9b, type: 3} propertyPath: m_LocalPosition.x value: 2.720022 objectReference: {fileID: 0} - - target: {fileID: 734996079564348568, guid: aec71f91a8da27d418aa44bd0c543f9b, - type: 3} + - target: {fileID: 734996079564348568, guid: aec71f91a8da27d418aa44bd0c543f9b, type: 3} propertyPath: m_LocalPosition.y value: -5.110141 objectReference: {fileID: 0} - - target: {fileID: 734996079564348568, guid: aec71f91a8da27d418aa44bd0c543f9b, - type: 3} + - target: {fileID: 734996079564348568, guid: aec71f91a8da27d418aa44bd0c543f9b, type: 3} propertyPath: m_LocalPosition.z value: -49.98017 objectReference: {fileID: 0} - - target: {fileID: 734996079564348568, guid: aec71f91a8da27d418aa44bd0c543f9b, - type: 3} + - target: {fileID: 734996079564348568, guid: aec71f91a8da27d418aa44bd0c543f9b, type: 3} propertyPath: m_LocalRotation.w value: 0.7010574 objectReference: {fileID: 0} - - target: {fileID: 734996079564348568, guid: aec71f91a8da27d418aa44bd0c543f9b, - type: 3} + - target: {fileID: 734996079564348568, guid: aec71f91a8da27d418aa44bd0c543f9b, type: 3} propertyPath: m_LocalRotation.x value: -0.09229593 objectReference: {fileID: 0} - - target: {fileID: 734996079564348568, guid: aec71f91a8da27d418aa44bd0c543f9b, - type: 3} + - target: {fileID: 734996079564348568, guid: aec71f91a8da27d418aa44bd0c543f9b, type: 3} propertyPath: m_LocalRotation.y value: 0.7010574 objectReference: {fileID: 0} - - target: {fileID: 734996079564348568, guid: aec71f91a8da27d418aa44bd0c543f9b, - type: 3} + - target: {fileID: 734996079564348568, guid: aec71f91a8da27d418aa44bd0c543f9b, type: 3} propertyPath: m_LocalRotation.z value: -0.09229593 objectReference: {fileID: 0} - - target: {fileID: 734996079564348568, guid: aec71f91a8da27d418aa44bd0c543f9b, - type: 3} + - target: {fileID: 734996079564348568, guid: aec71f91a8da27d418aa44bd0c543f9b, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 734996079564348568, guid: aec71f91a8da27d418aa44bd0c543f9b, - type: 3} + - target: {fileID: 734996079564348568, guid: aec71f91a8da27d418aa44bd0c543f9b, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 90 objectReference: {fileID: 0} - - target: {fileID: 734996079564348568, guid: aec71f91a8da27d418aa44bd0c543f9b, - type: 3} + - target: {fileID: 734996079564348568, guid: aec71f91a8da27d418aa44bd0c543f9b, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 6317744024979905813, guid: aec71f91a8da27d418aa44bd0c543f9b, - type: 3} - propertyPath: m_Materials.Array.data[0] - value: - objectReference: {fileID: 2100000, guid: 57322c1d21440ff4fb14fd9bc771353e, type: 2} - - target: {fileID: 6390925710335525439, guid: aec71f91a8da27d418aa44bd0c543f9b, - type: 3} - propertyPath: m_Materials.Array.data[0] - value: - objectReference: {fileID: 2100000, guid: 57322c1d21440ff4fb14fd9bc771353e, type: 2} m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: aec71f91a8da27d418aa44bd0c543f9b, type: 3} --- !u!4 &9821839 stripped Transform: - m_CorrespondingSourceObject: {fileID: 734996079564348568, guid: aec71f91a8da27d418aa44bd0c543f9b, - type: 3} + m_CorrespondingSourceObject: {fileID: 734996079564348568, guid: aec71f91a8da27d418aa44bd0c543f9b, type: 3} m_PrefabInstance: {fileID: 9821838} m_PrefabAsset: {fileID: 0} --- !u!1 &42134093 @@ -254,6 +217,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1726903308} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} @@ -309,11 +273,9 @@ SortingGroup: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: -100 - m_SortAtRoot: 0 --- !u!114 &45925792 stripped MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 5664791683828586331, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + m_CorrespondingSourceObject: {fileID: 5664791683828586331, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} m_PrefabInstance: {fileID: 6183026901525796732} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 0} @@ -353,6 +315,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1120256391} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: -15, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} @@ -424,7 +387,6 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 123424312} - serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: -0.25} m_LocalScale: {x: 1, y: 1, z: 1} @@ -433,6 +395,7 @@ Transform: - {fileID: 1120256391} - {fileID: 992345761} m_Father: {fileID: 1434975003} + m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &152278406 GameObject: @@ -465,6 +428,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1887197406} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 1, y: 1} @@ -518,179 +482,142 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - serializedVersion: 3 m_TransformParent: {fileID: 1930256998} m_Modifications: - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_Pivot.x value: 0.5 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_Pivot.y value: 0.5 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_RootOrder value: 2 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchorMax.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchorMin.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_SizeDelta.x value: 60 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_SizeDelta.y value: 60 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalRotation.x value: -0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalRotation.y value: -0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalRotation.z value: -0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596673, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596673, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_Name value: TouchPad Button 6 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size value: 1 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode value: 6 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target value: objectReference: {fileID: 1633829042} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState value: 2 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName value: set_isOn objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName value: UnityEngine.UI.Toggle, UnityEngine.UI objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_BoolArgument value: 1 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName value: UnityEngine.Object, UnityEngine objectReference: {fileID: 0} - - target: {fileID: 4455438663099779001, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438663099779001, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_Text value: 6 objectReference: {fileID: 0} m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: b0c78422845bac948a9080175e57ffff, type: 3} --- !u!224 &170632161 stripped RectTransform: - m_CorrespondingSourceObject: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + m_CorrespondingSourceObject: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} m_PrefabInstance: {fileID: 170632160} m_PrefabAsset: {fileID: 0} --- !u!224 &182067613 stripped RectTransform: - m_CorrespondingSourceObject: {fileID: 1004097911450439916, guid: 56686f82f64b0af4688a89676403a500, - type: 3} + m_CorrespondingSourceObject: {fileID: 1004097911450439916, guid: 56686f82f64b0af4688a89676403a500, type: 3} m_PrefabInstance: {fileID: 1004097911546261873} m_PrefabAsset: {fileID: 0} --- !u!1 &187460342 @@ -728,6 +655,7 @@ RectTransform: - {fileID: 900557651} - {fileID: 1943824117} m_Father: {fileID: 1576716364} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 15, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} @@ -810,9 +738,7 @@ Canvas: m_OverrideSorting: 0 m_OverridePixelPerfect: 0 m_SortingBucketNormalizedSize: 0 - m_VertexColorAlwaysGammaSpace: 0 m_AdditionalShaderChannelsFlag: 25 - m_UpdateRectTransformForStandalone: 0 m_SortingLayerID: 0 m_SortingOrder: 1 m_TargetDisplay: 0 @@ -821,173 +747,137 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - serializedVersion: 3 m_TransformParent: {fileID: 1648550613} m_Modifications: - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_Pivot.x value: 0.5 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_Pivot.y value: 0.5 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchorMax.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchorMin.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_SizeDelta.x value: 60 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_SizeDelta.y value: 60 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalRotation.x value: -0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalRotation.y value: -0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalRotation.z value: -0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596673, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596673, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_Name value: TouchPad Button 1 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size value: 1 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode value: 6 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target value: objectReference: {fileID: 9108665820597706860} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState value: 2 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName value: set_isOn objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName value: UnityEngine.UI.Toggle, UnityEngine.UI objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_BoolArgument value: 1 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName value: UnityEngine.Object, UnityEngine objectReference: {fileID: 0} - - target: {fileID: 4455438663099779001, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438663099779001, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_Text value: 1 objectReference: {fileID: 0} m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: b0c78422845bac948a9080175e57ffff, type: 3} --- !u!224 &203859525 stripped RectTransform: - m_CorrespondingSourceObject: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + m_CorrespondingSourceObject: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} m_PrefabInstance: {fileID: 203859524} m_PrefabAsset: {fileID: 0} --- !u!1 &231362122 @@ -1021,6 +911,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 745358749} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -1098,6 +989,7 @@ RectTransform: - {fileID: 883783995} - {fileID: 2050916414} m_Father: {fileID: 2105827454} + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} @@ -1114,7 +1006,6 @@ GameObject: m_Component: - component: {fileID: 257810523} - component: {fileID: 257810522} - - component: {fileID: 257810524} m_Layer: 0 m_Name: Directional Light m_TagString: Untagged @@ -1191,41 +1082,17 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 257810521} - serializedVersion: 2 m_LocalRotation: {x: 0.3641889, y: -0.6962201, z: 0.036887143, w: 0.6174815} m_LocalPosition: {x: 0, y: 3, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 30.074001, y: -105.73701, z: -32.233} ---- !u!114 &257810524 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 257810521} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Version: 3 - m_UsePipelineSettings: 1 - m_AdditionalLightsShadowResolutionTier: 2 - m_LightLayerMask: 1 - m_RenderingLayers: 1 - m_CustomShadowLayers: 0 - m_ShadowLayerMask: 1 - m_ShadowRenderingLayers: 1 - m_LightCookieSize: {x: 1, y: 1} - m_LightCookieOffset: {x: 0, y: 0} - m_SoftShadowQuality: 0 --- !u!114 &260197484 stripped MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 195190420571543381, guid: 6a448845c7017044e8a9f3d711cfe825, - type: 3} + m_CorrespondingSourceObject: {fileID: 195190420571543381, guid: 6a448845c7017044e8a9f3d711cfe825, type: 3} m_PrefabInstance: {fileID: 195190421004440613} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 0} @@ -1265,6 +1132,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 246682137} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} @@ -1315,8 +1183,7 @@ CanvasRenderer: m_CullTransparentMesh: 1 --- !u!1 &276858880 stripped GameObject: - m_CorrespondingSourceObject: {fileID: 195190420563360911, guid: 6a448845c7017044e8a9f3d711cfe825, - type: 3} + m_CorrespondingSourceObject: {fileID: 195190420563360911, guid: 6a448845c7017044e8a9f3d711cfe825, type: 3} m_PrefabInstance: {fileID: 195190421004440613} m_PrefabAsset: {fileID: 0} --- !u!1 &293575449 @@ -1350,6 +1217,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 2011190209} + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -1425,6 +1293,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 2105799744} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: -15, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} @@ -1478,184 +1347,146 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - serializedVersion: 3 m_TransformParent: {fileID: 1643716050} m_Modifications: - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_Pivot.x value: 0.5 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_Pivot.y value: 0.5 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_RootOrder value: 2 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchorMax.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchorMin.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_SizeDelta.x value: 60 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_SizeDelta.y value: 60 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalRotation.x value: -0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalRotation.y value: -0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalRotation.z value: -0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596673, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596673, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_Name value: TouchPad Button 9 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596673, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596673, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_IsActive value: 1 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size value: 1 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode value: 6 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target value: objectReference: {fileID: 452173682} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState value: 2 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName value: set_isOn objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName value: UnityEngine.UI.Toggle, UnityEngine.UI objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_BoolArgument value: 1 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName value: UnityEngine.Object, UnityEngine objectReference: {fileID: 0} - - target: {fileID: 4455438663099779001, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438663099779001, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_Text value: 9 objectReference: {fileID: 0} m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: b0c78422845bac948a9080175e57ffff, type: 3} --- !u!224 &331857616 stripped RectTransform: - m_CorrespondingSourceObject: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + m_CorrespondingSourceObject: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} m_PrefabInstance: {fileID: 331857615} m_PrefabAsset: {fileID: 0} --- !u!114 &337741472 stripped MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 5715416336153000561, guid: 541ed11e270c6994ca5910042c7e04da, - type: 3} + m_CorrespondingSourceObject: {fileID: 5715416336153000561, guid: 541ed11e270c6994ca5910042c7e04da, type: 3} m_PrefabInstance: {fileID: 5715416335952834191} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 0} @@ -1698,6 +1529,7 @@ RectTransform: - {fileID: 2011190209} - {fileID: 1459892945} m_Father: {fileID: 992345761} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} @@ -1746,8 +1578,7 @@ MonoBehaviour: m_ReverseArrangement: 0 --- !u!224 &364340073 stripped RectTransform: - m_CorrespondingSourceObject: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + m_CorrespondingSourceObject: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} m_PrefabInstance: {fileID: 6183026901525796732} m_PrefabAsset: {fileID: 0} --- !u!1 &375196258 @@ -1781,6 +1612,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 2011190209} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -1827,8 +1659,7 @@ CanvasRenderer: m_CullTransparentMesh: 1 --- !u!224 &448506027 stripped RectTransform: - m_CorrespondingSourceObject: {fileID: 195190420563360910, guid: 6a448845c7017044e8a9f3d711cfe825, - type: 3} + m_CorrespondingSourceObject: {fileID: 195190420563360910, guid: 6a448845c7017044e8a9f3d711cfe825, type: 3} m_PrefabInstance: {fileID: 195190421004440613} m_PrefabAsset: {fileID: 0} --- !u!114 &448506032 @@ -1847,8 +1678,7 @@ MonoBehaviour: m_ToggleOffGraphic: {fileID: 260197484} --- !u!114 &452173682 stripped MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 2089690465474535966, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + m_CorrespondingSourceObject: {fileID: 2089690465474535966, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} m_PrefabInstance: {fileID: 6183026901525796732} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 0} @@ -1862,87 +1692,65 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - serializedVersion: 3 m_TransformParent: {fileID: 1434975003} m_Modifications: - - target: {fileID: -8679921383154817045, guid: 365907f61b8b39a48aab9aacd4588f45, - type: 3} + - target: {fileID: -8679921383154817045, guid: 365907f61b8b39a48aab9aacd4588f45, type: 3} propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 365907f61b8b39a48aab9aacd4588f45, - type: 3} + - target: {fileID: -8679921383154817045, guid: 365907f61b8b39a48aab9aacd4588f45, type: 3} propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 365907f61b8b39a48aab9aacd4588f45, - type: 3} + - target: {fileID: -8679921383154817045, guid: 365907f61b8b39a48aab9aacd4588f45, type: 3} propertyPath: m_LocalPosition.y value: 0.73660004 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 365907f61b8b39a48aab9aacd4588f45, - type: 3} + - target: {fileID: -8679921383154817045, guid: 365907f61b8b39a48aab9aacd4588f45, type: 3} propertyPath: m_LocalPosition.z value: -0.25 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 365907f61b8b39a48aab9aacd4588f45, - type: 3} + - target: {fileID: -8679921383154817045, guid: 365907f61b8b39a48aab9aacd4588f45, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 365907f61b8b39a48aab9aacd4588f45, - type: 3} + - target: {fileID: -8679921383154817045, guid: 365907f61b8b39a48aab9aacd4588f45, type: 3} propertyPath: m_LocalRotation.x value: -0 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 365907f61b8b39a48aab9aacd4588f45, - type: 3} + - target: {fileID: -8679921383154817045, guid: 365907f61b8b39a48aab9aacd4588f45, type: 3} propertyPath: m_LocalRotation.y value: -0 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 365907f61b8b39a48aab9aacd4588f45, - type: 3} + - target: {fileID: -8679921383154817045, guid: 365907f61b8b39a48aab9aacd4588f45, type: 3} propertyPath: m_LocalRotation.z value: -0 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 365907f61b8b39a48aab9aacd4588f45, - type: 3} + - target: {fileID: -8679921383154817045, guid: 365907f61b8b39a48aab9aacd4588f45, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 365907f61b8b39a48aab9aacd4588f45, - type: 3} + - target: {fileID: -8679921383154817045, guid: 365907f61b8b39a48aab9aacd4588f45, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 365907f61b8b39a48aab9aacd4588f45, - type: 3} + - target: {fileID: -8679921383154817045, guid: 365907f61b8b39a48aab9aacd4588f45, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: -7511558181221131132, guid: 365907f61b8b39a48aab9aacd4588f45, - type: 3} + - target: {fileID: -7511558181221131132, guid: 365907f61b8b39a48aab9aacd4588f45, type: 3} propertyPath: m_Materials.Array.data[0] value: objectReference: {fileID: 2100000, guid: 6c72d2d2ead00e54db4b71b27ffb03d4, type: 2} - - target: {fileID: 919132149155446097, guid: 365907f61b8b39a48aab9aacd4588f45, - type: 3} + - target: {fileID: 919132149155446097, guid: 365907f61b8b39a48aab9aacd4588f45, type: 3} propertyPath: m_Name value: VirtualTabletop objectReference: {fileID: 0} m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: - - targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: 365907f61b8b39a48aab9aacd4588f45, - type: 3} - insertIndex: -1 - addedObject: {fileID: 982772613} m_SourcePrefab: {fileID: 100100000, guid: 365907f61b8b39a48aab9aacd4588f45, type: 3} --- !u!114 &501676794 stripped MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 3504782657351738374, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + m_CorrespondingSourceObject: {fileID: 3504782657351738374, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} m_PrefabInstance: {fileID: 6183026901525796732} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 0} @@ -1956,173 +1764,137 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - serializedVersion: 3 m_TransformParent: {fileID: 1643716050} m_Modifications: - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_Pivot.x value: 0.5 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_Pivot.y value: 0.5 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchorMax.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchorMin.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_SizeDelta.x value: 60 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_SizeDelta.y value: 60 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalRotation.x value: -0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalRotation.y value: -0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalRotation.z value: -0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596673, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596673, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_Name value: TouchPad Button 7 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size value: 1 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode value: 6 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target value: objectReference: {fileID: 45925792} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState value: 2 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName value: set_isOn objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName value: UnityEngine.UI.Toggle, UnityEngine.UI objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_BoolArgument value: 1 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName value: UnityEngine.Object, UnityEngine objectReference: {fileID: 0} - - target: {fileID: 4455438663099779001, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438663099779001, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_Text value: 7 objectReference: {fileID: 0} m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: b0c78422845bac948a9080175e57ffff, type: 3} --- !u!224 &518872804 stripped RectTransform: - m_CorrespondingSourceObject: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + m_CorrespondingSourceObject: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} m_PrefabInstance: {fileID: 518872803} m_PrefabAsset: {fileID: 0} --- !u!1 &522548467 @@ -2156,6 +1928,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1459892945} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -2231,6 +2004,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 2011190209} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -2280,84 +2054,70 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - serializedVersion: 3 m_TransformParent: {fileID: 1337396801} m_Modifications: - - target: {fileID: 6957000769822834732, guid: d81193b4b57486b46b4762e8b26d2de8, - type: 3} + - target: {fileID: 6957000769822834732, guid: d81193b4b57486b46b4762e8b26d2de8, type: 3} propertyPath: m_RootOrder value: 1 objectReference: {fileID: 0} - - target: {fileID: 6957000769822834732, guid: d81193b4b57486b46b4762e8b26d2de8, - type: 3} + - target: {fileID: 6957000769822834732, guid: d81193b4b57486b46b4762e8b26d2de8, type: 3} propertyPath: m_LocalPosition.x value: 0.05 objectReference: {fileID: 0} - - target: {fileID: 6957000769822834732, guid: d81193b4b57486b46b4762e8b26d2de8, - type: 3} + - target: {fileID: 6957000769822834732, guid: d81193b4b57486b46b4762e8b26d2de8, type: 3} propertyPath: m_LocalPosition.y value: 0.842 objectReference: {fileID: 0} - - target: {fileID: 6957000769822834732, guid: d81193b4b57486b46b4762e8b26d2de8, - type: 3} + - target: {fileID: 6957000769822834732, guid: d81193b4b57486b46b4762e8b26d2de8, type: 3} propertyPath: m_LocalPosition.z value: 0.5 objectReference: {fileID: 0} - - target: {fileID: 6957000769822834732, guid: d81193b4b57486b46b4762e8b26d2de8, - type: 3} + - target: {fileID: 6957000769822834732, guid: d81193b4b57486b46b4762e8b26d2de8, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 6957000769822834732, guid: d81193b4b57486b46b4762e8b26d2de8, - type: 3} + - target: {fileID: 6957000769822834732, guid: d81193b4b57486b46b4762e8b26d2de8, type: 3} propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 6957000769822834732, guid: d81193b4b57486b46b4762e8b26d2de8, - type: 3} + - target: {fileID: 6957000769822834732, guid: d81193b4b57486b46b4762e8b26d2de8, type: 3} propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 6957000769822834732, guid: d81193b4b57486b46b4762e8b26d2de8, - type: 3} + - target: {fileID: 6957000769822834732, guid: d81193b4b57486b46b4762e8b26d2de8, type: 3} propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 6957000769822834732, guid: d81193b4b57486b46b4762e8b26d2de8, - type: 3} + - target: {fileID: 6957000769822834732, guid: d81193b4b57486b46b4762e8b26d2de8, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 6957000769822834732, guid: d81193b4b57486b46b4762e8b26d2de8, - type: 3} + - target: {fileID: 6957000769822834732, guid: d81193b4b57486b46b4762e8b26d2de8, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 6957000769822834732, guid: d81193b4b57486b46b4762e8b26d2de8, - type: 3} + - target: {fileID: 6957000769822834732, guid: d81193b4b57486b46b4762e8b26d2de8, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 6957000769822834733, guid: d81193b4b57486b46b4762e8b26d2de8, - type: 3} + - target: {fileID: 6957000769822834733, guid: d81193b4b57486b46b4762e8b26d2de8, type: 3} propertyPath: m_Name value: SimpleSocketShape objectReference: {fileID: 0} + - target: {fileID: 6957000769822834733, guid: d81193b4b57486b46b4762e8b26d2de8, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: d81193b4b57486b46b4762e8b26d2de8, type: 3} --- !u!4 &547215373 stripped Transform: - m_CorrespondingSourceObject: {fileID: 6957000769822834732, guid: d81193b4b57486b46b4762e8b26d2de8, - type: 3} + m_CorrespondingSourceObject: {fileID: 6957000769822834732, guid: d81193b4b57486b46b4762e8b26d2de8, type: 3} m_PrefabInstance: {fileID: 547215372} m_PrefabAsset: {fileID: 0} --- !u!114 &574022040 stripped MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 195190419645158932, guid: 6a448845c7017044e8a9f3d711cfe825, - type: 3} + m_CorrespondingSourceObject: {fileID: 195190419645158932, guid: 6a448845c7017044e8a9f3d711cfe825, type: 3} m_PrefabInstance: {fileID: 195190421004440613} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 0} @@ -2371,83 +2131,65 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - serializedVersion: 3 m_TransformParent: {fileID: 1337110718} m_Modifications: - - target: {fileID: 3166814444043639594, guid: e2698219e3231e94c8765d49b9dd5cff, - type: 3} + - target: {fileID: 3166814444043639594, guid: e2698219e3231e94c8765d49b9dd5cff, type: 3} propertyPath: m_Camera value: objectReference: {fileID: 1948693200} - - target: {fileID: 5030734266366949668, guid: e2698219e3231e94c8765d49b9dd5cff, - type: 3} + - target: {fileID: 5030734266366949668, guid: e2698219e3231e94c8765d49b9dd5cff, type: 3} propertyPath: m_Camera value: objectReference: {fileID: 1948693200} - - target: {fileID: 5030734267259534324, guid: e2698219e3231e94c8765d49b9dd5cff, - type: 3} + - target: {fileID: 5030734267259534324, guid: e2698219e3231e94c8765d49b9dd5cff, type: 3} propertyPath: m_Name value: Hand Menu With Button Activation objectReference: {fileID: 0} - - target: {fileID: 5030734267259534325, guid: e2698219e3231e94c8765d49b9dd5cff, - type: 3} + - target: {fileID: 5030734267259534325, guid: e2698219e3231e94c8765d49b9dd5cff, type: 3} propertyPath: m_RootOrder value: 10 objectReference: {fileID: 0} - - target: {fileID: 5030734267259534325, guid: e2698219e3231e94c8765d49b9dd5cff, - type: 3} + - target: {fileID: 5030734267259534325, guid: e2698219e3231e94c8765d49b9dd5cff, type: 3} propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 5030734267259534325, guid: e2698219e3231e94c8765d49b9dd5cff, - type: 3} + - target: {fileID: 5030734267259534325, guid: e2698219e3231e94c8765d49b9dd5cff, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 5030734267259534325, guid: e2698219e3231e94c8765d49b9dd5cff, - type: 3} + - target: {fileID: 5030734267259534325, guid: e2698219e3231e94c8765d49b9dd5cff, type: 3} propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 5030734267259534325, guid: e2698219e3231e94c8765d49b9dd5cff, - type: 3} + - target: {fileID: 5030734267259534325, guid: e2698219e3231e94c8765d49b9dd5cff, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 5030734267259534325, guid: e2698219e3231e94c8765d49b9dd5cff, - type: 3} + - target: {fileID: 5030734267259534325, guid: e2698219e3231e94c8765d49b9dd5cff, type: 3} propertyPath: m_LocalRotation.x value: -0 objectReference: {fileID: 0} - - target: {fileID: 5030734267259534325, guid: e2698219e3231e94c8765d49b9dd5cff, - type: 3} + - target: {fileID: 5030734267259534325, guid: e2698219e3231e94c8765d49b9dd5cff, type: 3} propertyPath: m_LocalRotation.y value: -0 objectReference: {fileID: 0} - - target: {fileID: 5030734267259534325, guid: e2698219e3231e94c8765d49b9dd5cff, - type: 3} + - target: {fileID: 5030734267259534325, guid: e2698219e3231e94c8765d49b9dd5cff, type: 3} propertyPath: m_LocalRotation.z value: -0 objectReference: {fileID: 0} - - target: {fileID: 5030734267259534325, guid: e2698219e3231e94c8765d49b9dd5cff, - type: 3} + - target: {fileID: 5030734267259534325, guid: e2698219e3231e94c8765d49b9dd5cff, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 5030734267259534325, guid: e2698219e3231e94c8765d49b9dd5cff, - type: 3} + - target: {fileID: 5030734267259534325, guid: e2698219e3231e94c8765d49b9dd5cff, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 5030734267259534325, guid: e2698219e3231e94c8765d49b9dd5cff, - type: 3} + - target: {fileID: 5030734267259534325, guid: e2698219e3231e94c8765d49b9dd5cff, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: e2698219e3231e94c8765d49b9dd5cff, type: 3} --- !u!1 &659511933 GameObject: @@ -2480,6 +2222,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1726903308} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} @@ -2556,6 +2299,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 2105799744} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: -15, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} @@ -2625,123 +2369,97 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - serializedVersion: 3 m_TransformParent: {fileID: 1434975003} m_Modifications: - - target: {fileID: -8679921383154817045, guid: 171affcd2d7ddf545ae966acd2de57c2, - type: 3} + - target: {fileID: -8679921383154817045, guid: 171affcd2d7ddf545ae966acd2de57c2, type: 3} propertyPath: m_RootOrder value: 1 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 171affcd2d7ddf545ae966acd2de57c2, - type: 3} + - target: {fileID: -8679921383154817045, guid: 171affcd2d7ddf545ae966acd2de57c2, type: 3} propertyPath: m_LocalScale.x value: 0.825 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 171affcd2d7ddf545ae966acd2de57c2, - type: 3} + - target: {fileID: -8679921383154817045, guid: 171affcd2d7ddf545ae966acd2de57c2, type: 3} propertyPath: m_LocalScale.y value: 0.825 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 171affcd2d7ddf545ae966acd2de57c2, - type: 3} + - target: {fileID: -8679921383154817045, guid: 171affcd2d7ddf545ae966acd2de57c2, type: 3} propertyPath: m_LocalScale.z value: 0.825 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 171affcd2d7ddf545ae966acd2de57c2, - type: 3} + - target: {fileID: -8679921383154817045, guid: 171affcd2d7ddf545ae966acd2de57c2, type: 3} propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 171affcd2d7ddf545ae966acd2de57c2, - type: 3} + - target: {fileID: -8679921383154817045, guid: 171affcd2d7ddf545ae966acd2de57c2, type: 3} propertyPath: m_LocalPosition.y value: 0.202 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 171affcd2d7ddf545ae966acd2de57c2, - type: 3} + - target: {fileID: -8679921383154817045, guid: 171affcd2d7ddf545ae966acd2de57c2, type: 3} propertyPath: m_LocalPosition.z value: -0.04 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 171affcd2d7ddf545ae966acd2de57c2, - type: 3} + - target: {fileID: -8679921383154817045, guid: 171affcd2d7ddf545ae966acd2de57c2, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 171affcd2d7ddf545ae966acd2de57c2, - type: 3} + - target: {fileID: -8679921383154817045, guid: 171affcd2d7ddf545ae966acd2de57c2, type: 3} propertyPath: m_LocalRotation.x value: -0 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 171affcd2d7ddf545ae966acd2de57c2, - type: 3} + - target: {fileID: -8679921383154817045, guid: 171affcd2d7ddf545ae966acd2de57c2, type: 3} propertyPath: m_LocalRotation.y value: -0 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 171affcd2d7ddf545ae966acd2de57c2, - type: 3} + - target: {fileID: -8679921383154817045, guid: 171affcd2d7ddf545ae966acd2de57c2, type: 3} propertyPath: m_LocalRotation.z value: -0 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 171affcd2d7ddf545ae966acd2de57c2, - type: 3} + - target: {fileID: -8679921383154817045, guid: 171affcd2d7ddf545ae966acd2de57c2, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 171affcd2d7ddf545ae966acd2de57c2, - type: 3} + - target: {fileID: -8679921383154817045, guid: 171affcd2d7ddf545ae966acd2de57c2, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 171affcd2d7ddf545ae966acd2de57c2, - type: 3} + - target: {fileID: -8679921383154817045, guid: 171affcd2d7ddf545ae966acd2de57c2, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: -4439102092742417607, guid: 171affcd2d7ddf545ae966acd2de57c2, - type: 3} + - target: {fileID: -4439102092742417607, guid: 171affcd2d7ddf545ae966acd2de57c2, type: 3} propertyPath: m_Materials.Array.data[0] value: objectReference: {fileID: 2100000, guid: 54f7c59213ac02b4d9f00104348dbac3, type: 2} - - target: {fileID: -2592982531892835197, guid: 171affcd2d7ddf545ae966acd2de57c2, - type: 3} + - target: {fileID: -2592982531892835197, guid: 171affcd2d7ddf545ae966acd2de57c2, type: 3} propertyPath: m_Materials.Array.data[0] value: objectReference: {fileID: 2100000, guid: 54f7c59213ac02b4d9f00104348dbac3, type: 2} - - target: {fileID: 352991350029454794, guid: 171affcd2d7ddf545ae966acd2de57c2, - type: 3} + - target: {fileID: 352991350029454794, guid: 171affcd2d7ddf545ae966acd2de57c2, type: 3} propertyPath: m_Materials.Array.data[0] value: objectReference: {fileID: 2100000, guid: 54f7c59213ac02b4d9f00104348dbac3, type: 2} - - target: {fileID: 919132149155446097, guid: 171affcd2d7ddf545ae966acd2de57c2, - type: 3} + - target: {fileID: 919132149155446097, guid: 171affcd2d7ddf545ae966acd2de57c2, type: 3} propertyPath: m_Name value: Frame objectReference: {fileID: 0} - - target: {fileID: 4387676272040780315, guid: 171affcd2d7ddf545ae966acd2de57c2, - type: 3} + - target: {fileID: 4387676272040780315, guid: 171affcd2d7ddf545ae966acd2de57c2, type: 3} propertyPath: m_Materials.Array.data[0] value: objectReference: {fileID: 2100000, guid: 54f7c59213ac02b4d9f00104348dbac3, type: 2} - - target: {fileID: 5501516358913157983, guid: 171affcd2d7ddf545ae966acd2de57c2, - type: 3} + - target: {fileID: 5501516358913157983, guid: 171affcd2d7ddf545ae966acd2de57c2, type: 3} propertyPath: m_Materials.Array.data[0] value: objectReference: {fileID: 2100000, guid: 54f7c59213ac02b4d9f00104348dbac3, type: 2} - - target: {fileID: 7239177940356296027, guid: 171affcd2d7ddf545ae966acd2de57c2, - type: 3} + - target: {fileID: 7239177940356296027, guid: 171affcd2d7ddf545ae966acd2de57c2, type: 3} propertyPath: m_Materials.Array.data[0] value: objectReference: {fileID: 2100000, guid: 54f7c59213ac02b4d9f00104348dbac3, type: 2} m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 171affcd2d7ddf545ae966acd2de57c2, type: 3} --- !u!224 &702756937 stripped RectTransform: - m_CorrespondingSourceObject: {fileID: 5715416335250216646, guid: 541ed11e270c6994ca5910042c7e04da, - type: 3} + m_CorrespondingSourceObject: {fileID: 5715416335250216646, guid: 541ed11e270c6994ca5910042c7e04da, type: 3} m_PrefabInstance: {fileID: 5715416335952834191} m_PrefabAsset: {fileID: 0} --- !u!1 &745358748 @@ -2777,6 +2495,7 @@ RectTransform: - {fileID: 861617807} - {fileID: 1308569717} m_Father: {fileID: 361856895} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -2832,7 +2551,6 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 797091099} - serializedVersion: 2 m_LocalRotation: {x: -0, y: -0.3090171, z: -0, w: 0.95105654} m_LocalPosition: {x: 0, y: 0, z: -0.25} m_LocalScale: {x: 1, y: 1, z: 1} @@ -2842,6 +2560,7 @@ Transform: - {fileID: 1961794668} - {fileID: 2063322578} m_Father: {fileID: 1434975003} + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: -36, z: 0} --- !u!1 &809110995 GameObject: @@ -2874,6 +2593,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1459892945} + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -2923,373 +2643,297 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - serializedVersion: 3 m_TransformParent: {fileID: 1943824117} m_Modifications: - - target: {fileID: 575213516256852194, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 575213516256852194, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - - target: {fileID: 575213516256852194, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 575213516256852194, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - - target: {fileID: 575213516256852194, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 575213516256852194, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_SizeDelta.x value: 252 objectReference: {fileID: 0} - - target: {fileID: 575213516256852194, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 575213516256852194, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchoredPosition.x value: 126 objectReference: {fileID: 0} - - target: {fileID: 575213516256852194, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 575213516256852194, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchoredPosition.y value: -432 objectReference: {fileID: 0} - - target: {fileID: 2459597453263534125, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 2459597453263534125, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - - target: {fileID: 2459597453263534125, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 2459597453263534125, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - - target: {fileID: 2459597453263534125, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 2459597453263534125, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_SizeDelta.x value: 252 objectReference: {fileID: 0} - - target: {fileID: 2459597453263534125, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 2459597453263534125, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchoredPosition.x value: 126 objectReference: {fileID: 0} - - target: {fileID: 2459597453263534125, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 2459597453263534125, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchoredPosition.y value: -97 objectReference: {fileID: 0} - - target: {fileID: 3318402603881556472, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 3318402603881556472, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - - target: {fileID: 3318402603881556472, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 3318402603881556472, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - - target: {fileID: 3318402603881556472, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 3318402603881556472, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_SizeDelta.x value: 252 objectReference: {fileID: 0} - - target: {fileID: 3318402603881556472, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 3318402603881556472, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchoredPosition.x value: 126 objectReference: {fileID: 0} - - target: {fileID: 3318402603881556472, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 3318402603881556472, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchoredPosition.y value: -499 objectReference: {fileID: 0} - - target: {fileID: 4545177384989293878, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 4545177384989293878, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - - target: {fileID: 4545177384989293878, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 4545177384989293878, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - - target: {fileID: 4545177384989293878, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 4545177384989293878, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_SizeDelta.x value: 252 objectReference: {fileID: 0} - - target: {fileID: 4545177384989293878, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 4545177384989293878, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchoredPosition.x value: 126 objectReference: {fileID: 0} - - target: {fileID: 4545177384989293878, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 4545177384989293878, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchoredPosition.y value: -231 objectReference: {fileID: 0} - - target: {fileID: 6081796599383575975, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6081796599383575975, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - - target: {fileID: 6081796599383575975, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6081796599383575975, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - - target: {fileID: 6081796599383575975, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6081796599383575975, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_SizeDelta.x value: 252 objectReference: {fileID: 0} - - target: {fileID: 6081796599383575975, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6081796599383575975, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchoredPosition.x value: 126 objectReference: {fileID: 0} - - target: {fileID: 6081796599383575975, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6081796599383575975, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchoredPosition.y value: -566 objectReference: {fileID: 0} - - target: {fileID: 6183026901214721044, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026901214721044, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_Name value: Scroll View objectReference: {fileID: 0} - - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_Pivot.x value: 0.5 objectReference: {fileID: 0} - - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_Pivot.y value: 0.5 objectReference: {fileID: 0} - - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_RootOrder value: 2 objectReference: {fileID: 0} - - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMax.x value: 1 objectReference: {fileID: 0} - - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMin.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_SizeDelta.x value: -48 objectReference: {fileID: 0} - - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_SizeDelta.y value: -119 objectReference: {fileID: 0} - - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_LocalRotation.x value: -0 objectReference: {fileID: 0} - - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_LocalRotation.y value: -0 objectReference: {fileID: 0} - - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_LocalRotation.z value: -0 objectReference: {fileID: 0} - - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchoredPosition.y value: -35.49995 objectReference: {fileID: 0} - - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 6183026902371939695, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026902371939695, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_SizeDelta.y value: 596 objectReference: {fileID: 0} - - target: {fileID: 6183026902669923109, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026902669923109, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMax.x value: 1 objectReference: {fileID: 0} - - target: {fileID: 6183026902669923109, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026902669923109, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMax.y value: 0.9999999 objectReference: {fileID: 0} - - target: {fileID: 6183026902669923109, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026902669923109, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMin.y value: 0.6409395 objectReference: {fileID: 0} - - target: {fileID: 6371800052681497148, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6371800052681497148, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - - target: {fileID: 6371800052681497148, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6371800052681497148, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - - target: {fileID: 6371800052681497148, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6371800052681497148, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_SizeDelta.x value: 252 objectReference: {fileID: 0} - - target: {fileID: 6371800052681497148, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6371800052681497148, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchoredPosition.x value: 126 objectReference: {fileID: 0} - - target: {fileID: 6371800052681497148, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6371800052681497148, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchoredPosition.y value: -365 objectReference: {fileID: 0} - - target: {fileID: 7050254453680010381, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 7050254453680010381, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - - target: {fileID: 7050254453680010381, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 7050254453680010381, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - - target: {fileID: 7050254453680010381, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 7050254453680010381, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_SizeDelta.x value: 252 objectReference: {fileID: 0} - - target: {fileID: 7050254453680010381, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 7050254453680010381, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchoredPosition.x value: 126 objectReference: {fileID: 0} - - target: {fileID: 7050254453680010381, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 7050254453680010381, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchoredPosition.y value: -298 objectReference: {fileID: 0} - - target: {fileID: 7115703732978342057, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 7115703732978342057, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - - target: {fileID: 7115703732978342057, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 7115703732978342057, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - - target: {fileID: 7115703732978342057, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 7115703732978342057, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_SizeDelta.x value: 252 objectReference: {fileID: 0} - - target: {fileID: 7115703732978342057, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 7115703732978342057, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchoredPosition.x value: 126 objectReference: {fileID: 0} - - target: {fileID: 7115703732978342057, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 7115703732978342057, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchoredPosition.y value: -30 objectReference: {fileID: 0} - - target: {fileID: 8774576546710604735, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 8774576546710604735, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - - target: {fileID: 8774576546710604735, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 8774576546710604735, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - - target: {fileID: 8774576546710604735, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 8774576546710604735, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_SizeDelta.x value: 252 objectReference: {fileID: 0} - - target: {fileID: 8774576546710604735, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 8774576546710604735, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchoredPosition.x value: 126 objectReference: {fileID: 0} - - target: {fileID: 8774576546710604735, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 8774576546710604735, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchoredPosition.y value: -164 objectReference: {fileID: 0} m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} --- !u!224 &812076692 stripped RectTransform: - m_CorrespondingSourceObject: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + m_CorrespondingSourceObject: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} m_PrefabInstance: {fileID: 812076691} m_PrefabAsset: {fileID: 0} --- !u!1001 &820107586 @@ -3297,173 +2941,137 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - serializedVersion: 3 m_TransformParent: {fileID: 1648550613} m_Modifications: - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_Pivot.x value: 0.5 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_Pivot.y value: 0.5 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_RootOrder value: 1 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchorMax.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchorMin.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_SizeDelta.x value: 60 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_SizeDelta.y value: 60 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalRotation.x value: -0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalRotation.y value: -0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalRotation.z value: -0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596673, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596673, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_Name value: TouchPad Button 2 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size value: 1 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode value: 6 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target value: objectReference: {fileID: 1784880961} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState value: 2 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName value: set_isOn objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName value: UnityEngine.UI.Toggle, UnityEngine.UI objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_BoolArgument value: 1 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName value: UnityEngine.Object, UnityEngine objectReference: {fileID: 0} - - target: {fileID: 4455438663099779001, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438663099779001, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_Text value: 2 objectReference: {fileID: 0} m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: b0c78422845bac948a9080175e57ffff, type: 3} --- !u!224 &820107587 stripped RectTransform: - m_CorrespondingSourceObject: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + m_CorrespondingSourceObject: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} m_PrefabInstance: {fileID: 820107586} m_PrefabAsset: {fileID: 0} --- !u!1 &852312762 @@ -3498,6 +3106,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1120256391} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: -15, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} @@ -3593,6 +3202,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 745358749} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -3669,6 +3279,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 2105827454} + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} @@ -3764,6 +3375,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 246682137} + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} @@ -3845,6 +3457,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 187460343} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} @@ -3927,6 +3540,7 @@ RectTransform: - {fileID: 1930256998} - {fileID: 1643716050} m_Father: {fileID: 992345761} + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} @@ -3978,103 +3592,73 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - serializedVersion: 3 m_TransformParent: {fileID: 1129778166} m_Modifications: - - target: {fileID: 1988286665728152634, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} - propertyPath: m_PermittedDisplacementAxes - value: -1 - objectReference: {fileID: 0} - - target: {fileID: 2603633290551499573, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} - propertyPath: m_Materials.Array.data[0] - value: - objectReference: {fileID: 2100000, guid: e2fab14359f78ac44b6fb07523f664d7, type: 2} - - target: {fileID: 5268460675038366902, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} + - target: {fileID: 5268460675038366902, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} propertyPath: m_Name - value: Cube (Blue) + value: Cube 2 objectReference: {fileID: 0} - - target: {fileID: 8715892259302707255, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} + - target: {fileID: 8715892259302707255, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} propertyPath: m_LocalScale.x value: 9.5 objectReference: {fileID: 0} - - target: {fileID: 8715892259302707255, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} + - target: {fileID: 8715892259302707255, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} propertyPath: m_LocalScale.y value: 9.5 objectReference: {fileID: 0} - - target: {fileID: 8715892259302707255, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} + - target: {fileID: 8715892259302707255, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} propertyPath: m_LocalScale.z value: 9.5 objectReference: {fileID: 0} - - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} + - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} propertyPath: m_RootOrder value: 1 objectReference: {fileID: 0} - - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} + - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} propertyPath: m_LocalPosition.x value: -0.000000011395885 objectReference: {fileID: 0} - - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} + - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} + - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} propertyPath: m_LocalPosition.z value: 0.000000035072926 objectReference: {fileID: 0} - - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} + - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} propertyPath: m_LocalRotation.w value: 0.67182606 objectReference: {fileID: 0} - - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} + - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} propertyPath: m_LocalRotation.x value: -0.24036595 objectReference: {fileID: 0} - - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} + - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} propertyPath: m_LocalRotation.y value: 0.19515198 objectReference: {fileID: 0} - - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} + - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} propertyPath: m_LocalRotation.z value: -0.6728965 objectReference: {fileID: 0} - - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} + - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 116.218 objectReference: {fileID: 0} - - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} + - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: -85.48 objectReference: {fileID: 0} - - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} + - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: -18.765 objectReference: {fileID: 0} m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} --- !u!4 &938402503 stripped Transform: - m_CorrespondingSourceObject: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} + m_CorrespondingSourceObject: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} m_PrefabInstance: {fileID: 938402502} m_PrefabAsset: {fileID: 0} --- !u!1001 &975642589 @@ -4082,169 +3666,134 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - serializedVersion: 3 m_TransformParent: {fileID: 1726903308} m_Modifications: - - target: {fileID: 4779813318549682533, guid: 870459f1cb8d7b7428337cc5935feb67, - type: 3} + - target: {fileID: 4779813318549682533, guid: 870459f1cb8d7b7428337cc5935feb67, type: 3} propertyPath: m_Pivot.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4779813318549682533, guid: 870459f1cb8d7b7428337cc5935feb67, - type: 3} + - target: {fileID: 4779813318549682533, guid: 870459f1cb8d7b7428337cc5935feb67, type: 3} propertyPath: m_Pivot.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4779813318549682533, guid: 870459f1cb8d7b7428337cc5935feb67, - type: 3} + - target: {fileID: 4779813318549682533, guid: 870459f1cb8d7b7428337cc5935feb67, type: 3} propertyPath: m_RootOrder value: 9 objectReference: {fileID: 0} - - target: {fileID: 4779813318549682533, guid: 870459f1cb8d7b7428337cc5935feb67, - type: 3} + - target: {fileID: 4779813318549682533, guid: 870459f1cb8d7b7428337cc5935feb67, type: 3} propertyPath: m_AnchorMax.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4779813318549682533, guid: 870459f1cb8d7b7428337cc5935feb67, - type: 3} + - target: {fileID: 4779813318549682533, guid: 870459f1cb8d7b7428337cc5935feb67, type: 3} propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - - target: {fileID: 4779813318549682533, guid: 870459f1cb8d7b7428337cc5935feb67, - type: 3} + - target: {fileID: 4779813318549682533, guid: 870459f1cb8d7b7428337cc5935feb67, type: 3} propertyPath: m_AnchorMin.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4779813318549682533, guid: 870459f1cb8d7b7428337cc5935feb67, - type: 3} + - target: {fileID: 4779813318549682533, guid: 870459f1cb8d7b7428337cc5935feb67, type: 3} propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - - target: {fileID: 4779813318549682533, guid: 870459f1cb8d7b7428337cc5935feb67, - type: 3} + - target: {fileID: 4779813318549682533, guid: 870459f1cb8d7b7428337cc5935feb67, type: 3} propertyPath: m_SizeDelta.x value: 260 objectReference: {fileID: 0} - - target: {fileID: 4779813318549682533, guid: 870459f1cb8d7b7428337cc5935feb67, - type: 3} + - target: {fileID: 4779813318549682533, guid: 870459f1cb8d7b7428337cc5935feb67, type: 3} propertyPath: m_SizeDelta.y value: 60 objectReference: {fileID: 0} - - target: {fileID: 4779813318549682533, guid: 870459f1cb8d7b7428337cc5935feb67, - type: 3} + - target: {fileID: 4779813318549682533, guid: 870459f1cb8d7b7428337cc5935feb67, type: 3} propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4779813318549682533, guid: 870459f1cb8d7b7428337cc5935feb67, - type: 3} + - target: {fileID: 4779813318549682533, guid: 870459f1cb8d7b7428337cc5935feb67, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4779813318549682533, guid: 870459f1cb8d7b7428337cc5935feb67, - type: 3} + - target: {fileID: 4779813318549682533, guid: 870459f1cb8d7b7428337cc5935feb67, type: 3} propertyPath: m_LocalPosition.z value: 0.096935034 objectReference: {fileID: 0} - - target: {fileID: 4779813318549682533, guid: 870459f1cb8d7b7428337cc5935feb67, - type: 3} + - target: {fileID: 4779813318549682533, guid: 870459f1cb8d7b7428337cc5935feb67, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 4779813318549682533, guid: 870459f1cb8d7b7428337cc5935feb67, - type: 3} + - target: {fileID: 4779813318549682533, guid: 870459f1cb8d7b7428337cc5935feb67, type: 3} propertyPath: m_LocalRotation.x value: -0 objectReference: {fileID: 0} - - target: {fileID: 4779813318549682533, guid: 870459f1cb8d7b7428337cc5935feb67, - type: 3} + - target: {fileID: 4779813318549682533, guid: 870459f1cb8d7b7428337cc5935feb67, type: 3} propertyPath: m_LocalRotation.y value: -0 objectReference: {fileID: 0} - - target: {fileID: 4779813318549682533, guid: 870459f1cb8d7b7428337cc5935feb67, - type: 3} + - target: {fileID: 4779813318549682533, guid: 870459f1cb8d7b7428337cc5935feb67, type: 3} propertyPath: m_LocalRotation.z value: -0 objectReference: {fileID: 0} - - target: {fileID: 4779813318549682533, guid: 870459f1cb8d7b7428337cc5935feb67, - type: 3} + - target: {fileID: 4779813318549682533, guid: 870459f1cb8d7b7428337cc5935feb67, type: 3} propertyPath: m_AnchoredPosition.x value: -29.927155 objectReference: {fileID: 0} - - target: {fileID: 4779813318549682533, guid: 870459f1cb8d7b7428337cc5935feb67, - type: 3} + - target: {fileID: 4779813318549682533, guid: 870459f1cb8d7b7428337cc5935feb67, type: 3} propertyPath: m_AnchoredPosition.y value: -169.97406 objectReference: {fileID: 0} - - target: {fileID: 4779813318549682533, guid: 870459f1cb8d7b7428337cc5935feb67, - type: 3} + - target: {fileID: 4779813318549682533, guid: 870459f1cb8d7b7428337cc5935feb67, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4779813318549682533, guid: 870459f1cb8d7b7428337cc5935feb67, - type: 3} + - target: {fileID: 4779813318549682533, guid: 870459f1cb8d7b7428337cc5935feb67, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4779813318549682533, guid: 870459f1cb8d7b7428337cc5935feb67, - type: 3} + - target: {fileID: 4779813318549682533, guid: 870459f1cb8d7b7428337cc5935feb67, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4779813318549682554, guid: 870459f1cb8d7b7428337cc5935feb67, - type: 3} + - target: {fileID: 4779813318549682554, guid: 870459f1cb8d7b7428337cc5935feb67, type: 3} propertyPath: m_Name value: Dropdown objectReference: {fileID: 0} - - target: {fileID: 4779813318549682554, guid: 870459f1cb8d7b7428337cc5935feb67, - type: 3} + - target: {fileID: 4779813318549682554, guid: 870459f1cb8d7b7428337cc5935feb67, type: 3} propertyPath: m_IsActive value: 1 objectReference: {fileID: 0} - - target: {fileID: 4779813318609936197, guid: 870459f1cb8d7b7428337cc5935feb67, - type: 3} + - target: {fileID: 4779813318609936197, guid: 870459f1cb8d7b7428337cc5935feb67, type: 3} propertyPath: m_AnchorMax.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4779813318609936197, guid: 870459f1cb8d7b7428337cc5935feb67, - type: 3} + - target: {fileID: 4779813318609936197, guid: 870459f1cb8d7b7428337cc5935feb67, type: 3} propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4779813319869900771, guid: 870459f1cb8d7b7428337cc5935feb67, - type: 3} + - target: {fileID: 4779813319869900771, guid: 870459f1cb8d7b7428337cc5935feb67, type: 3} propertyPath: m_AnchorMax.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4779813319869900771, guid: 870459f1cb8d7b7428337cc5935feb67, - type: 3} + - target: {fileID: 4779813319869900771, guid: 870459f1cb8d7b7428337cc5935feb67, type: 3} propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4779813319869900771, guid: 870459f1cb8d7b7428337cc5935feb67, - type: 3} + - target: {fileID: 4779813319869900771, guid: 870459f1cb8d7b7428337cc5935feb67, type: 3} propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4779813320191324749, guid: 870459f1cb8d7b7428337cc5935feb67, - type: 3} + - target: {fileID: 4779813320191324749, guid: 870459f1cb8d7b7428337cc5935feb67, type: 3} propertyPath: m_IsActive value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 870459f1cb8d7b7428337cc5935feb67, type: 3} --- !u!224 &975642590 stripped RectTransform: - m_CorrespondingSourceObject: {fileID: 4779813318549682533, guid: 870459f1cb8d7b7428337cc5935feb67, - type: 3} + m_CorrespondingSourceObject: {fileID: 4779813318549682533, guid: 870459f1cb8d7b7428337cc5935feb67, type: 3} m_PrefabInstance: {fileID: 975642589} m_PrefabAsset: {fileID: 0} --- !u!1 &982772612 stripped GameObject: - m_CorrespondingSourceObject: {fileID: 919132149155446097, guid: 365907f61b8b39a48aab9aacd4588f45, - type: 3} + m_CorrespondingSourceObject: {fileID: 919132149155446097, guid: 365907f61b8b39a48aab9aacd4588f45, type: 3} m_PrefabInstance: {fileID: 496326443} m_PrefabAsset: {fileID: 0} --- !u!64 &982772613 @@ -4255,17 +3804,9 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 982772612} 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: 5 + serializedVersion: 4 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 8207010926609093179, guid: 365907f61b8b39a48aab9aacd4588f45, type: 3} @@ -4305,6 +3846,7 @@ RectTransform: - {fileID: 361856895} - {fileID: 929444318} m_Father: {fileID: 123424313} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} @@ -4387,9 +3929,7 @@ Canvas: m_OverrideSorting: 0 m_OverridePixelPerfect: 0 m_SortingBucketNormalizedSize: 0 - m_VertexColorAlwaysGammaSpace: 0 m_AdditionalShaderChannelsFlag: 25 - m_UpdateRectTransformForStandalone: 0 m_SortingLayerID: 0 m_SortingOrder: 1 m_TargetDisplay: 0 @@ -4398,173 +3938,137 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - serializedVersion: 3 m_TransformParent: {fileID: 1643716050} m_Modifications: - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_Pivot.x value: 0.5 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_Pivot.y value: 0.5 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_RootOrder value: 1 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchorMax.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchorMin.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_SizeDelta.x value: 60 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_SizeDelta.y value: 60 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalRotation.x value: -0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalRotation.y value: -0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalRotation.z value: -0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596673, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596673, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_Name value: TouchPad Button 8 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size value: 1 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode value: 6 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target value: objectReference: {fileID: 1495165417} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState value: 2 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName value: set_isOn objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName value: UnityEngine.UI.Toggle, UnityEngine.UI objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_BoolArgument value: 1 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName value: UnityEngine.Object, UnityEngine objectReference: {fileID: 0} - - target: {fileID: 4455438663099779001, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438663099779001, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_Text value: 8 objectReference: {fileID: 0} m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: b0c78422845bac948a9080175e57ffff, type: 3} --- !u!224 &1004500091 stripped RectTransform: - m_CorrespondingSourceObject: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + m_CorrespondingSourceObject: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} m_PrefabInstance: {fileID: 1004500090} m_PrefabAsset: {fileID: 0} --- !u!1 &1007358708 @@ -4598,6 +4102,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 246682137} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} @@ -4648,8 +4153,7 @@ CanvasRenderer: m_CullTransparentMesh: 1 --- !u!1 &1109258394 stripped GameObject: - m_CorrespondingSourceObject: {fileID: 5715416335250216647, guid: 541ed11e270c6994ca5910042c7e04da, - type: 3} + m_CorrespondingSourceObject: {fileID: 5715416335250216647, guid: 541ed11e270c6994ca5910042c7e04da, type: 3} m_PrefabInstance: {fileID: 5715416335952834191} m_PrefabAsset: {fileID: 0} --- !u!114 &1109258399 @@ -4701,6 +4205,7 @@ RectTransform: - {fileID: 1874101526} - {fileID: 1618199120} m_Father: {fileID: 1972783598} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 15, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} @@ -4783,9 +4288,7 @@ Canvas: m_OverrideSorting: 0 m_OverridePixelPerfect: 0 m_SortingBucketNormalizedSize: 0 - m_VertexColorAlwaysGammaSpace: 0 m_AdditionalShaderChannelsFlag: 25 - m_UpdateRectTransformForStandalone: 0 m_SortingLayerID: 0 m_SortingOrder: 1 m_TargetDisplay: 0 @@ -4885,9 +4388,7 @@ Canvas: m_OverrideSorting: 0 m_OverridePixelPerfect: 0 m_SortingBucketNormalizedSize: 0 - m_VertexColorAlwaysGammaSpace: 0 m_AdditionalShaderChannelsFlag: 25 - m_UpdateRectTransformForStandalone: 0 m_SortingLayerID: 0 m_SortingOrder: 1 m_TargetDisplay: 0 @@ -4907,6 +4408,7 @@ RectTransform: - {fileID: 89318627} - {fileID: 1887197406} m_Father: {fileID: 123424313} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 15, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} @@ -4936,7 +4438,6 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1129778165} - serializedVersion: 2 m_LocalRotation: {x: -0, y: -0.58778524, z: -0, w: 0.809017} m_LocalPosition: {x: 0.047972523, y: 0.773, z: 0.5700773} m_LocalScale: {x: 0.606102, y: 0.606102, z: 0.606102} @@ -4946,11 +4447,11 @@ Transform: - {fileID: 938402503} - {fileID: 1935852348} m_Father: {fileID: 1972783598} + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!4 &1159150007 stripped Transform: - m_CorrespondingSourceObject: {fileID: 6689389171845895219, guid: a5f97d75a3184ad46aef39618607e083, - type: 3} + m_CorrespondingSourceObject: {fileID: 6689389171845895219, guid: a5f97d75a3184ad46aef39618607e083, type: 3} m_PrefabInstance: {fileID: 6689389173002939780} m_PrefabAsset: {fileID: 0} --- !u!1 &1170633772 @@ -4984,6 +4485,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1351530911} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} @@ -5037,158 +4539,125 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - serializedVersion: 3 m_TransformParent: {fileID: 1726903308} m_Modifications: - - target: {fileID: 8969571751951368413, guid: 657321a07c3561043af55547ec4b0ed7, - type: 3} + - target: {fileID: 8969571751951368413, guid: 657321a07c3561043af55547ec4b0ed7, type: 3} propertyPath: m_AnchorMax.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 8969571751951368413, guid: 657321a07c3561043af55547ec4b0ed7, - type: 3} + - target: {fileID: 8969571751951368413, guid: 657321a07c3561043af55547ec4b0ed7, type: 3} propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 8969571752320557268, guid: 657321a07c3561043af55547ec4b0ed7, - type: 3} + - target: {fileID: 8969571752320557268, guid: 657321a07c3561043af55547ec4b0ed7, type: 3} propertyPath: m_AnchorMax.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 8969571752320557268, guid: 657321a07c3561043af55547ec4b0ed7, - type: 3} + - target: {fileID: 8969571752320557268, guid: 657321a07c3561043af55547ec4b0ed7, type: 3} propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 8969571752320557268, guid: 657321a07c3561043af55547ec4b0ed7, - type: 3} + - target: {fileID: 8969571752320557268, guid: 657321a07c3561043af55547ec4b0ed7, type: 3} propertyPath: m_AnchorMin.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 8969571752666551113, guid: 657321a07c3561043af55547ec4b0ed7, - type: 3} + - target: {fileID: 8969571752666551113, guid: 657321a07c3561043af55547ec4b0ed7, type: 3} propertyPath: m_Name value: MinMaxSlider objectReference: {fileID: 0} - - target: {fileID: 8969571752666551113, guid: 657321a07c3561043af55547ec4b0ed7, - type: 3} + - target: {fileID: 8969571752666551113, guid: 657321a07c3561043af55547ec4b0ed7, type: 3} propertyPath: m_IsActive value: 1 objectReference: {fileID: 0} - - target: {fileID: 8969571752666551114, guid: 657321a07c3561043af55547ec4b0ed7, - type: 3} + - target: {fileID: 8969571752666551114, guid: 657321a07c3561043af55547ec4b0ed7, type: 3} propertyPath: m_Pivot.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 8969571752666551114, guid: 657321a07c3561043af55547ec4b0ed7, - type: 3} + - target: {fileID: 8969571752666551114, guid: 657321a07c3561043af55547ec4b0ed7, type: 3} propertyPath: m_Pivot.y value: 1 objectReference: {fileID: 0} - - target: {fileID: 8969571752666551114, guid: 657321a07c3561043af55547ec4b0ed7, - type: 3} + - target: {fileID: 8969571752666551114, guid: 657321a07c3561043af55547ec4b0ed7, type: 3} propertyPath: m_RootOrder value: 4 objectReference: {fileID: 0} - - target: {fileID: 8969571752666551114, guid: 657321a07c3561043af55547ec4b0ed7, - type: 3} + - target: {fileID: 8969571752666551114, guid: 657321a07c3561043af55547ec4b0ed7, type: 3} propertyPath: m_AnchorMax.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 8969571752666551114, guid: 657321a07c3561043af55547ec4b0ed7, - type: 3} + - target: {fileID: 8969571752666551114, guid: 657321a07c3561043af55547ec4b0ed7, type: 3} propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - - target: {fileID: 8969571752666551114, guid: 657321a07c3561043af55547ec4b0ed7, - type: 3} + - target: {fileID: 8969571752666551114, guid: 657321a07c3561043af55547ec4b0ed7, type: 3} propertyPath: m_AnchorMin.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 8969571752666551114, guid: 657321a07c3561043af55547ec4b0ed7, - type: 3} + - target: {fileID: 8969571752666551114, guid: 657321a07c3561043af55547ec4b0ed7, type: 3} propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - - target: {fileID: 8969571752666551114, guid: 657321a07c3561043af55547ec4b0ed7, - type: 3} + - target: {fileID: 8969571752666551114, guid: 657321a07c3561043af55547ec4b0ed7, type: 3} propertyPath: m_SizeDelta.x value: 260 objectReference: {fileID: 0} - - target: {fileID: 8969571752666551114, guid: 657321a07c3561043af55547ec4b0ed7, - type: 3} + - target: {fileID: 8969571752666551114, guid: 657321a07c3561043af55547ec4b0ed7, type: 3} propertyPath: m_SizeDelta.y value: 60 objectReference: {fileID: 0} - - target: {fileID: 8969571752666551114, guid: 657321a07c3561043af55547ec4b0ed7, - type: 3} + - target: {fileID: 8969571752666551114, guid: 657321a07c3561043af55547ec4b0ed7, type: 3} propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 8969571752666551114, guid: 657321a07c3561043af55547ec4b0ed7, - type: 3} + - target: {fileID: 8969571752666551114, guid: 657321a07c3561043af55547ec4b0ed7, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 8969571752666551114, guid: 657321a07c3561043af55547ec4b0ed7, - type: 3} + - target: {fileID: 8969571752666551114, guid: 657321a07c3561043af55547ec4b0ed7, type: 3} propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 8969571752666551114, guid: 657321a07c3561043af55547ec4b0ed7, - type: 3} + - target: {fileID: 8969571752666551114, guid: 657321a07c3561043af55547ec4b0ed7, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 8969571752666551114, guid: 657321a07c3561043af55547ec4b0ed7, - type: 3} + - target: {fileID: 8969571752666551114, guid: 657321a07c3561043af55547ec4b0ed7, type: 3} propertyPath: m_LocalRotation.x value: -0 objectReference: {fileID: 0} - - target: {fileID: 8969571752666551114, guid: 657321a07c3561043af55547ec4b0ed7, - type: 3} + - target: {fileID: 8969571752666551114, guid: 657321a07c3561043af55547ec4b0ed7, type: 3} propertyPath: m_LocalRotation.y value: -0 objectReference: {fileID: 0} - - target: {fileID: 8969571752666551114, guid: 657321a07c3561043af55547ec4b0ed7, - type: 3} + - target: {fileID: 8969571752666551114, guid: 657321a07c3561043af55547ec4b0ed7, type: 3} propertyPath: m_LocalRotation.z value: -0 objectReference: {fileID: 0} - - target: {fileID: 8969571752666551114, guid: 657321a07c3561043af55547ec4b0ed7, - type: 3} + - target: {fileID: 8969571752666551114, guid: 657321a07c3561043af55547ec4b0ed7, type: 3} propertyPath: m_AnchoredPosition.x value: -30 objectReference: {fileID: 0} - - target: {fileID: 8969571752666551114, guid: 657321a07c3561043af55547ec4b0ed7, - type: 3} + - target: {fileID: 8969571752666551114, guid: 657321a07c3561043af55547ec4b0ed7, type: 3} propertyPath: m_AnchoredPosition.y value: 159.99994 objectReference: {fileID: 0} - - target: {fileID: 8969571752666551114, guid: 657321a07c3561043af55547ec4b0ed7, - type: 3} + - target: {fileID: 8969571752666551114, guid: 657321a07c3561043af55547ec4b0ed7, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 8969571752666551114, guid: 657321a07c3561043af55547ec4b0ed7, - type: 3} + - target: {fileID: 8969571752666551114, guid: 657321a07c3561043af55547ec4b0ed7, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 8969571752666551114, guid: 657321a07c3561043af55547ec4b0ed7, - type: 3} + - target: {fileID: 8969571752666551114, guid: 657321a07c3561043af55547ec4b0ed7, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 657321a07c3561043af55547ec4b0ed7, type: 3} --- !u!224 &1189763046 stripped RectTransform: - m_CorrespondingSourceObject: {fileID: 8969571752666551114, guid: 657321a07c3561043af55547ec4b0ed7, - type: 3} + m_CorrespondingSourceObject: {fileID: 8969571752666551114, guid: 657321a07c3561043af55547ec4b0ed7, type: 3} m_PrefabInstance: {fileID: 1189763045} m_PrefabAsset: {fileID: 0} --- !u!1 &1260218105 @@ -5215,13 +4684,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1260218105} - serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0.2, z: -0.15799998} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1434975003} + m_RootOrder: 7 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &1260218107 MonoBehaviour: @@ -5273,6 +4742,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 2105827454} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: -15, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} @@ -5352,6 +4822,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 745358749} + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -5427,6 +4898,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1726903308} + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} @@ -5473,9 +4945,8 @@ CanvasRenderer: m_CullTransparentMesh: 1 --- !u!4 &1337110718 stripped Transform: - m_CorrespondingSourceObject: {fileID: 7990873191187716717, guid: 5eccbf4be2c00e94689ee8062e4e7276, - type: 3} - m_PrefabInstance: {fileID: 3113582726696116334} + m_CorrespondingSourceObject: {fileID: 657184242161839408, guid: d6878e1999eb4b44a9f5a263af86c185, type: 3} + m_PrefabInstance: {fileID: 5534409079552104243} m_PrefabAsset: {fileID: 0} --- !u!1 &1337396800 GameObject: @@ -5500,7 +4971,6 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1337396800} - serializedVersion: 2 m_LocalRotation: {x: 0.000000026041338, y: 0.5877853, z: 0.000000016295347, w: 0.80901706} m_LocalPosition: {x: -0.000000082124764, y: 0.00000011920929, z: -0.2500001} m_LocalScale: {x: 0.9999999, y: 1, z: 0.9999999} @@ -5509,6 +4979,7 @@ Transform: - {fileID: 2105799744} - {fileID: 547215373} m_Father: {fileID: 1434975003} + m_RootOrder: 6 m_LocalEulerAnglesHint: {x: 0, y: 72, z: 0} --- !u!1 &1351530910 GameObject: @@ -5542,6 +5013,7 @@ RectTransform: m_Children: - {fileID: 1170633773} m_Father: {fileID: 1576716364} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: -75, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} @@ -5588,16 +5060,13 @@ Canvas: m_OverrideSorting: 0 m_OverridePixelPerfect: 0 m_SortingBucketNormalizedSize: 0 - m_VertexColorAlwaysGammaSpace: 0 m_AdditionalShaderChannelsFlag: 25 - m_UpdateRectTransformForStandalone: 0 m_SortingLayerID: 0 m_SortingOrder: 1 m_TargetDisplay: 0 --- !u!114 &1359436870 stripped MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 5715416335971100667, guid: 541ed11e270c6994ca5910042c7e04da, - type: 3} + m_CorrespondingSourceObject: {fileID: 5715416335971100667, guid: 541ed11e270c6994ca5910042c7e04da, type: 3} m_PrefabInstance: {fileID: 5715416335952834191} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 0} @@ -5637,6 +5106,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1943824117} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 1, y: 1} @@ -5708,7 +5178,6 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1434975002} - serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0.15799998} m_LocalScale: {x: 1, y: 1, z: 1} @@ -5723,6 +5192,7 @@ Transform: - {fileID: 1337396801} - {fileID: 1260218106} m_Father: {fileID: 0} + m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1459892944 GameObject: @@ -5757,6 +5227,7 @@ RectTransform: - {fileID: 522548468} - {fileID: 809110996} m_Father: {fileID: 361856895} + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -5791,8 +5262,7 @@ MonoBehaviour: m_ReverseArrangement: 0 --- !u!114 &1495165417 stripped MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 7452232763456472641, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + m_CorrespondingSourceObject: {fileID: 7452232763456472641, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} m_PrefabInstance: {fileID: 6183026901525796732} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 0} @@ -5806,173 +5276,137 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - serializedVersion: 3 m_TransformParent: {fileID: 1930256998} m_Modifications: - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_Pivot.x value: 0.5 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_Pivot.y value: 0.5 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_RootOrder value: 1 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchorMax.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchorMin.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_SizeDelta.x value: 60 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_SizeDelta.y value: 60 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalRotation.x value: -0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalRotation.y value: -0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalRotation.z value: -0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596673, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596673, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_Name value: TouchPad Button 5 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size value: 1 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode value: 6 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target value: objectReference: {fileID: 1607142550} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState value: 2 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName value: set_isOn objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName value: UnityEngine.UI.Toggle, UnityEngine.UI objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_BoolArgument value: 1 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName value: UnityEngine.Object, UnityEngine objectReference: {fileID: 0} - - target: {fileID: 4455438663099779001, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438663099779001, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_Text value: 5 objectReference: {fileID: 0} m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: b0c78422845bac948a9080175e57ffff, type: 3} --- !u!224 &1542318348 stripped RectTransform: - m_CorrespondingSourceObject: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + m_CorrespondingSourceObject: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} m_PrefabInstance: {fileID: 1542318347} m_PrefabAsset: {fileID: 0} --- !u!1 &1576716363 @@ -5998,7 +5432,6 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1576716363} - serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -0.6, y: 0.75, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} @@ -6008,11 +5441,11 @@ Transform: - {fileID: 1351530911} - {fileID: 1985586552} m_Father: {fileID: 1434975003} + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &1607142550 stripped MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 2932259739682790196, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + m_CorrespondingSourceObject: {fileID: 2932259739682790196, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} m_PrefabInstance: {fileID: 6183026901525796732} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 0} @@ -6052,6 +5485,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1109639964} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: -15, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} @@ -6131,6 +5565,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1943824117} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 1, y: 1} @@ -6177,8 +5612,7 @@ CanvasRenderer: m_CullTransparentMesh: 0 --- !u!114 &1633829042 stripped MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 1228319155873904005, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + m_CorrespondingSourceObject: {fileID: 1228319155873904005, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} m_PrefabInstance: {fileID: 6183026901525796732} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 0} @@ -6192,98 +5626,77 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - serializedVersion: 3 m_TransformParent: {fileID: 1985586552} m_Modifications: - - target: {fileID: -8679921383154817045, guid: 714a27c3372b8074d8370e2bc0cecf56, - type: 3} + - target: {fileID: -8679921383154817045, guid: 714a27c3372b8074d8370e2bc0cecf56, type: 3} propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 714a27c3372b8074d8370e2bc0cecf56, - type: 3} + - target: {fileID: -8679921383154817045, guid: 714a27c3372b8074d8370e2bc0cecf56, type: 3} propertyPath: m_LocalScale.x value: 0.5 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 714a27c3372b8074d8370e2bc0cecf56, - type: 3} + - target: {fileID: -8679921383154817045, guid: 714a27c3372b8074d8370e2bc0cecf56, type: 3} propertyPath: m_LocalScale.y value: 0.5 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 714a27c3372b8074d8370e2bc0cecf56, - type: 3} + - target: {fileID: -8679921383154817045, guid: 714a27c3372b8074d8370e2bc0cecf56, type: 3} propertyPath: m_LocalScale.z value: 0.5 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 714a27c3372b8074d8370e2bc0cecf56, - type: 3} + - target: {fileID: -8679921383154817045, guid: 714a27c3372b8074d8370e2bc0cecf56, type: 3} propertyPath: m_LocalPosition.x value: 0.004 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 714a27c3372b8074d8370e2bc0cecf56, - type: 3} + - target: {fileID: -8679921383154817045, guid: 714a27c3372b8074d8370e2bc0cecf56, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 714a27c3372b8074d8370e2bc0cecf56, - type: 3} + - target: {fileID: -8679921383154817045, guid: 714a27c3372b8074d8370e2bc0cecf56, type: 3} propertyPath: m_LocalPosition.z value: 0.005 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 714a27c3372b8074d8370e2bc0cecf56, - type: 3} + - target: {fileID: -8679921383154817045, guid: 714a27c3372b8074d8370e2bc0cecf56, type: 3} propertyPath: m_LocalRotation.w value: 0.9999985 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 714a27c3372b8074d8370e2bc0cecf56, - type: 3} + - target: {fileID: -8679921383154817045, guid: 714a27c3372b8074d8370e2bc0cecf56, type: 3} propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 714a27c3372b8074d8370e2bc0cecf56, - type: 3} + - target: {fileID: -8679921383154817045, guid: 714a27c3372b8074d8370e2bc0cecf56, type: 3} propertyPath: m_LocalRotation.y value: 0.0017452955 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 714a27c3372b8074d8370e2bc0cecf56, - type: 3} + - target: {fileID: -8679921383154817045, guid: 714a27c3372b8074d8370e2bc0cecf56, type: 3} propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 714a27c3372b8074d8370e2bc0cecf56, - type: 3} + - target: {fileID: -8679921383154817045, guid: 714a27c3372b8074d8370e2bc0cecf56, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 714a27c3372b8074d8370e2bc0cecf56, - type: 3} + - target: {fileID: -8679921383154817045, guid: 714a27c3372b8074d8370e2bc0cecf56, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0.2 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 714a27c3372b8074d8370e2bc0cecf56, - type: 3} + - target: {fileID: -8679921383154817045, guid: 714a27c3372b8074d8370e2bc0cecf56, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 714a27c3372b8074d8370e2bc0cecf56, - type: 3} + - target: {fileID: -8679921383154817045, guid: 714a27c3372b8074d8370e2bc0cecf56, type: 3} propertyPath: m_ConstrainProportionsScale value: 1 objectReference: {fileID: 0} - - target: {fileID: 919132149155446097, guid: 714a27c3372b8074d8370e2bc0cecf56, - type: 3} + - target: {fileID: 919132149155446097, guid: 714a27c3372b8074d8370e2bc0cecf56, type: 3} propertyPath: m_Name value: Chess Board Square objectReference: {fileID: 0} m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 714a27c3372b8074d8370e2bc0cecf56, type: 3} --- !u!4 &1636806582 stripped Transform: - m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: 714a27c3372b8074d8370e2bc0cecf56, - type: 3} + m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: 714a27c3372b8074d8370e2bc0cecf56, type: 3} m_PrefabInstance: {fileID: 1636806581} m_PrefabAsset: {fileID: 0} --- !u!1 &1643716049 @@ -6319,6 +5732,7 @@ RectTransform: - {fileID: 1004500091} - {fileID: 331857616} m_Father: {fileID: 929444318} + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -6384,6 +5798,7 @@ RectTransform: - {fileID: 820107587} - {fileID: 2069439979} m_Father: {fileID: 929444318} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -6418,8 +5833,7 @@ MonoBehaviour: m_ReverseArrangement: 0 --- !u!4 &1648686084 stripped Transform: - m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: 171affcd2d7ddf545ae966acd2de57c2, - type: 3} + m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: 171affcd2d7ddf545ae966acd2de57c2, type: 3} m_PrefabInstance: {fileID: 691032629} m_PrefabAsset: {fileID: 0} --- !u!1 &1675184741 @@ -6453,6 +5867,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1459892945} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -6529,6 +5944,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 2105827454} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: -15, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} @@ -6632,6 +6048,7 @@ RectTransform: - {fileID: 702756937} - {fileID: 975642590} m_Father: {fileID: 2105827454} + m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -6669,6 +6086,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 992345761} + 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} @@ -6744,6 +6162,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1961794668} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} @@ -6794,14 +6213,12 @@ CanvasRenderer: m_CullTransparentMesh: 1 --- !u!4 &1765827126 stripped Transform: - m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: 365907f61b8b39a48aab9aacd4588f45, - type: 3} + m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: 365907f61b8b39a48aab9aacd4588f45, type: 3} m_PrefabInstance: {fileID: 496326443} m_PrefabAsset: {fileID: 0} --- !u!114 &1784880961 stripped MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 7729528788630165396, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + m_CorrespondingSourceObject: {fileID: 7729528788630165396, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} m_PrefabInstance: {fileID: 6183026901525796732} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 0} @@ -6842,6 +6259,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1109639964} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: -15, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} @@ -6908,8 +6326,7 @@ CanvasRenderer: m_CullTransparentMesh: 0 --- !u!114 &1879067437 stripped MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 8535804950626849423, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + m_CorrespondingSourceObject: {fileID: 8535804950626849423, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} m_PrefabInstance: {fileID: 6183026901525796732} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 0} @@ -6953,6 +6370,7 @@ RectTransform: - {fileID: 1895556602} - {fileID: 364340073} m_Father: {fileID: 1120256391} + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} @@ -7048,6 +6466,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1887197406} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 1, y: 1} @@ -7125,6 +6544,7 @@ RectTransform: - {fileID: 1542318348} - {fileID: 170632161} m_Father: {fileID: 929444318} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -7162,108 +6582,77 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - serializedVersion: 3 m_TransformParent: {fileID: 1129778166} m_Modifications: - - target: {fileID: 1988286665728152634, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} - propertyPath: m_PermittedDisplacementAxes - value: -1 - objectReference: {fileID: 0} - - target: {fileID: 2603633290551499573, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} - propertyPath: m_Materials.Array.data[0] - value: - objectReference: {fileID: 2100000, guid: a05114129e33f6a4ebf59935affa0661, type: 2} - - target: {fileID: 5268460675038366902, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} + - target: {fileID: 5268460675038366902, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} propertyPath: m_Name - value: Cube (Yellow) + value: Cube 3 objectReference: {fileID: 0} - - target: {fileID: 8715892259302707255, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} + - target: {fileID: 8715892259302707255, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} propertyPath: m_LocalScale.x value: 13.5 objectReference: {fileID: 0} - - target: {fileID: 8715892259302707255, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} + - target: {fileID: 8715892259302707255, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} propertyPath: m_LocalScale.y value: 13.5 objectReference: {fileID: 0} - - target: {fileID: 8715892259302707255, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} + - target: {fileID: 8715892259302707255, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} propertyPath: m_LocalScale.z value: 13.5 objectReference: {fileID: 0} - - target: {fileID: 8715892259302707255, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} + - target: {fileID: 8715892259302707255, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} propertyPath: m_ConstrainProportionsScale value: 1 objectReference: {fileID: 0} - - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} + - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} propertyPath: m_RootOrder value: 2 objectReference: {fileID: 0} - - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} + - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} propertyPath: m_LocalPosition.x value: 0.080486774 objectReference: {fileID: 0} - - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} + - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} propertyPath: m_LocalPosition.y value: 0.105406225 objectReference: {fileID: 0} - - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} + - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} propertyPath: m_LocalPosition.z value: 0.05591418 objectReference: {fileID: 0} - - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} + - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} propertyPath: m_LocalRotation.w value: 0.43192205 objectReference: {fileID: 0} - - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} + - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} propertyPath: m_LocalRotation.x value: 0.45761725 objectReference: {fileID: 0} - - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} + - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} propertyPath: m_LocalRotation.y value: 0.75258726 objectReference: {fileID: 0} - - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} + - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} propertyPath: m_LocalRotation.z value: 0.19401608 objectReference: {fileID: 0} - - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} + - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} + - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 18.713 objectReference: {fileID: 0} - - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} + - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} --- !u!4 &1935852348 stripped Transform: - m_CorrespondingSourceObject: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} + m_CorrespondingSourceObject: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} m_PrefabInstance: {fileID: 1935852347} m_PrefabAsset: {fileID: 0} --- !u!1 &1943824116 @@ -7301,6 +6690,7 @@ RectTransform: - {fileID: 1633600915} - {fileID: 812076692} m_Father: {fileID: 187460343} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} @@ -7367,15 +6757,8 @@ CanvasRenderer: m_CullTransparentMesh: 0 --- !u!20 &1948693200 stripped Camera: - m_CorrespondingSourceObject: {fileID: 7990873191231833673, guid: 5eccbf4be2c00e94689ee8062e4e7276, - type: 3} - m_PrefabInstance: {fileID: 3113582726696116334} - m_PrefabAsset: {fileID: 0} ---- !u!4 &1949637319 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 5030734267259534325, guid: e2698219e3231e94c8765d49b9dd5cff, - type: 3} - m_PrefabInstance: {fileID: 611616339} + m_CorrespondingSourceObject: {fileID: 657184242118504724, guid: d6878e1999eb4b44a9f5a263af86c185, type: 3} + m_PrefabInstance: {fileID: 5534409079552104243} m_PrefabAsset: {fileID: 0} --- !u!1 &1961794667 GameObject: @@ -7409,6 +6792,7 @@ RectTransform: m_Children: - {fileID: 1746021765} m_Father: {fileID: 797091100} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} @@ -7455,9 +6839,7 @@ Canvas: m_OverrideSorting: 0 m_OverridePixelPerfect: 0 m_SortingBucketNormalizedSize: 0 - m_VertexColorAlwaysGammaSpace: 0 m_AdditionalShaderChannelsFlag: 25 - m_UpdateRectTransformForStandalone: 0 m_SortingLayerID: 0 m_SortingOrder: 1 m_TargetDisplay: 0 @@ -7484,7 +6866,6 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1972783597} - serializedVersion: 2 m_LocalRotation: {x: -0, y: 0.309017, z: -0, w: 0.95105654} m_LocalPosition: {x: 0, y: 0, z: -0.25} m_LocalScale: {x: 1, y: 1, z: 1} @@ -7495,6 +6876,7 @@ Transform: - {fileID: 5006512735865308539} - {fileID: 1129778166} m_Father: {fileID: 1434975003} + m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 36, z: 0} --- !u!1 &1985586551 GameObject: @@ -7519,7 +6901,6 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1985586551} - serializedVersion: 2 m_LocalRotation: {x: -0, y: 0.13052616, z: -0, w: 0.9914449} m_LocalPosition: {x: 0.0379, y: -0.008099973, z: -0.0849} m_LocalScale: {x: 1, y: 1, z: 1} @@ -7529,6 +6910,7 @@ Transform: - {fileID: 1159150007} - {fileID: 5765833378047162190} m_Father: {fileID: 1576716364} + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 15, z: 0} --- !u!1 &2011190208 GameObject: @@ -7563,6 +6945,7 @@ RectTransform: - {fileID: 375196259} - {fileID: 293575450} m_Father: {fileID: 361856895} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -7626,6 +7009,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1726903308} + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} @@ -7701,6 +7085,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 246682137} + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} @@ -7753,8 +7138,7 @@ CanvasRenderer: m_CullTransparentMesh: 1 --- !u!4 &2063322578 stripped Transform: - m_CorrespondingSourceObject: {fileID: 2130331530761912220, guid: d661f645c81f29b4aa596207971ae441, - type: 3} + m_CorrespondingSourceObject: {fileID: 2130331530761912220, guid: d661f645c81f29b4aa596207971ae441, type: 3} m_PrefabInstance: {fileID: 2130331532795802190} m_PrefabAsset: {fileID: 0} --- !u!1001 &2069439978 @@ -7762,173 +7146,137 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - serializedVersion: 3 m_TransformParent: {fileID: 1648550613} m_Modifications: - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_Pivot.x value: 0.5 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_Pivot.y value: 0.5 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_RootOrder value: 2 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchorMax.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchorMin.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_SizeDelta.x value: 60 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_SizeDelta.y value: 60 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalRotation.x value: -0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalRotation.y value: -0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalRotation.z value: -0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596673, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596673, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_Name value: TouchPad Button 3 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size value: 1 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode value: 6 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target value: objectReference: {fileID: 501676794} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState value: 2 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName value: set_isOn objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName value: UnityEngine.UI.Toggle, UnityEngine.UI objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_BoolArgument value: 1 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName value: UnityEngine.Object, UnityEngine objectReference: {fileID: 0} - - target: {fileID: 4455438663099779001, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438663099779001, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_Text value: 3 objectReference: {fileID: 0} m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: b0c78422845bac948a9080175e57ffff, type: 3} --- !u!224 &2069439979 stripped RectTransform: - m_CorrespondingSourceObject: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + m_CorrespondingSourceObject: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} m_PrefabInstance: {fileID: 2069439978} m_PrefabAsset: {fileID: 0} --- !u!1 &2105799743 @@ -7967,6 +7315,7 @@ RectTransform: - {fileID: 323906123} - {fileID: 9821839} m_Father: {fileID: 1337396801} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 15, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} @@ -8049,9 +7398,7 @@ Canvas: m_OverrideSorting: 0 m_OverridePixelPerfect: 0 m_SortingBucketNormalizedSize: 0 - m_VertexColorAlwaysGammaSpace: 0 m_AdditionalShaderChannelsFlag: 25 - m_UpdateRectTransformForStandalone: 0 m_SortingLayerID: 0 m_SortingOrder: 1 m_TargetDisplay: 0 @@ -8093,6 +7440,7 @@ RectTransform: - {fileID: 246682137} - {fileID: 1726903308} m_Father: {fileID: 797091100} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 15, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} @@ -8175,9 +7523,7 @@ Canvas: m_OverrideSorting: 0 m_OverridePixelPerfect: 0 m_SortingBucketNormalizedSize: 0 - m_VertexColorAlwaysGammaSpace: 0 m_AdditionalShaderChannelsFlag: 25 - m_UpdateRectTransformForStandalone: 0 m_SortingLayerID: 0 m_SortingOrder: 1 m_TargetDisplay: 0 @@ -8186,173 +7532,137 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - serializedVersion: 3 m_TransformParent: {fileID: 1930256998} m_Modifications: - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_Pivot.x value: 0.5 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_Pivot.y value: 0.5 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchorMax.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchorMin.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_SizeDelta.x value: 60 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_SizeDelta.y value: 60 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalRotation.x value: -0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalRotation.y value: -0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalRotation.z value: -0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596673, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596673, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_Name value: TouchPad Button 4 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size value: 1 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode value: 6 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target value: objectReference: {fileID: 1879067437} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState value: 2 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName value: set_isOn objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName value: UnityEngine.UI.Toggle, UnityEngine.UI objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_BoolArgument value: 1 objectReference: {fileID: 0} - - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438662752596683, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName value: UnityEngine.Object, UnityEngine objectReference: {fileID: 0} - - target: {fileID: 4455438663099779001, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + - target: {fileID: 4455438663099779001, guid: b0c78422845bac948a9080175e57ffff, type: 3} propertyPath: m_Text value: 4 objectReference: {fileID: 0} m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: b0c78422845bac948a9080175e57ffff, type: 3} --- !u!224 &2113631881 stripped RectTransform: - m_CorrespondingSourceObject: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, - type: 3} + m_CorrespondingSourceObject: {fileID: 4455438662752596672, guid: b0c78422845bac948a9080175e57ffff, type: 3} m_PrefabInstance: {fileID: 2113631880} m_PrefabAsset: {fileID: 0} --- !u!1001 &65600831110779464 @@ -8360,471 +7670,368 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - serializedVersion: 3 m_TransformParent: {fileID: 1972783598} m_Modifications: - - target: {fileID: 5013556786019211059, guid: d56cf1aacbea4704cac4d7983df1a0ad, - type: 3} + - target: {fileID: 5013556786019211059, guid: d56cf1aacbea4704cac4d7983df1a0ad, type: 3} propertyPath: m_RootOrder value: 2 objectReference: {fileID: 0} - - target: {fileID: 5013556786019211059, guid: d56cf1aacbea4704cac4d7983df1a0ad, - type: 3} + - target: {fileID: 5013556786019211059, guid: d56cf1aacbea4704cac4d7983df1a0ad, type: 3} propertyPath: m_LocalPosition.x value: -0.091 objectReference: {fileID: 0} - - target: {fileID: 5013556786019211059, guid: d56cf1aacbea4704cac4d7983df1a0ad, - type: 3} + - target: {fileID: 5013556786019211059, guid: d56cf1aacbea4704cac4d7983df1a0ad, type: 3} propertyPath: m_LocalPosition.y value: 1.091 objectReference: {fileID: 0} - - target: {fileID: 5013556786019211059, guid: d56cf1aacbea4704cac4d7983df1a0ad, - type: 3} + - target: {fileID: 5013556786019211059, guid: d56cf1aacbea4704cac4d7983df1a0ad, type: 3} propertyPath: m_LocalPosition.z value: 0.643 objectReference: {fileID: 0} - - target: {fileID: 5013556786019211059, guid: d56cf1aacbea4704cac4d7983df1a0ad, - type: 3} + - target: {fileID: 5013556786019211059, guid: d56cf1aacbea4704cac4d7983df1a0ad, type: 3} propertyPath: m_LocalRotation.w value: 0.70105743 objectReference: {fileID: 0} - - target: {fileID: 5013556786019211059, guid: d56cf1aacbea4704cac4d7983df1a0ad, - type: 3} + - target: {fileID: 5013556786019211059, guid: d56cf1aacbea4704cac4d7983df1a0ad, type: 3} propertyPath: m_LocalRotation.x value: 0.09229594 objectReference: {fileID: 0} - - target: {fileID: 5013556786019211059, guid: d56cf1aacbea4704cac4d7983df1a0ad, - type: 3} + - target: {fileID: 5013556786019211059, guid: d56cf1aacbea4704cac4d7983df1a0ad, type: 3} propertyPath: m_LocalRotation.y value: -0.09229592 objectReference: {fileID: 0} - - target: {fileID: 5013556786019211059, guid: d56cf1aacbea4704cac4d7983df1a0ad, - type: 3} + - target: {fileID: 5013556786019211059, guid: d56cf1aacbea4704cac4d7983df1a0ad, type: 3} propertyPath: m_LocalRotation.z value: 0.70105743 objectReference: {fileID: 0} - - target: {fileID: 5013556786019211059, guid: d56cf1aacbea4704cac4d7983df1a0ad, - type: 3} + - target: {fileID: 5013556786019211059, guid: d56cf1aacbea4704cac4d7983df1a0ad, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 5013556786019211059, guid: d56cf1aacbea4704cac4d7983df1a0ad, - type: 3} + - target: {fileID: 5013556786019211059, guid: d56cf1aacbea4704cac4d7983df1a0ad, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 5013556786019211059, guid: d56cf1aacbea4704cac4d7983df1a0ad, - type: 3} + - target: {fileID: 5013556786019211059, guid: d56cf1aacbea4704cac4d7983df1a0ad, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 90 objectReference: {fileID: 0} - - target: {fileID: 8343167407413159200, guid: d56cf1aacbea4704cac4d7983df1a0ad, - type: 3} + - target: {fileID: 8343167407413159200, guid: d56cf1aacbea4704cac4d7983df1a0ad, type: 3} propertyPath: m_Name value: Arrow objectReference: {fileID: 0} m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: d56cf1aacbea4704cac4d7983df1a0ad, type: 3} --- !u!1001 &195190421004440613 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - serializedVersion: 3 m_TransformParent: {fileID: 1726903308} m_Modifications: - - target: {fileID: 195190420563360905, guid: 6a448845c7017044e8a9f3d711cfe825, - type: 3} + - target: {fileID: 195190420563360905, guid: 6a448845c7017044e8a9f3d711cfe825, type: 3} propertyPath: onValueChanged.m_PersistentCalls.m_Calls.Array.size value: 0 objectReference: {fileID: 0} - - target: {fileID: 195190420563360910, guid: 6a448845c7017044e8a9f3d711cfe825, - type: 3} + - target: {fileID: 195190420563360910, guid: 6a448845c7017044e8a9f3d711cfe825, type: 3} propertyPath: m_Pivot.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 195190420563360910, guid: 6a448845c7017044e8a9f3d711cfe825, - type: 3} + - target: {fileID: 195190420563360910, guid: 6a448845c7017044e8a9f3d711cfe825, type: 3} propertyPath: m_Pivot.y value: 1 objectReference: {fileID: 0} - - target: {fileID: 195190420563360910, guid: 6a448845c7017044e8a9f3d711cfe825, - type: 3} + - target: {fileID: 195190420563360910, guid: 6a448845c7017044e8a9f3d711cfe825, type: 3} propertyPath: m_RootOrder value: 7 objectReference: {fileID: 0} - - target: {fileID: 195190420563360910, guid: 6a448845c7017044e8a9f3d711cfe825, - type: 3} + - target: {fileID: 195190420563360910, guid: 6a448845c7017044e8a9f3d711cfe825, type: 3} propertyPath: m_AnchorMax.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 195190420563360910, guid: 6a448845c7017044e8a9f3d711cfe825, - type: 3} + - target: {fileID: 195190420563360910, guid: 6a448845c7017044e8a9f3d711cfe825, type: 3} propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - - target: {fileID: 195190420563360910, guid: 6a448845c7017044e8a9f3d711cfe825, - type: 3} + - target: {fileID: 195190420563360910, guid: 6a448845c7017044e8a9f3d711cfe825, type: 3} propertyPath: m_AnchorMin.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 195190420563360910, guid: 6a448845c7017044e8a9f3d711cfe825, - type: 3} + - target: {fileID: 195190420563360910, guid: 6a448845c7017044e8a9f3d711cfe825, type: 3} propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - - target: {fileID: 195190420563360910, guid: 6a448845c7017044e8a9f3d711cfe825, - type: 3} + - target: {fileID: 195190420563360910, guid: 6a448845c7017044e8a9f3d711cfe825, type: 3} propertyPath: m_SizeDelta.x value: 170 objectReference: {fileID: 0} - - target: {fileID: 195190420563360910, guid: 6a448845c7017044e8a9f3d711cfe825, - type: 3} + - target: {fileID: 195190420563360910, guid: 6a448845c7017044e8a9f3d711cfe825, type: 3} propertyPath: m_SizeDelta.y value: 60 objectReference: {fileID: 0} - - target: {fileID: 195190420563360910, guid: 6a448845c7017044e8a9f3d711cfe825, - type: 3} + - target: {fileID: 195190420563360910, guid: 6a448845c7017044e8a9f3d711cfe825, type: 3} propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 195190420563360910, guid: 6a448845c7017044e8a9f3d711cfe825, - type: 3} + - target: {fileID: 195190420563360910, guid: 6a448845c7017044e8a9f3d711cfe825, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 195190420563360910, guid: 6a448845c7017044e8a9f3d711cfe825, - type: 3} + - target: {fileID: 195190420563360910, guid: 6a448845c7017044e8a9f3d711cfe825, type: 3} propertyPath: m_LocalPosition.z value: 20 objectReference: {fileID: 0} - - target: {fileID: 195190420563360910, guid: 6a448845c7017044e8a9f3d711cfe825, - type: 3} + - target: {fileID: 195190420563360910, guid: 6a448845c7017044e8a9f3d711cfe825, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 195190420563360910, guid: 6a448845c7017044e8a9f3d711cfe825, - type: 3} + - target: {fileID: 195190420563360910, guid: 6a448845c7017044e8a9f3d711cfe825, type: 3} propertyPath: m_LocalRotation.x value: -0 objectReference: {fileID: 0} - - target: {fileID: 195190420563360910, guid: 6a448845c7017044e8a9f3d711cfe825, - type: 3} + - target: {fileID: 195190420563360910, guid: 6a448845c7017044e8a9f3d711cfe825, type: 3} propertyPath: m_LocalRotation.y value: -0 objectReference: {fileID: 0} - - target: {fileID: 195190420563360910, guid: 6a448845c7017044e8a9f3d711cfe825, - type: 3} + - target: {fileID: 195190420563360910, guid: 6a448845c7017044e8a9f3d711cfe825, type: 3} propertyPath: m_LocalRotation.z value: -0 objectReference: {fileID: 0} - - target: {fileID: 195190420563360910, guid: 6a448845c7017044e8a9f3d711cfe825, - type: 3} + - target: {fileID: 195190420563360910, guid: 6a448845c7017044e8a9f3d711cfe825, type: 3} propertyPath: m_AnchoredPosition.x value: -29.99997 objectReference: {fileID: 0} - - target: {fileID: 195190420563360910, guid: 6a448845c7017044e8a9f3d711cfe825, - type: 3} + - target: {fileID: 195190420563360910, guid: 6a448845c7017044e8a9f3d711cfe825, type: 3} propertyPath: m_AnchoredPosition.y value: -19.99998 objectReference: {fileID: 0} - - target: {fileID: 195190420563360910, guid: 6a448845c7017044e8a9f3d711cfe825, - type: 3} + - target: {fileID: 195190420563360910, guid: 6a448845c7017044e8a9f3d711cfe825, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 195190420563360910, guid: 6a448845c7017044e8a9f3d711cfe825, - type: 3} + - target: {fileID: 195190420563360910, guid: 6a448845c7017044e8a9f3d711cfe825, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 195190420563360910, guid: 6a448845c7017044e8a9f3d711cfe825, - type: 3} + - target: {fileID: 195190420563360910, guid: 6a448845c7017044e8a9f3d711cfe825, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 195190420563360911, guid: 6a448845c7017044e8a9f3d711cfe825, - type: 3} + - target: {fileID: 195190420563360911, guid: 6a448845c7017044e8a9f3d711cfe825, type: 3} propertyPath: m_Name value: Text Toggle objectReference: {fileID: 0} - - target: {fileID: 195190420563360911, guid: 6a448845c7017044e8a9f3d711cfe825, - type: 3} + - target: {fileID: 195190420563360911, guid: 6a448845c7017044e8a9f3d711cfe825, type: 3} propertyPath: m_IsActive value: 1 objectReference: {fileID: 0} m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: - - targetCorrespondingSourceObject: {fileID: 195190420563360911, guid: 6a448845c7017044e8a9f3d711cfe825, - type: 3} - insertIndex: -1 - addedObject: {fileID: 448506032} m_SourcePrefab: {fileID: 100100000, guid: 6a448845c7017044e8a9f3d711cfe825, type: 3} --- !u!1001 &1004097911546261873 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - serializedVersion: 3 m_TransformParent: {fileID: 1726903308} m_Modifications: - - target: {fileID: 1004097911450439916, guid: 56686f82f64b0af4688a89676403a500, - type: 3} + - target: {fileID: 1004097911450439916, guid: 56686f82f64b0af4688a89676403a500, type: 3} propertyPath: m_Pivot.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 1004097911450439916, guid: 56686f82f64b0af4688a89676403a500, - type: 3} + - target: {fileID: 1004097911450439916, guid: 56686f82f64b0af4688a89676403a500, type: 3} propertyPath: m_Pivot.y value: 1 objectReference: {fileID: 0} - - target: {fileID: 1004097911450439916, guid: 56686f82f64b0af4688a89676403a500, - type: 3} + - target: {fileID: 1004097911450439916, guid: 56686f82f64b0af4688a89676403a500, type: 3} propertyPath: m_RootOrder value: 6 objectReference: {fileID: 0} - - target: {fileID: 1004097911450439916, guid: 56686f82f64b0af4688a89676403a500, - type: 3} + - target: {fileID: 1004097911450439916, guid: 56686f82f64b0af4688a89676403a500, type: 3} propertyPath: m_AnchorMax.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 1004097911450439916, guid: 56686f82f64b0af4688a89676403a500, - type: 3} + - target: {fileID: 1004097911450439916, guid: 56686f82f64b0af4688a89676403a500, type: 3} propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - - target: {fileID: 1004097911450439916, guid: 56686f82f64b0af4688a89676403a500, - type: 3} + - target: {fileID: 1004097911450439916, guid: 56686f82f64b0af4688a89676403a500, type: 3} propertyPath: m_AnchorMin.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 1004097911450439916, guid: 56686f82f64b0af4688a89676403a500, - type: 3} + - target: {fileID: 1004097911450439916, guid: 56686f82f64b0af4688a89676403a500, type: 3} propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - - target: {fileID: 1004097911450439916, guid: 56686f82f64b0af4688a89676403a500, - type: 3} + - target: {fileID: 1004097911450439916, guid: 56686f82f64b0af4688a89676403a500, type: 3} propertyPath: m_SizeDelta.x value: 60 objectReference: {fileID: 0} - - target: {fileID: 1004097911450439916, guid: 56686f82f64b0af4688a89676403a500, - type: 3} + - target: {fileID: 1004097911450439916, guid: 56686f82f64b0af4688a89676403a500, type: 3} propertyPath: m_SizeDelta.y value: 60 objectReference: {fileID: 0} - - target: {fileID: 1004097911450439916, guid: 56686f82f64b0af4688a89676403a500, - type: 3} + - target: {fileID: 1004097911450439916, guid: 56686f82f64b0af4688a89676403a500, type: 3} propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 1004097911450439916, guid: 56686f82f64b0af4688a89676403a500, - type: 3} + - target: {fileID: 1004097911450439916, guid: 56686f82f64b0af4688a89676403a500, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 1004097911450439916, guid: 56686f82f64b0af4688a89676403a500, - type: 3} + - target: {fileID: 1004097911450439916, guid: 56686f82f64b0af4688a89676403a500, type: 3} propertyPath: m_LocalPosition.z value: 20 objectReference: {fileID: 0} - - target: {fileID: 1004097911450439916, guid: 56686f82f64b0af4688a89676403a500, - type: 3} + - target: {fileID: 1004097911450439916, guid: 56686f82f64b0af4688a89676403a500, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 1004097911450439916, guid: 56686f82f64b0af4688a89676403a500, - type: 3} + - target: {fileID: 1004097911450439916, guid: 56686f82f64b0af4688a89676403a500, type: 3} propertyPath: m_LocalRotation.x value: -0 objectReference: {fileID: 0} - - target: {fileID: 1004097911450439916, guid: 56686f82f64b0af4688a89676403a500, - type: 3} + - target: {fileID: 1004097911450439916, guid: 56686f82f64b0af4688a89676403a500, type: 3} propertyPath: m_LocalRotation.y value: -0 objectReference: {fileID: 0} - - target: {fileID: 1004097911450439916, guid: 56686f82f64b0af4688a89676403a500, - type: 3} + - target: {fileID: 1004097911450439916, guid: 56686f82f64b0af4688a89676403a500, type: 3} propertyPath: m_LocalRotation.z value: -0 objectReference: {fileID: 0} - - target: {fileID: 1004097911450439916, guid: 56686f82f64b0af4688a89676403a500, - type: 3} + - target: {fileID: 1004097911450439916, guid: 56686f82f64b0af4688a89676403a500, type: 3} propertyPath: m_AnchoredPosition.x value: 169.99992 objectReference: {fileID: 0} - - target: {fileID: 1004097911450439916, guid: 56686f82f64b0af4688a89676403a500, - type: 3} + - target: {fileID: 1004097911450439916, guid: 56686f82f64b0af4688a89676403a500, type: 3} propertyPath: m_AnchoredPosition.y value: 70.00003 objectReference: {fileID: 0} - - target: {fileID: 1004097911450439916, guid: 56686f82f64b0af4688a89676403a500, - type: 3} + - target: {fileID: 1004097911450439916, guid: 56686f82f64b0af4688a89676403a500, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 1004097911450439916, guid: 56686f82f64b0af4688a89676403a500, - type: 3} + - target: {fileID: 1004097911450439916, guid: 56686f82f64b0af4688a89676403a500, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 1004097911450439916, guid: 56686f82f64b0af4688a89676403a500, - type: 3} + - target: {fileID: 1004097911450439916, guid: 56686f82f64b0af4688a89676403a500, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 1004097911450439917, guid: 56686f82f64b0af4688a89676403a500, - type: 3} + - target: {fileID: 1004097911450439917, guid: 56686f82f64b0af4688a89676403a500, type: 3} propertyPath: m_Name value: Icon Button objectReference: {fileID: 0} - - target: {fileID: 1004097911450439917, guid: 56686f82f64b0af4688a89676403a500, - type: 3} + - target: {fileID: 1004097911450439917, guid: 56686f82f64b0af4688a89676403a500, type: 3} propertyPath: m_IsActive value: 1 objectReference: {fileID: 0} m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 56686f82f64b0af4688a89676403a500, type: 3} --- !u!1001 &2005650193314499417 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - serializedVersion: 3 m_TransformParent: {fileID: 1726903308} m_Modifications: - - target: {fileID: 5289182684458692540, guid: e5db301629853dd4a99835fa70099d79, - type: 3} + - target: {fileID: 5289182684458692540, guid: e5db301629853dd4a99835fa70099d79, type: 3} propertyPath: m_Name value: TextButton objectReference: {fileID: 0} - - target: {fileID: 5289182684458692540, guid: e5db301629853dd4a99835fa70099d79, - type: 3} + - target: {fileID: 5289182684458692540, guid: e5db301629853dd4a99835fa70099d79, type: 3} propertyPath: m_IsActive value: 1 objectReference: {fileID: 0} - - target: {fileID: 5289182684458692541, guid: e5db301629853dd4a99835fa70099d79, - type: 3} + - target: {fileID: 5289182684458692541, guid: e5db301629853dd4a99835fa70099d79, type: 3} propertyPath: m_Pivot.x value: 0.5 objectReference: {fileID: 0} - - target: {fileID: 5289182684458692541, guid: e5db301629853dd4a99835fa70099d79, - type: 3} + - target: {fileID: 5289182684458692541, guid: e5db301629853dd4a99835fa70099d79, type: 3} propertyPath: m_Pivot.y value: 0.5 objectReference: {fileID: 0} - - target: {fileID: 5289182684458692541, guid: e5db301629853dd4a99835fa70099d79, - type: 3} + - target: {fileID: 5289182684458692541, guid: e5db301629853dd4a99835fa70099d79, type: 3} propertyPath: m_RootOrder value: 5 objectReference: {fileID: 0} - - target: {fileID: 5289182684458692541, guid: e5db301629853dd4a99835fa70099d79, - type: 3} + - target: {fileID: 5289182684458692541, guid: e5db301629853dd4a99835fa70099d79, type: 3} propertyPath: m_AnchorMax.x value: 0.5 objectReference: {fileID: 0} - - target: {fileID: 5289182684458692541, guid: e5db301629853dd4a99835fa70099d79, - type: 3} + - target: {fileID: 5289182684458692541, guid: e5db301629853dd4a99835fa70099d79, type: 3} propertyPath: m_AnchorMax.y value: 0.5 objectReference: {fileID: 0} - - target: {fileID: 5289182684458692541, guid: e5db301629853dd4a99835fa70099d79, - type: 3} + - target: {fileID: 5289182684458692541, guid: e5db301629853dd4a99835fa70099d79, type: 3} propertyPath: m_AnchorMin.x value: 0.5 objectReference: {fileID: 0} - - target: {fileID: 5289182684458692541, guid: e5db301629853dd4a99835fa70099d79, - type: 3} + - target: {fileID: 5289182684458692541, guid: e5db301629853dd4a99835fa70099d79, type: 3} propertyPath: m_AnchorMin.y value: 0.5 objectReference: {fileID: 0} - - target: {fileID: 5289182684458692541, guid: e5db301629853dd4a99835fa70099d79, - type: 3} + - target: {fileID: 5289182684458692541, guid: e5db301629853dd4a99835fa70099d79, type: 3} propertyPath: m_SizeDelta.x value: 170 objectReference: {fileID: 0} - - target: {fileID: 5289182684458692541, guid: e5db301629853dd4a99835fa70099d79, - type: 3} + - target: {fileID: 5289182684458692541, guid: e5db301629853dd4a99835fa70099d79, type: 3} propertyPath: m_SizeDelta.y value: 70 objectReference: {fileID: 0} - - target: {fileID: 5289182684458692541, guid: e5db301629853dd4a99835fa70099d79, - type: 3} + - target: {fileID: 5289182684458692541, guid: e5db301629853dd4a99835fa70099d79, type: 3} propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 5289182684458692541, guid: e5db301629853dd4a99835fa70099d79, - type: 3} + - target: {fileID: 5289182684458692541, guid: e5db301629853dd4a99835fa70099d79, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 5289182684458692541, guid: e5db301629853dd4a99835fa70099d79, - type: 3} + - target: {fileID: 5289182684458692541, guid: e5db301629853dd4a99835fa70099d79, type: 3} propertyPath: m_LocalPosition.z value: 20 objectReference: {fileID: 0} - - target: {fileID: 5289182684458692541, guid: e5db301629853dd4a99835fa70099d79, - type: 3} + - target: {fileID: 5289182684458692541, guid: e5db301629853dd4a99835fa70099d79, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 5289182684458692541, guid: e5db301629853dd4a99835fa70099d79, - type: 3} + - target: {fileID: 5289182684458692541, guid: e5db301629853dd4a99835fa70099d79, type: 3} propertyPath: m_LocalRotation.x value: -0 objectReference: {fileID: 0} - - target: {fileID: 5289182684458692541, guid: e5db301629853dd4a99835fa70099d79, - type: 3} + - target: {fileID: 5289182684458692541, guid: e5db301629853dd4a99835fa70099d79, type: 3} propertyPath: m_LocalRotation.y value: -0 objectReference: {fileID: 0} - - target: {fileID: 5289182684458692541, guid: e5db301629853dd4a99835fa70099d79, - type: 3} + - target: {fileID: 5289182684458692541, guid: e5db301629853dd4a99835fa70099d79, type: 3} propertyPath: m_LocalRotation.z value: -0 objectReference: {fileID: 0} - - target: {fileID: 5289182684458692541, guid: e5db301629853dd4a99835fa70099d79, - type: 3} + - target: {fileID: 5289182684458692541, guid: e5db301629853dd4a99835fa70099d79, type: 3} propertyPath: m_AnchoredPosition.x value: 5 objectReference: {fileID: 0} - - target: {fileID: 5289182684458692541, guid: e5db301629853dd4a99835fa70099d79, - type: 3} + - target: {fileID: 5289182684458692541, guid: e5db301629853dd4a99835fa70099d79, type: 3} propertyPath: m_AnchoredPosition.y value: 90 objectReference: {fileID: 0} - - target: {fileID: 5289182684458692541, guid: e5db301629853dd4a99835fa70099d79, - type: 3} + - target: {fileID: 5289182684458692541, guid: e5db301629853dd4a99835fa70099d79, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 5289182684458692541, guid: e5db301629853dd4a99835fa70099d79, - type: 3} + - target: {fileID: 5289182684458692541, guid: e5db301629853dd4a99835fa70099d79, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 5289182684458692541, guid: e5db301629853dd4a99835fa70099d79, - type: 3} + - target: {fileID: 5289182684458692541, guid: e5db301629853dd4a99835fa70099d79, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: e5db301629853dd4a99835fa70099d79, type: 3} --- !u!224 &2005650193314499418 stripped RectTransform: - m_CorrespondingSourceObject: {fileID: 5289182684458692541, guid: e5db301629853dd4a99835fa70099d79, - type: 3} + m_CorrespondingSourceObject: {fileID: 5289182684458692541, guid: e5db301629853dd4a99835fa70099d79, type: 3} m_PrefabInstance: {fileID: 2005650193314499417} m_PrefabAsset: {fileID: 0} --- !u!1001 &2130331532795802190 @@ -8832,200 +8039,81 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - serializedVersion: 3 m_TransformParent: {fileID: 797091100} m_Modifications: - - target: {fileID: 2130331530761912218, guid: d661f645c81f29b4aa596207971ae441, - type: 3} + - target: {fileID: 2130331530761912218, guid: d661f645c81f29b4aa596207971ae441, type: 3} propertyPath: m_InteractionManager value: objectReference: {fileID: 7578513822832117758} - - target: {fileID: 2130331530761912220, guid: d661f645c81f29b4aa596207971ae441, - type: 3} + - target: {fileID: 2130331530761912220, guid: d661f645c81f29b4aa596207971ae441, type: 3} propertyPath: m_RootOrder value: 2 objectReference: {fileID: 0} - - target: {fileID: 2130331530761912220, guid: d661f645c81f29b4aa596207971ae441, - type: 3} + - target: {fileID: 2130331530761912220, guid: d661f645c81f29b4aa596207971ae441, type: 3} propertyPath: m_LocalPosition.x value: -0 objectReference: {fileID: 0} - - target: {fileID: 2130331530761912220, guid: d661f645c81f29b4aa596207971ae441, - type: 3} + - target: {fileID: 2130331530761912220, guid: d661f645c81f29b4aa596207971ae441, type: 3} propertyPath: m_LocalPosition.y value: 0.7577 objectReference: {fileID: 0} - - target: {fileID: 2130331530761912220, guid: d661f645c81f29b4aa596207971ae441, - type: 3} + - target: {fileID: 2130331530761912220, guid: d661f645c81f29b4aa596207971ae441, type: 3} propertyPath: m_LocalPosition.z value: 0.5693 objectReference: {fileID: 0} - - target: {fileID: 2130331530761912220, guid: d661f645c81f29b4aa596207971ae441, - type: 3} + - target: {fileID: 2130331530761912220, guid: d661f645c81f29b4aa596207971ae441, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 2130331530761912220, guid: d661f645c81f29b4aa596207971ae441, - type: 3} + - target: {fileID: 2130331530761912220, guid: d661f645c81f29b4aa596207971ae441, type: 3} propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 2130331530761912220, guid: d661f645c81f29b4aa596207971ae441, - type: 3} + - target: {fileID: 2130331530761912220, guid: d661f645c81f29b4aa596207971ae441, type: 3} propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 2130331530761912220, guid: d661f645c81f29b4aa596207971ae441, - type: 3} + - target: {fileID: 2130331530761912220, guid: d661f645c81f29b4aa596207971ae441, type: 3} propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 2130331530761912220, guid: d661f645c81f29b4aa596207971ae441, - type: 3} + - target: {fileID: 2130331530761912220, guid: d661f645c81f29b4aa596207971ae441, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 2130331530761912220, guid: d661f645c81f29b4aa596207971ae441, - type: 3} + - target: {fileID: 2130331530761912220, guid: d661f645c81f29b4aa596207971ae441, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 2130331530761912220, guid: d661f645c81f29b4aa596207971ae441, - type: 3} + - target: {fileID: 2130331530761912220, guid: d661f645c81f29b4aa596207971ae441, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 2130331530761912223, guid: d661f645c81f29b4aa596207971ae441, - type: 3} + - target: {fileID: 2130331530761912223, guid: d661f645c81f29b4aa596207971ae441, type: 3} propertyPath: m_Name value: PokeButton objectReference: {fileID: 0} - - target: {fileID: 2130331530761912223, guid: d661f645c81f29b4aa596207971ae441, - type: 3} + - target: {fileID: 2130331530761912223, guid: d661f645c81f29b4aa596207971ae441, type: 3} propertyPath: m_IsActive value: 1 objectReference: {fileID: 0} - - target: {fileID: 2130331532155778801, guid: d661f645c81f29b4aa596207971ae441, - type: 3} + - target: {fileID: 2130331532155778801, guid: d661f645c81f29b4aa596207971ae441, type: 3} propertyPath: m_LocalPosition.x value: -0.00000008940697 objectReference: {fileID: 0} - - target: {fileID: 2130331532155778801, guid: d661f645c81f29b4aa596207971ae441, - type: 3} + - target: {fileID: 2130331532155778801, guid: d661f645c81f29b4aa596207971ae441, type: 3} propertyPath: m_LocalPosition.y value: -0.01969999 objectReference: {fileID: 0} - - target: {fileID: 2130331532155778801, guid: d661f645c81f29b4aa596207971ae441, - type: 3} + - target: {fileID: 2130331532155778801, guid: d661f645c81f29b4aa596207971ae441, type: 3} propertyPath: m_LocalPosition.z value: 0.00000011920929 objectReference: {fileID: 0} m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: d661f645c81f29b4aa596207971ae441, type: 3} ---- !u!1001 &3113582726696116334 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - serializedVersion: 3 - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 865075385244835223, guid: 5eccbf4be2c00e94689ee8062e4e7276, - type: 3} - propertyPath: m_Name - value: XR Interaction Hands Setup - objectReference: {fileID: 0} - - target: {fileID: 1942626908999483018, guid: 5eccbf4be2c00e94689ee8062e4e7276, - type: 3} - propertyPath: m_LocalScale.x - value: 1.5 - objectReference: {fileID: 0} - - target: {fileID: 1942626908999483018, guid: 5eccbf4be2c00e94689ee8062e4e7276, - type: 3} - propertyPath: m_LocalScale.y - value: 1.5 - objectReference: {fileID: 0} - - target: {fileID: 1942626908999483018, guid: 5eccbf4be2c00e94689ee8062e4e7276, - type: 3} - propertyPath: m_LocalScale.z - value: 1.5 - objectReference: {fileID: 0} - - target: {fileID: 5773256366622995465, guid: 5eccbf4be2c00e94689ee8062e4e7276, - type: 3} - propertyPath: m_RootOrder - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5773256366622995465, guid: 5eccbf4be2c00e94689ee8062e4e7276, - type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5773256366622995465, guid: 5eccbf4be2c00e94689ee8062e4e7276, - type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5773256366622995465, guid: 5eccbf4be2c00e94689ee8062e4e7276, - type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5773256366622995465, guid: 5eccbf4be2c00e94689ee8062e4e7276, - type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 5773256366622995465, guid: 5eccbf4be2c00e94689ee8062e4e7276, - type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5773256366622995465, guid: 5eccbf4be2c00e94689ee8062e4e7276, - type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5773256366622995465, guid: 5eccbf4be2c00e94689ee8062e4e7276, - type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5773256366622995465, guid: 5eccbf4be2c00e94689ee8062e4e7276, - type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5773256366622995465, guid: 5eccbf4be2c00e94689ee8062e4e7276, - type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5773256366622995465, guid: 5eccbf4be2c00e94689ee8062e4e7276, - type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 7838028093091575039, guid: 5eccbf4be2c00e94689ee8062e4e7276, - type: 3} - propertyPath: m_UseGravity - value: 0 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: - - targetCorrespondingSourceObject: {fileID: 7990873191187716717, guid: 5eccbf4be2c00e94689ee8062e4e7276, - type: 3} - insertIndex: -1 - addedObject: {fileID: 1949637319} - m_AddedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 5eccbf4be2c00e94689ee8062e4e7276, type: 3} --- !u!4 &3154726581514219159 stripped Transform: - m_CorrespondingSourceObject: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} + m_CorrespondingSourceObject: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} m_PrefabInstance: {fileID: 6089389884994424882} m_PrefabAsset: {fileID: 0} --- !u!1001 &4330884014604818162 @@ -9033,89 +8121,66 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - serializedVersion: 3 m_TransformParent: {fileID: 1972783598} m_Modifications: - - target: {fileID: 5709307613756117032, guid: 531d9182cdbe93948a57bd87a1e47fdf, - type: 3} + - target: {fileID: 5709307613756117032, guid: 531d9182cdbe93948a57bd87a1e47fdf, type: 3} propertyPath: m_Name value: Cylinder objectReference: {fileID: 0} - - target: {fileID: 5709307613756117039, guid: 531d9182cdbe93948a57bd87a1e47fdf, - type: 3} - propertyPath: m_PermittedDisplacementAxes - value: -1 - objectReference: {fileID: 0} - - target: {fileID: 8746220130012963387, guid: 531d9182cdbe93948a57bd87a1e47fdf, - type: 3} + - target: {fileID: 8746220130012963387, guid: 531d9182cdbe93948a57bd87a1e47fdf, type: 3} propertyPath: m_RootOrder value: 1 objectReference: {fileID: 0} - - target: {fileID: 8746220130012963387, guid: 531d9182cdbe93948a57bd87a1e47fdf, - type: 3} + - target: {fileID: 8746220130012963387, guid: 531d9182cdbe93948a57bd87a1e47fdf, type: 3} propertyPath: m_LocalPosition.x value: 0.09374997 objectReference: {fileID: 0} - - target: {fileID: 8746220130012963387, guid: 531d9182cdbe93948a57bd87a1e47fdf, - type: 3} + - target: {fileID: 8746220130012963387, guid: 531d9182cdbe93948a57bd87a1e47fdf, type: 3} propertyPath: m_LocalPosition.y value: 1.0551852 objectReference: {fileID: 0} - - target: {fileID: 8746220130012963387, guid: 531d9182cdbe93948a57bd87a1e47fdf, - type: 3} + - target: {fileID: 8746220130012963387, guid: 531d9182cdbe93948a57bd87a1e47fdf, type: 3} propertyPath: m_LocalPosition.z value: 0.6330882 objectReference: {fileID: 0} - - target: {fileID: 8746220130012963387, guid: 531d9182cdbe93948a57bd87a1e47fdf, - type: 3} + - target: {fileID: 8746220130012963387, guid: 531d9182cdbe93948a57bd87a1e47fdf, type: 3} propertyPath: m_LocalRotation.w value: 0.95846367 objectReference: {fileID: 0} - - target: {fileID: 8746220130012963387, guid: 531d9182cdbe93948a57bd87a1e47fdf, - type: 3} + - target: {fileID: 8746220130012963387, guid: 531d9182cdbe93948a57bd87a1e47fdf, type: 3} propertyPath: m_LocalRotation.x value: 0.1261841 objectReference: {fileID: 0} - - target: {fileID: 8746220130012963387, guid: 531d9182cdbe93948a57bd87a1e47fdf, - type: 3} + - target: {fileID: 8746220130012963387, guid: 531d9182cdbe93948a57bd87a1e47fdf, type: 3} propertyPath: m_LocalRotation.y value: 0.03338638 objectReference: {fileID: 0} - - target: {fileID: 8746220130012963387, guid: 531d9182cdbe93948a57bd87a1e47fdf, - type: 3} + - target: {fileID: 8746220130012963387, guid: 531d9182cdbe93948a57bd87a1e47fdf, type: 3} propertyPath: m_LocalRotation.z value: -0.25359496 objectReference: {fileID: 0} - - target: {fileID: 8746220130012963387, guid: 531d9182cdbe93948a57bd87a1e47fdf, - type: 3} + - target: {fileID: 8746220130012963387, guid: 531d9182cdbe93948a57bd87a1e47fdf, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 8746220130012963387, guid: 531d9182cdbe93948a57bd87a1e47fdf, - type: 3} + - target: {fileID: 8746220130012963387, guid: 531d9182cdbe93948a57bd87a1e47fdf, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 8746220130012963387, guid: 531d9182cdbe93948a57bd87a1e47fdf, - type: 3} + - target: {fileID: 8746220130012963387, guid: 531d9182cdbe93948a57bd87a1e47fdf, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: -29.64 objectReference: {fileID: 0} m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 531d9182cdbe93948a57bd87a1e47fdf, type: 3} --- !u!4 &5006512735865308539 stripped Transform: - m_CorrespondingSourceObject: {fileID: 5013556786019211059, guid: d56cf1aacbea4704cac4d7983df1a0ad, - type: 3} + m_CorrespondingSourceObject: {fileID: 5013556786019211059, guid: d56cf1aacbea4704cac4d7983df1a0ad, type: 3} m_PrefabInstance: {fileID: 65600831110779464} m_PrefabAsset: {fileID: 0} --- !u!4 &5006512736343635145 stripped Transform: - m_CorrespondingSourceObject: {fileID: 8746220130012963387, guid: 531d9182cdbe93948a57bd87a1e47fdf, - type: 3} + m_CorrespondingSourceObject: {fileID: 8746220130012963387, guid: 531d9182cdbe93948a57bd87a1e47fdf, type: 3} m_PrefabInstance: {fileID: 4330884014604818162} m_PrefabAsset: {fileID: 0} --- !u!1001 &5509715586133197775 @@ -9123,230 +8188,239 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - serializedVersion: 3 m_TransformParent: {fileID: 1985586552} m_Modifications: - - target: {fileID: 2049748930621633664, guid: 6b7188f9e149bd64cb26cec516eb470c, - type: 3} + - target: {fileID: 2049748930621633664, guid: 6b7188f9e149bd64cb26cec516eb470c, type: 3} propertyPath: m_Name value: FlatSphereController objectReference: {fileID: 0} - - target: {fileID: 2049748930621633665, guid: 6b7188f9e149bd64cb26cec516eb470c, - type: 3} + - target: {fileID: 2049748930621633665, guid: 6b7188f9e149bd64cb26cec516eb470c, type: 3} propertyPath: m_RootOrder value: 2 objectReference: {fileID: 0} - - target: {fileID: 2049748930621633665, guid: 6b7188f9e149bd64cb26cec516eb470c, - type: 3} + - target: {fileID: 2049748930621633665, guid: 6b7188f9e149bd64cb26cec516eb470c, type: 3} propertyPath: m_LocalPosition.x value: 0.0642 objectReference: {fileID: 0} - - target: {fileID: 2049748930621633665, guid: 6b7188f9e149bd64cb26cec516eb470c, - type: 3} + - target: {fileID: 2049748930621633665, guid: 6b7188f9e149bd64cb26cec516eb470c, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 2049748930621633665, guid: 6b7188f9e149bd64cb26cec516eb470c, - type: 3} + - target: {fileID: 2049748930621633665, guid: 6b7188f9e149bd64cb26cec516eb470c, type: 3} propertyPath: m_LocalPosition.z value: -0.0584 objectReference: {fileID: 0} - - target: {fileID: 2049748930621633665, guid: 6b7188f9e149bd64cb26cec516eb470c, - type: 3} + - target: {fileID: 2049748930621633665, guid: 6b7188f9e149bd64cb26cec516eb470c, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 2049748930621633665, guid: 6b7188f9e149bd64cb26cec516eb470c, - type: 3} + - target: {fileID: 2049748930621633665, guid: 6b7188f9e149bd64cb26cec516eb470c, type: 3} propertyPath: m_LocalRotation.x value: -0 objectReference: {fileID: 0} - - target: {fileID: 2049748930621633665, guid: 6b7188f9e149bd64cb26cec516eb470c, - type: 3} + - target: {fileID: 2049748930621633665, guid: 6b7188f9e149bd64cb26cec516eb470c, type: 3} propertyPath: m_LocalRotation.y value: -0 objectReference: {fileID: 0} - - target: {fileID: 2049748930621633665, guid: 6b7188f9e149bd64cb26cec516eb470c, - type: 3} + - target: {fileID: 2049748930621633665, guid: 6b7188f9e149bd64cb26cec516eb470c, type: 3} propertyPath: m_LocalRotation.z value: -0 objectReference: {fileID: 0} - - target: {fileID: 2049748930621633665, guid: 6b7188f9e149bd64cb26cec516eb470c, - type: 3} + - target: {fileID: 2049748930621633665, guid: 6b7188f9e149bd64cb26cec516eb470c, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 2049748930621633665, guid: 6b7188f9e149bd64cb26cec516eb470c, - type: 3} + - target: {fileID: 2049748930621633665, guid: 6b7188f9e149bd64cb26cec516eb470c, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 2049748930621633665, guid: 6b7188f9e149bd64cb26cec516eb470c, - type: 3} + - target: {fileID: 2049748930621633665, guid: 6b7188f9e149bd64cb26cec516eb470c, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 6b7188f9e149bd64cb26cec516eb470c, type: 3} +--- !u!1001 &5534409079552104243 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 810019319561094050, guid: d6878e1999eb4b44a9f5a263af86c185, type: 3} + propertyPath: m_UseGravity + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2218496723442559053, guid: d6878e1999eb4b44a9f5a263af86c185, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2218496723442559053, guid: d6878e1999eb4b44a9f5a263af86c185, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2218496723442559053, guid: d6878e1999eb4b44a9f5a263af86c185, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2218496723442559053, guid: d6878e1999eb4b44a9f5a263af86c185, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2218496723442559053, guid: d6878e1999eb4b44a9f5a263af86c185, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2218496723442559053, guid: d6878e1999eb4b44a9f5a263af86c185, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2218496723442559053, guid: d6878e1999eb4b44a9f5a263af86c185, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2218496723442559053, guid: d6878e1999eb4b44a9f5a263af86c185, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2218496723442559053, guid: d6878e1999eb4b44a9f5a263af86c185, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2218496723442559053, guid: d6878e1999eb4b44a9f5a263af86c185, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2218496723442559053, guid: d6878e1999eb4b44a9f5a263af86c185, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2218496723442559054, guid: d6878e1999eb4b44a9f5a263af86c185, type: 3} + propertyPath: m_Name + value: XR Origin (XR Rig) + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d6878e1999eb4b44a9f5a263af86c185, type: 3} --- !u!1001 &5715416335952834191 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - serializedVersion: 3 m_TransformParent: {fileID: 1726903308} m_Modifications: - - target: {fileID: 5715416334889072034, guid: 541ed11e270c6994ca5910042c7e04da, - type: 3} + - target: {fileID: 5715416334889072034, guid: 541ed11e270c6994ca5910042c7e04da, type: 3} propertyPath: m_IsActive value: 1 objectReference: {fileID: 0} - - target: {fileID: 5715416335250216645, guid: 541ed11e270c6994ca5910042c7e04da, - type: 3} + - target: {fileID: 5715416335250216645, guid: 541ed11e270c6994ca5910042c7e04da, type: 3} propertyPath: onValueChanged.m_PersistentCalls.m_Calls.Array.size value: 0 objectReference: {fileID: 0} - - target: {fileID: 5715416335250216645, guid: 541ed11e270c6994ca5910042c7e04da, - type: 3} + - target: {fileID: 5715416335250216645, guid: 541ed11e270c6994ca5910042c7e04da, type: 3} propertyPath: onValueChanged.m_PersistentCalls.m_Calls.Array.data[0].m_Target value: objectReference: {fileID: 0} - - target: {fileID: 5715416335250216645, guid: 541ed11e270c6994ca5910042c7e04da, - type: 3} + - target: {fileID: 5715416335250216645, guid: 541ed11e270c6994ca5910042c7e04da, type: 3} propertyPath: onValueChanged.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName value: objectReference: {fileID: 0} - - target: {fileID: 5715416335250216646, guid: 541ed11e270c6994ca5910042c7e04da, - type: 3} + - target: {fileID: 5715416335250216646, guid: 541ed11e270c6994ca5910042c7e04da, type: 3} propertyPath: m_Pivot.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 5715416335250216646, guid: 541ed11e270c6994ca5910042c7e04da, - type: 3} + - target: {fileID: 5715416335250216646, guid: 541ed11e270c6994ca5910042c7e04da, type: 3} propertyPath: m_Pivot.y value: 1 objectReference: {fileID: 0} - - target: {fileID: 5715416335250216646, guid: 541ed11e270c6994ca5910042c7e04da, - type: 3} + - target: {fileID: 5715416335250216646, guid: 541ed11e270c6994ca5910042c7e04da, type: 3} propertyPath: m_RootOrder value: 8 objectReference: {fileID: 0} - - target: {fileID: 5715416335250216646, guid: 541ed11e270c6994ca5910042c7e04da, - type: 3} + - target: {fileID: 5715416335250216646, guid: 541ed11e270c6994ca5910042c7e04da, type: 3} propertyPath: m_AnchorMax.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 5715416335250216646, guid: 541ed11e270c6994ca5910042c7e04da, - type: 3} + - target: {fileID: 5715416335250216646, guid: 541ed11e270c6994ca5910042c7e04da, type: 3} propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - - target: {fileID: 5715416335250216646, guid: 541ed11e270c6994ca5910042c7e04da, - type: 3} + - target: {fileID: 5715416335250216646, guid: 541ed11e270c6994ca5910042c7e04da, type: 3} propertyPath: m_AnchorMin.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 5715416335250216646, guid: 541ed11e270c6994ca5910042c7e04da, - type: 3} + - target: {fileID: 5715416335250216646, guid: 541ed11e270c6994ca5910042c7e04da, type: 3} propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - - target: {fileID: 5715416335250216646, guid: 541ed11e270c6994ca5910042c7e04da, - type: 3} + - target: {fileID: 5715416335250216646, guid: 541ed11e270c6994ca5910042c7e04da, type: 3} propertyPath: m_SizeDelta.x value: 60 objectReference: {fileID: 0} - - target: {fileID: 5715416335250216646, guid: 541ed11e270c6994ca5910042c7e04da, - type: 3} + - target: {fileID: 5715416335250216646, guid: 541ed11e270c6994ca5910042c7e04da, type: 3} propertyPath: m_SizeDelta.y value: 60 objectReference: {fileID: 0} - - target: {fileID: 5715416335250216646, guid: 541ed11e270c6994ca5910042c7e04da, - type: 3} + - target: {fileID: 5715416335250216646, guid: 541ed11e270c6994ca5910042c7e04da, type: 3} propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 5715416335250216646, guid: 541ed11e270c6994ca5910042c7e04da, - type: 3} + - target: {fileID: 5715416335250216646, guid: 541ed11e270c6994ca5910042c7e04da, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 5715416335250216646, guid: 541ed11e270c6994ca5910042c7e04da, - type: 3} + - target: {fileID: 5715416335250216646, guid: 541ed11e270c6994ca5910042c7e04da, type: 3} propertyPath: m_LocalPosition.z value: 20 objectReference: {fileID: 0} - - target: {fileID: 5715416335250216646, guid: 541ed11e270c6994ca5910042c7e04da, - type: 3} + - target: {fileID: 5715416335250216646, guid: 541ed11e270c6994ca5910042c7e04da, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 5715416335250216646, guid: 541ed11e270c6994ca5910042c7e04da, - type: 3} + - target: {fileID: 5715416335250216646, guid: 541ed11e270c6994ca5910042c7e04da, type: 3} propertyPath: m_LocalRotation.x value: -0 objectReference: {fileID: 0} - - target: {fileID: 5715416335250216646, guid: 541ed11e270c6994ca5910042c7e04da, - type: 3} + - target: {fileID: 5715416335250216646, guid: 541ed11e270c6994ca5910042c7e04da, type: 3} propertyPath: m_LocalRotation.y value: -0 objectReference: {fileID: 0} - - target: {fileID: 5715416335250216646, guid: 541ed11e270c6994ca5910042c7e04da, - type: 3} + - target: {fileID: 5715416335250216646, guid: 541ed11e270c6994ca5910042c7e04da, type: 3} propertyPath: m_LocalRotation.z value: -0 objectReference: {fileID: 0} - - target: {fileID: 5715416335250216646, guid: 541ed11e270c6994ca5910042c7e04da, - type: 3} + - target: {fileID: 5715416335250216646, guid: 541ed11e270c6994ca5910042c7e04da, type: 3} propertyPath: m_AnchoredPosition.x value: 170 objectReference: {fileID: 0} - - target: {fileID: 5715416335250216646, guid: 541ed11e270c6994ca5910042c7e04da, - type: 3} + - target: {fileID: 5715416335250216646, guid: 541ed11e270c6994ca5910042c7e04da, type: 3} propertyPath: m_AnchoredPosition.y value: -19.99998 objectReference: {fileID: 0} - - target: {fileID: 5715416335250216646, guid: 541ed11e270c6994ca5910042c7e04da, - type: 3} + - target: {fileID: 5715416335250216646, guid: 541ed11e270c6994ca5910042c7e04da, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 5715416335250216646, guid: 541ed11e270c6994ca5910042c7e04da, - type: 3} + - target: {fileID: 5715416335250216646, guid: 541ed11e270c6994ca5910042c7e04da, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 5715416335250216646, guid: 541ed11e270c6994ca5910042c7e04da, - type: 3} + - target: {fileID: 5715416335250216646, guid: 541ed11e270c6994ca5910042c7e04da, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 5715416335250216647, guid: 541ed11e270c6994ca5910042c7e04da, - type: 3} + - target: {fileID: 5715416335250216647, guid: 541ed11e270c6994ca5910042c7e04da, type: 3} propertyPath: m_Name value: Icon Toggle objectReference: {fileID: 0} - - target: {fileID: 5715416335250216647, guid: 541ed11e270c6994ca5910042c7e04da, - type: 3} + - target: {fileID: 5715416335250216647, guid: 541ed11e270c6994ca5910042c7e04da, type: 3} propertyPath: m_IsActive value: 1 objectReference: {fileID: 0} m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: - - targetCorrespondingSourceObject: {fileID: 5715416335250216647, guid: 541ed11e270c6994ca5910042c7e04da, - type: 3} - insertIndex: -1 - addedObject: {fileID: 1109258399} m_SourcePrefab: {fileID: 100100000, guid: 541ed11e270c6994ca5910042c7e04da, type: 3} --- !u!4 &5765833378047162190 stripped Transform: - m_CorrespondingSourceObject: {fileID: 2049748930621633665, guid: 6b7188f9e149bd64cb26cec516eb470c, - type: 3} + m_CorrespondingSourceObject: {fileID: 2049748930621633665, guid: 6b7188f9e149bd64cb26cec516eb470c, type: 3} m_PrefabInstance: {fileID: 5509715586133197775} m_PrefabAsset: {fileID: 0} --- !u!1001 &6089389884994424882 @@ -9354,629 +8428,608 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - serializedVersion: 3 m_TransformParent: {fileID: 1129778166} m_Modifications: - - target: {fileID: 1988286665728152634, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} - propertyPath: m_PermittedDisplacementAxes - value: -1 - objectReference: {fileID: 0} - - target: {fileID: 2603633290551499573, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} - propertyPath: m_Materials.Array.data[0] - value: - objectReference: {fileID: 2100000, guid: ef3ba06669db5df45a16a8f9d1003dd3, type: 2} - - target: {fileID: 5268460675038366902, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} + - target: {fileID: 5268460675038366902, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} propertyPath: m_Name - value: Cube (Coral) + value: Cube 1 objectReference: {fileID: 0} - - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} + - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} + - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} propertyPath: m_LocalPosition.x value: -0.0045190454 objectReference: {fileID: 0} - - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} + - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} propertyPath: m_LocalPosition.y value: 0.018455446 objectReference: {fileID: 0} - - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} + - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} propertyPath: m_LocalPosition.z value: 0.16146101 objectReference: {fileID: 0} - - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} + - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} propertyPath: m_LocalRotation.w value: 0.47675768 objectReference: {fileID: 0} - - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} + - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} propertyPath: m_LocalRotation.x value: 0.6736901 objectReference: {fileID: 0} - - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} + - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} propertyPath: m_LocalRotation.y value: -0.2520906 objectReference: {fileID: 0} - - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} + - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} propertyPath: m_LocalRotation.z value: 0.5052665 objectReference: {fileID: 0} - - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} + - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 116.218 objectReference: {fileID: 0} - - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} + - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: -85.48 objectReference: {fileID: 0} - - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, - type: 3} + - target: {fileID: 9171031756790316709, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: -18.765 objectReference: {fileID: 0} m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: f5afcb7f49afad5419049090809f5cc7, type: 3} --- !u!1001 &6183026901525796732 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - serializedVersion: 3 m_TransformParent: {fileID: 1887197406} m_Modifications: - - target: {fileID: 575213516256852194, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 575213516256852194, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 575213516256852194, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 575213516256852194, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 575213516256852194, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 575213516256852194, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 575213516256852194, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 575213516256852194, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 575213516256852194, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 575213516256852194, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 2459597453263534125, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 2459597453263534125, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 2459597453263534125, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 2459597453263534125, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 2459597453263534125, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 2459597453263534125, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 2459597453263534125, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 2459597453263534125, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 2459597453263534125, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 2459597453263534125, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 3318402603881556472, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 3318402603881556472, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 3318402603881556472, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 3318402603881556472, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 3318402603881556472, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 3318402603881556472, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 3318402603881556472, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 3318402603881556472, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 3318402603881556472, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 3318402603881556472, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4545177384989293878, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 4545177384989293878, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4545177384989293878, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 4545177384989293878, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4545177384989293878, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 4545177384989293878, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4545177384989293878, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 4545177384989293878, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4545177384989293878, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 4545177384989293878, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 6081796599383575975, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6081796599383575975, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 6081796599383575975, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6081796599383575975, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 6081796599383575975, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6081796599383575975, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 6081796599383575975, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6081796599383575975, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 6081796599383575975, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6081796599383575975, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 6183026901214721044, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026901214721044, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_Name value: Scroll View objectReference: {fileID: 0} - - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_Pivot.x value: 0.5 objectReference: {fileID: 0} - - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_Pivot.y value: 0.5 objectReference: {fileID: 0} - - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_RootOrder value: 2 objectReference: {fileID: 0} - - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMax.x value: 1 objectReference: {fileID: 0} - - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMin.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_SizeDelta.x value: -48 objectReference: {fileID: 0} - - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_SizeDelta.y value: -119 objectReference: {fileID: 0} - - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_LocalRotation.x value: -0 objectReference: {fileID: 0} - - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_LocalRotation.y value: -0 objectReference: {fileID: 0} - - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_LocalRotation.z value: -0 objectReference: {fileID: 0} - - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchoredPosition.y value: -35.49995 objectReference: {fileID: 0} - - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026901214721045, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 6183026902371939695, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026902371939695, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 6183026902669923109, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026902669923109, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMax.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 6183026902669923109, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026902669923109, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 6183026902669923109, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6183026902669923109, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 6371800052681497148, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6371800052681497148, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 6371800052681497148, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6371800052681497148, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 6371800052681497148, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6371800052681497148, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 6371800052681497148, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6371800052681497148, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 6371800052681497148, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 6371800052681497148, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 7050254453680010381, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 7050254453680010381, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 7050254453680010381, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 7050254453680010381, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 7050254453680010381, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 7050254453680010381, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 7050254453680010381, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 7050254453680010381, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 7050254453680010381, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 7050254453680010381, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 7115703732978342057, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 7115703732978342057, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 7115703732978342057, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 7115703732978342057, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 7115703732978342057, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 7115703732978342057, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 7115703732978342057, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 7115703732978342057, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 7115703732978342057, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 7115703732978342057, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 8774576546710604735, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 8774576546710604735, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 8774576546710604735, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 8774576546710604735, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 8774576546710604735, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 8774576546710604735, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 8774576546710604735, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 8774576546710604735, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 8774576546710604735, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + - target: {fileID: 8774576546710604735, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} --- !u!1001 &6689389173002939780 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - serializedVersion: 3 m_TransformParent: {fileID: 1985586552} m_Modifications: - - target: {fileID: 6689389171845895218, guid: a5f97d75a3184ad46aef39618607e083, - type: 3} + - target: {fileID: 6689389171845895218, guid: a5f97d75a3184ad46aef39618607e083, type: 3} propertyPath: m_Name value: PawnController objectReference: {fileID: 0} - - target: {fileID: 6689389171845895219, guid: a5f97d75a3184ad46aef39618607e083, - type: 3} + - target: {fileID: 6689389171845895219, guid: a5f97d75a3184ad46aef39618607e083, type: 3} propertyPath: m_RootOrder value: 1 objectReference: {fileID: 0} - - target: {fileID: 6689389171845895219, guid: a5f97d75a3184ad46aef39618607e083, - type: 3} + - target: {fileID: 6689389171845895219, guid: a5f97d75a3184ad46aef39618607e083, type: 3} propertyPath: m_LocalPosition.x value: 0.0649 objectReference: {fileID: 0} - - target: {fileID: 6689389171845895219, guid: a5f97d75a3184ad46aef39618607e083, - type: 3} + - target: {fileID: 6689389171845895219, guid: a5f97d75a3184ad46aef39618607e083, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 6689389171845895219, guid: a5f97d75a3184ad46aef39618607e083, - type: 3} + - target: {fileID: 6689389171845895219, guid: a5f97d75a3184ad46aef39618607e083, type: 3} propertyPath: m_LocalPosition.z value: 0.0422 objectReference: {fileID: 0} - - target: {fileID: 6689389171845895219, guid: a5f97d75a3184ad46aef39618607e083, - type: 3} + - target: {fileID: 6689389171845895219, guid: a5f97d75a3184ad46aef39618607e083, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 6689389171845895219, guid: a5f97d75a3184ad46aef39618607e083, - type: 3} + - target: {fileID: 6689389171845895219, guid: a5f97d75a3184ad46aef39618607e083, type: 3} propertyPath: m_LocalRotation.x value: -0 objectReference: {fileID: 0} - - target: {fileID: 6689389171845895219, guid: a5f97d75a3184ad46aef39618607e083, - type: 3} + - target: {fileID: 6689389171845895219, guid: a5f97d75a3184ad46aef39618607e083, type: 3} propertyPath: m_LocalRotation.y value: -0 objectReference: {fileID: 0} - - target: {fileID: 6689389171845895219, guid: a5f97d75a3184ad46aef39618607e083, - type: 3} + - target: {fileID: 6689389171845895219, guid: a5f97d75a3184ad46aef39618607e083, type: 3} propertyPath: m_LocalRotation.z value: -0 objectReference: {fileID: 0} - - target: {fileID: 6689389171845895219, guid: a5f97d75a3184ad46aef39618607e083, - type: 3} + - target: {fileID: 6689389171845895219, guid: a5f97d75a3184ad46aef39618607e083, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 6689389171845895219, guid: a5f97d75a3184ad46aef39618607e083, - type: 3} + - target: {fileID: 6689389171845895219, guid: a5f97d75a3184ad46aef39618607e083, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 6689389171845895219, guid: a5f97d75a3184ad46aef39618607e083, - type: 3} + - target: {fileID: 6689389171845895219, guid: a5f97d75a3184ad46aef39618607e083, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: a5f97d75a3184ad46aef39618607e083, type: 3} --- !u!1001 &7403072357405031663 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - serializedVersion: 3 m_TransformParent: {fileID: 0} m_Modifications: - - target: {fileID: 7403072356416083904, guid: ed5fdb8d3e523e94ca6d8a239d40615a, - type: 3} + - target: {fileID: 7403072356416083904, guid: ed5fdb8d3e523e94ca6d8a239d40615a, type: 3} propertyPath: m_Name value: TableHandle objectReference: {fileID: 0} - - target: {fileID: 7403072356416083929, guid: ed5fdb8d3e523e94ca6d8a239d40615a, - type: 3} - propertyPath: m_PermittedDisplacementAxes - value: -1 - objectReference: {fileID: 0} - - target: {fileID: 7403072356416083930, guid: ed5fdb8d3e523e94ca6d8a239d40615a, - type: 3} + - target: {fileID: 7403072356416083930, guid: ed5fdb8d3e523e94ca6d8a239d40615a, type: 3} propertyPath: m_RootOrder - value: 2 + value: 4 objectReference: {fileID: 0} - - target: {fileID: 7403072356416083930, guid: ed5fdb8d3e523e94ca6d8a239d40615a, - type: 3} + - target: {fileID: 7403072356416083930, guid: ed5fdb8d3e523e94ca6d8a239d40615a, type: 3} propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 7403072356416083930, guid: ed5fdb8d3e523e94ca6d8a239d40615a, - type: 3} + - target: {fileID: 7403072356416083930, guid: ed5fdb8d3e523e94ca6d8a239d40615a, type: 3} propertyPath: m_LocalPosition.y value: 0.65 objectReference: {fileID: 0} - - target: {fileID: 7403072356416083930, guid: ed5fdb8d3e523e94ca6d8a239d40615a, - type: 3} + - target: {fileID: 7403072356416083930, guid: ed5fdb8d3e523e94ca6d8a239d40615a, type: 3} propertyPath: m_LocalPosition.z value: 0.35 objectReference: {fileID: 0} - - target: {fileID: 7403072356416083930, guid: ed5fdb8d3e523e94ca6d8a239d40615a, - type: 3} + - target: {fileID: 7403072356416083930, guid: ed5fdb8d3e523e94ca6d8a239d40615a, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 7403072356416083930, guid: ed5fdb8d3e523e94ca6d8a239d40615a, - type: 3} + - target: {fileID: 7403072356416083930, guid: ed5fdb8d3e523e94ca6d8a239d40615a, type: 3} propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 7403072356416083930, guid: ed5fdb8d3e523e94ca6d8a239d40615a, - type: 3} + - target: {fileID: 7403072356416083930, guid: ed5fdb8d3e523e94ca6d8a239d40615a, type: 3} propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 7403072356416083930, guid: ed5fdb8d3e523e94ca6d8a239d40615a, - type: 3} + - target: {fileID: 7403072356416083930, guid: ed5fdb8d3e523e94ca6d8a239d40615a, type: 3} propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 7403072356416083930, guid: ed5fdb8d3e523e94ca6d8a239d40615a, - type: 3} + - target: {fileID: 7403072356416083930, guid: ed5fdb8d3e523e94ca6d8a239d40615a, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 7403072356416083930, guid: ed5fdb8d3e523e94ca6d8a239d40615a, - type: 3} + - target: {fileID: 7403072356416083930, guid: ed5fdb8d3e523e94ca6d8a239d40615a, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 7403072356416083930, guid: ed5fdb8d3e523e94ca6d8a239d40615a, - type: 3} + - target: {fileID: 7403072356416083930, guid: ed5fdb8d3e523e94ca6d8a239d40615a, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 7403072357328242341, guid: ed5fdb8d3e523e94ca6d8a239d40615a, - type: 3} + - target: {fileID: 7403072357328242341, guid: ed5fdb8d3e523e94ca6d8a239d40615a, type: 3} propertyPath: m_Camera value: objectReference: {fileID: 1948693200} - - target: {fileID: 7403072357431632352, guid: ed5fdb8d3e523e94ca6d8a239d40615a, - type: 3} + - target: {fileID: 7403072357431632352, guid: ed5fdb8d3e523e94ca6d8a239d40615a, type: 3} propertyPath: m_TargetTransform value: objectReference: {fileID: 1434975003} m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: ed5fdb8d3e523e94ca6d8a239d40615a, type: 3} ---- !u!114 &7578513822832117758 stripped -MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 4763085286836561808, guid: 5eccbf4be2c00e94689ee8062e4e7276, - type: 3} - m_PrefabInstance: {fileID: 3113582726696116334} +--- !u!1 &7578513822832117753 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7578513822832117759} + - component: {fileID: 7578513822832117758} + m_Layer: 0 + m_Name: XR Interaction Manager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &7578513822832117758 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7578513822832117753} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 83e4e6cca11330d4088d729ab4fc9d9f, type: 3} m_Name: m_EditorClassIdentifier: + m_StartingHoverFilters: [] + m_StartingSelectFilters: [] +--- !u!4 &7578513822832117759 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7578513822832117753} + 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: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &7578513823358268780 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7578513823358268787} + - component: {fileID: 7578513823358268786} + - component: {fileID: 7578513823358268784} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &7578513823358268784 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7578513823358268780} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ab68ce6587aab0146b8dabefbd806791, type: 3} + m_Name: + m_EditorClassIdentifier: + m_SendPointerHoverToParent: 1 + m_ClickSpeed: 0.3 + m_MoveDeadzone: 0.6 + m_RepeatDelay: 0.5 + m_RepeatRate: 0.1 + m_TrackedDeviceDragThresholdMultiplier: 2 + m_TrackedScrollDeltaMultiplier: 5 + m_ActiveInputMode: 1 + m_EnableXRInput: 1 + m_EnableMouseInput: 1 + m_EnableTouchInput: 1 + m_PointAction: {fileID: 2869410428622933342, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_LeftClickAction: {fileID: 1855836014308820768, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_MiddleClickAction: {fileID: -6289560987278519447, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_RightClickAction: {fileID: -2562941478296515153, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_ScrollWheelAction: {fileID: 5825226938762934180, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_NavigateAction: {fileID: -7967456002180160679, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_SubmitAction: {fileID: 3994978066732806534, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_CancelAction: {fileID: 2387711382375263438, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_EnableBuiltinActionsAsFallback: 1 + m_EnableGamepadInput: 1 + m_EnableJoystickInput: 1 + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel +--- !u!114 &7578513823358268786 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7578513823358268780} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 10 +--- !u!4 &7578513823358268787 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7578513823358268780} + 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: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &9108665820597706860 stripped MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 3145480085366568720, guid: cc0d6bd3aca3b5d4a986e27ce112e071, - type: 3} + m_CorrespondingSourceObject: {fileID: 3145480085366568720, guid: cc0d6bd3aca3b5d4a986e27ce112e071, type: 3} m_PrefabInstance: {fileID: 6183026901525796732} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 0} @@ -9985,11 +9038,3 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} m_Name: m_EditorClassIdentifier: ---- !u!1660057539 &9223372036854775807 -SceneRoots: - m_ObjectHideFlags: 0 - m_Roots: - - {fileID: 3113582726696116334} - - {fileID: 257810523} - - {fileID: 7403072357405031663} - - {fileID: 1434975003} diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoScene.unity.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoScene.unity.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoScene.unity.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoScene.unity.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/AffordanceThemes.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Affordances.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/AffordanceThemes.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Affordances.meta diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Affordances/Audio.asset b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Affordances/Audio.asset new file mode 100644 index 00000000..b0492956 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Affordances/Audio.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ec1bfd616c6df22671818cecba74f2ad090d6f19e0bda8ce7dbce510a66ada4d +size 1183 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/AffordanceThemes/AudioAffordanceTheme.asset.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Affordances/Audio.asset.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/AffordanceThemes/AudioAffordanceTheme.asset.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Affordances/Audio.asset.meta diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Affordances/BlendShapeValue.asset b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Affordances/BlendShapeValue.asset new file mode 100644 index 00000000..4d15c9f0 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Affordances/BlendShapeValue.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:782b612d4f2201289e8790b3744f4a2647fa30804889a71cbdf084f4f6e9c519 +size 1750 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/AffordanceThemes/Chess/InteractionBlendShapeAffordanceTheme.asset.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Affordances/BlendShapeValue.asset.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/AffordanceThemes/Chess/InteractionBlendShapeAffordanceTheme.asset.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Affordances/BlendShapeValue.asset.meta diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Affordances/CapsuleScale.asset b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Affordances/CapsuleScale.asset new file mode 100644 index 00000000..18fee749 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Affordances/CapsuleScale.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a09defbffeded2aa9cf544c4c4d040d53236e0812df79063ed6e032386434663 +size 2316 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/AffordanceThemes/CapsuleScaleTheme.asset.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Affordances/CapsuleScale.asset.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/AffordanceThemes/CapsuleScaleTheme.asset.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Affordances/CapsuleScale.asset.meta diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Affordances/ChessPieceColor.asset b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Affordances/ChessPieceColor.asset new file mode 100644 index 00000000..f3dea383 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Affordances/ChessPieceColor.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:49f11b46bfe1463ce5ffb8f49a5af8cff6587a2cb2cd08cf02346e06f571bbb1 +size 2281 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/AffordanceThemes/Chess/WhiteChessPieceColorTheme.asset.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Affordances/ChessPieceColor.asset.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/AffordanceThemes/Chess/WhiteChessPieceColorTheme.asset.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Affordances/ChessPieceColor.asset.meta diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Affordances/LargeScale.asset b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Affordances/LargeScale.asset new file mode 100644 index 00000000..f6015c53 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Affordances/LargeScale.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ebe958fb105d6409dfb09a1591c246da45beba214b0b6c42ff5debc60ce8d2a +size 1751 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/AffordanceThemes/InteractionLargeScaleAffordanceTheme.asset.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Affordances/LargeScale.asset.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/AffordanceThemes/InteractionLargeScaleAffordanceTheme.asset.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Affordances/LargeScale.asset.meta diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Affordances/Scale.asset b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Affordances/Scale.asset new file mode 100644 index 00000000..af820b2c --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Affordances/Scale.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e178d15cc1f5794f5262cd4068fec922bd927cf593f961eecf46390deb05af1 +size 1745 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/AffordanceThemes/InteractionScaleAffordanceTheme.asset.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Affordances/Scale.asset.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/AffordanceThemes/InteractionScaleAffordanceTheme.asset.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Affordances/Scale.asset.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Audio.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Audio.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Audio.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Audio.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Audio/ButtonClick.wav b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Audio/ButtonClick.wav similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Audio/ButtonClick.wav rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Audio/ButtonClick.wav diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Audio/ButtonClick.wav.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Audio/ButtonClick.wav.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Audio/ButtonClick.wav.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Audio/ButtonClick.wav.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Audio/ButtonHover.wav b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Audio/ButtonHover.wav similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Audio/ButtonHover.wav rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Audio/ButtonHover.wav diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Audio/ButtonHover.wav.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Audio/ButtonHover.wav.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Audio/ButtonHover.wav.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Audio/ButtonHover.wav.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Materials.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Materials.meta diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Materials/AccentButton.mat b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Materials/AccentButton.mat new file mode 100644 index 00000000..37406b91 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Materials/AccentButton.mat @@ -0,0 +1,180 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-8120562580438748798 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: AccentButton + m_Shader: {fileID: 4800000, guid: 8d2bb70cbf9db8d4da26e15b26e74248, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + 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} + - _MainTexture: + 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} + - _NormalMap: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _BUILTIN_AlphaClip: 0 + - _BUILTIN_Blend: 0 + - _BUILTIN_CullMode: 2 + - _BUILTIN_DstBlend: 0 + - _BUILTIN_QueueControl: 0 + - _BUILTIN_QueueOffset: 0 + - _BUILTIN_SrcBlend: 1 + - _BUILTIN_Surface: 0 + - _BUILTIN_ZTest: 4 + - _BUILTIN_ZWrite: 1 + - _BUILTIN_ZWriteControl: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _CastShadows: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _NormalStrength: 0.2 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueControl: 0 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _RimPower: 5 + - _Shininess: 0 + - _Smoothness: 0.5 + - _SmoothnessSource: 0 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZTest: 4 + - _ZWrite: 1 + - _ZWriteControl: 0 + m_Colors: + - _BaseColor: {r: 0.9275999, g: 0.58167726, b: 0.58167726, a: 1} + - _Color: {r: 0.9275999, g: 0.5816772, b: 0.5816772, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _NormalOffset: {r: 0, g: 0, b: 0, a: 0} + - _NormalTiling: {r: 1, g: 1, b: 0, a: 0} + - _RimColor: {r: 1, g: 1, b: 1, a: 0.5803922} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] +--- !u!114 &1604840317777982163 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: 639247ca83abc874e893eb93af2b5e44, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 0 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials/AccentButton.mat.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Materials/AccentButton.mat.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials/AccentButton.mat.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Materials/AccentButton.mat.meta diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Materials/ChessPiece.mat b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Materials/ChessPiece.mat new file mode 100644 index 00000000..f7aaf407 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Materials/ChessPiece.mat @@ -0,0 +1,167 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-4177236750999561618 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: 639247ca83abc874e893eb93af2b5e44, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 0 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: ChessPiece + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _BUILTIN_AlphaClip: 0 + - _BUILTIN_Blend: 0 + - _BUILTIN_CullMode: 2 + - _BUILTIN_DstBlend: 0 + - _BUILTIN_QueueControl: 0 + - _BUILTIN_QueueOffset: 0 + - _BUILTIN_SrcBlend: 1 + - _BUILTIN_Surface: 0 + - _BUILTIN_ZTest: 4 + - _BUILTIN_ZWrite: 1 + - _BUILTIN_ZWriteControl: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _CastShadows: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossinessSource: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueControl: 0 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Shininess: 0 + - _Smoothness: 0.5 + - _SmoothnessSource: 0 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZTest: 4 + - _ZWrite: 1 + - _ZWriteControl: 0 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] +--- !u!114 &7412609096850590555 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials/ChessPiece.mat.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Materials/ChessPiece.mat.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials/ChessPiece.mat.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Materials/ChessPiece.mat.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials/Chrome.mat b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Materials/Chrome.mat similarity index 75% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials/Chrome.mat rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Materials/Chrome.mat index c7748fe1..4239ce7b 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials/Chrome.mat +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Materials/Chrome.mat @@ -12,7 +12,20 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 4 + version: 7 +--- !u!114 &-4118503124237194887 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: 639247ca83abc874e893eb93af2b5e44, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 0 --- !u!21 &2100000 Material: serializedVersion: 8 @@ -21,15 +34,19 @@ Material: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_Name: Chrome - m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 m_ValidKeywords: [] m_InvalidKeywords: [] m_LightmapFlags: 4 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 m_CustomRenderQueue: -1 - stringTagMap: {} + stringTagMap: + RenderType: Opaque disabledShaderPasses: [] + m_LockedProperties: m_SavedProperties: serializedVersion: 3 m_TexEnvs: @@ -92,8 +109,22 @@ Material: m_Ints: [] m_Floats: - _AlphaClip: 0 + - _AlphaToMask: 0 + - _BUILTIN_AlphaClip: 0 + - _BUILTIN_Blend: 0 + - _BUILTIN_CullMode: 2 + - _BUILTIN_DstBlend: 0 + - _BUILTIN_QueueControl: 0 + - _BUILTIN_QueueOffset: 0 + - _BUILTIN_SrcBlend: 1 + - _BUILTIN_Surface: 0 + - _BUILTIN_ZTest: 4 + - _BUILTIN_ZWrite: 1 + - _BUILTIN_ZWriteControl: 0 - _Blend: 0 + - _BlendModePreserveSpecular: 1 - _BumpScale: 1 + - _CastShadows: 1 - _ClearCoatMask: 0 - _ClearCoatSmoothness: 0 - _Cull: 2 @@ -101,6 +132,7 @@ Material: - _DetailAlbedoMapScale: 1 - _DetailNormalMapScale: 1 - _DstBlend: 0 + - _DstBlendAlpha: 0 - _EnvironmentReflections: 1 - _GlossMapScale: 1 - _Glossiness: 0.251 @@ -109,16 +141,20 @@ Material: - _Mode: 0 - _OcclusionStrength: 1 - _Parallax: 0.02 + - _QueueControl: 0 - _QueueOffset: 0 - _ReceiveShadows: 1 - _Smoothness: 0.7 - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 - _SrcBlend: 1 + - _SrcBlendAlpha: 1 - _Surface: 0 - _UVSec: 0 - _WorkflowMode: 1 + - _ZTest: 4 - _ZWrite: 1 + - _ZWriteControl: 0 m_Colors: - _BaseColor: {r: 0.61483705, g: 0.7287318, b: 0.71826583, a: 1} - _Color: {r: 0.61483705, g: 0.7287318, b: 0.71826583, a: 1} diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials/Chrome.mat.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Materials/Chrome.mat.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials/Chrome.mat.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Materials/Chrome.mat.meta diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Materials/Controls_Black.mat b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Materials/Controls_Black.mat new file mode 100644 index 00000000..42563f3b --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Materials/Controls_Black.mat @@ -0,0 +1,167 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-8512279004525987911 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: 639247ca83abc874e893eb93af2b5e44, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 0 +--- !u!114 &-6052782388386979577 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Controls_Black + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _BUILTIN_AlphaClip: 0 + - _BUILTIN_Blend: 0 + - _BUILTIN_CullMode: 2 + - _BUILTIN_DstBlend: 0 + - _BUILTIN_QueueControl: 0 + - _BUILTIN_QueueOffset: 0 + - _BUILTIN_SrcBlend: 1 + - _BUILTIN_Surface: 0 + - _BUILTIN_ZTest: 4 + - _BUILTIN_ZWrite: 1 + - _BUILTIN_ZWriteControl: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _CastShadows: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueControl: 0 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Shininess: 0 + - _Smoothness: 0.672 + - _SmoothnessSource: 0 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZTest: 4 + - _ZWrite: 1 + - _ZWriteControl: 0 + m_Colors: + - _BaseColor: {r: 0.254717, g: 0.2535155, b: 0.2535155, a: 1} + - _Color: {r: 0.25471696, g: 0.25351545, b: 0.25351545, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials/Controls_Black.mat.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Materials/Controls_Black.mat.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials/Controls_Black.mat.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Materials/Controls_Black.mat.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials/FrameOutline.mat b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Materials/FrameOutline.mat similarity index 72% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials/FrameOutline.mat rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Materials/FrameOutline.mat index 90a6dd2d..c430b29f 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials/FrameOutline.mat +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Materials/FrameOutline.mat @@ -8,18 +8,23 @@ Material: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_Name: FrameOutline - m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 m_ValidKeywords: + - _SURFACE_TYPE_TRANSPARENT + m_InvalidKeywords: - _ALPHABLEND_ON - m_InvalidKeywords: [] m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 + m_EnableInstancingVariants: 1 m_DoubleSidedGI: 0 m_CustomRenderQueue: 3000 stringTagMap: RenderType: Transparent disabledShaderPasses: + - DepthOnly - SHADOWCASTER + m_LockedProperties: m_SavedProperties: serializedVersion: 3 m_TexEnvs: @@ -82,8 +87,22 @@ Material: m_Ints: [] m_Floats: - _AlphaClip: 0 + - _AlphaToMask: 0 + - _BUILTIN_AlphaClip: 0 + - _BUILTIN_Blend: 0 + - _BUILTIN_CullMode: 2 + - _BUILTIN_DstBlend: 0 + - _BUILTIN_QueueControl: 1 + - _BUILTIN_QueueOffset: 0 + - _BUILTIN_SrcBlend: 1 + - _BUILTIN_Surface: 0 + - _BUILTIN_ZTest: 4 + - _BUILTIN_ZWrite: 1 + - _BUILTIN_ZWriteControl: 0 - _Blend: 0 + - _BlendModePreserveSpecular: 0 - _BumpScale: 1 + - _CastShadows: 1 - _ClearCoatMask: 0 - _ClearCoatSmoothness: 0 - _Cull: 2 @@ -91,32 +110,50 @@ Material: - _DetailAlbedoMapScale: 1 - _DetailNormalMapScale: 1 - _DstBlend: 10 + - _DstBlendAlpha: 10 - _EnvironmentReflections: 1 - _GlossMapScale: 1 - _Glossiness: 0.5 - _GlossyReflections: 1 - - _Metallic: 0 + - _Metallic: 1 - _Mode: 2 - _OcclusionStrength: 1 - _Parallax: 0.02 + - _QueueControl: 0 - _QueueOffset: 0 - _ReceiveShadows: 1 - _Smoothness: 0.5 - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 - _SrcBlend: 5 + - _SrcBlendAlpha: 1 - _Surface: 1 - _UVSec: 0 - _WorkflowMode: 1 + - _ZTest: 4 - _ZWrite: 0 + - _ZWriteControl: 0 m_Colors: - - _BaseColor: {r: 1, g: 1, b: 1, a: 0.13333334} - - _Color: {r: 1, g: 1, b: 1, a: 0.13333334} + - _BaseColor: {r: 1, g: 1, b: 1, a: 0.12156863} + - _Color: {r: 1, g: 1, b: 1, a: 0.12156863} - _EdgeColor: {r: 1, g: 1, b: 1, a: 0.2627451} - _EdgeData: {r: 0, g: 0.85, b: 0.5, a: 1} - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} m_BuildTextureStacks: [] +--- !u!114 &2933908090109234080 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: 639247ca83abc874e893eb93af2b5e44, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 0 --- !u!114 &9048737277979502610 MonoBehaviour: m_ObjectHideFlags: 11 @@ -129,4 +166,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 4 + version: 7 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials/FrameOutline.mat.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Materials/FrameOutline.mat.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials/FrameOutline.mat.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Materials/FrameOutline.mat.meta diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Materials/Interactable White.mat b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Materials/Interactable White.mat new file mode 100644 index 00000000..f5fc8be1 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Materials/Interactable White.mat @@ -0,0 +1,183 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-3335879748548489386 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: 639247ca83abc874e893eb93af2b5e44, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 0 +--- !u!114 &-2536893978736553219 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Interactable White + m_Shader: {fileID: -6465566751694194690, guid: 0927d29e476ce5843b1f7d2a96943c51, + type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + 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} + - _MainTexture: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: cdebec39dbf81a14688e1de8d12897b4, type: 3} + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Texture2DAsset_46c74e5059524c9b9656d53d13cff555_Out_0: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Texture2DAsset_ced3e0f4340741a1b36c259c8f49d0c7_Out_0: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _BUILTIN_AlphaClip: 0 + - _BUILTIN_Blend: 0 + - _BUILTIN_CullMode: 2 + - _BUILTIN_DstBlend: 0 + - _BUILTIN_QueueControl: 0 + - _BUILTIN_QueueOffset: 0 + - _BUILTIN_SrcBlend: 1 + - _BUILTIN_Surface: 0 + - _BUILTIN_ZTest: 4 + - _BUILTIN_ZWrite: 1 + - _BUILTIN_ZWriteControl: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 0 + - _BumpScale: 1 + - _CastShadows: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0.05 + - _NormalStrength: 0.75 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueControl: 0 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _RimPower: 4 + - _Smoothness: 0.2 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZTest: 4 + - _ZWrite: 1 + - _ZWriteControl: 0 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _BumpOffset: {r: 0, g: 0, b: 0, a: 0} + - _BumpTiling: {r: 4, g: 2, b: 0, a: 0} + - _Color: {r: 0.5686274, g: 0.78431374, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _NormalOffset: {r: 0, g: 0, b: 0, a: 0} + - _NormalTiling: {r: 4, g: 2, b: 0, a: 0} + - _RimColor: {r: 1, g: 1, b: 1, a: 0.09803922} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials/PrimitivesCoral.mat.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Materials/Interactable White.mat.meta similarity index 79% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials/PrimitivesCoral.mat.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Materials/Interactable White.mat.meta index 92477cb0..6b32bc61 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials/PrimitivesCoral.mat.meta +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Materials/Interactable White.mat.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 31a376bc4ad62f24dae7ced0e38f6309 +guid: b3c19a119577be64885886bfcc8792fe NativeFormatImporter: externalObjects: {} mainObjectFileID: 2100000 diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Materials/RPMaterialHandler.asset b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Materials/RPMaterialHandler.asset new file mode 100644 index 00000000..651ba3b7 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Materials/RPMaterialHandler.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f2a873d738e8fbb3fa23cc3b21e55c9dd6d85235950841c9437c9349b86cabe1 +size 2894 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Hand Expression Captures/Fist Expression Capture.asset.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Materials/RPMaterialHandler.asset.meta similarity index 79% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Hand Expression Captures/Fist Expression Capture.asset.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Materials/RPMaterialHandler.asset.meta index 1a58ccfc..268755d3 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Hand Expression Captures/Fist Expression Capture.asset.meta +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Materials/RPMaterialHandler.asset.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 2a7c8ca0feac7cc44a5c225164ef311d +guid: 84966892245e3a742b5a7a3e6d830f34 NativeFormatImporter: externalObjects: {} mainObjectFileID: 11400000 diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Materials/Table Surface.mat b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Materials/Table Surface.mat new file mode 100644 index 00000000..95774ac2 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Materials/Table Surface.mat @@ -0,0 +1,170 @@ +%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: Table Surface + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _BUILTIN_AlphaClip: 0 + - _BUILTIN_Blend: 0 + - _BUILTIN_CullMode: 2 + - _BUILTIN_DstBlend: 0 + - _BUILTIN_QueueControl: 0 + - _BUILTIN_QueueOffset: 0 + - _BUILTIN_SrcBlend: 1 + - _BUILTIN_Surface: 0 + - _BUILTIN_ZTest: 4 + - _BUILTIN_ZWrite: 1 + - _BUILTIN_ZWriteControl: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _BumpStrength: 1 + - _CastShadows: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossinessSource: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueControl: 0 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Shininess: 0 + - _Smoothness: 0.5 + - _SmoothnessSource: 0 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZTest: 4 + - _ZWrite: 1 + - _ZWriteControl: 0 + m_Colors: + - _BaseColor: {r: 0.57155573, g: 0.65465593, b: 0.7169812, a: 1} + - _BumpOffset: {r: 0, g: 0, b: 0, a: 0} + - _BumpTiling: {r: 4, g: 2, b: 0, a: 0} + - _Color: {r: 0.57155573, g: 0.6546559, b: 0.7169812, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] +--- !u!114 &2642942474496021612 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: 639247ca83abc874e893eb93af2b5e44, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 0 +--- !u!114 &7412609096850590555 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials/Table Surface.mat.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Materials/Table Surface.mat.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials/Table Surface.mat.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Materials/Table Surface.mat.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Models.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Models.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Models.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Models.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Models/Chess.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Models/Chess.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Models/Chess.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Models/Chess.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Models/Chess/Chess_Board.fbx b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Models/Chess/Chess_Board.fbx similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Models/Chess/Chess_Board.fbx rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Models/Chess/Chess_Board.fbx diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Models/Chess/Chess_Board.fbx.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Models/Chess/Chess_Board.fbx.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Models/Chess/Chess_Board.fbx.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Models/Chess/Chess_Board.fbx.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Models/Chess/Chess_Pawn.fbx b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Models/Chess/Chess_Pawn.fbx similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Models/Chess/Chess_Pawn.fbx rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Models/Chess/Chess_Pawn.fbx diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Models/Chess/Chess_Pawn.fbx.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Models/Chess/Chess_Pawn.fbx.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Models/Chess/Chess_Pawn.fbx.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Models/Chess/Chess_Pawn.fbx.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Models/Frame.fbx b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Models/Frame.fbx similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Models/Frame.fbx rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Models/Frame.fbx diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Models/Frame.fbx.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Models/Frame.fbx.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Models/Frame.fbx.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Models/Frame.fbx.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Models/Primitives.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Models/Primitives.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Models/Primitives.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Models/Primitives.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Models/Primitives/Cone.fbx b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Models/Primitives/Cone.fbx similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Models/Primitives/Cone.fbx rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Models/Primitives/Cone.fbx diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Models/Primitives/Cone.fbx.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Models/Primitives/Cone.fbx.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Models/Primitives/Cone.fbx.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Models/Primitives/Cone.fbx.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Models/Primitives/Cube.fbx b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Models/Primitives/Cube.fbx similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Models/Primitives/Cube.fbx rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Models/Primitives/Cube.fbx diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Models/Primitives/Cube.fbx.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Models/Primitives/Cube.fbx.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Models/Primitives/Cube.fbx.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Models/Primitives/Cube.fbx.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Models/Primitives/Cylinder.fbx b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Models/Primitives/Cylinder.fbx similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Models/Primitives/Cylinder.fbx rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Models/Primitives/Cylinder.fbx diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Models/Primitives/Cylinder.fbx.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Models/Primitives/Cylinder.fbx.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Models/Primitives/Cylinder.fbx.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Models/Primitives/Cylinder.fbx.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Models/Primitives/Disc.fbx b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Models/Primitives/Disc.fbx similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Models/Primitives/Disc.fbx rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Models/Primitives/Disc.fbx diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Models/Primitives/Disc.fbx.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Models/Primitives/Disc.fbx.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Models/Primitives/Disc.fbx.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Models/Primitives/Disc.fbx.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Models/VirtualTabletop.fbx b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Models/VirtualTabletop.fbx similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Models/VirtualTabletop.fbx rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Models/VirtualTabletop.fbx diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Models/VirtualTabletop.fbx.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Models/VirtualTabletop.fbx.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Models/VirtualTabletop.fbx.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Models/VirtualTabletop.fbx.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Arrow.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Arrow.prefab similarity index 63% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Arrow.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Arrow.prefab index e8f5ff4a..1585a842 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Arrow.prefab +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Arrow.prefab @@ -1,123 +1,5 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: ---- !u!1 &65600830325180216 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 65600830325180217} - - component: {fileID: 65600830325180219} - - component: {fileID: 65600830325180218} - m_Layer: 0 - m_Name: ColorAffordance - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &65600830325180217 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 65600830325180216} - 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: 339307769875072284} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &65600830325180219 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 65600830325180216} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 1410cbaaadf84a7aaa6459d37ad21b3a, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Renderer: {fileID: 7670699472714972690} - m_MaterialIndex: 0 ---- !u!114 &65600830325180218 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 65600830325180216} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f86d13fca2ec430d870c0f7765ad0dde, type: 3} - m_Name: - m_EditorClassIdentifier: - m_AffordanceStateProvider: {fileID: 1741595051117736027} - m_ReplaceIdleStateValueWithInitialValue: 1 - m_AffordanceThemeDatum: - m_UseConstant: 0 - m_ConstantValue: - m_StateAnimationCurve: - m_UseConstant: 1 - m_ConstantValue: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - m_Variable: {fileID: 0} - m_List: - - stateName: disabled - animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} - animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} - - stateName: idle - animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} - animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} - - stateName: hovered - animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} - animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} - - stateName: hoveredPriority - animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} - animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} - - stateName: selected - animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} - animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} - - stateName: activated - animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} - animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} - m_ColorBlendMode: 0 - m_BlendAmount: 1 - m_Variable: {fileID: 11400000, guid: 2447c2ae63ed301429bb0f32f88ef8ce, type: 2} - m_ValueUpdated: - m_PersistentCalls: - m_Calls: [] - m_MaterialPropertyBlockHelper: {fileID: 65600830325180219} - m_ColorPropertyName: --- !u!1 &4318511848014193775 GameObject: m_ObjectHideFlags: 0 @@ -151,7 +33,7 @@ Transform: m_Children: - {fileID: 4905619921565087965} m_Father: {fileID: 5013556786019211059} - m_RootOrder: 1 + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90} --- !u!33 &2418615375201463647 MeshFilter: @@ -181,7 +63,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 31a376bc4ad62f24dae7ced0e38f6309, type: 2} + - {fileID: 2100000, guid: 76618f7490c40334fa7b685859587d2e, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -216,6 +98,104 @@ SphereCollider: serializedVersion: 2 m_Radius: 0.006500003 m_Center: {x: 0, y: -0.002, z: 0} +--- !u!1 &8236831428665510606 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4905619921565087965} + - component: {fileID: 4129596266679649003} + - component: {fileID: 7670699472714972690} + - component: {fileID: 4477334520055318792} + m_Layer: 0 + m_Name: Cylinder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4905619921565087965 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8236831428665510606} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: -0.0096, z: -0} + m_LocalScale: {x: 0.41586, y: 1.3768293, z: 0.41586} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4978570559794932741} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &4129596266679649003 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8236831428665510606} + m_Mesh: {fileID: -5076798556035486163, guid: bf65382e5e6d14e7f8140e4204ce07e2, type: 3} +--- !u!23 &7670699472714972690 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8236831428665510606} + 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: 76618f7490c40334fa7b685859587d2e, 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!136 &4477334520055318792 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8236831428665510606} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.005500003 + m_Height: 0.0100000035 + m_Direction: 1 + m_Center: {x: 0, y: -0.001, z: 0} --- !u!1 &8343167407413159200 GameObject: m_ObjectHideFlags: 0 @@ -247,8 +227,8 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 339307769875072284} - {fileID: 4978570559794932741} + - {fileID: 8777580590156759232} m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -282,9 +262,6 @@ MonoBehaviour: m_EditorClassIdentifier: m_InteractionManager: {fileID: 0} m_Colliders: [] - m_InteractionLayerMask: - serializedVersion: 2 - m_Bits: 4294967295 m_InteractionLayers: m_Bits: 1 m_DistanceCalculationMode: 1 @@ -343,33 +320,6 @@ MonoBehaviour: m_StartingHoverFilters: [] m_StartingSelectFilters: [] m_StartingInteractionStrengthFilters: [] - m_OnFirstHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnLastHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectEntered: - m_PersistentCalls: - m_Calls: [] - m_OnSelectExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectCanceled: - m_PersistentCalls: - m_Calls: [] - m_OnActivate: - m_PersistentCalls: - m_Calls: [] - m_OnDeactivate: - m_PersistentCalls: - m_Calls: [] m_AttachTransform: {fileID: 0} m_SecondaryAttachTransform: {fileID: 0} m_UseDynamicAttach: 1 @@ -416,10 +366,10 @@ MonoBehaviour: m_ThrowAngularVelocityScale: 1 m_ForceGravityOnDetach: 0 m_RetainTransformParent: 1 - m_AttachPointCompatibilityMode: 0 m_StartingSingleGrabTransformers: [] m_StartingMultipleGrabTransformers: [] m_AddDefaultGrabTransformers: 1 + m_FarAttachMode: 0 --- !u!114 &8343167407413159203 MonoBehaviour: m_ObjectHideFlags: 0 @@ -443,84 +393,269 @@ MonoBehaviour: m_MinimumScaleRatio: 0.25 m_MaximumScaleRatio: 3 m_ScaleMultiplier: 0.25 ---- !u!1001 &65600831374321780 +--- !u!1 &8439317372374805806 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3848225726396102574} + - component: {fileID: 5408859887124869817} + - component: {fileID: 8874141616362956421} + - component: {fileID: 2522668584211318101} + m_Layer: 0 + m_Name: Material Affordance + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3848225726396102574 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8439317372374805806} + 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: 8777580590156759232} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &5408859887124869817 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8439317372374805806} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1410cbaaadf84a7aaa6459d37ad21b3a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Renderer: {fileID: 7670699472714972690} + m_MaterialIndex: 0 +--- !u!114 &8874141616362956421 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8439317372374805806} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f86d13fca2ec430d870c0f7765ad0dde, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AffordanceStateProvider: {fileID: 5114438700417830185} + m_ReplaceIdleStateValueWithInitialValue: 0 + m_AffordanceThemeDatum: + m_UseConstant: 0 + m_ConstantValue: + m_StateAnimationCurve: + m_UseConstant: 1 + m_ConstantValue: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Variable: {fileID: 0} + m_List: + - stateName: disabled + animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} + animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} + - stateName: idle + animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} + animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} + - stateName: hovered + animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} + animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} + - stateName: hoveredPriority + animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} + animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} + - stateName: selected + animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} + animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} + - stateName: activated + animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} + animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} + - stateName: focused + animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} + animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} + m_ColorBlendMode: 0 + m_BlendAmount: 1 + m_Variable: {fileID: 11400000, guid: 8b0b5aede76faac438e02d2a468f4805, type: 2} + m_ValueUpdated: + m_PersistentCalls: + m_Calls: [] + m_MaterialPropertyBlockHelper: {fileID: 5408859887124869817} + m_ColorPropertyName: _RimColor +--- !u!114 &2522668584211318101 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8439317372374805806} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 629ea686265f47f082ba5732cffad1cf, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AffordanceStateProvider: {fileID: 5114438700417830185} + m_ReplaceIdleStateValueWithInitialValue: 0 + m_AffordanceThemeDatum: + m_UseConstant: 0 + m_ConstantValue: + m_StateAnimationCurve: + m_UseConstant: 1 + m_ConstantValue: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Variable: {fileID: 0} + m_List: + - stateName: disabled + animationStateStartValue: 0 + animationStateEndValue: 0 + - stateName: idle + animationStateStartValue: 0 + animationStateEndValue: 0 + - stateName: hovered + animationStateStartValue: 0 + animationStateEndValue: 0 + - stateName: hoveredPriority + animationStateStartValue: 0 + animationStateEndValue: 0 + - stateName: selected + animationStateStartValue: 0 + animationStateEndValue: 0 + - stateName: activated + animationStateStartValue: 0 + animationStateEndValue: 0 + - stateName: focused + animationStateStartValue: 0 + animationStateEndValue: 0 + m_Variable: {fileID: 11400000, guid: 795305341a8dbbd46ae54e9a01d6ea95, type: 2} + m_ValueUpdated: + m_PersistentCalls: + m_Calls: [] + m_MaterialPropertyBlockHelper: {fileID: 5408859887124869817} + m_FloatPropertyName: _RimPower +--- !u!1001 &3542471709012220395 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: m_TransformParent: {fileID: 5013556786019211059} m_Modifications: - - target: {fileID: 314259139610439016, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} - propertyPath: m_RootOrder - value: 0 + - target: {fileID: 3774509235512974894, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_Name + value: Highlight Interaction Affordance objectReference: {fileID: 0} - - target: {fileID: 314259139610439016, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 314259139610439016, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 314259139610439016, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 314259139610439016, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 314259139610439016, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 314259139610439016, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 314259139610439016, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 314259139610439016, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 314259139610439016, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 314259139610439016, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 1784108126610004015, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} - propertyPath: m_InteractableSource - value: - objectReference: {fileID: 8343167407413159201} - - target: {fileID: 4104645014554624858, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} + - target: {fileID: 7396278978564332023, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_Renderer value: objectReference: {fileID: 8159150361180033376} - - target: {fileID: 4696973491166461409, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} - propertyPath: m_Name - value: InteractionAffordance - objectReference: {fileID: 0} - - target: {fileID: 7275325890891809550, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} - propertyPath: m_RootOrder - value: 2 - objectReference: {fileID: 0} + - target: {fileID: 8634317094661461186, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_InteractableSource + value: + objectReference: {fileID: 8343167407413159201} m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} ---- !u!4 &339307769875072284 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 314259139610439016, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} - m_PrefabInstance: {fileID: 65600831374321780} - m_PrefabAsset: {fileID: 0} ---- !u!114 &1741595051117736027 stripped + m_SourcePrefab: {fileID: 100100000, guid: 6b12f432fa58c224baf0d659706362be, type: 3} +--- !u!114 &5114438700417830185 stripped MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 1784108126610004015, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} - m_PrefabInstance: {fileID: 65600831374321780} + m_CorrespondingSourceObject: {fileID: 8634317094661461186, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + m_PrefabInstance: {fileID: 3542471709012220395} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 0} m_Enabled: 1 @@ -528,110 +663,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 49e0a5b5ff5540f5b14dd29d46faec22, type: 3} m_Name: m_EditorClassIdentifier: ---- !u!1001 &103292096675238855 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 4978570559794932741} - m_Modifications: - - target: {fileID: -6860895033569716450, guid: bf65382e5e6d14e7f8140e4204ce07e2, type: 3} - propertyPath: m_Convex - value: 1 - objectReference: {fileID: 0} - - target: {fileID: -4216859302048453862, guid: bf65382e5e6d14e7f8140e4204ce07e2, type: 3} - propertyPath: m_RootOrder - value: 0 - objectReference: {fileID: 0} - - target: {fileID: -4216859302048453862, guid: bf65382e5e6d14e7f8140e4204ce07e2, type: 3} - propertyPath: m_LocalScale.x - value: 0.41586 - objectReference: {fileID: 0} - - target: {fileID: -4216859302048453862, guid: bf65382e5e6d14e7f8140e4204ce07e2, type: 3} - propertyPath: m_LocalScale.y - value: 1.3768293 - objectReference: {fileID: 0} - - target: {fileID: -4216859302048453862, guid: bf65382e5e6d14e7f8140e4204ce07e2, type: 3} - propertyPath: m_LocalScale.z - value: 0.41586 - objectReference: {fileID: 0} - - target: {fileID: -4216859302048453862, guid: bf65382e5e6d14e7f8140e4204ce07e2, type: 3} - propertyPath: m_LocalPosition.x - value: -0 - objectReference: {fileID: 0} - - target: {fileID: -4216859302048453862, guid: bf65382e5e6d14e7f8140e4204ce07e2, type: 3} - propertyPath: m_LocalPosition.y - value: -0.0096 - objectReference: {fileID: 0} - - target: {fileID: -4216859302048453862, guid: bf65382e5e6d14e7f8140e4204ce07e2, type: 3} - propertyPath: m_LocalPosition.z - value: -0 - objectReference: {fileID: 0} - - target: {fileID: -4216859302048453862, guid: bf65382e5e6d14e7f8140e4204ce07e2, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: -4216859302048453862, guid: bf65382e5e6d14e7f8140e4204ce07e2, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: -4216859302048453862, guid: bf65382e5e6d14e7f8140e4204ce07e2, type: 3} - propertyPath: m_LocalRotation.y - value: -0 - objectReference: {fileID: 0} - - target: {fileID: -4216859302048453862, guid: bf65382e5e6d14e7f8140e4204ce07e2, type: 3} - propertyPath: m_LocalRotation.z - value: -0 - objectReference: {fileID: 0} - - target: {fileID: -4216859302048453862, guid: bf65382e5e6d14e7f8140e4204ce07e2, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: -4216859302048453862, guid: bf65382e5e6d14e7f8140e4204ce07e2, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: -4216859302048453862, guid: bf65382e5e6d14e7f8140e4204ce07e2, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: -1504981713932161579, guid: bf65382e5e6d14e7f8140e4204ce07e2, type: 3} - propertyPath: m_Materials.Array.data[0] - value: - objectReference: {fileID: 2100000, guid: 31a376bc4ad62f24dae7ced0e38f6309, type: 2} - - target: {fileID: -927199367670048503, guid: bf65382e5e6d14e7f8140e4204ce07e2, type: 3} - propertyPath: m_Name - value: Cylinder - objectReference: {fileID: 0} - m_RemovedComponents: - - {fileID: -6860895033569716450, guid: bf65382e5e6d14e7f8140e4204ce07e2, type: 3} - m_SourcePrefab: {fileID: 100100000, guid: bf65382e5e6d14e7f8140e4204ce07e2, type: 3} ---- !u!4 &4905619921565087965 stripped +--- !u!4 &8777580590156759232 stripped Transform: - m_CorrespondingSourceObject: {fileID: -4216859302048453862, guid: bf65382e5e6d14e7f8140e4204ce07e2, type: 3} - m_PrefabInstance: {fileID: 103292096675238855} + m_CorrespondingSourceObject: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + m_PrefabInstance: {fileID: 3542471709012220395} m_PrefabAsset: {fileID: 0} ---- !u!23 &7670699472714972690 stripped -MeshRenderer: - m_CorrespondingSourceObject: {fileID: -1504981713932161579, guid: bf65382e5e6d14e7f8140e4204ce07e2, type: 3} - m_PrefabInstance: {fileID: 103292096675238855} - m_PrefabAsset: {fileID: 0} ---- !u!1 &8236831428665510606 stripped -GameObject: - m_CorrespondingSourceObject: {fileID: -927199367670048503, guid: bf65382e5e6d14e7f8140e4204ce07e2, type: 3} - m_PrefabInstance: {fileID: 103292096675238855} - m_PrefabAsset: {fileID: 0} ---- !u!136 &4477334520055318792 -CapsuleCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8236831428665510606} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - m_Radius: 0.005500003 - m_Height: 0.0100000035 - m_Direction: 1 - m_Center: {x: 0, y: -0.001, z: 0} diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Arrow.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Arrow.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Arrow.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Arrow.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/AudioAffordance.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/AudioAffordance.prefab new file mode 100644 index 00000000..a0e6ecd9 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/AudioAffordance.prefab @@ -0,0 +1,171 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1515492005369169331 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8501457409089496690} + - component: {fileID: 6772632406345170694} + - component: {fileID: 5746416808058614602} + m_Layer: 0 + m_Name: AudioAffordance + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8501457409089496690 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1515492005369169331} + 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!82 &6772632406345170694 +AudioSource: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1515492005369169331} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 0} + m_PlayOnAwake: 0 + 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.75 + 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 &5746416808058614602 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1515492005369169331} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 186056f485a2493b80cc81571ac8cd9b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AffordanceStateProvider: {fileID: 0} + m_AffordanceThemeDatum: + m_UseConstant: 0 + m_ConstantValue: + m_List: + - stateName: disabled + stateEntered: {fileID: 0} + stateExited: {fileID: 0} + - stateName: idle + stateEntered: {fileID: 0} + stateExited: {fileID: 0} + - stateName: hovered + stateEntered: {fileID: 0} + stateExited: {fileID: 0} + - stateName: hoveredPriority + stateEntered: {fileID: 0} + stateExited: {fileID: 0} + - stateName: selected + stateEntered: {fileID: 0} + stateExited: {fileID: 0} + - stateName: activated + stateEntered: {fileID: 0} + stateExited: {fileID: 0} + - stateName: focused + stateEntered: {fileID: 0} + stateExited: {fileID: 0} + m_Variable: {fileID: 11400000, guid: 57def9352cdee8548bfc9ebc6a55914a, type: 2} + m_AudioSource: {fileID: 6772632406345170694} diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/Affordances/Hand Ray Interactor Affordances.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/AudioAffordance.prefab.meta similarity index 74% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/Affordances/Hand Ray Interactor Affordances.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/AudioAffordance.prefab.meta index 96afb7f2..d4469af5 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/Affordances/Hand Ray Interactor Affordances.prefab.meta +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/AudioAffordance.prefab.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: e411b46c5d2514e49b26bd300e9ed8ce +guid: 1c54cdd9a14d96049a8d37d422bd0e17 PrefabImporter: externalObjects: {} userData: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Cube.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Cube.prefab similarity index 79% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Cube.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Cube.prefab index 24ef3df8..da866bc8 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Cube.prefab +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Cube.prefab @@ -32,7 +32,7 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 9171031756790316709} - m_RootOrder: 1 + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 116.218, y: -85.48, z: -18.765} --- !u!33 &8468258526941819482 MeshFilter: @@ -62,7 +62,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 31a376bc4ad62f24dae7ced0e38f6309, type: 2} + - {fileID: 2100000, guid: 76618f7490c40334fa7b685859587d2e, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -128,8 +128,8 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 5826992523391476019} - {fileID: 8715892259302707255} + - {fileID: 2591278628457874792} m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -163,9 +163,6 @@ MonoBehaviour: m_EditorClassIdentifier: m_InteractionManager: {fileID: 0} m_Colliders: [] - m_InteractionLayerMask: - serializedVersion: 2 - m_Bits: 4294967295 m_InteractionLayers: m_Bits: 1 m_DistanceCalculationMode: 1 @@ -224,33 +221,6 @@ MonoBehaviour: m_StartingHoverFilters: [] m_StartingSelectFilters: [] m_StartingInteractionStrengthFilters: [] - m_OnFirstHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnLastHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectEntered: - m_PersistentCalls: - m_Calls: [] - m_OnSelectExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectCanceled: - m_PersistentCalls: - m_Calls: [] - m_OnActivate: - m_PersistentCalls: - m_Calls: [] - m_OnDeactivate: - m_PersistentCalls: - m_Calls: [] m_AttachTransform: {fileID: 0} m_SecondaryAttachTransform: {fileID: 0} m_UseDynamicAttach: 1 @@ -297,10 +267,10 @@ MonoBehaviour: m_ThrowAngularVelocityScale: 1 m_ForceGravityOnDetach: 0 m_RetainTransformParent: 1 - m_AttachPointCompatibilityMode: 0 m_StartingSingleGrabTransformers: [] m_StartingMultipleGrabTransformers: [] m_AddDefaultGrabTransformers: 1 + m_FarAttachMode: 0 --- !u!114 &1988286665728152634 MonoBehaviour: m_ObjectHideFlags: 0 @@ -324,73 +294,73 @@ MonoBehaviour: m_MinimumScaleRatio: 0.25 m_MaximumScaleRatio: 3 m_ScaleMultiplier: 0.25 ---- !u!1001 &6089389885339028571 +--- !u!1001 &7714466481515797571 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: m_TransformParent: {fileID: 9171031756790316709} m_Modifications: - - target: {fileID: 314259139610439016, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} - propertyPath: m_RootOrder - value: 0 + - target: {fileID: 3774509235512974894, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_Name + value: Highlight Interaction Affordance objectReference: {fileID: 0} - - target: {fileID: 314259139610439016, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 314259139610439016, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 314259139610439016, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 314259139610439016, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 314259139610439016, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 314259139610439016, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 314259139610439016, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 314259139610439016, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 314259139610439016, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 314259139610439016, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 1784108126610004015, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} - propertyPath: m_InteractableSource - value: - objectReference: {fileID: 5268460675038366903} - - target: {fileID: 4104645014554624858, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} + - target: {fileID: 7396278978564332023, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_Renderer value: objectReference: {fileID: 2603633290551499573} - - target: {fileID: 4696973491166461409, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} - propertyPath: m_Name - value: InteractionAffordance - objectReference: {fileID: 0} + - target: {fileID: 8634317094661461186, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_InteractableSource + value: + objectReference: {fileID: 5268460675038366903} m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} ---- !u!4 &5826992523391476019 stripped + m_SourcePrefab: {fileID: 100100000, guid: 6b12f432fa58c224baf0d659706362be, type: 3} +--- !u!4 &2591278628457874792 stripped Transform: - m_CorrespondingSourceObject: {fileID: 314259139610439016, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} - m_PrefabInstance: {fileID: 6089389885339028571} + m_CorrespondingSourceObject: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + m_PrefabInstance: {fileID: 7714466481515797571} m_PrefabAsset: {fileID: 0} diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Cube.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Cube.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Cube.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Cube.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Cylinder.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Cylinder.prefab similarity index 79% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Cylinder.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Cylinder.prefab index f9975b7a..0ca23ac9 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Cylinder.prefab +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Cylinder.prefab @@ -32,7 +32,7 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 8746220130012963387} - m_RootOrder: 1 + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: -29.64} --- !u!33 &4802184161675562276 MeshFilter: @@ -62,7 +62,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 3a84a7b91ec88714486e0c4cc9a5dc01, type: 2} + - {fileID: 2100000, guid: 76618f7490c40334fa7b685859587d2e, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -129,8 +129,8 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 4054960490887300887} - {fileID: 256826899755551065} + - {fileID: 3066043236613899732} m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -164,9 +164,6 @@ MonoBehaviour: m_EditorClassIdentifier: m_InteractionManager: {fileID: 0} m_Colliders: [] - m_InteractionLayerMask: - serializedVersion: 2 - m_Bits: 4294967295 m_InteractionLayers: m_Bits: 1 m_DistanceCalculationMode: 1 @@ -225,33 +222,6 @@ MonoBehaviour: m_StartingHoverFilters: [] m_StartingSelectFilters: [] m_StartingInteractionStrengthFilters: [] - m_OnFirstHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnLastHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectEntered: - m_PersistentCalls: - m_Calls: [] - m_OnSelectExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectCanceled: - m_PersistentCalls: - m_Calls: [] - m_OnActivate: - m_PersistentCalls: - m_Calls: [] - m_OnDeactivate: - m_PersistentCalls: - m_Calls: [] m_AttachTransform: {fileID: 0} m_SecondaryAttachTransform: {fileID: 0} m_UseDynamicAttach: 1 @@ -298,10 +268,10 @@ MonoBehaviour: m_ThrowAngularVelocityScale: 1 m_ForceGravityOnDetach: 0 m_RetainTransformParent: 1 - m_AttachPointCompatibilityMode: 0 m_StartingSingleGrabTransformers: [] m_StartingMultipleGrabTransformers: [] m_AddDefaultGrabTransformers: 1 + m_FarAttachMode: 0 --- !u!114 &5709307613756117039 MonoBehaviour: m_ObjectHideFlags: 0 @@ -325,73 +295,73 @@ MonoBehaviour: m_MinimumScaleRatio: 0.25 m_MaximumScaleRatio: 3 m_ScaleMultiplier: 0.25 ---- !u!1001 &4330884014412049023 +--- !u!1001 &7094750918406528255 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: m_TransformParent: {fileID: 8746220130012963387} m_Modifications: - - target: {fileID: 314259139610439016, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} - propertyPath: m_RootOrder - value: 0 + - target: {fileID: 3774509235512974894, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_Name + value: Highlight Interaction Affordance objectReference: {fileID: 0} - - target: {fileID: 314259139610439016, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 314259139610439016, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 314259139610439016, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 314259139610439016, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 314259139610439016, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 314259139610439016, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 314259139610439016, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 314259139610439016, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 314259139610439016, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 314259139610439016, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 1784108126610004015, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} - propertyPath: m_InteractableSource - value: - objectReference: {fileID: 5709307613756117033} - - target: {fileID: 4104645014554624858, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} + - target: {fileID: 7396278978564332023, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_Renderer value: objectReference: {fileID: 5677050711131360266} - - target: {fileID: 4696973491166461409, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} - propertyPath: m_Name - value: InteractionAffordance - objectReference: {fileID: 0} + - target: {fileID: 8634317094661461186, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_InteractableSource + value: + objectReference: {fileID: 5709307613756117033} m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} ---- !u!4 &4054960490887300887 stripped + m_SourcePrefab: {fileID: 100100000, guid: 6b12f432fa58c224baf0d659706362be, type: 3} +--- !u!4 &3066043236613899732 stripped Transform: - m_CorrespondingSourceObject: {fileID: 314259139610439016, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} - m_PrefabInstance: {fileID: 4330884014412049023} + m_CorrespondingSourceObject: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + m_PrefabInstance: {fileID: 7094750918406528255} m_PrefabAsset: {fileID: 0} diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Cylinder.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Cylinder.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Cylinder.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Cylinder.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Disc.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Disc.prefab similarity index 93% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Disc.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Disc.prefab index e3ab7b78..d9821131 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Disc.prefab +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Disc.prefab @@ -147,9 +147,6 @@ MonoBehaviour: m_EditorClassIdentifier: m_InteractionManager: {fileID: 0} m_Colliders: [] - m_InteractionLayerMask: - serializedVersion: 2 - m_Bits: 4294967295 m_InteractionLayers: m_Bits: 1 m_DistanceCalculationMode: 1 @@ -208,33 +205,6 @@ MonoBehaviour: m_StartingHoverFilters: [] m_StartingSelectFilters: [] m_StartingInteractionStrengthFilters: [] - m_OnFirstHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnLastHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectEntered: - m_PersistentCalls: - m_Calls: [] - m_OnSelectExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectCanceled: - m_PersistentCalls: - m_Calls: [] - m_OnActivate: - m_PersistentCalls: - m_Calls: [] - m_OnDeactivate: - m_PersistentCalls: - m_Calls: [] --- !u!54 &6525631569650833180 Rigidbody: m_ObjectHideFlags: 0 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Disc.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Disc.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Disc.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Disc.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Chess/FlatSphereController.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/DiscController.prefab similarity index 75% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Chess/FlatSphereController.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/DiscController.prefab index 007897f9..e75bf639 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Chess/FlatSphereController.prefab +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/DiscController.prefab @@ -1,174 +1,5 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: ---- !u!1 &620666007103188122 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6476401572811645552} - - component: {fileID: 2496754245709711216} - - component: {fileID: 5593996689469427263} - m_Layer: 0 - m_Name: AudioAffordance - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &6476401572811645552 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 620666007103188122} - 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: 1 - m_Children: [] - m_Father: {fileID: 2049748930621633665} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!82 &2496754245709711216 -AudioSource: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 620666007103188122} - m_Enabled: 1 - serializedVersion: 4 - OutputAudioMixerGroup: {fileID: 0} - m_audioClip: {fileID: 0} - m_PlayOnAwake: 0 - 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.75 - 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 &5593996689469427263 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 620666007103188122} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 186056f485a2493b80cc81571ac8cd9b, type: 3} - m_Name: - m_EditorClassIdentifier: - m_AffordanceStateProvider: {fileID: 5509715586815330615} - m_AffordanceThemeDatum: - m_UseConstant: 0 - m_ConstantValue: - m_List: - - stateName: disabled - stateEntered: {fileID: 0} - stateExited: {fileID: 0} - - stateName: idle - stateEntered: {fileID: 0} - stateExited: {fileID: 0} - - stateName: hovered - stateEntered: {fileID: 0} - stateExited: {fileID: 0} - - stateName: hoveredPriority - stateEntered: {fileID: 0} - stateExited: {fileID: 0} - - stateName: selected - stateEntered: {fileID: 0} - stateExited: {fileID: 0} - - stateName: activated - stateEntered: {fileID: 0} - stateExited: {fileID: 0} - - stateName: focused - stateEntered: {fileID: 0} - stateExited: {fileID: 0} - m_Variable: {fileID: 11400000, guid: 57def9352cdee8548bfc9ebc6a55914a, type: 2} - m_AudioSource: {fileID: 2496754245709711216} --- !u!1 &2049748930621633664 GameObject: m_ObjectHideFlags: 0 @@ -184,7 +15,7 @@ GameObject: - component: {fileID: 2049748930621633677} - component: {fileID: 2049748930621633674} m_Layer: 0 - m_Name: FlatSphereController + m_Name: DiscController m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -203,7 +34,7 @@ Transform: m_ConstrainProportionsScale: 1 m_Children: - {fileID: 5509715586815330617} - - {fileID: 6476401572811645552} + - {fileID: 3894836964852715047} m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -251,9 +82,6 @@ MonoBehaviour: m_InteractionManager: {fileID: 0} m_Colliders: - {fileID: 2049748930621633678} - m_InteractionLayerMask: - serializedVersion: 2 - m_Bits: 4294967295 m_InteractionLayers: m_Bits: 1 m_DistanceCalculationMode: 1 @@ -312,33 +140,6 @@ MonoBehaviour: m_StartingHoverFilters: [] m_StartingSelectFilters: [] m_StartingInteractionStrengthFilters: [] - m_OnFirstHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnLastHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectEntered: - m_PersistentCalls: - m_Calls: [] - m_OnSelectExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectCanceled: - m_PersistentCalls: - m_Calls: [] - m_OnActivate: - m_PersistentCalls: - m_Calls: [] - m_OnDeactivate: - m_PersistentCalls: - m_Calls: [] m_AttachTransform: {fileID: 0} m_SecondaryAttachTransform: {fileID: 0} m_UseDynamicAttach: 1 @@ -385,10 +186,10 @@ MonoBehaviour: m_ThrowAngularVelocityScale: 1 m_ForceGravityOnDetach: 0 m_RetainTransformParent: 1 - m_AttachPointCompatibilityMode: 0 m_StartingSingleGrabTransformers: [] m_StartingMultipleGrabTransformers: [] m_AddDefaultGrabTransformers: 1 + m_FarAttachMode: 0 --- !u!114 &2049748930621633677 MonoBehaviour: m_ObjectHideFlags: 0 @@ -450,7 +251,7 @@ GameObject: - component: {fileID: 5509715586815330611} - component: {fileID: 5509715586815330612} m_Layer: 0 - m_Name: Sphere + m_Name: Sphere_And_Affordances m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -499,7 +300,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 40808a1b89c64184e9466aaec1fd1ac1, type: 2} + - {fileID: 2100000, guid: b3c19a119577be64885886bfcc8792fe, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -728,4 +529,70 @@ MonoBehaviour: m_PersistentCalls: m_Calls: [] m_MaterialPropertyBlockHelper: {fileID: 5509715586815330611} - m_ColorPropertyName: + m_ColorPropertyName: _BaseColor +--- !u!1001 &4897105965448374357 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 2049748930621633665} + m_Modifications: + - target: {fileID: 1515492005369169331, guid: 1c54cdd9a14d96049a8d37d422bd0e17, type: 3} + propertyPath: m_Name + value: AudioAffordance + objectReference: {fileID: 0} + - target: {fileID: 5746416808058614602, guid: 1c54cdd9a14d96049a8d37d422bd0e17, type: 3} + propertyPath: m_AffordanceStateProvider + value: + objectReference: {fileID: 5509715586815330615} + - target: {fileID: 8501457409089496690, guid: 1c54cdd9a14d96049a8d37d422bd0e17, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8501457409089496690, guid: 1c54cdd9a14d96049a8d37d422bd0e17, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8501457409089496690, guid: 1c54cdd9a14d96049a8d37d422bd0e17, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8501457409089496690, guid: 1c54cdd9a14d96049a8d37d422bd0e17, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8501457409089496690, guid: 1c54cdd9a14d96049a8d37d422bd0e17, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8501457409089496690, guid: 1c54cdd9a14d96049a8d37d422bd0e17, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8501457409089496690, guid: 1c54cdd9a14d96049a8d37d422bd0e17, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8501457409089496690, guid: 1c54cdd9a14d96049a8d37d422bd0e17, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8501457409089496690, guid: 1c54cdd9a14d96049a8d37d422bd0e17, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8501457409089496690, guid: 1c54cdd9a14d96049a8d37d422bd0e17, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8501457409089496690, guid: 1c54cdd9a14d96049a8d37d422bd0e17, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 1c54cdd9a14d96049a8d37d422bd0e17, type: 3} +--- !u!4 &3894836964852715047 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 8501457409089496690, guid: 1c54cdd9a14d96049a8d37d422bd0e17, type: 3} + m_PrefabInstance: {fileID: 4897105965448374357} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Chess/FlatSphereController.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/DiscController.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Chess/FlatSphereController.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/DiscController.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Chess/PawnController.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/PawnController.prefab similarity index 74% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Chess/PawnController.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/PawnController.prefab index 0154a040..8bf8a0a6 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Chess/PawnController.prefab +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/PawnController.prefab @@ -1,174 +1,5 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: ---- !u!1 &1424758651557925865 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8302078025757585448} - - component: {fileID: 6570999008309782876} - - component: {fileID: 5292440013984097552} - m_Layer: 0 - m_Name: AudioAffordance - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &8302078025757585448 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1424758651557925865} - 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: 6689389171845895219} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!82 &6570999008309782876 -AudioSource: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1424758651557925865} - m_Enabled: 1 - serializedVersion: 4 - OutputAudioMixerGroup: {fileID: 0} - m_audioClip: {fileID: 0} - m_PlayOnAwake: 0 - 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.75 - 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 &5292440013984097552 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1424758651557925865} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 186056f485a2493b80cc81571ac8cd9b, type: 3} - m_Name: - m_EditorClassIdentifier: - m_AffordanceStateProvider: {fileID: 6689389173434678681} - m_AffordanceThemeDatum: - m_UseConstant: 0 - m_ConstantValue: - m_List: - - stateName: disabled - stateEntered: {fileID: 0} - stateExited: {fileID: 0} - - stateName: idle - stateEntered: {fileID: 0} - stateExited: {fileID: 0} - - stateName: hovered - stateEntered: {fileID: 0} - stateExited: {fileID: 0} - - stateName: hoveredPriority - stateEntered: {fileID: 0} - stateExited: {fileID: 0} - - stateName: selected - stateEntered: {fileID: 0} - stateExited: {fileID: 0} - - stateName: activated - stateEntered: {fileID: 0} - stateExited: {fileID: 0} - - stateName: focused - stateEntered: {fileID: 0} - stateExited: {fileID: 0} - m_Variable: {fileID: 11400000, guid: 57def9352cdee8548bfc9ebc6a55914a, type: 2} - m_AudioSource: {fileID: 6570999008309782876} --- !u!1 &6689389171845895218 GameObject: m_ObjectHideFlags: 0 @@ -251,9 +82,6 @@ MonoBehaviour: m_InteractionManager: {fileID: 0} m_Colliders: - {fileID: 6689389171845895228} - m_InteractionLayerMask: - serializedVersion: 2 - m_Bits: 4294967295 m_InteractionLayers: m_Bits: 1 m_DistanceCalculationMode: 1 @@ -312,33 +140,6 @@ MonoBehaviour: m_StartingHoverFilters: [] m_StartingSelectFilters: [] m_StartingInteractionStrengthFilters: [] - m_OnFirstHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnLastHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectEntered: - m_PersistentCalls: - m_Calls: [] - m_OnSelectExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectCanceled: - m_PersistentCalls: - m_Calls: [] - m_OnActivate: - m_PersistentCalls: - m_Calls: [] - m_OnDeactivate: - m_PersistentCalls: - m_Calls: [] m_AttachTransform: {fileID: 0} m_SecondaryAttachTransform: {fileID: 0} m_UseDynamicAttach: 1 @@ -385,10 +186,10 @@ MonoBehaviour: m_ThrowAngularVelocityScale: 1 m_ForceGravityOnDetach: 0 m_RetainTransformParent: 1 - m_AttachPointCompatibilityMode: 0 m_StartingSingleGrabTransformers: [] m_StartingMultipleGrabTransformers: [] m_AddDefaultGrabTransformers: 1 + m_FarAttachMode: 0 --- !u!114 &6689389171845895231 MonoBehaviour: m_ObjectHideFlags: 0 @@ -486,7 +287,7 @@ SkinnedMeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 40808a1b89c64184e9466aaec1fd1ac1, type: 2} + - {fileID: 2100000, guid: b3c19a119577be64885886bfcc8792fe, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -693,7 +494,7 @@ MonoBehaviour: m_PersistentCalls: m_Calls: [] m_MaterialPropertyBlockHelper: {fileID: 6689389173002939785} - m_ColorPropertyName: + m_ColorPropertyName: _BaseColor --- !u!114 &5052028028641032844 MonoBehaviour: m_ObjectHideFlags: 0 @@ -711,3 +512,69 @@ MonoBehaviour: m_BlendShapeIndex: 1 m_BlendShapeMin: 0 m_BlendShapeMax: 100 +--- !u!1001 &490287090769008218 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 6689389171845895219} + m_Modifications: + - target: {fileID: 1515492005369169331, guid: 1c54cdd9a14d96049a8d37d422bd0e17, type: 3} + propertyPath: m_Name + value: AudioAffordance + objectReference: {fileID: 0} + - target: {fileID: 5746416808058614602, guid: 1c54cdd9a14d96049a8d37d422bd0e17, type: 3} + propertyPath: m_AffordanceStateProvider + value: + objectReference: {fileID: 6689389173434678681} + - target: {fileID: 8501457409089496690, guid: 1c54cdd9a14d96049a8d37d422bd0e17, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8501457409089496690, guid: 1c54cdd9a14d96049a8d37d422bd0e17, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8501457409089496690, guid: 1c54cdd9a14d96049a8d37d422bd0e17, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8501457409089496690, guid: 1c54cdd9a14d96049a8d37d422bd0e17, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8501457409089496690, guid: 1c54cdd9a14d96049a8d37d422bd0e17, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8501457409089496690, guid: 1c54cdd9a14d96049a8d37d422bd0e17, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8501457409089496690, guid: 1c54cdd9a14d96049a8d37d422bd0e17, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8501457409089496690, guid: 1c54cdd9a14d96049a8d37d422bd0e17, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8501457409089496690, guid: 1c54cdd9a14d96049a8d37d422bd0e17, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8501457409089496690, guid: 1c54cdd9a14d96049a8d37d422bd0e17, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8501457409089496690, guid: 1c54cdd9a14d96049a8d37d422bd0e17, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 1c54cdd9a14d96049a8d37d422bd0e17, type: 3} +--- !u!4 &8302078025757585448 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 8501457409089496690, guid: 1c54cdd9a14d96049a8d37d422bd0e17, type: 3} + m_PrefabInstance: {fileID: 490287090769008218} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Chess/PawnController.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/PawnController.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/Chess/PawnController.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/PawnController.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/PokeButton.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/PokeButton.prefab similarity index 68% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/PokeButton.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/PokeButton.prefab index 48ddc117..5ecd3222 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/PokeButton.prefab +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/PokeButton.prefab @@ -52,9 +52,6 @@ MonoBehaviour: m_EditorClassIdentifier: m_InteractionManager: {fileID: 0} m_Colliders: [] - m_InteractionLayerMask: - serializedVersion: 2 - m_Bits: 4294967295 m_InteractionLayers: m_Bits: 1 m_DistanceCalculationMode: 1 @@ -113,33 +110,6 @@ MonoBehaviour: m_StartingHoverFilters: [] m_StartingSelectFilters: [] m_StartingInteractionStrengthFilters: [] - m_OnFirstHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnLastHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectEntered: - m_PersistentCalls: - m_Calls: [] - m_OnSelectExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectCanceled: - m_PersistentCalls: - m_Calls: [] - m_OnActivate: - m_PersistentCalls: - m_Calls: [] - m_OnDeactivate: - m_PersistentCalls: - m_Calls: [] --- !u!114 &2130331530761912221 MonoBehaviour: m_ObjectHideFlags: 0 @@ -291,6 +261,379 @@ BoxCollider: serializedVersion: 2 m_Size: {x: 1, y: 1, z: 1} m_Center: {x: 0, y: 0, z: 0} +--- !u!1 &4434510254525139557 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8748052491345851914} + - component: {fileID: 2109709745044380960} + - component: {fileID: 3199942921445726553} + m_Layer: 0 + m_Name: AudioAffordance + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8748052491345851914 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4434510254525139557} + 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: 1858874181107226732} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!82 &2109709745044380960 +AudioSource: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4434510254525139557} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 0} + m_PlayOnAwake: 0 + 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.75 + 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 &3199942921445726553 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4434510254525139557} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 186056f485a2493b80cc81571ac8cd9b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AffordanceStateProvider: {fileID: 383397362901904683} + m_AffordanceThemeDatum: + m_UseConstant: 0 + m_ConstantValue: + m_List: + - stateName: disabled + stateEntered: {fileID: 0} + stateExited: {fileID: 0} + - stateName: idle + stateEntered: {fileID: 0} + stateExited: {fileID: 0} + - stateName: hovered + stateEntered: {fileID: 0} + stateExited: {fileID: 0} + - stateName: hoveredPriority + stateEntered: {fileID: 0} + stateExited: {fileID: 0} + - stateName: selected + stateEntered: {fileID: 0} + stateExited: {fileID: 0} + - stateName: activated + stateEntered: {fileID: 0} + stateExited: {fileID: 0} + - stateName: focused + stateEntered: {fileID: 0} + stateExited: {fileID: 0} + m_Variable: {fileID: 11400000, guid: 57def9352cdee8548bfc9ebc6a55914a, type: 2} + m_AudioSource: {fileID: 2109709745044380960} +--- !u!1 &6683189824981813477 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1858874181107226732} + - component: {fileID: 383397362901904683} + m_Layer: 0 + m_Name: InteractionAffordance + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1858874181107226732 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6683189824981813477} + 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: 8748052491345851914} + - {fileID: 2721150326367477965} + m_Father: {fileID: 2130331530761912220} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &383397362901904683 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6683189824981813477} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 49e0a5b5ff5540f5b14dd29d46faec22, type: 3} + m_Name: + m_EditorClassIdentifier: + m_TransitionDuration: 0.125 + m_InteractableSource: {fileID: 2130331530761912218} + m_IgnoreHoverEvents: 0 + m_IgnoreHoverPriorityEvents: 1 + m_IgnoreFocusEvents: 1 + m_IgnoreSelectEvents: 0 + m_IgnoreActivateEvents: 0 + m_SelectClickAnimationMode: 1 + m_ActivateClickAnimationMode: 1 + m_ClickAnimationDuration: 0.25 + m_ClickAnimationCurve: + m_UseConstant: 1 + m_ConstantValue: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Variable: {fileID: 0} +--- !u!1 &9213483171842931406 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2721150326367477965} + - component: {fileID: 6524287566887027744} + - component: {fileID: 2207781253836161479} + m_Layer: 0 + m_Name: Color Affordance + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2721150326367477965 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9213483171842931406} + 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: 1858874181107226732} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &6524287566887027744 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9213483171842931406} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1410cbaaadf84a7aaa6459d37ad21b3a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Renderer: {fileID: 8542569998572914694} + m_MaterialIndex: 0 +--- !u!114 &2207781253836161479 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9213483171842931406} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f86d13fca2ec430d870c0f7765ad0dde, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AffordanceStateProvider: {fileID: 383397362901904683} + m_ReplaceIdleStateValueWithInitialValue: 1 + m_AffordanceThemeDatum: + m_UseConstant: 0 + m_ConstantValue: + m_StateAnimationCurve: + m_UseConstant: 1 + m_ConstantValue: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Variable: {fileID: 0} + m_List: + - stateName: disabled + animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} + animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} + - stateName: idle + animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} + animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} + - stateName: hovered + animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} + animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} + - stateName: hoveredPriority + animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} + animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} + - stateName: selected + animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} + animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} + - stateName: activated + animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} + animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} + - stateName: focused + animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} + animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} + m_ColorBlendMode: 0 + m_BlendAmount: 1 + m_Variable: {fileID: 11400000, guid: 3ec238cb3e80e274c844d7b56f585392, type: 2} + m_ValueUpdated: + m_PersistentCalls: + m_Calls: [] + m_MaterialPropertyBlockHelper: {fileID: 6524287566887027744} + m_ColorPropertyName: --- !u!1001 &2130331531034647186 PrefabInstance: m_ObjectHideFlags: 0 @@ -528,80 +871,6 @@ Transform: m_CorrespondingSourceObject: {fileID: -4216859302048453862, guid: bf65382e5e6d14e7f8140e4204ce07e2, type: 3} m_PrefabInstance: {fileID: 2130331531283090352} m_PrefabAsset: {fileID: 0} ---- !u!1001 &2130331531568018692 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 2130331530761912220} - m_Modifications: - - target: {fileID: 314259139610439016, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} - propertyPath: m_RootOrder - value: 3 - objectReference: {fileID: 0} - - target: {fileID: 314259139610439016, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 314259139610439016, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 314259139610439016, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 314259139610439016, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 314259139610439016, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 314259139610439016, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 314259139610439016, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 314259139610439016, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 314259139610439016, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 314259139610439016, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1784108126610004015, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} - propertyPath: m_InteractableSource - value: - objectReference: {fileID: 2130331530761912218} - - target: {fileID: 4104645014554624858, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} - propertyPath: m_Renderer - value: - objectReference: {fileID: 8542569998572914694} - - target: {fileID: 4696973491166461409, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} - propertyPath: m_Name - value: InteractionAffordance - objectReference: {fileID: 0} - - target: {fileID: 5020720767714938420, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} - propertyPath: m_ReplaceIdleStateValueWithInitialValue - value: 1 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} ---- !u!4 &1858874181107226732 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 314259139610439016, guid: 9a5f820ee9c46b64294ae756b459a681, type: 3} - m_PrefabInstance: {fileID: 2130331531568018692} - m_PrefabAsset: {fileID: 0} --- !u!1001 &2130331532395832787 PrefabInstance: m_ObjectHideFlags: 0 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/PokeButton.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/PokeButton.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/PokeButton.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/PokeButton.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/SimpleSocket.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/SimpleSocket.prefab similarity index 97% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/SimpleSocket.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/SimpleSocket.prefab index c6562c0f..dc12e008 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/SimpleSocket.prefab +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/SimpleSocket.prefab @@ -48,11 +48,9 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_InteractionManager: {fileID: 0} - m_InteractionLayerMask: - serializedVersion: 2 - m_Bits: 4294967295 m_InteractionLayers: m_Bits: 4294967295 + m_Handedness: 0 m_AttachTransform: {fileID: 5572517086321491450} m_KeepSelectedTargetValid: 1 m_DisableVisualsWhenBlockedInGroup: 1 @@ -72,18 +70,6 @@ MonoBehaviour: m_Calls: [] m_StartingHoverFilters: [] m_StartingSelectFilters: [] - m_OnHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectEntered: - m_PersistentCalls: - m_Calls: [] - m_OnSelectExited: - m_PersistentCalls: - m_Calls: [] m_ShowInteractableHoverMeshes: 0 m_InteractableHoverMeshMaterial: {fileID: 0} m_InteractableCantHoverMeshMaterial: {fileID: 0} diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/SimpleSocket.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/SimpleSocket.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/SimpleSocket.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/SimpleSocket.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/SimpleSocketShape.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/SimpleSocketShape.prefab similarity index 93% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/SimpleSocketShape.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/SimpleSocketShape.prefab index 16e7809f..ea54ffc9 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/SimpleSocketShape.prefab +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/SimpleSocketShape.prefab @@ -97,7 +97,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 3a84a7b91ec88714486e0c4cc9a5dc01, type: 2} + - {fileID: 2100000, guid: 76618f7490c40334fa7b685859587d2e, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -149,9 +149,6 @@ MonoBehaviour: m_EditorClassIdentifier: m_InteractionManager: {fileID: 0} m_Colliders: [] - m_InteractionLayerMask: - serializedVersion: 2 - m_Bits: 1 m_InteractionLayers: m_Bits: 1 m_DistanceCalculationMode: 1 @@ -210,33 +207,6 @@ MonoBehaviour: m_StartingHoverFilters: [] m_StartingSelectFilters: [] m_StartingInteractionStrengthFilters: [] - m_OnFirstHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnLastHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectEntered: - m_PersistentCalls: - m_Calls: [] - m_OnSelectExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectCanceled: - m_PersistentCalls: - m_Calls: [] - m_OnActivate: - m_PersistentCalls: - m_Calls: [] - m_OnDeactivate: - m_PersistentCalls: - m_Calls: [] m_AttachTransform: {fileID: 3000186246023203508} m_SecondaryAttachTransform: {fileID: 0} m_UseDynamicAttach: 1 @@ -283,10 +253,10 @@ MonoBehaviour: m_ThrowAngularVelocityScale: 1 m_ForceGravityOnDetach: 0 m_RetainTransformParent: 1 - m_AttachPointCompatibilityMode: 0 m_StartingSingleGrabTransformers: [] m_StartingMultipleGrabTransformers: [] m_AddDefaultGrabTransformers: 1 + m_FarAttachMode: 0 --- !u!65 &2175187011753756096 BoxCollider: m_ObjectHideFlags: 0 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/SimpleSocketShape.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/SimpleSocketShape.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/SimpleSocketShape.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/SimpleSocketShape.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/TableHandle.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/TableHandle.prefab similarity index 93% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/TableHandle.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/TableHandle.prefab index 82e39247..840214f2 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/TableHandle.prefab +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/TableHandle.prefab @@ -1,5 +1,199 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: +--- !u!1 &2213068851608463849 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4947713856948696042} + - component: {fileID: 4314541616144226055} + - component: {fileID: 9207931725971051232} + - component: {fileID: 1496078646549329671} + m_Layer: 0 + m_Name: Material Affordance + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4947713856948696042 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2213068851608463849} + 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: 7403072356979171078} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &4314541616144226055 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2213068851608463849} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1410cbaaadf84a7aaa6459d37ad21b3a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Renderer: {fileID: 7403072356348442413} + m_MaterialIndex: 0 +--- !u!114 &9207931725971051232 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2213068851608463849} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f86d13fca2ec430d870c0f7765ad0dde, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AffordanceStateProvider: {fileID: 7403072356979171075} + m_ReplaceIdleStateValueWithInitialValue: 0 + m_AffordanceThemeDatum: + m_UseConstant: 0 + m_ConstantValue: + m_StateAnimationCurve: + m_UseConstant: 1 + m_ConstantValue: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Variable: {fileID: 0} + m_List: + - stateName: disabled + animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} + animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} + - stateName: idle + animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} + animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} + - stateName: hovered + animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} + animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} + - stateName: hoveredPriority + animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} + animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} + - stateName: selected + animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} + animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} + - stateName: activated + animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} + animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} + - stateName: focused + animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} + animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} + m_ColorBlendMode: 0 + m_BlendAmount: 1 + m_Variable: {fileID: 11400000, guid: fc690d1505c48cb4696838b71abd2ca0, type: 2} + m_ValueUpdated: + m_PersistentCalls: + m_Calls: [] + m_MaterialPropertyBlockHelper: {fileID: 4314541616144226055} + m_ColorPropertyName: _RimColor +--- !u!114 &1496078646549329671 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2213068851608463849} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 629ea686265f47f082ba5732cffad1cf, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AffordanceStateProvider: {fileID: 0} + m_ReplaceIdleStateValueWithInitialValue: 0 + m_AffordanceThemeDatum: + m_UseConstant: 0 + m_ConstantValue: + m_StateAnimationCurve: + m_UseConstant: 1 + m_ConstantValue: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Variable: {fileID: 0} + m_List: + - stateName: disabled + animationStateStartValue: 0 + animationStateEndValue: 0 + - stateName: idle + animationStateStartValue: 0 + animationStateEndValue: 0 + - stateName: hovered + animationStateStartValue: 0 + animationStateEndValue: 0 + - stateName: hoveredPriority + animationStateStartValue: 0 + animationStateEndValue: 0 + - stateName: selected + animationStateStartValue: 0 + animationStateEndValue: 0 + - stateName: activated + animationStateStartValue: 0 + animationStateEndValue: 0 + - stateName: focused + animationStateStartValue: 0 + animationStateEndValue: 0 + m_Variable: {fileID: 11400000, guid: c2712227db89c5142adad58b143bf039, type: 2} + m_ValueUpdated: + m_PersistentCalls: + m_Calls: [] + m_MaterialPropertyBlockHelper: {fileID: 4314541616144226055} + m_FloatPropertyName: _RimPower --- !u!1 &5209669283067494015 GameObject: m_ObjectHideFlags: 0 @@ -222,8 +416,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 455ef821a5429de4baeed61fa958acbc, type: 2} - - {fileID: 2100000, guid: 0b91f81225004e24ca905a5f32567d5d, type: 2} + - {fileID: 2100000, guid: f5ccd52dc494e054fbe7d7161dcabe25, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -265,7 +458,7 @@ GameObject: - component: {fileID: 7403072356416083934} - component: {fileID: 7403072356416083935} - component: {fileID: 7403072356416083929} - - component: {fileID: 7403072356416083928} + - component: {fileID: 7185658523818339205} - component: {fileID: 820650513654450291} m_Layer: 0 m_Name: TableHandle @@ -323,9 +516,6 @@ MonoBehaviour: m_EditorClassIdentifier: m_InteractionManager: {fileID: 0} m_Colliders: [] - m_InteractionLayerMask: - serializedVersion: 2 - m_Bits: 4294967295 m_InteractionLayers: m_Bits: 1 m_DistanceCalculationMode: 0 @@ -384,33 +574,6 @@ MonoBehaviour: m_StartingHoverFilters: [] m_StartingSelectFilters: [] m_StartingInteractionStrengthFilters: [] - m_OnFirstHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnLastHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectEntered: - m_PersistentCalls: - m_Calls: [] - m_OnSelectExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectCanceled: - m_PersistentCalls: - m_Calls: [] - m_OnActivate: - m_PersistentCalls: - m_Calls: [] - m_OnDeactivate: - m_PersistentCalls: - m_Calls: [] m_AttachTransform: {fileID: 0} m_SecondaryAttachTransform: {fileID: 0} m_UseDynamicAttach: 1 @@ -457,14 +620,14 @@ MonoBehaviour: m_ThrowAngularVelocityScale: 1 m_ForceGravityOnDetach: 0 m_RetainTransformParent: 1 - m_AttachPointCompatibilityMode: 0 m_StartingSingleGrabTransformers: - {fileID: 7403072356416083929} - - {fileID: 7403072356416083928} + - {fileID: 7185658523818339205} m_StartingMultipleGrabTransformers: - {fileID: 7403072356416083929} - - {fileID: 7403072356416083928} + - {fileID: 7185658523818339205} m_AddDefaultGrabTransformers: 0 + m_FarAttachMode: 0 --- !u!114 &7403072356416083929 MonoBehaviour: m_ObjectHideFlags: 0 @@ -488,7 +651,7 @@ MonoBehaviour: m_MinimumScaleRatio: 0.25 m_MaximumScaleRatio: 2 m_ScaleMultiplier: 0.25 ---- !u!114 &7403072356416083928 +--- !u!114 &7185658523818339205 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -497,7 +660,7 @@ MonoBehaviour: m_GameObject: {fileID: 7403072356416083904} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 24386a87b5e733943809081267792754, type: 3} + m_Script: {fileID: 11500000, guid: 4dd2e41114c62b44fbd334ca5b314352, type: 3} m_Name: m_EditorClassIdentifier: m_PermittedRotationAxis: 2 @@ -525,9 +688,6 @@ GameObject: m_Component: - component: {fileID: 7403072356979171078} - component: {fileID: 7403072356979171075} - - component: {fileID: 7403072356979171076} - - component: {fileID: 7403072356979171077} - - component: {fileID: 7403072356979171074} - component: {fileID: 3331925869084700775} m_Layer: 0 m_Name: Affordance @@ -549,6 +709,7 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 3133794072027396999} + - {fileID: 4947713856948696042} m_Father: {fileID: 7403072356416083930} m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -601,166 +762,6 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 4 m_Variable: {fileID: 0} ---- !u!114 &7403072356979171076 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7403072356979171079} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 1410cbaaadf84a7aaa6459d37ad21b3a, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Renderer: {fileID: 7403072356348442413} - m_MaterialIndex: 1 ---- !u!114 &7403072356979171077 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7403072356979171079} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f86d13fca2ec430d870c0f7765ad0dde, type: 3} - m_Name: - m_EditorClassIdentifier: - m_AffordanceStateProvider: {fileID: 7403072356979171075} - m_ReplaceIdleStateValueWithInitialValue: 0 - m_AffordanceThemeDatum: - m_UseConstant: 0 - m_ConstantValue: - m_StateAnimationCurve: - m_UseConstant: 1 - m_ConstantValue: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - m_Variable: {fileID: 0} - m_List: - - stateName: disabled - animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} - animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} - - stateName: idle - animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} - animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} - - stateName: hovered - animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} - animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} - - stateName: hoveredPriority - animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} - animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} - - stateName: selected - animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} - animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} - - stateName: activated - animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} - animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} - - stateName: focused - animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} - animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} - m_ColorBlendMode: 0 - m_BlendAmount: 1 - m_Variable: {fileID: 11400000, guid: 6b0360f219436394b8519378cd55c7e3, type: 2} - m_ValueUpdated: - m_PersistentCalls: - m_Calls: [] - m_MaterialPropertyBlockHelper: {fileID: 7403072356979171076} - m_ColorPropertyName: _EdgeColor ---- !u!114 &7403072356979171074 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7403072356979171079} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 629ea686265f47f082ba5732cffad1cf, type: 3} - m_Name: - m_EditorClassIdentifier: - m_AffordanceStateProvider: {fileID: 7403072356979171075} - m_ReplaceIdleStateValueWithInitialValue: 0 - m_AffordanceThemeDatum: - m_UseConstant: 0 - m_ConstantValue: - m_StateAnimationCurve: - m_UseConstant: 1 - m_ConstantValue: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - m_Variable: {fileID: 0} - m_List: - - stateName: disabled - animationStateStartValue: 0 - animationStateEndValue: 0 - - stateName: idle - animationStateStartValue: 0 - animationStateEndValue: 0 - - stateName: hovered - animationStateStartValue: 0 - animationStateEndValue: 0 - - stateName: hoveredPriority - animationStateStartValue: 0 - animationStateEndValue: 0 - - stateName: selected - animationStateStartValue: 0 - animationStateEndValue: 0 - - stateName: activated - animationStateStartValue: 0 - animationStateEndValue: 0 - - stateName: focused - animationStateStartValue: 0 - animationStateEndValue: 0 - m_Variable: {fileID: 11400000, guid: 2d9d4878bfb037248af1d243a0638dd0, type: 2} - m_ValueUpdated: - m_PersistentCalls: - m_Calls: [] - m_MaterialPropertyBlockHelper: {fileID: 7403072356979171076} - m_FloatPropertyName: _Power --- !u!114 &3331925869084700775 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/TableHandle.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/TableHandle.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/TableHandle.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/TableHandle.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI/Hand Menu With Button Activation.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI/ButtonHandMenu.prefab similarity index 99% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI/Hand Menu With Button Activation.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI/ButtonHandMenu.prefab index 140c5078..79652725 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI/Hand Menu With Button Activation.prefab +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI/ButtonHandMenu.prefab @@ -137,6 +137,8 @@ MonoBehaviour: m_MenuVisibleGazeAngleDivergenceThreshold: 35 m_AnimateMenuHideAndReveal: 1 m_RevealHideAnimationDuration: 0.1 + m_HideMenuOnSelect: 1 + m_InteractionManager: {fileID: 0} m_HandTrackingFollowPreset: m_UseConstant: 0 m_ConstantValue: @@ -234,6 +236,8 @@ MonoBehaviour: m_MenuVisibleGazeAngleDivergenceThreshold: 30 m_AnimateMenuHideAndReveal: 1 m_RevealHideAnimationDuration: 0.1 + m_HideMenuOnSelect: 1 + m_InteractionManager: {fileID: 0} m_HandTrackingFollowPreset: m_UseConstant: 0 m_ConstantValue: @@ -1283,7 +1287,7 @@ GameObject: m_Component: - component: {fileID: 5030734267259534325} m_Layer: 0 - m_Name: Hand Menu With Button Activation + m_Name: ButtonHandMenu m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI/Hand Menu With Button Activation.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI/ButtonHandMenu.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI/Hand Menu With Button Activation.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI/ButtonHandMenu.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI/Hand Menu Setup With ScrollView Variant.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI/ScrollHandMenu.prefab similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI/Hand Menu Setup With ScrollView Variant.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI/ScrollHandMenu.prefab diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI/Hand Menu Setup With ScrollView Variant.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI/ScrollHandMenu.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI/Hand Menu Setup With ScrollView Variant.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI/ScrollHandMenu.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI/Scroll View.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI/ScrollView.prefab similarity index 99% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI/Scroll View.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI/ScrollView.prefab index 61777b3c..02d1530e 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI/Scroll View.prefab +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI/ScrollView.prefab @@ -232,7 +232,7 @@ GameObject: - component: {fileID: 6183026901214721047} - component: {fileID: 6183026901214721046} m_Layer: 5 - m_Name: Scroll View + m_Name: ScrollView m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI/Scroll View.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI/ScrollView.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI/Scroll View.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI/ScrollView.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI/Scroll View Item.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI/ScrollViewItem.prefab similarity index 99% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI/Scroll View Item.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI/ScrollViewItem.prefab index 3f602bd1..d71903b7 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI/Scroll View Item.prefab +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI/ScrollViewItem.prefab @@ -93,7 +93,7 @@ GameObject: - component: {fileID: 747562692447532201} - component: {fileID: 4843924787302882066} m_Layer: 5 - m_Name: Scroll View Item + m_Name: ScrollViewItem m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI/Scroll View Item.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI/ScrollViewItem.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI/Scroll View Item.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI/ScrollViewItem.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI/TouchPad Button.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI/TouchPadButton.prefab similarity index 99% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI/TouchPad Button.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI/TouchPadButton.prefab index b83356d5..89935362 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI/TouchPad Button.prefab +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI/TouchPadButton.prefab @@ -148,7 +148,7 @@ GameObject: - component: {fileID: 6843260260195551652} - component: {fileID: 2428494541859028798} m_Layer: 5 - m_Name: TouchPad Button + m_Name: TouchPadButton m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI/TouchPad Button.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI/TouchPadButton.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI/TouchPad Button.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Prefabs/UI/TouchPadButton.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Scripts.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Scripts.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Scripts.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Scripts.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/ObjectResetPlane.cs b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/ObjectResetPlane.cs similarity index 90% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/ObjectResetPlane.cs rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/ObjectResetPlane.cs index 89ee3f30..68f2817f 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/ObjectResetPlane.cs +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/ObjectResetPlane.cs @@ -1,3 +1,4 @@ +using System.Collections; using System.Collections.Generic; namespace UnityEngine.XR.Interaction.Toolkit.Samples.Hands @@ -33,10 +34,10 @@ namespace UnityEngine.XR.Interaction.Toolkit.Samples.Hands if (currentTransform != null) { var position = currentTransform.position; - + if (m_ObjectRoot != null) position = m_ObjectRoot.InverseTransformPoint(currentTransform.position); - + m_OriginalPositions.Add(new Pose(position, currentTransform.rotation)); } else @@ -78,11 +79,18 @@ namespace UnityEngine.XR.Interaction.Toolkit.Samples.Hands var rigidBody = currentTransform.GetComponentInChildren(); if (rigidBody != null) { - rigidBody.velocity = Vector3.zero; - rigidBody.angularVelocity = Vector3.zero; + StartCoroutine(ResetRigidbodyRoutine(rigidBody)); } } } } + + IEnumerator ResetRigidbodyRoutine(Rigidbody body) + { + body.isKinematic = true; + yield return new WaitForFixedUpdate(); + body.isKinematic = false; + + } } } diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/ObjectResetPlane.cs.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/ObjectResetPlane.cs.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/ObjectResetPlane.cs.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/ObjectResetPlane.cs.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/PokeBlendShapeAnimator.cs b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/PokeBlendShapeAnimator.cs similarity index 95% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/PokeBlendShapeAnimator.cs rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/PokeBlendShapeAnimator.cs index 877775a2..f70af262 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/PokeBlendShapeAnimator.cs +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/PokeBlendShapeAnimator.cs @@ -1,6 +1,7 @@ using Unity.XR.CoreUtils.Bindings; using UnityEngine.XR.Interaction.Toolkit.AffordanceSystem.State; using UnityEngine.XR.Interaction.Toolkit.Filtering; +using UnityEngine.XR.Interaction.Toolkit.Interactables; using UnityEngine.XR.Interaction.Toolkit.Utilities.Tweenables.Primitives; namespace UnityEngine.XR.Interaction.Toolkit.Samples.Hands @@ -17,15 +18,15 @@ namespace UnityEngine.XR.Interaction.Toolkit.Samples.Hands [SerializeField] [Tooltip("The SkinnedMeshRenderer to animate.")] SkinnedMeshRenderer m_SkinnedMeshRenderer; - + [SerializeField] [Tooltip("The index of the blend shape to animate.")] int m_BlendShapeIndex; - + [SerializeField] [Tooltip("The minimum blend shape value.")] float m_BlendShapeMin; - + [SerializeField] [Tooltip("The maximum blend shape value.")] float m_BlendShapeMax = 100f; @@ -34,10 +35,12 @@ namespace UnityEngine.XR.Interaction.Toolkit.Samples.Hands IXRHoverInteractable m_HoverInteractable; IXRInteractionStrengthInteractable m_InteractionStrengthInteractable; +#pragma warning disable CS0618 // Type or member is obsolete readonly FloatTweenableVariable m_TweenableVariable = new FloatTweenableVariable(); +#pragma warning restore CS0618 // Type or member is obsolete float m_TweenTarget; - + /// /// See . /// @@ -51,7 +54,7 @@ namespace UnityEngine.XR.Interaction.Toolkit.Samples.Hands m_HoverInteractable = m_PokeFilter.GetComponent(); m_InteractionStrengthInteractable = m_PokeFilter.GetComponent(); - + m_BindingsGroup.AddBinding(m_PokeFilter.pokeStateData.Subscribe(data => { var blendShapeValue = Mathf.Lerp(m_BlendShapeMin, m_BlendShapeMax, data.interactionStrength); diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/PokeBlendShapeAnimator.cs.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/PokeBlendShapeAnimator.cs.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/PokeBlendShapeAnimator.cs.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/PokeBlendShapeAnimator.cs.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/ToggleGameObject.cs b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/ToggleGameObject.cs similarity index 98% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/ToggleGameObject.cs rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/ToggleGameObject.cs index 25ec3056..ac7f7e38 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/ToggleGameObject.cs +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/ToggleGameObject.cs @@ -32,7 +32,7 @@ namespace UnityEngine.XR.Interaction.Toolkit.Samples.Hands { m_CurrentlyActive = value; activationGameObject.SetActive(m_CurrentlyActive); - } + } } /// diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/ToggleGameObject.cs.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/ToggleGameObject.cs.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/ToggleGameObject.cs.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/ToggleGameObject.cs.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/ToggleGraphicToggler.cs b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/ToggleGraphicToggler.cs similarity index 99% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/ToggleGraphicToggler.cs rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/ToggleGraphicToggler.cs index 7096bcf3..3fb0acc6 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/ToggleGraphicToggler.cs +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/ToggleGraphicToggler.cs @@ -48,7 +48,7 @@ namespace UnityEngine.XR.Interaction.Toolkit.Samples.Hands m_TargetToggle.targetGraphic = m_ToggleOnGraphic; else m_TargetToggle.targetGraphic = m_ToggleOffGraphic; - + m_ToggleOnGraphic.gameObject.SetActive(isOn); } } diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/ToggleGraphicToggler.cs.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/ToggleGraphicToggler.cs.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/ToggleGraphicToggler.cs.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/ToggleGraphicToggler.cs.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/TransformSync.cs b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/TransformSync.cs similarity index 96% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/TransformSync.cs rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/TransformSync.cs index 2d647bcd..8635c694 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/TransformSync.cs +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/TransformSync.cs @@ -23,9 +23,11 @@ namespace UnityEngine.XR.Interaction.Toolkit.Samples.Hands bool m_HasRigidbody; Transform m_ThisTransform; - + +#pragma warning disable CS0618 // Type or member is obsolete readonly Vector3TweenableVariable m_PositionTweenable = new Vector3TweenableVariable(); readonly QuaternionTweenableVariable m_RotationTweenable = new QuaternionTweenableVariable(); +#pragma warning restore CS0618 // Type or member is obsolete /// /// See . @@ -77,11 +79,11 @@ namespace UnityEngine.XR.Interaction.Toolkit.Samples.Hands { m_PositionTweenable.target = m_ThisTransform.position; m_RotationTweenable.target = m_ThisTransform.rotation; - + var tweenTarget = m_SmoothFollowSpeed > 0f ? m_SmoothFollowSpeed * Time.deltaTime : 1f; m_PositionTweenable.HandleTween(tweenTarget); m_RotationTweenable.HandleTween(tweenTarget); - + if (!m_HasRigidbody && m_HasTransform) m_TargetTransform.SetPositionAndRotation(m_PositionTweenable.Value, m_RotationTweenable.Value); } diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/TransformSync.cs.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/TransformSync.cs.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/TransformSync.cs.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/TransformSync.cs.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Unity.XR.Interaction.Toolkit.Samples.Hands.asmdef b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsInteractionDemo.asmdef similarity index 84% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Unity.XR.Interaction.Toolkit.Samples.Hands.asmdef rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsInteractionDemo.asmdef index 904f8a30..f6a93f38 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Unity.XR.Interaction.Toolkit.Samples.Hands.asmdef +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsInteractionDemo.asmdef @@ -25,6 +25,11 @@ "name": "com.unity.xr.hands", "expression": "1.2.1", "define": "XR_HANDS_1_2_OR_NEWER" + }, + { + "name": "com.unity.xr.hands", + "expression": "1.5.0-pre.3", + "define": "XR_HANDS_1_5_OR_NEWER" } ], "noEngineReferences": false diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Unity.XR.Interaction.Toolkit.Samples.Hands.asmdef.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsInteractionDemo.asmdef.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Unity.XR.Interaction.Toolkit.Samples.Hands.asmdef.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/HandsInteractionDemo.asmdef.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Materials.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Materials.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Materials.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Materials.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Materials/DepthOnly.mat b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Materials/DepthOnly.mat similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Materials/DepthOnly.mat rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Materials/DepthOnly.mat diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Materials/DepthOnly.mat.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Materials/DepthOnly.mat.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Materials/DepthOnly.mat.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Materials/DepthOnly.mat.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Materials/Unity_Hand_Dark.mat b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Materials/Unity_Hand_Dark.mat similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Materials/Unity_Hand_Dark.mat rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Materials/Unity_Hand_Dark.mat diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Materials/Unity_Hand_Dark.mat.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Materials/Unity_Hand_Dark.mat.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Materials/Unity_Hand_Dark.mat.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Materials/Unity_Hand_Dark.mat.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Materials/Unity_Hand_Light.mat b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Materials/Unity_Hand_Light.mat similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Materials/Unity_Hand_Light.mat rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Materials/Unity_Hand_Light.mat diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Materials/Unity_Hand_Light.mat.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Materials/Unity_Hand_Light.mat.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Materials/Unity_Hand_Light.mat.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Materials/Unity_Hand_Light.mat.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Materials/Unity_Hand_Medium.mat b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Materials/Unity_Hand_Medium.mat similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Materials/Unity_Hand_Medium.mat rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Materials/Unity_Hand_Medium.mat diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Materials/Unity_Hand_Medium.mat.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Materials/Unity_Hand_Medium.mat.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Materials/Unity_Hand_Medium.mat.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Materials/Unity_Hand_Medium.mat.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Prefabs.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Prefabs.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/Affordances/Hand Direct Interactor Affordances.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Prefabs/HandInteractorAffordances.prefab similarity index 99% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/Affordances/Hand Direct Interactor Affordances.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Prefabs/HandInteractorAffordances.prefab index 72adda3a..8ac6612e 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/Affordances/Hand Direct Interactor Affordances.prefab +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Prefabs/HandInteractorAffordances.prefab @@ -15,7 +15,7 @@ GameObject: - component: {fileID: 1881156673079181450} - component: {fileID: 3535746112591574420} m_Layer: 0 - m_Name: Hand Direct Interactor Affordances + m_Name: HandInteractorAffordances m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/Affordances/Hand Direct Interactor Affordances.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Prefabs/HandInteractorAffordances.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/Affordances/Hand Direct Interactor Affordances.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Prefabs/HandInteractorAffordances.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/Hand Menu Setup.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Prefabs/HandMenuRig.prefab similarity index 99% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/Hand Menu Setup.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Prefabs/HandMenuRig.prefab index 526a0624..e62a2e47 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/Hand Menu Setup.prefab +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Prefabs/HandMenuRig.prefab @@ -11,7 +11,7 @@ GameObject: - component: {fileID: 5909398001603780732} - component: {fileID: 6324184579401567070} m_Layer: 0 - m_Name: Hand Menu Setup + m_Name: HandMenuRig m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -59,6 +59,8 @@ MonoBehaviour: m_MenuVisibleGazeAngleDivergenceThreshold: 35 m_AnimateMenuHideAndReveal: 1 m_RevealHideAnimationDuration: 0.1 + m_HideMenuOnSelect: 1 + m_InteractionManager: {fileID: 0} m_HandTrackingFollowPreset: m_UseConstant: 0 m_ConstantValue: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/Hand Menu Setup.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Prefabs/HandMenuRig.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/Hand Menu Setup.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Prefabs/HandMenuRig.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/Affordances/Hand Poke Interactor Affordances.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Prefabs/HandPokeInteractorAffordances.prefab similarity index 99% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/Affordances/Hand Poke Interactor Affordances.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Prefabs/HandPokeInteractorAffordances.prefab index df685f26..af91ebd2 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/Affordances/Hand Poke Interactor Affordances.prefab +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Prefabs/HandPokeInteractorAffordances.prefab @@ -14,7 +14,7 @@ GameObject: - component: {fileID: 3626493631032143716} - component: {fileID: 3626493631032143717} m_Layer: 0 - m_Name: Hand Poke Interactor Affordances + m_Name: HandPokeInteractorAffordances m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/Affordances/Hand Poke Interactor Affordances.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Prefabs/HandPokeInteractorAffordances.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/Affordances/Hand Poke Interactor Affordances.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Prefabs/HandPokeInteractorAffordances.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/InteractionAffordance.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Prefabs/InteractionAffordance.prefab similarity index 75% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/InteractionAffordance.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Prefabs/InteractionAffordance.prefab index 23d30faf..8eaf29eb 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/InteractionAffordance.prefab +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Prefabs/InteractionAffordance.prefab @@ -31,7 +31,7 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 314259139610439016} - m_RootOrder: 1 + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!82 &60592885034133540 AudioSource: @@ -169,6 +169,200 @@ MonoBehaviour: stateExited: {fileID: 0} m_Variable: {fileID: 11400000, guid: 57def9352cdee8548bfc9ebc6a55914a, type: 2} m_AudioSource: {fileID: 60592885034133540} +--- !u!1 &3196468547072183565 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8521807588786738958} + - component: {fileID: 651352808372728803} + - component: {fileID: 5558392255022446084} + - component: {fileID: 2749842065993389027} + m_Layer: 0 + m_Name: Material Affordance + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8521807588786738958 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3196468547072183565} + m_LocalRotation: {x: -0, y: -0, z: -0.00000001452281, 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: 314259139610439016} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &651352808372728803 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3196468547072183565} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1410cbaaadf84a7aaa6459d37ad21b3a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Renderer: {fileID: 0} + m_MaterialIndex: 0 +--- !u!114 &5558392255022446084 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3196468547072183565} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f86d13fca2ec430d870c0f7765ad0dde, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AffordanceStateProvider: {fileID: 1784108126610004015} + m_ReplaceIdleStateValueWithInitialValue: 0 + m_AffordanceThemeDatum: + m_UseConstant: 0 + m_ConstantValue: + m_StateAnimationCurve: + m_UseConstant: 1 + m_ConstantValue: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Variable: {fileID: 0} + m_List: + - stateName: disabled + animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} + animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} + - stateName: idle + animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} + animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} + - stateName: hovered + animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} + animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} + - stateName: hoveredPriority + animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} + animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} + - stateName: selected + animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} + animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} + - stateName: activated + animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} + animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} + - stateName: focused + animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} + animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} + m_ColorBlendMode: 0 + m_BlendAmount: 1 + m_Variable: {fileID: 11400000, guid: 8b0b5aede76faac438e02d2a468f4805, type: 2} + m_ValueUpdated: + m_PersistentCalls: + m_Calls: [] + m_MaterialPropertyBlockHelper: {fileID: 651352808372728803} + m_ColorPropertyName: _RimColor +--- !u!114 &2749842065993389027 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3196468547072183565} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 629ea686265f47f082ba5732cffad1cf, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AffordanceStateProvider: {fileID: 1784108126610004015} + m_ReplaceIdleStateValueWithInitialValue: 0 + m_AffordanceThemeDatum: + m_UseConstant: 0 + m_ConstantValue: + m_StateAnimationCurve: + m_UseConstant: 1 + m_ConstantValue: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Variable: {fileID: 0} + m_List: + - stateName: disabled + animationStateStartValue: 0 + animationStateEndValue: 0 + - stateName: idle + animationStateStartValue: 0 + animationStateEndValue: 0 + - stateName: hovered + animationStateStartValue: 0 + animationStateEndValue: 0 + - stateName: hoveredPriority + animationStateStartValue: 0 + animationStateEndValue: 0 + - stateName: selected + animationStateStartValue: 0 + animationStateEndValue: 0 + - stateName: activated + animationStateStartValue: 0 + animationStateEndValue: 0 + - stateName: focused + animationStateStartValue: 0 + animationStateEndValue: 0 + m_Variable: {fileID: 11400000, guid: 795305341a8dbbd46ae54e9a01d6ea95, type: 2} + m_ValueUpdated: + m_PersistentCalls: + m_Calls: [] + m_MaterialPropertyBlockHelper: {fileID: 651352808372728803} + m_FloatPropertyName: _RimPower --- !u!1 &4696973491166461409 GameObject: m_ObjectHideFlags: 0 @@ -198,8 +392,8 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 1112359677375758233} - {fileID: 7275325890891809550} + - {fileID: 8521807588786738958} m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -252,121 +446,3 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 4 m_Variable: {fileID: 0} ---- !u!1 &7164804159106004020 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1112359677375758233} - - component: {fileID: 4104645014554624858} - - component: {fileID: 5020720767714938420} - m_Layer: 0 - m_Name: ColorAffordance - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1112359677375758233 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7164804159106004020} - 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: 314259139610439016} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &4104645014554624858 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7164804159106004020} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 1410cbaaadf84a7aaa6459d37ad21b3a, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Renderer: {fileID: 0} - m_MaterialIndex: 0 ---- !u!114 &5020720767714938420 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7164804159106004020} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f86d13fca2ec430d870c0f7765ad0dde, type: 3} - m_Name: - m_EditorClassIdentifier: - m_AffordanceStateProvider: {fileID: 1784108126610004015} - m_ReplaceIdleStateValueWithInitialValue: 1 - m_AffordanceThemeDatum: - m_UseConstant: 0 - m_ConstantValue: - m_StateAnimationCurve: - m_UseConstant: 1 - m_ConstantValue: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - m_Variable: {fileID: 0} - m_List: - - stateName: disabled - animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} - animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} - - stateName: idle - animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} - animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} - - stateName: hovered - animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} - animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} - - stateName: hoveredPriority - animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} - animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} - - stateName: selected - animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} - animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} - - stateName: activated - animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} - animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} - m_ColorBlendMode: 0 - m_BlendAmount: 1 - m_Variable: {fileID: 11400000, guid: 2447c2ae63ed301429bb0f32f88ef8ce, type: 2} - m_ValueUpdated: - m_PersistentCalls: - m_Calls: [] - m_MaterialPropertyBlockHelper: {fileID: 4104645014554624858} - m_ColorPropertyName: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/InteractionAffordance.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Prefabs/InteractionAffordance.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/InteractionAffordance.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Prefabs/InteractionAffordance.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/Left Hand Interaction Visual.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Prefabs/LeftHandInteractionVisual.prefab similarity index 92% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/Left Hand Interaction Visual.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Prefabs/LeftHandInteractionVisual.prefab index ab84afd4..67a7e72c 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/Left Hand Interaction Visual.prefab +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Prefabs/LeftHandInteractionVisual.prefab @@ -108,7 +108,7 @@ GameObject: - component: {fileID: 2599780285154657760} - component: {fileID: 3113203136159532523} m_Layer: 0 - m_Name: Left Hand Interaction Visual + m_Name: LeftHandInteractionVisual m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -130,7 +130,6 @@ Transform: - {fileID: 4720211885633772024} - {fileID: 4117179676178661334} - {fileID: 1493371769922722511} - - {fileID: 1593233024999764059} m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -1106,72 +1105,6 @@ Transform: m_Father: {fileID: 273800246811882027} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1001 &1389875722460851 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 1595251472046566641} - m_Modifications: - - target: {fileID: 1592230186234949352, guid: e411b46c5d2514e49b26bd300e9ed8ce, type: 3} - propertyPath: m_RootOrder - value: 4 - objectReference: {fileID: 0} - - target: {fileID: 1592230186234949352, guid: e411b46c5d2514e49b26bd300e9ed8ce, type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1592230186234949352, guid: e411b46c5d2514e49b26bd300e9ed8ce, type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1592230186234949352, guid: e411b46c5d2514e49b26bd300e9ed8ce, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1592230186234949352, guid: e411b46c5d2514e49b26bd300e9ed8ce, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 1592230186234949352, guid: e411b46c5d2514e49b26bd300e9ed8ce, type: 3} - propertyPath: m_LocalRotation.x - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 1592230186234949352, guid: e411b46c5d2514e49b26bd300e9ed8ce, type: 3} - propertyPath: m_LocalRotation.y - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 1592230186234949352, guid: e411b46c5d2514e49b26bd300e9ed8ce, type: 3} - propertyPath: m_LocalRotation.z - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 1592230186234949352, guid: e411b46c5d2514e49b26bd300e9ed8ce, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1592230186234949352, guid: e411b46c5d2514e49b26bd300e9ed8ce, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1592230186234949352, guid: e411b46c5d2514e49b26bd300e9ed8ce, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1592230186234949353, guid: e411b46c5d2514e49b26bd300e9ed8ce, type: 3} - propertyPath: m_Name - value: Hand Ray Interactor Affordances - objectReference: {fileID: 0} - - target: {fileID: 1592230186234949357, guid: e411b46c5d2514e49b26bd300e9ed8ce, type: 3} - propertyPath: m_Renderer - value: - objectReference: {fileID: 1086252671028184794} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: e411b46c5d2514e49b26bd300e9ed8ce, type: 3} ---- !u!4 &1593233024999764059 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 1592230186234949352, guid: e411b46c5d2514e49b26bd300e9ed8ce, type: 3} - m_PrefabInstance: {fileID: 1389875722460851} - m_PrefabAsset: {fileID: 0} --- !u!1001 &824384837593141428 PrefabInstance: m_ObjectHideFlags: 0 @@ -1247,7 +1180,7 @@ PrefabInstance: m_Modifications: - target: {fileID: 3535746112591574418, guid: 67c52e745f2766644ba16bfb165e2659, type: 3} propertyPath: m_Name - value: Hand Direct Interactor Affordances + value: Hand Near-Far Interactor Affordances objectReference: {fileID: 0} - target: {fileID: 3535746112591574419, guid: 67c52e745f2766644ba16bfb165e2659, type: 3} propertyPath: m_RootOrder diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/Left Hand Interaction Visual.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Prefabs/LeftHandInteractionVisual.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/Left Hand Interaction Visual.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Prefabs/LeftHandInteractionVisual.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/Pinch Point Stabilized.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Prefabs/PinchPointStabilized.prefab similarity index 83% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/Pinch Point Stabilized.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Prefabs/PinchPointStabilized.prefab index 6e01e991..9c87aac7 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/Pinch Point Stabilized.prefab +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Prefabs/PinchPointStabilized.prefab @@ -11,10 +11,6 @@ GameObject: - component: {fileID: 1517203009072151852} - component: {fileID: 6379762978650309333} - component: {fileID: 1538976526839647015} - - component: {fileID: 3733241858151303650} - - component: {fileID: 2873834594852043269} - - component: {fileID: 7090018163761373624} - - component: {fileID: 8002132081376868790} - component: {fileID: 8232174397725000580} - component: {fileID: 9205766622909133630} m_Layer: 0 @@ -59,8 +55,7 @@ SkinnedMeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 455ef821a5429de4baeed61fa958acbc, type: 2} - - {fileID: 2100000, guid: 0b91f81225004e24ca905a5f32567d5d, type: 2} + - {fileID: 2100000, guid: f5ccd52dc494e054fbe7d7161dcabe25, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -166,240 +161,6 @@ MonoBehaviour: m_Calls: [] m_SkinnedMeshRenderer: {fileID: 6379762978650309333} m_BlendShapeIndex: 0 ---- !u!114 &3733241858151303650 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2181396665701132182} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 1410cbaaadf84a7aaa6459d37ad21b3a, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Renderer: {fileID: 6379762978650309333} - m_MaterialIndex: 1 ---- !u!114 &2873834594852043269 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2181396665701132182} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f86d13fca2ec430d870c0f7765ad0dde, type: 3} - m_Name: - m_EditorClassIdentifier: - m_AffordanceStateProvider: {fileID: 3941121930630195656} - m_ReplaceIdleStateValueWithInitialValue: 0 - m_AffordanceThemeDatum: - m_UseConstant: 0 - m_ConstantValue: - m_StateAnimationCurve: - m_UseConstant: 1 - m_ConstantValue: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - m_Variable: {fileID: 0} - m_List: - - stateName: disabled - animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} - animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} - - stateName: idle - animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} - animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} - - stateName: hovered - animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} - animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} - - stateName: hoveredPriority - animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} - animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} - - stateName: selected - animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} - animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} - - stateName: activated - animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} - animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} - - stateName: focused - animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} - animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} - m_ColorBlendMode: 0 - m_BlendAmount: 1 - m_Variable: {fileID: 11400000, guid: 1468864c36cbf39428681b1f0d9ef149, type: 2} - m_ValueUpdated: - m_PersistentCalls: - m_Calls: [] - m_MaterialPropertyBlockHelper: {fileID: 3733241858151303650} - m_ColorPropertyName: _MainColor ---- !u!114 &7090018163761373624 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2181396665701132182} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f86d13fca2ec430d870c0f7765ad0dde, type: 3} - m_Name: - m_EditorClassIdentifier: - m_AffordanceStateProvider: {fileID: 3941121930630195656} - m_ReplaceIdleStateValueWithInitialValue: 0 - m_AffordanceThemeDatum: - m_UseConstant: 0 - m_ConstantValue: - m_StateAnimationCurve: - m_UseConstant: 1 - m_ConstantValue: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - m_Variable: {fileID: 0} - m_List: - - stateName: disabled - animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} - animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} - - stateName: idle - animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} - animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} - - stateName: hovered - animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} - animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} - - stateName: hoveredPriority - animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} - animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} - - stateName: selected - animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} - animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} - - stateName: activated - animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} - animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} - - stateName: focused - animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} - animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} - m_ColorBlendMode: 0 - m_BlendAmount: 1 - m_Variable: {fileID: 11400000, guid: 6b0360f219436394b8519378cd55c7e3, type: 2} - m_ValueUpdated: - m_PersistentCalls: - m_Calls: [] - m_MaterialPropertyBlockHelper: {fileID: 3733241858151303650} - m_ColorPropertyName: _EdgeColor ---- !u!114 &8002132081376868790 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2181396665701132182} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 629ea686265f47f082ba5732cffad1cf, type: 3} - m_Name: - m_EditorClassIdentifier: - m_AffordanceStateProvider: {fileID: 3941121930630195656} - m_ReplaceIdleStateValueWithInitialValue: 0 - m_AffordanceThemeDatum: - m_UseConstant: 0 - m_ConstantValue: - m_StateAnimationCurve: - m_UseConstant: 1 - m_ConstantValue: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - m_Variable: {fileID: 0} - m_List: - - stateName: disabled - animationStateStartValue: 0 - animationStateEndValue: 0 - - stateName: idle - animationStateStartValue: 0 - animationStateEndValue: 0 - - stateName: hovered - animationStateStartValue: 0 - animationStateEndValue: 0 - - stateName: hoveredPriority - animationStateStartValue: 0 - animationStateEndValue: 0 - - stateName: selected - animationStateStartValue: 0 - animationStateEndValue: 0 - - stateName: activated - animationStateStartValue: 0 - animationStateEndValue: 0 - - stateName: focused - animationStateStartValue: 0 - animationStateEndValue: 0 - m_Variable: {fileID: 11400000, guid: 2d9d4878bfb037248af1d243a0638dd0, type: 2} - m_ValueUpdated: - m_PersistentCalls: - m_Calls: [] - m_MaterialPropertyBlockHelper: {fileID: 3733241858151303650} - m_FloatPropertyName: _Power --- !u!114 &8232174397725000580 MonoBehaviour: m_ObjectHideFlags: 0 @@ -412,7 +173,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 865d01d2834c9cb4caa8f2c901104c2d, type: 3} m_Name: m_EditorClassIdentifier: - m_AffordanceStateProvider: {fileID: 0} + m_AffordanceStateProvider: {fileID: 3941121930630195656} m_ReplaceIdleStateValueWithInitialValue: 0 m_AffordanceThemeDatum: m_UseConstant: 0 @@ -584,6 +345,37 @@ MonoBehaviour: m_PersistentCalls: m_Calls: [] m_TransformToScale: {fileID: 1517203009072151852} +--- !u!1 &3275437478627839725 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5697399126433476533} + m_Layer: 0 + m_Name: Pinch Visual Offset + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5697399126433476533 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3275437478627839725} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0.015} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 7962545760240945814} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &3369527167708781622 GameObject: m_ObjectHideFlags: 0 @@ -597,7 +389,7 @@ GameObject: - component: {fileID: 3941121930630195656} - component: {fileID: 868360655280004538} m_Layer: 0 - m_Name: Pinch Point Stabilized + m_Name: PinchPointStabilized m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -616,6 +408,8 @@ Transform: m_ConstrainProportionsScale: 1 m_Children: - {fileID: 1517203009072151852} + - {fileID: 5697399126433476533} + - {fileID: 3319742158842249363} m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -632,8 +426,9 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_XRHandTrackingEvents: {fileID: 0} - m_TargetRotation: {fileID: 0} m_RayInteractor: {fileID: 0} + m_NearFarInteractor: {fileID: 0} + m_TargetRotation: {fileID: 0} m_RotationSmoothingSpeed: 12 --- !u!114 &3941121930630195656 MonoBehaviour: @@ -699,3 +494,197 @@ MonoBehaviour: m_EditorClassIdentifier: m_Interactor: {fileID: 0} m_ObjectToHide: {fileID: 2181396665701132182} +--- !u!1 &8362549039119506064 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3319742158842249363} + - component: {fileID: 5862434181995340926} + - component: {fileID: 1545576279830946201} + - component: {fileID: 9113310872675320958} + m_Layer: 0 + m_Name: Material Affordance + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3319742158842249363 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8362549039119506064} + 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: 7962545760240945814} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &5862434181995340926 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8362549039119506064} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1410cbaaadf84a7aaa6459d37ad21b3a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Renderer: {fileID: 6379762978650309333} + m_MaterialIndex: 0 +--- !u!114 &1545576279830946201 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8362549039119506064} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f86d13fca2ec430d870c0f7765ad0dde, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AffordanceStateProvider: {fileID: 3941121930630195656} + m_ReplaceIdleStateValueWithInitialValue: 0 + m_AffordanceThemeDatum: + m_UseConstant: 0 + m_ConstantValue: + m_StateAnimationCurve: + m_UseConstant: 1 + m_ConstantValue: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Variable: {fileID: 0} + m_List: + - stateName: disabled + animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} + animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} + - stateName: idle + animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} + animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} + - stateName: hovered + animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} + animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} + - stateName: hoveredPriority + animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} + animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} + - stateName: selected + animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} + animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} + - stateName: activated + animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} + animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} + - stateName: focused + animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} + animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} + m_ColorBlendMode: 0 + m_BlendAmount: 1 + m_Variable: {fileID: 11400000, guid: fc690d1505c48cb4696838b71abd2ca0, type: 2} + m_ValueUpdated: + m_PersistentCalls: + m_Calls: [] + m_MaterialPropertyBlockHelper: {fileID: 5862434181995340926} + m_ColorPropertyName: _BaseColor +--- !u!114 &9113310872675320958 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8362549039119506064} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 629ea686265f47f082ba5732cffad1cf, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AffordanceStateProvider: {fileID: 3941121930630195656} + m_ReplaceIdleStateValueWithInitialValue: 0 + m_AffordanceThemeDatum: + m_UseConstant: 0 + m_ConstantValue: + m_StateAnimationCurve: + m_UseConstant: 1 + m_ConstantValue: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Variable: {fileID: 0} + m_List: + - stateName: disabled + animationStateStartValue: 0 + animationStateEndValue: 0 + - stateName: idle + animationStateStartValue: 0 + animationStateEndValue: 0 + - stateName: hovered + animationStateStartValue: 0 + animationStateEndValue: 0 + - stateName: hoveredPriority + animationStateStartValue: 0 + animationStateEndValue: 0 + - stateName: selected + animationStateStartValue: 0 + animationStateEndValue: 0 + - stateName: activated + animationStateStartValue: 0 + animationStateEndValue: 0 + - stateName: focused + animationStateStartValue: 0 + animationStateEndValue: 0 + m_Variable: {fileID: 11400000, guid: c2712227db89c5142adad58b143bf039, type: 2} + m_ValueUpdated: + m_PersistentCalls: + m_Calls: [] + m_MaterialPropertyBlockHelper: {fileID: 5862434181995340926} + m_FloatPropertyName: _RimPower diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/Pinch Point Stabilized.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Prefabs/PinchPointStabilized.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/Pinch Point Stabilized.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Prefabs/PinchPointStabilized.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/Right Hand Interaction Visual.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Prefabs/RightHandInteractionVisual.prefab similarity index 92% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/Right Hand Interaction Visual.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Prefabs/RightHandInteractionVisual.prefab index d1acb0c2..f09f1d2b 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/Right Hand Interaction Visual.prefab +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Prefabs/RightHandInteractionVisual.prefab @@ -178,7 +178,7 @@ GameObject: - component: {fileID: 196909957261332044} - component: {fileID: 2812080162531844880} m_Layer: 0 - m_Name: Right Hand Interaction Visual + m_Name: RightHandInteractionVisual m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -200,7 +200,6 @@ Transform: - {fileID: 3785442482958816543} - {fileID: 7565144130350447154} - {fileID: 1139509643922615340} - - {fileID: 5029497141306326558} m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -1115,7 +1114,7 @@ PrefabInstance: m_Modifications: - target: {fileID: 3535746112591574418, guid: 67c52e745f2766644ba16bfb165e2659, type: 3} propertyPath: m_Name - value: Hand Direct Interactor Affordances + value: Hand Near-Far Interactor Affordances objectReference: {fileID: 0} - target: {fileID: 3535746112591574419, guid: 67c52e745f2766644ba16bfb165e2659, type: 3} propertyPath: m_RootOrder @@ -1172,72 +1171,6 @@ Transform: m_CorrespondingSourceObject: {fileID: 3535746112591574419, guid: 67c52e745f2766644ba16bfb165e2659, type: 3} m_PrefabInstance: {fileID: 4521939072911841727} m_PrefabAsset: {fileID: 0} ---- !u!1001 &6040701402619564278 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 3266887667944164143} - m_Modifications: - - target: {fileID: 1592230186234949352, guid: e411b46c5d2514e49b26bd300e9ed8ce, type: 3} - propertyPath: m_RootOrder - value: 4 - objectReference: {fileID: 0} - - target: {fileID: 1592230186234949352, guid: e411b46c5d2514e49b26bd300e9ed8ce, type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1592230186234949352, guid: e411b46c5d2514e49b26bd300e9ed8ce, type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1592230186234949352, guid: e411b46c5d2514e49b26bd300e9ed8ce, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1592230186234949352, guid: e411b46c5d2514e49b26bd300e9ed8ce, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 1592230186234949352, guid: e411b46c5d2514e49b26bd300e9ed8ce, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1592230186234949352, guid: e411b46c5d2514e49b26bd300e9ed8ce, type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1592230186234949352, guid: e411b46c5d2514e49b26bd300e9ed8ce, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1592230186234949352, guid: e411b46c5d2514e49b26bd300e9ed8ce, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1592230186234949352, guid: e411b46c5d2514e49b26bd300e9ed8ce, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1592230186234949352, guid: e411b46c5d2514e49b26bd300e9ed8ce, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1592230186234949353, guid: e411b46c5d2514e49b26bd300e9ed8ce, type: 3} - propertyPath: m_Name - value: Hand Ray Interactor Affordances - objectReference: {fileID: 0} - - target: {fileID: 1592230186234949357, guid: e411b46c5d2514e49b26bd300e9ed8ce, type: 3} - propertyPath: m_Renderer - value: - objectReference: {fileID: 2245225350196837302} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: e411b46c5d2514e49b26bd300e9ed8ce, type: 3} ---- !u!4 &5029497141306326558 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 1592230186234949352, guid: e411b46c5d2514e49b26bd300e9ed8ce, type: 3} - m_PrefabInstance: {fileID: 6040701402619564278} - m_PrefabAsset: {fileID: 0} --- !u!1001 &6534492434163324240 PrefabInstance: m_ObjectHideFlags: 0 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/Right Hand Interaction Visual.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Prefabs/RightHandInteractionVisual.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/Right Hand Interaction Visual.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Prefabs/RightHandInteractionVisual.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/XR Origin Hands (XR Rig).prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Prefabs/XR Origin Hands (XR Rig).prefab similarity index 58% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/XR Origin Hands (XR Rig).prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Prefabs/XR Origin Hands (XR Rig).prefab index 9fbf8f94..da8d07ff 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/XR Origin Hands (XR Rig).prefab +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Prefabs/XR Origin Hands (XR Rig).prefab @@ -1,5 +1,182 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: +--- !u!1 &184753855263555647 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2577301593842775501} + - component: {fileID: 9051997425903558535} + m_Layer: 0 + m_Name: Pinch Grab Pose + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2577301593842775501 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 184753855263555647} + 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: 5878492368827077393} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &9051997425903558535 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 184753855263555647} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c2fadf230d1919748a9aa21d40f74619, type: 3} + m_Name: + m_EditorClassIdentifier: + m_TrackingType: 0 + m_UpdateType: 0 + m_IgnoreTrackingState: 0 + m_PositionInput: + m_UseReference: 1 + m_Action: + m_Name: Position + m_Type: 0 + m_ExpectedControlType: Vector3 + m_Id: 30afccef-16a0-41f5-b55e-7f7e5729c1b4 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_Reference: {fileID: -2706128282752906596, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_RotationInput: + m_UseReference: 1 + m_Action: + m_Name: Rotation + m_Type: 0 + m_ExpectedControlType: Quaternion + m_Id: 93bb13a8-bf69-44be-b396-d7d890c46a1a + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_Reference: {fileID: 8248158260566104461, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_TrackingStateInput: + m_UseReference: 1 + m_Action: + m_Name: Tracking State + m_Type: 0 + m_ExpectedControlType: Integer + m_Id: f7cb8660-fb74-4e41-a845-1a5af98a4941 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_Reference: {fileID: 684395432459739428, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_PositionAction: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: bc622c19-6f48-4007-9b8b-2c0fa5818228 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_RotationAction: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 562186a0-e5e3-4b4b-81bd-086bbe30af95 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 +--- !u!1 &317924410297350442 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9198895547380049656} + - component: {fileID: 488363206831216342} + m_Layer: 0 + m_Name: UI Press Input + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &9198895547380049656 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 317924410297350442} + 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: 1 + m_Children: [] + m_Father: {fileID: 2609991494921256999} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &488363206831216342 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 317924410297350442} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 63f61d1c82c9fc6429ebd4791a4d6817, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ValueInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: Value + m_Type: 1 + m_ExpectedControlType: + m_Id: c31ad6e4-ecd9-4e94-8d50-bcb7e193b9f4 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: Value Value + m_Type: 0 + m_ExpectedControlType: Axis + m_Id: 8e36200b-9f0d-48ce-a8a2-38e46eab9489 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: -6395602842196007441, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_InputActionReferenceValue: {fileID: 71106601250685021, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_PressThreshold: 0.8 + m_ReleaseThreshold: 0.25 --- !u!1 &927309121262695183 GameObject: m_ObjectHideFlags: 0 @@ -99,12 +276,10 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_InteractionManager: {fileID: 0} - m_InteractionLayerMask: - serializedVersion: 2 - m_Bits: 4294967295 m_InteractionLayers: m_Bits: 4294967295 - m_AttachTransform: {fileID: 2816440813717858226} + m_Handedness: 1 + m_AttachTransform: {fileID: 0} m_KeepSelectedTargetValid: 1 m_DisableVisualsWhenBlockedInGroup: 1 m_StartingSelectedInteractable: {fileID: 0} @@ -123,18 +298,6 @@ MonoBehaviour: m_Calls: [] m_StartingHoverFilters: [] m_StartingSelectFilters: [] - m_OnHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectEntered: - m_PersistentCalls: - m_Calls: [] - m_OnSelectExited: - m_PersistentCalls: - m_Calls: [] m_PokeDepth: 0.1 m_PokeWidth: 0.0075 m_PokeSelectWidth: 0.015 @@ -222,56 +385,6 @@ MonoBehaviour: m_Interactions: m_SingletonActionBindings: [] m_Flags: 0 ---- !u!1 &1648469353267697591 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1388835480394543327} - - component: {fileID: 5062945234754799757} - m_Layer: 0 - m_Name: Ray Stabilized - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1388835480394543327 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1648469353267697591} - 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: 4836530972687086638} - m_Father: {fileID: 6311120899289156754} - m_RootOrder: 5 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &5062945234754799757 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1648469353267697591} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 64d299502104b064388841ec2adf6def, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Target: {fileID: 4421665336645163413} - m_AimTargetObject: {fileID: 825434954720726026} - m_UseLocalSpace: 1 - m_AngleStabilization: 20 - m_PositionStabilization: 0.25 --- !u!1 &1800725127586568702 GameObject: m_ObjectHideFlags: 0 @@ -282,8 +395,8 @@ GameObject: m_Component: - component: {fileID: 6311120899289156754} - component: {fileID: 6560933994651781378} - - component: {fileID: 664256707558583388} - component: {fileID: 8572728199451716644} + - component: {fileID: 1476538982341290011} - component: {fileID: 4180761095810057920} m_Layer: 0 m_Name: Right Hand @@ -305,11 +418,9 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1466716113210599621} - - {fileID: 3036286681255211627} - - {fileID: 4421665336645163413} - - {fileID: 8323729308341992084} - - {fileID: 5480585174247187439} - - {fileID: 1388835480394543327} + - {fileID: 5083622343426082761} + - {fileID: 8000110866998627907} + - {fileID: 2677369771392174608} - {fileID: 4894638449106479503} - {fileID: 2062385652673493497} m_Father: {fileID: 657184242161839408} @@ -331,55 +442,11 @@ MonoBehaviour: m_InteractionManager: {fileID: 0} m_StartingGroupMembers: - {fileID: 8209797214075343310} - - {fileID: 8574486981646720036} - - {fileID: 825434954720726026} + - {fileID: 2942156198692655549} m_StartingInteractionOverridesMap: - groupMember: {fileID: 8209797214075343310} overrideGroupMembers: - - {fileID: 8574486981646720036} ---- !u!114 &664256707558583388 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1800725127586568702} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: dbac611a2982409ab5f5e604f53bcad0, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Handedness: 2 - m_PokeGestureStarted: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 8369974281163441492} - m_TargetAssemblyTypeName: UnityEngine.GameObject, UnityEngine - m_MethodName: SetActive - m_Mode: 6 - 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 - m_PokeGestureEnded: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 8369974281163441492} - m_TargetAssemblyTypeName: UnityEngine.GameObject, UnityEngine - m_MethodName: SetActive - m_Mode: 6 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 1 - m_CallState: 2 + - {fileID: 2942156198692655549} --- !u!114 &8572728199451716644 MonoBehaviour: m_ObjectHideFlags: 0 @@ -419,19 +486,7 @@ MonoBehaviour: m_StringArgument: m_BoolArgument: 0 m_CallState: 2 - - m_Target: {fileID: 392378402596404376} - m_TargetAssemblyTypeName: UnityEngine.GameObject, UnityEngine - m_MethodName: SetActive - m_Mode: 6 - 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 - - m_Target: {fileID: 8369974281163441492} + - m_Target: {fileID: 5449032374622712347} m_TargetAssemblyTypeName: UnityEngine.GameObject, UnityEngine m_MethodName: SetActive m_Mode: 6 @@ -458,19 +513,7 @@ MonoBehaviour: m_StringArgument: m_BoolArgument: 1 m_CallState: 2 - - m_Target: {fileID: 392378402596404376} - m_TargetAssemblyTypeName: UnityEngine.GameObject, UnityEngine - m_MethodName: SetActive - m_Mode: 6 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 1 - m_CallState: 2 - - m_Target: {fileID: 8369974281163441492} + - m_Target: {fileID: 5449032374622712347} m_TargetAssemblyTypeName: UnityEngine.GameObject, UnityEngine m_MethodName: SetActive m_Mode: 6 @@ -497,6 +540,51 @@ MonoBehaviour: m_StringArgument: m_BoolArgument: 0 m_CallState: 2 +--- !u!114 &1476538982341290011 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1800725127586568702} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dbac611a2982409ab5f5e604f53bcad0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Handedness: 2 + m_PokeGestureStarted: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 2942156198692655549} + m_TargetAssemblyTypeName: UnityEngine.XR.Interaction.Toolkit.MultiCastInteractor.NearFarInteractor, + Unity.XR.Interaction.Toolkit + m_MethodName: set_enableFarCasting + m_Mode: 6 + 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 + m_PokeGestureEnded: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 2942156198692655549} + m_TargetAssemblyTypeName: UnityEngine.XR.Interaction.Toolkit.MultiCastInteractor.NearFarInteractor, + Unity.XR.Interaction.Toolkit + m_MethodName: set_enableFarCasting + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 --- !u!82 &4180761095810057920 AudioSource: m_ObjectHideFlags: 0 @@ -593,7 +681,7 @@ AudioSource: m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 ---- !u!1 &3245061426241028251 +--- !u!1 &2611266366292535140 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -601,22 +689,98 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 8323729308341992084} - - component: {fileID: 2155513215361814375} + - component: {fileID: 2832331016450934123} + - component: {fileID: 6730044672306722172} m_Layer: 0 - m_Name: Poke Stabilized Attach + m_Name: Select Input m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &8323729308341992084 +--- !u!4 &2832331016450934123 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3245061426241028251} + m_GameObject: {fileID: 2611266366292535140} + 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: 1 + m_Children: [] + m_Father: {fileID: 2609991494921256999} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &6730044672306722172 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2611266366292535140} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 63f61d1c82c9fc6429ebd4791a4d6817, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ValueInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: Value + m_Type: 1 + m_ExpectedControlType: + m_Id: 8af5f191-8af9-4df3-a0eb-ab393e7026bf + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: Value Value + m_Type: 0 + m_ExpectedControlType: Axis + m_Id: 23ee9ba6-3999-4f3d-8189-277a6cf4cb42 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: -6131295136447488360, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_InputActionReferenceValue: {fileID: 6558622148059887818, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_PressThreshold: 0.8 + m_ReleaseThreshold: 0.25 +--- !u!1 &3216986067806868489 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2677369771392174608} + - component: {fileID: 2930949565896419353} + m_Layer: 0 + m_Name: Pinch Grab Pose + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2677369771392174608 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3216986067806868489} 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} @@ -625,24 +789,76 @@ Transform: m_Father: {fileID: 6311120899289156754} m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &2155513215361814375 +--- !u!114 &2930949565896419353 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3245061426241028251} + m_GameObject: {fileID: 3216986067806868489} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 64d299502104b064388841ec2adf6def, type: 3} + m_Script: {fileID: 11500000, guid: c2fadf230d1919748a9aa21d40f74619, type: 3} m_Name: m_EditorClassIdentifier: - m_Target: {fileID: 1466716113210599621} - m_AimTargetObject: {fileID: 0} - m_UseLocalSpace: 1 - m_AngleStabilization: 5 - m_PositionStabilization: 0.03 ---- !u!1 &3649190778506208739 + m_TrackingType: 0 + m_UpdateType: 0 + m_IgnoreTrackingState: 0 + m_PositionInput: + m_UseReference: 1 + m_Action: + m_Name: Position + m_Type: 0 + m_ExpectedControlType: Vector3 + m_Id: 53c7e346-77a0-4e87-be38-dd2d1b0dee53 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_Reference: {fileID: -7813013294023911475, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_RotationInput: + m_UseReference: 1 + m_Action: + m_Name: Rotation + m_Type: 0 + m_ExpectedControlType: Quaternion + m_Id: 46629533-7e64-44be-aa25-ed9dd59091c0 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_Reference: {fileID: 5101698808175986029, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_TrackingStateInput: + m_UseReference: 1 + m_Action: + m_Name: Tracking State + m_Type: 0 + m_ExpectedControlType: Integer + m_Id: 486a9a93-5a8b-4b8c-b115-397f20eb6400 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_Reference: {fileID: -1277054153949319361, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_PositionAction: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 5008e6f1-ae36-41fa-bbb8-688d12ba2040 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_RotationAction: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 17f4a6d6-82f3-4b3c-a2ce-62d2fe310f63 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 +--- !u!1 &3731119764064029736 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -650,47 +866,175 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 5480585174247187439} - - component: {fileID: 3335411013425949682} + - component: {fileID: 9150249479564954943} + - component: {fileID: 7217514538655570714} m_Layer: 0 - m_Name: Direct Stabilized Attach + m_Name: Aim Pose m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &5480585174247187439 +--- !u!4 &9150249479564954943 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3649190778506208739} + m_GameObject: {fileID: 3731119764064029736} 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: 6311120899289156754} - m_RootOrder: 4 + m_Father: {fileID: 5878492368827077393} + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &3335411013425949682 +--- !u!114 &7217514538655570714 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3649190778506208739} + m_GameObject: {fileID: 3731119764064029736} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 64d299502104b064388841ec2adf6def, type: 3} + m_Script: {fileID: 11500000, guid: c2fadf230d1919748a9aa21d40f74619, type: 3} m_Name: m_EditorClassIdentifier: - m_Target: {fileID: 3036286681255211627} - m_AimTargetObject: {fileID: 0} - m_UseLocalSpace: 1 - m_AngleStabilization: 5 - m_PositionStabilization: 0.03 + m_TrackingType: 0 + m_UpdateType: 0 + m_IgnoreTrackingState: 0 + m_PositionInput: + m_UseReference: 1 + m_Action: + m_Name: Position + m_Type: 0 + m_ExpectedControlType: Vector3 + m_Id: 0c4b579d-ee40-46d3-a88c-e891a262b15d + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_Reference: {fileID: -2496076053284925795, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_RotationInput: + m_UseReference: 1 + m_Action: + m_Name: Rotation + m_Type: 0 + m_ExpectedControlType: Quaternion + m_Id: 9b71528a-da93-4597-b881-749f186a3d2d + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_Reference: {fileID: 7149951272733842039, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_TrackingStateInput: + m_UseReference: 1 + m_Action: + m_Name: Tracking State + m_Type: 0 + m_ExpectedControlType: Integer + m_Id: 774d357c-5bfa-42fa-93a6-afeee62d27c6 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_Reference: {fileID: 684395432459739428, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_PositionAction: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: d0569fd8-2c54-429b-82a5-adcdaa21fd60 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_RotationAction: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 74ba3577-c83e-41ae-bce4-66a70d6e3399 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 +--- !u!1 &3892329699652493770 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6184646459296248926} + - component: {fileID: 781544023858974861} + m_Layer: 0 + m_Name: UI Press Input + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6184646459296248926 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3892329699652493770} + 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: 1 + m_Children: [] + m_Father: {fileID: 5083622343426082761} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &781544023858974861 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3892329699652493770} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 63f61d1c82c9fc6429ebd4791a4d6817, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ValueInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: Value + m_Type: 1 + m_ExpectedControlType: + m_Id: 573218e1-1037-443b-b4e7-621bf6e32482 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: Value Value + m_Type: 0 + m_ExpectedControlType: Axis + m_Id: fd259e71-bb9d-4042-83b0-5704f6c057c9 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: 3279264004350380116, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_InputActionReferenceValue: {fileID: -5908353012961274365, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_PressThreshold: 0.8 + m_ReleaseThreshold: 0.25 --- !u!1 &4605643766788160351 GameObject: m_ObjectHideFlags: 0 @@ -737,7 +1081,7 @@ MonoBehaviour: m_EditorClassIdentifier: m_FilterMinCutoff: 0.1 m_FilterBeta: 0.2 ---- !u!1 &5885254045885060483 +--- !u!1 &5323647229090770512 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -745,48 +1089,175 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 8008812968308354104} - - component: {fileID: 7344411194599346914} + - component: {fileID: 1551366800282432914} + - component: {fileID: 4234401886418808293} m_Layer: 0 - m_Name: Ray Stabilized + m_Name: Select Input m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &8008812968308354104 +--- !u!4 &1551366800282432914 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5885254045885060483} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_GameObject: {fileID: 5323647229090770512} + 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: 3675916531870186414} - m_Father: {fileID: 5878492368827077393} - m_RootOrder: 5 + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 5083622343426082761} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &7344411194599346914 +--- !u!114 &4234401886418808293 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5885254045885060483} + m_GameObject: {fileID: 5323647229090770512} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 64d299502104b064388841ec2adf6def, type: 3} + m_Script: {fileID: 11500000, guid: 63f61d1c82c9fc6429ebd4791a4d6817, type: 3} m_Name: m_EditorClassIdentifier: - m_Target: {fileID: 8847029981464006006} - m_AimTargetObject: {fileID: 5543534632417482985} - m_UseLocalSpace: 1 - m_AngleStabilization: 20 - m_PositionStabilization: 0.25 + m_ValueInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: Value + m_Type: 1 + m_ExpectedControlType: + m_Id: 10f0c96d-6c50-4214-b520-55ed10f0d86a + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: Value Value + m_Type: 0 + m_ExpectedControlType: Axis + m_Id: 1af57d1d-a16a-4f44-9f26-44d165b54d6a + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: 187161793506945269, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_InputActionReferenceValue: {fileID: -1758520528963094988, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_PressThreshold: 0.8 + m_ReleaseThreshold: 0.25 +--- !u!1 &5780998334867579440 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8000110866998627907} + - component: {fileID: 2034475846792841991} + m_Layer: 0 + m_Name: Aim Pose + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8000110866998627907 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5780998334867579440} + 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: 6311120899289156754} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2034475846792841991 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5780998334867579440} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c2fadf230d1919748a9aa21d40f74619, type: 3} + m_Name: + m_EditorClassIdentifier: + m_TrackingType: 0 + m_UpdateType: 0 + m_IgnoreTrackingState: 0 + m_PositionInput: + m_UseReference: 1 + m_Action: + m_Name: Position + m_Type: 0 + m_ExpectedControlType: Vector3 + m_Id: 53c7e346-77a0-4e87-be38-dd2d1b0dee53 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_Reference: {fileID: 9126875591944302883, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_RotationInput: + m_UseReference: 1 + m_Action: + m_Name: Rotation + m_Type: 0 + m_ExpectedControlType: Quaternion + m_Id: 46629533-7e64-44be-aa25-ed9dd59091c0 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_Reference: {fileID: -3870559572202308136, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_TrackingStateInput: + m_UseReference: 1 + m_Action: + m_Name: Tracking State + m_Type: 0 + m_ExpectedControlType: Integer + m_Id: 486a9a93-5a8b-4b8c-b115-397f20eb6400 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_Reference: {fileID: -1277054153949319361, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_PositionAction: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 5008e6f1-ae36-41fa-bbb8-688d12ba2040 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_RotationAction: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 17f4a6d6-82f3-4b3c-a2ce-62d2fe310f63 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 --- !u!1 &6003869514719898561 GameObject: m_ObjectHideFlags: 0 @@ -833,12 +1304,10 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_InteractionManager: {fileID: 0} - m_InteractionLayerMask: - serializedVersion: 2 - m_Bits: 4294967295 m_InteractionLayers: m_Bits: 4294967295 - m_AttachTransform: {fileID: 8323729308341992084} + m_Handedness: 2 + m_AttachTransform: {fileID: 0} m_KeepSelectedTargetValid: 1 m_DisableVisualsWhenBlockedInGroup: 1 m_StartingSelectedInteractable: {fileID: 0} @@ -857,18 +1326,6 @@ MonoBehaviour: m_Calls: [] m_StartingHoverFilters: [] m_StartingSelectFilters: [] - m_OnHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectEntered: - m_PersistentCalls: - m_Calls: [] - m_OnSelectExited: - m_PersistentCalls: - m_Calls: [] m_PokeDepth: 0.1 m_PokeWidth: 0.0075 m_PokeSelectWidth: 0.015 @@ -966,8 +1423,8 @@ GameObject: m_Component: - component: {fileID: 5878492368827077393} - component: {fileID: 3510802014482765209} - - component: {fileID: 3518443110171711630} - component: {fileID: 8504099170080106023} + - component: {fileID: 4728882361841621924} - component: {fileID: 7475873568227309559} m_Layer: 0 m_Name: Left Hand @@ -989,11 +1446,9 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 8075461073020094709} - - {fileID: 2431253500503645677} - - {fileID: 8847029981464006006} - - {fileID: 2816440813717858226} - - {fileID: 7201011967548035520} - - {fileID: 8008812968308354104} + - {fileID: 2609991494921256999} + - {fileID: 9150249479564954943} + - {fileID: 2577301593842775501} - {fileID: 1176872742605197438} - {fileID: 4399806423645351520} m_Father: {fileID: 657184242161839408} @@ -1015,55 +1470,11 @@ MonoBehaviour: m_InteractionManager: {fileID: 0} m_StartingGroupMembers: - {fileID: 6237049687586235588} - - {fileID: 9034274667510444962} - - {fileID: 5543534632417482985} + - {fileID: 5359434741994886739} m_StartingInteractionOverridesMap: - groupMember: {fileID: 6237049687586235588} overrideGroupMembers: - - {fileID: 9034274667510444962} ---- !u!114 &3518443110171711630 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6355494128053973299} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: dbac611a2982409ab5f5e604f53bcad0, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Handedness: 1 - m_PokeGestureStarted: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 3725040479187177911} - m_TargetAssemblyTypeName: UnityEngine.GameObject, UnityEngine - m_MethodName: SetActive - m_Mode: 6 - 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 - m_PokeGestureEnded: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 3725040479187177911} - m_TargetAssemblyTypeName: UnityEngine.GameObject, UnityEngine - m_MethodName: SetActive - m_Mode: 6 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 1 - m_CallState: 2 + - {fileID: 5359434741994886739} --- !u!114 &8504099170080106023 MonoBehaviour: m_ObjectHideFlags: 0 @@ -1103,19 +1514,7 @@ MonoBehaviour: m_StringArgument: m_BoolArgument: 0 m_CallState: 2 - - m_Target: {fileID: 1075375832233251614} - m_TargetAssemblyTypeName: UnityEngine.GameObject, UnityEngine - m_MethodName: SetActive - m_Mode: 6 - 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 - - m_Target: {fileID: 3725040479187177911} + - m_Target: {fileID: 2966448196471584245} m_TargetAssemblyTypeName: UnityEngine.GameObject, UnityEngine m_MethodName: SetActive m_Mode: 6 @@ -1142,19 +1541,7 @@ MonoBehaviour: m_StringArgument: m_BoolArgument: 1 m_CallState: 2 - - m_Target: {fileID: 1075375832233251614} - m_TargetAssemblyTypeName: UnityEngine.GameObject, UnityEngine - m_MethodName: SetActive - m_Mode: 6 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 1 - m_CallState: 2 - - m_Target: {fileID: 3725040479187177911} + - m_Target: {fileID: 2966448196471584245} m_TargetAssemblyTypeName: UnityEngine.GameObject, UnityEngine m_MethodName: SetActive m_Mode: 6 @@ -1181,6 +1568,51 @@ MonoBehaviour: m_StringArgument: m_BoolArgument: 0 m_CallState: 2 +--- !u!114 &4728882361841621924 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6355494128053973299} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dbac611a2982409ab5f5e604f53bcad0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Handedness: 1 + m_PokeGestureStarted: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 5359434741994886739} + m_TargetAssemblyTypeName: UnityEngine.XR.Interaction.Toolkit.MultiCastInteractor.NearFarInteractor, + Unity.XR.Interaction.Toolkit + m_MethodName: set_enableFarCasting + m_Mode: 6 + 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 + m_PokeGestureEnded: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 5359434741994886739} + m_TargetAssemblyTypeName: UnityEngine.XR.Interaction.Toolkit.MultiCastInteractor.NearFarInteractor, + Unity.XR.Interaction.Toolkit + m_MethodName: set_enableFarCasting + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 --- !u!82 &7475873568227309559 AudioSource: m_ObjectHideFlags: 0 @@ -1277,166 +1709,6 @@ AudioSource: m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 ---- !u!1 &6425649362978643912 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3675916531870186414} - m_Layer: 0 - m_Name: Ray Stabilized Attach - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &3675916531870186414 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6425649362978643912} - 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: 8008812968308354104} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &6611849723481788952 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7201011967548035520} - - component: {fileID: 1590360528098143729} - m_Layer: 0 - m_Name: Direct Stabilized Attach - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &7201011967548035520 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6611849723481788952} - 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: 5878492368827077393} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1590360528098143729 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6611849723481788952} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 64d299502104b064388841ec2adf6def, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Target: {fileID: 2431253500503645677} - m_AimTargetObject: {fileID: 0} - m_UseLocalSpace: 1 - m_AngleStabilization: 5 - m_PositionStabilization: 0.03 ---- !u!1 &7061734178652924031 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4836530972687086638} - m_Layer: 0 - m_Name: Ray Stabilized Attach - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4836530972687086638 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7061734178652924031} - 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: 1388835480394543327} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &9015811520793536507 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2816440813717858226} - - component: {fileID: 8196991743538121587} - m_Layer: 0 - m_Name: Poke Stabilized Attach - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &2816440813717858226 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 9015811520793536507} - 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: 5878492368827077393} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &8196991743538121587 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 9015811520793536507} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 64d299502104b064388841ec2adf6def, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Target: {fileID: 8075461073020094709} - m_AimTargetObject: {fileID: 0} - m_UseLocalSpace: 1 - m_AngleStabilization: 5 - m_PositionStabilization: 0.03 --- !u!1001 &657184243840976483 PrefabInstance: m_ObjectHideFlags: 0 @@ -1522,14 +1794,14 @@ PrefabInstance: - target: {fileID: 1493371769922722507, guid: ffd656bf2a3ba3d41b1e4a94b81b7c85, type: 3} propertyPath: m_InteractorSource value: - objectReference: {fileID: 9034274667510444962} + objectReference: {fileID: 5359434741994886739} - target: {fileID: 1593233024999764063, guid: ffd656bf2a3ba3d41b1e4a94b81b7c85, type: 3} propertyPath: m_InteractorSource value: - objectReference: {fileID: 5543534632417482985} + objectReference: {fileID: 0} - target: {fileID: 1595251472046566641, guid: ffd656bf2a3ba3d41b1e4a94b81b7c85, type: 3} propertyPath: m_RootOrder - value: 7 + value: 5 objectReference: {fileID: 0} - target: {fileID: 1595251472046566641, guid: ffd656bf2a3ba3d41b1e4a94b81b7c85, type: 3} propertyPath: m_LocalPosition.x @@ -1618,334 +1890,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b5b9cf54c47f40ee9c3eb30ea8eb89b9, type: 3} m_Name: m_EditorClassIdentifier: ---- !u!1001 &3134485598015230918 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 5878492368827077393} - m_Modifications: - - target: {fileID: 1787346994484839025, guid: ad818c36731146e994540a1896ad8f24, type: 3} - propertyPath: m_Name - value: Ray Interactor - objectReference: {fileID: 0} - - target: {fileID: 4924506573850889901, guid: ad818c36731146e994540a1896ad8f24, type: 3} - propertyPath: m_LineWidth - value: 0.0035 - objectReference: {fileID: 0} - - target: {fileID: 4924506573850889901, guid: ad818c36731146e994540a1896ad8f24, type: 3} - propertyPath: m_MinLineLength - value: 0.1 - objectReference: {fileID: 0} - - target: {fileID: 4924506573850889901, guid: ad818c36731146e994540a1896ad8f24, type: 3} - propertyPath: m_LineOriginOffset - value: 0.0375 - objectReference: {fileID: 0} - - target: {fileID: 4924506573850889901, guid: ad818c36731146e994540a1896ad8f24, type: 3} - propertyPath: m_LineOriginTransform - value: - objectReference: {fileID: 1176872742605197438} - - target: {fileID: 5888765399538998960, guid: ad818c36731146e994540a1896ad8f24, type: 3} - propertyPath: m_RootOrder - value: 2 - objectReference: {fileID: 0} - - target: {fileID: 5888765399538998960, guid: ad818c36731146e994540a1896ad8f24, type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5888765399538998960, guid: ad818c36731146e994540a1896ad8f24, type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5888765399538998960, guid: ad818c36731146e994540a1896ad8f24, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5888765399538998960, guid: ad818c36731146e994540a1896ad8f24, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 5888765399538998960, guid: ad818c36731146e994540a1896ad8f24, type: 3} - propertyPath: m_LocalRotation.x - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 5888765399538998960, guid: ad818c36731146e994540a1896ad8f24, type: 3} - propertyPath: m_LocalRotation.y - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 5888765399538998960, guid: ad818c36731146e994540a1896ad8f24, type: 3} - propertyPath: m_LocalRotation.z - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 5888765399538998960, guid: ad818c36731146e994540a1896ad8f24, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5888765399538998960, guid: ad818c36731146e994540a1896ad8f24, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5888765399538998960, guid: ad818c36731146e994540a1896ad8f24, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 7462879561657043759, guid: ad818c36731146e994540a1896ad8f24, type: 3} - propertyPath: m_AttachTransform - value: - objectReference: {fileID: 3675916531870186414} - - target: {fileID: 7462879561657043759, guid: ad818c36731146e994540a1896ad8f24, type: 3} - propertyPath: m_RayOriginTransform - value: - objectReference: {fileID: 8008812968308354104} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: ad818c36731146e994540a1896ad8f24, type: 3} ---- !u!1 &3725040479187177911 stripped -GameObject: - m_CorrespondingSourceObject: {fileID: 1787346994484839025, guid: ad818c36731146e994540a1896ad8f24, type: 3} - m_PrefabInstance: {fileID: 3134485598015230918} - m_PrefabAsset: {fileID: 0} ---- !u!114 &7671879982578654164 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3725040479187177911} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: caff514de9b15ad48ab85dcff5508221, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UpdateTrackingType: 0 - m_EnableInputTracking: 1 - m_EnableInputActions: 1 - m_ModelPrefab: {fileID: 0} - m_ModelParent: {fileID: 0} - m_Model: {fileID: 0} - m_AnimateModel: 0 - m_ModelSelectTransition: - m_ModelDeSelectTransition: - m_PositionAction: - m_UseReference: 1 - m_Action: - m_Name: Position - m_Type: 0 - m_ExpectedControlType: Vector3 - m_Id: 26d2aaa4-6518-4d33-8fae-419043a723d4 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -2496076053284925795, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_RotationAction: - m_UseReference: 1 - m_Action: - m_Name: Rotation - m_Type: 0 - m_ExpectedControlType: Quaternion - m_Id: d7a15530-737b-416a-9d5d-a8b51ba6c682 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 7149951272733842039, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_IsTrackedAction: - m_UseReference: 1 - m_Action: - m_Name: Is Tracked - m_Type: 1 - m_ExpectedControlType: Button - m_Id: 01c9e969-5b08-4ff9-97a1-d646e587fa31 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 1 - m_Reference: {fileID: 840156964685210860, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_TrackingStateAction: - m_UseReference: 1 - m_Action: - m_Name: Tracking State - m_Type: 0 - m_ExpectedControlType: Integer - m_Id: e12d3305-8866-42f0-a9b8-2cd7f4310c31 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 684395432459739428, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_SelectAction: - m_UseReference: 1 - m_Action: - m_Name: Select - m_Type: 1 - m_ExpectedControlType: Button - m_Id: 05483079-4b7c-4369-9176-fb8514428e98 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -6131295136447488360, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_SelectActionValue: - m_UseReference: 1 - m_Action: - m_Name: Select Action Value - m_Type: 0 - m_ExpectedControlType: Axis - m_Id: 8e42f062-fb45-44df-9825-35e1dfc18834 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 6558622148059887818, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_ActivateAction: - m_UseReference: 1 - m_Action: - m_Name: Activate - m_Type: 1 - m_ExpectedControlType: Button - m_Id: 38e5c09b-96d2-40e4-ae8e-3bfb9eb16727 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -5982496924579745919, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_ActivateActionValue: - m_UseReference: 1 - m_Action: - m_Name: Activate Action Value - m_Type: 0 - m_ExpectedControlType: Axis - m_Id: ff2b1032-d7ae-4e1a-8e8a-a5556d5f8db5 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -4289430672226363583, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_UIPressAction: - m_UseReference: 1 - m_Action: - m_Name: UI Press - m_Type: 1 - m_ExpectedControlType: Button - m_Id: 347fe4ac-83bc-44f7-a0d2-2793a5775161 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -6395602842196007441, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_UIPressActionValue: - m_UseReference: 1 - m_Action: - m_Name: UI Press Action Value - m_Type: 0 - m_ExpectedControlType: Axis - m_Id: 8b29ebc3-3830-4622-8c66-56f3a9b98d73 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 71106601250685021, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_UIScrollAction: - m_UseReference: 1 - m_Action: - m_Name: UI Scroll - m_Type: 0 - m_ExpectedControlType: Vector2 - m_Id: 61000fa3-bda0-42fc-ba38-f6f7692c3e9a - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 2464016903823916871, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_HapticDeviceAction: - m_UseReference: 1 - m_Action: - m_Name: Haptic Device - m_Type: 2 - m_ExpectedControlType: - m_Id: 35cfed17-bcaf-4ff9-9fe0-fa1727b7619b - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -8785819595477538065, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_RotateAnchorAction: - m_UseReference: 1 - m_Action: - m_Name: Rotate Anchor - m_Type: 0 - m_ExpectedControlType: Vector2 - m_Id: 4fcd4b62-1769-4cc4-aaee-aea2fc40d24f - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -7363382999065477798, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_DirectionalAnchorRotationAction: - m_UseReference: 1 - m_Action: - m_Name: Directional Anchor Rotation - m_Type: 0 - m_ExpectedControlType: Vector2 - m_Id: 0a72890c-b3bc-4ec1-adad-df62dfa843d9 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -8811388872089202044, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_TranslateAnchorAction: - m_UseReference: 1 - m_Action: - m_Name: Translate Anchor - m_Type: 0 - m_ExpectedControlType: Vector2 - m_Id: 7bfe4461-8d15-4a61-9fa6-28ce950c9996 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 7779212132400271959, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_ScaleToggleAction: - m_UseReference: 1 - m_Action: - m_Name: Scale Toggle - m_Type: 1 - m_ExpectedControlType: - m_Id: 5fa3e2c1-a95e-4724-b74b-c5ad1229a291 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 0} - m_ScaleDeltaAction: - m_UseReference: 1 - m_Action: - m_Name: Scale Delta - m_Type: 0 - m_ExpectedControlType: Vector2 - m_Id: d1518bf7-ff62-47f4-8bf9-b74d00621304 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 0} - m_ButtonPressPoint: 0.5 ---- !u!114 &5543534632417482985 stripped -MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 7462879561657043759, guid: ad818c36731146e994540a1896ad8f24, type: 3} - m_PrefabInstance: {fileID: 3134485598015230918} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3725040479187177911} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 6803edce0201f574f923fd9d10e5b30a, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!4 &8847029981464006006 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 5888765399538998960, guid: ad818c36731146e994540a1896ad8f24, type: 3} - m_PrefabInstance: {fileID: 3134485598015230918} - m_PrefabAsset: {fileID: 0} --- !u!1001 &3273442460117869337 PrefabInstance: m_ObjectHideFlags: 0 @@ -1956,7 +1900,7 @@ PrefabInstance: - target: {fileID: 868360655280004538, guid: 88b12c0ca81d9a34eac32a1e1bd19b1c, type: 3} propertyPath: m_Interactor value: - objectReference: {fileID: 825434954720726026} + objectReference: {fileID: 2942156198692655549} - target: {fileID: 3369527167708781622, guid: 88b12c0ca81d9a34eac32a1e1bd19b1c, type: 3} propertyPath: m_Name value: Pinch Point Stabilized @@ -1964,26 +1908,34 @@ PrefabInstance: - target: {fileID: 3901091180161469564, guid: 88b12c0ca81d9a34eac32a1e1bd19b1c, type: 3} propertyPath: m_InteractorSource value: - objectReference: {fileID: 825434954720726026} + objectReference: {fileID: 0} - target: {fileID: 3941121930630195656, guid: 88b12c0ca81d9a34eac32a1e1bd19b1c, type: 3} propertyPath: m_InteractorSource value: - objectReference: {fileID: 825434954720726026} + objectReference: {fileID: 2942156198692655549} + - target: {fileID: 5697399126433476533, guid: 88b12c0ca81d9a34eac32a1e1bd19b1c, type: 3} + propertyPath: m_LocalPosition.z + value: 0.025 + objectReference: {fileID: 0} - target: {fileID: 6603267092101694357, guid: 88b12c0ca81d9a34eac32a1e1bd19b1c, type: 3} propertyPath: m_RayInteractor value: - objectReference: {fileID: 825434954720726026} + objectReference: {fileID: 0} - target: {fileID: 6603267092101694357, guid: 88b12c0ca81d9a34eac32a1e1bd19b1c, type: 3} propertyPath: m_TargetRotation value: - objectReference: {fileID: 1388835480394543327} + objectReference: {fileID: 8000110866998627907} + - target: {fileID: 6603267092101694357, guid: 88b12c0ca81d9a34eac32a1e1bd19b1c, type: 3} + propertyPath: m_NearFarInteractor + value: + objectReference: {fileID: 2942156198692655549} - target: {fileID: 6603267092101694357, guid: 88b12c0ca81d9a34eac32a1e1bd19b1c, type: 3} propertyPath: m_XRHandTrackingEvents value: objectReference: {fileID: 1576675058413778859} - target: {fileID: 7962545760240945814, guid: 88b12c0ca81d9a34eac32a1e1bd19b1c, type: 3} propertyPath: m_RootOrder - value: 6 + value: 4 objectReference: {fileID: 0} - target: {fileID: 7962545760240945814, guid: 88b12c0ca81d9a34eac32a1e1bd19b1c, type: 3} propertyPath: m_LocalPosition.x @@ -2032,6 +1984,11 @@ Transform: m_CorrespondingSourceObject: {fileID: 7962545760240945814, guid: 88b12c0ca81d9a34eac32a1e1bd19b1c, type: 3} m_PrefabInstance: {fileID: 3273442460117869337} m_PrefabAsset: {fileID: 0} +--- !u!4 &7096723873125731500 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 5697399126433476533, guid: 88b12c0ca81d9a34eac32a1e1bd19b1c, type: 3} + m_PrefabInstance: {fileID: 3273442460117869337} + m_PrefabAsset: {fileID: 0} --- !u!1001 &3587470959140778710 PrefabInstance: m_ObjectHideFlags: 0 @@ -2042,14 +1999,14 @@ PrefabInstance: - target: {fileID: 1139509643922615336, guid: 89e80c47615e4f043926d66492d3ca5f, type: 3} propertyPath: m_InteractorSource value: - objectReference: {fileID: 8574486981646720036} + objectReference: {fileID: 2942156198692655549} - target: {fileID: 2746493918707896725, guid: 89e80c47615e4f043926d66492d3ca5f, type: 3} propertyPath: m_Name value: Right Hand Interaction Visual objectReference: {fileID: 0} - target: {fileID: 3266887667944164143, guid: 89e80c47615e4f043926d66492d3ca5f, type: 3} propertyPath: m_RootOrder - value: 7 + value: 5 objectReference: {fileID: 0} - target: {fileID: 3266887667944164143, guid: 89e80c47615e4f043926d66492d3ca5f, type: 3} propertyPath: m_LocalPosition.x @@ -2094,7 +2051,7 @@ PrefabInstance: - target: {fileID: 5029497141306326554, guid: 89e80c47615e4f043926d66492d3ca5f, type: 3} propertyPath: m_InteractorSource value: - objectReference: {fileID: 825434954720726026} + objectReference: {fileID: 0} - target: {fileID: 7565144130350447158, guid: 89e80c47615e4f043926d66492d3ca5f, type: 3} propertyPath: m_InteractorSource value: @@ -2138,644 +2095,258 @@ Transform: m_CorrespondingSourceObject: {fileID: 3266887667944164143, guid: 89e80c47615e4f043926d66492d3ca5f, type: 3} m_PrefabInstance: {fileID: 3587470959140778710} m_PrefabAsset: {fileID: 0} ---- !u!1001 &7846943853348554533 +--- !u!1001 &7667419780366140788 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: m_TransformParent: {fileID: 6311120899289156754} m_Modifications: - - target: {fileID: 1787346994484839025, guid: ad818c36731146e994540a1896ad8f24, type: 3} - propertyPath: m_Name - value: Ray Interactor - objectReference: {fileID: 0} - - target: {fileID: 4924506573850889901, guid: ad818c36731146e994540a1896ad8f24, type: 3} - propertyPath: m_LineWidth - value: 0.0035 - objectReference: {fileID: 0} - - target: {fileID: 4924506573850889901, guid: ad818c36731146e994540a1896ad8f24, type: 3} - propertyPath: m_MinLineLength - value: 0.1 - objectReference: {fileID: 0} - - target: {fileID: 4924506573850889901, guid: ad818c36731146e994540a1896ad8f24, type: 3} - propertyPath: m_LineOriginOffset - value: 0.0375 - objectReference: {fileID: 0} - - target: {fileID: 4924506573850889901, guid: ad818c36731146e994540a1896ad8f24, type: 3} - propertyPath: m_LineOriginTransform + - target: {fileID: 130500635472496801, guid: b200f6587d118224eba8467281481800, type: 3} + propertyPath: m_CastOrigin value: - objectReference: {fileID: 4894638449106479503} - - target: {fileID: 5888765399538998960, guid: ad818c36731146e994540a1896ad8f24, type: 3} - propertyPath: m_RootOrder - value: 2 + objectReference: {fileID: 2677369771392174608} + - target: {fileID: 2447424620550846319, guid: b200f6587d118224eba8467281481800, type: 3} + propertyPath: m_Name + value: Near-Far Interactor objectReference: {fileID: 0} - - target: {fileID: 5888765399538998960, guid: ad818c36731146e994540a1896ad8f24, type: 3} + - target: {fileID: 3234853630605623997, guid: b200f6587d118224eba8467281481800, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3234853630605623997, guid: b200f6587d118224eba8467281481800, type: 3} propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 5888765399538998960, guid: ad818c36731146e994540a1896ad8f24, type: 3} + - target: {fileID: 3234853630605623997, guid: b200f6587d118224eba8467281481800, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 5888765399538998960, guid: ad818c36731146e994540a1896ad8f24, type: 3} + - target: {fileID: 3234853630605623997, guid: b200f6587d118224eba8467281481800, type: 3} propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 5888765399538998960, guid: ad818c36731146e994540a1896ad8f24, type: 3} + - target: {fileID: 3234853630605623997, guid: b200f6587d118224eba8467281481800, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 5888765399538998960, guid: ad818c36731146e994540a1896ad8f24, type: 3} + - target: {fileID: 3234853630605623997, guid: b200f6587d118224eba8467281481800, type: 3} propertyPath: m_LocalRotation.x value: -0 objectReference: {fileID: 0} - - target: {fileID: 5888765399538998960, guid: ad818c36731146e994540a1896ad8f24, type: 3} + - target: {fileID: 3234853630605623997, guid: b200f6587d118224eba8467281481800, type: 3} propertyPath: m_LocalRotation.y value: -0 objectReference: {fileID: 0} - - target: {fileID: 5888765399538998960, guid: ad818c36731146e994540a1896ad8f24, type: 3} + - target: {fileID: 3234853630605623997, guid: b200f6587d118224eba8467281481800, type: 3} propertyPath: m_LocalRotation.z value: -0 objectReference: {fileID: 0} - - target: {fileID: 5888765399538998960, guid: ad818c36731146e994540a1896ad8f24, type: 3} + - target: {fileID: 3234853630605623997, guid: b200f6587d118224eba8467281481800, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 5888765399538998960, guid: ad818c36731146e994540a1896ad8f24, type: 3} + - target: {fileID: 3234853630605623997, guid: b200f6587d118224eba8467281481800, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 5888765399538998960, guid: ad818c36731146e994540a1896ad8f24, type: 3} + - target: {fileID: 3234853630605623997, guid: b200f6587d118224eba8467281481800, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 7462879561657043759, guid: ad818c36731146e994540a1896ad8f24, type: 3} - propertyPath: m_AttachTransform + - target: {fileID: 4808866746549998793, guid: b200f6587d118224eba8467281481800, type: 3} + propertyPath: m_SelectInput.m_InputSourceMode + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 4808866746549998793, guid: b200f6587d118224eba8467281481800, type: 3} + propertyPath: m_UIPressInput.m_InputSourceMode + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 4808866746549998793, guid: b200f6587d118224eba8467281481800, type: 3} + propertyPath: m_SelectInput.m_ObjectReferenceObject value: - objectReference: {fileID: 4836530972687086638} - - target: {fileID: 7462879561657043759, guid: ad818c36731146e994540a1896ad8f24, type: 3} - propertyPath: m_RayOriginTransform + objectReference: {fileID: 4234401886418808293} + - target: {fileID: 4808866746549998793, guid: b200f6587d118224eba8467281481800, type: 3} + propertyPath: m_UIPressInput.m_ObjectReferenceObject value: - objectReference: {fileID: 1388835480394543327} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: ad818c36731146e994540a1896ad8f24, type: 3} ---- !u!114 &825434954720726026 stripped + objectReference: {fileID: 781544023858974861} + - target: {fileID: 6288467125497789300, guid: b200f6587d118224eba8467281481800, type: 3} + propertyPath: m_LineBendRatio + value: 0.15 + objectReference: {fileID: 0} + - target: {fileID: 6288467125497789300, guid: b200f6587d118224eba8467281481800, type: 3} + propertyPath: m_CurveStartOffset + value: 0.025 + objectReference: {fileID: 0} + - target: {fileID: 6288467125497789300, guid: b200f6587d118224eba8467281481800, type: 3} + propertyPath: m_LineOriginTransform + value: + objectReference: {fileID: 7096723873125731500} + - target: {fileID: 8229381180640938747, guid: b200f6587d118224eba8467281481800, type: 3} + propertyPath: m_CastOrigin + value: + objectReference: {fileID: 8000110866998627907} + - target: {fileID: 8408429868716997126, guid: b200f6587d118224eba8467281481800, type: 3} + propertyPath: m_SmoothOffset + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8408429868716997126, guid: b200f6587d118224eba8467281481800, type: 3} + propertyPath: m_TransformToFollow + value: + objectReference: {fileID: 2677369771392174608} + - target: {fileID: 8408429868716997126, guid: b200f6587d118224eba8467281481800, type: 3} + propertyPath: m_MinAdditionalVelocityScalar + value: 0.25 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 5712664876877111600, guid: b200f6587d118224eba8467281481800, type: 3} + m_SourcePrefab: {fileID: 100100000, guid: b200f6587d118224eba8467281481800, type: 3} +--- !u!114 &2942156198692655549 stripped MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 7462879561657043759, guid: ad818c36731146e994540a1896ad8f24, type: 3} - m_PrefabInstance: {fileID: 7846943853348554533} + m_CorrespondingSourceObject: {fileID: 4808866746549998793, guid: b200f6587d118224eba8467281481800, type: 3} + m_PrefabInstance: {fileID: 7667419780366140788} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8369974281163441492} + m_GameObject: {fileID: 5449032374622712347} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 6803edce0201f574f923fd9d10e5b30a, type: 3} + m_Script: {fileID: 11500000, guid: 25a07ef133a37d140a87cdf1f1c75fdf, type: 3} m_Name: m_EditorClassIdentifier: ---- !u!4 &4421665336645163413 stripped +--- !u!4 &5083622343426082761 stripped Transform: - m_CorrespondingSourceObject: {fileID: 5888765399538998960, guid: ad818c36731146e994540a1896ad8f24, type: 3} - m_PrefabInstance: {fileID: 7846943853348554533} + m_CorrespondingSourceObject: {fileID: 3234853630605623997, guid: b200f6587d118224eba8467281481800, type: 3} + m_PrefabInstance: {fileID: 7667419780366140788} m_PrefabAsset: {fileID: 0} ---- !u!1 &8369974281163441492 stripped +--- !u!1 &5449032374622712347 stripped GameObject: - m_CorrespondingSourceObject: {fileID: 1787346994484839025, guid: ad818c36731146e994540a1896ad8f24, type: 3} - m_PrefabInstance: {fileID: 7846943853348554533} + m_CorrespondingSourceObject: {fileID: 2447424620550846319, guid: b200f6587d118224eba8467281481800, type: 3} + m_PrefabInstance: {fileID: 7667419780366140788} m_PrefabAsset: {fileID: 0} ---- !u!114 &6059245343997905482 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8369974281163441492} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: caff514de9b15ad48ab85dcff5508221, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UpdateTrackingType: 0 - m_EnableInputTracking: 1 - m_EnableInputActions: 1 - m_ModelPrefab: {fileID: 0} - m_ModelParent: {fileID: 0} - m_Model: {fileID: 0} - m_AnimateModel: 0 - m_ModelSelectTransition: - m_ModelDeSelectTransition: - m_PositionAction: - m_UseReference: 1 - m_Action: - m_Name: Position - m_Type: 0 - m_ExpectedControlType: Vector3 - m_Id: 93ead265-4bff-4199-8ddf-33c028dcfee9 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 9126875591944302883, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_RotationAction: - m_UseReference: 1 - m_Action: - m_Name: Rotation - m_Type: 0 - m_ExpectedControlType: Quaternion - m_Id: cd9a8368-32d3-4e58-86a0-6fe78d199369 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -3870559572202308136, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_IsTrackedAction: - m_UseReference: 1 - m_Action: - m_Name: Is Tracked - m_Type: 1 - m_ExpectedControlType: Button - m_Id: 55ce4874-0338-46fe-8077-4d6c11a05761 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 1 - m_Reference: {fileID: -7044516463258014562, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_TrackingStateAction: - m_UseReference: 1 - m_Action: - m_Name: Tracking State - m_Type: 0 - m_ExpectedControlType: Integer - m_Id: 7964ebc4-45e1-4431-a17a-7f2206e38661 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -1277054153949319361, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_SelectAction: - m_UseReference: 1 - m_Action: - m_Name: Select - m_Type: 1 - m_ExpectedControlType: Button - m_Id: 3207346a-8b2f-4b24-b45a-90ea1cdef7fb - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 187161793506945269, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_SelectActionValue: - m_UseReference: 1 - m_Action: - m_Name: Select Action Value - m_Type: 0 - m_ExpectedControlType: Axis - m_Id: dcf177a1-4c6d-42a7-b095-5f68848dadf1 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -1758520528963094988, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_ActivateAction: - m_UseReference: 1 - m_Action: - m_Name: Activate - m_Type: 1 - m_ExpectedControlType: Button - m_Id: ed3be3cd-637e-48d6-ae4b-dd97305eaa40 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 83097790271614945, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_ActivateActionValue: - m_UseReference: 1 - m_Action: - m_Name: Activate Action Value - m_Type: 0 - m_ExpectedControlType: Axis - m_Id: af4d694a-0159-4acb-bf36-7b78c35a10d5 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 7904272356298805229, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_UIPressAction: - m_UseReference: 1 - m_Action: - m_Name: UI Press - m_Type: 1 - m_ExpectedControlType: Button - m_Id: 55ce5c5d-aad8-4ebf-9f21-899ff595a062 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 3279264004350380116, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_UIPressActionValue: - m_UseReference: 1 - m_Action: - m_Name: UI Press Action Value - m_Type: 0 - m_ExpectedControlType: Axis - m_Id: cdab09f7-ec37-4eee-b72c-06339cc37c8b - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -5908353012961274365, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_UIScrollAction: - m_UseReference: 1 - m_Action: - m_Name: - m_Type: 0 - m_ExpectedControlType: Vector2 - m_Id: - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -6756787485274679044, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_HapticDeviceAction: - m_UseReference: 1 - m_Action: - m_Name: Haptic Device - m_Type: 2 - m_ExpectedControlType: - m_Id: 60f81e0e-3fab-4e26-90b6-a5ab762e2bb1 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -8222252007134549311, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_RotateAnchorAction: - m_UseReference: 1 - m_Action: - m_Name: Rotate Anchor - m_Type: 0 - m_ExpectedControlType: Vector2 - m_Id: aca8fec0-a925-428d-a6b7-25cfbd478258 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -5913262927076077117, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_DirectionalAnchorRotationAction: - m_UseReference: 1 - m_Action: - m_Name: Directional Anchor Rotation - m_Type: 0 - m_ExpectedControlType: Vector2 - m_Id: cde84d10-7ea4-4fb3-8369-aed372df2bf7 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -440298646266941818, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_TranslateAnchorAction: - m_UseReference: 1 - m_Action: - m_Name: Translate Anchor - m_Type: 0 - m_ExpectedControlType: Vector2 - m_Id: 161874b5-2545-4bb2-bea4-eeddeb4fabf6 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 875253871413052681, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_ScaleToggleAction: - m_UseReference: 1 - m_Action: - m_Name: Scale Toggle - m_Type: 1 - m_ExpectedControlType: - m_Id: a3b62f17-7b6b-4c94-b96b-4f3f450ce302 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 0} - m_ScaleDeltaAction: - m_UseReference: 1 - m_Action: - m_Name: Scale Delta - m_Type: 0 - m_ExpectedControlType: Vector2 - m_Id: ce357afc-7c8b-4b6e-be3a-2afffe4fa003 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 0} - m_ButtonPressPoint: 0.5 ---- !u!1001 &8383605761115746528 +--- !u!1001 &7747415240148662507 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: m_TransformParent: {fileID: 5878492368827077393} m_Modifications: - - target: {fileID: 664489801923019586, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} - propertyPath: m_AttachTransform + - target: {fileID: 1255647619390271626, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} + propertyPath: m_CastOrigin value: - objectReference: {fileID: 7201011967548035520} - - target: {fileID: 6059725000919627127, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} - propertyPath: m_Radius - value: 0.1 + objectReference: {fileID: 9150249479564954943} + - target: {fileID: 1722882099693224055, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} + propertyPath: m_SmoothOffset + value: 1 objectReference: {fileID: 0} - - target: {fileID: 6189354538098044173, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} + - target: {fileID: 1722882099693224055, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} + propertyPath: m_TransformToFollow + value: + objectReference: {fileID: 2577301593842775501} + - target: {fileID: 1722882099693224055, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} + propertyPath: m_MinAdditionalVelocityScalar + value: 0.25 + objectReference: {fileID: 0} + - target: {fileID: 2442306273320644280, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} + propertyPath: m_SelectInput.m_InputSourceMode + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 2442306273320644280, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} + propertyPath: m_UIPressInput.m_InputSourceMode + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 2442306273320644280, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} + propertyPath: m_SelectInput.m_ObjectReferenceObject + value: + objectReference: {fileID: 6730044672306722172} + - target: {fileID: 2442306273320644280, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} + propertyPath: m_UIPressInput.m_ObjectReferenceObject + value: + objectReference: {fileID: 488363206831216342} + - target: {fileID: 3755238779732181253, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} + propertyPath: m_LineBendRatio + value: 0.15 + objectReference: {fileID: 0} + - target: {fileID: 3755238779732181253, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} + propertyPath: m_CurveStartOffset + value: 0.025 + objectReference: {fileID: 0} + - target: {fileID: 3755238779732181253, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} + propertyPath: m_LineOriginTransform + value: + objectReference: {fileID: 3586141808747803997} + - target: {fileID: 4804964734930210078, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} + propertyPath: m_Name + value: Near-Far Interactor + objectReference: {fileID: 0} + - target: {fileID: 5745700813747042508, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} propertyPath: m_RootOrder value: 1 objectReference: {fileID: 0} - - target: {fileID: 6189354538098044173, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} + - target: {fileID: 5745700813747042508, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 6189354538098044173, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} + - target: {fileID: 5745700813747042508, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 6189354538098044173, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} + - target: {fileID: 5745700813747042508, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 6189354538098044173, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} + - target: {fileID: 5745700813747042508, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 6189354538098044173, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} + - target: {fileID: 5745700813747042508, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 6189354538098044173, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} + - target: {fileID: 5745700813747042508, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 6189354538098044173, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} + - target: {fileID: 5745700813747042508, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 6189354538098044173, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} + - target: {fileID: 5745700813747042508, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 6189354538098044173, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} + - target: {fileID: 5745700813747042508, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 6189354538098044173, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} + - target: {fileID: 5745700813747042508, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 8841706926471734270, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} - propertyPath: m_Name - value: Direct Interactor - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} ---- !u!1 &1075375832233251614 stripped -GameObject: - m_CorrespondingSourceObject: {fileID: 8841706926471734270, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} - m_PrefabInstance: {fileID: 8383605761115746528} - m_PrefabAsset: {fileID: 0} ---- !u!114 &3032825192456207411 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1075375832233251614} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: caff514de9b15ad48ab85dcff5508221, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UpdateTrackingType: 0 - m_EnableInputTracking: 1 - m_EnableInputActions: 1 - m_ModelPrefab: {fileID: 0} - m_ModelParent: {fileID: 0} - m_Model: {fileID: 0} - m_AnimateModel: 0 - m_ModelSelectTransition: - m_ModelDeSelectTransition: - m_PositionAction: - m_UseReference: 1 - m_Action: - m_Name: Position - m_Type: 0 - m_ExpectedControlType: Vector3 - m_Id: 26d2aaa4-6518-4d33-8fae-419043a723d4 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -2706128282752906596, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_RotationAction: - m_UseReference: 1 - m_Action: - m_Name: Rotation - m_Type: 0 - m_ExpectedControlType: Quaternion - m_Id: d7a15530-737b-416a-9d5d-a8b51ba6c682 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 8248158260566104461, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_IsTrackedAction: - m_UseReference: 1 - m_Action: - m_Name: Is Tracked - m_Type: 1 - m_ExpectedControlType: Button - m_Id: f0c7c302-cbd5-465f-a326-6502c16a71f9 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 1 - m_Reference: {fileID: 840156964685210860, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_TrackingStateAction: - m_UseReference: 1 - m_Action: - m_Name: Tracking State - m_Type: 0 - m_ExpectedControlType: Integer - m_Id: e12d3305-8866-42f0-a9b8-2cd7f4310c31 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 684395432459739428, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_SelectAction: - m_UseReference: 1 - m_Action: - m_Name: Select - m_Type: 1 - m_ExpectedControlType: Button - m_Id: 05483079-4b7c-4369-9176-fb8514428e98 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -6131295136447488360, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_SelectActionValue: - m_UseReference: 1 - m_Action: - m_Name: Select Action Value - m_Type: 0 - m_ExpectedControlType: Axis - m_Id: 8e42f062-fb45-44df-9825-35e1dfc18834 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 6558622148059887818, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_ActivateAction: - m_UseReference: 1 - m_Action: - m_Name: Activate - m_Type: 1 - m_ExpectedControlType: Button - m_Id: 38e5c09b-96d2-40e4-ae8e-3bfb9eb16727 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -5982496924579745919, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_ActivateActionValue: - m_UseReference: 1 - m_Action: - m_Name: Activate Action Value - m_Type: 0 - m_ExpectedControlType: Axis - m_Id: ff2b1032-d7ae-4e1a-8e8a-a5556d5f8db5 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -4289430672226363583, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_UIPressAction: - m_UseReference: 1 - m_Action: - m_Name: UI Press - m_Type: 1 - m_ExpectedControlType: Button - m_Id: 347fe4ac-83bc-44f7-a0d2-2793a5775161 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -6395602842196007441, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_UIPressActionValue: - m_UseReference: 1 - m_Action: - m_Name: UI Press Action Value - m_Type: 0 - m_ExpectedControlType: Axis - m_Id: 8b29ebc3-3830-4622-8c66-56f3a9b98d73 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 71106601250685021, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_UIScrollAction: - m_UseReference: 1 - m_Action: - m_Name: UI Scroll - m_Type: 0 - m_ExpectedControlType: Vector2 - m_Id: cd921c38-6607-4119-8d15-5957e0c6a19c - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 2464016903823916871, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_HapticDeviceAction: - m_UseReference: 1 - m_Action: - m_Name: Haptic Device - m_Type: 2 - m_ExpectedControlType: - m_Id: 35cfed17-bcaf-4ff9-9fe0-fa1727b7619b - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -8785819595477538065, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_RotateAnchorAction: - m_UseReference: 1 - m_Action: - m_Name: Rotate Anchor - m_Type: 0 - m_ExpectedControlType: Vector2 - m_Id: 4fcd4b62-1769-4cc4-aaee-aea2fc40d24f - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -7363382999065477798, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_DirectionalAnchorRotationAction: - m_UseReference: 1 - m_Action: - m_Name: Directional Anchor Rotation - m_Type: 0 - m_ExpectedControlType: Vector2 - m_Id: 0a72890c-b3bc-4ec1-adad-df62dfa843d9 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -8811388872089202044, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_TranslateAnchorAction: - m_UseReference: 1 - m_Action: - m_Name: Translate Anchor - m_Type: 0 - m_ExpectedControlType: Vector2 - m_Id: 7bfe4461-8d15-4a61-9fa6-28ce950c9996 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 7779212132400271959, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_ScaleToggleAction: - m_UseReference: 1 - m_Action: - m_Name: Scale Toggle - m_Type: 1 - m_ExpectedControlType: - m_Id: afa2d926-5f30-4123-a063-3ee9a0748fb4 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 0} - m_ScaleDeltaAction: - m_UseReference: 1 - m_Action: - m_Name: Scale Delta - m_Type: 0 - m_ExpectedControlType: Vector2 - m_Id: 0ec3ddf3-f6dd-457e-95f8-f9f44cef43ce - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 0} - m_ButtonPressPoint: 0.5 ---- !u!4 &2431253500503645677 stripped + - target: {fileID: 7104419533170684624, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} + propertyPath: m_CastOrigin + value: + objectReference: {fileID: 2577301593842775501} + m_RemovedComponents: + - {fileID: 3179295312718945089, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} + m_SourcePrefab: {fileID: 100100000, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} +--- !u!4 &2609991494921256999 stripped Transform: - m_CorrespondingSourceObject: {fileID: 6189354538098044173, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} - m_PrefabInstance: {fileID: 8383605761115746528} + m_CorrespondingSourceObject: {fileID: 5745700813747042508, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} + m_PrefabInstance: {fileID: 7747415240148662507} m_PrefabAsset: {fileID: 0} ---- !u!114 &9034274667510444962 stripped +--- !u!1 &2966448196471584245 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 4804964734930210078, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} + m_PrefabInstance: {fileID: 7747415240148662507} + m_PrefabAsset: {fileID: 0} +--- !u!114 &5359434741994886739 stripped MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 664489801923019586, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} - m_PrefabInstance: {fileID: 8383605761115746528} + m_CorrespondingSourceObject: {fileID: 2442306273320644280, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} + m_PrefabInstance: {fileID: 7747415240148662507} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1075375832233251614} + m_GameObject: {fileID: 2966448196471584245} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4253f32900bcc4d499d675566142ded0, type: 3} + m_Script: {fileID: 11500000, guid: 25a07ef133a37d140a87cdf1f1c75fdf, type: 3} m_Name: m_EditorClassIdentifier: --- !u!1001 &9139407454820817640 @@ -2788,7 +2359,7 @@ PrefabInstance: - target: {fileID: 868360655280004538, guid: 88b12c0ca81d9a34eac32a1e1bd19b1c, type: 3} propertyPath: m_Interactor value: - objectReference: {fileID: 5543534632417482985} + objectReference: {fileID: 5359434741994886739} - target: {fileID: 3369527167708781622, guid: 88b12c0ca81d9a34eac32a1e1bd19b1c, type: 3} propertyPath: m_Name value: Pinch Point Stabilized @@ -2796,26 +2367,34 @@ PrefabInstance: - target: {fileID: 3901091180161469564, guid: 88b12c0ca81d9a34eac32a1e1bd19b1c, type: 3} propertyPath: m_InteractorSource value: - objectReference: {fileID: 5543534632417482985} + objectReference: {fileID: 0} - target: {fileID: 3941121930630195656, guid: 88b12c0ca81d9a34eac32a1e1bd19b1c, type: 3} propertyPath: m_InteractorSource value: - objectReference: {fileID: 5543534632417482985} + objectReference: {fileID: 5359434741994886739} + - target: {fileID: 5697399126433476533, guid: 88b12c0ca81d9a34eac32a1e1bd19b1c, type: 3} + propertyPath: m_LocalPosition.z + value: 0.025 + objectReference: {fileID: 0} - target: {fileID: 6603267092101694357, guid: 88b12c0ca81d9a34eac32a1e1bd19b1c, type: 3} propertyPath: m_RayInteractor value: - objectReference: {fileID: 5543534632417482985} + objectReference: {fileID: 0} - target: {fileID: 6603267092101694357, guid: 88b12c0ca81d9a34eac32a1e1bd19b1c, type: 3} propertyPath: m_TargetRotation value: - objectReference: {fileID: 8008812968308354104} + objectReference: {fileID: 9150249479564954943} + - target: {fileID: 6603267092101694357, guid: 88b12c0ca81d9a34eac32a1e1bd19b1c, type: 3} + propertyPath: m_NearFarInteractor + value: + objectReference: {fileID: 5359434741994886739} - target: {fileID: 6603267092101694357, guid: 88b12c0ca81d9a34eac32a1e1bd19b1c, type: 3} propertyPath: m_XRHandTrackingEvents value: objectReference: {fileID: 6540358451509188026} - target: {fileID: 7962545760240945814, guid: 88b12c0ca81d9a34eac32a1e1bd19b1c, type: 3} propertyPath: m_RootOrder - value: 6 + value: 4 objectReference: {fileID: 0} - target: {fileID: 7962545760240945814, guid: 88b12c0ca81d9a34eac32a1e1bd19b1c, type: 3} propertyPath: m_LocalPosition.x @@ -2864,315 +2443,8 @@ Transform: m_CorrespondingSourceObject: {fileID: 7962545760240945814, guid: 88b12c0ca81d9a34eac32a1e1bd19b1c, type: 3} m_PrefabInstance: {fileID: 9139407454820817640} m_PrefabAsset: {fileID: 0} ---- !u!1001 &9207063593856425830 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 6311120899289156754} - m_Modifications: - - target: {fileID: 664489801923019586, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} - propertyPath: m_AttachTransform - value: - objectReference: {fileID: 5480585174247187439} - - target: {fileID: 6059725000919627127, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} - propertyPath: m_Radius - value: 0.1 - objectReference: {fileID: 0} - - target: {fileID: 6189354538098044173, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} - propertyPath: m_RootOrder - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 6189354538098044173, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 6189354538098044173, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 6189354538098044173, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 6189354538098044173, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 6189354538098044173, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 6189354538098044173, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 6189354538098044173, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 6189354538098044173, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 6189354538098044173, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 6189354538098044173, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8841706926471734270, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} - propertyPath: m_Name - value: Direct Interactor - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} ---- !u!1 &392378402596404376 stripped -GameObject: - m_CorrespondingSourceObject: {fileID: 8841706926471734270, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} - m_PrefabInstance: {fileID: 9207063593856425830} - m_PrefabAsset: {fileID: 0} ---- !u!114 &8414094292795595994 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 392378402596404376} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: caff514de9b15ad48ab85dcff5508221, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UpdateTrackingType: 0 - m_EnableInputTracking: 1 - m_EnableInputActions: 1 - m_ModelPrefab: {fileID: 0} - m_ModelParent: {fileID: 0} - m_Model: {fileID: 0} - m_AnimateModel: 0 - m_ModelSelectTransition: - m_ModelDeSelectTransition: - m_PositionAction: - m_UseReference: 1 - m_Action: - m_Name: Position - m_Type: 0 - m_ExpectedControlType: Vector3 - m_Id: 93ead265-4bff-4199-8ddf-33c028dcfee9 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -7813013294023911475, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_RotationAction: - m_UseReference: 1 - m_Action: - m_Name: Rotation - m_Type: 0 - m_ExpectedControlType: Quaternion - m_Id: cd9a8368-32d3-4e58-86a0-6fe78d199369 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 5101698808175986029, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_IsTrackedAction: - m_UseReference: 1 - m_Action: - m_Name: Is Tracked - m_Type: 1 - m_ExpectedControlType: Button - m_Id: 24f89cec-5300-4f97-ab4a-32efa3f4ffee - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 1 - m_Reference: {fileID: -7044516463258014562, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_TrackingStateAction: - m_UseReference: 1 - m_Action: - m_Name: Tracking State - m_Type: 0 - m_ExpectedControlType: Integer - m_Id: 7964ebc4-45e1-4431-a17a-7f2206e38661 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -1277054153949319361, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_SelectAction: - m_UseReference: 1 - m_Action: - m_Name: Select - m_Type: 1 - m_ExpectedControlType: Button - m_Id: 3207346a-8b2f-4b24-b45a-90ea1cdef7fb - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 187161793506945269, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_SelectActionValue: - m_UseReference: 1 - m_Action: - m_Name: Select Action Value - m_Type: 0 - m_ExpectedControlType: Axis - m_Id: dcf177a1-4c6d-42a7-b095-5f68848dadf1 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -1758520528963094988, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_ActivateAction: - m_UseReference: 1 - m_Action: - m_Name: Activate - m_Type: 1 - m_ExpectedControlType: Button - m_Id: ed3be3cd-637e-48d6-ae4b-dd97305eaa40 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 83097790271614945, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_ActivateActionValue: - m_UseReference: 1 - m_Action: - m_Name: Activate Action Value - m_Type: 0 - m_ExpectedControlType: Axis - m_Id: af4d694a-0159-4acb-bf36-7b78c35a10d5 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 7904272356298805229, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_UIPressAction: - m_UseReference: 1 - m_Action: - m_Name: UI Press - m_Type: 1 - m_ExpectedControlType: Button - m_Id: 55ce5c5d-aad8-4ebf-9f21-899ff595a062 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 3279264004350380116, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_UIPressActionValue: - m_UseReference: 1 - m_Action: - m_Name: UI Press Action Value - m_Type: 0 - m_ExpectedControlType: Axis - m_Id: cdab09f7-ec37-4eee-b72c-06339cc37c8b - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -5908353012961274365, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_UIScrollAction: - m_UseReference: 1 - m_Action: - m_Name: UI Scroll - m_Type: 0 - m_ExpectedControlType: Vector2 - m_Id: 47bd347a-07a2-40d1-8294-469e3f7d6294 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -6756787485274679044, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_HapticDeviceAction: - m_UseReference: 1 - m_Action: - m_Name: Haptic Device - m_Type: 2 - m_ExpectedControlType: - m_Id: 60f81e0e-3fab-4e26-90b6-a5ab762e2bb1 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -8222252007134549311, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_RotateAnchorAction: - m_UseReference: 1 - m_Action: - m_Name: Rotate Anchor - m_Type: 0 - m_ExpectedControlType: Vector2 - m_Id: aca8fec0-a925-428d-a6b7-25cfbd478258 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -5913262927076077117, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_DirectionalAnchorRotationAction: - m_UseReference: 1 - m_Action: - m_Name: Directional Anchor Rotation - m_Type: 0 - m_ExpectedControlType: Vector2 - m_Id: cde84d10-7ea4-4fb3-8369-aed372df2bf7 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -440298646266941818, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_TranslateAnchorAction: - m_UseReference: 1 - m_Action: - m_Name: Translate Anchor - m_Type: 0 - m_ExpectedControlType: Vector2 - m_Id: 161874b5-2545-4bb2-bea4-eeddeb4fabf6 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 875253871413052681, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_ScaleToggleAction: - m_UseReference: 1 - m_Action: - m_Name: Scale Toggle - m_Type: 1 - m_ExpectedControlType: - m_Id: 8a344e31-f267-41c9-9041-cfffb54b5147 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 0} - m_ScaleDeltaAction: - m_UseReference: 1 - m_Action: - m_Name: Scale Delta - m_Type: 0 - m_ExpectedControlType: Vector2 - m_Id: 02a8d26f-6921-4eb6-814c-484b8eaa28a3 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 0} - m_ButtonPressPoint: 0.5 ---- !u!4 &3036286681255211627 stripped +--- !u!4 &3586141808747803997 stripped Transform: - m_CorrespondingSourceObject: {fileID: 6189354538098044173, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} - m_PrefabInstance: {fileID: 9207063593856425830} + m_CorrespondingSourceObject: {fileID: 5697399126433476533, guid: 88b12c0ca81d9a34eac32a1e1bd19b1c, type: 3} + m_PrefabInstance: {fileID: 9139407454820817640} m_PrefabAsset: {fileID: 0} ---- !u!114 &8574486981646720036 stripped -MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 664489801923019586, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} - m_PrefabInstance: {fileID: 9207063593856425830} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 392378402596404376} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4253f32900bcc4d499d675566142ded0, type: 3} - m_Name: - m_EditorClassIdentifier: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/XR Origin Hands (XR Rig).prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Prefabs/XR Origin Hands (XR Rig).prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/XR Origin Hands (XR Rig).prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Prefabs/XR Origin Hands (XR Rig).prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Scripts.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Scripts.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Scripts/HandsOneEuroFilterPostProcessor.cs b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/HandsOneEuroFilterPostProcessor.cs similarity index 92% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Scripts/HandsOneEuroFilterPostProcessor.cs rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/HandsOneEuroFilterPostProcessor.cs index f46c2c6b..1dd52786 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Scripts/HandsOneEuroFilterPostProcessor.cs +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/HandsOneEuroFilterPostProcessor.cs @@ -1,4 +1,4 @@ -#if XR_HANDS_1_2_OR_NEWER +#if XR_HANDS_1_2_OR_NEWER using System.Collections.Generic; using UnityEngine.XR.Hands; using UnityEngine.XR.Hands.Processing; @@ -17,11 +17,15 @@ namespace UnityEngine.XR.Interaction.Toolkit.Samples.Hands { [SerializeField] [Tooltip("Smoothing amount at low speeds.")] +#pragma warning disable CS0414 // Field assigned but its value is never used -- Keep to retain serialized value when XR Hands is not installed float m_FilterMinCutoff = 0.1f; +#pragma warning restore CS0414 [SerializeField] [Tooltip("Filter's responsiveness to speed changes.")] +#pragma warning disable CS0414 // Field assigned but its value is never used -- Keep to retain serialized value when XR Hands is not installed float m_FilterBeta = 0.2f; +#pragma warning restore CS0414 #if XR_HANDS_1_2_OR_NEWER /// @@ -134,4 +138,4 @@ namespace UnityEngine.XR.Interaction.Toolkit.Samples.Hands } #endif } -} \ No newline at end of file +} diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Scripts/HandsOneEuroFilterPostProcessor.cs.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/HandsOneEuroFilterPostProcessor.cs.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Scripts/HandsOneEuroFilterPostProcessor.cs.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/HandsOneEuroFilterPostProcessor.cs.meta diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/HideObjectWhenInteractorBlocked.cs b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/HideObjectWhenInteractorBlocked.cs new file mode 100644 index 00000000..912894aa --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/HideObjectWhenInteractorBlocked.cs @@ -0,0 +1,49 @@ +using UnityEngine.XR.Interaction.Toolkit.Interactors; +using UnityEngine.XR.Interaction.Toolkit.Interactors.Visuals; + +namespace UnityEngine.XR.Interaction.Toolkit.Samples.Hands +{ + /// + /// Hides the specified GameObject when the associated interactor is blocked by an interaction within its group. + /// + public class HideObjectWhenInteractorBlocked : MonoBehaviour + { + [SerializeField] + [Tooltip("The interactor that this component monitors for blockages.")] + XRBaseInteractor m_Interactor; + + [SerializeField] + [Tooltip("The GameObject to hide when the interactor is blocked.")] + GameObject m_ObjectToHide; + + ICurveInteractionDataProvider m_CurveInteractionDataProvider; + bool m_HasCurveDataProvider; + + /// + /// See . + /// + void OnEnable() + { + if (m_Interactor == null || m_ObjectToHide == null) + enabled = false; + + m_HasCurveDataProvider = false; + if (m_Interactor is ICurveInteractionDataProvider provider) + { + m_CurveInteractionDataProvider = provider; + m_HasCurveDataProvider = true; + } + } + + /// + /// See . + /// + void Update() + { + if (m_HasCurveDataProvider) + m_ObjectToHide.SetActive(m_CurveInteractionDataProvider.isActive); + else + m_ObjectToHide.SetActive(m_Interactor.isActiveAndEnabled && !m_Interactor.IsBlockedByInteractionWithinGroup()); + } + } +} diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Scripts/HideObjectWhenRayInteractorBlocked.cs.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/HideObjectWhenInteractorBlocked.cs.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Scripts/HideObjectWhenRayInteractorBlocked.cs.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/HideObjectWhenInteractorBlocked.cs.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Scripts/LocalPositionOffsetAffordanceReceiver.cs b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/LocalPositionOffsetAffordanceReceiver.cs similarity index 90% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Scripts/LocalPositionOffsetAffordanceReceiver.cs rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/LocalPositionOffsetAffordanceReceiver.cs index 8eedbd63..26806fb4 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Scripts/LocalPositionOffsetAffordanceReceiver.cs +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/LocalPositionOffsetAffordanceReceiver.cs @@ -1,3 +1,4 @@ +using System; using Unity.Mathematics; using UnityEngine.XR.Interaction.Toolkit.AffordanceSystem.Receiver.Primitives; @@ -8,6 +9,7 @@ namespace UnityEngine.XR.Interaction.Toolkit.Samples.Hands /// Broadcasts new affordance value with Unity Event. /// [AddComponentMenu("Affordance System/Receiver/Transformation/Local Position Offset Affordance Receiver", 12)] + [Obsolete("The Affordance System namespace and all associated classes have been deprecated. The existing affordance system will be moved, replaced and updated with a new interaction feedback system in a future version of XRI.")] public class LocalPositionOffsetAffordanceReceiver : Vector3AffordanceReceiver { [SerializeField] diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Scripts/LocalPositionOffsetAffordanceReceiver.cs.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/LocalPositionOffsetAffordanceReceiver.cs.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Scripts/LocalPositionOffsetAffordanceReceiver.cs.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/LocalPositionOffsetAffordanceReceiver.cs.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Scripts/MetaSystemGestureDetector.cs b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/MetaSystemGestureDetector.cs similarity index 97% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Scripts/MetaSystemGestureDetector.cs rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/MetaSystemGestureDetector.cs index fb422602..a4c142c7 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Scripts/MetaSystemGestureDetector.cs +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/MetaSystemGestureDetector.cs @@ -130,7 +130,7 @@ namespace UnityEngine.XR.Interaction.Toolkit.Samples.Hands readonly BindableEnum m_SystemGestureState = new BindableEnum(checkEquality: false); -#if XR_HANDS_1_1_OR_NEWER +#if XR_HANDS_1_1_OR_NEWER && (ENABLE_VR || UNITY_GAMECORE) [NonSerialized] // NonSerialized is required to avoid an "Unsupported enum base type" error about the Flags enum being ulong MetaAimFlags m_AimFlags; #endif @@ -145,10 +145,12 @@ namespace UnityEngine.XR.Interaction.Toolkit.Samples.Hands BindAimFlags(); #if XR_HANDS_1_1_OR_NEWER +#if ENABLE_VR || UNITY_GAMECORE var action = m_AimFlagsAction.action; if (action != null) // Force invoking the events upon initialization to simplify making sure the callback's desired results are synced UpdateAimFlags((MetaAimFlags)action.ReadValue(), true); +#endif #else Debug.LogWarning("Script requires XR Hands (com.unity.xr.hands) package to monitor Meta Aim Flags. Install using Window > Package Manager or click Fix on the related issue in Edit > Project Settings > XR Plug-in Management > Project Validation.", this); SetGestureState(SystemGestureState.Ended, true); @@ -212,7 +214,7 @@ namespace UnityEngine.XR.Interaction.Toolkit.Samples.Hands } } -#if XR_HANDS_1_1_OR_NEWER +#if XR_HANDS_1_1_OR_NEWER && (ENABLE_VR || UNITY_GAMECORE) void UpdateAimFlags(MetaAimFlags value, bool forceInvoke = false) { var hadMenuPressed = (m_AimFlags & MetaAimFlags.MenuPressed) != 0; @@ -253,7 +255,7 @@ namespace UnityEngine.XR.Interaction.Toolkit.Samples.Hands void OnAimFlagsActionPerformedOrCanceled(InputAction.CallbackContext context) { -#if XR_HANDS_1_1_OR_NEWER +#if XR_HANDS_1_1_OR_NEWER && (ENABLE_VR || UNITY_GAMECORE) UpdateAimFlags((MetaAimFlags)context.ReadValue()); #endif } diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Scripts/MetaSystemGestureDetector.cs.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/MetaSystemGestureDetector.cs.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Scripts/MetaSystemGestureDetector.cs.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/MetaSystemGestureDetector.cs.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Scripts/OneEuroFilterVector3.cs b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/OneEuroFilterVector3.cs similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Scripts/OneEuroFilterVector3.cs rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/OneEuroFilterVector3.cs diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Scripts/OneEuroFilterVector3.cs.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/OneEuroFilterVector3.cs.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Scripts/OneEuroFilterVector3.cs.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/OneEuroFilterVector3.cs.meta diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/PinchPointFollow.cs b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/PinchPointFollow.cs new file mode 100644 index 00000000..0e4e4e53 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/PinchPointFollow.cs @@ -0,0 +1,185 @@ +#if XR_HANDS_1_2_OR_NEWER +using Unity.XR.CoreUtils.Bindings; +using UnityEngine.XR.Hands; +using UnityEngine.XR.Interaction.Toolkit.Utilities.Tweenables.Primitives; +#endif +using UnityEngine.XR.Interaction.Toolkit.Interactors; + +namespace UnityEngine.XR.Interaction.Toolkit.Samples.Hands +{ + /// + /// A class that follows the pinch point between the thumb and index finger using XR Hand Tracking. + /// It updates its position to the midpoint between the thumb and index tip while optionally adjusting its rotation + /// to look at a specified target. The rotation towards the target can also be smoothly interpolated over time. + /// + public class PinchPointFollow : MonoBehaviour + { + [Header("Events")] + [SerializeField] + [Tooltip("The XR Hand Tracking Events component that will be used to subscribe to hand tracking events.")] +#if XR_HANDS_1_2_OR_NEWER + XRHandTrackingEvents m_XRHandTrackingEvents; +#else + Object m_XRHandTrackingEvents; +#endif + + [Header("Interactor reference (Pick one)")] + [SerializeField] + [Tooltip("The transform will use the XRRayInteractor endpoint position to calculate the transform rotation.")] + XRRayInteractor m_RayInteractor; + + [SerializeField] + [Tooltip("The transform will use the NearFarInteractor endpoint position to calculate the transform rotation.")] + NearFarInteractor m_NearFarInteractor; + + [Header("Rotation Config")] + [SerializeField] + [Tooltip("The transform to match the rotation of.")] + Transform m_TargetRotation; + + [SerializeField] + [Tooltip("How fast to match rotation (0 means no rotation smoothing.)")] + [Range(0f, 32f)] +#pragma warning disable CS0414 // Field assigned but its value is never used -- Keep to retain serialized value when XR Hands is not installed + float m_RotationSmoothingSpeed = 12f; +#pragma warning restore CS0414 + +#if XR_HANDS_1_2_OR_NEWER + bool m_HasTargetRotationTransform; + IXRRayProvider m_RayProvider; + bool m_HasRayProvider; + OneEuroFilterVector3 m_OneEuroFilterVector3; + +#pragma warning disable CS0618 // Type or member is obsolete + readonly QuaternionTweenableVariable m_QuaternionTweenableVariable = new QuaternionTweenableVariable(); +#pragma warning restore CS0618 // Type or member is obsolete + readonly BindingsGroup m_BindingsGroup = new BindingsGroup(); +#endif + + /// + /// See . + /// + void OnEnable() + { +#if XR_HANDS_1_2_OR_NEWER + if (m_XRHandTrackingEvents != null) + m_XRHandTrackingEvents.jointsUpdated.AddListener(OnJointsUpdated); + + m_OneEuroFilterVector3 = new OneEuroFilterVector3(transform.localPosition); + if (m_RayInteractor != null) + { + m_RayProvider = m_RayInteractor; + m_HasRayProvider = true; + } + if (m_NearFarInteractor != null) + { + m_RayProvider = m_NearFarInteractor; + m_HasRayProvider = true; + } + m_HasTargetRotationTransform = m_TargetRotation != null; + m_BindingsGroup.AddBinding(m_QuaternionTweenableVariable.Subscribe(newValue => transform.rotation = newValue)); +#else + Debug.LogWarning("PinchPointFollow requires XR Hands (com.unity.xr.hands) 1.2.0 or newer. Disabling component.", this); + enabled = false; +#endif + } + + /// + /// See . + /// + void OnDisable() + { +#if XR_HANDS_1_2_OR_NEWER + m_BindingsGroup.Clear(); + if (m_XRHandTrackingEvents != null) + m_XRHandTrackingEvents.jointsUpdated.RemoveListener(OnJointsUpdated); +#endif + } + +#if XR_HANDS_1_2_OR_NEWER + static bool TryGetPinchPosition(XRHandJointsUpdatedEventArgs args, out Vector3 position) + { +#if XR_HANDS_1_5_OR_NEWER + if (args.subsystem != null) + { + var commonHandGestures = args.hand.handedness == Handedness.Left + ? args.subsystem.leftHandCommonGestures + : args.hand.handedness == Handedness.Right + ? args.subsystem.rightHandCommonGestures + : null; + if (commonHandGestures != null && commonHandGestures.TryGetPinchPose(out var pinchPose)) + { + // Protect against platforms returning bad data like (NaN, NaN, NaN) + if (!float.IsNaN(pinchPose.position.x) && + !float.IsNaN(pinchPose.position.y) && + !float.IsNaN(pinchPose.position.z)) + { + position = pinchPose.position; + return true; + } + } + } +#endif + + var thumbTip = args.hand.GetJoint(XRHandJointID.ThumbTip); + if (!thumbTip.TryGetPose(out var thumbTipPose)) + { + position = Vector3.zero; + return false; + } + + var indexTip = args.hand.GetJoint(XRHandJointID.IndexTip); + if (!indexTip.TryGetPose(out var indexTipPose)) + { + position = Vector3.zero; + return false; + } + + position = Vector3.Lerp(thumbTipPose.position, indexTipPose.position, 0.5f); + return true; + } + + void OnJointsUpdated(XRHandJointsUpdatedEventArgs args) + { + if (!TryGetPinchPosition(args, out var targetPos)) + return; + + var filteredTargetPos = m_OneEuroFilterVector3.Filter(targetPos, Time.deltaTime); + + // Hand pose data is in local space relative to the XR Origin. + transform.localPosition = filteredTargetPos; + + if (m_HasTargetRotationTransform && m_HasRayProvider) + { + // Given that the ray endpoint is in world space, we need to use the world space transform of this point to determine the target rotation. + // This allows us to keep orientation consistent when moving the XR Origin for locomotion. + var targetDir = (m_RayProvider.rayEndPoint - transform.position).normalized; + if (targetDir != Vector3.zero) + { + // Use the parent Transform's up vector if available, otherwise use the world up vector. + // The assumption is the parent Transform matches the XR Origin rotation. + // This allows the XR Origin to teleport to angled surfaces or upside down surfaces + // and the visual will still be correct relative to the application's ground. + var upwards = Vector3.up; + var parentTransform = transform.parent; + if (!(parentTransform is null)) + upwards = parentTransform.up; + + var targetRot = Quaternion.LookRotation(targetDir, upwards); + + // If there aren't any major swings in rotation, follow the target rotation. + if (Vector3.Dot(m_TargetRotation.forward, targetDir) > 0.5f) + m_QuaternionTweenableVariable.target = targetRot; + } + else + { + m_QuaternionTweenableVariable.target = m_TargetRotation.rotation; + } + + var tweenTarget = m_RotationSmoothingSpeed > 0f ? m_RotationSmoothingSpeed * Time.deltaTime : 1f; + m_QuaternionTweenableVariable.HandleTween(tweenTarget); + } + } +#endif + } +} diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Scripts/PinchPointFollow.cs.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/PinchPointFollow.cs.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Scripts/PinchPointFollow.cs.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/PinchPointFollow.cs.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Scripts/PokeGestureDetector.cs b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/PokeGestureDetector.cs similarity index 99% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Scripts/PokeGestureDetector.cs rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/PokeGestureDetector.cs index 29e0c72f..85bfa1b8 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Scripts/PokeGestureDetector.cs +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/PokeGestureDetector.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using UnityEngine.Events; #if XR_HANDS_1_1_OR_NEWER using UnityEngine.XR.Hands; diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Scripts/PokeGestureDetector.cs.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/PokeGestureDetector.cs.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Scripts/PokeGestureDetector.cs.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/PokeGestureDetector.cs.meta diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/ReleaseThresholdButtonReader.cs b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/ReleaseThresholdButtonReader.cs new file mode 100644 index 00000000..e286cbfc --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/ReleaseThresholdButtonReader.cs @@ -0,0 +1,133 @@ +using UnityEngine.XR.Interaction.Toolkit.Inputs.Readers; + +namespace UnityEngine.XR.Interaction.Toolkit.Samples.Hands +{ + /// + /// An input button reader based on another and holds it true until falling below a lower release threshold. + /// Useful with hand interaction because the bool select value can bounce when the hand is near the tight internal threshold, + /// so using this will keep the pinch true until moving the fingers much further away than the pinch activation threshold. + /// + [DefaultExecutionOrder(XRInteractionUpdateOrder.k_XRInputDeviceButtonReader)] + public class ReleaseThresholdButtonReader : MonoBehaviour, IXRInputButtonReader + { + [SerializeField] + [Tooltip("The source input that this component reads to create a processed button value.")] + XRInputButtonReader m_ValueInput = new XRInputButtonReader("Value"); + + /// + /// The source input that this component reads to create a processed button value. + /// + public XRInputButtonReader valueInput + { + get => m_ValueInput; + set => XRInputReaderUtility.SetInputProperty(ref m_ValueInput, value, this); + } + + [SerializeField] + [Tooltip("The threshold value to use to determine when the button is pressed. Considered pressed equal to or greater than this value.")] + [Range(0f, 1f)] + float m_PressThreshold = 0.8f; + + /// + /// The threshold value to use to determine when the button is pressed. Considered pressed equal to or greater than this value. + /// + /// + /// This reader will also be considered performed if the source input is performed. + /// + public float pressThreshold + { + get => m_PressThreshold; + set => m_PressThreshold = value; + } + + [SerializeField] + [Tooltip("The threshold value to use to determine when the button is released when it was previously pressed. Keeps being pressed until falls back to a value of or below this value.")] + [Range(0f, 1f)] + float m_ReleaseThreshold = 0.25f; + + /// + /// The threshold value to use to determine when the button is released when it was previously pressed. + /// Keeps being pressed until falls back to a value of or below this value. + /// + /// + /// This reader will still be considered performed if the source input is still performed + /// when this threshold is reached. + /// + public float releaseThreshold + { + get => m_ReleaseThreshold; + set => m_ReleaseThreshold = value; + } + + bool m_IsPerformed; + bool m_WasPerformedThisFrame; + bool m_WasCompletedThisFrame; + + /// + /// See . + /// + void OnEnable() + { + m_ValueInput?.EnableDirectActionIfModeUsed(); + } + + /// + /// See . + /// + void OnDisable() + { + m_ValueInput?.DisableDirectActionIfModeUsed(); + } + + /// + /// See . + /// + void Update() + { + // Go true when either the press threshold is reached or the bool is already performed. + // Only drop back to false when the release threshold is reached and the bool is no longer performed. + var prevPerformed = m_IsPerformed; + var pressAmount = m_ValueInput.ReadValue(); + + bool newValue; + if (prevPerformed) + newValue = pressAmount > m_ReleaseThreshold || m_ValueInput.ReadIsPerformed(); + else + newValue = pressAmount >= m_PressThreshold || m_ValueInput.ReadIsPerformed(); + + m_IsPerformed = newValue; + m_WasPerformedThisFrame = !prevPerformed && m_IsPerformed; + m_WasCompletedThisFrame = prevPerformed && !m_IsPerformed; + } + + /// + public bool ReadIsPerformed() + { + return m_IsPerformed; + } + + /// + public bool ReadWasPerformedThisFrame() + { + return m_WasPerformedThisFrame; + } + + /// + public bool ReadWasCompletedThisFrame() + { + return m_WasCompletedThisFrame; + } + + /// + public float ReadValue() + { + return m_ValueInput.ReadValue(); + } + + /// + public bool TryReadValue(out float value) + { + return m_ValueInput.TryReadValue(out value); + } + } +} diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Scripts/XRDeviceSimulatorControllerUI.cs.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/ReleaseThresholdButtonReader.cs.meta similarity index 83% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Scripts/XRDeviceSimulatorControllerUI.cs.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/ReleaseThresholdButtonReader.cs.meta index 84889f48..cd19e72a 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Scripts/XRDeviceSimulatorControllerUI.cs.meta +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/ReleaseThresholdButtonReader.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: a907ece591e731e49b5d7be45f089972 +guid: 63f61d1c82c9fc6429ebd4791a4d6817 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/ValueDerivedButtonReader.cs b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/ValueDerivedButtonReader.cs new file mode 100644 index 00000000..828ccab4 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/ValueDerivedButtonReader.cs @@ -0,0 +1,121 @@ +using UnityEngine.XR.Interaction.Toolkit.Inputs.Readers; + +namespace UnityEngine.XR.Interaction.Toolkit.Samples.Hands +{ + /// + /// Example class that reads a float value from an and converts it to a bool. + /// Useful with hand interaction because the bool select value can be unreliable when the hand is near the tight internal threshold. + /// + [DefaultExecutionOrder(XRInteractionUpdateOrder.k_XRInputDeviceButtonReader)] + public class ValueDerivedButtonReader : MonoBehaviour, IXRInputButtonReader + { + [SerializeField] + [Tooltip("The input reader used to reference the float value to convert to a bool.")] + XRInputValueReader m_ValueInput = new XRInputValueReader("Value"); + + /// + /// The input reader used to reference the float value to convert to a bool. + /// + public XRInputValueReader valueInput + { + get => m_ValueInput; + set => XRInputReaderUtility.SetInputProperty(ref m_ValueInput, value, this); + } + + [SerializeField] + [Tooltip("The threshold value to use to determine when the button is pressed. Considered pressed equal to or greater than this value.")] + [Range(0f, 1f)] + float m_PressThreshold = 0.8f; + + /// + /// The threshold value to use to determine when the button is pressed. Considered pressed equal to or greater than this value. + /// + public float pressThreshold + { + get => m_PressThreshold; + set => m_PressThreshold = value; + } + + [SerializeField] + [Tooltip("The threshold value to use to determine when the button is released when it was previously pressed. Keeps being pressed until falls back to a value of or below this value.")] + [Range(0f, 1f)] + float m_ReleaseThreshold = 0.25f; + + /// + /// The threshold value to use to determine when the button is released when it was previously pressed. + /// Keeps being pressed until falls back to a value of or below this value. + /// + public float releaseThreshold + { + get => m_ReleaseThreshold; + set => m_ReleaseThreshold = value; + } + + bool m_IsPerformed; + bool m_WasPerformedThisFrame; + bool m_WasCompletedThisFrame; + + /// + /// See . + /// + void OnEnable() + { + m_ValueInput?.EnableDirectActionIfModeUsed(); + } + + /// + /// See . + /// + void OnDisable() + { + m_ValueInput?.DisableDirectActionIfModeUsed(); + } + + /// + /// See . + /// + void Update() + { + var prevPerformed = m_IsPerformed; + var pressAmount = m_ValueInput.ReadValue(); + + var newValue = pressAmount >= m_PressThreshold; + if (!newValue && prevPerformed) + newValue = pressAmount > m_ReleaseThreshold; + + m_IsPerformed = newValue; + m_WasPerformedThisFrame = !prevPerformed && m_IsPerformed; + m_WasCompletedThisFrame = prevPerformed && !m_IsPerformed; + } + + /// + public bool ReadIsPerformed() + { + return m_IsPerformed; + } + + /// + public bool ReadWasPerformedThisFrame() + { + return m_WasPerformedThisFrame; + } + + /// + public bool ReadWasCompletedThisFrame() + { + return m_WasCompletedThisFrame; + } + + /// + public float ReadValue() + { + return m_ValueInput.ReadValue(); + } + + /// + public bool TryReadValue(out float value) + { + return m_ValueInput.TryReadValue(out value); + } + } +} diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Scripts/XRDeviceSimulatorHandsUI.cs.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/ValueDerivedButtonReader.cs.meta similarity index 83% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Scripts/XRDeviceSimulatorHandsUI.cs.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/ValueDerivedButtonReader.cs.meta index 5171c4d3..1ed61a4a 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Scripts/XRDeviceSimulatorHandsUI.cs.meta +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/ValueDerivedButtonReader.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: f35ac646ecbef4ece8c3eac9e74e1828 +guid: bf47ae772fb3421292887025bf9b5820 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/Vector3ScaleAffordanceReceiver.cs b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/Vector3ScaleAffordanceReceiver.cs similarity index 80% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/Vector3ScaleAffordanceReceiver.cs rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/Vector3ScaleAffordanceReceiver.cs index 127ab21c..3845f199 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/Vector3ScaleAffordanceReceiver.cs +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/Vector3ScaleAffordanceReceiver.cs @@ -1,3 +1,4 @@ +using System; using Unity.Mathematics; using UnityEngine.XR.Interaction.Toolkit.AffordanceSystem.Receiver.Primitives; @@ -7,6 +8,7 @@ namespace UnityEngine.XR.Interaction.Toolkit.Samples.Hands /// Affordance receiver applying a Vector3 (Float3) affordance theme to a Transform local scale. /// Broadcasts new affordance value with Unity Event. /// + [Obsolete("The Affordance System namespace and all associated classes have been deprecated. The existing affordance system will be moved, replaced and updated with a new interaction feedback system in a future version of XRI.")] public class Vector3ScaleAffordanceReceiver : Vector3AffordanceReceiver { [SerializeField] diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/Vector3ScaleAffordanceReceiver.cs.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/Vector3ScaleAffordanceReceiver.cs.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/Vector3ScaleAffordanceReceiver.cs.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Scripts/Vector3ScaleAffordanceReceiver.cs.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders/DepthOnly.shader b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders/DepthOnly.shader similarity index 95% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders/DepthOnly.shader rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders/DepthOnly.shader index 4b5e180c..53f590da 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders/DepthOnly.shader +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders/DepthOnly.shader @@ -11,7 +11,7 @@ Shader "Unlit/DepthOnly" Pass { ZWrite On - + ColorMask 0 } diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders/DepthOnly.shader.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders/DepthOnly.shader.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders/DepthOnly.shader.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders/DepthOnly.shader.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders/RimLight.shadergraph b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders/RimLight.shadergraph similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders/RimLight.shadergraph rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders/RimLight.shadergraph diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders/RimLight.shadergraph.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders/RimLight.shadergraph.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders/RimLight.shadergraph.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders/RimLight.shadergraph.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders/Subgraphs.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders/Subgraphs.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders/Subgraphs.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders/Subgraphs.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders/Subgraphs/AllFingerHighlights.shadersubgraph b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders/Subgraphs/AllFingerHighlights.shadersubgraph similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders/Subgraphs/AllFingerHighlights.shadersubgraph rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders/Subgraphs/AllFingerHighlights.shadersubgraph diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders/Subgraphs/AllFingerHighlights.shadersubgraph.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders/Subgraphs/AllFingerHighlights.shadersubgraph.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders/Subgraphs/AllFingerHighlights.shadersubgraph.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders/Subgraphs/AllFingerHighlights.shadersubgraph.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders/Subgraphs/EdgeHighlight.shadersubgraph b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders/Subgraphs/EdgeHighlight.shadersubgraph similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders/Subgraphs/EdgeHighlight.shadersubgraph rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders/Subgraphs/EdgeHighlight.shadersubgraph diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders/Subgraphs/EdgeHighlight.shadersubgraph.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders/Subgraphs/EdgeHighlight.shadersubgraph.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders/Subgraphs/EdgeHighlight.shadersubgraph.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders/Subgraphs/EdgeHighlight.shadersubgraph.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders/Subgraphs/FadeFromCenter.shadersubgraph b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders/Subgraphs/FadeFromCenter.shadersubgraph similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders/Subgraphs/FadeFromCenter.shadersubgraph rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders/Subgraphs/FadeFromCenter.shadersubgraph diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders/Subgraphs/FadeFromCenter.shadersubgraph.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders/Subgraphs/FadeFromCenter.shadersubgraph.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders/Subgraphs/FadeFromCenter.shadersubgraph.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders/Subgraphs/FadeFromCenter.shadersubgraph.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders/Subgraphs/FadeFromCenterWithNoise.shadersubgraph b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders/Subgraphs/FadeFromCenterWithNoise.shadersubgraph similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders/Subgraphs/FadeFromCenterWithNoise.shadersubgraph rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders/Subgraphs/FadeFromCenterWithNoise.shadersubgraph diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders/Subgraphs/FadeFromCenterWithNoise.shadersubgraph.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders/Subgraphs/FadeFromCenterWithNoise.shadersubgraph.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders/Subgraphs/FadeFromCenterWithNoise.shadersubgraph.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders/Subgraphs/FadeFromCenterWithNoise.shadersubgraph.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders/Subgraphs/OneFingerHighlight.shadersubgraph b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders/Subgraphs/OneFingerHighlight.shadersubgraph similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders/Subgraphs/OneFingerHighlight.shadersubgraph rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders/Subgraphs/OneFingerHighlight.shadersubgraph diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders/Subgraphs/OneFingerHighlight.shadersubgraph.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders/Subgraphs/OneFingerHighlight.shadersubgraph.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders/Subgraphs/OneFingerHighlight.shadersubgraph.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders/Subgraphs/OneFingerHighlight.shadersubgraph.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders/Unity_Hand.shadergraph b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders/Unity_Hand.shadergraph similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders/Unity_Hand.shadergraph rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders/Unity_Hand.shadergraph diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders/Unity_Hand.shadergraph.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders/Unity_Hand.shadergraph.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders/Unity_Hand.shadergraph.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders/Unity_Hand.shadergraph.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders/Unity_Hand_HDR.shadergraph b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders/Unity_Hand_HDR.shadergraph similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders/Unity_Hand_HDR.shadergraph rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders/Unity_Hand_HDR.shadergraph diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders/Unity_Hand_HDR.shadergraph.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders/Unity_Hand_HDR.shadergraph.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders/Unity_Hand_HDR.shadergraph.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders/Unity_Hand_HDR.shadergraph.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders/Unity_Hand_Noise.shadergraph b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders/Unity_Hand_Noise.shadergraph similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders/Unity_Hand_Noise.shadergraph rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders/Unity_Hand_Noise.shadergraph diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders/Unity_Hand_Noise.shadergraph.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders/Unity_Hand_Noise.shadergraph.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders/Unity_Hand_Noise.shadergraph.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders/Unity_Hand_Noise.shadergraph.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders/Unity_Hand_Noise_HDR.shadergraph b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders/Unity_Hand_Noise_HDR.shadergraph similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders/Unity_Hand_Noise_HDR.shadergraph rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders/Unity_Hand_Noise_HDR.shadergraph diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders/Unity_Hand_Noise_HDR.shadergraph.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders/Unity_Hand_Noise_HDR.shadergraph.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Shaders/Unity_Hand_Noise_HDR.shadergraph.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Shaders/Unity_Hand_Noise_HDR.shadergraph.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Textures.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Textures.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Textures.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Textures.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Textures/CombinedFingerIndexHighlight.png b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Textures/CombinedFingerIndexHighlight.png similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Textures/CombinedFingerIndexHighlight.png rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Textures/CombinedFingerIndexHighlight.png diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Textures/CombinedFingerIndexHighlight.png.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Textures/CombinedFingerIndexHighlight.png.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Textures/CombinedFingerIndexHighlight.png.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Hands Interaction Demo/Textures/CombinedFingerIndexHighlight.png.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets.meta similarity index 77% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets.meta index 450b24e5..ab46e403 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets.meta +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 3f8c2c5f6b5784549939394ed2348f7f +guid: d357ee5afb898d64ebaeff2c05af4ee3 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/AffordanceThemes.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/AffordanceThemes.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/AffordanceThemes.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/AffordanceThemes.meta diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/AffordanceThemes/ControllerPokeSphereScale.asset b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/AffordanceThemes/ControllerPokeSphereScale.asset new file mode 100644 index 00000000..39e94bc8 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/AffordanceThemes/ControllerPokeSphereScale.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b75c5cfebce0fb49af0b510ae8746abc63862dd31ad9c43dafc7605bd7a24be7 +size 1771 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Hand Expression Captures/Grab Expression Capture.asset.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/AffordanceThemes/ControllerPokeSphereScale.asset.meta similarity index 79% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Hand Expression Captures/Grab Expression Capture.asset.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/AffordanceThemes/ControllerPokeSphereScale.asset.meta index cc7201ad..53a66560 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Hand Expression Captures/Grab Expression Capture.asset.meta +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/AffordanceThemes/ControllerPokeSphereScale.asset.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 3861c298d39c60c44b16920421444875 +guid: fd784a23f6ef7774a8998adf6e979d04 NativeFormatImporter: externalObjects: {} mainObjectFileID: 11400000 diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/AffordanceThemes/HighlightInteractionColor.asset b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/AffordanceThemes/HighlightInteractionColor.asset new file mode 100644 index 00000000..5f735c44 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/AffordanceThemes/HighlightInteractionColor.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0294db89643cca83e8e92ca72e71e9a7ff7f1340f12e292def8c781bebab3e90 +size 2665 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Hand Expression Captures/Open Expression Capture.asset.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/AffordanceThemes/HighlightInteractionColor.asset.meta similarity index 79% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Hand Expression Captures/Open Expression Capture.asset.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/AffordanceThemes/HighlightInteractionColor.asset.meta index 3a2b1866..b24604f8 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Hand Expression Captures/Open Expression Capture.asset.meta +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/AffordanceThemes/HighlightInteractionColor.asset.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 05293ab353dc8a747a36ed129311686d +guid: 8b0b5aede76faac438e02d2a468f4805 NativeFormatImporter: externalObjects: {} mainObjectFileID: 11400000 diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/AffordanceThemes/HighlightStrengthInteraction.asset b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/AffordanceThemes/HighlightStrengthInteraction.asset new file mode 100644 index 00000000..52a24ec6 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/AffordanceThemes/HighlightStrengthInteraction.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:63943bb242c027856f63f2b96482e7a87192e0b7ed3cbddc8ac6e5bfd6dd048b +size 1776 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Hand Expression Captures/Pinch Expression Capture.asset.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/AffordanceThemes/HighlightStrengthInteraction.asset.meta similarity index 79% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Hand Expression Captures/Pinch Expression Capture.asset.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/AffordanceThemes/HighlightStrengthInteraction.asset.meta index 752844a0..8ea72736 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Hand Expression Captures/Pinch Expression Capture.asset.meta +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/AffordanceThemes/HighlightStrengthInteraction.asset.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: d6e15a52475c2564ca7d2977fdece24a +guid: 795305341a8dbbd46ae54e9a01d6ea95 NativeFormatImporter: externalObjects: {} mainObjectFileID: 11400000 diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/AffordanceThemes/PokeSphereColor.asset b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/AffordanceThemes/PokeSphereColor.asset new file mode 100644 index 00000000..43f2e3a8 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/AffordanceThemes/PokeSphereColor.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e0b4ce78e7e0c362ec7a6a34274bf34cd6c1e4caca5c8f4e2cf59c62d3353635 +size 2675 diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/AffordanceThemes/PokeSphereColor.asset.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/AffordanceThemes/PokeSphereColor.asset.meta new file mode 100644 index 00000000..b02d8f88 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/AffordanceThemes/PokeSphereColor.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fc690d1505c48cb4696838b71abd2ca0 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/AffordanceThemes/PokeSphereInteraction.asset b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/AffordanceThemes/PokeSphereInteraction.asset new file mode 100644 index 00000000..c2f1d910 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/AffordanceThemes/PokeSphereInteraction.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0261bb611639cbf7b230dedba89ea95279908a2ea2fd19d2f7c260d8d04c368 +size 1779 diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/AffordanceThemes/PokeSphereInteraction.asset.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/AffordanceThemes/PokeSphereInteraction.asset.meta new file mode 100644 index 00000000..7b05a984 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/AffordanceThemes/PokeSphereInteraction.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c2712227db89c5142adad58b143bf039 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/AffordanceThemes/Chess.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Animations.meta similarity index 77% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/AffordanceThemes/Chess.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Animations.meta index 8eddaa7e..9ff8971c 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/AffordanceThemes/Chess.meta +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Animations.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 0be2a80454fcbff4a9017ce60441e58c +guid: 8214388458fa6ed49b17bdcee2339a6d folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Animations/ArrowBounce.anim b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Animations/ArrowBounce.anim new file mode 100644 index 00000000..0cd7d2a5 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Animations/ArrowBounce.anim @@ -0,0 +1,205 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: ArrowBounce + serializedVersion: 6 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: {x: 0, y: 0, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 0.41666666 + value: {x: 0, y: 0, z: -0.4} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 0.8333333 + value: {x: 0, y: 0, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + path: Arrow + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 435601722 + attribute: 1 + script: {fileID: 0} + typeID: 4 + customType: 0 + isPPtrCurve: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0.8333333 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 1 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.41666666 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.8333333 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.x + path: Arrow + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.41666666 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.8333333 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.y + path: Arrow + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.41666666 + value: -0.4 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.8333333 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.z + path: Arrow + classID: 4 + script: {fileID: 0} + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Animations/ArrowBounce.anim.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Animations/ArrowBounce.anim.meta new file mode 100644 index 00000000..5a78d862 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Animations/ArrowBounce.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ebfa13455423c254e943b87bf6e1f310 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Animations/Climb Teleport Arrow.controller b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Animations/Climb Teleport Arrow.controller new file mode 100644 index 00000000..e4280963 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Animations/Climb Teleport Arrow.controller @@ -0,0 +1,72 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!91 &9100000 +AnimatorController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Climb Teleport Arrow + serializedVersion: 5 + m_AnimatorParameters: [] + m_AnimatorLayers: + - serializedVersion: 5 + m_Name: Base Layer + m_StateMachine: {fileID: 153770218214309143} + m_Mask: {fileID: 0} + m_Motions: [] + m_Behaviours: [] + m_BlendingMode: 0 + m_SyncedLayerIndex: -1 + m_DefaultWeight: 0 + m_IKPass: 0 + m_SyncedLayerAffectsTiming: 0 + m_Controller: {fileID: 9100000} +--- !u!1107 &153770218214309143 +AnimatorStateMachine: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Base Layer + m_ChildStates: + - serializedVersion: 1 + m_State: {fileID: 8146158331300458114} + m_Position: {x: 200, y: 0, z: 0} + m_ChildStateMachines: [] + m_AnyStateTransitions: [] + m_EntryTransitions: [] + m_StateMachineTransitions: {} + m_StateMachineBehaviours: [] + m_AnyStatePosition: {x: 50, y: 20, z: 0} + m_EntryPosition: {x: 50, y: 120, z: 0} + m_ExitPosition: {x: 800, y: 120, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} + m_DefaultState: {fileID: 8146158331300458114} +--- !u!1102 &8146158331300458114 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: ArrowBounce + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: ebfa13455423c254e943b87bf6e1f310, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Animations/Climb Teleport Arrow.controller.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Animations/Climb Teleport Arrow.controller.meta new file mode 100644 index 00000000..aac095ca --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Animations/Climb Teleport Arrow.controller.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: db6239f7ccb29ca4aac63126c6a35e7d +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 9100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoScene.unity b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoScene.unity new file mode 100644 index 00000000..6d2fc36b --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoScene.unity @@ -0,0 +1,4782 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0.18028378, g: 0.22571412, b: 0.30692285, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 112000000, guid: 8938f010b6d8ddb4aa5a1bee57205791, type: 2} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &144254102 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 144254103} + - component: {fileID: 144254105} + - component: {fileID: 144254104} + m_Layer: 5 + m_Name: Header Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &144254103 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 144254102} + 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: 1247873231} + m_Father: {fileID: 788111585} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -48.5} + m_SizeDelta: {x: 0, y: 98.63} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &144254104 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 144254102} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0.7490196} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &144254105 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 144254102} + m_CullTransparentMesh: 1 +--- !u!1 &157733528 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 157733529} + - component: {fileID: 157733531} + - component: {fileID: 157733530} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &157733529 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 157733528} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.000029802322} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 421848384} + m_Father: {fileID: 788111585} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 0} + m_AnchoredPosition: {x: -275, y: 50} + m_SizeDelta: {x: 250, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &157733530 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 157733528} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0.7490196} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &157733531 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 157733528} + m_CullTransparentMesh: 1 +--- !u!1001 &208985960 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 1565887663814566040, guid: 3e07eccb5e6f459d886de95044adb1d9, type: 3} + propertyPath: m_Name + value: Teleportation Environment + objectReference: {fileID: 0} + - target: {fileID: 1565887663814566041, guid: 3e07eccb5e6f459d886de95044adb1d9, type: 3} + propertyPath: m_RootOrder + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 1565887663814566041, guid: 3e07eccb5e6f459d886de95044adb1d9, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1565887663814566041, guid: 3e07eccb5e6f459d886de95044adb1d9, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1565887663814566041, guid: 3e07eccb5e6f459d886de95044adb1d9, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1565887663814566041, guid: 3e07eccb5e6f459d886de95044adb1d9, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1565887663814566041, guid: 3e07eccb5e6f459d886de95044adb1d9, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1565887663814566041, guid: 3e07eccb5e6f459d886de95044adb1d9, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1565887663814566041, guid: 3e07eccb5e6f459d886de95044adb1d9, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1565887663814566041, guid: 3e07eccb5e6f459d886de95044adb1d9, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1565887663814566041, guid: 3e07eccb5e6f459d886de95044adb1d9, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1565887663814566041, guid: 3e07eccb5e6f459d886de95044adb1d9, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 3e07eccb5e6f459d886de95044adb1d9, type: 3} +--- !u!1 &235184210 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 235184214} + - component: {fileID: 235184213} + - component: {fileID: 235184212} + - component: {fileID: 235184211} + m_Layer: 0 + m_Name: Grab Interactable Table + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!65 &235184211 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 235184210} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &235184212 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 235184210} + 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: 842f1b88643f1bb458ba6243088e344e, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &235184213 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 235184210} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &235184214 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 235184210} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 4, y: 0.625, z: -2.5} + m_LocalScale: {x: 0.4, y: 1, z: 1.85} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 439588100} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &336426667 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 336426668} + - component: {fileID: 336426670} + - component: {fileID: 336426669} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &336426668 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 336426667} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.000029802322} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 196977305468683333} + m_Father: {fileID: 604367606304239380} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 0} + m_AnchoredPosition: {x: -250.00003, y: 35} + m_SizeDelta: {x: 200, y: 75} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &336426669 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 336426667} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0.7490196} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &336426670 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 336426667} + m_CullTransparentMesh: 1 +--- !u!1 &421848383 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 421848384} + - component: {fileID: 421848387} + - component: {fileID: 421848386} + - component: {fileID: 421848385} + m_Layer: 5 + m_Name: Dynamic Attach + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &421848384 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 421848383} + 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: 157733529} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0.000091552734, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &421848385 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 421848383} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 50 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Dynamic Attach +--- !u!114 &421848386 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 421848383} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 0 + m_VerticalFit: 2 +--- !u!222 &421848387 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 421848383} + m_CullTransparentMesh: 0 +--- !u!1 &439588099 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 439588100} + m_Layer: 0 + m_Name: Demo Environment + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &439588100 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 439588099} + 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: 1815318737} + - {fileID: 604367606304239380} + - {fileID: 235184214} + - {fileID: 3807310296116640662} + - {fileID: 4581292472285887094} + - {fileID: 788111585} + - {fileID: 1579013953} + - {fileID: 1917198434} + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &564796391 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 564796392} + - component: {fileID: 564796394} + - component: {fileID: 564796393} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &564796392 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 564796391} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0.000029802322} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1021619524} + m_Father: {fileID: 604367606304239380} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 0} + m_AnchoredPosition: {x: 250.00003, y: 35} + m_SizeDelta: {x: 200, y: 75} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &564796393 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 564796391} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0.7490196} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &564796394 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 564796391} + m_CullTransparentMesh: 1 +--- !u!1 &788111584 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 788111585} + - component: {fileID: 788111590} + - component: {fileID: 788111589} + - component: {fileID: 788111588} + - component: {fileID: 788111587} + m_Layer: 5 + m_Name: Far Grab Interactable Info + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &788111585 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 788111584} + m_LocalRotation: {x: 0, y: 1, z: 0, w: 0} + m_LocalPosition: {x: 0, y: 0, z: -5} + m_LocalScale: {x: 0.002, y: 0.002, z: 0.002} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 144254103} + - {fileID: 157733529} + - {fileID: 1740969851} + - {fileID: 1807497890} + m_Father: {fileID: 439588100} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: -1.5, y: 1.5} + m_SizeDelta: {x: 800, y: 200} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &788111587 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 788111584} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7951c64acb0fa62458bf30a60089fe2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 0 + m_CheckFor2DOcclusion: 0 + m_CheckFor3DOcclusion: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RaycastTriggerInteraction: 1 +--- !u!114 &788111588 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 788111584} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &788111589 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 788111584} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 1 +--- !u!223 &788111590 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 788111584} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 2 + m_Camera: {fileID: 1731298971} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!1 &874919884 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 874919885} + - component: {fileID: 874919887} + - component: {fileID: 874919886} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &874919885 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 874919884} + 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: 1522956427} + m_Father: {fileID: 604367606304239380} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 0} + m_AnchoredPosition: {x: 0, y: 35} + m_SizeDelta: {x: 200, y: 75} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &874919886 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 874919884} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0.7490196} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &874919887 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 874919884} + m_CullTransparentMesh: 1 +--- !u!1001 &876656115 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 732877344778758187, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 732877344778758187, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 732877344778758187, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 732877344778758187, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 732877344778758187, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1465720397298211355, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1465720397298211355, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1465720398002813458, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1465720398002813458, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1465720398002813458, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1465720398059456908, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1465720398059456908, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1465720398059456908, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1465720398059456908, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1477547282043262312, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1477547282043262312, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1477547282043262312, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1477547282043262312, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1956391703820887915, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1956391703820887915, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1956391703820887915, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1956391703820887915, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1962376703435983919, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1962376703435983919, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1962376703435983919, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2923970395470667645, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2923970395470667645, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2923970395470667645, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2923970395470667645, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3322978173798649548, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3322978173798649548, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3322978173798649548, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3322978173798649548, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3322978174125981243, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3322978174125981243, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3322978174125981243, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3322978174125981243, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.x + value: 150 + objectReference: {fileID: 0} + - target: {fileID: 3322978174125981243, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3322978174681443215, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3322978174681443215, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3322978174681443215, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3322978174681443215, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.x + value: 475 + objectReference: {fileID: 0} + - target: {fileID: 3322978174681443215, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3352765378411564996, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3352765378411564996, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3352765378411564996, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3352765378411564996, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3690213291364595752, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3690213291364595752, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3690213291364595752, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3690213291364595752, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4015128326712939850, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_Camera + value: + objectReference: {fileID: 1731298971} + - target: {fileID: 4015128326712939851, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4015128326712939851, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4015128326712939851, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_RootOrder + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 4015128326712939851, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4015128326712939851, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4015128326712939851, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4015128326712939851, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4015128326712939851, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_SizeDelta.x + value: 1000 + objectReference: {fileID: 0} + - target: {fileID: 4015128326712939851, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_SizeDelta.y + value: 360 + objectReference: {fileID: 0} + - target: {fileID: 4015128326712939851, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4015128326712939851, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4015128326712939851, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_LocalPosition.z + value: -2.5 + objectReference: {fileID: 0} + - target: {fileID: 4015128326712939851, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_LocalRotation.w + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 4015128326712939851, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4015128326712939851, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_LocalRotation.y + value: -0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 4015128326712939851, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4015128326712939851, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.x + value: -4 + objectReference: {fileID: 0} + - target: {fileID: 4015128326712939851, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.y + value: 1.5 + objectReference: {fileID: 0} + - target: {fileID: 4015128326712939851, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4015128326712939851, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: -90 + objectReference: {fileID: 0} + - target: {fileID: 4015128326712939851, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4015128326712939855, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_Name + value: UI Sample + objectReference: {fileID: 0} + - target: {fileID: 4220274215976610951, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4220274215976610951, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4220274215976610951, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4220274215976610951, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4220274215976610951, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4422659089949380333, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4422659089949380333, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4422659089949380333, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4422659089949380333, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4422659089949380333, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4422659090696076826, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4422659090696076826, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4422659090696076826, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4422659090696076826, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4422659090696076826, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4422659091188657070, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4422659091188657070, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4422659091188657070, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4422659091188657070, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4588051828473420344, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4588051828473420344, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4588051828473420344, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4588051828473420344, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4950580794031056704, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4950580794031056704, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4950580794031056704, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4950580794031056704, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.x + value: 150 + objectReference: {fileID: 0} + - target: {fileID: 4950580794031056704, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5459145654789298736, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5459145654789298736, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5459145655105915303, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5459145655105915303, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5459145655105915303, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5459145655105915303, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5459145655158323769, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5459145655158323769, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5459145655158323769, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5684358024879033404, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5684358024879033404, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5849765079216124530, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5849765079944474460, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_Size + value: 0.9999997 + objectReference: {fileID: 0} + - target: {fileID: 5849765080478431418, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5849765080478431418, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5849765080478431418, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5849765080480587862, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5849765080480587862, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5849765080480587862, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5849765080480587862, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5849765080850205986, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5849765080850205986, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5849765080850205986, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6546457552942104298, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6546457552942104298, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6546457552942104298, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8180815008627773159, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8180815008627773159, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8180815008627773159, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8180815008627773159, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8180815009374535184, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8180815009374535184, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8180815009374535184, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8180815009374535184, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8180815009888545700, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8180815009888545700, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8180815009888545700, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8180815009888545700, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8575284107106180950, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8575284107106180950, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8575284107106180950, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8575284107106180950, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8607500784391115102, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8607500784391115102, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8607500784391115102, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8607500784391115102, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: fd28f23af44f73f4a95e33435872ad15, type: 3} +--- !u!1 &967567311 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 967567312} + - component: {fileID: 967567315} + - component: {fileID: 967567314} + - component: {fileID: 967567313} + m_Layer: 5 + m_Name: Dual Fixed Attach + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &967567312 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 967567311} + 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: 1807497890} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -0.0002746582, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &967567313 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 967567311} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Dual Fixed Attach +--- !u!114 &967567314 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 967567311} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 0 + m_VerticalFit: 2 +--- !u!222 &967567315 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 967567311} + m_CullTransparentMesh: 0 +--- !u!1 &1021619523 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1021619524} + - component: {fileID: 1021619527} + - component: {fileID: 1021619526} + - component: {fileID: 1021619525} + m_Layer: 5 + m_Name: Velocity-Tracked Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1021619524 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1021619523} + 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: 564796392} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -0.0002746582, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1021619525 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1021619523} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'Velocity Tracked + + Movement' +--- !u!114 &1021619526 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1021619523} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 0 + m_VerticalFit: 2 +--- !u!222 &1021619527 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1021619523} + m_CullTransparentMesh: 0 +--- !u!1 &1202312658 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1202312659} + - component: {fileID: 1202312661} + - component: {fileID: 1202312660} + m_Layer: 5 + m_Name: Header Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1202312659 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1202312658} + 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: 196977306215183538} + m_Father: {fileID: 604367606304239380} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -48.5} + m_SizeDelta: {x: 0, y: 98.63} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1202312660 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1202312658} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0.7490196} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1202312661 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1202312658} + m_CullTransparentMesh: 1 +--- !u!1 &1247873230 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1247873231} + - component: {fileID: 1247873233} + - component: {fileID: 1247873232} + m_Layer: 5 + m_Name: Header Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1247873231 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1247873230} + 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: 144254103} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.6850014} + m_SizeDelta: {x: -428, y: -65.13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1247873232 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1247873230} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Far Grab Interactable Objects +--- !u!222 &1247873233 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1247873230} + m_CullTransparentMesh: 0 +--- !u!1 &1486677401 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1486677402} + - component: {fileID: 1486677405} + - component: {fileID: 1486677404} + - component: {fileID: 1486677403} + m_Layer: 5 + m_Name: Single Fixed Attach + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1486677402 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1486677401} + 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: 1740969851} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1486677403 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1486677401} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Single Fixed Attach +--- !u!114 &1486677404 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1486677401} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 0 + m_VerticalFit: 2 +--- !u!222 &1486677405 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1486677401} + m_CullTransparentMesh: 0 +--- !u!1001 &1519520462 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 1060243933316379515, guid: 6821e1b7f44d8c44b8a2ba02f37309d5, type: 3} + propertyPath: m_Name + value: Interactables Sample + objectReference: {fileID: 0} + - target: {fileID: 2991896912978869755, guid: 6821e1b7f44d8c44b8a2ba02f37309d5, type: 3} + propertyPath: m_RootOrder + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 2991896912978869755, guid: 6821e1b7f44d8c44b8a2ba02f37309d5, type: 3} + propertyPath: m_LocalPosition.x + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 2991896912978869755, guid: 6821e1b7f44d8c44b8a2ba02f37309d5, type: 3} + propertyPath: m_LocalPosition.y + value: 0.634 + objectReference: {fileID: 0} + - target: {fileID: 2991896912978869755, guid: 6821e1b7f44d8c44b8a2ba02f37309d5, type: 3} + propertyPath: m_LocalPosition.z + value: -2.5 + objectReference: {fileID: 0} + - target: {fileID: 2991896912978869755, guid: 6821e1b7f44d8c44b8a2ba02f37309d5, type: 3} + propertyPath: m_LocalRotation.w + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 2991896912978869755, guid: 6821e1b7f44d8c44b8a2ba02f37309d5, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2991896912978869755, guid: 6821e1b7f44d8c44b8a2ba02f37309d5, type: 3} + propertyPath: m_LocalRotation.y + value: -0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 2991896912978869755, guid: 6821e1b7f44d8c44b8a2ba02f37309d5, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2991896912978869755, guid: 6821e1b7f44d8c44b8a2ba02f37309d5, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2991896912978869755, guid: 6821e1b7f44d8c44b8a2ba02f37309d5, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: -90 + objectReference: {fileID: 0} + - target: {fileID: 2991896912978869755, guid: 6821e1b7f44d8c44b8a2ba02f37309d5, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 6821e1b7f44d8c44b8a2ba02f37309d5, type: 3} +--- !u!1 &1522956426 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1522956427} + - component: {fileID: 1522956430} + - component: {fileID: 1522956429} + - component: {fileID: 1522956428} + m_Layer: 5 + m_Name: Instananeous Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1522956427 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1522956426} + 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: 874919885} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1522956428 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1522956426} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'Instantaneous + + Movement' +--- !u!114 &1522956429 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1522956426} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 0 + m_VerticalFit: 2 +--- !u!222 &1522956430 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1522956426} + m_CullTransparentMesh: 0 +--- !u!1 &1579013952 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1579013953} + - component: {fileID: 1579013956} + - component: {fileID: 1579013955} + - component: {fileID: 1579013954} + m_Layer: 0 + m_Name: Gaze Interactable Table + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1579013953 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1579013952} + m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + m_LocalPosition: {x: -1.5, y: 0.625, z: -4.5} + m_LocalScale: {x: 0.4, y: 1, z: 1.85} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 439588100} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0} +--- !u!65 &1579013954 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1579013952} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1579013955 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1579013952} + 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: 842f1b88643f1bb458ba6243088e344e, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1579013956 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1579013952} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1589715509 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1589715510} + - component: {fileID: 1589715512} + - component: {fileID: 1589715511} + m_Layer: 5 + m_Name: Header Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1589715510 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1589715509} + 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: 1743632700} + m_Father: {fileID: 1917198434} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -48.5} + m_SizeDelta: {x: 0, y: 98.63} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1589715511 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1589715509} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0.7490196} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1589715512 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1589715509} + m_CullTransparentMesh: 1 +--- !u!114 &1592246342 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 742272467831425975, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} + m_PrefabInstance: {fileID: 9014170783777442263} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 760ff70c1c91bdd45907d0ff0cdcaf7f, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1592246343 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 4083252680172266230, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} + m_PrefabInstance: {fileID: 9014170783777442263} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8b94c4c83dec6a94fbaebf543478259e, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1592246344 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 6480925242510836759, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} + m_PrefabInstance: {fileID: 9014170783777442263} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 75b29b6c6428c984a8a73ffc2d58063b, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1592246345 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 7347985736721345035, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} + m_PrefabInstance: {fileID: 9014170783777442263} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e9f365cf844c03449bc8973eead2c3c1, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!20 &1731298971 stripped +Camera: + m_CorrespondingSourceObject: {fileID: 1767192439, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} + m_PrefabInstance: {fileID: 9014170783777442263} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1740969850 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1740969851} + - component: {fileID: 1740969853} + - component: {fileID: 1740969852} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1740969851 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1740969850} + 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: 1486677402} + m_Father: {fileID: 788111585} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 0} + m_AnchoredPosition: {x: 0, y: 50} + m_SizeDelta: {x: 275, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1740969852 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1740969850} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0.7490196} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1740969853 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1740969850} + m_CullTransparentMesh: 1 +--- !u!1 &1743632699 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1743632700} + - component: {fileID: 1743632702} + - component: {fileID: 1743632701} + m_Layer: 5 + m_Name: Header Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1743632700 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1743632699} + 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: 1589715510} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.6850014} + m_SizeDelta: {x: -400, y: -65.13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1743632701 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1743632699} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Climb Interactable Objects +--- !u!222 &1743632702 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1743632699} + m_CullTransparentMesh: 0 +--- !u!1 &1807497889 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1807497890} + - component: {fileID: 1807497892} + - component: {fileID: 1807497891} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1807497890 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1807497889} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0.000029802322} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 967567312} + m_Father: {fileID: 788111585} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 0} + m_AnchoredPosition: {x: 275, y: 50} + m_SizeDelta: {x: 250, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1807497891 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1807497889} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0.7490196} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1807497892 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1807497889} + m_CullTransparentMesh: 1 +--- !u!1 &1815318735 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1815318737} + - component: {fileID: 1815318736} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1815318736 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1815318735} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.9450981, b: 0.85098046, a: 1} + m_Intensity: 0.95 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 0.75 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 1 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1815318737 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1815318735} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 439588100} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &1917198433 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1917198434} + - component: {fileID: 1917198438} + - component: {fileID: 1917198437} + - component: {fileID: 1917198436} + - component: {fileID: 1917198435} + m_Layer: 5 + m_Name: Climb Interactable Info + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1917198434 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1917198433} + m_LocalRotation: {x: 0, y: -0.7071068, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0.642} + m_LocalScale: {x: 0.002, y: 0.002, z: 0.002} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1589715510} + m_Father: {fileID: 439588100} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: -90, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: -2.87, y: 1.5} + m_SizeDelta: {x: 700, y: 200} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1917198435 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1917198433} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7951c64acb0fa62458bf30a60089fe2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 0 + m_CheckFor2DOcclusion: 0 + m_CheckFor3DOcclusion: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RaycastTriggerInteraction: 1 +--- !u!114 &1917198436 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1917198433} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1917198437 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1917198433} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 1 +--- !u!223 &1917198438 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1917198433} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 2 + m_Camera: {fileID: 1731298971} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!1 &196977305468683332 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 196977305468683333} + - component: {fileID: 196977305468683336} + - component: {fileID: 196977305468683334} + - component: {fileID: 4934032446432824226} + m_Layer: 5 + m_Name: Kinematic Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &196977305468683333 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 196977305468683332} + 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: 336426668} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0.000091552734, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &196977305468683334 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 196977305468683332} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 0 + m_VerticalFit: 2 +--- !u!222 &196977305468683336 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 196977305468683332} + m_CullTransparentMesh: 0 +--- !u!1 &196977306215183537 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 196977306215183538} + - component: {fileID: 196977306215183541} + - component: {fileID: 9108292829394508247} + m_Layer: 5 + m_Name: Header Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &196977306215183538 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 196977306215183537} + 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: 1202312659} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.6850014} + m_SizeDelta: {x: -428, y: -65.13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &196977306215183541 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 196977306215183537} + m_CullTransparentMesh: 0 +--- !u!1 &604367606304239376 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 604367606304239380} + - component: {fileID: 604367606304239381} + - component: {fileID: 604367606304239378} + - component: {fileID: 604367606304239379} + - component: {fileID: 604367606304239383} + m_Layer: 5 + m_Name: Grab Interactable Info + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &604367606304239378 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 604367606304239376} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 1 +--- !u!114 &604367606304239379 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 604367606304239376} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!224 &604367606304239380 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 604367606304239376} + m_LocalRotation: {x: -0, y: 0.7071068, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: -2.5} + m_LocalScale: {x: 0.002, y: 0.002, z: 0.002} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1202312659} + - {fileID: 336426668} + - {fileID: 874919885} + - {fileID: 564796392} + m_Father: {fileID: 439588100} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 4.5, y: 1.5} + m_SizeDelta: {x: 700, y: 200} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!223 &604367606304239381 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 604367606304239376} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 2 + m_Camera: {fileID: 1731298971} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!114 &604367606304239383 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 604367606304239376} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7951c64acb0fa62458bf30a60089fe2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 0 + m_CheckFor2DOcclusion: 0 + m_CheckFor3DOcclusion: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RaycastTriggerInteraction: 1 +--- !u!1001 &670559718131909908 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 670559718997833774, guid: 88246f8e9c3765d49be8da34eca3c630, type: 3} + propertyPath: m_Name + value: Poke Interactions Sample + objectReference: {fileID: 0} + - target: {fileID: 670559718997833775, guid: 88246f8e9c3765d49be8da34eca3c630, type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 670559718997833775, guid: 88246f8e9c3765d49be8da34eca3c630, type: 3} + propertyPath: m_LocalPosition.x + value: 1.5 + objectReference: {fileID: 0} + - target: {fileID: 670559718997833775, guid: 88246f8e9c3765d49be8da34eca3c630, type: 3} + propertyPath: m_LocalPosition.y + value: 1.13 + objectReference: {fileID: 0} + - target: {fileID: 670559718997833775, guid: 88246f8e9c3765d49be8da34eca3c630, type: 3} + propertyPath: m_LocalPosition.z + value: -4.45 + objectReference: {fileID: 0} + - target: {fileID: 670559718997833775, guid: 88246f8e9c3765d49be8da34eca3c630, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 670559718997833775, guid: 88246f8e9c3765d49be8da34eca3c630, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 670559718997833775, guid: 88246f8e9c3765d49be8da34eca3c630, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 670559718997833775, guid: 88246f8e9c3765d49be8da34eca3c630, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 670559718997833775, guid: 88246f8e9c3765d49be8da34eca3c630, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 670559718997833775, guid: 88246f8e9c3765d49be8da34eca3c630, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 670559718997833775, guid: 88246f8e9c3765d49be8da34eca3c630, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 88246f8e9c3765d49be8da34eca3c630, type: 3} +--- !u!1001 &1017698943352573226 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 177564888636506461, guid: f5ee409d69254d64da7a3b74d31a5a40, type: 3} + propertyPath: m_LocalPosition.z + value: -4.5 + objectReference: {fileID: 0} + - target: {fileID: 177564888636506461, guid: f5ee409d69254d64da7a3b74d31a5a40, type: 3} + propertyPath: m_LocalRotation.w + value: 0.24184489 + objectReference: {fileID: 0} + - target: {fileID: 177564888636506461, guid: f5ee409d69254d64da7a3b74d31a5a40, type: 3} + propertyPath: m_LocalRotation.x + value: -0.70710677 + objectReference: {fileID: 0} + - target: {fileID: 177564888636506461, guid: f5ee409d69254d64da7a3b74d31a5a40, type: 3} + propertyPath: m_LocalRotation.y + value: 0.664463 + objectReference: {fileID: 0} + - target: {fileID: 177564888636506461, guid: f5ee409d69254d64da7a3b74d31a5a40, type: 3} + propertyPath: m_LocalRotation.z + value: -0.00000026822093 + objectReference: {fileID: 0} + - target: {fileID: 177564888636506461, guid: f5ee409d69254d64da7a3b74d31a5a40, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 340 + objectReference: {fileID: 0} + - target: {fileID: 1017698943250256213, guid: f5ee409d69254d64da7a3b74d31a5a40, type: 3} + propertyPath: m_Name + value: Far Grab Samples + objectReference: {fileID: 0} + - target: {fileID: 1017698943250256298, guid: f5ee409d69254d64da7a3b74d31a5a40, type: 3} + propertyPath: m_RootOrder + value: 7 + objectReference: {fileID: 0} + - target: {fileID: 1017698943250256298, guid: f5ee409d69254d64da7a3b74d31a5a40, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1017698943250256298, guid: f5ee409d69254d64da7a3b74d31a5a40, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1017698943250256298, guid: f5ee409d69254d64da7a3b74d31a5a40, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1017698943250256298, guid: f5ee409d69254d64da7a3b74d31a5a40, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1017698943250256298, guid: f5ee409d69254d64da7a3b74d31a5a40, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1017698943250256298, guid: f5ee409d69254d64da7a3b74d31a5a40, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1017698943250256298, guid: f5ee409d69254d64da7a3b74d31a5a40, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1017698943250256298, guid: f5ee409d69254d64da7a3b74d31a5a40, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1017698943250256298, guid: f5ee409d69254d64da7a3b74d31a5a40, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1017698943250256298, guid: f5ee409d69254d64da7a3b74d31a5a40, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5032153987230353887, guid: f5ee409d69254d64da7a3b74d31a5a40, type: 3} + propertyPath: m_LocalPosition.x + value: -2.067 + objectReference: {fileID: 0} + - target: {fileID: 5032153987230353887, guid: f5ee409d69254d64da7a3b74d31a5a40, type: 3} + propertyPath: m_LocalPosition.z + value: -4.446 + objectReference: {fileID: 0} + - target: {fileID: 5151981248583452152, guid: f5ee409d69254d64da7a3b74d31a5a40, type: 3} + propertyPath: m_LocalPosition.x + value: -1.531 + objectReference: {fileID: 0} + - target: {fileID: 5151981248583452152, guid: f5ee409d69254d64da7a3b74d31a5a40, type: 3} + propertyPath: m_LocalPosition.z + value: -4.439 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: f5ee409d69254d64da7a3b74d31a5a40, type: 3} +--- !u!1001 &2181405618988545911 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 9014170783777442264} + m_Modifications: + - target: {fileID: 8429981633443581377, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_Name + value: TunnelingVignette + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581382, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581382, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581382, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581382, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581382, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581382, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581382, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581382, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581382, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581382, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581382, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.size + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[0].m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[1].m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[2].m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[3].m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[4].m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[5].m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[6].m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[7].m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[0].m_LocomotionProvider + value: + objectReference: {fileID: 1592246345} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[1].m_LocomotionProvider + value: + objectReference: {fileID: 1592246344} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[2].m_LocomotionProvider + value: + objectReference: {fileID: 9014170783777442268} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[3].m_LocomotionProvider + value: + objectReference: {fileID: 9014170783777442267} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[4].m_LocomotionProvider + value: + objectReference: {fileID: 1592246343} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[5].m_LocomotionProvider + value: + objectReference: {fileID: 1592246342} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[6].m_LocomotionProvider + value: + objectReference: {fileID: 9014170783777442266} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[7].m_LocomotionProvider + value: + objectReference: {fileID: 9014170783777442265} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[0].m_OverrideParameters.m_EaseInTime + value: 0.3 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[1].m_OverrideParameters.m_EaseInTime + value: 0.3 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[2].m_OverrideParameters.m_EaseInTime + value: 0.3 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[3].m_OverrideParameters.m_EaseInTime + value: 0.3 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[4].m_OverrideParameters.m_EaseInTime + value: 0.3 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[5].m_OverrideParameters.m_EaseInTime + value: 0.3 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[6].m_OverrideParameters.m_EaseInTime + value: 0.3 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[7].m_OverrideParameters.m_EaseInTime + value: 0.3 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[0].m_OverrideParameters.m_EaseOutTime + value: 0.3 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[1].m_OverrideParameters.m_EaseOutTime + value: 0.3 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[2].m_OverrideParameters.m_EaseOutTime + value: 0.3 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[3].m_OverrideParameters.m_EaseOutTime + value: 0.3 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[4].m_OverrideParameters.m_EaseOutTime + value: 0.3 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[5].m_OverrideParameters.m_EaseOutTime + value: 0.3 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[6].m_OverrideParameters.m_EaseOutTime + value: 0.3 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[7].m_OverrideParameters.m_EaseOutTime + value: 0.3 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[0].m_OverrideParameters.m_ApertureSize + value: 0.7 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[1].m_OverrideParameters.m_ApertureSize + value: 0.7 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[2].m_OverrideParameters.m_ApertureSize + value: 0.7 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[3].m_OverrideParameters.m_ApertureSize + value: 0.7 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[4].m_OverrideParameters.m_ApertureSize + value: 0.7 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[5].m_OverrideParameters.m_ApertureSize + value: 0.7 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[6].m_OverrideParameters.m_ApertureSize + value: 0.7 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[7].m_OverrideParameters.m_ApertureSize + value: 0.7 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[0].m_OverrideParameters.m_VignetteColor.a + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[1].m_OverrideParameters.m_VignetteColor.a + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[2].m_OverrideParameters.m_VignetteColor.a + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[3].m_OverrideParameters.m_VignetteColor.a + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[4].m_OverrideParameters.m_VignetteColor.a + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[5].m_OverrideParameters.m_VignetteColor.a + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[6].m_OverrideParameters.m_VignetteColor.a + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[7].m_OverrideParameters.m_VignetteColor.a + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[0].m_OverrideParameters.m_FeatheringEffect + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[1].m_OverrideParameters.m_FeatheringEffect + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[2].m_OverrideParameters.m_FeatheringEffect + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[3].m_OverrideParameters.m_FeatheringEffect + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[4].m_OverrideParameters.m_FeatheringEffect + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[5].m_OverrideParameters.m_FeatheringEffect + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[6].m_OverrideParameters.m_FeatheringEffect + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[7].m_OverrideParameters.m_FeatheringEffect + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[0].m_OverrideParameters.m_VignetteColorBlend.a + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[1].m_OverrideParameters.m_VignetteColorBlend.a + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[2].m_OverrideParameters.m_VignetteColorBlend.a + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[3].m_OverrideParameters.m_VignetteColorBlend.a + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[4].m_OverrideParameters.m_VignetteColorBlend.a + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[5].m_OverrideParameters.m_VignetteColorBlend.a + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[6].m_OverrideParameters.m_VignetteColorBlend.a + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[7].m_OverrideParameters.m_VignetteColorBlend.a + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} +--- !u!114 &3127728407676174906 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3127728407676174909} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 83e4e6cca11330d4088d729ab4fc9d9f, type: 3} + m_Name: + m_EditorClassIdentifier: + m_StartingHoverFilters: [] + m_StartingSelectFilters: [] +--- !u!4 &3127728407676174907 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3127728407676174909} + 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: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &3127728407676174909 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3127728407676174907} + - component: {fileID: 3127728407676174906} + m_Layer: 0 + m_Name: XR Interaction Manager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &3127728408198131880 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3127728408198131895} + - component: {fileID: 3127728408198131894} + - component: {fileID: 3127728408198131892} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &3127728408198131892 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3127728408198131880} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ab68ce6587aab0146b8dabefbd806791, type: 3} + m_Name: + m_EditorClassIdentifier: + m_SendPointerHoverToParent: 1 + m_ClickSpeed: 0.3 + m_MoveDeadzone: 0.6 + m_RepeatDelay: 0.5 + m_RepeatRate: 0.1 + m_TrackedDeviceDragThresholdMultiplier: 2 + m_TrackedScrollDeltaMultiplier: 5 + m_ActiveInputMode: 1 + m_EnableXRInput: 1 + m_EnableMouseInput: 1 + m_EnableTouchInput: 1 + m_PointAction: {fileID: 2869410428622933342, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_LeftClickAction: {fileID: 1855836014308820768, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_MiddleClickAction: {fileID: -6289560987278519447, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_RightClickAction: {fileID: -2562941478296515153, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_ScrollWheelAction: {fileID: 5825226938762934180, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_NavigateAction: {fileID: -7967456002180160679, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_SubmitAction: {fileID: 3994978066732806534, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_CancelAction: {fileID: 2387711382375263438, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_EnableBuiltinActionsAsFallback: 1 + m_EnableGamepadInput: 1 + m_EnableJoystickInput: 1 + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel +--- !u!114 &3127728408198131894 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3127728408198131880} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 10 +--- !u!4 &3127728408198131895 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3127728408198131880} + 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: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &3807310294900035020 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3807310294900035022} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0.7490196} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &3807310294900035021 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3807310294900035022} + m_CullTransparentMesh: 1 +--- !u!1 &3807310294900035022 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3807310294900035023} + - component: {fileID: 3807310294900035021} + - component: {fileID: 3807310294900035020} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3807310294900035023 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3807310294900035022} + 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: 3807310296080488667} + m_Father: {fileID: 3807310296116640662} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 0} + m_AnchoredPosition: {x: 0, y: 50} + m_SizeDelta: {x: 275, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3807310295319535098 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3807310295319535103} + m_CullTransparentMesh: 1 +--- !u!224 &3807310295319535100 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3807310295319535103} + 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: 3807310295681469693} + m_Father: {fileID: 3807310296116640662} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 0} + m_AnchoredPosition: {x: 275, y: 50} + m_SizeDelta: {x: 250, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &3807310295319535101 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3807310295319535103} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0.7490196} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &3807310295319535103 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3807310295319535100} + - component: {fileID: 3807310295319535098} + - component: {fileID: 3807310295319535101} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &3807310295418403514 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3807310295418403519} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 0 + m_VerticalFit: 2 +--- !u!222 &3807310295418403515 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3807310295418403519} + m_CullTransparentMesh: 0 +--- !u!224 &3807310295418403516 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3807310295418403519} + 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: 3807310296483843619} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &3807310295418403517 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3807310295418403519} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 50 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Enable Particle System +--- !u!1 &3807310295418403519 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3807310295418403516} + - component: {fileID: 3807310295418403515} + - component: {fileID: 3807310295418403514} + - component: {fileID: 3807310295418403517} + m_Layer: 5 + m_Name: Enable Particle System + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &3807310295488059788 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3807310295488059790} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0.7490196} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &3807310295488059789 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3807310295488059790} + m_CullTransparentMesh: 1 +--- !u!1 &3807310295488059790 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3807310295488059791} + - component: {fileID: 3807310295488059789} + - component: {fileID: 3807310295488059788} + m_Layer: 5 + m_Name: Header Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3807310295488059791 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3807310295488059790} + 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: 3807310295959509738} + m_Father: {fileID: 3807310296116640662} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -48.5} + m_SizeDelta: {x: 0, y: 98.63} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3807310295681469688 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3807310295681469692} + m_CullTransparentMesh: 0 +--- !u!114 &3807310295681469690 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3807310295681469692} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Increment UI Text +--- !u!114 &3807310295681469691 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3807310295681469692} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 0 + m_VerticalFit: 2 +--- !u!1 &3807310295681469692 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3807310295681469693} + - component: {fileID: 3807310295681469688} + - component: {fileID: 3807310295681469691} + - component: {fileID: 3807310295681469690} + m_Layer: 5 + m_Name: Increment UI Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3807310295681469693 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3807310295681469692} + 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: 3807310295319535100} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3807310295959509736 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3807310295959509741} + m_CullTransparentMesh: 0 +--- !u!224 &3807310295959509738 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3807310295959509741} + 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: 3807310295488059791} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.6850014} + m_SizeDelta: {x: -428, y: -65.13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &3807310295959509739 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3807310295959509741} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Poke Interaction Examples +--- !u!1 &3807310295959509741 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3807310295959509738} + - component: {fileID: 3807310295959509736} + - component: {fileID: 3807310295959509739} + m_Layer: 5 + m_Name: Header Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!222 &3807310296080488662 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3807310296080488666} + m_CullTransparentMesh: 0 +--- !u!114 &3807310296080488664 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3807310296080488666} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Play Sound +--- !u!114 &3807310296080488665 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3807310296080488666} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 0 + m_VerticalFit: 2 +--- !u!1 &3807310296080488666 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3807310296080488667} + - component: {fileID: 3807310296080488662} + - component: {fileID: 3807310296080488665} + - component: {fileID: 3807310296080488664} + m_Layer: 5 + m_Name: Play Sound + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3807310296080488667 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3807310296080488666} + 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: 3807310294900035023} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!223 &3807310296116640658 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3807310296116640665} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 2 + m_Camera: {fileID: 1731298971} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!114 &3807310296116640660 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3807310296116640665} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &3807310296116640661 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3807310296116640665} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 1 +--- !u!224 &3807310296116640662 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3807310296116640665} + m_LocalRotation: {x: 0, y: 1, z: 0, w: 0} + m_LocalPosition: {x: 0, y: 0, z: -5} + m_LocalScale: {x: 0.002, y: 0.002, z: 0.002} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3807310295488059791} + - {fileID: 3807310296483843619} + - {fileID: 3807310294900035023} + - {fileID: 3807310295319535100} + m_Father: {fileID: 439588100} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 1.5, y: 1.5} + m_SizeDelta: {x: 800, y: 200} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &3807310296116640663 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3807310296116640665} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7951c64acb0fa62458bf30a60089fe2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 0 + m_CheckFor2DOcclusion: 0 + m_CheckFor3DOcclusion: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RaycastTriggerInteraction: 1 +--- !u!1 &3807310296116640665 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3807310296116640662} + - component: {fileID: 3807310296116640658} + - component: {fileID: 3807310296116640661} + - component: {fileID: 3807310296116640660} + - component: {fileID: 3807310296116640663} + m_Layer: 5 + m_Name: Poke Interactions Info + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &3807310296483843616 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3807310296483843618} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0.7490196} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &3807310296483843617 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3807310296483843618} + m_CullTransparentMesh: 1 +--- !u!1 &3807310296483843618 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3807310296483843619} + - component: {fileID: 3807310296483843617} + - component: {fileID: 3807310296483843616} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3807310296483843619 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3807310296483843618} + 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: 3807310295418403516} + m_Father: {fileID: 3807310296116640662} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 0} + m_AnchoredPosition: {x: -275, y: 50} + m_SizeDelta: {x: 250, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1001 &3953970342977539823 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 566908114440589555, guid: 2ea572d587ee60f44bd5baa3bc2d6503, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 842f1b88643f1bb458ba6243088e344e, type: 2} + - target: {fileID: 3953970342014523578, guid: 2ea572d587ee60f44bd5baa3bc2d6503, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: fc226930e8fad4c499969204cecfbc05, type: 2} + - target: {fileID: 3953970342314940649, guid: 2ea572d587ee60f44bd5baa3bc2d6503, type: 3} + propertyPath: m_RootOrder + value: 9 + objectReference: {fileID: 0} + - target: {fileID: 3953970342314940649, guid: 2ea572d587ee60f44bd5baa3bc2d6503, type: 3} + propertyPath: m_LocalPosition.x + value: -3.75 + objectReference: {fileID: 0} + - target: {fileID: 3953970342314940649, guid: 2ea572d587ee60f44bd5baa3bc2d6503, type: 3} + propertyPath: m_LocalPosition.y + value: 0.125 + objectReference: {fileID: 0} + - target: {fileID: 3953970342314940649, guid: 2ea572d587ee60f44bd5baa3bc2d6503, type: 3} + propertyPath: m_LocalPosition.z + value: 1.7 + objectReference: {fileID: 0} + - target: {fileID: 3953970342314940649, guid: 2ea572d587ee60f44bd5baa3bc2d6503, type: 3} + propertyPath: m_LocalRotation.w + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 3953970342314940649, guid: 2ea572d587ee60f44bd5baa3bc2d6503, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3953970342314940649, guid: 2ea572d587ee60f44bd5baa3bc2d6503, type: 3} + propertyPath: m_LocalRotation.y + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 3953970342314940649, guid: 2ea572d587ee60f44bd5baa3bc2d6503, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3953970342314940649, guid: 2ea572d587ee60f44bd5baa3bc2d6503, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3953970342314940649, guid: 2ea572d587ee60f44bd5baa3bc2d6503, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 90 + objectReference: {fileID: 0} + - target: {fileID: 3953970342314940649, guid: 2ea572d587ee60f44bd5baa3bc2d6503, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3953970342314940650, guid: 2ea572d587ee60f44bd5baa3bc2d6503, type: 3} + propertyPath: m_Name + value: Climb Sample + objectReference: {fileID: 0} + - target: {fileID: 4216385758722005817, guid: 2ea572d587ee60f44bd5baa3bc2d6503, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 842f1b88643f1bb458ba6243088e344e, type: 2} + - target: {fileID: 7810350561350330887, guid: 2ea572d587ee60f44bd5baa3bc2d6503, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 842f1b88643f1bb458ba6243088e344e, type: 2} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 2ea572d587ee60f44bd5baa3bc2d6503, type: 3} +--- !u!1 &4581292472285887089 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4581292472285887094} + - component: {fileID: 4581292472285887093} + - component: {fileID: 4581292472285887092} + - component: {fileID: 4581292472285887095} + m_Layer: 0 + m_Name: Poke Interactions Table + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &4581292472285887092 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4581292472285887089} + 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: 842f1b88643f1bb458ba6243088e344e, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &4581292472285887093 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4581292472285887089} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &4581292472285887094 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4581292472285887089} + m_LocalRotation: {x: -0, y: 0.7071068, z: -0, w: 0.7071068} + m_LocalPosition: {x: 1.5, y: 0.625, z: -4.4199996} + m_LocalScale: {x: 0.40000004, y: 1, z: 1.85} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 439588100} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0} +--- !u!65 &4581292472285887095 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4581292472285887089} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!114 &4934032446432824226 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 196977305468683332} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 50 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'Kinematic + + Movement' +--- !u!1001 &9014170783777442263 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 1717954561962503725, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} + propertyPath: m_Name + value: XR Origin (XR Rig) + objectReference: {fileID: 0} + - target: {fileID: 1717954561962503726, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1717954561962503726, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1717954561962503726, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} + propertyPath: m_LocalPosition.y + value: 0.125 + objectReference: {fileID: 0} + - target: {fileID: 1717954561962503726, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} + propertyPath: m_LocalPosition.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1717954561962503726, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} + propertyPath: m_LocalRotation.w + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1717954561962503726, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1717954561962503726, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} + propertyPath: m_LocalRotation.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1717954561962503726, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1717954561962503726, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1717954561962503726, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 180 + objectReference: {fileID: 0} + - target: {fileID: 1717954561962503726, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5944131804917401860, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6501755809687671949, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} +--- !u!4 &9014170783777442264 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 1767192434, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} + m_PrefabInstance: {fileID: 9014170783777442263} + m_PrefabAsset: {fileID: 0} +--- !u!114 &9014170783777442265 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 5739245880472075158, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} + m_PrefabInstance: {fileID: 9014170783777442263} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 496880615cd240be960d436c1c8ae570, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &9014170783777442266 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 1748222016861356527, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} + m_PrefabInstance: {fileID: 9014170783777442263} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01f69dc1cb084aa42b2f2f8cd87bc770, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &9014170783777442267 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 2032798983271290625, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} + m_PrefabInstance: {fileID: 9014170783777442263} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8b94c4c83dec6a94fbaebf543478259e, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &9014170783777442268 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 153982007679157697, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} + m_PrefabInstance: {fileID: 9014170783777442263} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9b1e8c997df241c1a67045eeac79b41b, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &9108292829394508247 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 196977306215183537} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Grab Interactable Objects diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoScene.unity.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoScene.unity.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoScene.unity.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoScene.unity.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets.meta diff --git a/Assets/Samples/XR Hands/1.3.0.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/AffordanceThemes.meta similarity index 77% rename from Assets/Samples/XR Hands/1.3.0.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/AffordanceThemes.meta index b36856ff..b6ea24e5 100644 --- a/Assets/Samples/XR Hands/1.3.0.meta +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/AffordanceThemes.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: b730d52b94da9d34f82eddff1f9694b8 +guid: f635bc48476c3db41b2fe75737878deb folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/AffordanceThemes/InteractionColor.asset b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/AffordanceThemes/InteractionColor.asset new file mode 100644 index 00000000..a463b7d0 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/AffordanceThemes/InteractionColor.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f8aef74e6cfd68c88ff02e41b6c43a668b16fae2c4d25a02263888f053200295 +size 2650 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/AffordanceThemes/InteractionColorAffordanceTheme.asset.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/AffordanceThemes/InteractionColor.asset.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/AffordanceThemes/InteractionColorAffordanceTheme.asset.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/AffordanceThemes/InteractionColor.asset.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Audio.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Audio.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Audio.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Audio.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Audio/Button Pop.wav b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Audio/Button Pop.wav similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Audio/Button Pop.wav rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Audio/Button Pop.wav diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Audio/Button Pop.wav.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Audio/Button Pop.wav.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Audio/Button Pop.wav.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Audio/Button Pop.wav.meta diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Materials.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Materials.meta new file mode 100644 index 00000000..52c44c4f --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Materials.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d4e01b7fb24753742a7665cef9ed7839 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Materials/Concrete Dark Blue.mat b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Materials/Concrete Dark Blue.mat new file mode 100644 index 00000000..cc5798d4 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Materials/Concrete Dark Blue.mat @@ -0,0 +1,169 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-1638956391025656723 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: 639247ca83abc874e893eb93af2b5e44, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 0 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Concrete Dark Blue + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _METALLICSPECGLOSSMAP + - _NORMALMAP + m_InvalidKeywords: + - _METALLICGLOSSMAP + m_LightmapFlags: 4 + m_EnableInstancingVariants: 1 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 4, y: 2} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: cdebec39dbf81a14688e1de8d12897b4, type: 3} + 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: 4, y: 2} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 2800000, guid: f3fb518ec70eb4047b1c6ec34933fbce, type: 3} + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _BUILTIN_AlphaClip: 0 + - _BUILTIN_Blend: 0 + - _BUILTIN_CullMode: 2 + - _BUILTIN_DstBlend: 0 + - _BUILTIN_QueueControl: 0 + - _BUILTIN_QueueOffset: 0 + - _BUILTIN_SrcBlend: 1 + - _BUILTIN_Surface: 0 + - _BUILTIN_ZTest: 4 + - _BUILTIN_ZWrite: 1 + - _BUILTIN_ZWriteControl: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _BumpStrength: 1 + - _CastShadows: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0.1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueControl: 0 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.1 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZTest: 4 + - _ZWrite: 1 + - _ZWriteControl: 0 + m_Colors: + - _BaseColor: {r: 0.40784314, g: 0.61960775, b: 0.84705883, a: 1} + - _BumpOffset: {r: 0, g: 0, b: 0, a: 0} + - _BumpTiling: {r: 4, g: 2, b: 0, a: 0} + - _Color: {r: 0.4078431, g: 0.61960775, b: 0.84705883, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] +--- !u!114 &1031156148794556660 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials/PrimitivesYellow.mat.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Materials/Concrete Dark Blue.mat.meta similarity index 79% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials/PrimitivesYellow.mat.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Materials/Concrete Dark Blue.mat.meta index 57f5a0b8..b3b292d2 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Materials/PrimitivesYellow.mat.meta +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Materials/Concrete Dark Blue.mat.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 565d1aa341c57254c849beb447b60d0d +guid: bbb56ac3cf3c61a46ab3887c0fdbda8f NativeFormatImporter: externalObjects: {} mainObjectFileID: 2100000 diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Materials/Concrete Grey.mat b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Materials/Concrete Grey.mat new file mode 100644 index 00000000..ea59aba8 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Materials/Concrete Grey.mat @@ -0,0 +1,172 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-6113625539559698513 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: 639247ca83abc874e893eb93af2b5e44, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 0 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Concrete Grey + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _METALLICSPECGLOSSMAP + - _NORMALMAP + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 1 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 4, y: 2} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: cdebec39dbf81a14688e1de8d12897b4, type: 3} + 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: 4, y: 2} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 2800000, guid: f3fb518ec70eb4047b1c6ec34933fbce, type: 3} + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _BUILTIN_AlphaClip: 0 + - _BUILTIN_Blend: 0 + - _BUILTIN_CullMode: 2 + - _BUILTIN_DstBlend: 0 + - _BUILTIN_QueueControl: 0 + - _BUILTIN_QueueOffset: 0 + - _BUILTIN_SrcBlend: 1 + - _BUILTIN_Surface: 0 + - _BUILTIN_ZTest: 4 + - _BUILTIN_ZWrite: 1 + - _BUILTIN_ZWriteControl: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _BumpStrength: 1 + - _CastShadows: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0.1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueControl: 0 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Shininess: 0 + - _Smoothness: 0.1 + - _SmoothnessSource: 0 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZTest: 4 + - _ZWrite: 1 + - _ZWriteControl: 0 + m_Colors: + - _BaseColor: {r: 0.82745105, g: 0.9215687, b: 0.9921569, a: 1} + - _BumpOffset: {r: 0, g: 0, b: 0, a: 0} + - _BumpTiling: {r: 4, g: 2, b: 0, a: 0} + - _Color: {r: 0.82745105, g: 0.9215687, b: 0.9921569, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] +--- !u!114 &7210481364470626827 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Materials/RimLight.mat.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Materials/Concrete Grey.mat.meta similarity index 79% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Materials/RimLight.mat.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Materials/Concrete Grey.mat.meta index d1c24e0f..eca0b900 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Materials/RimLight.mat.meta +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Materials/Concrete Grey.mat.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 0b91f81225004e24ca905a5f32567d5d +guid: 842f1b88643f1bb458ba6243088e344e NativeFormatImporter: externalObjects: {} mainObjectFileID: 2100000 diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Materials/Concrete Light Blue.mat b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Materials/Concrete Light Blue.mat new file mode 100644 index 00000000..f12dfb1a --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Materials/Concrete Light Blue.mat @@ -0,0 +1,169 @@ +%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: Concrete Light Blue + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _METALLICSPECGLOSSMAP + - _NORMALMAP + m_InvalidKeywords: + - _METALLICGLOSSMAP + m_LightmapFlags: 4 + m_EnableInstancingVariants: 1 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 4, y: 2} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: cdebec39dbf81a14688e1de8d12897b4, type: 3} + 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: 4, y: 2} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 2800000, guid: f3fb518ec70eb4047b1c6ec34933fbce, type: 3} + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _BUILTIN_AlphaClip: 0 + - _BUILTIN_Blend: 0 + - _BUILTIN_CullMode: 2 + - _BUILTIN_DstBlend: 0 + - _BUILTIN_QueueControl: 0 + - _BUILTIN_QueueOffset: 0 + - _BUILTIN_SrcBlend: 1 + - _BUILTIN_Surface: 0 + - _BUILTIN_ZTest: 4 + - _BUILTIN_ZWrite: 1 + - _BUILTIN_ZWriteControl: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _BumpStrength: 1 + - _CastShadows: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0.1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueControl: 0 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.1 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZTest: 4 + - _ZWrite: 1 + - _ZWriteControl: 0 + m_Colors: + - _BaseColor: {r: 0.7725491, g: 0.82745105, b: 0.8745099, a: 1} + - _BumpOffset: {r: 0, g: 0, b: 0, a: 0} + - _BumpTiling: {r: 4, g: 2, b: 0, a: 0} + - _Color: {r: 0.7725491, g: 0.82745105, b: 0.8745099, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] +--- !u!114 &4635247099857105162 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 +--- !u!114 &4738169426747826149 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: 639247ca83abc874e893eb93af2b5e44, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 0 diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Materials/Concrete Light Blue.mat.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Materials/Concrete Light Blue.mat.meta new file mode 100644 index 00000000..7478be8d --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Materials/Concrete Light Blue.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 830d28b607e09a2479e2005c2eb5c75e +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Materials/RimLight.mat b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Materials/Lit White.mat similarity index 82% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Materials/RimLight.mat rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Materials/Lit White.mat index 0acdf095..6559cf9d 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Materials/RimLight.mat +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Materials/Lit White.mat @@ -1,6 +1,6 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: ---- !u!114 &-8678394163387868965 +--- !u!114 &-799537754957037517 MonoBehaviour: m_ObjectHideFlags: 11 m_CorrespondingSourceObject: {fileID: 0} @@ -13,19 +13,6 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: version: 7 ---- !u!114 &-3392432240476276898 -MonoBehaviour: - m_ObjectHideFlags: 11 - 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: 639247ca83abc874e893eb93af2b5e44, type: 3} - m_Name: - m_EditorClassIdentifier: - version: 0 --- !u!21 &2100000 Material: serializedVersion: 8 @@ -33,24 +20,20 @@ Material: m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: RimLight - m_Shader: {fileID: -6465566751694194690, guid: 4ff4bf42ffc12e34a9c53b2f216f5442, - type: 3} + m_Name: Lit White + m_Shader: {fileID: 4800000, guid: 8d2bb70cbf9db8d4da26e15b26e74248, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: - - _BUILTIN_SURFACE_TYPE_TRANSPARENT - - _SURFACE_TYPE_TRANSPARENT - m_InvalidKeywords: [] + m_ValidKeywords: [] + m_InvalidKeywords: + - _GLOSSYREFLECTIONS_OFF m_LightmapFlags: 4 m_EnableInstancingVariants: 1 m_DoubleSidedGI: 0 - m_CustomRenderQueue: 3002 + m_CustomRenderQueue: -1 stringTagMap: - RenderType: Transparent - disabledShaderPasses: - - SHADOWCASTER - - DepthOnly + RenderType: Opaque + disabledShaderPasses: [] m_LockedProperties: m_SavedProperties: serializedVersion: 3 @@ -118,49 +101,68 @@ Material: - _BUILTIN_AlphaClip: 0 - _BUILTIN_Blend: 0 - _BUILTIN_CullMode: 2 - - _BUILTIN_DstBlend: 10 - - _BUILTIN_QueueControl: 1 + - _BUILTIN_DstBlend: 0 + - _BUILTIN_QueueControl: 0 - _BUILTIN_QueueOffset: 0 - - _BUILTIN_SrcBlend: 5 - - _BUILTIN_Surface: 1 + - _BUILTIN_SrcBlend: 1 + - _BUILTIN_Surface: 0 - _BUILTIN_ZTest: 4 - - _BUILTIN_ZWrite: 0 + - _BUILTIN_ZWrite: 1 - _BUILTIN_ZWriteControl: 0 - _Blend: 0 + - _BlendModePreserveSpecular: 1 - _BumpScale: 1 - - _CastShadows: 0 + - _CastShadows: 1 - _ClearCoatMask: 0 - _ClearCoatSmoothness: 0 - _Cull: 2 - _Cutoff: 0.5 - _DetailAlbedoMapScale: 1 - _DetailNormalMapScale: 1 - - _DstBlend: 10 + - _DstBlend: 0 + - _DstBlendAlpha: 0 - _EnvironmentReflections: 1 - _GlossMapScale: 0 - _Glossiness: 0 + - _GlossinessSource: 0 - _GlossyReflections: 0 - _Metallic: 0 + - _Mode: 0 - _OcclusionStrength: 1 - _Parallax: 0.005 - - _Power: 4 - _QueueControl: 0 - - _QueueOffset: 2 + - _QueueOffset: 0 - _ReceiveShadows: 1 + - _Shininess: 0 - _Smoothness: 0.5 + - _SmoothnessSource: 0 - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 - _SpecularHighlights: 1 - - _SrcBlend: 5 - - _Surface: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _UVSec: 0 - _WorkflowMode: 1 - _ZTest: 4 - - _ZWrite: 0 + - _ZWrite: 1 - _ZWriteControl: 0 m_Colors: - _BaseColor: {r: 1, g: 1, b: 1, a: 1} - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EdgeColor: {r: 1, g: 1, b: 1, a: 0} - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - - _MainColor: {r: 0, g: 0, b: 0, a: 0.7254902} - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} m_BuildTextureStacks: [] +--- !u!114 &8490472560057171736 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: 639247ca83abc874e893eb93af2b5e44, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 0 diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Materials/Lit White.mat.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Materials/Lit White.mat.meta new file mode 100644 index 00000000..f5a958b9 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Materials/Lit White.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fc226930e8fad4c499969204cecfbc05 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Materials/MaterialPipelineHandler.asset b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Materials/MaterialPipelineHandler.asset new file mode 100644 index 00000000..b44ab394 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Materials/MaterialPipelineHandler.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:03e72e53e2f2a0beceabcec994f59812a7aa7860f7b1a02d6a00539f7a8fcc60 +size 1787 diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Materials/MaterialPipelineHandler.asset.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Materials/MaterialPipelineHandler.asset.meta new file mode 100644 index 00000000..858a7b03 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Materials/MaterialPipelineHandler.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fcbe69f7b69204d43b67d30e2487c37c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Models.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Models.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Models.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Models.meta diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Models/Primitive_Blaster.fbx b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Models/Primitive_Blaster.fbx new file mode 100644 index 00000000..3550d763 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Models/Primitive_Blaster.fbx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a7cc9f5a1caaa1d76d55dc5791e68cc497084b9880fafa21b955a3d39b1194e1 +size 102160 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Models/XRControllerLeft.fbx.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Models/Primitive_Blaster.fbx.meta similarity index 85% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Models/XRControllerLeft.fbx.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Models/Primitive_Blaster.fbx.meta index 178f3759..19849aec 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Models/XRControllerLeft.fbx.meta +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Models/Primitive_Blaster.fbx.meta @@ -1,11 +1,16 @@ fileFormatVersion: 2 -guid: be3083a5f26d4e859d594ecbe632f87e +guid: e8cf87fef9298444ca38948b2c8a4073 ModelImporter: serializedVersion: 21300 internalIDToNameTable: [] - externalObjects: {} + externalObjects: + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: lambert1 + second: {fileID: 2100000, guid: 76618f7490c40334fa7b685859587d2e, type: 2} materials: - materialImportMode: 1 + materialImportMode: 2 materialName: 0 materialSearch: 1 materialLocation: 1 @@ -14,7 +19,7 @@ ModelImporter: bakeSimulation: 0 resampleCurves: 1 optimizeGameObjects: 0 - removeConstantScaleCurves: 0 + removeConstantScaleCurves: 1 motionNodeName: rigImportErrors: rigImportWarnings: @@ -44,7 +49,7 @@ ModelImporter: importBlendShapes: 1 importCameras: 1 importLights: 1 - nodeNameCollisionStrategy: 0 + nodeNameCollisionStrategy: 1 fileIdsGeneration: 2 swapUVChannels: 0 generateSecondaryUV: 0 @@ -98,8 +103,8 @@ ModelImporter: animationType: 2 humanoidOversampling: 1 avatarSetup: 0 - addHumanoidExtraRootOnlyWhenUsingAvatar: 0 - remapMaterialsIfMaterialImportModeIsNone: 1 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 additionalBone: 0 userData: assetBundleName: diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Models/Primitive_Blaster_Long.fbx b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Models/Primitive_Blaster_Long.fbx new file mode 100644 index 00000000..30485b29 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Models/Primitive_Blaster_Long.fbx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e6cdfde636489e46cbb1ff7ba717880c4a93b7b4191ca312341ce23af5036c3 +size 108668 diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Models/Primitive_Blaster_Long.fbx.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Models/Primitive_Blaster_Long.fbx.meta new file mode 100644 index 00000000..0f4badac --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Models/Primitive_Blaster_Long.fbx.meta @@ -0,0 +1,111 @@ +fileFormatVersion: 2 +guid: e51d3dbfe79e4c646bb30424a11f23a0 +ModelImporter: + serializedVersion: 21300 + internalIDToNameTable: [] + externalObjects: + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: lambert1.002 + second: {fileID: 2100000, guid: 76618f7490c40334fa7b685859587d2e, type: 2} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 1 + 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 + 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 + 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 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Models/Primitive_Cylinder.fbx b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Models/Primitive_Cylinder.fbx new file mode 100644 index 00000000..095cf200 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Models/Primitive_Cylinder.fbx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f6c584af74d4586e280be697f3b94267717455806e2c5789b6a57e114442847 +size 23232 diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Models/Primitive_Cylinder.fbx.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Models/Primitive_Cylinder.fbx.meta new file mode 100644 index 00000000..4bbe9f90 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Models/Primitive_Cylinder.fbx.meta @@ -0,0 +1,111 @@ +fileFormatVersion: 2 +guid: 73b694bb0f61cd14e9e1ed7b578ac09a +ModelImporter: + serializedVersion: 21300 + internalIDToNameTable: [] + externalObjects: + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: lambert1 + second: {fileID: 2100000, guid: 76618f7490c40334fa7b685859587d2e, type: 2} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 1 + 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: 10 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 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 + 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: 10 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Models/Primitive_Pyramid.fbx b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Models/Primitive_Pyramid.fbx similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Models/Primitive_Pyramid.fbx rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Models/Primitive_Pyramid.fbx diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Models/Primitive_Pyramid.fbx.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Models/Primitive_Pyramid.fbx.meta similarity index 93% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Models/Primitive_Pyramid.fbx.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Models/Primitive_Pyramid.fbx.meta index 1f0141ab..63fbc442 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Models/Primitive_Pyramid.fbx.meta +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Models/Primitive_Pyramid.fbx.meta @@ -3,7 +3,12 @@ guid: 63e02ddb08ce42da868504e1333d48ae ModelImporter: serializedVersion: 21300 internalIDToNameTable: [] - externalObjects: {} + externalObjects: + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: lambert1 + second: {fileID: 2100000, guid: 76618f7490c40334fa7b685859587d2e, type: 2} materials: materialImportMode: 2 materialName: 0 diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Models/Primitive_Tapered_Cylinder.fbx b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Models/Primitive_Tapered_Cylinder.fbx new file mode 100644 index 00000000..3133fc0a --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Models/Primitive_Tapered_Cylinder.fbx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:93f231a7c73b0a20f1c6efaa7f109d2dba60c57db5c42508c9c1b3c4fe69fc83 +size 26380 diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Models/Primitive_Tapered_Cylinder.fbx.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Models/Primitive_Tapered_Cylinder.fbx.meta new file mode 100644 index 00000000..3e883c58 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Models/Primitive_Tapered_Cylinder.fbx.meta @@ -0,0 +1,111 @@ +fileFormatVersion: 2 +guid: e3493855a112e8248a2ea2c9828a51a1 +ModelImporter: + serializedVersion: 21300 + internalIDToNameTable: [] + externalObjects: + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: lambert1 + second: {fileID: 2100000, guid: 76618f7490c40334fa7b685859587d2e, type: 2} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 1 + 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: 10 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 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 + 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: 10 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Models/Primitive_Torus.fbx b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Models/Primitive_Torus.fbx similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Models/Primitive_Torus.fbx rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Models/Primitive_Torus.fbx diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Models/Primitive_Torus.fbx.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Models/Primitive_Torus.fbx.meta similarity index 93% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Models/Primitive_Torus.fbx.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Models/Primitive_Torus.fbx.meta index 835af0b9..5e27b199 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Models/Primitive_Torus.fbx.meta +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Models/Primitive_Torus.fbx.meta @@ -3,7 +3,12 @@ guid: f077c919501a44778a0c2edb6eb1a54a ModelImporter: serializedVersion: 21300 internalIDToNameTable: [] - externalObjects: {} + externalObjects: + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: lambert1 + second: {fileID: 2100000, guid: 76618f7490c40334fa7b685859587d2e, type: 2} materials: materialImportMode: 2 materialName: 0 diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Models/Primitive_Torus_Cut.fbx b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Models/Primitive_Torus_Cut.fbx new file mode 100644 index 00000000..5655137f --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Models/Primitive_Torus_Cut.fbx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:95220e5b4e7f5720dd64e49f68148ef289a8329cd716d65093f7ab28d8a93b28 +size 27856 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Models/XRControllerRight.fbx.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Models/Primitive_Torus_Cut.fbx.meta similarity index 85% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Models/XRControllerRight.fbx.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Models/Primitive_Torus_Cut.fbx.meta index f882b2a8..8de00aff 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Models/XRControllerRight.fbx.meta +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Models/Primitive_Torus_Cut.fbx.meta @@ -1,11 +1,16 @@ fileFormatVersion: 2 -guid: 11cd62256b1d470f922b2c8e6446cc77 +guid: 46c1c422ff6897f49a404b012dc924d3 ModelImporter: serializedVersion: 21300 internalIDToNameTable: [] - externalObjects: {} + externalObjects: + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: lambert1 + second: {fileID: 2100000, guid: 76618f7490c40334fa7b685859587d2e, type: 2} materials: - materialImportMode: 1 + materialImportMode: 2 materialName: 0 materialSearch: 1 materialLocation: 1 @@ -14,7 +19,7 @@ ModelImporter: bakeSimulation: 0 resampleCurves: 1 optimizeGameObjects: 0 - removeConstantScaleCurves: 0 + removeConstantScaleCurves: 1 motionNodeName: rigImportErrors: rigImportWarnings: @@ -44,7 +49,7 @@ ModelImporter: importBlendShapes: 1 importCameras: 1 importLights: 1 - nodeNameCollisionStrategy: 0 + nodeNameCollisionStrategy: 1 fileIdsGeneration: 2 swapUVChannels: 0 generateSecondaryUV: 0 @@ -98,8 +103,8 @@ ModelImporter: animationType: 2 humanoidOversampling: 1 avatarSetup: 0 - addHumanoidExtraRootOnlyWhenUsingAvatar: 0 - remapMaterialsIfMaterialImportModeIsNone: 1 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 additionalBone: 0 userData: assetBundleName: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Models/PushButton.fbx b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Models/PushButton.fbx similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Models/PushButton.fbx rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Models/PushButton.fbx diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Models/PushButton.fbx.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Models/PushButton.fbx.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Models/PushButton.fbx.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Models/PushButton.fbx.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Climb.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Climb.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Climb.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Climb.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Climb/Climb Sample.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Climb/Climb Sample.prefab similarity index 62% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Climb/Climb Sample.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Climb/Climb Sample.prefab index 23107d25..634ce1c6 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Climb/Climb Sample.prefab +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Climb/Climb Sample.prefab @@ -28,151 +28,73 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 883283023377794228} - - {fileID: 1002461780314896473} + - {fileID: 7306256556956711982} - {fileID: 3953970341132373934} + - {fileID: 6357001091881990116} m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0} ---- !u!1001 &3953970341125123640 +--- !u!1001 &3468669171938899717 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: m_TransformParent: {fileID: 3953970342314940649} m_Modifications: - - target: {fileID: 4223635557334411916, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} + - target: {fileID: 5705580279468903836, guid: 1f62bdd0e59688d4bb754afe89fa2f5a, type: 3} + propertyPath: m_Name + value: Single Floor Ladder + objectReference: {fileID: 0} + - target: {fileID: 6144662080407587627, guid: 1f62bdd0e59688d4bb754afe89fa2f5a, type: 3} propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - - target: {fileID: 4223635557334411916, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} + - target: {fileID: 6144662080407587627, guid: 1f62bdd0e59688d4bb754afe89fa2f5a, type: 3} propertyPath: m_LocalPosition.x value: -0 objectReference: {fileID: 0} - - target: {fileID: 4223635557334411916, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} + - target: {fileID: 6144662080407587627, guid: 1f62bdd0e59688d4bb754afe89fa2f5a, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4223635557334411916, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} + - target: {fileID: 6144662080407587627, guid: 1f62bdd0e59688d4bb754afe89fa2f5a, type: 3} propertyPath: m_LocalPosition.z - value: 1.05 + value: 1.0500003 objectReference: {fileID: 0} - - target: {fileID: 4223635557334411916, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} - propertyPath: m_LocalRotation.w - value: 0.99965733 - objectReference: {fileID: 0} - - target: {fileID: 4223635557334411916, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} - propertyPath: m_LocalRotation.x - value: -0.026176924 - objectReference: {fileID: 0} - - target: {fileID: 4223635557334411916, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4223635557334411916, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4223635557334411916, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: -3 - objectReference: {fileID: 0} - - target: {fileID: 4223635557334411916, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4223635557334411916, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 6209309998178532447, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} - propertyPath: m_Name - value: Ladder - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} ---- !u!4 &883283023377794228 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 4223635557334411916, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} - m_PrefabInstance: {fileID: 3953970341125123640} - m_PrefabAsset: {fileID: 0} ---- !u!1001 &3953970342246817792 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 3953970342314940649} - m_Modifications: - - target: {fileID: 2455711654808853570, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} - propertyPath: m_LocalScale.x - value: 3 - objectReference: {fileID: 0} - - target: {fileID: 2455711654808853570, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} - propertyPath: m_LocalScale.y - value: 0.1 - objectReference: {fileID: 0} - - target: {fileID: 2455711654808853570, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} - propertyPath: m_LocalScale.z - value: 2 - objectReference: {fileID: 0} - - target: {fileID: 4266640295717640279, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} - propertyPath: m_Name - value: Teleport Area - objectReference: {fileID: 0} - - target: {fileID: 4266640295717640279, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} - propertyPath: m_IsActive - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4266640295717640281, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} - propertyPath: m_RootOrder - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4266640295717640281, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} - propertyPath: m_LocalPosition.x - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 4266640295717640281, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} - propertyPath: m_LocalPosition.y - value: 3.1 - objectReference: {fileID: 0} - - target: {fileID: 4266640295717640281, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} - propertyPath: m_LocalPosition.z - value: -0.15 - objectReference: {fileID: 0} - - target: {fileID: 4266640295717640281, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + - target: {fileID: 6144662080407587627, guid: 1f62bdd0e59688d4bb754afe89fa2f5a, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 4266640295717640281, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + - target: {fileID: 6144662080407587627, guid: 1f62bdd0e59688d4bb754afe89fa2f5a, type: 3} propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4266640295717640281, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + - target: {fileID: 6144662080407587627, guid: 1f62bdd0e59688d4bb754afe89fa2f5a, type: 3} propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4266640295717640281, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + - target: {fileID: 6144662080407587627, guid: 1f62bdd0e59688d4bb754afe89fa2f5a, type: 3} propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4266640295717640281, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + - target: {fileID: 6144662080407587627, guid: 1f62bdd0e59688d4bb754afe89fa2f5a, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4266640295717640281, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + - target: {fileID: 6144662080407587627, guid: 1f62bdd0e59688d4bb754afe89fa2f5a, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4266640295717640281, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + - target: {fileID: 6144662080407587627, guid: 1f62bdd0e59688d4bb754afe89fa2f5a, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} ---- !u!4 &1002461780314896473 stripped + m_SourcePrefab: {fileID: 100100000, guid: 1f62bdd0e59688d4bb754afe89fa2f5a, type: 3} +--- !u!4 &7306256556956711982 stripped Transform: - m_CorrespondingSourceObject: {fileID: 4266640295717640281, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} - m_PrefabInstance: {fileID: 3953970342246817792} + m_CorrespondingSourceObject: {fileID: 6144662080407587627, guid: 1f62bdd0e59688d4bb754afe89fa2f5a, type: 3} + m_PrefabInstance: {fileID: 3468669171938899717} m_PrefabAsset: {fileID: 0} --- !u!1001 &6888699650741072855 PrefabInstance: @@ -187,7 +109,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 7585962579481558137, guid: a0ea40bd139aedc43b0e8374d6139437, type: 3} propertyPath: m_RootOrder - value: 2 + value: 1 objectReference: {fileID: 0} - target: {fileID: 7585962579481558137, guid: a0ea40bd139aedc43b0e8374d6139437, type: 3} propertyPath: m_LocalPosition.x @@ -240,3 +162,65 @@ Transform: m_CorrespondingSourceObject: {fileID: 7585962579481558137, guid: a0ea40bd139aedc43b0e8374d6139437, type: 3} m_PrefabInstance: {fileID: 6888699650741072855} m_PrefabAsset: {fileID: 0} +--- !u!1001 &8050214715828898099 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 3953970342314940649} + m_Modifications: + - target: {fileID: 3308162198220175456, guid: 652585f331bff7e44afb8fe71ec2119f, type: 3} + propertyPath: m_Name + value: Multi Floor Ladder + objectReference: {fileID: 0} + - target: {fileID: 3999338779507687127, guid: 652585f331bff7e44afb8fe71ec2119f, type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 3999338779507687127, guid: 652585f331bff7e44afb8fe71ec2119f, type: 3} + propertyPath: m_LocalPosition.x + value: -2.2 + objectReference: {fileID: 0} + - target: {fileID: 3999338779507687127, guid: 652585f331bff7e44afb8fe71ec2119f, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3999338779507687127, guid: 652585f331bff7e44afb8fe71ec2119f, type: 3} + propertyPath: m_LocalPosition.z + value: 0.25 + objectReference: {fileID: 0} + - target: {fileID: 3999338779507687127, guid: 652585f331bff7e44afb8fe71ec2119f, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3999338779507687127, guid: 652585f331bff7e44afb8fe71ec2119f, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3999338779507687127, guid: 652585f331bff7e44afb8fe71ec2119f, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3999338779507687127, guid: 652585f331bff7e44afb8fe71ec2119f, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3999338779507687127, guid: 652585f331bff7e44afb8fe71ec2119f, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3999338779507687127, guid: 652585f331bff7e44afb8fe71ec2119f, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3999338779507687127, guid: 652585f331bff7e44afb8fe71ec2119f, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 652585f331bff7e44afb8fe71ec2119f, type: 3} +--- !u!4 &6357001091881990116 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 3999338779507687127, guid: 652585f331bff7e44afb8fe71ec2119f, type: 3} + m_PrefabInstance: {fileID: 8050214715828898099} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Climb/Climb Sample.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Climb/Climb Sample.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Climb/Climb Sample.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Climb/Climb Sample.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Climb/ClimbTeleportReticle.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Climb/ClimbTeleportReticle.prefab new file mode 100644 index 00000000..aafaaeb9 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Climb/ClimbTeleportReticle.prefab @@ -0,0 +1,647 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1231436352321780396 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4544271136228639733} + - component: {fileID: 3733134294308858899} + - component: {fileID: 3153377512821708037} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4544271136228639733 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1231436352321780396} + 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: 9007515192825494133} + 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: 330, y: 330} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3733134294308858899 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1231436352321780396} + m_CullTransparentMesh: 1 +--- !u!114 &3153377512821708037 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1231436352321780396} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0.7490196} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: e45f8f823c093d941855bb23b53b9414, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &3461113883738593307 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8592093655008360416} + m_Layer: 5 + m_Name: Arrow + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8592093655008360416 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3461113883738593307} + 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: 5005453272123457097} + - {fileID: 1823803951432028360} + m_Father: {fileID: 285002964321344741} + m_RootOrder: 2 + 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: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4523418461820257256 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2204478448753199471} + - component: {fileID: 2986821684335916666} + - component: {fileID: 2304449840905880906} + m_Layer: 5 + m_Name: Arrow + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2204478448753199471 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4523418461820257256} + 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: [] + m_Father: {fileID: 656850745989562019} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0.00006103516, y: 225} + m_SizeDelta: {x: 200, y: 200} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2986821684335916666 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4523418461820257256} + m_CullTransparentMesh: 1 +--- !u!114 &2304449840905880906 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4523418461820257256} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0.7490196} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: f8ecc54972abacc46a93f671b0602139, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4733855102705320443 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9007515192825494133} + m_Layer: 5 + m_Name: Timer Progress + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &9007515192825494133 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4733855102705320443} + 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: 4544271136228639733} + - {fileID: 7180036288173734758} + m_Father: {fileID: 285002964321344741} + 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: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &6364497269786421194 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 285002964321344741} + - component: {fileID: 7683931602190211230} + - component: {fileID: 1657001993927382629} + - component: {fileID: 4583518788051481835} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &285002964321344741 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6364497269786421194} + m_LocalRotation: {x: 0, y: 1, z: 0, w: 0} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.001, y: 0.001, z: 0.001} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 9007515192825494133} + - {fileID: 656850745989562019} + - {fileID: 8592093655008360416} + m_Father: {fileID: 6498076632518532997} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 500, y: 600} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!223 &7683931602190211230 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6364497269786421194} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 2 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!114 &1657001993927382629 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6364497269786421194} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 1 +--- !u!114 &4583518788051481835 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6364497269786421194} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!1 &6927910310626014204 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 656850745989562019} + m_Layer: 5 + m_Name: Progress Arrow + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &656850745989562019 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6927910310626014204} + 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: 2204478448753199471} + m_Father: {fileID: 285002964321344741} + m_RootOrder: 1 + 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: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &7560836725041214684 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6498076632518532997} + - component: {fileID: 6060699434838084334} + m_Layer: 0 + m_Name: ClimbTeleportReticle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6498076632518532997 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7560836725041214684} + 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: 285002964321344741} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &6060699434838084334 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7560836725041214684} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e001d3dc91354f8f8c590b4e1d1d3da9, type: 3} + m_Name: + m_EditorClassIdentifier: + m_TimerProgressFilledImage: {fileID: 7858840363066308928} + m_DestinationIndicator: {fileID: 3461113883738593307} + m_PotentialDestinationIndicator: {fileID: 6927910310626014204} + m_PotentialIndicatorUpdateFrequency: 0.1 +--- !u!1 &8291802535000133445 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1823803951432028360} + - component: {fileID: 203882619933263282} + - component: {fileID: 5289661317720192359} + m_Layer: 5 + m_Name: Arrow + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1823803951432028360 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8291802535000133445} + 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: [] + m_Father: {fileID: 8592093655008360416} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0.00006103516, y: 225} + m_SizeDelta: {x: 200, y: 200} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &203882619933263282 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8291802535000133445} + m_CullTransparentMesh: 1 +--- !u!114 &5289661317720192359 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8291802535000133445} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: f8ecc54972abacc46a93f671b0602139, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &8391053872352027772 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7180036288173734758} + - component: {fileID: 621455826683349568} + - component: {fileID: 7858840363066308928} + m_Layer: 5 + m_Name: Progress + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7180036288173734758 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8391053872352027772} + 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: 9007515192825494133} + m_RootOrder: 1 + 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: 300, y: 300} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &621455826683349568 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8391053872352027772} + m_CullTransparentMesh: 1 +--- !u!114 &7858840363066308928 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8391053872352027772} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 2f8349570a152884fb6cf7ebdc8c18b3, type: 3} + m_Type: 3 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &8696404588391070980 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5005453272123457097} + - component: {fileID: 2754733227418273496} + - component: {fileID: 2105042693997049524} + m_Layer: 5 + m_Name: Legibility Mask + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5005453272123457097 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8696404588391070980} + 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: 8592093655008360416} + 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: 225.00002} + m_SizeDelta: {x: 260, y: 150} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2754733227418273496 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8696404588391070980} + m_CullTransparentMesh: 1 +--- !u!114 &2105042693997049524 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8696404588391070980} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0.7490196} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: a85d80c1edb5d2f458d42e79f78055b9, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/XR Interaction Hands Setup.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Climb/ClimbTeleportReticle.prefab.meta similarity index 74% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/XR Interaction Hands Setup.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Climb/ClimbTeleportReticle.prefab.meta index c5eb93c9..f0770fa9 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/XR Interaction Hands Setup.prefab.meta +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Climb/ClimbTeleportReticle.prefab.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 5eccbf4be2c00e94689ee8062e4e7276 +guid: 6eb816e9b7ce30f4cadff3d4ad7ad10c PrefabImporter: externalObjects: {} userData: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Climb/Climbing Wall.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Climb/Climbing Wall.prefab similarity index 98% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Climb/Climbing Wall.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Climb/Climbing Wall.prefab index 8a6f7a9b..9d88bd70 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Climb/Climbing Wall.prefab +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Climb/Climbing Wall.prefab @@ -181,7 +181,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: 830d28b607e09a2479e2005c2eb5c75e, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -279,7 +279,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: 830d28b607e09a2479e2005c2eb5c75e, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -1203,7 +1203,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: 830d28b607e09a2479e2005c2eb5c75e, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -1301,7 +1301,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: 830d28b607e09a2479e2005c2eb5c75e, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -1399,7 +1399,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: 830d28b607e09a2479e2005c2eb5c75e, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -1851,7 +1851,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: 830d28b607e09a2479e2005c2eb5c75e, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -1949,7 +1949,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: 830d28b607e09a2479e2005c2eb5c75e, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -2090,7 +2090,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: 830d28b607e09a2479e2005c2eb5c75e, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -2188,7 +2188,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: 830d28b607e09a2479e2005c2eb5c75e, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -2404,7 +2404,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: 830d28b607e09a2479e2005c2eb5c75e, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -2502,7 +2502,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: 830d28b607e09a2479e2005c2eb5c75e, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -2600,7 +2600,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: 830d28b607e09a2479e2005c2eb5c75e, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -3170,7 +3170,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: 830d28b607e09a2479e2005c2eb5c75e, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -3268,7 +3268,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: 830d28b607e09a2479e2005c2eb5c75e, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -3366,7 +3366,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: 830d28b607e09a2479e2005c2eb5c75e, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -3582,7 +3582,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: 830d28b607e09a2479e2005c2eb5c75e, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -4077,7 +4077,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: 830d28b607e09a2479e2005c2eb5c75e, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -4529,7 +4529,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: 830d28b607e09a2479e2005c2eb5c75e, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -4627,7 +4627,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: 830d28b607e09a2479e2005c2eb5c75e, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -4843,7 +4843,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: 830d28b607e09a2479e2005c2eb5c75e, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -5295,7 +5295,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: 830d28b607e09a2479e2005c2eb5c75e, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -5393,7 +5393,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: 830d28b607e09a2479e2005c2eb5c75e, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -5491,7 +5491,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: 830d28b607e09a2479e2005c2eb5c75e, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -5825,7 +5825,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: 830d28b607e09a2479e2005c2eb5c75e, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -5923,7 +5923,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: 830d28b607e09a2479e2005c2eb5c75e, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -6021,7 +6021,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: 830d28b607e09a2479e2005c2eb5c75e, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -6119,7 +6119,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: 830d28b607e09a2479e2005c2eb5c75e, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -6217,7 +6217,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: 830d28b607e09a2479e2005c2eb5c75e, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -6315,7 +6315,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: 830d28b607e09a2479e2005c2eb5c75e, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -6531,7 +6531,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: 830d28b607e09a2479e2005c2eb5c75e, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -6661,7 +6661,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: 842f1b88643f1bb458ba6243088e344e, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -6747,9 +6747,6 @@ MonoBehaviour: m_EditorClassIdentifier: m_InteractionManager: {fileID: 0} m_Colliders: [] - m_InteractionLayerMask: - serializedVersion: 2 - m_Bits: 4294967295 m_InteractionLayers: m_Bits: 1 m_DistanceCalculationMode: 1 @@ -6808,37 +6805,11 @@ MonoBehaviour: m_StartingHoverFilters: [] m_StartingSelectFilters: [] m_StartingInteractionStrengthFilters: [] - m_OnFirstHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnLastHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectEntered: - m_PersistentCalls: - m_Calls: [] - m_OnSelectExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectCanceled: - m_PersistentCalls: - m_Calls: [] - m_OnActivate: - m_PersistentCalls: - m_Calls: [] - m_OnDeactivate: - m_PersistentCalls: - m_Calls: [] m_ClimbProvider: {fileID: 0} m_ClimbTransform: {fileID: 7585962580643705475} m_FilterInteractionByDistance: 1 m_MaxInteractionDistance: 0.15 + m_ClimbAssistanceTeleportVolume: {fileID: 0} m_ClimbSettingsOverride: m_UseConstant: 0 m_ConstantValue: @@ -7092,7 +7063,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: 830d28b607e09a2479e2005c2eb5c75e, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -7544,7 +7515,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: 830d28b607e09a2479e2005c2eb5c75e, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -7642,7 +7613,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: 830d28b607e09a2479e2005c2eb5c75e, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -7740,7 +7711,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: 830d28b607e09a2479e2005c2eb5c75e, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -7838,7 +7809,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: 830d28b607e09a2479e2005c2eb5c75e, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -8097,7 +8068,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: 830d28b607e09a2479e2005c2eb5c75e, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Climb/Climbing Wall.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Climb/Climbing Wall.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Climb/Climbing Wall.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Climb/Climbing Wall.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Climb/Ladder.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Climb/Ladder.prefab similarity index 97% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Climb/Ladder.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Climb/Ladder.prefab index c8b9cbed..089eb68e 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Climb/Ladder.prefab +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Climb/Ladder.prefab @@ -118,9 +118,6 @@ MonoBehaviour: m_EditorClassIdentifier: m_InteractionManager: {fileID: 0} m_Colliders: [] - m_InteractionLayerMask: - serializedVersion: 2 - m_Bits: 4294967295 m_InteractionLayers: m_Bits: 1 m_DistanceCalculationMode: 2 @@ -179,37 +176,11 @@ MonoBehaviour: m_StartingHoverFilters: [] m_StartingSelectFilters: [] m_StartingInteractionStrengthFilters: [] - m_OnFirstHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnLastHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectEntered: - m_PersistentCalls: - m_Calls: [] - m_OnSelectExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectCanceled: - m_PersistentCalls: - m_Calls: [] - m_OnActivate: - m_PersistentCalls: - m_Calls: [] - m_OnDeactivate: - m_PersistentCalls: - m_Calls: [] m_ClimbProvider: {fileID: 0} m_ClimbTransform: {fileID: 346412486727514802} m_FilterInteractionByDistance: 1 m_MaxInteractionDistance: 0.1 + m_ClimbAssistanceTeleportVolume: {fileID: 0} m_ClimbSettingsOverride: m_UseConstant: 1 m_ConstantValue: @@ -463,7 +434,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: fc226930e8fad4c499969204cecfbc05, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -561,7 +532,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: fc226930e8fad4c499969204cecfbc05, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -659,7 +630,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: fc226930e8fad4c499969204cecfbc05, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -758,7 +729,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: fc226930e8fad4c499969204cecfbc05, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -889,7 +860,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: fc226930e8fad4c499969204cecfbc05, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -975,9 +946,6 @@ MonoBehaviour: m_EditorClassIdentifier: m_InteractionManager: {fileID: 0} m_Colliders: [] - m_InteractionLayerMask: - serializedVersion: 2 - m_Bits: 4294967295 m_InteractionLayers: m_Bits: 1 m_DistanceCalculationMode: 2 @@ -1036,37 +1004,11 @@ MonoBehaviour: m_StartingHoverFilters: [] m_StartingSelectFilters: [] m_StartingInteractionStrengthFilters: [] - m_OnFirstHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnLastHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectEntered: - m_PersistentCalls: - m_Calls: [] - m_OnSelectExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectCanceled: - m_PersistentCalls: - m_Calls: [] - m_OnActivate: - m_PersistentCalls: - m_Calls: [] - m_OnDeactivate: - m_PersistentCalls: - m_Calls: [] m_ClimbProvider: {fileID: 0} m_ClimbTransform: {fileID: 8764721392725842676} m_FilterInteractionByDistance: 1 m_MaxInteractionDistance: 0.1 + m_ClimbAssistanceTeleportVolume: {fileID: 0} m_ClimbSettingsOverride: m_UseConstant: 1 m_ConstantValue: @@ -1238,7 +1180,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: fc226930e8fad4c499969204cecfbc05, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -1573,7 +1515,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: fc226930e8fad4c499969204cecfbc05, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -2026,7 +1968,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: fc226930e8fad4c499969204cecfbc05, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -2124,7 +2066,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: fc226930e8fad4c499969204cecfbc05, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -2611,7 +2553,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: fc226930e8fad4c499969204cecfbc05, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -2710,7 +2652,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: fc226930e8fad4c499969204cecfbc05, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -2809,7 +2751,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: fc226930e8fad4c499969204cecfbc05, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -3026,7 +2968,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: fc226930e8fad4c499969204cecfbc05, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -3125,7 +3067,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: fc226930e8fad4c499969204cecfbc05, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Climb/Ladder.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Climb/Ladder.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Climb/Ladder.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Climb/Ladder.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Climb/Multi Floor Ladder.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Climb/Multi Floor Ladder.prefab new file mode 100644 index 00000000..49bf1490 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Climb/Multi Floor Ladder.prefab @@ -0,0 +1,932 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &3214955352098038543 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2727044179811942478} + - component: {fileID: 3027285473455007335} + - component: {fileID: 3769214372110669680} + m_Layer: 0 + m_Name: Teleport Volume + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2727044179811942478 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3214955352098038543} + 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: 3999338779507687127} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &3027285473455007335 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3214955352098038543} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c299748de92a4b4f9193a4c71b74c495, type: 3} + m_Name: + m_EditorClassIdentifier: + m_InteractionManager: {fileID: 0} + m_Colliders: + - {fileID: 3769214372110669680} + m_InteractionLayers: + m_Bits: 2147483648 + m_DistanceCalculationMode: 1 + m_SelectMode: 0 + m_FocusMode: 1 + m_CustomReticle: {fileID: 7560836725041214684, guid: 6eb816e9b7ce30f4cadff3d4ad7ad10c, type: 3} + m_AllowGazeInteraction: 0 + m_AllowGazeSelect: 0 + m_OverrideGazeTimeToSelect: 0 + m_GazeTimeToSelect: 0.5 + m_OverrideTimeToAutoDeselectGaze: 0 + m_TimeToAutoDeselectGaze: 3 + m_AllowGazeAssistance: 0 + m_FirstHoverEntered: + m_PersistentCalls: + m_Calls: [] + m_LastHoverExited: + m_PersistentCalls: + m_Calls: [] + m_HoverEntered: + m_PersistentCalls: + m_Calls: [] + m_HoverExited: + m_PersistentCalls: + m_Calls: [] + m_FirstSelectEntered: + m_PersistentCalls: + m_Calls: [] + m_LastSelectExited: + m_PersistentCalls: + m_Calls: [] + m_SelectEntered: + m_PersistentCalls: + m_Calls: [] + m_SelectExited: + m_PersistentCalls: + m_Calls: [] + m_FirstFocusEntered: + m_PersistentCalls: + m_Calls: [] + m_LastFocusExited: + m_PersistentCalls: + m_Calls: [] + m_FocusEntered: + m_PersistentCalls: + m_Calls: [] + m_FocusExited: + m_PersistentCalls: + m_Calls: [] + m_Activated: + m_PersistentCalls: + m_Calls: [] + m_Deactivated: + m_PersistentCalls: + m_Calls: [] + m_StartingHoverFilters: [] + m_StartingSelectFilters: [] + m_StartingInteractionStrengthFilters: [] + m_TeleportationProvider: {fileID: 0} + m_MatchOrientation: 1 + m_MatchDirectionalInput: 0 + m_TeleportTrigger: 0 + m_FilterSelectionByHitNormal: 0 + m_UpNormalToleranceDegrees: 30 + m_Teleporting: + m_PersistentCalls: + m_Calls: [] + m_AnchorTransforms: + - {fileID: 5275546299015321662} + - {fileID: 6677850379965411331} + - {fileID: 7131749450783531291} + m_DestinationEvaluationSettings: + m_UseConstant: 0 + m_ConstantValue: + m_EnableDestinationEvaluationDelay: 0 + m_DestinationEvaluationDelayTime: 1 + m_PollForDestinationChange: 0 + m_DestinationPollFrequency: 1 + m_DestinationFilterObject: {fileID: 0} + m_Variable: {fileID: 11400000, guid: 8d66c9762e1587643a1164368c8a2c58, type: 2} +--- !u!65 &3769214372110669680 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3214955352098038543} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 0.8, y: 4.473955, z: 0.48763496} + m_Center: {x: 3.8437254e-16, y: 2.3082204, z: -0.097952105} +--- !u!1 &3308162198220175456 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3999338779507687127} + m_Layer: 0 + m_Name: Multi Floor Ladder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3999338779507687127 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3308162198220175456} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2.2, y: 0, z: 0.25} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7775037913137697211} + - {fileID: 2727044179811942478} + - {fileID: 3296004839132549566} + - {fileID: 4046271039184976259} + - {fileID: 464525861229668507} + - {fileID: 4372273583476268136} + - {fileID: 7659782247511649622} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &548112142276183089 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 3999338779507687127} + m_Modifications: + - target: {fileID: 2455711654808853570, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_LocalScale.x + value: 2.4 + objectReference: {fileID: 0} + - target: {fileID: 2455711654808853570, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_LocalScale.y + value: 0.1 + objectReference: {fileID: 0} + - target: {fileID: 2455711654808853570, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_LocalScale.z + value: 1.2 + objectReference: {fileID: 0} + - target: {fileID: 4266640295717640279, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_Name + value: Middle Platform + objectReference: {fileID: 0} + - target: {fileID: 4266640295717640279, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4266640295717640281, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_RootOrder + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 4266640295717640281, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_LocalPosition.x + value: -0.5 + objectReference: {fileID: 0} + - target: {fileID: 4266640295717640281, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_LocalPosition.y + value: 2.05 + objectReference: {fileID: 0} + - target: {fileID: 4266640295717640281, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_LocalPosition.z + value: -0.76 + objectReference: {fileID: 0} + - target: {fileID: 4266640295717640281, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4266640295717640281, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4266640295717640281, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4266640295717640281, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4266640295717640281, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4266640295717640281, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4266640295717640281, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} +--- !u!4 &4372273583476268136 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4266640295717640281, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + m_PrefabInstance: {fileID: 548112142276183089} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1576620109244106404 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 4046271039184976259} + m_Modifications: + - target: {fileID: 3774509235512974894, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_Name + value: Interaction Affordance + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7396278978564332023, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_Renderer + value: + objectReference: {fileID: 8500052472111792655} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} +--- !u!1 &2414078401763940490 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 3774509235512974894, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + m_PrefabInstance: {fileID: 1576620109244106404} + m_PrefabAsset: {fileID: 0} +--- !u!114 &4685143306265189663 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2414078401763940490} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7da98a0edd844d83b9b4de3f91de030c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ContainingTeleportVolume: {fileID: 3027285473455007335} +--- !u!1001 &2820227708616365311 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 464525861229668507} + m_Modifications: + - target: {fileID: 3774509235512974894, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_Name + value: Interaction Affordance + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7396278978564332023, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_Renderer + value: + objectReference: {fileID: 5450249920699568919} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} +--- !u!1 &1387871808273009361 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 3774509235512974894, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + m_PrefabInstance: {fileID: 2820227708616365311} + m_PrefabAsset: {fileID: 0} +--- !u!114 &5208464857424882149 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1387871808273009361} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7da98a0edd844d83b9b4de3f91de030c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ContainingTeleportVolume: {fileID: 3027285473455007335} +--- !u!1001 &5871328185984513295 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 3999338779507687127} + m_Modifications: + - target: {fileID: 2455711654808853570, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_LocalScale.x + value: 2.4 + objectReference: {fileID: 0} + - target: {fileID: 2455711654808853570, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_LocalScale.y + value: 0.1 + objectReference: {fileID: 0} + - target: {fileID: 2455711654808853570, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_LocalScale.z + value: 1.2 + objectReference: {fileID: 0} + - target: {fileID: 4266640295717640279, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_Name + value: Top Platform + objectReference: {fileID: 0} + - target: {fileID: 4266640295717640279, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4266640295717640281, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_RootOrder + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 4266640295717640281, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_LocalPosition.x + value: -0.5 + objectReference: {fileID: 0} + - target: {fileID: 4266640295717640281, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_LocalPosition.y + value: 4.05 + objectReference: {fileID: 0} + - target: {fileID: 4266640295717640281, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_LocalPosition.z + value: -0.86 + objectReference: {fileID: 0} + - target: {fileID: 4266640295717640281, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4266640295717640281, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4266640295717640281, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4266640295717640281, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4266640295717640281, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4266640295717640281, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4266640295717640281, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} +--- !u!4 &7659782247511649622 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4266640295717640281, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + m_PrefabInstance: {fileID: 5871328185984513295} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &5871328186975140663 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 3999338779507687127} + m_Modifications: + - target: {fileID: 2478550239312682541, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} + propertyPath: m_ClimbAssistanceTeleportVolume + value: + objectReference: {fileID: 3027285473455007335} + - target: {fileID: 4223635557334411916, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4223635557334411916, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} + propertyPath: m_LocalScale.x + value: 1.2 + objectReference: {fileID: 0} + - target: {fileID: 4223635557334411916, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} + propertyPath: m_LocalScale.y + value: 1.3 + objectReference: {fileID: 0} + - target: {fileID: 4223635557334411916, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} + propertyPath: m_LocalScale.z + value: 1.2 + objectReference: {fileID: 0} + - target: {fileID: 4223635557334411916, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4223635557334411916, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4223635557334411916, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4223635557334411916, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} + propertyPath: m_LocalRotation.w + value: 0.99965733 + objectReference: {fileID: 0} + - target: {fileID: 4223635557334411916, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} + propertyPath: m_LocalRotation.x + value: -0.026176924 + objectReference: {fileID: 0} + - target: {fileID: 4223635557334411916, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4223635557334411916, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4223635557334411916, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: -3 + objectReference: {fileID: 0} + - target: {fileID: 4223635557334411916, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4223635557334411916, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4410526664489999667, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} + propertyPath: m_ClimbAssistanceTeleportVolume + value: + objectReference: {fileID: 3027285473455007335} + - target: {fileID: 6209309998178532447, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} + propertyPath: m_Name + value: Ladder + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} +--- !u!4 &7775037913137697211 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4223635557334411916, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} + m_PrefabInstance: {fileID: 5871328186975140663} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &6585803985532623206 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 3999338779507687127} + m_Modifications: + - target: {fileID: 268508938848858109, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_Name + value: Top Anchor + objectReference: {fileID: 0} + - target: {fileID: 6707876468356395517, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 6707876468356395517, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6707876468356395517, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_LocalPosition.y + value: 4.1 + objectReference: {fileID: 0} + - target: {fileID: 6707876468356395517, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_LocalPosition.z + value: -0.84 + objectReference: {fileID: 0} + - target: {fileID: 6707876468356395517, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6707876468356395517, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6707876468356395517, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6707876468356395517, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6707876468356395517, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6707876468356395517, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6707876468356395517, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8313103746164989982, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_Size.x + value: 1.15 + objectReference: {fileID: 0} + - target: {fileID: 8313103746164989982, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_Size.y + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 8313103746164989982, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_Size.z + value: 1.15 + objectReference: {fileID: 0} + - target: {fileID: 8313103746164989982, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_Center.y + value: 0.1 + objectReference: {fileID: 0} + - target: {fileID: 9118070405729309043, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} +--- !u!4 &464525861229668507 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 6707876468356395517, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + m_PrefabInstance: {fileID: 6585803985532623206} + m_PrefabAsset: {fileID: 0} +--- !u!23 &5450249920699568919 stripped +MeshRenderer: + m_CorrespondingSourceObject: {fileID: 1208746707607620209, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + m_PrefabInstance: {fileID: 6585803985532623206} + m_PrefabAsset: {fileID: 0} +--- !u!4 &7131749450783531291 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4151308971900942461, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + m_PrefabInstance: {fileID: 6585803985532623206} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &6873060775456768107 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 3296004839132549566} + m_Modifications: + - target: {fileID: 3774509235512974894, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_Name + value: Interaction Affordance + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7396278978564332023, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_Renderer + value: + objectReference: {fileID: 6948135387403610674} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} +--- !u!1 &7711223019295415877 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 3774509235512974894, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + m_PrefabInstance: {fileID: 6873060775456768107} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1928933381452029862 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7711223019295415877} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7da98a0edd844d83b9b4de3f91de030c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ContainingTeleportVolume: {fileID: 3027285473455007335} +--- !u!1001 &7291349829325129854 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 3999338779507687127} + m_Modifications: + - target: {fileID: 268508938848858109, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_Name + value: Middle Anchor + objectReference: {fileID: 0} + - target: {fileID: 6707876468356395517, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 6707876468356395517, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_LocalPosition.x + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 6707876468356395517, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_LocalPosition.y + value: 2.1 + objectReference: {fileID: 0} + - target: {fileID: 6707876468356395517, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_LocalPosition.z + value: -0.74 + objectReference: {fileID: 0} + - target: {fileID: 6707876468356395517, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6707876468356395517, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6707876468356395517, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6707876468356395517, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6707876468356395517, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6707876468356395517, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6707876468356395517, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8313103746164989982, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_Size.x + value: 1.15 + objectReference: {fileID: 0} + - target: {fileID: 8313103746164989982, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_Size.y + value: 0.3 + objectReference: {fileID: 0} + - target: {fileID: 8313103746164989982, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_Size.z + value: 1.15 + objectReference: {fileID: 0} + - target: {fileID: 8313103746164989982, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_Center.y + value: 0.15 + objectReference: {fileID: 0} + - target: {fileID: 9118070405729309043, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} +--- !u!4 &4046271039184976259 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 6707876468356395517, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + m_PrefabInstance: {fileID: 7291349829325129854} + m_PrefabAsset: {fileID: 0} +--- !u!4 &6677850379965411331 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4151308971900942461, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + m_PrefabInstance: {fileID: 7291349829325129854} + m_PrefabAsset: {fileID: 0} +--- !u!23 &8500052472111792655 stripped +MeshRenderer: + m_CorrespondingSourceObject: {fileID: 1208746707607620209, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + m_PrefabInstance: {fileID: 7291349829325129854} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &8118557376516415555 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 3999338779507687127} + m_Modifications: + - target: {fileID: 268508938848858109, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_Name + value: Bottom Anchor + objectReference: {fileID: 0} + - target: {fileID: 6707876468356395517, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 6707876468356395517, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6707876468356395517, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6707876468356395517, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_LocalPosition.z + value: 0.5550009 + objectReference: {fileID: 0} + - target: {fileID: 6707876468356395517, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_LocalRotation.w + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6707876468356395517, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6707876468356395517, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_LocalRotation.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6707876468356395517, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6707876468356395517, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6707876468356395517, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 180 + objectReference: {fileID: 0} + - target: {fileID: 6707876468356395517, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8313103746164989982, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_Size.x + value: 1.15 + objectReference: {fileID: 0} + - target: {fileID: 8313103746164989982, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_Size.y + value: 0.3 + objectReference: {fileID: 0} + - target: {fileID: 8313103746164989982, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_Size.z + value: 1.15 + objectReference: {fileID: 0} + - target: {fileID: 8313103746164989982, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_Center.y + value: 0.15 + objectReference: {fileID: 0} + - target: {fileID: 9118070405729309043, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} +--- !u!4 &3296004839132549566 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 6707876468356395517, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + m_PrefabInstance: {fileID: 8118557376516415555} + m_PrefabAsset: {fileID: 0} +--- !u!4 &5275546299015321662 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4151308971900942461, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + m_PrefabInstance: {fileID: 8118557376516415555} + m_PrefabAsset: {fileID: 0} +--- !u!23 &6948135387403610674 stripped +MeshRenderer: + m_CorrespondingSourceObject: {fileID: 1208746707607620209, guid: 037ba65d346be2a48ad006b9a9a3873e, type: 3} + m_PrefabInstance: {fileID: 8118557376516415555} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/XR Interaction Setup.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Climb/Multi Floor Ladder.prefab.meta similarity index 74% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/XR Interaction Setup.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Climb/Multi Floor Ladder.prefab.meta index a1e930c7..05e98a65 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/XR Interaction Setup.prefab.meta +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Climb/Multi Floor Ladder.prefab.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 895f6f3c2d334633b5800312285058d2 +guid: 652585f331bff7e44afb8fe71ec2119f PrefabImporter: externalObjects: {} userData: diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Climb/Single Floor Ladder.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Climb/Single Floor Ladder.prefab new file mode 100644 index 00000000..3960e92f --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Climb/Single Floor Ladder.prefab @@ -0,0 +1,388 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &2862128434192091292 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4249841530267949295} + m_Layer: 0 + m_Name: Top Anchor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4249841530267949295 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2862128434192091292} + m_LocalRotation: {x: -0, y: 1, z: -0, w: 0} + m_LocalPosition: {x: 0, y: 3.2, z: -0.781} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6144662080407587627} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} +--- !u!1 &5646221108877547251 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5124763011978032562} + - component: {fileID: 5243787471854130075} + - component: {fileID: 6235313352995381900} + m_Layer: 0 + m_Name: Teleport Volume + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5124763011978032562 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5646221108877547251} + 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: 6144662080407587627} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &5243787471854130075 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5646221108877547251} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c299748de92a4b4f9193a4c71b74c495, type: 3} + m_Name: + m_EditorClassIdentifier: + m_InteractionManager: {fileID: 0} + m_Colliders: + - {fileID: 6235313352995381900} + m_InteractionLayers: + m_Bits: 2147483648 + m_DistanceCalculationMode: 1 + m_SelectMode: 0 + m_FocusMode: 1 + m_CustomReticle: {fileID: 7560836725041214684, guid: 6eb816e9b7ce30f4cadff3d4ad7ad10c, type: 3} + m_AllowGazeInteraction: 0 + m_AllowGazeSelect: 0 + m_OverrideGazeTimeToSelect: 0 + m_GazeTimeToSelect: 0.5 + m_OverrideTimeToAutoDeselectGaze: 0 + m_TimeToAutoDeselectGaze: 3 + m_AllowGazeAssistance: 0 + m_FirstHoverEntered: + m_PersistentCalls: + m_Calls: [] + m_LastHoverExited: + m_PersistentCalls: + m_Calls: [] + m_HoverEntered: + m_PersistentCalls: + m_Calls: [] + m_HoverExited: + m_PersistentCalls: + m_Calls: [] + m_FirstSelectEntered: + m_PersistentCalls: + m_Calls: [] + m_LastSelectExited: + m_PersistentCalls: + m_Calls: [] + m_SelectEntered: + m_PersistentCalls: + m_Calls: [] + m_SelectExited: + m_PersistentCalls: + m_Calls: [] + m_FirstFocusEntered: + m_PersistentCalls: + m_Calls: [] + m_LastFocusExited: + m_PersistentCalls: + m_Calls: [] + m_FocusEntered: + m_PersistentCalls: + m_Calls: [] + m_FocusExited: + m_PersistentCalls: + m_Calls: [] + m_Activated: + m_PersistentCalls: + m_Calls: [] + m_Deactivated: + m_PersistentCalls: + m_Calls: [] + m_StartingHoverFilters: [] + m_StartingSelectFilters: [] + m_StartingInteractionStrengthFilters: [] + m_TeleportationProvider: {fileID: 0} + m_MatchOrientation: 1 + m_MatchDirectionalInput: 0 + m_TeleportTrigger: 0 + m_FilterSelectionByHitNormal: 0 + m_UpNormalToleranceDegrees: 30 + m_Teleporting: + m_PersistentCalls: + m_Calls: [] + m_AnchorTransforms: + - {fileID: 8945883054039185536} + - {fileID: 4249841530267949295} + m_DestinationEvaluationSettings: + m_UseConstant: 1 + m_ConstantValue: + m_EnableDestinationEvaluationDelay: 1 + m_DestinationEvaluationDelayTime: 1 + m_PollForDestinationChange: 0 + m_DestinationPollFrequency: 1 + m_DestinationFilterObject: {fileID: 0} + m_Variable: {fileID: 0} +--- !u!65 &6235313352995381900 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5646221108877547251} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 0.8, y: 3.3715928, z: 0.48763496} + m_Center: {x: 3.8437254e-16, y: 1.7570392, z: -0.097952105} +--- !u!1 &5705580279468903836 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6144662080407587627} + m_Layer: 0 + m_Name: Single Floor Ladder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6144662080407587627 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5705580279468903836} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 1.0500003} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 657740211026551879} + - {fileID: 5124763011978032562} + - {fileID: 8945883054039185536} + - {fileID: 4249841530267949295} + - {fileID: 615792120950184106} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &6584279440624949942 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8945883054039185536} + m_Layer: 0 + m_Name: Bottom Anchor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8945883054039185536 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6584279440624949942} + m_LocalRotation: {x: -0, y: -0, z: -0, w: -1} + m_LocalPosition: {x: 0, y: 0.049999997, z: 0.5550015} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6144662080407587627} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} +--- !u!1001 &3728308782907146483 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 6144662080407587627} + m_Modifications: + - target: {fileID: 2455711654808853570, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_LocalScale.x + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 2455711654808853570, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_LocalScale.y + value: 0.1 + objectReference: {fileID: 0} + - target: {fileID: 2455711654808853570, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_LocalScale.z + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 4266640295717640279, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_Name + value: Platform + objectReference: {fileID: 0} + - target: {fileID: 4266640295717640279, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4266640295717640281, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 4266640295717640281, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4266640295717640281, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_LocalPosition.y + value: 3.1 + objectReference: {fileID: 0} + - target: {fileID: 4266640295717640281, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_LocalPosition.z + value: -1.2000004 + objectReference: {fileID: 0} + - target: {fileID: 4266640295717640281, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4266640295717640281, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4266640295717640281, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4266640295717640281, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4266640295717640281, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4266640295717640281, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4266640295717640281, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} +--- !u!4 &615792120950184106 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4266640295717640281, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + m_PrefabInstance: {fileID: 3728308782907146483} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &3728308784063975115 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 6144662080407587627} + m_Modifications: + - target: {fileID: 2478550239312682541, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} + propertyPath: m_ClimbAssistanceTeleportVolume + value: + objectReference: {fileID: 5243787471854130075} + - target: {fileID: 4223635557334411916, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4223635557334411916, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4223635557334411916, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4223635557334411916, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4223635557334411916, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} + propertyPath: m_LocalRotation.w + value: 0.99965733 + objectReference: {fileID: 0} + - target: {fileID: 4223635557334411916, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} + propertyPath: m_LocalRotation.x + value: -0.026176924 + objectReference: {fileID: 0} + - target: {fileID: 4223635557334411916, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4223635557334411916, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4223635557334411916, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: -3 + objectReference: {fileID: 0} + - target: {fileID: 4223635557334411916, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4223635557334411916, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4410526664489999667, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} + propertyPath: m_ClimbAssistanceTeleportVolume + value: + objectReference: {fileID: 5243787471854130075} + - target: {fileID: 6209309998178532447, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} + propertyPath: m_Name + value: Ladder + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} +--- !u!4 &657740211026551879 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4223635557334411916, guid: b3830b3b2f190ee46a9c88433e985221, type: 3} + m_PrefabInstance: {fileID: 3728308784063975115} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/XR Device Simulator UI.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Climb/Single Floor Ladder.prefab.meta similarity index 74% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/XR Device Simulator UI.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Climb/Single Floor Ladder.prefab.meta index cf14b3a7..e528c8ab 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/XR Device Simulator UI.prefab.meta +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Climb/Single Floor Ladder.prefab.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: ead42e0472b7547fbba6c229aeaf37d3 +guid: 1f62bdd0e59688d4bb754afe89fa2f5a PrefabImporter: externalObjects: {} userData: diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Far Grab Samples.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Far Grab Samples.prefab new file mode 100644 index 00000000..59391dbc --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Far Grab Samples.prefab @@ -0,0 +1,222 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1017698943250256213 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1017698943250256298} + m_Layer: 0 + m_Name: Far Grab Samples + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1017698943250256298 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1017698943250256213} + 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: 5032153987230353887} + - {fileID: 5151981248583452152} + - {fileID: 177564888636506461} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &1017698943613317800 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1017698943250256298} + m_Modifications: + - target: {fileID: 5287248408654313296, guid: 3549fdaf258e11846b85a316c16c699c, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5287248408654313296, guid: 3549fdaf258e11846b85a316c16c699c, type: 3} + propertyPath: m_LocalPosition.x + value: -1.4873999 + objectReference: {fileID: 0} + - target: {fileID: 5287248408654313296, guid: 3549fdaf258e11846b85a316c16c699c, type: 3} + propertyPath: m_LocalPosition.y + value: 1.2473108 + objectReference: {fileID: 0} + - target: {fileID: 5287248408654313296, guid: 3549fdaf258e11846b85a316c16c699c, type: 3} + propertyPath: m_LocalPosition.z + value: -4.4574575 + objectReference: {fileID: 0} + - target: {fileID: 5287248408654313296, guid: 3549fdaf258e11846b85a316c16c699c, type: 3} + propertyPath: m_LocalRotation.w + value: 0.56098557 + objectReference: {fileID: 0} + - target: {fileID: 5287248408654313296, guid: 3549fdaf258e11846b85a316c16c699c, type: 3} + propertyPath: m_LocalRotation.x + value: 0.4304593 + objectReference: {fileID: 0} + - target: {fileID: 5287248408654313296, guid: 3549fdaf258e11846b85a316c16c699c, type: 3} + propertyPath: m_LocalRotation.y + value: 0.4304593 + objectReference: {fileID: 0} + - target: {fileID: 5287248408654313296, guid: 3549fdaf258e11846b85a316c16c699c, type: 3} + propertyPath: m_LocalRotation.z + value: 0.56098557 + objectReference: {fileID: 0} + - target: {fileID: 5287248408654313296, guid: 3549fdaf258e11846b85a316c16c699c, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5287248408654313296, guid: 3549fdaf258e11846b85a316c16c699c, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 75 + objectReference: {fileID: 0} + - target: {fileID: 5287248408654313296, guid: 3549fdaf258e11846b85a316c16c699c, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 90 + objectReference: {fileID: 0} + - target: {fileID: 6689992741278781415, guid: 3549fdaf258e11846b85a316c16c699c, type: 3} + propertyPath: m_Name + value: Blaser + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 3549fdaf258e11846b85a316c16c699c, type: 3} +--- !u!4 &5151981248583452152 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 5287248408654313296, guid: 3549fdaf258e11846b85a316c16c699c, type: 3} + m_PrefabInstance: {fileID: 1017698943613317800} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1118486182725821730 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1017698943250256298} + m_Modifications: + - target: {fileID: 5354890054544157949, guid: fe7fcf44eedd467489de26ce92577bc3, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5354890054544157949, guid: fe7fcf44eedd467489de26ce92577bc3, type: 3} + propertyPath: m_LocalPosition.x + value: -2.0528674 + objectReference: {fileID: 0} + - target: {fileID: 5354890054544157949, guid: fe7fcf44eedd467489de26ce92577bc3, type: 3} + propertyPath: m_LocalPosition.y + value: 1.17 + objectReference: {fileID: 0} + - target: {fileID: 5354890054544157949, guid: fe7fcf44eedd467489de26ce92577bc3, type: 3} + propertyPath: m_LocalPosition.z + value: -4.5 + objectReference: {fileID: 0} + - target: {fileID: 5354890054544157949, guid: fe7fcf44eedd467489de26ce92577bc3, type: 3} + propertyPath: m_LocalRotation.w + value: 0.56098557 + objectReference: {fileID: 0} + - target: {fileID: 5354890054544157949, guid: fe7fcf44eedd467489de26ce92577bc3, type: 3} + propertyPath: m_LocalRotation.x + value: 0.4304593 + objectReference: {fileID: 0} + - target: {fileID: 5354890054544157949, guid: fe7fcf44eedd467489de26ce92577bc3, type: 3} + propertyPath: m_LocalRotation.y + value: 0.4304593 + objectReference: {fileID: 0} + - target: {fileID: 5354890054544157949, guid: fe7fcf44eedd467489de26ce92577bc3, type: 3} + propertyPath: m_LocalRotation.z + value: 0.56098557 + objectReference: {fileID: 0} + - target: {fileID: 5354890054544157949, guid: fe7fcf44eedd467489de26ce92577bc3, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5354890054544157949, guid: fe7fcf44eedd467489de26ce92577bc3, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 75 + objectReference: {fileID: 0} + - target: {fileID: 5354890054544157949, guid: fe7fcf44eedd467489de26ce92577bc3, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 90 + objectReference: {fileID: 0} + - target: {fileID: 6910721658033247306, guid: fe7fcf44eedd467489de26ce92577bc3, type: 3} + propertyPath: m_Name + value: Blaser-Long + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: fe7fcf44eedd467489de26ce92577bc3, type: 3} +--- !u!4 &5032153987230353887 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 5354890054544157949, guid: fe7fcf44eedd467489de26ce92577bc3, type: 3} + m_PrefabInstance: {fileID: 1118486182725821730} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &4304486995001665080 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1017698943250256298} + m_Modifications: + - target: {fileID: 4164222508261582693, guid: 833cb867d186193418fc107735ae3139, type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 4164222508261582693, guid: 833cb867d186193418fc107735ae3139, type: 3} + propertyPath: m_LocalPosition.x + value: -0.95 + objectReference: {fileID: 0} + - target: {fileID: 4164222508261582693, guid: 833cb867d186193418fc107735ae3139, type: 3} + propertyPath: m_LocalPosition.y + value: 1.18 + objectReference: {fileID: 0} + - target: {fileID: 4164222508261582693, guid: 833cb867d186193418fc107735ae3139, type: 3} + propertyPath: m_LocalPosition.z + value: -4.578 + objectReference: {fileID: 0} + - target: {fileID: 4164222508261582693, guid: 833cb867d186193418fc107735ae3139, type: 3} + propertyPath: m_LocalRotation.w + value: 0.21263118 + objectReference: {fileID: 0} + - target: {fileID: 4164222508261582693, guid: 833cb867d186193418fc107735ae3139, type: 3} + propertyPath: m_LocalRotation.x + value: -0.70643383 + objectReference: {fileID: 0} + - target: {fileID: 4164222508261582693, guid: 833cb867d186193418fc107735ae3139, type: 3} + propertyPath: m_LocalRotation.y + value: 0.6743797 + objectReference: {fileID: 0} + - target: {fileID: 4164222508261582693, guid: 833cb867d186193418fc107735ae3139, type: 3} + propertyPath: m_LocalRotation.z + value: 0.030843332 + objectReference: {fileID: 0} + - target: {fileID: 4164222508261582693, guid: 833cb867d186193418fc107735ae3139, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 200 + objectReference: {fileID: 0} + - target: {fileID: 4164222508261582693, guid: 833cb867d186193418fc107735ae3139, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 345 + objectReference: {fileID: 0} + - target: {fileID: 4164222508261582693, guid: 833cb867d186193418fc107735ae3139, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 90 + objectReference: {fileID: 0} + - target: {fileID: 7128330710180914111, guid: 833cb867d186193418fc107735ae3139, type: 3} + propertyPath: m_Name + value: Dynamic Attach Torus + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 833cb867d186193418fc107735ae3139, type: 3} +--- !u!4 &177564888636506461 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4164222508261582693, guid: 833cb867d186193418fc107735ae3139, type: 3} + m_PrefabInstance: {fileID: 4304486995001665080} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Far Grab Samples.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Far Grab Samples.prefab.meta new file mode 100644 index 00000000..8bea0e55 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Far Grab Samples.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f5ee409d69254d64da7a3b74d31a5a40 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Gaze Interactables.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Gaze Interactables.prefab new file mode 100644 index 00000000..1ccef0a3 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Gaze Interactables.prefab @@ -0,0 +1,1093 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &473967896956997135 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 473967896956997128} + - component: {fileID: 473967896956997131} + - component: {fileID: 473967896956997130} + - component: {fileID: 473967896956997129} + m_Layer: 5 + m_Name: Interactable State + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &473967896956997128 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 473967896956997135} + 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: 473967898674444904} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: -33} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &473967896956997131 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 473967896956997135} + m_CullTransparentMesh: 0 +--- !u!114 &473967896956997130 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 473967896956997135} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 0 + m_VerticalFit: 2 +--- !u!114 &473967896956997129 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 473967896956997135} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 16 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Hovered +--- !u!1 &473967897193089403 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 473967897193089396} + - component: {fileID: 473967897193089398} + - component: {fileID: 473967897193089397} + m_Layer: 0 + m_Name: Sphere + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &473967897193089396 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 473967897193089403} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4248956818382680585} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &473967897193089398 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 473967897193089403} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &473967897193089397 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 473967897193089403} + 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: 5561349426305759274, guid: 9e1dc1c14313460d872de39e35129b39, type: 3} + 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 &473967897596373899 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 473967897596373892} + - component: {fileID: 473967897596373889} + - component: {fileID: 473967897596373888} + - component: {fileID: 473967897596373895} + - component: {fileID: 473967897596373894} + m_Layer: 5 + m_Name: Gaze Select/Deselect Interactable Info + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &473967897596373892 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 473967897596373899} + m_LocalRotation: {x: -0, y: 1, z: -0, w: 0} + m_LocalPosition: {x: 0, y: 0, z: 0.23999977} + m_LocalScale: {x: 0.002, y: 0.002, z: 0.002} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 473967898674444904} + m_Father: {fileID: 473967898006735992} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: -0.5, y: 0.4} + m_SizeDelta: {x: 150, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!223 &473967897596373889 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 473967897596373899} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 2 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!114 &473967897596373888 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 473967897596373899} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 1 +--- !u!114 &473967897596373895 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 473967897596373899} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &473967897596373894 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 473967897596373899} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7951c64acb0fa62458bf30a60089fe2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 0 + m_CheckFor2DOcclusion: 0 + m_CheckFor3DOcclusion: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RaycastTriggerInteraction: 1 +--- !u!1 &473967898006735999 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 473967898006735992} + m_Layer: 0 + m_Name: Gaze Interactables + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &473967898006735992 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 473967898006735999} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1.5, y: 0.663, z: -4.5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4248956818382680585} + - {fileID: 4758432220186322088} + - {fileID: 4758432221792608628} + - {fileID: 473967897596373892} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &473967898674444911 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 473967898674444904} + - component: {fileID: 473967898674444906} + - component: {fileID: 473967898674444905} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &473967898674444904 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 473967898674444911} + 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: 473967896956997128} + m_Father: {fileID: 473967897596373892} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 0} + m_AnchoredPosition: {x: 0, y: 25} + m_SizeDelta: {x: 150, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &473967898674444906 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 473967898674444911} + m_CullTransparentMesh: 1 +--- !u!114 &473967898674444905 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 473967898674444911} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0.7490196} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &1529512124061104994 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4248956818382680585} + - component: {fileID: 4608473438835730188} + - component: {fileID: 191681418003103051} + - component: {fileID: 1529512124061104995} + - component: {fileID: 6616257527316408168} + m_Layer: 0 + m_Name: Gaze Hover Simple Interactable + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4248956818382680585 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1529512124061104994} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.5, y: 0.58, z: 0} + m_LocalScale: {x: 0.2, y: 0.2, z: 0.2} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 473967897193089396} + m_Father: {fileID: 473967898006735992} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &4608473438835730188 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1529512124061104994} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &191681418003103051 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1529512124061104994} + 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: 76618f7490c40334fa7b685859587d2e, 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!65 &1529512124061104995 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1529512124061104994} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!114 &6616257527316408168 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1529512124061104994} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8a35f6cfbfba9b548aaa00d52cfe8a50, type: 3} + m_Name: + m_EditorClassIdentifier: + m_InteractionManager: {fileID: 0} + m_Colliders: [] + m_InteractionLayers: + m_Bits: 1 + m_DistanceCalculationMode: 1 + m_SelectMode: 0 + m_FocusMode: 1 + m_CustomReticle: {fileID: 0} + m_AllowGazeInteraction: 1 + m_AllowGazeSelect: 0 + m_OverrideGazeTimeToSelect: 0 + m_GazeTimeToSelect: 0 + m_OverrideTimeToAutoDeselectGaze: 0 + m_TimeToAutoDeselectGaze: 3 + m_AllowGazeAssistance: 0 + m_FirstHoverEntered: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 191681418003103051} + m_TargetAssemblyTypeName: UnityEngine.Renderer, UnityEngine + m_MethodName: set_material + m_Mode: 2 + m_Arguments: + m_ObjectArgument: {fileID: 5561349426305759274, guid: 9e1dc1c14313460d872de39e35129b39, type: 3} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Material, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 473967897193089403} + m_TargetAssemblyTypeName: UnityEngine.GameObject, UnityEngine + m_MethodName: SetActive + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 + m_LastHoverExited: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 191681418003103051} + m_TargetAssemblyTypeName: UnityEngine.Renderer, UnityEngine + m_MethodName: set_material + m_Mode: 2 + m_Arguments: + m_ObjectArgument: {fileID: 5561349426305759274, guid: 63e02ddb08ce42da868504e1333d48ae, type: 3} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Material, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 473967897193089403} + m_TargetAssemblyTypeName: UnityEngine.GameObject, UnityEngine + m_MethodName: SetActive + m_Mode: 6 + 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 + m_HoverEntered: + m_PersistentCalls: + m_Calls: [] + m_HoverExited: + m_PersistentCalls: + m_Calls: [] + m_FirstSelectEntered: + m_PersistentCalls: + m_Calls: [] + m_LastSelectExited: + m_PersistentCalls: + m_Calls: [] + m_SelectEntered: + m_PersistentCalls: + m_Calls: [] + m_SelectExited: + m_PersistentCalls: + m_Calls: [] + m_FirstFocusEntered: + m_PersistentCalls: + m_Calls: [] + m_LastFocusExited: + m_PersistentCalls: + m_Calls: [] + m_FocusEntered: + m_PersistentCalls: + m_Calls: [] + m_FocusExited: + m_PersistentCalls: + m_Calls: [] + m_Activated: + m_PersistentCalls: + m_Calls: [] + m_Deactivated: + m_PersistentCalls: + m_Calls: [] + m_StartingHoverFilters: [] + m_StartingSelectFilters: [] + m_StartingInteractionStrengthFilters: [] +--- !u!1 &7910538102941576643 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4758432220186322088} + - component: {fileID: 5119077097342939565} + - component: {fileID: 8815504253944130538} + - component: {fileID: 674558902177696101} + - component: {fileID: 2535421555985625545} + m_Layer: 0 + m_Name: Gaze Assisted Simple Interactable + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4758432220186322088 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7910538102941576643} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0.58, z: 0} + m_LocalScale: {x: 0.2, y: 0.1, z: 0.2} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 473967898006735992} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &5119077097342939565 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7910538102941576643} + m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &8815504253944130538 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7910538102941576643} + 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: 76618f7490c40334fa7b685859587d2e, 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!64 &674558902177696101 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7910538102941576643} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} +--- !u!114 &2535421555985625545 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7910538102941576643} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8a35f6cfbfba9b548aaa00d52cfe8a50, type: 3} + m_Name: + m_EditorClassIdentifier: + m_InteractionManager: {fileID: 0} + m_Colliders: [] + m_InteractionLayers: + m_Bits: 1 + m_DistanceCalculationMode: 1 + m_SelectMode: 0 + m_FocusMode: 1 + m_CustomReticle: {fileID: 0} + m_AllowGazeInteraction: 1 + m_AllowGazeSelect: 0 + m_OverrideGazeTimeToSelect: 0 + m_GazeTimeToSelect: 2 + m_OverrideTimeToAutoDeselectGaze: 0 + m_TimeToAutoDeselectGaze: 2 + m_AllowGazeAssistance: 1 + m_FirstHoverEntered: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 8815504253944130538} + m_TargetAssemblyTypeName: UnityEngine.Renderer, UnityEngine + m_MethodName: set_material + m_Mode: 2 + m_Arguments: + m_ObjectArgument: {fileID: 5561349426305759274, guid: 9e1dc1c14313460d872de39e35129b39, type: 3} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Material, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_LastHoverExited: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 8815504253944130538} + m_TargetAssemblyTypeName: UnityEngine.Renderer, UnityEngine + m_MethodName: set_material + m_Mode: 2 + m_Arguments: + m_ObjectArgument: {fileID: 5561349426305759274, guid: 63e02ddb08ce42da868504e1333d48ae, type: 3} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Material, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_HoverEntered: + m_PersistentCalls: + m_Calls: [] + m_HoverExited: + m_PersistentCalls: + m_Calls: [] + m_FirstSelectEntered: + m_PersistentCalls: + m_Calls: [] + m_LastSelectExited: + m_PersistentCalls: + m_Calls: [] + m_SelectEntered: + m_PersistentCalls: + m_Calls: [] + m_SelectExited: + m_PersistentCalls: + m_Calls: [] + m_FirstFocusEntered: + m_PersistentCalls: + m_Calls: [] + m_LastFocusExited: + m_PersistentCalls: + m_Calls: [] + m_FocusEntered: + m_PersistentCalls: + m_Calls: [] + m_FocusExited: + m_PersistentCalls: + m_Calls: [] + m_Activated: + m_PersistentCalls: + m_Calls: [] + m_Deactivated: + m_PersistentCalls: + m_Calls: [] + m_StartingHoverFilters: [] + m_StartingSelectFilters: [] + m_StartingInteractionStrengthFilters: [] +--- !u!1 &7910538103482509343 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4758432221792608628} + - component: {fileID: 5119077095728002161} + - component: {fileID: 8815504255550680630} + - component: {fileID: 7910538103482509336} + - component: {fileID: 2535421555444691989} + m_Layer: 0 + m_Name: Gaze Select/Deselect Simple Interactable + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4758432221792608628 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7910538103482509343} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.5, y: 0.58, z: 0} + m_LocalScale: {x: 0.2, y: 0.2, z: 0.2} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 473967898006735992} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &5119077095728002161 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7910538103482509343} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &8815504255550680630 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7910538103482509343} + 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: 76618f7490c40334fa7b685859587d2e, 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!135 &7910538103482509336 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7910538103482509343} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!114 &2535421555444691989 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7910538103482509343} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8a35f6cfbfba9b548aaa00d52cfe8a50, type: 3} + m_Name: + m_EditorClassIdentifier: + m_InteractionManager: {fileID: 0} + m_Colliders: [] + m_InteractionLayers: + m_Bits: 1 + m_DistanceCalculationMode: 1 + m_SelectMode: 0 + m_FocusMode: 1 + m_CustomReticle: {fileID: 0} + m_AllowGazeInteraction: 1 + m_AllowGazeSelect: 1 + m_OverrideGazeTimeToSelect: 1 + m_GazeTimeToSelect: 2 + m_OverrideTimeToAutoDeselectGaze: 1 + m_TimeToAutoDeselectGaze: 4 + m_AllowGazeAssistance: 0 + m_FirstHoverEntered: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 8815504255550680630} + m_TargetAssemblyTypeName: UnityEngine.Renderer, UnityEngine + m_MethodName: set_material + m_Mode: 2 + m_Arguments: + m_ObjectArgument: {fileID: 5561349426305759274, guid: 9e1dc1c14313460d872de39e35129b39, type: 3} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Material, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 473967897596373899} + m_TargetAssemblyTypeName: UnityEngine.GameObject, UnityEngine + m_MethodName: SetActive + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 + - m_Target: {fileID: 473967896956997129} + m_TargetAssemblyTypeName: UnityEngine.UI.Text, UnityEngine.UI + m_MethodName: set_text + m_Mode: 5 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: Hovered + m_BoolArgument: 1 + m_CallState: 2 + m_LastHoverExited: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 8815504255550680630} + m_TargetAssemblyTypeName: UnityEngine.Renderer, UnityEngine + m_MethodName: set_material + m_Mode: 2 + m_Arguments: + m_ObjectArgument: {fileID: 5561349426305759274, guid: 63e02ddb08ce42da868504e1333d48ae, type: 3} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Material, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 473967897596373899} + m_TargetAssemblyTypeName: UnityEngine.GameObject, UnityEngine + m_MethodName: SetActive + m_Mode: 6 + 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 + m_HoverEntered: + m_PersistentCalls: + m_Calls: [] + m_HoverExited: + m_PersistentCalls: + m_Calls: [] + m_FirstSelectEntered: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 473967896956997129} + m_TargetAssemblyTypeName: UnityEngine.UI.Text, UnityEngine.UI + m_MethodName: set_text + m_Mode: 5 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: Selected + m_BoolArgument: 0 + m_CallState: 2 + m_LastSelectExited: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 473967896956997129} + m_TargetAssemblyTypeName: UnityEngine.UI.Text, UnityEngine.UI + m_MethodName: set_text + m_Mode: 5 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: Deselected + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 8815504255550680630} + m_TargetAssemblyTypeName: UnityEngine.Renderer, UnityEngine + m_MethodName: set_material + m_Mode: 2 + m_Arguments: + m_ObjectArgument: {fileID: 5561349426305759274, guid: 63e02ddb08ce42da868504e1333d48ae, type: 3} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Material, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_SelectEntered: + m_PersistentCalls: + m_Calls: [] + m_SelectExited: + m_PersistentCalls: + m_Calls: [] + m_FirstFocusEntered: + m_PersistentCalls: + m_Calls: [] + m_LastFocusExited: + m_PersistentCalls: + m_Calls: [] + m_FocusEntered: + m_PersistentCalls: + m_Calls: [] + m_FocusExited: + m_PersistentCalls: + m_Calls: [] + m_Activated: + m_PersistentCalls: + m_Calls: [] + m_Deactivated: + m_PersistentCalls: + m_Calls: [] + m_StartingHoverFilters: [] + m_StartingSelectFilters: [] + m_StartingInteractionStrengthFilters: [] diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Gaze Interactables.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Gaze Interactables.prefab.meta new file mode 100644 index 00000000..1e66da68 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Gaze Interactables.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e05cd47ab8981f64badd3bfe29af8f4e +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Interactables Sample.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables Sample.prefab similarity index 98% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Interactables Sample.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables Sample.prefab index 50a362cb..1cc41c00 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Interactables Sample.prefab +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables Sample.prefab @@ -87,7 +87,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4769098102207602867, guid: 2ed984a58a974166bf92c82a74380454, type: 3} propertyPath: m_Name - value: Interactable Instant Pyramid + value: Interactable Instant Cylinder objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 2ed984a58a974166bf92c82a74380454, type: 3} @@ -113,7 +113,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 7517549319329480229, guid: 521327bdbcb341f782d36f02cab76cb0, type: 3} propertyPath: m_LocalPosition.y - value: 0.5 + value: 0.525 objectReference: {fileID: 0} - target: {fileID: 7517549319329480229, guid: 521327bdbcb341f782d36f02cab76cb0, type: 3} propertyPath: m_LocalPosition.z @@ -171,7 +171,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4257412417454173056, guid: d5615d616019430d9c2e8727e71c97fb, type: 3} propertyPath: m_LocalPosition.x - value: -0.425 + value: -0.5 objectReference: {fileID: 0} - target: {fileID: 4257412417454173056, guid: d5615d616019430d9c2e8727e71c97fb, type: 3} propertyPath: m_LocalPosition.y @@ -211,7 +211,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4257412417454173071, guid: d5615d616019430d9c2e8727e71c97fb, type: 3} propertyPath: m_Name - value: Interactable Velocity Tracked Wedge + value: Interactable Velocity Tapered Cylinder objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: d5615d616019430d9c2e8727e71c97fb, type: 3} diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Interactables Sample.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables Sample.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Interactables Sample.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables Sample.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Interactables.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Interactables.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables.meta diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Blaser-Long.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Blaser-Long.prefab new file mode 100644 index 00000000..73eeebc1 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Blaser-Long.prefab @@ -0,0 +1,533 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &3385772945386142710 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8720395994140980207} + m_Layer: 0 + m_Name: Attach 1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8720395994140980207 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3385772945386142710} + m_LocalRotation: {x: 0.5, y: -0.5, z: 0.5, w: 0.5} + m_LocalPosition: {x: 0.05, y: 0.04, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1511484438512298306} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 90} +--- !u!1 &6437316271001355229 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5917203958825261415} + - component: {fileID: 7327913166118033090} + - component: {fileID: 4779741401209332232} + - component: {fileID: 8555559421212654628} + - component: {fileID: 4302118958288390173} + m_Layer: 0 + m_Name: Blaster_Long + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5917203958825261415 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6437316271001355229} + m_LocalRotation: {x: 0.000000081460335, 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: 5354890054544157949} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &7327913166118033090 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6437316271001355229} + m_Mesh: {fileID: -4545305392863491524, guid: e51d3dbfe79e4c646bb30424a11f23a0, type: 3} +--- !u!23 &4779741401209332232 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6437316271001355229} + 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: 76618f7490c40334fa7b685859587d2e, 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!136 &8555559421212654628 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6437316271001355229} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.07774649 + m_Height: 0 + m_Direction: 1 + m_Center: {x: 0.05, y: 0, z: -0.000000004656613} +--- !u!65 &4302118958288390173 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6437316271001355229} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 0.06, y: 0.35081995, z: 0.060000017} + m_Center: {x: 0, y: -0.10121217, z: -0.000000004656613} +--- !u!1 &6910721658033247306 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5354890054544157949} + - component: {fileID: 7469549042548629770} + - component: {fileID: 5007766103700882973} + m_Layer: 0 + m_Name: Blaser-Long + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5354890054544157949 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6910721658033247306} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1.939, y: 1.965, z: -4.572} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5917203958825261415} + - {fileID: 1511484438512298306} + - {fileID: 1847048393024268602} + - {fileID: 3152469075122894703} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!54 &7469549042548629770 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6910721658033247306} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 1 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &5007766103700882973 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6910721658033247306} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0ad34abafad169848a38072baa96cdb2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_InteractionManager: {fileID: 0} + m_Colliders: [] + m_InteractionLayers: + m_Bits: 1 + m_DistanceCalculationMode: 1 + m_SelectMode: 1 + m_FocusMode: 1 + m_CustomReticle: {fileID: 0} + m_AllowGazeInteraction: 0 + m_AllowGazeSelect: 0 + m_OverrideGazeTimeToSelect: 0 + m_GazeTimeToSelect: 0.5 + m_OverrideTimeToAutoDeselectGaze: 0 + m_TimeToAutoDeselectGaze: 3 + m_AllowGazeAssistance: 0 + m_FirstHoverEntered: + m_PersistentCalls: + m_Calls: [] + m_LastHoverExited: + m_PersistentCalls: + m_Calls: [] + m_HoverEntered: + m_PersistentCalls: + m_Calls: [] + m_HoverExited: + m_PersistentCalls: + m_Calls: [] + m_FirstSelectEntered: + m_PersistentCalls: + m_Calls: [] + m_LastSelectExited: + m_PersistentCalls: + m_Calls: [] + m_SelectEntered: + m_PersistentCalls: + m_Calls: [] + m_SelectExited: + m_PersistentCalls: + m_Calls: [] + m_FirstFocusEntered: + m_PersistentCalls: + m_Calls: [] + m_LastFocusExited: + m_PersistentCalls: + m_Calls: [] + m_FocusEntered: + m_PersistentCalls: + m_Calls: [] + m_FocusExited: + m_PersistentCalls: + m_Calls: [] + m_Activated: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 3152469075122894700} + m_TargetAssemblyTypeName: UnityEngine.ParticleSystem, UnityEngine + m_MethodName: Play + 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 + m_Deactivated: + m_PersistentCalls: + m_Calls: [] + m_StartingHoverFilters: [] + m_StartingSelectFilters: [] + m_StartingInteractionStrengthFilters: [] + m_AttachTransform: {fileID: 8720395994140980207} + m_SecondaryAttachTransform: {fileID: 8163488654232436768} + m_UseDynamicAttach: 0 + m_MatchAttachPosition: 1 + m_MatchAttachRotation: 1 + m_SnapToColliderVolume: 1 + m_ReinitializeDynamicAttachEverySingleGrab: 1 + m_AttachEaseInTime: 0.15 + m_MovementType: 2 + m_VelocityDamping: 1 + m_VelocityScale: 1 + m_AngularVelocityDamping: 1 + m_AngularVelocityScale: 1 + m_TrackPosition: 1 + m_SmoothPosition: 0 + m_SmoothPositionAmount: 8 + m_TightenPosition: 0.1 + m_TrackRotation: 1 + m_SmoothRotation: 0 + m_SmoothRotationAmount: 8 + m_TightenRotation: 0.1 + m_TrackScale: 1 + m_SmoothScale: 0 + m_SmoothScaleAmount: 8 + m_TightenScale: 0.1 + m_ThrowOnDetach: 1 + m_ThrowSmoothingDuration: 0.25 + m_ThrowSmoothingCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_ThrowVelocityScale: 1.5 + m_ThrowAngularVelocityScale: 1 + m_ForceGravityOnDetach: 0 + m_RetainTransformParent: 1 + m_StartingSingleGrabTransformers: [] + m_StartingMultipleGrabTransformers: [] + m_AddDefaultGrabTransformers: 1 + m_FarAttachMode: 1 +--- !u!1 &7408197437310189400 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1511484438512298306} + m_Layer: 0 + m_Name: Attach Transforms + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1511484438512298306 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7408197437310189400} + 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: 8720395994140980207} + - {fileID: 8163488654232436768} + m_Father: {fileID: 5354890054544157949} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &8124602369512158954 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8163488654232436768} + m_Layer: 0 + m_Name: Attach 2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8163488654232436768 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8124602369512158954} + m_LocalRotation: {x: 0.5, y: -0.5, z: 0.5, w: 0.5} + m_LocalPosition: {x: 0.0025, y: -0.15, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1511484438512298306} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 90} +--- !u!1001 &88085993893310710 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 5354890054544157949} + m_Modifications: + - target: {fileID: 3064453622967830425, guid: 7942e6544a2b2ae48bcf988d9aed838d, type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 3064453622967830425, guid: 7942e6544a2b2ae48bcf988d9aed838d, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3064453622967830425, guid: 7942e6544a2b2ae48bcf988d9aed838d, type: 3} + propertyPath: m_LocalPosition.y + value: -0.284 + objectReference: {fileID: 0} + - target: {fileID: 3064453622967830425, guid: 7942e6544a2b2ae48bcf988d9aed838d, type: 3} + propertyPath: m_LocalPosition.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 3064453622967830425, guid: 7942e6544a2b2ae48bcf988d9aed838d, type: 3} + propertyPath: m_LocalRotation.w + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 3064453622967830425, guid: 7942e6544a2b2ae48bcf988d9aed838d, type: 3} + propertyPath: m_LocalRotation.x + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 3064453622967830425, guid: 7942e6544a2b2ae48bcf988d9aed838d, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3064453622967830425, guid: 7942e6544a2b2ae48bcf988d9aed838d, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3064453622967830425, guid: 7942e6544a2b2ae48bcf988d9aed838d, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 90 + objectReference: {fileID: 0} + - target: {fileID: 3064453622967830425, guid: 7942e6544a2b2ae48bcf988d9aed838d, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3064453622967830425, guid: 7942e6544a2b2ae48bcf988d9aed838d, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3064453622967830428, guid: 7942e6544a2b2ae48bcf988d9aed838d, type: 3} + propertyPath: m_Name + value: Confetti + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 7942e6544a2b2ae48bcf988d9aed838d, type: 3} +--- !u!198 &3152469075122894700 stripped +ParticleSystem: + m_CorrespondingSourceObject: {fileID: 3064453622967830426, guid: 7942e6544a2b2ae48bcf988d9aed838d, type: 3} + m_PrefabInstance: {fileID: 88085993893310710} + m_PrefabAsset: {fileID: 0} +--- !u!4 &3152469075122894703 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 3064453622967830425, guid: 7942e6544a2b2ae48bcf988d9aed838d, type: 3} + m_PrefabInstance: {fileID: 88085993893310710} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &5862368334091776017 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 5354890054544157949} + m_Modifications: + - target: {fileID: 3774509235512974894, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_Name + value: Highlight Interaction Affordance + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7396278978564332023, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_Renderer + value: + objectReference: {fileID: 4779741401209332232} + - target: {fileID: 8634317094661461186, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_InteractableSource + value: + objectReference: {fileID: 5007766103700882973} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 6b12f432fa58c224baf0d659706362be, type: 3} +--- !u!4 &1847048393024268602 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + m_PrefabInstance: {fileID: 5862368334091776017} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Blaser-Long.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Blaser-Long.prefab.meta new file mode 100644 index 00000000..895625c5 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Blaser-Long.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: fe7fcf44eedd467489de26ce92577bc3 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Blaser.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Blaser.prefab new file mode 100644 index 00000000..d5f9d215 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Blaser.prefab @@ -0,0 +1,493 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1284416445487218436 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1916555828440016318} + - component: {fileID: 3258111108087556635} + - component: {fileID: 780201921469275857} + - component: {fileID: 1934941278493803051} + - component: {fileID: 5183335765786241175} + m_Layer: 0 + m_Name: Blaster + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1916555828440016318 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1284416445487218436} + 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: 5287248408654313296} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &3258111108087556635 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1284416445487218436} + m_Mesh: {fileID: -4545305392863491524, guid: e8cf87fef9298444ca38948b2c8a4073, type: 3} +--- !u!23 &780201921469275857 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1284416445487218436} + 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: 76618f7490c40334fa7b685859587d2e, 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!136 &1934941278493803051 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1284416445487218436} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.07774648 + m_Height: 0 + m_Direction: 1 + m_Center: {x: 0.0005991794, y: 0, z: -0.000000004656613} +--- !u!65 &5183335765786241175 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1284416445487218436} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 0.06, y: 0.2241978, z: 0.06} + m_Center: {x: -0.05, y: -0.030879375, z: 0} +--- !u!1 &6689992741278781415 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5287248408654313296} + - component: {fileID: 7248925196756646567} + - component: {fileID: 5066365915309006256} + m_Layer: 0 + m_Name: Blaser + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5287248408654313296 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6689992741278781415} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1.939, y: 1.505, z: -4.5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1916555828440016318} + - {fileID: 1714093953809707759} + - {fileID: 4320651432585960086} + - {fileID: 2523315500094793452} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!54 &7248925196756646567 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6689992741278781415} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 1 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &5066365915309006256 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6689992741278781415} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0ad34abafad169848a38072baa96cdb2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_InteractionManager: {fileID: 0} + m_Colliders: [] + m_InteractionLayers: + m_Bits: 1 + m_DistanceCalculationMode: 1 + m_SelectMode: 0 + m_FocusMode: 1 + m_CustomReticle: {fileID: 0} + m_AllowGazeInteraction: 0 + m_AllowGazeSelect: 0 + m_OverrideGazeTimeToSelect: 0 + m_GazeTimeToSelect: 0.5 + m_OverrideTimeToAutoDeselectGaze: 0 + m_TimeToAutoDeselectGaze: 3 + m_AllowGazeAssistance: 0 + m_FirstHoverEntered: + m_PersistentCalls: + m_Calls: [] + m_LastHoverExited: + m_PersistentCalls: + m_Calls: [] + m_HoverEntered: + m_PersistentCalls: + m_Calls: [] + m_HoverExited: + m_PersistentCalls: + m_Calls: [] + m_FirstSelectEntered: + m_PersistentCalls: + m_Calls: [] + m_LastSelectExited: + m_PersistentCalls: + m_Calls: [] + m_SelectEntered: + m_PersistentCalls: + m_Calls: [] + m_SelectExited: + m_PersistentCalls: + m_Calls: [] + m_FirstFocusEntered: + m_PersistentCalls: + m_Calls: [] + m_LastFocusExited: + m_PersistentCalls: + m_Calls: [] + m_FocusEntered: + m_PersistentCalls: + m_Calls: [] + m_FocusExited: + m_PersistentCalls: + m_Calls: [] + m_Activated: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 2523315500094793455} + m_TargetAssemblyTypeName: UnityEngine.ParticleSystem, UnityEngine + m_MethodName: Play + 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 + m_Deactivated: + m_PersistentCalls: + m_Calls: [] + m_StartingHoverFilters: [] + m_StartingSelectFilters: [] + m_StartingInteractionStrengthFilters: [] + m_AttachTransform: {fileID: 1714093953809707759} + m_SecondaryAttachTransform: {fileID: 0} + m_UseDynamicAttach: 0 + m_MatchAttachPosition: 1 + m_MatchAttachRotation: 1 + m_SnapToColliderVolume: 1 + m_ReinitializeDynamicAttachEverySingleGrab: 1 + m_AttachEaseInTime: 0.15 + m_MovementType: 2 + m_VelocityDamping: 1 + m_VelocityScale: 1 + m_AngularVelocityDamping: 1 + m_AngularVelocityScale: 1 + m_TrackPosition: 1 + m_SmoothPosition: 0 + m_SmoothPositionAmount: 8 + m_TightenPosition: 0.1 + m_TrackRotation: 1 + m_SmoothRotation: 0 + m_SmoothRotationAmount: 8 + m_TightenRotation: 0.1 + m_TrackScale: 1 + m_SmoothScale: 0 + m_SmoothScaleAmount: 8 + m_TightenScale: 0.1 + m_ThrowOnDetach: 1 + m_ThrowSmoothingDuration: 0.25 + m_ThrowSmoothingCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 2 + outSlope: 2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_ThrowVelocityScale: 1 + m_ThrowAngularVelocityScale: 1 + m_ForceGravityOnDetach: 0 + m_RetainTransformParent: 1 + m_StartingSingleGrabTransformers: [] + m_StartingMultipleGrabTransformers: [] + m_AddDefaultGrabTransformers: 1 + m_FarAttachMode: 1 +--- !u!1 &7349667993634448629 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1714093953809707759} + m_Layer: 0 + m_Name: Attach Transform + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1714093953809707759 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7349667993634448629} + m_LocalRotation: {x: 0.5, y: -0.5, z: 0.5, w: 0.5} + m_LocalPosition: {x: 0, y: 0.04, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5287248408654313296} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 90} +--- !u!1001 &685600756766286197 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 5287248408654313296} + m_Modifications: + - target: {fileID: 3064453622967830425, guid: 7942e6544a2b2ae48bcf988d9aed838d, type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 3064453622967830425, guid: 7942e6544a2b2ae48bcf988d9aed838d, type: 3} + propertyPath: m_LocalPosition.x + value: -0.034 + objectReference: {fileID: 0} + - target: {fileID: 3064453622967830425, guid: 7942e6544a2b2ae48bcf988d9aed838d, type: 3} + propertyPath: m_LocalPosition.y + value: -0.15 + objectReference: {fileID: 0} + - target: {fileID: 3064453622967830425, guid: 7942e6544a2b2ae48bcf988d9aed838d, type: 3} + propertyPath: m_LocalPosition.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 3064453622967830425, guid: 7942e6544a2b2ae48bcf988d9aed838d, type: 3} + propertyPath: m_LocalRotation.w + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 3064453622967830425, guid: 7942e6544a2b2ae48bcf988d9aed838d, type: 3} + propertyPath: m_LocalRotation.x + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 3064453622967830425, guid: 7942e6544a2b2ae48bcf988d9aed838d, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3064453622967830425, guid: 7942e6544a2b2ae48bcf988d9aed838d, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3064453622967830425, guid: 7942e6544a2b2ae48bcf988d9aed838d, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 90 + objectReference: {fileID: 0} + - target: {fileID: 3064453622967830425, guid: 7942e6544a2b2ae48bcf988d9aed838d, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3064453622967830425, guid: 7942e6544a2b2ae48bcf988d9aed838d, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3064453622967830428, guid: 7942e6544a2b2ae48bcf988d9aed838d, type: 3} + propertyPath: m_Name + value: Confetti + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 7942e6544a2b2ae48bcf988d9aed838d, type: 3} +--- !u!4 &2523315500094793452 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 3064453622967830425, guid: 7942e6544a2b2ae48bcf988d9aed838d, type: 3} + m_PrefabInstance: {fileID: 685600756766286197} + m_PrefabAsset: {fileID: 0} +--- !u!198 &2523315500094793455 stripped +ParticleSystem: + m_CorrespondingSourceObject: {fileID: 3064453622967830426, guid: 7942e6544a2b2ae48bcf988d9aed838d, type: 3} + m_PrefabInstance: {fileID: 685600756766286197} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &8290935447177298877 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 5287248408654313296} + m_Modifications: + - target: {fileID: 3774509235512974894, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_Name + value: Highlight Interaction Affordance + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5298392244203567607, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_AffordanceStateProvider + value: + objectReference: {fileID: 350172987230754687} + - target: {fileID: 7396278978564332023, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_Renderer + value: + objectReference: {fileID: 780201921469275857} + - target: {fileID: 8634317094661461186, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_InteractableSource + value: + objectReference: {fileID: 5066365915309006256} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 6b12f432fa58c224baf0d659706362be, type: 3} +--- !u!114 &350172987230754687 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 8634317094661461186, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + m_PrefabInstance: {fileID: 8290935447177298877} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 49e0a5b5ff5540f5b14dd29d46faec22, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &4320651432585960086 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + m_PrefabInstance: {fileID: 8290935447177298877} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Blaser.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Blaser.prefab.meta new file mode 100644 index 00000000..18014ceb --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Blaser.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 3549fdaf258e11846b85a316c16c699c +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Confetti.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Confetti.prefab new file mode 100644 index 00000000..878b8e65 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Confetti.prefab @@ -0,0 +1,4872 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &3064453622967830428 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3064453622967830425} + - component: {fileID: 3064453622967830426} + - component: {fileID: 3064453622967830427} + m_Layer: 0 + m_Name: Confetti + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3064453622967830425 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3064453622967830428} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 1.4, 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: 90, y: 0, z: 0} +--- !u!198 &3064453622967830426 +ParticleSystem: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3064453622967830428} + serializedVersion: 8 + lengthInSec: 1 + simulationSpeed: 1 + stopAction: 0 + cullingMode: 0 + ringBufferMode: 2 + ringBufferLoopRange: {x: 0, y: 1} + emitterVelocityMode: 0 + looping: 0 + prewarm: 0 + playOnAwake: 0 + useUnscaledTime: 0 + autoRandomSeed: 1 + startDelay: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + moveWithTransform: 1 + moveWithCustomTransform: {fileID: 0} + scalingMode: 1 + randomSeed: 0 + InitialModule: + serializedVersion: 3 + enabled: 1 + startLifetime: + serializedVersion: 2 + minMaxState: 0 + scalar: 5 + minScalar: 5 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startSpeed: + serializedVersion: 2 + minMaxState: 3 + scalar: 3 + minScalar: 0.1 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startColor: + serializedVersion: 2 + minMaxState: 4 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 0.5, g: 0.9250001, b: 1, a: 1} + key2: {r: 0, g: 0.84313726, b: 1, a: 1} + key3: {r: 0, g: 0.84483385, b: 1, a: 1} + key4: {r: 0, g: 0.84483385, b: 1, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 13107 + ctime1: 37394 + ctime2: 65535 + ctime3: 65535 + ctime4: 65535 + ctime5: 65535 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 65535 + atime3: 65535 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 1 + m_NumColorKeys: 3 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + startSize: + serializedVersion: 2 + minMaxState: 3 + scalar: 0.001 + minScalar: 0.002 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startSizeY: + serializedVersion: 2 + minMaxState: 3 + scalar: 0.001 + minScalar: 0.002 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startSizeZ: + serializedVersion: 2 + minMaxState: 3 + scalar: 0.001 + minScalar: 0.002 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startRotationX: + serializedVersion: 2 + minMaxState: 3 + scalar: 0 + minScalar: 1.5707963 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + startRotationY: + serializedVersion: 2 + minMaxState: 3 + scalar: 0 + minScalar: 1.5707963 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + startRotation: + serializedVersion: 2 + minMaxState: 3 + scalar: 0 + minScalar: 1.5707963 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + randomizeRotationDirection: 0 + maxNumParticles: 50 + customEmitterVelocity: {x: 0, y: 0, z: 0} + size3D: 1 + rotation3D: 1 + gravityModifier: + serializedVersion: 2 + minMaxState: 0 + scalar: 0.1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + ShapeModule: + serializedVersion: 6 + enabled: 1 + type: 4 + angle: 30 + length: 5 + boxThickness: {x: 0, y: 0, z: 0} + radiusThickness: 1 + donutRadius: 0.2 + m_Position: {x: 0, y: 1.686913e-12, z: 0.000000051140773} + m_Rotation: {x: 0.004037607, y: 0, z: 0} + m_Scale: {x: 0.1, y: 0.1, z: 0.1} + placementMode: 0 + m_MeshMaterialIndex: 0 + m_MeshNormalOffset: 0 + m_MeshSpawn: + mode: 0 + spread: 0 + speed: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Mesh: {fileID: 0} + m_MeshRenderer: {fileID: 0} + m_SkinnedMeshRenderer: {fileID: 0} + m_Sprite: {fileID: 0} + m_SpriteRenderer: {fileID: 0} + m_UseMeshMaterialIndex: 0 + m_UseMeshColors: 1 + alignToDirection: 0 + m_Texture: {fileID: 0} + m_TextureClipChannel: 3 + m_TextureClipThreshold: 0 + m_TextureUVChannel: 0 + m_TextureColorAffectsParticles: 1 + m_TextureAlphaAffectsParticles: 1 + m_TextureBilinearFiltering: 0 + randomDirectionAmount: 0 + sphericalDirectionAmount: 0 + randomPositionAmount: 0 + radius: + value: 0.25 + mode: 0 + spread: 0 + speed: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + arc: + value: 360 + mode: 0 + spread: 0 + speed: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + EmissionModule: + enabled: 1 + serializedVersion: 4 + rateOverTime: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 10 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + rateOverDistance: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + m_BurstCount: 1 + m_Bursts: + - serializedVersion: 2 + time: 0 + countCurve: + serializedVersion: 2 + minMaxState: 0 + scalar: 100 + minScalar: 30 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + cycleCount: 1 + repeatInterval: 0.01 + probability: 1 + SizeModule: + enabled: 0 + curve: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + RotationModule: + enabled: 1 + x: + serializedVersion: 2 + minMaxState: 3 + scalar: 0.7853981 + minScalar: 3.1415925 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + y: + serializedVersion: 2 + minMaxState: 3 + scalar: 0.7853981 + minScalar: 3.1415925 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + curve: + serializedVersion: 2 + minMaxState: 3 + scalar: 0.7853982 + minScalar: 3.1415925 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 1 + ColorModule: + enabled: 0 + gradient: + serializedVersion: 2 + minMaxState: 1 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + UVModule: + serializedVersion: 2 + enabled: 0 + mode: 0 + timeMode: 0 + fps: 30 + frameOverTime: + serializedVersion: 2 + minMaxState: 1 + scalar: 0.9999 + minScalar: 0.9999 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startFrame: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + speedRange: {x: 0, y: 1} + tilesX: 1 + tilesY: 1 + animationType: 0 + rowIndex: 0 + cycles: 1 + uvChannelMask: -1 + rowMode: 1 + sprites: + - sprite: {fileID: 0} + flipU: 0 + flipV: 0 + VelocityModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + z: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + orbitalX: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + orbitalY: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + orbitalZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + orbitalOffsetX: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + orbitalOffsetY: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + orbitalOffsetZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + radial: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + speedModifier: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + inWorldSpace: 0 + InheritVelocityModule: + enabled: 0 + m_Mode: 0 + m_Curve: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + LifetimeByEmitterSpeedModule: + enabled: 0 + m_Curve: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: -0.8 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.2 + inSlope: -0.8 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Range: {x: 0, y: 1} + ForceModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + z: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + inWorldSpace: 0 + randomizePerFrame: 0 + ExternalForcesModule: + serializedVersion: 2 + enabled: 0 + multiplierCurve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + influenceFilter: 0 + influenceMask: + serializedVersion: 2 + m_Bits: 4294967295 + influenceList: [] + ClampVelocityModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + magnitude: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxis: 0 + inWorldSpace: 0 + multiplyDragByParticleSize: 1 + multiplyDragByParticleVelocity: 1 + dampen: 0 + drag: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + NoiseModule: + enabled: 0 + strength: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + strengthY: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + strengthZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + frequency: 0.5 + damping: 1 + octaves: 1 + octaveMultiplier: 0.5 + octaveScale: 2 + quality: 2 + scrollSpeed: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + remap: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -1 + inSlope: 0 + outSlope: 2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remapY: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -1 + inSlope: 0 + outSlope: 2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remapZ: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -1 + inSlope: 0 + outSlope: 2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remapEnabled: 0 + positionAmount: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + rotationAmount: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + sizeAmount: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + SizeBySpeedModule: + enabled: 0 + curve: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + range: {x: 0, y: 1} + separateAxes: 0 + RotationBySpeedModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + curve: + serializedVersion: 2 + minMaxState: 0 + scalar: 0.7853982 + minScalar: 0.7853982 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + range: {x: 0, y: 1} + ColorBySpeedModule: + enabled: 0 + gradient: + serializedVersion: 2 + minMaxState: 1 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + range: {x: 0, y: 1} + CollisionModule: + enabled: 1 + serializedVersion: 4 + type: 1 + collisionMode: 0 + colliderForce: 0 + multiplyColliderForceByParticleSize: 0 + multiplyColliderForceByParticleSpeed: 0 + multiplyColliderForceByCollisionAngle: 1 + m_Planes: [] + m_Dampen: + serializedVersion: 2 + minMaxState: 0 + scalar: 0.5 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + m_Bounce: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 1 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_EnergyLossOnCollision: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minKillSpeed: 0 + maxKillSpeed: 10000 + radiusScale: 1 + collidesWith: + serializedVersion: 2 + m_Bits: 1 + maxCollisionShapes: 256 + quality: 2 + voxelSize: 0.5 + collisionMessages: 0 + collidesWithDynamic: 1 + interiorCollisions: 0 + TriggerModule: + enabled: 0 + serializedVersion: 2 + inside: 1 + outside: 0 + enter: 0 + exit: 0 + colliderQueryMode: 0 + radiusScale: 1 + primitives: [] + SubModule: + serializedVersion: 2 + enabled: 0 + subEmitters: + - serializedVersion: 3 + emitter: {fileID: 0} + type: 0 + properties: 0 + emitProbability: 1 + LightsModule: + enabled: 0 + ratio: 0 + light: {fileID: 0} + randomDistribution: 1 + color: 1 + range: 1 + intensity: 1 + rangeCurve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + intensityCurve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + maxLights: 20 + TrailModule: + enabled: 0 + mode: 0 + ratio: 1 + lifetime: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minVertexDistance: 0.2 + textureMode: 0 + ribbonCount: 1 + shadowBias: 0.5 + worldSpace: 0 + dieWithParticles: 1 + sizeAffectsWidth: 1 + sizeAffectsLifetime: 0 + inheritParticleColor: 1 + generateLightingData: 0 + splitSubEmitterRibbons: 0 + attachRibbonsToTransform: 0 + colorOverLifetime: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + widthOverTrail: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + colorOverTrail: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + CustomDataModule: + enabled: 0 + mode0: 0 + vectorComponentCount0: 4 + color0: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + colorLabel0: Color + vector0_0: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + vectorLabel0_0: X + vector0_1: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + vectorLabel0_1: Y + vector0_2: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + vectorLabel0_2: Z + vector0_3: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + vectorLabel0_3: W + mode1: 0 + vectorComponentCount1: 4 + color1: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + colorLabel1: Color + vector1_0: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + vectorLabel1_0: X + vector1_1: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + vectorLabel1_1: Y + vector1_2: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + vectorLabel1_2: Z + vector1_3: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + vectorLabel1_3: W +--- !u!199 &3064453622967830427 +ParticleSystemRenderer: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3064453622967830428} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10301, 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_RenderMode: 4 + m_MeshDistribution: 0 + m_SortMode: 0 + m_MinParticleSize: 0 + m_MaxParticleSize: 0.5 + m_CameraVelocityScale: 0 + m_VelocityScale: 0 + m_LengthScale: 2 + m_SortingFudge: 0 + m_NormalDirection: 1 + m_ShadowBias: 0 + m_RenderAlignment: 0 + m_Pivot: {x: 0, y: 0, z: 0} + m_Flip: {x: 0, y: 0, z: 0} + m_UseCustomVertexStreams: 0 + m_EnableGPUInstancing: 1 + m_ApplyActiveColorSpace: 1 + m_AllowRoll: 1 + m_FreeformStretching: 0 + m_RotateWithStretchDirection: 1 + m_VertexStreams: 00010304 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} + m_Mesh1: {fileID: 0} + m_Mesh2: {fileID: 0} + m_Mesh3: {fileID: 0} + m_MeshWeighting: 1 + m_MeshWeighting1: 1 + m_MeshWeighting2: 1 + m_MeshWeighting3: 1 + m_MaskInteraction: 0 diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Confetti.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Confetti.prefab.meta new file mode 100644 index 00000000..8f36df3b --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Confetti.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 7942e6544a2b2ae48bcf988d9aed838d +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Interactable Simple Cube.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Cube.prefab similarity index 92% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Interactable Simple Cube.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Cube.prefab index 11946612..4a7c8300 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Interactable Simple Cube.prefab +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Cube.prefab @@ -109,7 +109,7 @@ GameObject: - component: {fileID: 4943412722579436017} - component: {fileID: 2719188128838509712} m_Layer: 0 - m_Name: Interactable Simple Cube + m_Name: Cube m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -146,9 +146,6 @@ MonoBehaviour: m_EditorClassIdentifier: m_InteractionManager: {fileID: 0} m_Colliders: [] - m_InteractionLayerMask: - serializedVersion: 2 - m_Bits: 4294967295 m_InteractionLayers: m_Bits: 1 m_DistanceCalculationMode: 1 @@ -207,33 +204,6 @@ MonoBehaviour: m_StartingHoverFilters: [] m_StartingSelectFilters: [] m_StartingInteractionStrengthFilters: [] - m_OnFirstHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnLastHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectEntered: - m_PersistentCalls: - m_Calls: [] - m_OnSelectExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectCanceled: - m_PersistentCalls: - m_Calls: [] - m_OnActivate: - m_PersistentCalls: - m_Calls: [] - m_OnDeactivate: - m_PersistentCalls: - m_Calls: [] --- !u!1001 &1117405571790364861 PrefabInstance: m_ObjectHideFlags: 0 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Interactable Simple Cube.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Cube.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Interactable Simple Cube.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Cube.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Interactable Instant Pyramid.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Cylinder.prefab similarity index 68% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Interactable Instant Pyramid.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Cylinder.prefab index 9ff9f44c..19b7f26c 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Interactable Instant Pyramid.prefab +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Cylinder.prefab @@ -1,103 +1,5 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: ---- !u!1 &3555266395154559664 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3651312844796179671} - - component: {fileID: 5911828657079854996} - - component: {fileID: 3768215008265120455} - - component: {fileID: 5059739475841926635} - m_Layer: 0 - m_Name: Visuals - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &3651312844796179671 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3555266395154559664} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 4769098102207602864} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &5911828657079854996 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3555266395154559664} - m_Mesh: {fileID: -4957301927772954577, guid: 63e02ddb08ce42da868504e1333d48ae, type: 3} ---- !u!23 &3768215008265120455 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3555266395154559664} - 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: 5561349426305759274, guid: 63e02ddb08ce42da868504e1333d48ae, type: 3} - 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!64 &5059739475841926635 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3555266395154559664} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 4 - m_Convex: 1 - m_CookingOptions: 30 - m_Mesh: {fileID: -4957301927772954577, guid: 63e02ddb08ce42da868504e1333d48ae, type: 3} --- !u!1 &4769098102207602867 GameObject: m_ObjectHideFlags: 0 @@ -109,8 +11,9 @@ GameObject: - component: {fileID: 4769098102207602864} - component: {fileID: 4769098102207602870} - component: {fileID: 4769098102207602865} + - component: {fileID: 5989527094017703538} m_Layer: 0 - m_Name: Interactable Instant Pyramid + m_Name: Cylinder m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -128,8 +31,8 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 7346323618051603254} - - {fileID: 3651312844796179671} + - {fileID: 8601105390305805582} + - {fileID: 3338351278058446343} m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -163,13 +66,10 @@ MonoBehaviour: m_EditorClassIdentifier: m_InteractionManager: {fileID: 0} m_Colliders: [] - m_InteractionLayerMask: - serializedVersion: 2 - m_Bits: 1 m_InteractionLayers: m_Bits: 1 m_DistanceCalculationMode: 1 - m_SelectMode: 0 + m_SelectMode: 1 m_FocusMode: 1 m_CustomReticle: {fileID: 0} m_AllowGazeInteraction: 0 @@ -224,33 +124,6 @@ MonoBehaviour: m_StartingHoverFilters: [] m_StartingSelectFilters: [] m_StartingInteractionStrengthFilters: [] - m_OnFirstHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnLastHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectEntered: - m_PersistentCalls: - m_Calls: [] - m_OnSelectExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectCanceled: - m_PersistentCalls: - m_Calls: [] - m_OnActivate: - m_PersistentCalls: - m_Calls: [] - m_OnDeactivate: - m_PersistentCalls: - m_Calls: [] m_AttachTransform: {fileID: 0} m_SecondaryAttachTransform: {fileID: 0} m_UseDynamicAttach: 1 @@ -297,77 +170,200 @@ MonoBehaviour: m_ThrowAngularVelocityScale: 1 m_ForceGravityOnDetach: 0 m_RetainTransformParent: 1 - m_AttachPointCompatibilityMode: 0 - m_StartingSingleGrabTransformers: [] - m_StartingMultipleGrabTransformers: [] + m_StartingSingleGrabTransformers: + - {fileID: 5989527094017703538} + m_StartingMultipleGrabTransformers: + - {fileID: 5989527094017703538} m_AddDefaultGrabTransformers: 1 ---- !u!1001 &3245470402904072733 + m_FarAttachMode: 0 +--- !u!114 &5989527094017703538 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4769098102207602867} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0a1302d0d134fa8a2a5b3bf4aec3c20, type: 3} + m_Name: + m_EditorClassIdentifier: + m_PermittedDisplacementAxes: 7 + m_ConstrainedAxisDisplacementMode: 1 + m_TwoHandedRotationMode: 1 + m_AllowOneHandedScaling: 1 + m_AllowTwoHandedScaling: 1 + m_OneHandedScaleSpeed: 0.5 + m_ThresholdMoveRatioForScale: 0.05 + m_ClampScaling: 1 + m_MinimumScaleRatio: 0.25 + m_MaximumScaleRatio: 2 + m_ScaleMultiplier: 0.25 +--- !u!1 &8941496170888322996 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8601105390305805582} + - component: {fileID: 4679970489851906731} + - component: {fileID: 7428246769315610209} + - component: {fileID: 7828185126001756355} + m_Layer: 0 + m_Name: Visuals + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8601105390305805582 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8941496170888322996} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0.15, z: 0} + m_LocalScale: {x: 0.75, y: 3, z: 0.75} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4769098102207602864} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &4679970489851906731 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8941496170888322996} + m_Mesh: {fileID: -5076798556035486163, guid: 73b694bb0f61cd14e9e1ed7b578ac09a, type: 3} +--- !u!23 &7428246769315610209 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8941496170888322996} + 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: 76618f7490c40334fa7b685859587d2e, 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!64 &7828185126001756355 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8941496170888322996} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: -5076798556035486163, guid: 73b694bb0f61cd14e9e1ed7b578ac09a, type: 3} +--- !u!1001 &7398689087584339756 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: m_TransformParent: {fileID: 4769098102207602864} m_Modifications: - - target: {fileID: 3774509235512974894, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + - target: {fileID: 3774509235512974894, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_Name - value: Interaction Affordance + value: Highlight Interaction Affordance objectReference: {fileID: 0} - - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_RootOrder - value: 0 + value: 1 objectReference: {fileID: 0} - - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 7396278978564332023, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + - target: {fileID: 7396278978564332023, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_Renderer value: - objectReference: {fileID: 3768215008265120455} - - target: {fileID: 8634317094661461186, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + objectReference: {fileID: 7428246769315610209} + - target: {fileID: 8634317094661461186, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_InteractableSource value: objectReference: {fileID: 4769098102207602865} m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} ---- !u!4 &7346323618051603254 stripped + m_SourcePrefab: {fileID: 100100000, guid: 6b12f432fa58c224baf0d659706362be, type: 3} +--- !u!4 &3338351278058446343 stripped Transform: - m_CorrespondingSourceObject: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} - m_PrefabInstance: {fileID: 3245470402904072733} + m_CorrespondingSourceObject: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + m_PrefabInstance: {fileID: 7398689087584339756} m_PrefabAsset: {fileID: 0} diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Interactable Instant Pyramid.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Cylinder.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Interactable Instant Pyramid.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Cylinder.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Interactable Velocity Tracked Wedge.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Pot.prefab similarity index 69% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Interactable Velocity Tracked Wedge.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Pot.prefab index 00dae4ec..42300a45 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Interactable Velocity Tracked Wedge.prefab +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Pot.prefab @@ -1,103 +1,5 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: ---- !u!1 &621085603691566938 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6058481881298704847} - - component: {fileID: 54538302038579918} - - component: {fileID: 261398194632122527} - - component: {fileID: 7576380246348283313} - m_Layer: 0 - m_Name: Visuals - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &6058481881298704847 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 621085603691566938} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.25, y: 0.25, z: 0.25} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 4257412417454173056} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &54538302038579918 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 621085603691566938} - m_Mesh: {fileID: 6788383922943872000, guid: ab3a79eba4de4be0ad5fead9fb858190, type: 3} ---- !u!23 &261398194632122527 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 621085603691566938} - 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: 5561349426305759274, guid: ab3a79eba4de4be0ad5fead9fb858190, type: 3} - 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!64 &7576380246348283313 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 621085603691566938} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 4 - m_Convex: 1 - m_CookingOptions: 30 - m_Mesh: {fileID: 6788383922943872000, guid: ab3a79eba4de4be0ad5fead9fb858190, type: 3} --- !u!1 &4257412417454173071 GameObject: m_ObjectHideFlags: 0 @@ -110,7 +12,7 @@ GameObject: - component: {fileID: 4257412417454173059} - component: {fileID: 4257412417454173058} m_Layer: 0 - m_Name: Interactable Velocity Tracked Wedge + m_Name: Pot m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -128,8 +30,8 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 7448573029504399239} - - {fileID: 6058481881298704847} + - {fileID: 6865308534320718724} + - {fileID: 2054279627301505891} m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -163,9 +65,6 @@ MonoBehaviour: m_EditorClassIdentifier: m_InteractionManager: {fileID: 0} m_Colliders: [] - m_InteractionLayerMask: - serializedVersion: 2 - m_Bits: 1 m_InteractionLayers: m_Bits: 1 m_DistanceCalculationMode: 1 @@ -224,33 +123,6 @@ MonoBehaviour: m_StartingHoverFilters: [] m_StartingSelectFilters: [] m_StartingInteractionStrengthFilters: [] - m_OnFirstHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnLastHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectEntered: - m_PersistentCalls: - m_Calls: [] - m_OnSelectExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectCanceled: - m_PersistentCalls: - m_Calls: [] - m_OnActivate: - m_PersistentCalls: - m_Calls: [] - m_OnDeactivate: - m_PersistentCalls: - m_Calls: [] m_AttachTransform: {fileID: 0} m_SecondaryAttachTransform: {fileID: 0} m_UseDynamicAttach: 1 @@ -265,11 +137,11 @@ MonoBehaviour: m_AngularVelocityDamping: 1 m_AngularVelocityScale: 1 m_TrackPosition: 1 - m_SmoothPosition: 1 + m_SmoothPosition: 0 m_SmoothPositionAmount: 1.34 m_TightenPosition: 0.068 m_TrackRotation: 1 - m_SmoothRotation: 1 + m_SmoothRotation: 0 m_SmoothRotationAmount: 1.57 m_TightenRotation: 0.077 m_TrackScale: 1 @@ -297,77 +169,175 @@ MonoBehaviour: m_ThrowAngularVelocityScale: 1 m_ForceGravityOnDetach: 0 m_RetainTransformParent: 1 - m_AttachPointCompatibilityMode: 0 m_StartingSingleGrabTransformers: [] m_StartingMultipleGrabTransformers: [] m_AddDefaultGrabTransformers: 1 ---- !u!1001 &3433992509968690860 + m_FarAttachMode: 0 +--- !u!1 &6056682962065602878 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6865308534320718724} + - component: {fileID: 7559751749375618081} + - component: {fileID: 5696302975601547499} + - component: {fileID: 6101957066895999530} + m_Layer: 0 + m_Name: Visuals + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6865308534320718724 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6056682962065602878} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0.102, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4257412417454173056} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &7559751749375618081 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6056682962065602878} + m_Mesh: {fileID: -5076798556035486163, guid: e3493855a112e8248a2ea2c9828a51a1, type: 3} +--- !u!23 &5696302975601547499 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6056682962065602878} + 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: 76618f7490c40334fa7b685859587d2e, 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!64 &6101957066895999530 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6056682962065602878} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: -5076798556035486163, guid: e3493855a112e8248a2ea2c9828a51a1, type: 3} +--- !u!1001 &6087490268632961608 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: m_TransformParent: {fileID: 4257412417454173056} m_Modifications: - - target: {fileID: 3774509235512974894, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + - target: {fileID: 3774509235512974894, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_Name - value: Interaction Affordance + value: Highlight Interaction Affordance objectReference: {fileID: 0} - - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_RootOrder - value: 0 + value: 1 objectReference: {fileID: 0} - - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 7396278978564332023, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + - target: {fileID: 7396278978564332023, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_Renderer value: - objectReference: {fileID: 261398194632122527} - - target: {fileID: 8634317094661461186, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + objectReference: {fileID: 5696302975601547499} + - target: {fileID: 8634317094661461186, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_InteractableSource value: objectReference: {fileID: 4257412417454173058} m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} ---- !u!4 &7448573029504399239 stripped + m_SourcePrefab: {fileID: 100100000, guid: 6b12f432fa58c224baf0d659706362be, type: 3} +--- !u!4 &2054279627301505891 stripped Transform: - m_CorrespondingSourceObject: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} - m_PrefabInstance: {fileID: 3433992509968690860} + m_CorrespondingSourceObject: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + m_PrefabInstance: {fileID: 6087490268632961608} m_PrefabAsset: {fileID: 0} diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Interactable Velocity Tracked Wedge.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Pot.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Interactable Velocity Tracked Wedge.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Pot.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Push Button.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Push Button.prefab similarity index 95% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Push Button.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Push Button.prefab index b02e11d0..e69e88b9 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Push Button.prefab +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Push Button.prefab @@ -232,9 +232,6 @@ MonoBehaviour: m_EditorClassIdentifier: m_InteractionManager: {fileID: 0} m_Colliders: [] - m_InteractionLayerMask: - serializedVersion: 2 - m_Bits: 4294967295 m_InteractionLayers: m_Bits: 1 m_DistanceCalculationMode: 1 @@ -293,33 +290,6 @@ MonoBehaviour: m_StartingHoverFilters: [] m_StartingSelectFilters: [] m_StartingInteractionStrengthFilters: [] - m_OnFirstHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnLastHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectEntered: - m_PersistentCalls: - m_Calls: [] - m_OnSelectExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectCanceled: - m_PersistentCalls: - m_Calls: [] - m_OnActivate: - m_PersistentCalls: - m_Calls: [] - m_OnDeactivate: - m_PersistentCalls: - m_Calls: [] --- !u!114 &2043066480405472099 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Push Button.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Push Button.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Push Button.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Push Button.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Torus-Cut.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Torus-Cut.prefab new file mode 100644 index 00000000..6278d37d --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Torus-Cut.prefab @@ -0,0 +1,352 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &4134975161117009423 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3614616631432527029} + - component: {fileID: 398121313250456336} + - component: {fileID: 2477716950891808730} + - component: {fileID: 7698751657578538951} + m_Layer: 0 + m_Name: Torus Cut + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3614616631432527029 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4134975161117009423} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 10, y: 10, z: 10} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4164222508261582693} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &398121313250456336 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4134975161117009423} + m_Mesh: {fileID: -4972316377868672352, guid: 46c1c422ff6897f49a404b012dc924d3, type: 3} +--- !u!23 &2477716950891808730 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4134975161117009423} + 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: 76618f7490c40334fa7b685859587d2e, 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!64 &7698751657578538951 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4134975161117009423} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: -4972316377868672352, guid: 46c1c422ff6897f49a404b012dc924d3, type: 3} +--- !u!1 &7128330710180914111 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4164222508261582693} + - component: {fileID: 440870316915411584} + - component: {fileID: 5561339668604436703} + m_Layer: 0 + m_Name: Torus-Cut + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4164222508261582693 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7128330710180914111} + m_LocalRotation: {x: 0.40557984, y: -0.5792279, z: -0.5792279, w: 0.40557984} + m_LocalPosition: {x: -0.95, y: 1.18, z: -4.578} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3614616631432527029} + - {fileID: 7550081162039136068} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 200, y: 90, z: 90} +--- !u!54 &440870316915411584 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7128330710180914111} + serializedVersion: 2 + m_Mass: 2 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 1 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &5561339668604436703 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7128330710180914111} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0ad34abafad169848a38072baa96cdb2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_InteractionManager: {fileID: 0} + m_Colliders: [] + m_InteractionLayers: + m_Bits: 1 + m_DistanceCalculationMode: 1 + m_SelectMode: 1 + m_FocusMode: 1 + m_CustomReticle: {fileID: 0} + m_AllowGazeInteraction: 0 + m_AllowGazeSelect: 0 + m_OverrideGazeTimeToSelect: 0 + m_GazeTimeToSelect: 0.5 + m_OverrideTimeToAutoDeselectGaze: 0 + m_TimeToAutoDeselectGaze: 3 + m_AllowGazeAssistance: 0 + m_FirstHoverEntered: + m_PersistentCalls: + m_Calls: [] + m_LastHoverExited: + m_PersistentCalls: + m_Calls: [] + m_HoverEntered: + m_PersistentCalls: + m_Calls: [] + m_HoverExited: + m_PersistentCalls: + m_Calls: [] + m_FirstSelectEntered: + m_PersistentCalls: + m_Calls: [] + m_LastSelectExited: + m_PersistentCalls: + m_Calls: [] + m_SelectEntered: + m_PersistentCalls: + m_Calls: [] + m_SelectExited: + m_PersistentCalls: + m_Calls: [] + m_FirstFocusEntered: + m_PersistentCalls: + m_Calls: [] + m_LastFocusExited: + m_PersistentCalls: + m_Calls: [] + m_FocusEntered: + m_PersistentCalls: + m_Calls: [] + m_FocusExited: + m_PersistentCalls: + m_Calls: [] + m_Activated: + m_PersistentCalls: + m_Calls: [] + m_Deactivated: + m_PersistentCalls: + m_Calls: [] + m_StartingHoverFilters: [] + m_StartingSelectFilters: [] + m_StartingInteractionStrengthFilters: [] + m_AttachTransform: {fileID: 0} + m_SecondaryAttachTransform: {fileID: 0} + m_UseDynamicAttach: 1 + m_MatchAttachPosition: 1 + m_MatchAttachRotation: 1 + m_SnapToColliderVolume: 1 + m_ReinitializeDynamicAttachEverySingleGrab: 1 + m_AttachEaseInTime: 0.15 + m_MovementType: 2 + m_VelocityDamping: 1 + m_VelocityScale: 1 + m_AngularVelocityDamping: 1 + m_AngularVelocityScale: 1 + m_TrackPosition: 1 + m_SmoothPosition: 0 + m_SmoothPositionAmount: 8 + m_TightenPosition: 0.1 + m_TrackRotation: 1 + m_SmoothRotation: 0 + m_SmoothRotationAmount: 8 + m_TightenRotation: 0.1 + m_TrackScale: 1 + m_SmoothScale: 0 + m_SmoothScaleAmount: 8 + m_TightenScale: 0.1 + m_ThrowOnDetach: 1 + m_ThrowSmoothingDuration: 0.25 + m_ThrowSmoothingCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 2 + outSlope: 2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_ThrowVelocityScale: 1 + m_ThrowAngularVelocityScale: 1 + m_ForceGravityOnDetach: 0 + m_RetainTransformParent: 1 + m_StartingSingleGrabTransformers: [] + m_StartingMultipleGrabTransformers: [] + m_AddDefaultGrabTransformers: 1 + m_FarAttachMode: 1 +--- !u!1001 &2323328105576732271 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 4164222508261582693} + m_Modifications: + - target: {fileID: 3774509235512974894, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_Name + value: Highlight Interaction Affordance + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7396278978564332023, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_Renderer + value: + objectReference: {fileID: 2477716950891808730} + - target: {fileID: 8634317094661461186, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + propertyPath: m_InteractableSource + value: + objectReference: {fileID: 5561339668604436703} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 6b12f432fa58c224baf0d659706362be, type: 3} +--- !u!4 &7550081162039136068 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + m_PrefabInstance: {fileID: 2323328105576732271} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Torus-Cut.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Torus-Cut.prefab.meta new file mode 100644 index 00000000..3b09b547 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Torus-Cut.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 833cb867d186193418fc107735ae3139 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Interactable Kinematic Torus.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Torus.prefab similarity index 77% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Interactable Kinematic Torus.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Torus.prefab index 5d7c630c..e7882dce 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Interactable Kinematic Torus.prefab +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Torus.prefab @@ -32,7 +32,7 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 7517549319329480229} - m_RootOrder: 1 + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &950121296977689675 MeshFilter: @@ -62,7 +62,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 5561349426305759274, guid: f077c919501a44778a0c2edb6eb1a54a, type: 3} + - {fileID: 2100000, guid: 76618f7490c40334fa7b685859587d2e, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -109,8 +109,9 @@ GameObject: - component: {fileID: 7517549319329480229} - component: {fileID: 7517549319329480235} - component: {fileID: 7517549319329480228} + - component: {fileID: 3569311851364831330} m_Layer: 0 - m_Name: Interactable Kinematic Torus + m_Name: Torus m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -128,8 +129,8 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 5017849197920860822} - {fileID: 6369939804988844616} + - {fileID: 3847192154765675287} m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -163,9 +164,6 @@ MonoBehaviour: m_EditorClassIdentifier: m_InteractionManager: {fileID: 0} m_Colliders: [] - m_InteractionLayerMask: - serializedVersion: 2 - m_Bits: 1 m_InteractionLayers: m_Bits: 1 m_DistanceCalculationMode: 1 @@ -224,33 +222,6 @@ MonoBehaviour: m_StartingHoverFilters: [] m_StartingSelectFilters: [] m_StartingInteractionStrengthFilters: [] - m_OnFirstHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnLastHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectEntered: - m_PersistentCalls: - m_Calls: [] - m_OnSelectExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectCanceled: - m_PersistentCalls: - m_Calls: [] - m_OnActivate: - m_PersistentCalls: - m_Calls: [] - m_OnDeactivate: - m_PersistentCalls: - m_Calls: [] m_AttachTransform: {fileID: 0} m_SecondaryAttachTransform: {fileID: 0} m_UseDynamicAttach: 1 @@ -297,77 +268,100 @@ MonoBehaviour: m_ThrowAngularVelocityScale: 1 m_ForceGravityOnDetach: 0 m_RetainTransformParent: 1 - m_AttachPointCompatibilityMode: 0 m_StartingSingleGrabTransformers: [] m_StartingMultipleGrabTransformers: [] m_AddDefaultGrabTransformers: 1 ---- !u!1001 &962542200794522557 + m_FarAttachMode: 0 +--- !u!114 &3569311851364831330 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7517549319329480230} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0a1302d0d134fa8a2a5b3bf4aec3c20, type: 3} + m_Name: + m_EditorClassIdentifier: + m_PermittedDisplacementAxes: 7 + m_ConstrainedAxisDisplacementMode: 1 + m_TwoHandedRotationMode: 1 + m_AllowOneHandedScaling: 1 + m_AllowTwoHandedScaling: 0 + m_OneHandedScaleSpeed: 0.5 + m_ThresholdMoveRatioForScale: 0.05 + m_ClampScaling: 1 + m_MinimumScaleRatio: 0.25 + m_MaximumScaleRatio: 2 + m_ScaleMultiplier: 0.25 +--- !u!1001 &9050723057493692988 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: m_TransformParent: {fileID: 7517549319329480229} m_Modifications: - - target: {fileID: 3774509235512974894, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + - target: {fileID: 3774509235512974894, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_Name - value: Interaction Affordance + value: Highlight Interaction Affordance objectReference: {fileID: 0} - - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_RootOrder - value: 0 + value: 1 objectReference: {fileID: 0} - - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + - target: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 7396278978564332023, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + - target: {fileID: 7396278978564332023, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_Renderer value: objectReference: {fileID: 8321842482108814056} - - target: {fileID: 8634317094661461186, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + - target: {fileID: 8634317094661461186, guid: 6b12f432fa58c224baf0d659706362be, type: 3} propertyPath: m_InteractableSource value: objectReference: {fileID: 7517549319329480228} m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} ---- !u!4 &5017849197920860822 stripped + m_SourcePrefab: {fileID: 100100000, guid: 6b12f432fa58c224baf0d659706362be, type: 3} +--- !u!4 &3847192154765675287 stripped Transform: - m_CorrespondingSourceObject: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} - m_PrefabInstance: {fileID: 962542200794522557} + m_CorrespondingSourceObject: {fileID: 5258331117553129771, guid: 6b12f432fa58c224baf0d659706362be, type: 3} + m_PrefabInstance: {fileID: 9050723057493692988} m_PrefabAsset: {fileID: 0} diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Interactable Kinematic Torus.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Torus.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Interactable Kinematic Torus.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Torus.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Interaction Affordance.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/InteractionAffordance.prefab similarity index 99% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Interaction Affordance.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/InteractionAffordance.prefab index 8ac8cbc5..41eff283 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Interaction Affordance.prefab +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/InteractionAffordance.prefab @@ -11,7 +11,7 @@ GameObject: - component: {fileID: 5258331117553129771} - component: {fileID: 8634317094661461186} m_Layer: 0 - m_Name: Interaction Affordance + m_Name: InteractionAffordance m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Interaction Affordance.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/InteractionAffordance.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Interactables/Interaction Affordance.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/InteractionAffordance.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Poke Interactions Sample.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Poke Interactions Sample.prefab new file mode 100644 index 00000000..823d787a --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Poke Interactions Sample.prefab @@ -0,0 +1,5557 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &670559717724737759 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 670559717724737752} + - component: {fileID: 670559717724737754} + - component: {fileID: 670559717724737753} + m_Layer: 0 + m_Name: Particle System + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &670559717724737752 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 670559717724737759} + m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0.003, y: -0.01, z: -0.011} + m_LocalScale: {x: 0.1, y: 0.10000001, z: 0.10000001} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5278684166855141785} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: -90, y: 0, z: 0} +--- !u!198 &670559717724737754 +ParticleSystem: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 670559717724737759} + serializedVersion: 8 + lengthInSec: 5 + simulationSpeed: 1 + stopAction: 0 + cullingMode: 0 + ringBufferMode: 0 + ringBufferLoopRange: {x: 0, y: 1} + emitterVelocityMode: 0 + looping: 1 + prewarm: 0 + playOnAwake: 0 + useUnscaledTime: 0 + autoRandomSeed: 1 + startDelay: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + moveWithTransform: 0 + moveWithCustomTransform: {fileID: 0} + scalingMode: 1 + randomSeed: 0 + InitialModule: + serializedVersion: 3 + enabled: 1 + startLifetime: + serializedVersion: 2 + minMaxState: 0 + scalar: 5 + minScalar: 5 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startSpeed: + serializedVersion: 2 + minMaxState: 0 + scalar: 10 + minScalar: 5 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startColor: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 0.9622642, g: 0.19517623, b: 0.20951429, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + startSize: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startSizeY: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startSizeZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startRotationX: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + startRotationY: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + startRotation: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + randomizeRotationDirection: 0 + maxNumParticles: 1000 + customEmitterVelocity: {x: 0, y: 0, z: 0} + size3D: 0 + rotation3D: 0 + gravityModifier: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + ShapeModule: + serializedVersion: 6 + enabled: 1 + type: 4 + angle: 13.08 + length: 5 + boxThickness: {x: 0, y: 0, z: 0} + radiusThickness: 0 + donutRadius: 0.2 + m_Position: {x: 0, y: 0, z: 0} + m_Rotation: {x: 0, y: 0, z: 0} + m_Scale: {x: 1, y: 1, z: 1} + placementMode: 0 + m_MeshMaterialIndex: 0 + m_MeshNormalOffset: 0 + m_MeshSpawn: + mode: 0 + spread: 0 + speed: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Mesh: {fileID: 0} + m_MeshRenderer: {fileID: 0} + m_SkinnedMeshRenderer: {fileID: 0} + m_Sprite: {fileID: 0} + m_SpriteRenderer: {fileID: 0} + m_UseMeshMaterialIndex: 0 + m_UseMeshColors: 1 + alignToDirection: 0 + m_Texture: {fileID: 0} + m_TextureClipChannel: 3 + m_TextureClipThreshold: 0 + m_TextureUVChannel: 0 + m_TextureColorAffectsParticles: 1 + m_TextureAlphaAffectsParticles: 1 + m_TextureBilinearFiltering: 0 + randomDirectionAmount: 0 + sphericalDirectionAmount: 0 + randomPositionAmount: 0 + radius: + value: 0.5 + mode: 0 + spread: 0 + speed: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + arc: + value: 360 + mode: 0 + spread: 0 + speed: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + EmissionModule: + enabled: 1 + serializedVersion: 4 + rateOverTime: + serializedVersion: 2 + minMaxState: 0 + scalar: 50 + minScalar: 10 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + rateOverDistance: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + m_BurstCount: 0 + m_Bursts: [] + SizeModule: + enabled: 1 + curve: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.1511612 + inSlope: 2 + outSlope: 2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 0.054507792 + value: 0.57502365 + inSlope: -2.1679857 + outSlope: -2.1679857 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.07063622 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + RotationModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + curve: + serializedVersion: 2 + minMaxState: 0 + scalar: 0.7853982 + minScalar: 0.7853982 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + ColorModule: + enabled: 0 + gradient: + serializedVersion: 2 + minMaxState: 1 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + UVModule: + serializedVersion: 2 + enabled: 0 + mode: 0 + timeMode: 0 + fps: 30 + frameOverTime: + serializedVersion: 2 + minMaxState: 1 + scalar: 0.9999 + minScalar: 0.9999 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startFrame: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + speedRange: {x: 0, y: 1} + tilesX: 1 + tilesY: 1 + animationType: 0 + rowIndex: 0 + cycles: 1 + uvChannelMask: -1 + rowMode: 1 + sprites: + - sprite: {fileID: 0} + flipU: 0 + flipV: 0 + VelocityModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + z: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + orbitalX: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + orbitalY: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + orbitalZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + orbitalOffsetX: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + orbitalOffsetY: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + orbitalOffsetZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + radial: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + speedModifier: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + inWorldSpace: 0 + InheritVelocityModule: + enabled: 0 + m_Mode: 0 + m_Curve: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + LifetimeByEmitterSpeedModule: + enabled: 0 + m_Curve: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: -0.8 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.2 + inSlope: -0.8 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Range: {x: 0, y: 1} + ForceModule: + enabled: 1 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: -9.8 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + z: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + inWorldSpace: 1 + randomizePerFrame: 0 + ExternalForcesModule: + serializedVersion: 2 + enabled: 0 + multiplierCurve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + influenceFilter: 0 + influenceMask: + serializedVersion: 2 + m_Bits: 4294967295 + influenceList: [] + ClampVelocityModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + magnitude: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxis: 0 + inWorldSpace: 0 + multiplyDragByParticleSize: 1 + multiplyDragByParticleVelocity: 1 + dampen: 0 + drag: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + NoiseModule: + enabled: 0 + strength: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + strengthY: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + strengthZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + frequency: 0.5 + damping: 1 + octaves: 1 + octaveMultiplier: 0.5 + octaveScale: 2 + quality: 2 + scrollSpeed: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + remap: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -1 + inSlope: 0 + outSlope: 2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remapY: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -1 + inSlope: 0 + outSlope: 2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remapZ: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -1 + inSlope: 0 + outSlope: 2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remapEnabled: 0 + positionAmount: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + rotationAmount: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + sizeAmount: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + SizeBySpeedModule: + enabled: 0 + curve: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + range: {x: 0, y: 1} + separateAxes: 0 + RotationBySpeedModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + curve: + serializedVersion: 2 + minMaxState: 0 + scalar: 0.7853982 + minScalar: 0.7853982 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + range: {x: 0, y: 1} + ColorBySpeedModule: + enabled: 0 + gradient: + serializedVersion: 2 + minMaxState: 1 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + range: {x: 0, y: 1} + CollisionModule: + enabled: 0 + serializedVersion: 4 + type: 0 + collisionMode: 0 + colliderForce: 0 + multiplyColliderForceByParticleSize: 0 + multiplyColliderForceByParticleSpeed: 0 + multiplyColliderForceByCollisionAngle: 1 + m_Planes: [] + m_Dampen: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + m_Bounce: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_EnergyLossOnCollision: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minKillSpeed: 0 + maxKillSpeed: 10000 + radiusScale: 1 + collidesWith: + serializedVersion: 2 + m_Bits: 4294967295 + maxCollisionShapes: 256 + quality: 0 + voxelSize: 0.5 + collisionMessages: 0 + collidesWithDynamic: 1 + interiorCollisions: 0 + TriggerModule: + enabled: 0 + serializedVersion: 2 + inside: 1 + outside: 0 + enter: 0 + exit: 0 + colliderQueryMode: 0 + radiusScale: 1 + primitives: [] + SubModule: + serializedVersion: 2 + enabled: 0 + subEmitters: + - serializedVersion: 3 + emitter: {fileID: 0} + type: 0 + properties: 0 + emitProbability: 1 + LightsModule: + enabled: 0 + ratio: 0 + light: {fileID: 0} + randomDistribution: 1 + color: 1 + range: 1 + intensity: 1 + rangeCurve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + intensityCurve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + maxLights: 20 + TrailModule: + enabled: 0 + mode: 0 + ratio: 1 + lifetime: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minVertexDistance: 0.2 + textureMode: 0 + ribbonCount: 1 + shadowBias: 0.5 + worldSpace: 0 + dieWithParticles: 1 + sizeAffectsWidth: 1 + sizeAffectsLifetime: 0 + inheritParticleColor: 1 + generateLightingData: 0 + splitSubEmitterRibbons: 0 + attachRibbonsToTransform: 0 + colorOverLifetime: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + widthOverTrail: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + 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: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + colorOverTrail: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + CustomDataModule: + enabled: 0 + mode0: 0 + vectorComponentCount0: 4 + color0: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + colorLabel0: Color + vector0_0: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + vectorLabel0_0: X + vector0_1: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + vectorLabel0_1: Y + vector0_2: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + vectorLabel0_2: Z + vector0_3: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + vectorLabel0_3: W + mode1: 0 + vectorComponentCount1: 4 + color1: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + colorLabel1: Color + vector1_0: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + vectorLabel1_0: X + vector1_1: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + vectorLabel1_1: Y + vector1_2: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + vectorLabel1_2: Z + vector1_3: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + 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 + vectorLabel1_3: W +--- !u!199 &670559717724737753 +ParticleSystemRenderer: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 670559717724737759} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10301, 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_RenderMode: 0 + m_MeshDistribution: 0 + m_SortMode: 0 + m_MinParticleSize: 0 + m_MaxParticleSize: 0.5 + m_CameraVelocityScale: 0 + m_VelocityScale: 0 + m_LengthScale: 2 + m_SortingFudge: 0 + m_NormalDirection: 1 + m_ShadowBias: 0 + m_RenderAlignment: 0 + m_Pivot: {x: 0, y: 0, z: 0} + m_Flip: {x: 0, y: 0, z: 0} + m_UseCustomVertexStreams: 0 + m_EnableGPUInstancing: 1 + m_ApplyActiveColorSpace: 1 + m_AllowRoll: 1 + m_FreeformStretching: 0 + m_RotateWithStretchDirection: 1 + m_VertexStreams: 00010304 + m_Mesh: {fileID: 0} + m_Mesh1: {fileID: 0} + m_Mesh2: {fileID: 0} + m_Mesh3: {fileID: 0} + m_MeshWeighting: 1 + m_MeshWeighting1: 1 + m_MeshWeighting2: 1 + m_MeshWeighting3: 1 + m_MaskInteraction: 0 +--- !u!1 &670559717807210331 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 670559717807210308} + - component: {fileID: 670559717807210310} + - component: {fileID: 670559717807210309} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &670559717807210308 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 670559717807210331} + 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: 670559718557539513} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &670559717807210310 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 670559717807210331} + m_CullTransparentMesh: 1 +--- !u!114 &670559717807210309 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 670559717807210331} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.16862746, g: 0.16862746, b: 0.16862746, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &670559718557539512 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 670559718557539513} + - component: {fileID: 670559718557539494} + - component: {fileID: 670559718557539493} + - component: {fileID: 670559718557539492} + - component: {fileID: 670559718557539515} + - component: {fileID: 670559718557539514} + m_Layer: 5 + m_Name: "\uF702UI Canvas" + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &670559718557539513 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 670559718557539512} + m_LocalRotation: {x: 0, y: 1, z: 0, w: 0} + m_LocalPosition: {x: 0, y: 0, z: 0.0638} + m_LocalScale: {x: 0.0021239999, y: 0.0021239999, z: 0.0021239999} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 670559717807210308} + - {fileID: 670559718933509770} + m_Father: {fileID: 5278684167267454861} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0.0002, y: -0.0508} + m_SizeDelta: {x: 42.1, y: 20.3} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!223 &670559718557539494 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 670559718557539512} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 2 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!114 &670559718557539493 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 670559718557539512} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 10 + m_PresetInfoIsWorld: 1 +--- !u!114 &670559718557539492 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 670559718557539512} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 55 +--- !u!114 &670559718557539515 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 670559718557539512} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7951c64acb0fa62458bf30a60089fe2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 0 + m_CheckFor2DOcclusion: 0 + m_CheckFor3DOcclusion: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 55 + m_RaycastTriggerInteraction: 1 +--- !u!114 &670559718557539514 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 670559718557539512} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ba6ff5e7c92519444bc2a7ca46558963, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Text: {fileID: 670559718933509771} +--- !u!1 &670559718933509769 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 670559718933509770} + - component: {fileID: 670559718933509812} + - component: {fileID: 670559718933509771} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &670559718933509770 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 670559718933509769} + 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: 670559718557539513} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -10, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &670559718933509812 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 670559718933509769} + m_CullTransparentMesh: 1 +--- !u!114 &670559718933509771 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 670559718933509769} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 0 +--- !u!1 &670559718997833774 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 670559718997833775} + m_Layer: 0 + m_Name: Poke Interactions Sample + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &670559718997833775 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 670559718997833774} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1.5, y: 1.13, z: -4.45} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5278684166855141785} + - {fileID: 5278684167143734386} + - {fileID: 5278684167267454861} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &670559717111966434 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 670559718997833775} + m_Modifications: + - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_LocalPosition.x + value: -0.5 + objectReference: {fileID: 0} + - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_LocalPosition.y + value: 0.0768 + objectReference: {fileID: 0} + - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_LocalPosition.z + value: 0.091 + objectReference: {fileID: 0} + - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4922582553321831162, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_Name + value: Push Button + objectReference: {fileID: 0} + - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_SelectEntered.m_PersistentCalls.m_Calls.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_SelectEntered.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_SelectEntered.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 670559718557539514} + - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_SelectEntered.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_SelectEntered.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: IncrementText + objectReference: {fileID: 0} + - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_SelectEntered.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName + value: UnityEngine.XR.Interaction.Toolkit.Samples.StarterAssets.IncrementUIText, + Unity.XR.Interaction.Toolkit.Samples.StarterAssets + objectReference: {fileID: 0} + - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_SelectEntered.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} +--- !u!4 &5278684167267454861 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + m_PrefabInstance: {fileID: 670559717111966434} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &670559717130836253 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 670559718997833775} + m_Modifications: + - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_LocalPosition.x + value: 0.028 + objectReference: {fileID: 0} + - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_LocalPosition.y + value: 0.0768 + objectReference: {fileID: 0} + - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_LocalPosition.z + value: 0.091 + objectReference: {fileID: 0} + - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4922582553321831162, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_Name + value: Push Button + objectReference: {fileID: 0} + - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_SelectEntered.m_PersistentCalls.m_Calls.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_SelectEntered.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_SelectEntered.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 670559717130836248} + - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_SelectEntered.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_SelectEntered.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: Play + objectReference: {fileID: 0} + - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_SelectEntered.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName + value: UnityEngine.AudioSource, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_SelectEntered.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 0} + - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_SelectEntered.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} +--- !u!4 &5278684167143734386 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + m_PrefabInstance: {fileID: 670559717130836253} + m_PrefabAsset: {fileID: 0} +--- !u!1 &5557099179639923687 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 4922582553321831162, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + m_PrefabInstance: {fileID: 670559717130836253} + m_PrefabAsset: {fileID: 0} +--- !u!82 &670559717130836248 +AudioSource: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5557099179639923687} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 8300000, guid: 16fba6d30ed741d4a9fdd6e79ee2f3ac, type: 3} + m_PlayOnAwake: 0 + 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!1001 &670559718849154294 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 670559718997833775} + m_Modifications: + - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_LocalPosition.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_LocalPosition.y + value: 0.0768 + objectReference: {fileID: 0} + - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_LocalPosition.z + value: 0.091 + objectReference: {fileID: 0} + - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4922582553321831162, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_Name + value: Push Button + objectReference: {fileID: 0} + - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_SelectExited.m_PersistentCalls.m_Calls.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_SelectEntered.m_PersistentCalls.m_Calls.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_SelectExited.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_SelectEntered.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_SelectExited.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 670559717724737754} + - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_SelectEntered.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 670559717724737754} + - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_SelectExited.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_SelectEntered.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_SelectExited.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: Stop + objectReference: {fileID: 0} + - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_SelectEntered.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: Play + objectReference: {fileID: 0} + - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_SelectExited.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName + value: UnityEngine.ParticleSystem, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_SelectEntered.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName + value: UnityEngine.ParticleSystem, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_SelectEntered.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_BoolArgument + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_SelectExited.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 5419331889293473514, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + propertyPath: m_SelectEntered.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} +--- !u!4 &5278684166855141785 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4616165200164398447, guid: 76f3439a0ae796e4b81bee3f91f888ee, type: 3} + m_PrefabInstance: {fileID: 670559718849154294} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Poke Interactions Sample.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Poke Interactions Sample.prefab.meta new file mode 100644 index 00000000..6876bb3a --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Poke Interactions Sample.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 88246f8e9c3765d49be8da34eca3c630 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Teleport.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Teleport.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Teleport.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Teleport.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Teleport/Snapping Teleport Anchor.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Teleport/Snap Teleport Anchor.prefab similarity index 62% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Teleport/Snapping Teleport Anchor.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Teleport/Snap Teleport Anchor.prefab index f8add975..51b39198 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Teleport/Snapping Teleport Anchor.prefab +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Teleport/Snap Teleport Anchor.prefab @@ -135,8 +135,78 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7e2f4617667341945b5a7756e14b62d0, type: 3} m_Name: m_EditorClassIdentifier: +--- !u!23 &1208746707607620209 stripped +MeshRenderer: + m_CorrespondingSourceObject: {fileID: 4368389211439169982, guid: fad94b617f0540568dbf4c9c4011248c, type: 3} + m_PrefabInstance: {fileID: 3195856363542219727} + m_PrefabAsset: {fileID: 0} --- !u!4 &6707876468356395517 stripped Transform: m_CorrespondingSourceObject: {fileID: 8164705571879959090, guid: fad94b617f0540568dbf4c9c4011248c, type: 3} m_PrefabInstance: {fileID: 3195856363542219727} m_PrefabAsset: {fileID: 0} +--- !u!1001 &3444410858110733116 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 6707876468356395517} + m_Modifications: + - target: {fileID: 3774509235512974894, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_Name + value: Interaction Affordance + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_LocalPosition.x + value: -6.4 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_LocalPosition.z + value: -6.1450005 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_LocalRotation.w + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_LocalRotation.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5258331117553129771, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7396278978564332023, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_Renderer + value: + objectReference: {fileID: 1208746707607620209} + - target: {fileID: 8634317094661461186, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} + propertyPath: m_InteractableSource + value: + objectReference: {fileID: 812628894447230767} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: eb9104ef66b7305468adb3697fdeed5e, type: 3} diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Teleport/Snapping Teleport Anchor.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Teleport/Snap Teleport Anchor.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Teleport/Snapping Teleport Anchor.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Teleport/Snap Teleport Anchor.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Teleport/Teleport Anchor.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Teleport/Teleport Anchor.prefab similarity index 90% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Teleport/Teleport Anchor.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Teleport/Teleport Anchor.prefab index 6a9e1393..3d6826ae 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Teleport/Teleport Anchor.prefab +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Teleport/Teleport Anchor.prefab @@ -48,9 +48,6 @@ MonoBehaviour: m_EditorClassIdentifier: m_InteractionManager: {fileID: 0} m_Colliders: [] - m_InteractionLayerMask: - serializedVersion: 2 - m_Bits: 2147483648 m_InteractionLayers: m_Bits: 2147483648 m_DistanceCalculationMode: 1 @@ -109,33 +106,6 @@ MonoBehaviour: m_StartingHoverFilters: [] m_StartingSelectFilters: [] m_StartingInteractionStrengthFilters: [] - m_OnFirstHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnLastHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectEntered: - m_PersistentCalls: - m_Calls: [] - m_OnSelectExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectCanceled: - m_PersistentCalls: - m_Calls: [] - m_OnActivate: - m_PersistentCalls: - m_Calls: [] - m_OnDeactivate: - m_PersistentCalls: - m_Calls: [] m_TeleportationProvider: {fileID: 0} m_MatchOrientation: 2 m_MatchDirectionalInput: 0 @@ -208,7 +178,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: 11cd62256b1d470f922b2c8e6446cc77, type: 3} + - {fileID: 2100000, guid: fd3c5d8fce991e04f9c11109dde95b3b, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Teleport/Teleport Anchor.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Teleport/Teleport Anchor.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Teleport/Teleport Anchor.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Teleport/Teleport Anchor.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Teleport/Teleport Area.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Teleport/Teleport Area.prefab similarity index 88% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Teleport/Teleport Area.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Teleport/Teleport Area.prefab index 40d63f86..76b651be 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Teleport/Teleport Area.prefab +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Teleport/Teleport Area.prefab @@ -48,9 +48,6 @@ MonoBehaviour: m_InteractionManager: {fileID: 0} m_Colliders: - {fileID: 4489918388059320994} - m_InteractionLayerMask: - serializedVersion: 2 - m_Bits: 4294967295 m_InteractionLayers: m_Bits: 2147483648 m_DistanceCalculationMode: 1 @@ -109,33 +106,6 @@ MonoBehaviour: m_StartingHoverFilters: [] m_StartingSelectFilters: [] m_StartingInteractionStrengthFilters: [] - m_OnFirstHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnLastHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectEntered: - m_PersistentCalls: - m_Calls: [] - m_OnSelectExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectCanceled: - m_PersistentCalls: - m_Calls: [] - m_OnActivate: - m_PersistentCalls: - m_Calls: [] - m_OnDeactivate: - m_PersistentCalls: - m_Calls: [] m_TeleportationProvider: {fileID: 0} m_MatchOrientation: 0 m_MatchDirectionalInput: 1 @@ -207,7 +177,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: 11cd62256b1d470f922b2c8e6446cc77, type: 3} + - {fileID: 2100000, guid: be1e10ce8a6f8cc4fb08d11c7f722469, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Teleport/Teleport Area.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Teleport/Teleport Area.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Teleport/Teleport Area.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Teleport/Teleport Area.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Teleportation Environment.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Teleportation Environment.prefab similarity index 98% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Teleportation Environment.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Teleportation Environment.prefab index 6239b306..120a8c7a 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Teleportation Environment.prefab +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Teleportation Environment.prefab @@ -99,7 +99,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 5561349426305759274, guid: f077c919501a44778a0c2edb6eb1a54a, type: 3} + - {fileID: 2100000, guid: bbb56ac3cf3c61a46ab3887c0fdbda8f, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -141,6 +141,10 @@ PrefabInstance: m_Modification: m_TransformParent: {fileID: 1565887663814566041} m_Modifications: + - target: {fileID: 306423734865422085, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 830d28b607e09a2479e2005c2eb5c75e, type: 2} - target: {fileID: 4266640295717640279, guid: beb4e2871579447497fe41dfb108e2cd, type: 3} propertyPath: m_Name value: Teleport Area diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Teleportation Environment.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Teleportation Environment.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/Teleportation Environment.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/Teleportation Environment.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/UI Sample.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/UI Sample.prefab similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/UI Sample.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/UI Sample.prefab diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/UI Sample.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/UI Sample.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/UI Sample.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/UI Sample.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/UI.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/UI.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/UI.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/UI.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/UI/Dropdown.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/UI/Dropdown.prefab similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/UI/Dropdown.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/UI/Dropdown.prefab diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/UI/Dropdown.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/UI/Dropdown.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/UI/Dropdown.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/UI/Dropdown.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/UI/Icon Button.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/UI/Icon Button.prefab similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/UI/Icon Button.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/UI/Icon Button.prefab diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/UI/Icon Button.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/UI/Icon Button.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/UI/Icon Button.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/UI/Icon Button.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/UI/Icon Toggle.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/UI/Icon Toggle.prefab similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/UI/Icon Toggle.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/UI/Icon Toggle.prefab diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/UI/Icon Toggle.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/UI/Icon Toggle.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/UI/Icon Toggle.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/UI/Icon Toggle.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/UI/Interactive Controls.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/UI/Interactive Controls.prefab similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/UI/Interactive Controls.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/UI/Interactive Controls.prefab diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/UI/Interactive Controls.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/UI/Interactive Controls.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/UI/Interactive Controls.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/UI/Interactive Controls.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/UI/MinMaxSlider.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/UI/MinMaxSlider.prefab similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/UI/MinMaxSlider.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/UI/MinMaxSlider.prefab diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/UI/MinMaxSlider.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/UI/MinMaxSlider.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/UI/MinMaxSlider.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/UI/MinMaxSlider.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/UI/ModalSingleButton.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/UI/ModalSingleButton.prefab similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/UI/ModalSingleButton.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/UI/ModalSingleButton.prefab diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/UI/ModalSingleButton.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/UI/ModalSingleButton.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/UI/ModalSingleButton.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/UI/ModalSingleButton.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/UI/Scroll UI Sample.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/UI/Scroll UI Sample.prefab similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/UI/Scroll UI Sample.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/UI/Scroll UI Sample.prefab diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/UI/Scroll UI Sample.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/UI/Scroll UI Sample.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/UI/Scroll UI Sample.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/UI/Scroll UI Sample.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/UI/Text Toggle.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/UI/Text Toggle.prefab similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/UI/Text Toggle.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/UI/Text Toggle.prefab diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/UI/Text Toggle.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/UI/Text Toggle.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/UI/Text Toggle.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/UI/Text Toggle.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/UI/TextButton.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/UI/TextButton.prefab similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/UI/TextButton.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/UI/TextButton.prefab diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/UI/TextButton.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/UI/TextButton.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Prefabs/UI/TextButton.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Prefabs/UI/TextButton.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Scripts.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Scripts.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Scripts.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Scripts.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Scripts/IncrementUIText.cs b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Scripts/IncrementUIText.cs similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Scripts/IncrementUIText.cs rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Scripts/IncrementUIText.cs diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Scripts/IncrementUIText.cs.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Scripts/IncrementUIText.cs.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Scripts/IncrementUIText.cs.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Scripts/IncrementUIText.cs.meta diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Scripts/MultiAnchorTeleportReticle.cs b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Scripts/MultiAnchorTeleportReticle.cs new file mode 100644 index 00000000..86643c76 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Scripts/MultiAnchorTeleportReticle.cs @@ -0,0 +1,164 @@ +using UnityEngine.UI; +using UnityEngine.XR.Interaction.Toolkit.Interactables; +using UnityEngine.XR.Interaction.Toolkit.Interactables.Visuals; +using UnityEngine.XR.Interaction.Toolkit.Interactors.Visuals; +using UnityEngine.XR.Interaction.Toolkit.Locomotion.Teleportation; + +namespace UnityEngine.XR.Interaction.Toolkit.Samples.StarterAssets +{ + /// + /// A custom reticle for a that displays its progress towards evaluating + /// a destination anchor and an indicator pointing in the direction of the destination anchor. + /// + public class MultiAnchorTeleportReticle : MonoBehaviour, IXRInteractableCustomReticle + { + [SerializeField] + [Tooltip("Filled image that displays the progress towards evaluating a destination anchor.")] + Image m_TimerProgressFilledImage; + + /// + /// image that displays the progress towards evaluating a destination anchor. + /// + public Image timerProgressFilledImage + { + get => m_TimerProgressFilledImage; + set => m_TimerProgressFilledImage = value; + } + + [SerializeField] + [Tooltip("Object that is rotated about its Z axis to point at the destination anchor.")] + GameObject m_DestinationIndicator; + + /// + /// Object that is rotated about its Z axis to point at the destination anchor. + /// + public GameObject destinationIndicator + { + get => m_DestinationIndicator; + set => m_DestinationIndicator = value; + } + + [SerializeField] + [Tooltip("Object that is rotated about its Z axis to point at the potential destination while still evaluating.")] + GameObject m_PotentialDestinationIndicator; + + /// + /// Object that is rotated about its Z axis to point at the potential destination while still evaluating. + /// + public GameObject potentialDestinationIndicator + { + get => m_PotentialDestinationIndicator; + set => m_PotentialDestinationIndicator = value; + } + + [SerializeField] + [Tooltip("The amount of time, in seconds, between updates to the indicator pointing at the potential destination.")] + float m_PotentialIndicatorUpdateFrequency = 0.1f; + + /// + /// The amount of time, in seconds, between updates to the indicator pointing at the potential destination. + /// + public float potentialIndicatorUpdateFrequency + { + get => m_PotentialIndicatorUpdateFrequency; + set => m_PotentialIndicatorUpdateFrequency = value; + } + + TeleportationMultiAnchorVolume m_AnchorVolume; + float m_LastPotentialIndicatorUpdateTime; + + /// + public void OnReticleAttached(XRBaseInteractable interactable, IXRCustomReticleProvider reticleProvider) + { + m_AnchorVolume = interactable as TeleportationMultiAnchorVolume; + m_PotentialDestinationIndicator.SetActive(false); + m_DestinationIndicator.SetActive(false); + m_TimerProgressFilledImage.type = Image.Type.Filled; + m_TimerProgressFilledImage.fillAmount = 0f; + if (m_AnchorVolume == null) + return; + + m_AnchorVolume.destinationAnchorChanged += OnDestinationAnchorChanged; + } + + /// + public void OnReticleDetaching() + { + if (m_AnchorVolume == null) + return; + + m_AnchorVolume.destinationAnchorChanged -= OnDestinationAnchorChanged; + m_AnchorVolume = null; + } + + /// + /// See . + /// + protected void Update() + { + if (m_AnchorVolume == null) + return; + + var destinationAnchor = m_AnchorVolume.destinationAnchor; + if (destinationAnchor != null) + { + PointAtTarget(m_DestinationIndicator.transform, destinationAnchor.position); + return; + } + + m_TimerProgressFilledImage.fillAmount = m_AnchorVolume.destinationEvaluationProgress; + if (Time.time - m_LastPotentialIndicatorUpdateTime >= m_PotentialIndicatorUpdateFrequency) + UpdatePotentialDestinationIndicator(); + } + + void UpdatePotentialDestinationIndicator() + { + m_LastPotentialIndicatorUpdateTime = Time.time; + if (!m_AnchorVolume.destinationEvaluationSettings.Value.pollForDestinationChange) + { + m_PotentialDestinationIndicator.SetActive(false); + return; + } + + var potentialDestinationIndex = m_AnchorVolume.destinationEvaluationFilter.GetDestinationAnchorIndex(m_AnchorVolume); + var anchors = m_AnchorVolume.anchorTransforms; + if (potentialDestinationIndex < 0 || potentialDestinationIndex >= anchors.Count) + { + m_PotentialDestinationIndicator.SetActive(false); + return; + } + + var potentialDestination = anchors[potentialDestinationIndex]; + if (potentialDestination == null) + { + m_PotentialDestinationIndicator.SetActive(false); + return; + } + + m_PotentialDestinationIndicator.SetActive(true); + PointAtTarget(m_PotentialDestinationIndicator.transform, potentialDestination.position); + } + + void OnDestinationAnchorChanged(TeleportationMultiAnchorVolume anchorVolume) + { + var destinationAnchor = anchorVolume.destinationAnchor; + if (destinationAnchor != null) + { + m_TimerProgressFilledImage.fillAmount = 1f; + m_PotentialDestinationIndicator.SetActive(false); + m_DestinationIndicator.SetActive(true); + PointAtTarget(m_DestinationIndicator.transform, destinationAnchor.position); + } + else + { + m_TimerProgressFilledImage.fillAmount = 0f; + m_DestinationIndicator.SetActive(false); + } + } + + static void PointAtTarget(Transform indicatorTransform, Vector3 targetPosition) + { + indicatorTransform.rotation = Quaternion.LookRotation(indicatorTransform.forward, targetPosition - indicatorTransform.position); + } + } +} diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Scripts/XRDeviceSimulatorUI.cs.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Scripts/MultiAnchorTeleportReticle.cs.meta similarity index 83% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Scripts/XRDeviceSimulatorUI.cs.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Scripts/MultiAnchorTeleportReticle.cs.meta index 5306c715..2967af1f 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Scripts/XRDeviceSimulatorUI.cs.meta +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Scripts/MultiAnchorTeleportReticle.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: e8b922481d9264546b97958b2c7cf0a0 +guid: e001d3dc91354f8f8c590b4e1d1d3da9 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Settings.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Settings.meta new file mode 100644 index 00000000..f7170c56 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Settings.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6a8d03fff18a47f4fa22d3d84425d0ed +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Settings/GazeTeleportAnchorFilter.asset b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Settings/GazeTeleportAnchorFilter.asset new file mode 100644 index 00000000..baff5692 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Settings/GazeTeleportAnchorFilter.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:78420fc4ced962da97dfc51346eef2d2064f5f008f4083d95f11741976771b7a +size 1761 diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Settings/GazeTeleportAnchorFilter.asset.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Settings/GazeTeleportAnchorFilter.asset.meta new file mode 100644 index 00000000..706b404b --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Settings/GazeTeleportAnchorFilter.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 14af1242b4be8e2458dd5bee35c06ae5 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Settings/TeleportVolumeDestinationSettings.asset b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Settings/TeleportVolumeDestinationSettings.asset new file mode 100644 index 00000000..3a857d82 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Settings/TeleportVolumeDestinationSettings.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:00e11305c322d390d7383e0008d0361bbd737341b6df1028a80c4fda6349eb99 +size 715 diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Settings/TeleportVolumeDestinationSettings.asset.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Settings/TeleportVolumeDestinationSettings.asset.meta new file mode 100644 index 00000000..a1d21e09 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Settings/TeleportVolumeDestinationSettings.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8d66c9762e1587643a1164368c8a2c58 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Sprites.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Sprites.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Sprites.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Sprites.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Sprites/Asset.png b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Sprites/Asset.png similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Sprites/Asset.png rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Sprites/Asset.png diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Sprites/Asset.png.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Sprites/Asset.png.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Sprites/Asset.png.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Sprites/Asset.png.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Sprites/Checkmark.png b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Sprites/Checkmark.png similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Sprites/Checkmark.png rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Sprites/Checkmark.png diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Sprites/Checkmark.png.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Sprites/Checkmark.png.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Sprites/Checkmark.png.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Sprites/Checkmark.png.meta diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Sprites/Circle_60x60 Outline 4.png b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Sprites/Circle_60x60 Outline 4.png new file mode 100644 index 00000000..057dca14 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Sprites/Circle_60x60 Outline 4.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c9604d852305595e1c82f12451f64ebc6a2c9d8f7a7add09094bab9e7428d21 +size 4796 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Mouse/MouseR.png.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Sprites/Circle_60x60 Outline 4.png.meta similarity index 98% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Mouse/MouseR.png.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Sprites/Circle_60x60 Outline 4.png.meta index f9fc2b6e..4a2b6ad3 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Mouse/MouseR.png.meta +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Sprites/Circle_60x60 Outline 4.png.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 14e910c1fb9c7514a8106ffd25f1d892 +guid: 2f8349570a152884fb6cf7ebdc8c18b3 TextureImporter: internalIDToNameTable: [] externalObjects: {} @@ -38,7 +38,7 @@ TextureImporter: mipBias: 0 wrapU: 1 wrapV: 1 - wrapW: 1 + wrapW: 0 nPOTScale: 0 lightmap: 0 compressionQuality: 50 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Sprites/Circle_60x60_Horizontal.png b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Sprites/Circle_60x60_Horizontal.png similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Sprites/Circle_60x60_Horizontal.png rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Sprites/Circle_60x60_Horizontal.png diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Sprites/Circle_60x60_Horizontal.png.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Sprites/Circle_60x60_Horizontal.png.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Sprites/Circle_60x60_Horizontal.png.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Sprites/Circle_60x60_Horizontal.png.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Sprites/Forward.png b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Sprites/Forward.png similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Sprites/Forward.png rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Sprites/Forward.png diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Sprites/Forward.png.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Sprites/Forward.png.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Sprites/Forward.png.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Sprites/Forward.png.meta diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Sprites/LegibilityMask.png b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Sprites/LegibilityMask.png new file mode 100644 index 00000000..2e0217f9 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Sprites/LegibilityMask.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:95530547506c0c8a54b84ba131a4eb384c257fb9cb555a087fa3445af42f3050 +size 532145 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/HeadDevice/HMD.png.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Sprites/LegibilityMask.png.meta similarity index 96% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/HeadDevice/HMD.png.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Sprites/LegibilityMask.png.meta index f85dc620..0a8fa2db 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/HeadDevice/HMD.png.meta +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Sprites/LegibilityMask.png.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 4eb43321e418951499417cda6141b31a +guid: a85d80c1edb5d2f458d42e79f78055b9 TextureImporter: internalIDToNameTable: [] externalObjects: {} @@ -48,7 +48,7 @@ TextureImporter: alignment: 0 spritePivot: {x: 0.5, y: 0.5} spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteBorder: {x: 712, y: 711, z: 712, w: 711} spriteGenerateFallbackPhysicsShape: 1 alphaUsage: 1 alphaIsTransparency: 1 @@ -63,7 +63,7 @@ TextureImporter: textureFormatSet: 0 ignorePngGamma: 0 applyGammaDecoding: 0 - cookieLightType: 1 + cookieLightType: 0 platformSettings: - serializedVersion: 3 buildTarget: DefaultTexturePlatform diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Sprites/Round Radius 4 Outline.png b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Sprites/Round Radius 4 Outline.png similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Sprites/Round Radius 4 Outline.png rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Sprites/Round Radius 4 Outline.png diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Sprites/Round Radius 4 Outline.png.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Sprites/Round Radius 4 Outline.png.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Sprites/Round Radius 4 Outline.png.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Sprites/Round Radius 4 Outline.png.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Sprites/Round Radius 4.png b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Sprites/Round Radius 4.png similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Sprites/Round Radius 4.png rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Sprites/Round Radius 4.png diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Sprites/Round Radius 4.png.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Sprites/Round Radius 4.png.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/DemoSceneAssets/Sprites/Round Radius 4.png.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Sprites/Round Radius 4.png.meta diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Textures.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Textures.meta new file mode 100644 index 00000000..403b4cfa --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Textures.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 77dbd9eba08ae3342ae6c444454ddded +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Textures/Concrete_Albedo.tif b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Textures/Concrete_Albedo.tif new file mode 100644 index 00000000..2e93426c Binary files /dev/null and b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Textures/Concrete_Albedo.tif differ diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/HeadDevice/HMD_d.png.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Textures/Concrete_Albedo.tif.meta similarity index 92% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/HeadDevice/HMD_d.png.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Textures/Concrete_Albedo.tif.meta index 62f21eae..b4eb7538 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/HeadDevice/HMD_d.png.meta +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Textures/Concrete_Albedo.tif.meta @@ -1,12 +1,12 @@ fileFormatVersion: 2 -guid: 177f60e6b21ff774093004ca330b2241 +guid: 5a327724a94a9674a8a93e6b4e9a6eee TextureImporter: internalIDToNameTable: [] externalObjects: {} serializedVersion: 12 mipmaps: mipMapMode: 0 - enableMipMap: 0 + enableMipMap: 1 sRGBTexture: 1 linearTexture: 0 fadeOut: 0 @@ -36,13 +36,13 @@ TextureImporter: filterMode: 1 aniso: 1 mipBias: 0 - wrapU: 1 - wrapV: 1 + wrapU: 0 + wrapV: 0 wrapW: 0 - nPOTScale: 0 + nPOTScale: 1 lightmap: 0 compressionQuality: 50 - spriteMode: 1 + spriteMode: 0 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 @@ -51,9 +51,9 @@ TextureImporter: spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 alphaUsage: 1 - alphaIsTransparency: 1 + alphaIsTransparency: 0 spriteTessellationDetail: -1 - textureType: 8 + textureType: 0 textureShape: 1 singleChannelComponent: 0 flipbookRows: 1 @@ -63,7 +63,7 @@ TextureImporter: textureFormatSet: 0 ignorePngGamma: 0 applyGammaDecoding: 0 - cookieLightType: 1 + cookieLightType: 0 platformSettings: - serializedVersion: 3 buildTarget: DefaultTexturePlatform @@ -90,7 +90,7 @@ TextureImporter: androidETC2FallbackOverride: 0 forceMaximumCompressionQuality_BC6H_BC7: 0 - serializedVersion: 3 - buildTarget: Android + buildTarget: Server maxTextureSize: 2048 resizeAlgorithm: 0 textureFormat: -1 @@ -102,7 +102,7 @@ TextureImporter: androidETC2FallbackOverride: 0 forceMaximumCompressionQuality_BC6H_BC7: 0 - serializedVersion: 3 - buildTarget: Server + buildTarget: Android maxTextureSize: 2048 resizeAlgorithm: 0 textureFormat: -1 @@ -119,7 +119,7 @@ TextureImporter: outline: [] physicsShape: [] bones: [] - spriteID: 5e97eb03825dee720800000000000000 + spriteID: internalID: 0 vertices: [] indices: diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Textures/Concrete_Metallic.tif b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Textures/Concrete_Metallic.tif new file mode 100644 index 00000000..48d0434a Binary files /dev/null and b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Textures/Concrete_Metallic.tif differ diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands/hand.png.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Textures/Concrete_Metallic.tif.meta similarity index 84% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands/hand.png.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Textures/Concrete_Metallic.tif.meta index cb8be2ef..8e1bcf30 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/UI/Hands/hand.png.meta +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Textures/Concrete_Metallic.tif.meta @@ -1,12 +1,12 @@ fileFormatVersion: 2 -guid: 290d158031622c645aa55f8bd981be12 +guid: f3fb518ec70eb4047b1c6ec34933fbce TextureImporter: internalIDToNameTable: [] externalObjects: {} serializedVersion: 12 mipmaps: mipMapMode: 0 - enableMipMap: 0 + enableMipMap: 1 sRGBTexture: 1 linearTexture: 0 fadeOut: 0 @@ -36,13 +36,13 @@ TextureImporter: filterMode: 1 aniso: 1 mipBias: 0 - wrapU: 1 - wrapV: 1 + wrapU: 0 + wrapV: 0 wrapW: 0 - nPOTScale: 0 + nPOTScale: 1 lightmap: 0 compressionQuality: 50 - spriteMode: 1 + spriteMode: 0 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 @@ -51,9 +51,9 @@ TextureImporter: spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 alphaUsage: 1 - alphaIsTransparency: 1 + alphaIsTransparency: 0 spriteTessellationDetail: -1 - textureType: 8 + textureType: 0 textureShape: 1 singleChannelComponent: 0 flipbookRows: 1 @@ -63,7 +63,7 @@ TextureImporter: textureFormatSet: 0 ignorePngGamma: 0 applyGammaDecoding: 0 - cookieLightType: 1 + cookieLightType: 0 platformSettings: - serializedVersion: 3 buildTarget: DefaultTexturePlatform @@ -90,7 +90,7 @@ TextureImporter: androidETC2FallbackOverride: 0 forceMaximumCompressionQuality_BC6H_BC7: 0 - serializedVersion: 3 - buildTarget: iPhone + buildTarget: Server maxTextureSize: 2048 resizeAlgorithm: 0 textureFormat: -1 @@ -113,25 +113,13 @@ TextureImporter: 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 spriteSheet: serializedVersion: 2 sprites: [] outline: [] physicsShape: [] bones: [] - spriteID: 5e97eb03825dee720800000000000000 + spriteID: internalID: 0 vertices: [] indices: diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Textures/Concrete_Normal.tif b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Textures/Concrete_Normal.tif new file mode 100644 index 00000000..30494008 Binary files /dev/null and b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Textures/Concrete_Normal.tif differ diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Textures/Concrete_Normal.tif.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Textures/Concrete_Normal.tif.meta new file mode 100644 index 00000000..c8f5d8ae --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/DemoSceneAssets/Textures/Concrete_Normal.tif.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: cdebec39dbf81a14688e1de8d12897b4 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + 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: 1 + 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 + 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/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Editor.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Editor.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Editor.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Editor.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Editor/Scripts.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Editor/Scripts.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Editor/Scripts.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Editor/Scripts.meta diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Editor/Scripts/StarterAssetsSampleProjectValidation.cs b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Editor/Scripts/StarterAssetsSampleProjectValidation.cs new file mode 100644 index 00000000..33f2b585 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Editor/Scripts/StarterAssetsSampleProjectValidation.cs @@ -0,0 +1,195 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Unity.XR.CoreUtils.Editor; +using UnityEditor.PackageManager; +using UnityEditor.PackageManager.Requests; +using UnityEngine; +using UnityEngine.XR.Interaction.Toolkit; + +#if UNITY_INPUT_SYSTEM_PROJECT_WIDE_ACTIONS +using UnityEngine.InputSystem; +#endif + +namespace UnityEditor.XR.Interaction.Toolkit.Samples +{ + /// + /// Unity Editor class which registers Project Validation rules for the Starter Assets sample package. + /// + class StarterAssetsSampleProjectValidation + { + const string k_Category = "XR Interaction Toolkit"; + const string k_StarterAssetsSampleName = "Starter Assets"; + const string k_TeleportLayerName = "Teleport"; + const int k_TeleportLayerIndex = 31; + const string k_ProjectValidationSettingsPath = "Project/XR Plug-in Management/Project Validation"; + const string k_ShaderGraphPackageName = "com.unity.shadergraph"; +#if UNITY_INPUT_SYSTEM_PROJECT_WIDE_ACTIONS + const string k_InputSystemPackageName = "com.unity.inputsystem"; + static readonly PackageVersion s_RecommendedPackageVersion = new PackageVersion("1.11.0"); + const string k_InputActionAssetName = "XRI Default Input Actions"; + const string k_InputActionAssetGuid = "c348712bda248c246b8c49b3db54643f"; +#endif + + static readonly BuildTargetGroup[] s_BuildTargetGroups = + ((BuildTargetGroup[])Enum.GetValues(typeof(BuildTargetGroup))).Distinct().ToArray(); + + static readonly List s_BuildValidationRules = new List(); + + static AddRequest s_ShaderGraphPackageAddRequest; +#if UNITY_INPUT_SYSTEM_PROJECT_WIDE_ACTIONS + static AddRequest s_InputSystemPackageAddRequest; +#endif + + [InitializeOnLoadMethod] + static void RegisterProjectValidationRules() + { + // In the Player Settings UI we have to delay the call one frame to let the settings provider get initialized + // since we need to access the settings asset to set the rule's non-delegate properties (FixItAutomatic). + EditorApplication.delayCall += AddRulesAndRunCheck; + } + + static void AddRulesAndRunCheck() + { + if (s_BuildValidationRules.Count == 0) + { + s_BuildValidationRules.Add( + new BuildValidationRule + { + Category = k_Category, + Message = $"[{k_StarterAssetsSampleName}] Interaction Layer {k_TeleportLayerIndex} should be set to '{k_TeleportLayerName}' for teleportation locomotion.", + FixItMessage = $"XR Interaction Toolkit samples reserve Interaction Layer {k_TeleportLayerIndex} for teleportation locomotion. Set Interaction Layer {k_TeleportLayerIndex} to '{k_TeleportLayerName}' to prevent conflicts.", + HelpText = "Please note Interaction Layers are unique to the XR Interaction Toolkit and can be found in Edit > Project Settings > XR Plug-in Management > XR Interaction Toolkit", + FixItAutomatic = InteractionLayerSettings.Instance.IsLayerEmpty(k_TeleportLayerIndex) || IsInteractionLayerTeleport(), + Error = false, + CheckPredicate = IsInteractionLayerTeleport, + FixIt = () => + { + if (InteractionLayerSettings.Instance.IsLayerEmpty(k_TeleportLayerIndex) || DisplayTeleportDialog()) + InteractionLayerSettings.Instance.SetLayerNameAt(k_TeleportLayerIndex, k_TeleportLayerName); + else + SettingsService.OpenProjectSettings(XRInteractionToolkitSettingsProvider.k_SettingsPath); + }, + }); + + s_BuildValidationRules.Add( + new BuildValidationRule + { + IsRuleEnabled = () => s_ShaderGraphPackageAddRequest == null || s_ShaderGraphPackageAddRequest.IsCompleted, + Message = $"[{k_StarterAssetsSampleName}] Shader Graph ({k_ShaderGraphPackageName}) package must be installed for materials used in this sample.", + Category = k_Category, + CheckPredicate = () => PackageVersionUtility.IsPackageInstalled(k_ShaderGraphPackageName), + FixIt = () => + { + s_ShaderGraphPackageAddRequest = Client.Add(k_ShaderGraphPackageName); + if (s_ShaderGraphPackageAddRequest.Error != null) + { + Debug.LogError($"Package installation error: {s_ShaderGraphPackageAddRequest.Error}: {s_ShaderGraphPackageAddRequest.Error.message}"); + } + }, + FixItAutomatic = true, + Error = false, + }); + +#if UNITY_INPUT_SYSTEM_PROJECT_WIDE_ACTIONS + s_BuildValidationRules.Add( + new BuildValidationRule + { + IsRuleEnabled = () => s_InputSystemPackageAddRequest == null || s_InputSystemPackageAddRequest.IsCompleted, + Message = $"[{k_StarterAssetsSampleName}] Input System ({k_InputSystemPackageName}) package must be at version {s_RecommendedPackageVersion} or higher to use Project-wide Actions with {k_InputActionAssetName}.", + Category = k_Category, + CheckPredicate = () => InputSystem.actions == null || PackageVersionUtility.GetPackageVersion(k_InputSystemPackageName) >= s_RecommendedPackageVersion, + FixIt = () => + { + if (s_InputSystemPackageAddRequest == null || s_InputSystemPackageAddRequest.IsCompleted) + InstallOrUpdateInputSystem(); + }, + HelpText = "This version added support for automatic loading of custom extensions of InputProcessor, InputInteraction, and InputBindingComposite defined by this package.", + FixItAutomatic = true, + Error = InputSystem.actions != null && (InputSystem.actions.name == k_InputActionAssetName || AssetDatabase.AssetPathToGUID(AssetDatabase.GetAssetPath(InputSystem.actions)) == k_InputActionAssetGuid), + }); +#endif + } + + foreach (var buildTargetGroup in s_BuildTargetGroups) + { + BuildValidator.AddRules(buildTargetGroup, s_BuildValidationRules); + } + + ShowWindowIfIssuesExist(); + } + + static void ShowWindowIfIssuesExist() + { + foreach (var validation in s_BuildValidationRules) + { + if (validation.CheckPredicate == null || !validation.CheckPredicate.Invoke()) + { + ShowWindow(); + return; + } + } + } + + internal static void ShowWindow() + { + // Delay opening the window since sometimes other settings in the player settings provider redirect to the + // project validation window causing serialized objects to be nullified. + EditorApplication.delayCall += () => + { + SettingsService.OpenProjectSettings(k_ProjectValidationSettingsPath); + }; + } + + static bool IsInteractionLayerTeleport() + { + return string.Equals(InteractionLayerSettings.Instance.GetLayerNameAt(k_TeleportLayerIndex), k_TeleportLayerName, StringComparison.OrdinalIgnoreCase); + } + + static bool DisplayTeleportDialog() + { + return EditorUtility.DisplayDialog( + "Fixing Teleport Interaction Layer", + $"Interaction Layer {k_TeleportLayerIndex} for teleportation locomotion is currently set to '{InteractionLayerSettings.Instance.GetLayerNameAt(k_TeleportLayerIndex)}' instead of '{k_TeleportLayerName}'", + "Automatically Replace", + "Cancel"); + } + +#if UNITY_INPUT_SYSTEM_PROJECT_WIDE_ACTIONS + static void InstallOrUpdateInputSystem() + { + // Set a 3-second timeout for request to avoid editor lockup + var currentTime = DateTime.Now; + var endTime = currentTime + TimeSpan.FromSeconds(3); + + var request = Client.Search(k_InputSystemPackageName); + if (request.Status == StatusCode.InProgress) + { + Debug.Log($"Searching for ({k_InputSystemPackageName}) in Unity Package Registry."); + while (request.Status == StatusCode.InProgress && currentTime < endTime) + currentTime = DateTime.Now; + } + + var addRequest = k_InputSystemPackageName; + if (request.Status == StatusCode.Success && request.Result.Length > 0) + { + var versions = request.Result[0].versions; +#if UNITY_2022_2_OR_NEWER + var recommendedVersion = new PackageVersion(versions.recommended); +#else + var recommendedVersion = new PackageVersion(versions.verified); +#endif + var latestCompatible = new PackageVersion(versions.latestCompatible); + if (recommendedVersion < s_RecommendedPackageVersion && s_RecommendedPackageVersion <= latestCompatible) + addRequest = $"{k_InputSystemPackageName}@{s_RecommendedPackageVersion}"; + } + + s_InputSystemPackageAddRequest = Client.Add(addRequest); + if (s_InputSystemPackageAddRequest.Error != null) + { + Debug.LogError($"Package installation error: {s_InputSystemPackageAddRequest.Error}: {s_InputSystemPackageAddRequest.Error.message}"); + } + } +#endif + } +} diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Editor/Scripts/StarterAssetsSampleProjectValidation.cs.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Editor/Scripts/StarterAssetsSampleProjectValidation.cs.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Editor/Scripts/StarterAssetsSampleProjectValidation.cs.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Editor/Scripts/StarterAssetsSampleProjectValidation.cs.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Editor/Unity.XR.Interaction.Toolkit.Samples.StarterAssets.Editor.asmdef b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Editor/StarterAssets.Editor.asmdef similarity index 67% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Editor/Unity.XR.Interaction.Toolkit.Samples.StarterAssets.Editor.asmdef rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Editor/StarterAssets.Editor.asmdef index 640de431..5f0f819a 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Editor/Unity.XR.Interaction.Toolkit.Samples.StarterAssets.Editor.asmdef +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Editor/StarterAssets.Editor.asmdef @@ -5,7 +5,8 @@ "Unity.XR.Interaction.Toolkit", "Unity.XR.Interaction.Toolkit.Editor", "Unity.XR.CoreUtils", - "Unity.XR.CoreUtils.Editor" + "Unity.XR.CoreUtils.Editor", + "Unity.InputSystem" ], "includePlatforms": [ "Editor" @@ -16,6 +17,12 @@ "precompiledReferences": [], "autoReferenced": true, "defineConstraints": [], - "versionDefines": [], + "versionDefines": [ + { + "name": "Unity", + "expression": "2022.3", + "define": "UNITY_INPUT_SYSTEM_PROJECT_WIDE_ACTIONS" + } + ], "noEngineReferences": false } \ No newline at end of file diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Editor/Unity.XR.Interaction.Toolkit.Samples.StarterAssets.Editor.asmdef.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Editor/StarterAssets.Editor.asmdef.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Editor/Unity.XR.Interaction.Toolkit.Samples.StarterAssets.Editor.asmdef.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Editor/StarterAssets.Editor.asmdef.meta diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Filters.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Filters.meta new file mode 100644 index 00000000..d8d3dbee --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Filters.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cbfc8c172e97a1a429faf76ac87aaf06 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Filters/AnyGazedAtTeleportAnchorFilter.asset b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Filters/AnyGazedAtTeleportAnchorFilter.asset new file mode 100644 index 00000000..994d4a8d --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Filters/AnyGazedAtTeleportAnchorFilter.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d64a030b16ad8df2bd1b42cd31889771dc2eea19b29a7e6e5b91e56da4a1fe1c +size 1767 diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Filters/AnyGazedAtTeleportAnchorFilter.asset.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Filters/AnyGazedAtTeleportAnchorFilter.asset.meta new file mode 100644 index 00000000..1244146e --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Filters/AnyGazedAtTeleportAnchorFilter.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0f906c94e2aa0c3488832acc1db04295 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials.meta new file mode 100644 index 00000000..e1c62776 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5cfaae8b567b8aa45b7a432b5bb5560c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/Controller_Grey.mat b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/Controller_Grey.mat new file mode 100644 index 00000000..4c15a8d3 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/Controller_Grey.mat @@ -0,0 +1,185 @@ +%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: Controller_Grey + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _OCCLUSIONMAP + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 1 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AO_Texture: + m_Texture: {fileID: 2800000, guid: 85e675893a909864d9c237e20202651b, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + 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} + - _MainTexture: + 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} + - _NormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 2800000, guid: 85e675893a909864d9c237e20202651b, type: 3} + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AO_Intensity: 0.75 + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _BUILTIN_AlphaClip: 0 + - _BUILTIN_Blend: 0 + - _BUILTIN_CullMode: 2 + - _BUILTIN_DstBlend: 0 + - _BUILTIN_QueueControl: 0 + - _BUILTIN_QueueOffset: 0 + - _BUILTIN_SrcBlend: 1 + - _BUILTIN_Surface: 0 + - _BUILTIN_ZTest: 4 + - _BUILTIN_ZWrite: 1 + - _BUILTIN_ZWriteControl: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _BumpStrength: 1 + - _CastShadows: 0 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _NormalStrength: 0.2 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueControl: 0 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _RimPower: 5 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZTest: 4 + - _ZWrite: 1 + - _ZWriteControl: 0 + m_Colors: + - _BaseColor: {r: 0.75294125, g: 0.75294125, b: 0.75294125, a: 1} + - _BumpOffset: {r: 0, g: 0, b: 0, a: 0} + - _BumpTiling: {r: 1, g: 1, b: 0, a: 0} + - _Color: {r: 0.75294125, g: 0.75294125, b: 0.75294125, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _NormalOffset: {r: 0, g: 0, b: 0, a: 0} + - _NormalTiling: {r: 1, g: 1, b: 0, a: 0} + - _RimColor: {r: 1, g: 1, b: 1, a: 0.5803922} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] +--- !u!114 &2844382753039495902 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: 639247ca83abc874e893eb93af2b5e44, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 0 +--- !u!114 &3175206980477369162 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/Controller_Grey.mat.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/Controller_Grey.mat.meta new file mode 100644 index 00000000..a7766f30 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/Controller_Grey.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 99685157b02e4d446bbecb015645e5e8 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/Controller_White.mat b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/Controller_White.mat new file mode 100644 index 00000000..1fb0960c --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/Controller_White.mat @@ -0,0 +1,171 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-4601201219206549488 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 +--- !u!114 &-1555896807369559897 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: 639247ca83abc874e893eb93af2b5e44, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 0 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Controller_White + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _OCCLUSIONMAP + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 1 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AO_Texture: + m_Texture: {fileID: 2800000, guid: 85e675893a909864d9c237e20202651b, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + 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: 2800000, guid: 85e675893a909864d9c237e20202651b, type: 3} + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AO_Intensity: 1 + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _BUILTIN_AlphaClip: 0 + - _BUILTIN_Blend: 0 + - _BUILTIN_CullMode: 2 + - _BUILTIN_DstBlend: 0 + - _BUILTIN_QueueControl: 0 + - _BUILTIN_QueueOffset: 0 + - _BUILTIN_SrcBlend: 1 + - _BUILTIN_Surface: 0 + - _BUILTIN_ZTest: 4 + - _BUILTIN_ZWrite: 1 + - _BUILTIN_ZWriteControl: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _CastShadows: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueControl: 0 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZTest: 4 + - _ZWrite: 1 + - _ZWriteControl: 0 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _BumpOffset: {r: 0, g: 0, b: 0, a: 0} + - _BumpTiling: {r: 1, g: 1, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/Controller_White.mat.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/Controller_White.mat.meta new file mode 100644 index 00000000..d8848181 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/Controller_White.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9f12d299d16099343a3c5c0d7285822a +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Hands/1.3.0/HandVisualizer/Materials/Blue.mat b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/Flat Blue.mat similarity index 86% rename from Assets/Samples/XR Hands/1.3.0/HandVisualizer/Materials/Blue.mat rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/Flat Blue.mat index 93221bc5..77b4186b 100644 --- a/Assets/Samples/XR Hands/1.3.0/HandVisualizer/Materials/Blue.mat +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/Flat Blue.mat @@ -2,14 +2,15 @@ %TAG !u! tag:unity3d.com,2011: --- !u!21 &2100000 Material: - serializedVersion: 6 + serializedVersion: 8 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: Blue - m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} - m_ShaderKeywords: _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A + m_Name: Flat Blue + m_Shader: {fileID: 10755, guid: 0000000000000000f000000000000000, type: 0} + m_ValidKeywords: [] + m_InvalidKeywords: [] m_LightmapFlags: 4 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 @@ -55,6 +56,7 @@ Material: 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 @@ -67,12 +69,12 @@ Material: - _Mode: 0 - _OcclusionStrength: 1 - _Parallax: 0.02 - - _SmoothnessTextureChannel: 1 + - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 - _SrcBlend: 1 - _UVSec: 0 - _ZWrite: 1 m_Colors: - - _Color: {r: 0, g: 0, b: 1, a: 1} + - _Color: {r: 0.1254902, g: 0.5882353, b: 0.9529412, a: 1} - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} m_BuildTextureStacks: [] diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/Flat Blue.mat.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/Flat Blue.mat.meta new file mode 100644 index 00000000..766f2016 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/Flat Blue.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 91ff3830fc4055a4fb0d0d2be32101a7 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/FresnelHighlight.mat b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/FresnelHighlight.mat new file mode 100644 index 00000000..dfaf135a --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/FresnelHighlight.mat @@ -0,0 +1,176 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-4454421181341466485 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: FresnelHighlight + m_Shader: {fileID: -6465566751694194690, guid: e19b5bb6cb8e91e43b1b5d81a069296f, + type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: + - _RECEIVE_SHADOWS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2000 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - SHADOWCASTER + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + 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} + - _MainTexture: + 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} + - _NormalMap: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _BUILTIN_AlphaClip: 0 + - _BUILTIN_Blend: 0 + - _BUILTIN_CullMode: 2 + - _BUILTIN_DstBlend: 0 + - _BUILTIN_QueueControl: 0 + - _BUILTIN_QueueOffset: 0 + - _BUILTIN_SrcBlend: 1 + - _BUILTIN_Surface: 0 + - _BUILTIN_ZTest: 4 + - _BUILTIN_ZWrite: 1 + - _BUILTIN_ZWriteControl: 0 + - _Blend: 0 + - _BumpScale: 1 + - _CastShadows: 0 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _EnvironmentReflections: 1 + - _FresnelPower: 1.5 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _NormalStrength: 0.2 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueControl: 0 + - _QueueOffset: 0 + - _ReceiveShadows: 0 + - _RimPower: 1.5 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZTest: 4 + - _ZWrite: 1 + - _ZWriteControl: 0 + m_Colors: + - _BaseColor: {r: 0.7529412, g: 0.7529412, b: 0.7529412, a: 0.33333334} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _FresnelColor: {r: 1, g: 1, b: 1, a: 1} + - _NormalOffset: {r: 0, g: 0, b: 0, a: 0} + - _NormalTiling: {r: 1, g: 1, b: 0, a: 0} + - _RimColor: {r: 1, g: 1, b: 1, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] +--- !u!114 &743812867147283137 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: 639247ca83abc874e893eb93af2b5e44, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 0 diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/FresnelHighlight.mat.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/FresnelHighlight.mat.meta new file mode 100644 index 00000000..5d946438 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/FresnelHighlight.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f5ccd52dc494e054fbe7d7161dcabe25 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/Interactable.mat b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/Interactable.mat new file mode 100644 index 00000000..23072731 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/Interactable.mat @@ -0,0 +1,183 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-3335879748548489386 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: 639247ca83abc874e893eb93af2b5e44, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 0 +--- !u!114 &-2536893978736553219 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Interactable + m_Shader: {fileID: -6465566751694194690, guid: 0927d29e476ce5843b1f7d2a96943c51, + type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + 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} + - _MainTexture: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: cdebec39dbf81a14688e1de8d12897b4, type: 3} + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Texture2DAsset_46c74e5059524c9b9656d53d13cff555_Out_0: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Texture2DAsset_ced3e0f4340741a1b36c259c8f49d0c7_Out_0: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _BUILTIN_AlphaClip: 0 + - _BUILTIN_Blend: 0 + - _BUILTIN_CullMode: 2 + - _BUILTIN_DstBlend: 0 + - _BUILTIN_QueueControl: 0 + - _BUILTIN_QueueOffset: 0 + - _BUILTIN_SrcBlend: 1 + - _BUILTIN_Surface: 0 + - _BUILTIN_ZTest: 4 + - _BUILTIN_ZWrite: 1 + - _BUILTIN_ZWriteControl: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 0 + - _BumpScale: 1 + - _CastShadows: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0.05 + - _NormalStrength: 0.75 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueControl: 0 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _RimPower: 4 + - _Smoothness: 0.2 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZTest: 4 + - _ZWrite: 1 + - _ZWriteControl: 0 + m_Colors: + - _BaseColor: {r: 0.5686275, g: 0.78431374, b: 1, a: 1} + - _BumpOffset: {r: 0, g: 0, b: 0, a: 0} + - _BumpTiling: {r: 4, g: 2, b: 0, a: 0} + - _Color: {r: 0.5686274, g: 0.78431374, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _NormalOffset: {r: 0, g: 0, b: 0, a: 0} + - _NormalTiling: {r: 4, g: 2, b: 0, a: 0} + - _RimColor: {r: 1, g: 1, b: 1, a: 0.09803922} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/Interactable.mat.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/Interactable.mat.meta new file mode 100644 index 00000000..e48cf95b --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/Interactable.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 76618f7490c40334fa7b685859587d2e +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/MaterialPipelineHandler.asset b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/MaterialPipelineHandler.asset new file mode 100644 index 00000000..9cb58d23 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/MaterialPipelineHandler.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66fe21e9949cf9ba59dd31ab1be22e94b2001cb9ee6500bd5b9dded869b72de7 +size 2837 diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/MaterialPipelineHandler.asset.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/MaterialPipelineHandler.asset.meta new file mode 100644 index 00000000..ca6d0e51 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/MaterialPipelineHandler.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dbe8dcb68b75cd2498ab6c1d96e072a4 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/Telport Anchor.mat b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/Telport Anchor.mat new file mode 100644 index 00000000..8078c71e --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/Telport Anchor.mat @@ -0,0 +1,171 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-859374318456194000 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Telport Anchor + m_Shader: {fileID: 4800000, guid: 8d2bb70cbf9db8d4da26e15b26e74248, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: + - _GLOSSYREFLECTIONS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 1 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AO_Intensity: 1 + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _BUILTIN_AlphaClip: 0 + - _BUILTIN_Blend: 0 + - _BUILTIN_CullMode: 2 + - _BUILTIN_DstBlend: 0 + - _BUILTIN_QueueControl: 0 + - _BUILTIN_QueueOffset: 0 + - _BUILTIN_SrcBlend: 1 + - _BUILTIN_Surface: 0 + - _BUILTIN_ZTest: 4 + - _BUILTIN_ZWrite: 1 + - _BUILTIN_ZWriteControl: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _CastShadows: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossinessSource: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueControl: 0 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _RimPower: 5 + - _Shininess: 0 + - _Smoothness: 0.5 + - _SmoothnessSource: 0 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZTest: 4 + - _ZWrite: 1 + - _ZWriteControl: 0 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _RimColor: {r: 1, g: 1, b: 1, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] +--- !u!114 &1825622308456155611 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: 639247ca83abc874e893eb93af2b5e44, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 0 diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/Telport Anchor.mat.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/Telport Anchor.mat.meta new file mode 100644 index 00000000..086afc0b --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/Telport Anchor.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fd3c5d8fce991e04f9c11109dde95b3b +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/Telport Area.mat b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/Telport Area.mat new file mode 100644 index 00000000..30347fdf --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/Telport Area.mat @@ -0,0 +1,171 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-859374318456194000 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Telport Area + m_Shader: {fileID: 4800000, guid: 8d2bb70cbf9db8d4da26e15b26e74248, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: + - _GLOSSYREFLECTIONS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 1 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AO_Intensity: 1 + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _BUILTIN_AlphaClip: 0 + - _BUILTIN_Blend: 0 + - _BUILTIN_CullMode: 2 + - _BUILTIN_DstBlend: 0 + - _BUILTIN_QueueControl: 0 + - _BUILTIN_QueueOffset: 0 + - _BUILTIN_SrcBlend: 1 + - _BUILTIN_Surface: 0 + - _BUILTIN_ZTest: 4 + - _BUILTIN_ZWrite: 1 + - _BUILTIN_ZWriteControl: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _CastShadows: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossinessSource: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueControl: 0 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _RimPower: 5 + - _Shininess: 0 + - _Smoothness: 0.5 + - _SmoothnessSource: 0 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZTest: 4 + - _ZWrite: 1 + - _ZWriteControl: 0 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _RimColor: {r: 1, g: 1, b: 1, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] +--- !u!114 &1825622308456155611 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: 639247ca83abc874e893eb93af2b5e44, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 0 diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/Telport Area.mat.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/Telport Area.mat.meta new file mode 100644 index 00000000..2ac82cd8 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/Telport Area.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: be1e10ce8a6f8cc4fb08d11c7f722469 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Hands/1.3.0/HandVisualizer/Materials/Green.mat b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/UI-NoZTest.mat similarity index 81% rename from Assets/Samples/XR Hands/1.3.0/HandVisualizer/Materials/Green.mat rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/UI-NoZTest.mat index 0ed1af8e..305b6001 100644 --- a/Assets/Samples/XR Hands/1.3.0/HandVisualizer/Materials/Green.mat +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/UI-NoZTest.mat @@ -2,14 +2,15 @@ %TAG !u! tag:unity3d.com,2011: --- !u!21 &2100000 Material: - serializedVersion: 6 + serializedVersion: 8 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: Green - m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} - m_ShaderKeywords: _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A + m_Name: UI-NoZTest + m_Shader: {fileID: 4800000, guid: a661e7516de55c047905f40ca76fe701, type: 3} + m_ValidKeywords: [] + m_InvalidKeywords: [] m_LightmapFlags: 4 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 @@ -55,8 +56,10 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + m_Ints: [] m_Floats: - _BumpScale: 1 + - _ColorMask: 15 - _Cutoff: 0.5 - _DetailNormalMapScale: 1 - _DstBlend: 0 @@ -67,12 +70,18 @@ Material: - _Mode: 0 - _OcclusionStrength: 1 - _Parallax: 0.02 - - _SmoothnessTextureChannel: 1 + - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 - _SrcBlend: 1 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilOp: 0 + - _StencilReadMask: 255 + - _StencilWriteMask: 255 - _UVSec: 0 + - _UseUIAlphaClip: 0 - _ZWrite: 1 m_Colors: - - _Color: {r: 0, g: 1, b: 0, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} m_BuildTextureStacks: [] diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/UI-NoZTest.mat.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/UI-NoZTest.mat.meta new file mode 100644 index 00000000..f548b6c3 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Materials/UI-NoZTest.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6f3d696f7c3365846b6dc2402afb3d3e +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Models.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Models.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Models.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Models.meta diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Models/BlinkVisual.fbx b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Models/BlinkVisual.fbx new file mode 100644 index 00000000..66c46bae --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Models/BlinkVisual.fbx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6ef0d1bff5ac57e9e07fd06a17f427004f0a0fa637dcd1eb1294e1047fbbfada +size 34416 diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Models/BlinkVisual.fbx.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Models/BlinkVisual.fbx.meta new file mode 100644 index 00000000..57e97035 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Models/BlinkVisual.fbx.meta @@ -0,0 +1,111 @@ +fileFormatVersion: 2 +guid: 27b7629e54b332449bfa3a4065ffe17a +ModelImporter: + serializedVersion: 21300 + internalIDToNameTable: [] + externalObjects: + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: aiAmbientOcclusion1 + second: {fileID: 2100000, guid: fd3c5d8fce991e04f9c11109dde95b3b, type: 2} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 1 + 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 + 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 + 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 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Models/Pinch_Pointer_LOD0.fbx b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Models/Pinch_Pointer_LOD0.fbx similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Models/Pinch_Pointer_LOD0.fbx rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Models/Pinch_Pointer_LOD0.fbx diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Models/Pinch_Pointer_LOD0.fbx.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Models/Pinch_Pointer_LOD0.fbx.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Models/Pinch_Pointer_LOD0.fbx.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Models/Pinch_Pointer_LOD0.fbx.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Models/Primitive_Cylinder.fbx b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Models/Primitive_Cylinder.fbx similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Models/Primitive_Cylinder.fbx rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Models/Primitive_Cylinder.fbx diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Models/Primitive_Cylinder.fbx.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Models/Primitive_Cylinder.fbx.meta similarity index 93% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Models/Primitive_Cylinder.fbx.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Models/Primitive_Cylinder.fbx.meta index 5f307250..788f500e 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Models/Primitive_Cylinder.fbx.meta +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Models/Primitive_Cylinder.fbx.meta @@ -3,7 +3,12 @@ guid: 9e1dc1c14313460d872de39e35129b39 ModelImporter: serializedVersion: 21300 internalIDToNameTable: [] - externalObjects: {} + externalObjects: + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: lambert1 + second: {fileID: 2100000, guid: 76618f7490c40334fa7b685859587d2e, type: 2} materials: materialImportMode: 2 materialName: 0 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Models/Primitive_Wedge.fbx b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Models/Primitive_Wedge.fbx similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Models/Primitive_Wedge.fbx rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Models/Primitive_Wedge.fbx diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Models/Primitive_Wedge.fbx.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Models/Primitive_Wedge.fbx.meta similarity index 93% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Models/Primitive_Wedge.fbx.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Models/Primitive_Wedge.fbx.meta index dfbe9327..ce4bc915 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Models/Primitive_Wedge.fbx.meta +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Models/Primitive_Wedge.fbx.meta @@ -3,7 +3,12 @@ guid: ab3a79eba4de4be0ad5fead9fb858190 ModelImporter: serializedVersion: 21300 internalIDToNameTable: [] - externalObjects: {} + externalObjects: + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: lambert1 + second: {fileID: 2100000, guid: 76618f7490c40334fa7b685859587d2e, type: 2} materials: materialImportMode: 2 materialName: 0 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Models/Reticle_Torus.fbx b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Models/Reticle_Torus.fbx similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Models/Reticle_Torus.fbx rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Models/Reticle_Torus.fbx diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Models/Reticle_Torus.fbx.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Models/Reticle_Torus.fbx.meta similarity index 93% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Models/Reticle_Torus.fbx.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Models/Reticle_Torus.fbx.meta index a0f3bf0d..ab2019d1 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Models/Reticle_Torus.fbx.meta +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Models/Reticle_Torus.fbx.meta @@ -3,7 +3,12 @@ guid: be2911572dc3afa448d24b4e97edc5f1 ModelImporter: serializedVersion: 21300 internalIDToNameTable: [] - externalObjects: {} + externalObjects: + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: lambert1 + second: {fileID: 2100000, guid: 76618f7490c40334fa7b685859587d2e, type: 2} materials: materialImportMode: 2 materialName: 0 diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Models/UniversalController.fbx b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Models/UniversalController.fbx new file mode 100644 index 00000000..7e62e3ce --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Models/UniversalController.fbx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:348e210fda42df410db93a66ee4c0602706ba3d3ea01df78e393171bb1567beb +size 317024 diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Models/UniversalController.fbx.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Models/UniversalController.fbx.meta new file mode 100644 index 00000000..5b4bf1cb --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Models/UniversalController.fbx.meta @@ -0,0 +1,116 @@ +fileFormatVersion: 2 +guid: 147ae308eec018b40a7b312ae58f44c7 +ModelImporter: + serializedVersion: 21300 + internalIDToNameTable: [] + externalObjects: + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: aiAmbientOcclusion1 + second: {fileID: 2100000, guid: 99685157b02e4d446bbecb015645e5e8, type: 2} + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: wire_204204204 + second: {fileID: 2100000, guid: 9f12d299d16099343a3c5c0d7285822a, type: 2} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 1 + 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 + 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 + 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 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/Affordances.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Affordances.meta similarity index 77% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/Affordances.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Affordances.meta index 3d0f5210..6c3c8c2e 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/Affordances.meta +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Affordances.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 655ddbf8e8ff96646b9be8351916aebc +guid: 9982c3209d4d7ff46accc30b5bfb40cc folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Affordances/HighlightInteractionAffordance.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Affordances/HighlightInteractionAffordance.prefab new file mode 100644 index 00000000..aad20e95 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Affordances/HighlightInteractionAffordance.prefab @@ -0,0 +1,278 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &3774509235512974894 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5258331117553129771} + - component: {fileID: 8634317094661461186} + m_Layer: 0 + m_Name: HighlightInteractionAffordance + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5258331117553129771 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3774509235512974894} + 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: 1868228307608861978} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &8634317094661461186 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3774509235512974894} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 49e0a5b5ff5540f5b14dd29d46faec22, type: 3} + m_Name: + m_EditorClassIdentifier: + m_TransitionDuration: 0.125 + m_InteractableSource: {fileID: 0} + m_IgnoreHoverEvents: 0 + m_IgnoreHoverPriorityEvents: 1 + m_IgnoreFocusEvents: 0 + m_IgnoreSelectEvents: 0 + m_IgnoreActivateEvents: 0 + m_SelectClickAnimationMode: 1 + m_ActivateClickAnimationMode: 1 + m_ClickAnimationDuration: 0.1 + m_ClickAnimationCurve: + m_UseConstant: 1 + m_ConstantValue: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Variable: {fileID: 0} +--- !u!1 &4896237787779704601 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1868228307608861978} + - component: {fileID: 7396278978564332023} + - component: {fileID: 2489836559761890320} + - component: {fileID: 5298392244203567607} + m_Layer: 0 + m_Name: Material Affordance + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1868228307608861978 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4896237787779704601} + 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: 5258331117553129771} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &7396278978564332023 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4896237787779704601} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1410cbaaadf84a7aaa6459d37ad21b3a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Renderer: {fileID: 0} + m_MaterialIndex: 0 +--- !u!114 &2489836559761890320 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4896237787779704601} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f86d13fca2ec430d870c0f7765ad0dde, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AffordanceStateProvider: {fileID: 8634317094661461186} + m_ReplaceIdleStateValueWithInitialValue: 0 + m_AffordanceThemeDatum: + m_UseConstant: 0 + m_ConstantValue: + m_StateAnimationCurve: + m_UseConstant: 1 + m_ConstantValue: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Variable: {fileID: 0} + m_List: + - stateName: disabled + animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} + animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} + - stateName: idle + animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} + animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} + - stateName: hovered + animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} + animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} + - stateName: hoveredPriority + animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} + animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} + - stateName: selected + animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} + animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} + - stateName: activated + animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} + animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} + - stateName: focused + animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} + animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} + m_ColorBlendMode: 0 + m_BlendAmount: 1 + m_Variable: {fileID: 11400000, guid: 8b0b5aede76faac438e02d2a468f4805, type: 2} + m_ValueUpdated: + m_PersistentCalls: + m_Calls: [] + m_MaterialPropertyBlockHelper: {fileID: 7396278978564332023} + m_ColorPropertyName: _RimColor +--- !u!114 &5298392244203567607 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4896237787779704601} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 629ea686265f47f082ba5732cffad1cf, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AffordanceStateProvider: {fileID: 8634317094661461186} + m_ReplaceIdleStateValueWithInitialValue: 0 + m_AffordanceThemeDatum: + m_UseConstant: 0 + m_ConstantValue: + m_StateAnimationCurve: + m_UseConstant: 1 + m_ConstantValue: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Variable: {fileID: 0} + m_List: + - stateName: disabled + animationStateStartValue: 0 + animationStateEndValue: 0 + - stateName: idle + animationStateStartValue: 0 + animationStateEndValue: 0 + - stateName: hovered + animationStateStartValue: 0 + animationStateEndValue: 0 + - stateName: hoveredPriority + animationStateStartValue: 0 + animationStateEndValue: 0 + - stateName: selected + animationStateStartValue: 0 + animationStateEndValue: 0 + - stateName: activated + animationStateStartValue: 0 + animationStateEndValue: 0 + - stateName: focused + animationStateStartValue: 0 + animationStateEndValue: 0 + m_Variable: {fileID: 11400000, guid: 795305341a8dbbd46ae54e9a01d6ea95, type: 2} + m_ValueUpdated: + m_PersistentCalls: + m_Calls: [] + m_MaterialPropertyBlockHelper: {fileID: 7396278978564332023} + m_FloatPropertyName: _RimPower diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Affordances/HighlightInteractionAffordance.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Affordances/HighlightInteractionAffordance.prefab.meta new file mode 100644 index 00000000..c8be6876 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Affordances/HighlightInteractionAffordance.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6b12f432fa58c224baf0d659706362be +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/Affordances/Hand Ray Interactor Affordances.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Affordances/PokePointerAffordance.prefab similarity index 60% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/Affordances/Hand Ray Interactor Affordances.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Affordances/PokePointerAffordance.prefab index f61b05f3..2ed0a85e 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/Affordances/Hand Ray Interactor Affordances.prefab +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Affordances/PokePointerAffordance.prefab @@ -1,6 +1,6 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: ---- !u!1 &1592230186234949353 +--- !u!1 &6992954569244019172 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -8,41 +8,39 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1592230186234949352} - - component: {fileID: 1592230186234949356} - - component: {fileID: 1592230186234949357} - - component: {fileID: 1592230186234949358} - - component: {fileID: 4400848853422611441} - - component: {fileID: 1592230186234949359} + - component: {fileID: 4398500528759886884} + - component: {fileID: 6707959385038857591} + - component: {fileID: 863512645795027999} + - component: {fileID: 2554827892209798263} m_Layer: 0 - m_Name: Hand Ray Interactor Affordances + m_Name: Poke m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &1592230186234949352 +--- !u!4 &4398500528759886884 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1592230186234949353} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_GameObject: {fileID: 6992954569244019172} + 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_Father: {fileID: 8849414207674852688} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1592230186234949356 +--- !u!114 &6707959385038857591 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1592230186234949353} + m_GameObject: {fileID: 6992954569244019172} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: c83f12c537584f51b92c01f10d7090c0, type: 3} @@ -86,33 +84,33 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 4 m_Variable: {fileID: 0} ---- !u!114 &1592230186234949357 +--- !u!114 &863512645795027999 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1592230186234949353} + m_GameObject: {fileID: 6992954569244019172} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 1410cbaaadf84a7aaa6459d37ad21b3a, type: 3} m_Name: m_EditorClassIdentifier: m_Renderer: {fileID: 0} - m_MaterialIndex: 1 ---- !u!114 &1592230186234949358 + m_MaterialIndex: 0 +--- !u!114 &2554827892209798263 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1592230186234949353} + m_GameObject: {fileID: 6992954569244019172} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f86d13fca2ec430d870c0f7765ad0dde, type: 3} m_Name: m_EditorClassIdentifier: - m_AffordanceStateProvider: {fileID: 1592230186234949356} + m_AffordanceStateProvider: {fileID: 6707959385038857591} m_ReplaceIdleStateValueWithInitialValue: 0 m_AffordanceThemeDatum: m_UseConstant: 0 @@ -168,25 +166,123 @@ MonoBehaviour: animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} m_ColorBlendMode: 0 m_BlendAmount: 1 - m_Variable: {fileID: 11400000, guid: ec1df508c6fb9eb45ae9f181ff6bbe82, type: 2} + m_Variable: {fileID: 11400000, guid: fc690d1505c48cb4696838b71abd2ca0, type: 2} m_ValueUpdated: m_PersistentCalls: m_Calls: [] - m_MaterialPropertyBlockHelper: {fileID: 1592230186234949357} - m_ColorPropertyName: _FingerColor_1 ---- !u!114 &4400848853422611441 + m_MaterialPropertyBlockHelper: {fileID: 863512645795027999} + m_ColorPropertyName: _BaseColor +--- !u!1 &7285531401416438276 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2253081074204762138} + - component: {fileID: 5964744442239762404} + - component: {fileID: 6212858538863823644} + - component: {fileID: 4048650986295294844} + m_Layer: 0 + m_Name: NearFar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2253081074204762138 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7285531401416438276} + 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: 8849414207674852688} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &5964744442239762404 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1592230186234949353} + m_GameObject: {fileID: 7285531401416438276} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c83f12c537584f51b92c01f10d7090c0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_TransitionDuration: 0.125 + m_InteractorSource: {fileID: 0} + m_IgnoreHoverEvents: 0 + m_IgnoreSelectEvents: 0 + m_IgnoreActivateEvents: 1 + m_IgnoreUGUIHover: 0 + m_IgnoreUGUISelect: 0 + m_IgnoreXRInteractionEvents: 0 + m_SelectClickAnimationMode: 1 + m_ActivateClickAnimationMode: 1 + m_ClickAnimationDuration: 0.25 + m_ClickAnimationCurve: + m_UseConstant: 1 + m_ConstantValue: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Variable: {fileID: 0} +--- !u!114 &6212858538863823644 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7285531401416438276} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1410cbaaadf84a7aaa6459d37ad21b3a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Renderer: {fileID: 0} + m_MaterialIndex: 0 +--- !u!114 &4048650986295294844 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7285531401416438276} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f86d13fca2ec430d870c0f7765ad0dde, type: 3} m_Name: m_EditorClassIdentifier: - m_AffordanceStateProvider: {fileID: 1592230186234949356} + m_AffordanceStateProvider: {fileID: 5964744442239762404} m_ReplaceIdleStateValueWithInitialValue: 0 m_AffordanceThemeDatum: m_UseConstant: 0 @@ -242,83 +338,42 @@ MonoBehaviour: animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} m_ColorBlendMode: 0 m_BlendAmount: 1 - m_Variable: {fileID: 11400000, guid: ec1df508c6fb9eb45ae9f181ff6bbe82, type: 2} + m_Variable: {fileID: 11400000, guid: fc690d1505c48cb4696838b71abd2ca0, type: 2} m_ValueUpdated: m_PersistentCalls: m_Calls: [] - m_MaterialPropertyBlockHelper: {fileID: 1592230186234949357} - m_ColorPropertyName: _ThumbColor ---- !u!114 &1592230186234949359 -MonoBehaviour: + m_MaterialPropertyBlockHelper: {fileID: 6212858538863823644} + m_ColorPropertyName: _BaseColor +--- !u!1 &7734889806894075718 +GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1592230186234949353} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f86d13fca2ec430d870c0f7765ad0dde, type: 3} - m_Name: - m_EditorClassIdentifier: - m_AffordanceStateProvider: {fileID: 1592230186234949356} - m_ReplaceIdleStateValueWithInitialValue: 0 - m_AffordanceThemeDatum: - m_UseConstant: 0 - m_ConstantValue: - m_StateAnimationCurve: - m_UseConstant: 1 - m_ConstantValue: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - m_Variable: {fileID: 0} - m_List: - - stateName: disabled - animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} - animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} - - stateName: idle - animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} - animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} - - stateName: hovered - animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} - animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} - - stateName: hoveredPriority - animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} - animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} - - stateName: selected - animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} - animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} - - stateName: activated - animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} - animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} - - stateName: focused - animationStateStartValue: {r: 0, g: 0, b: 0, a: 0} - animationStateEndValue: {r: 0, g: 0, b: 0, a: 0} - m_ColorBlendMode: 0 - m_BlendAmount: 1 - m_Variable: {fileID: 11400000, guid: f94337e1a5a93c7438d8f8508b246e6d, type: 2} - m_ValueUpdated: - m_PersistentCalls: - m_Calls: [] - m_MaterialPropertyBlockHelper: {fileID: 1592230186234949357} - m_ColorPropertyName: _EdgeColor + serializedVersion: 6 + m_Component: + - component: {fileID: 8849414207674852688} + m_Layer: 0 + m_Name: PokePointerAffordance + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8849414207674852688 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7734889806894075718} + 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: 4398500528759886884} + - {fileID: 2253081074204762138} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Affordances/PokePointerAffordance.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Affordances/PokePointerAffordance.prefab.meta new file mode 100644 index 00000000..c3c47a47 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Affordances/PokePointerAffordance.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: bb91fcbcb3cc896468b372b1c762bfab +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Controllers.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Controllers.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Controllers.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Controllers.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Controllers/XR Controller Left.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Controllers/XR Controller Left.prefab similarity index 63% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Controllers/XR Controller Left.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Controllers/XR Controller Left.prefab index e0a8077f..05e658a2 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Controllers/XR Controller Left.prefab +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Controllers/XR Controller Left.prefab @@ -1,6 +1,6 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: ---- !u!1 &1591450736581743243 +--- !u!1 &838925125806505752 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -8,449 +8,34 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 7719217461193035141} - - component: {fileID: 3948495021522208145} - - component: {fileID: 6581167756232844618} + - component: {fileID: 5578866909471720403} m_Layer: 0 - m_Name: TouchPad + m_Name: XRController_Thumbstick_Buttons m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &7719217461193035141 +--- !u!4 &5578866909471720403 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1591450736581743243} - m_LocalRotation: {x: 0.000000021855694, y: 0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: -0.0000135928385, z: -0.0049661375} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 8270855663187062767} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &3948495021522208145 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1591450736581743243} - m_Mesh: {fileID: -1120971793077124694, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} ---- !u!23 &6581167756232844618 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1591450736581743243} - 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: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} - 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 &2833903026367321022 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5488926764375732961} - - component: {fileID: 5546920259920998435} - - component: {fileID: 3591102075257121437} - m_Layer: 0 - m_Name: Button_B - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &5488926764375732961 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2833903026367321022} - m_LocalRotation: {x: 0.000000059604645, y: -0.000000030733645, z: -0.000000028871002, w: 1} - m_LocalPosition: {x: -0.007821825, y: 0.0009400594, z: 0.006571072} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 8173916776436821938} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &5546920259920998435 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2833903026367321022} - m_Mesh: {fileID: 8449303727733987256, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} ---- !u!23 &3591102075257121437 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2833903026367321022} - 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: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} - 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 &2920996176376820429 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5551125943416818270} - - component: {fileID: 1311942897710075639} - - component: {fileID: 804292978268976271} - m_Layer: 0 - m_Name: ThumbStick - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &5551125943416818270 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2920996176376820429} - m_LocalRotation: {x: 0.000000059604645, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0.008775876, y: -0.002558912, z: -0.0074315914} - m_LocalScale: {x: 1.342947, y: 1.342947, z: 1.342947} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 8173916776436821938} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &1311942897710075639 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2920996176376820429} - m_Mesh: {fileID: -2564423107879867638, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} ---- !u!23 &804292978268976271 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2920996176376820429} - 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: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} - 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 &3355591549739262786 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7656785331879846650} - - component: {fileID: 3629011562858007340} - - component: {fileID: 8505742608970525457} - m_Layer: 0 - m_Name: Trigger - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &7656785331879846650 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3355591549739262786} - m_LocalRotation: {x: 0.000000021855694, y: 3.2567517e-16, z: 0.000000014901159, w: 1} - m_LocalPosition: {x: 0, y: -0.013359987, z: -0.018506905} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 8270855663187062767} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &3629011562858007340 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3355591549739262786} - m_Mesh: {fileID: -8653722315008560443, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} ---- !u!23 &8505742608970525457 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3355591549739262786} - 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: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} - 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 &4045590804765120743 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4409659463910318501} - - component: {fileID: 6190287511479189489} - - component: {fileID: 2953040850335233957} - m_Layer: 0 - m_Name: ThumbStick_Base - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4409659463910318501 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4045590804765120743} - m_LocalRotation: {x: 0.000000059604645, y: 0, z: -0, w: 1} - m_LocalPosition: {x: 0.008775877, y: 0.00152745, z: -0.0074315914} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 8173916776436821938} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &6190287511479189489 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4045590804765120743} - m_Mesh: {fileID: -2014588322676101042, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} ---- !u!23 &2953040850335233957 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4045590804765120743} - 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: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} - 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 &5350001822289929954 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8173916776436821938} - m_Layer: 0 - m_Name: XRController_LT_Thumbstick_Buttons - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &8173916776436821938 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5350001822289929954} - m_LocalRotation: {x: 0.000000021855694, y: 0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} + m_GameObject: {fileID: 838925125806505752} + m_LocalRotation: {x: 0.00000008146034, 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: 7951258207224713824} - - {fileID: 5488926764375732961} - - {fileID: 5551125943416818270} - - {fileID: 4409659463910318501} - m_Father: {fileID: 8270855663187062767} + - {fileID: 1407258461600868627} + - {fileID: 1476312919962420616} + - {fileID: 4772667435036090619} + - {fileID: 9090878679503450943} + m_Father: {fileID: 3831596280851641935} m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &6048850322503762846 +--- !u!1 &1448679902374812222 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -458,9 +43,9 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 8937122768819410266} - - component: {fileID: 6989809552187391942} - - component: {fileID: 2850486098467457892} + - component: {fileID: 4317934089355988218} + - component: {fileID: 2804512364258829926} + - component: {fileID: 6946131598073123524} m_Layer: 0 m_Name: Button_Home m_TagString: Untagged @@ -468,36 +53,36 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &8937122768819410266 +--- !u!4 &4317934089355988218 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6048850322503762846} - m_LocalRotation: {x: 0.18379451, y: -0.0000000859335, z: 0.000000016067826, w: 0.9829647} - m_LocalPosition: {x: 0, y: -0.0032368493, z: 0.024549427} + m_GameObject: {fileID: 1448679902374812222} + m_LocalRotation: {x: 0.18379451, y: -0.00000008593347, z: 0.000000016067828, w: 0.9829647} + m_LocalPosition: {x: 0.0000000071757764, y: -0.0032368493, z: 0.024549427} m_LocalScale: {x: 1.01935, y: 1.01935, z: 1.01935} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 8270855663187062767} + m_Father: {fileID: 3831596280851641935} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &6989809552187391942 +--- !u!33 &2804512364258829926 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6048850322503762846} - m_Mesh: {fileID: -8429650256770907399, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} ---- !u!23 &2850486098467457892 + m_GameObject: {fileID: 1448679902374812222} + m_Mesh: {fileID: -8429650256770907399, guid: 147ae308eec018b40a7b312ae58f44c7, type: 3} +--- !u!23 &6946131598073123524 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6048850322503762846} + m_GameObject: {fileID: 1448679902374812222} m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 @@ -511,7 +96,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: 99685157b02e4d446bbecb015645e5e8, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -533,7 +118,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &6877554675875058235 +--- !u!1 &1698198350110287309 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -541,9 +126,9 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 7951258207224713824} - - component: {fileID: 2046265684884497959} - - component: {fileID: 2101229328401842903} + - component: {fileID: 1407258461600868627} + - component: {fileID: 3825292597872868106} + - component: {fileID: 8302382506611171500} m_Layer: 0 m_Name: Button_A m_TagString: Untagged @@ -551,36 +136,36 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &7951258207224713824 +--- !u!4 &1407258461600868627 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6877554675875058235} - m_LocalRotation: {x: 0.000000059604645, y: -0.000000030733645, z: -0.000000028871002, w: 1} - m_LocalPosition: {x: -0.011533444, y: 0.0009400594, z: -0.007045295} + m_GameObject: {fileID: 1698198350110287309} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.007800013, y: 0.0013757758, z: 0.0055} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 8173916776436821938} + m_Father: {fileID: 5578866909471720403} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &2046265684884497959 +--- !u!33 &3825292597872868106 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6877554675875058235} - m_Mesh: {fileID: 5083779560280695074, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} ---- !u!23 &2101229328401842903 + m_GameObject: {fileID: 1698198350110287309} + m_Mesh: {fileID: 5083779560280695074, guid: 147ae308eec018b40a7b312ae58f44c7, type: 3} +--- !u!23 &8302382506611171500 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6877554675875058235} + m_GameObject: {fileID: 1698198350110287309} m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 @@ -594,7 +179,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: 99685157b02e4d446bbecb015645e5e8, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -616,7 +201,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &8103503810883324120 +--- !u!1 &3658530253221974222 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -624,92 +209,9 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 5729059251352797873} - - component: {fileID: 7013576290909491880} - - component: {fileID: 2937204069651033959} - m_Layer: 0 - m_Name: Controller_Base - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &5729059251352797873 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8103503810883324120} - m_LocalRotation: {x: 0.000000021855694, 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: 8270855663187062767} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &7013576290909491880 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8103503810883324120} - m_Mesh: {fileID: 22788929071467060, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} ---- !u!23 &2937204069651033959 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8103503810883324120} - 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: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} - 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 &8443930452699679086 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8402887055810999798} - - component: {fileID: 7720275433028147840} - - component: {fileID: 5436389215136348666} + - component: {fileID: 3708264189882788950} + - component: {fileID: 3226976990141940512} + - component: {fileID: 908184320783622234} m_Layer: 0 m_Name: Bumper m_TagString: Untagged @@ -717,36 +219,36 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &8402887055810999798 +--- !u!4 &3708264189882788950 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8443930452699679086} - m_LocalRotation: {x: 0.000000021668717, y: -0.1305262, z: 0.0000000028527405, w: 0.9914449} + m_GameObject: {fileID: 3658530253221974222} + m_LocalRotation: {x: 0.00000013985816, y: -0.1305262, z: 0.000000018412676, w: 0.9914449} m_LocalPosition: {x: -0.012636564, y: -0.028556997, z: 0.027326612} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 8270855663187062767} + m_Father: {fileID: 3831596280851641935} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &7720275433028147840 +--- !u!33 &3226976990141940512 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8443930452699679086} - m_Mesh: {fileID: -4189514412694937182, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} ---- !u!23 &5436389215136348666 + m_GameObject: {fileID: 3658530253221974222} + m_Mesh: {fileID: -4189514412694937182, guid: 147ae308eec018b40a7b312ae58f44c7, type: 3} +--- !u!23 &908184320783622234 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8443930452699679086} + m_GameObject: {fileID: 3658530253221974222} m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 @@ -760,7 +262,542 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: be3083a5f26d4e859d594ecbe632f87e, type: 3} + - {fileID: 2100000, guid: 99685157b02e4d446bbecb015645e5e8, 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 &4007647503543292280 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 606542200399518481} + - component: {fileID: 2791758539991239432} + - component: {fileID: 8009757945635403463} + m_Layer: 0 + m_Name: Controller_Base + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &606542200399518481 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4007647503543292280} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3831596280851641935} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &2791758539991239432 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4007647503543292280} + m_Mesh: {fileID: 22788929071467060, guid: 147ae308eec018b40a7b312ae58f44c7, type: 3} +--- !u!23 &8009757945635403463 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4007647503543292280} + 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: 9f12d299d16099343a3c5c0d7285822a, 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 &4173161556249022688 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9090878679503450943} + - component: {fileID: 7940978787584295671} + - component: {fileID: 5658544185046500831} + m_Layer: 0 + m_Name: ThumbStick_Base + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &9090878679503450943 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4173161556249022688} + m_LocalRotation: {x: 0.000000059604645, y: 0, z: -0, w: 1} + m_LocalPosition: {x: 0.008775877, y: 0.00152745, z: -0.0074315914} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5578866909471720403} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &7940978787584295671 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4173161556249022688} + m_Mesh: {fileID: -2014588322676101042, guid: 147ae308eec018b40a7b312ae58f44c7, type: 3} +--- !u!23 &5658544185046500831 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4173161556249022688} + 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: 99685157b02e4d446bbecb015645e5e8, 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 &4496633296992529653 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3831596280851641935} + m_Layer: 0 + m_Name: UniversalController + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3831596280851641935 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4496633296992529653} + 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: 3708264189882788950} + - {fileID: 4317934089355988218} + - {fileID: 606542200399518481} + - {fileID: 3227744485374104613} + - {fileID: 3290220732042902362} + - {fileID: 5578866909471720403} + m_Father: {fileID: 8270855663187062767} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &5479181676923438292 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4772667435036090619} + - component: {fileID: 8252842386947597077} + - component: {fileID: 430567819290339060} + m_Layer: 0 + m_Name: ThumbStick + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4772667435036090619 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5479181676923438292} + m_LocalRotation: {x: 0.000000059604645, y: 0, z: -0, w: 1} + m_LocalPosition: {x: 0.008775876, y: -0.002558912, z: -0.0074315914} + m_LocalScale: {x: 1.342947, y: 1.342947, z: 1.342947} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5578866909471720403} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &8252842386947597077 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5479181676923438292} + m_Mesh: {fileID: -2564423107879867638, guid: 147ae308eec018b40a7b312ae58f44c7, type: 3} +--- !u!23 &430567819290339060 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5479181676923438292} + 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: 99685157b02e4d446bbecb015645e5e8, 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 &5908322354616421163 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3227744485374104613} + - component: {fileID: 8151713988064746545} + - component: {fileID: 2071210351488613610} + m_Layer: 0 + m_Name: TouchPad + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3227744485374104613 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5908322354616421163} + m_LocalRotation: {x: 0.00000008146034, y: 0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: -0.0020741627, z: -0.0052528577} + m_LocalScale: {x: 0.982392, y: 1.55, z: 0.982392} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3831596280851641935} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &8151713988064746545 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5908322354616421163} + m_Mesh: {fileID: -1120971793077124694, guid: 147ae308eec018b40a7b312ae58f44c7, type: 3} +--- !u!23 &2071210351488613610 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5908322354616421163} + 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: 99685157b02e4d446bbecb015645e5e8, 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 &6593186904332347165 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1476312919962420616} + - component: {fileID: 3046491538343432697} + - component: {fileID: 5573814406739661245} + m_Layer: 0 + m_Name: Button_B + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1476312919962420616 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6593186904332347165} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.012, y: 0.0013757758, z: -0.009} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5578866909471720403} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &3046491538343432697 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6593186904332347165} + m_Mesh: {fileID: 8449303727733987256, guid: 147ae308eec018b40a7b312ae58f44c7, type: 3} +--- !u!23 &5573814406739661245 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6593186904332347165} + 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: 99685157b02e4d446bbecb015645e5e8, 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 &7600421817103596258 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3290220732042902362} + - component: {fileID: 8482456410926060172} + - component: {fileID: 3594184993934668465} + m_Layer: 0 + m_Name: Trigger + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3290220732042902362 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7600421817103596258} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -6.952414e-10, y: -0.012954317, z: -0.020195028} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3831596280851641935} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &8482456410926060172 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7600421817103596258} + m_Mesh: {fileID: -8653722315008560443, guid: 147ae308eec018b40a7b312ae58f44c7, type: 3} +--- !u!23 &3594184993934668465 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7600421817103596258} + 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: 99685157b02e4d446bbecb015645e5e8, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -791,6 +828,7 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 8270855663187062767} + - component: {fileID: 3718224901187835141} m_Layer: 0 m_Name: XR Controller Left m_TagString: Untagged @@ -810,12 +848,67 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 8402887055810999798} - - {fileID: 8937122768819410266} - - {fileID: 5729059251352797873} - - {fileID: 7719217461193035141} - - {fileID: 7656785331879846650} - - {fileID: 8173916776436821938} + - {fileID: 3831596280851641935} m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &3718224901187835141 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8758423527188247893} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4a5f76f9ea8c80547973ab01877f9567, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ThumbstickTransform: {fileID: 4772667435036090619} + m_StickRotationRange: {x: 30, y: -30} + m_StickInput: + m_InputSourceMode: 2 + m_InputAction: + m_Name: Thumbstick + m_Type: 0 + m_ExpectedControlType: Vector2 + m_Id: 2f424cdc-fe47-4989-a9c2-6fa97f609e70 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReference: {fileID: -60998027439631388, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualValue: {x: 0, y: 0} + m_TriggerTransform: {fileID: 3290220732042902362} + m_TriggerXAxisRotationRange: {x: 0, y: -15} + m_TriggerInput: + m_InputSourceMode: 2 + m_InputAction: + m_Name: Trigger + m_Type: 0 + m_ExpectedControlType: Axis + m_Id: adbe6783-3cbb-48f7-8ad5-0b09a32b9943 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReference: {fileID: -4289430672226363583, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualValue: 0 + m_GripTransform: {fileID: 3708264189882788950} + m_GripRightRange: {x: -0.0125, y: -0.011} + m_GripInput: + m_InputSourceMode: 2 + m_InputAction: + m_Name: Grip + m_Type: 0 + m_ExpectedControlType: Axis + m_Id: 7ddc77c6-8f81-4889-aaca-964286dbe1ea + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReference: {fileID: 6558622148059887818, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualValue: 0 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Controllers/XR Controller Left.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Controllers/XR Controller Left.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Controllers/XR Controller Left.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Controllers/XR Controller Left.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Controllers/XR Controller Right.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Controllers/XR Controller Right.prefab similarity index 62% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Controllers/XR Controller Right.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Controllers/XR Controller Right.prefab index a9d8ba61..f30d68d0 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Controllers/XR Controller Right.prefab +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Controllers/XR Controller Right.prefab @@ -1,6 +1,6 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: ---- !u!1 &631318195828040478 +--- !u!1 &383438424965467249 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -8,34 +8,34 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 3716161019320855118} + - component: {fileID: 4871301772669071546} m_Layer: 0 - m_Name: XRController_LT_Thumbstick_Buttons + m_Name: XRController_Thumbstick_Buttons m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &3716161019320855118 +--- !u!4 &4871301772669071546 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 631318195828040478} - m_LocalRotation: {x: 0.000000021855694, y: 0, z: -0, w: 1} + m_GameObject: {fileID: 383438424965467249} + m_LocalRotation: {x: 0.00000008146034, 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: 3217094005667092380} - - {fileID: 1067765487391569693} - - {fileID: 1149664065565101986} - - {fileID: 9209759161381479513} - m_Father: {fileID: 3475118261464492563} + - {fileID: 2121719750533061242} + - {fileID: 1912516935883159265} + - {fileID: 5534257073571976082} + - {fileID: 8133223008797737046} + m_Father: {fileID: 4312999587465610534} m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1228417906145134178 +--- !u!1 &1830568820149819044 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -43,92 +43,9 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4538198013890515110} - - component: {fileID: 2593272954759969338} - - component: {fileID: 7310209448969834136} - m_Layer: 0 - m_Name: Button_Home - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4538198013890515110 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1228417906145134178} - m_LocalRotation: {x: 0.17364818, y: -0.00000008609464, z: 0.000000015180808, w: 0.9848078} - m_LocalPosition: {x: -0.0000000071777, y: -0.0032408535, z: 0.024560427} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 3475118261464492563} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &2593272954759969338 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1228417906145134178} - m_Mesh: {fileID: -8429650256770907399, guid: 11cd62256b1d470f922b2c8e6446cc77, type: 3} ---- !u!23 &7310209448969834136 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1228417906145134178} - 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: 670224309865224971, guid: 11cd62256b1d470f922b2c8e6446cc77, type: 3} - 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 &2129104537058187207 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3217094005667092380} - - component: {fileID: 6816243177344082907} - - component: {fileID: 6905410428598011691} + - component: {fileID: 2121719750533061242} + - component: {fileID: 4314555765524351075} + - component: {fileID: 9061724193437782981} m_Layer: 0 m_Name: Button_A m_TagString: Untagged @@ -136,36 +53,36 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &3217094005667092380 +--- !u!4 &2121719750533061242 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2129104537058187207} + m_GameObject: {fileID: 1830568820149819044} m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0.011533444, y: 0.0009400594, z: -0.007045295} + m_LocalPosition: {x: -0.007800013, y: 0.0013757758, z: 0.0055} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 3716161019320855118} + m_Father: {fileID: 4871301772669071546} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &6816243177344082907 +--- !u!33 &4314555765524351075 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2129104537058187207} - m_Mesh: {fileID: 5083779560280695074, guid: 11cd62256b1d470f922b2c8e6446cc77, type: 3} ---- !u!23 &6905410428598011691 + m_GameObject: {fileID: 1830568820149819044} + m_Mesh: {fileID: 5083779560280695074, guid: 147ae308eec018b40a7b312ae58f44c7, type: 3} +--- !u!23 &9061724193437782981 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2129104537058187207} + m_GameObject: {fileID: 1830568820149819044} m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 @@ -179,7 +96,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: 11cd62256b1d470f922b2c8e6446cc77, type: 3} + - {fileID: 2100000, guid: 99685157b02e4d446bbecb015645e5e8, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -201,7 +118,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &3641317572183526692 +--- !u!1 &1940194302770129239 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -209,9 +126,212 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 971748149831272269} - - component: {fileID: 2569541872588003156} - - component: {fileID: 7655812912622807707} + - component: {fileID: 3826415840535314323} + - component: {fileID: 2890725886003467535} + - component: {fileID: 7967948701137510829} + m_Layer: 0 + m_Name: Button_Home + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3826415840535314323 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1940194302770129239} + m_LocalRotation: {x: 0.18379451, y: -0.00000008593347, z: 0.000000016067828, w: 0.9829647} + m_LocalPosition: {x: 0.0000000071757764, y: -0.0032368493, z: 0.024549427} + m_LocalScale: {x: 1.01935, y: 1.01935, z: 1.01935} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4312999587465610534} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &2890725886003467535 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1940194302770129239} + m_Mesh: {fileID: -8429650256770907399, guid: 147ae308eec018b40a7b312ae58f44c7, type: 3} +--- !u!23 &7967948701137510829 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1940194302770129239} + 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: 99685157b02e4d446bbecb015645e5e8, 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 &3499590388232691612 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4312999587465610534} + m_Layer: 0 + m_Name: UniversalController + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4312999587465610534 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3499590388232691612} + 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: 4431590825886359359} + - {fileID: 3826415840535314323} + - {fileID: 476418562824415352} + - {fileID: 2467139442371389260} + - {fileID: 2548892874240362547} + - {fileID: 4871301772669071546} + m_Father: {fileID: 3475118261464492563} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &3971126562083824521 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8133223008797737046} + - component: {fileID: 6972219698470072734} + - component: {fileID: 4643603977460086454} + m_Layer: 0 + m_Name: ThumbStick_Base + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8133223008797737046 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3971126562083824521} + m_LocalRotation: {x: 0.000000059604645, y: 0, z: -0, w: 1} + m_LocalPosition: {x: 0.008775877, y: 0.00152745, z: -0.0074315914} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4871301772669071546} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &6972219698470072734 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3971126562083824521} + m_Mesh: {fileID: -2014588322676101042, guid: 147ae308eec018b40a7b312ae58f44c7, type: 3} +--- !u!23 &4643603977460086454 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3971126562083824521} + 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: 99685157b02e4d446bbecb015645e5e8, 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 &4136640823569162769 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 476418562824415352} + - component: {fileID: 2902600039765555297} + - component: {fileID: 7052120983454352814} m_Layer: 0 m_Name: Controller_Base m_TagString: Untagged @@ -219,36 +339,36 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &971748149831272269 +--- !u!4 &476418562824415352 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3641317572183526692} - m_LocalRotation: {x: 0.000000021855694, y: 0, z: -0, w: 1} + m_GameObject: {fileID: 4136640823569162769} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} m_LocalPosition: {x: -0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 3475118261464492563} + m_Father: {fileID: 4312999587465610534} m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &2569541872588003156 +--- !u!33 &2902600039765555297 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3641317572183526692} - m_Mesh: {fileID: 22788929071467060, guid: 11cd62256b1d470f922b2c8e6446cc77, type: 3} ---- !u!23 &7655812912622807707 + m_GameObject: {fileID: 4136640823569162769} + m_Mesh: {fileID: 22788929071467060, guid: 147ae308eec018b40a7b312ae58f44c7, type: 3} +--- !u!23 &7052120983454352814 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3641317572183526692} + m_GameObject: {fileID: 4136640823569162769} m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 @@ -262,90 +382,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: 11cd62256b1d470f922b2c8e6446cc77, type: 3} - 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 &4022625689426332818 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3918395025868533770} - - component: {fileID: 3016865672996839292} - - component: {fileID: 687940176838523910} - m_Layer: 0 - m_Name: Bumper - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &3918395025868533770 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4022625689426332818} - m_LocalRotation: {x: -0.70441604, y: 0.061628427, z: 0.061628427, w: 0.7044161} - m_LocalPosition: {x: 0.012636564, y: -0.028556997, z: 0.027326612} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 3475118261464492563} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &3016865672996839292 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4022625689426332818} - m_Mesh: {fileID: -4189514412694937182, guid: 11cd62256b1d470f922b2c8e6446cc77, type: 3} ---- !u!23 &687940176838523910 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4022625689426332818} - 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: 670224309865224971, guid: 11cd62256b1d470f922b2c8e6446cc77, type: 3} + - {fileID: 2100000, guid: 9f12d299d16099343a3c5c0d7285822a, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -376,6 +413,7 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 3475118261464492563} + - component: {fileID: 2983433689305697426} m_Layer: 0 m_Name: XR Controller Right m_TagString: Untagged @@ -392,19 +430,74 @@ Transform: m_GameObject: {fileID: 4283425761326543017} m_LocalRotation: {x: 0, y: 1, z: 0, w: 0} m_LocalPosition: {x: 0, y: 0, z: -0.05} - m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalScale: {x: -1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 3918395025868533770} - - {fileID: 4538198013890515110} - - {fileID: 971748149831272269} - - {fileID: 3016789030709610617} - - {fileID: 2936275983042619142} - - {fileID: 3716161019320855118} + - {fileID: 4312999587465610534} m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &6118169511635425143 +--- !u!114 &2983433689305697426 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4283425761326543017} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4a5f76f9ea8c80547973ab01877f9567, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ThumbstickTransform: {fileID: 5534257073571976082} + m_StickRotationRange: {x: 30, y: 30} + m_StickInput: + m_InputSourceMode: 2 + m_InputAction: + m_Name: Thumbstick + m_Type: 0 + m_ExpectedControlType: Vector2 + m_Id: 8a80d2d1-54ab-40f3-ae58-acd679e9f63f + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReference: {fileID: -8666952849799569744, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualValue: {x: 0, y: 0} + m_TriggerTransform: {fileID: 2548892874240362547} + m_TriggerXAxisRotationRange: {x: 0, y: -15} + m_TriggerInput: + m_InputSourceMode: 2 + m_InputAction: + m_Name: Trigger + m_Type: 0 + m_ExpectedControlType: Axis + m_Id: 594965ae-7ab6-4c16-889f-f371fa785459 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReference: {fileID: 7904272356298805229, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualValue: 0 + m_GripTransform: {fileID: 4431590825886359359} + m_GripRightRange: {x: -0.0125, y: -0.011} + m_GripInput: + m_InputSourceMode: 2 + m_InputAction: + m_Name: Grip + m_Type: 0 + m_ExpectedControlType: Axis + m_Id: 615b1144-610d-48ff-a7ed-4f4447f2ed86 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReference: {fileID: -1758520528963094988, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualValue: 0 +--- !u!1 &4338091395681428391 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -412,46 +505,46 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 3016789030709610617} - - component: {fileID: 8373948243224051821} - - component: {fileID: 1848978295326630070} + - component: {fileID: 4431590825886359359} + - component: {fileID: 2467634753240625225} + - component: {fileID: 174741061115499315} m_Layer: 0 - m_Name: TouchPad + m_Name: Bumper m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &3016789030709610617 +--- !u!4 &4431590825886359359 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6118169511635425143} - m_LocalRotation: {x: 0.000000021855694, y: 0, z: -0, w: 1} - m_LocalPosition: {x: 2.2105108e-10, y: -0.0000135928385, z: -0.0049661375} + m_GameObject: {fileID: 4338091395681428391} + m_LocalRotation: {x: 0.00000013985816, y: -0.1305262, z: 0.000000018412676, w: 0.9914449} + m_LocalPosition: {x: -0.0125, y: -0.028556997, z: 0.027326612} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 3475118261464492563} - m_RootOrder: 3 + m_Father: {fileID: 4312999587465610534} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &8373948243224051821 +--- !u!33 &2467634753240625225 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6118169511635425143} - m_Mesh: {fileID: -1120971793077124694, guid: 11cd62256b1d470f922b2c8e6446cc77, type: 3} ---- !u!23 &1848978295326630070 + m_GameObject: {fileID: 4338091395681428391} + m_Mesh: {fileID: -4189514412694937182, guid: 147ae308eec018b40a7b312ae58f44c7, type: 3} +--- !u!23 &174741061115499315 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6118169511635425143} + m_GameObject: {fileID: 4338091395681428391} m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 @@ -465,7 +558,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: 11cd62256b1d470f922b2c8e6446cc77, type: 3} + - {fileID: 2100000, guid: 99685157b02e4d446bbecb015645e5e8, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -487,7 +580,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &7325642504921798210 +--- !u!1 &4827784543866730429 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -495,92 +588,9 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1067765487391569693} - - component: {fileID: 1010913343161546207} - - component: {fileID: 8298949448185474913} - m_Layer: 0 - m_Name: Button_B - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1067765487391569693 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7325642504921798210} - m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0.007821825, y: 0.0009400594, z: 0.006571072} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 3716161019320855118} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &1010913343161546207 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7325642504921798210} - m_Mesh: {fileID: 8449303727733987256, guid: 11cd62256b1d470f922b2c8e6446cc77, type: 3} ---- !u!23 &8298949448185474913 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7325642504921798210} - 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: 670224309865224971, guid: 11cd62256b1d470f922b2c8e6446cc77, type: 3} - 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 &7670919110547240753 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1149664065565101986} - - component: {fileID: 5821210241915783947} - - component: {fileID: 5320034229441704307} + - component: {fileID: 5534257073571976082} + - component: {fileID: 8967149194210545788} + - component: {fileID: 797108429923947933} m_Layer: 0 m_Name: ThumbStick m_TagString: Untagged @@ -588,36 +598,36 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &1149664065565101986 +--- !u!4 &5534257073571976082 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7670919110547240753} - m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -0.008775876, y: -0.002558912, z: -0.0074315914} - m_LocalScale: {x: 1, y: 1, z: 1} + m_GameObject: {fileID: 4827784543866730429} + m_LocalRotation: {x: 0.000000059604645, y: 0, z: -0, w: 1} + m_LocalPosition: {x: 0.008775876, y: -0.002558912, z: -0.0074315914} + m_LocalScale: {x: 1.342947, y: 1.342947, z: 1.342947} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 3716161019320855118} + m_Father: {fileID: 4871301772669071546} m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &5821210241915783947 +--- !u!33 &8967149194210545788 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7670919110547240753} - m_Mesh: {fileID: -2564423107879867638, guid: 11cd62256b1d470f922b2c8e6446cc77, type: 3} ---- !u!23 &5320034229441704307 + m_GameObject: {fileID: 4827784543866730429} + m_Mesh: {fileID: -2564423107879867638, guid: 147ae308eec018b40a7b312ae58f44c7, type: 3} +--- !u!23 &797108429923947933 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7670919110547240753} + m_GameObject: {fileID: 4827784543866730429} m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 @@ -631,7 +641,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: 11cd62256b1d470f922b2c8e6446cc77, type: 3} + - {fileID: 2100000, guid: 99685157b02e4d446bbecb015645e5e8, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -653,7 +663,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &7812784923275191998 +--- !u!1 &6163737171295032436 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -661,9 +671,175 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 2936275983042619142} - - component: {fileID: 8115825213372190416} - - component: {fileID: 3816683123715682029} + - component: {fileID: 1912516935883159265} + - component: {fileID: 2643900140894839440} + - component: {fileID: 4876378503311385300} + m_Layer: 0 + m_Name: Button_B + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1912516935883159265 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6163737171295032436} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.012, y: 0.0013757758, z: -0.009} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4871301772669071546} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &2643900140894839440 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6163737171295032436} + m_Mesh: {fileID: 8449303727733987256, guid: 147ae308eec018b40a7b312ae58f44c7, type: 3} +--- !u!23 &4876378503311385300 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6163737171295032436} + 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: 99685157b02e4d446bbecb015645e5e8, 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 &6847961977512048706 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2467139442371389260} + - component: {fileID: 9211829831748775768} + - component: {fileID: 1317338165740228483} + m_Layer: 0 + m_Name: TouchPad + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2467139442371389260 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6847961977512048706} + m_LocalRotation: {x: 0.00000008146034, y: 0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: -0.0020741627, z: -0.0052528577} + m_LocalScale: {x: 0.982392, y: 1.55, z: 0.982392} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4312999587465610534} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &9211829831748775768 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6847961977512048706} + m_Mesh: {fileID: -1120971793077124694, guid: 147ae308eec018b40a7b312ae58f44c7, type: 3} +--- !u!23 &1317338165740228483 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6847961977512048706} + 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: 99685157b02e4d446bbecb015645e5e8, 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 &7461432819638815115 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2548892874240362547} + - component: {fileID: 8881652531632955877} + - component: {fileID: 4546197970950160856} m_Layer: 0 m_Name: Trigger m_TagString: Untagged @@ -671,36 +847,36 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &2936275983042619142 +--- !u!4 &2548892874240362547 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7812784923275191998} - m_LocalRotation: {x: 0.000000021855694, y: 0, z: -0, w: 1} - m_LocalPosition: {x: -5.559989e-10, y: -0.013359987, z: -0.018506905} + m_GameObject: {fileID: 7461432819638815115} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -0.012954317, z: -0.02} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 3475118261464492563} + m_Father: {fileID: 4312999587465610534} m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &8115825213372190416 +--- !u!33 &8881652531632955877 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7812784923275191998} - m_Mesh: {fileID: -8653722315008560443, guid: 11cd62256b1d470f922b2c8e6446cc77, type: 3} ---- !u!23 &3816683123715682029 + m_GameObject: {fileID: 7461432819638815115} + m_Mesh: {fileID: -8653722315008560443, guid: 147ae308eec018b40a7b312ae58f44c7, type: 3} +--- !u!23 &4546197970950160856 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7812784923275191998} + m_GameObject: {fileID: 7461432819638815115} m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 @@ -714,90 +890,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 670224309865224971, guid: 11cd62256b1d470f922b2c8e6446cc77, type: 3} - 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 &8852161128374344987 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 9209759161381479513} - - component: {fileID: 1663432946110593549} - - component: {fileID: 7639984874612879961} - m_Layer: 0 - m_Name: ThumbStick_Base - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &9209759161381479513 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8852161128374344987} - m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -0.008775877, y: 0.00152745, z: -0.0074315914} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 3716161019320855118} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &1663432946110593549 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8852161128374344987} - m_Mesh: {fileID: -2014588322676101042, guid: 11cd62256b1d470f922b2c8e6446cc77, type: 3} ---- !u!23 &7639984874612879961 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8852161128374344987} - 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: 670224309865224971, guid: 11cd62256b1d470f922b2c8e6446cc77, type: 3} + - {fileID: 2100000, guid: 99685157b02e4d446bbecb015645e5e8, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Controllers/XR Controller Right.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Controllers/XR Controller Right.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Controllers/XR Controller Right.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Controllers/XR Controller Right.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Interactors.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Interactors.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Interactors.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Interactors.meta diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Interactors/Direct Interactor.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Interactors/Direct Interactor.prefab new file mode 100644 index 00000000..83c5c4e6 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Interactors/Direct Interactor.prefab @@ -0,0 +1,229 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &8841706926471734270 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6189354538098044173} + - component: {fileID: 664489801923019586} + - component: {fileID: 6059725000919627127} + - component: {fileID: 4350281875766305713} + m_Layer: 0 + m_Name: Direct Interactor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6189354538098044173 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8841706926471734270} + 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!114 &664489801923019586 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8841706926471734270} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4253f32900bcc4d499d675566142ded0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_InteractionManager: {fileID: 0} + m_InteractionLayers: + m_Bits: 1 + m_Handedness: 0 + m_AttachTransform: {fileID: 0} + m_KeepSelectedTargetValid: 1 + m_DisableVisualsWhenBlockedInGroup: 1 + m_StartingSelectedInteractable: {fileID: 0} + m_StartingTargetFilter: {fileID: 0} + m_HoverEntered: + m_PersistentCalls: + m_Calls: [] + m_HoverExited: + m_PersistentCalls: + m_Calls: [] + m_SelectEntered: + m_PersistentCalls: + m_Calls: [] + m_SelectExited: + m_PersistentCalls: + m_Calls: [] + m_StartingHoverFilters: [] + m_StartingSelectFilters: [] + m_SelectInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: Select + m_Type: 1 + m_ExpectedControlType: + m_Id: c915d8ba-cdda-48ee-9269-e3993d7c736b + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: Select Value + m_Type: 0 + m_ExpectedControlType: Axis + m_Id: 08e85da7-e479-4e36-a3f4-42032015b0df + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: 0} + m_InputActionReferenceValue: {fileID: 0} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_ActivateInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: Activate + m_Type: 1 + m_ExpectedControlType: + m_Id: 68925782-6dea-49c5-be53-a244ff25f229 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: Activate Value + m_Type: 0 + m_ExpectedControlType: Axis + m_Id: cbe4bb4e-1f55-4428-be51-5b9d2cc24fa8 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: 0} + m_InputActionReferenceValue: {fileID: 0} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_SelectActionTrigger: 1 + m_AllowHoveredActivate: 0 + m_TargetPriorityMode: 0 + m_HideControllerOnSelect: 0 + m_InputCompatibilityMode: 0 + m_PlayAudioClipOnSelectEntered: 0 + m_AudioClipForOnSelectEntered: {fileID: 0} + m_PlayAudioClipOnSelectExited: 0 + m_AudioClipForOnSelectExited: {fileID: 0} + m_PlayAudioClipOnSelectCanceled: 0 + m_AudioClipForOnSelectCanceled: {fileID: 0} + m_PlayAudioClipOnHoverEntered: 0 + m_AudioClipForOnHoverEntered: {fileID: 0} + m_PlayAudioClipOnHoverExited: 0 + m_AudioClipForOnHoverExited: {fileID: 0} + m_PlayAudioClipOnHoverCanceled: 0 + m_AudioClipForOnHoverCanceled: {fileID: 0} + m_AllowHoverAudioWhileSelecting: 0 + m_PlayHapticsOnSelectEntered: 0 + m_HapticSelectEnterIntensity: 0 + m_HapticSelectEnterDuration: 0 + m_PlayHapticsOnSelectExited: 0 + m_HapticSelectExitIntensity: 0 + m_HapticSelectExitDuration: 0 + m_PlayHapticsOnSelectCanceled: 0 + m_HapticSelectCancelIntensity: 0 + m_HapticSelectCancelDuration: 0 + m_PlayHapticsOnHoverEntered: 0 + m_HapticHoverEnterIntensity: 0 + m_HapticHoverEnterDuration: 0 + m_PlayHapticsOnHoverExited: 0 + m_HapticHoverExitIntensity: 0 + m_HapticHoverExitDuration: 0 + m_PlayHapticsOnHoverCanceled: 0 + m_HapticHoverCancelIntensity: 0 + m_HapticHoverCancelDuration: 0 + m_AllowHoverHapticsWhileSelecting: 0 + m_ImproveAccuracyWithSphereCollider: 1 + m_PhysicsLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_PhysicsTriggerInteraction: 1 +--- !u!135 &6059725000919627127 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8841706926471734270} + m_Material: {fileID: 0} + m_IsTrigger: 1 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!114 &4350281875766305713 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8841706926471734270} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dd0b9921bce4eeb49bd05815b1135ac2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_InteractorSourceObject: {fileID: 664489801923019586} + m_HapticImpulsePlayer: {fileID: 0} + m_PlaySelectEntered: 1 + m_SelectEnteredData: + m_Amplitude: 0.5 + m_Duration: 0.1 + m_Frequency: 0 + m_PlaySelectExited: 0 + m_SelectExitedData: + m_Amplitude: 0.5 + m_Duration: 0.1 + m_Frequency: 0 + m_PlaySelectCanceled: 0 + m_SelectCanceledData: + m_Amplitude: 0.5 + m_Duration: 0.1 + m_Frequency: 0 + m_PlayHoverEntered: 1 + m_HoverEnteredData: + m_Amplitude: 0.25 + m_Duration: 0.1 + m_Frequency: 0 + m_PlayHoverExited: 0 + m_HoverExitedData: + m_Amplitude: 0.25 + m_Duration: 0.1 + m_Frequency: 0 + m_PlayHoverCanceled: 0 + m_HoverCanceledData: + m_Amplitude: 0.25 + m_Duration: 0.1 + m_Frequency: 0 + m_AllowHoverHapticsWhileSelecting: 0 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Interactors/Direct Interactor.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Interactors/Direct Interactor.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Interactors/Direct Interactor.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Interactors/Direct Interactor.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Interactors/Gaze Interactor.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Interactors/Gaze Interactor.prefab similarity index 62% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Interactors/Gaze Interactor.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Interactors/Gaze Interactor.prefab index 0c4a61af..72b1db8d 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Interactors/Gaze Interactor.prefab +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Interactors/Gaze Interactor.prefab @@ -10,8 +10,8 @@ GameObject: m_Component: - component: {fileID: 7378618157167557198} - component: {fileID: 6766910295942714439} - - component: {fileID: 1646405018166597243} - component: {fileID: 6161168854630649507} + - component: {fileID: 2894763562165408636} m_Layer: 0 m_Name: Gaze Interactor m_TagString: Untagged @@ -47,11 +47,9 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_InteractionManager: {fileID: 0} - m_InteractionLayerMask: - serializedVersion: 2 - m_Bits: 4294967295 m_InteractionLayers: m_Bits: 1 + m_Handedness: 0 m_AttachTransform: {fileID: 0} m_KeepSelectedTargetValid: 1 m_DisableVisualsWhenBlockedInGroup: 1 @@ -71,22 +69,69 @@ MonoBehaviour: m_Calls: [] m_StartingHoverFilters: [] m_StartingSelectFilters: [] - m_OnHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectEntered: - m_PersistentCalls: - m_Calls: [] - m_OnSelectExited: - m_PersistentCalls: - m_Calls: [] + m_SelectInput: + m_InputSourceMode: 0 + m_InputActionPerformed: + m_Name: Select + m_Type: 1 + m_ExpectedControlType: + m_Id: 26dcb486-2cd5-4bf0-83a4-8252a6419ca1 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: Select Value + m_Type: 0 + m_ExpectedControlType: Axis + m_Id: d589f510-c88e-41dc-89ee-4accd74ded87 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: 0} + m_InputActionReferenceValue: {fileID: 0} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_ActivateInput: + m_InputSourceMode: 0 + m_InputActionPerformed: + m_Name: Activate + m_Type: 1 + m_ExpectedControlType: + m_Id: 1b75ac5e-63d2-4c5c-9b86-0fe382e6b137 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: Activate Value + m_Type: 0 + m_ExpectedControlType: Axis + m_Id: fde38f1d-c7ff-4233-b8ba-2548488943d7 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: 0} + m_InputActionReferenceValue: {fileID: 0} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 m_SelectActionTrigger: 0 - m_HideControllerOnSelect: 0 m_AllowHoveredActivate: 0 m_TargetPriorityMode: 0 + m_HideControllerOnSelect: 0 + m_InputCompatibilityMode: 0 m_PlayAudioClipOnSelectEntered: 0 m_AudioClipForOnSelectEntered: {fileID: 0} m_PlayAudioClipOnSelectExited: 0 @@ -99,7 +144,7 @@ MonoBehaviour: m_AudioClipForOnHoverExited: {fileID: 0} m_PlayAudioClipOnHoverCanceled: 0 m_AudioClipForOnHoverCanceled: {fileID: 0} - m_AllowHoverAudioWhileSelecting: 1 + m_AllowHoverAudioWhileSelecting: 0 m_PlayHapticsOnSelectEntered: 0 m_HapticSelectEnterIntensity: 0 m_HapticSelectEnterDuration: 0 @@ -118,7 +163,7 @@ MonoBehaviour: m_PlayHapticsOnHoverCanceled: 0 m_HapticHoverCancelIntensity: 0 m_HapticHoverCancelDuration: 0 - m_AllowHoverHapticsWhileSelecting: 1 + m_AllowHoverHapticsWhileSelecting: 0 m_LineType: 0 m_BlendVisualLinePoints: 1 m_MaxRaycastDistance: 30 @@ -148,12 +193,12 @@ MonoBehaviour: m_TimeToAutoDeselect: 0.25 m_EnableUIInteraction: 1 m_BlockUIOnInteractableSelection: 1 - m_AllowAnchorControl: 1 - m_UseForceGrab: 1 + m_ManipulateAttachTransform: 0 + m_UseForceGrab: 0 m_RotateSpeed: 180 m_TranslateSpeed: 1 - m_AnchorRotateReferenceFrame: {fileID: 0} - m_AnchorRotationMode: 0 + m_RotateReferenceFrame: {fileID: 0} + m_RotateMode: 0 m_UIHoverEntered: m_PersistentCalls: m_Calls: [] @@ -164,6 +209,148 @@ MonoBehaviour: m_OccludeARHitsWith3DObjects: 0 m_OccludeARHitsWith2DObjects: 0 m_ScaleMode: 0 + m_UIPressInput: + m_InputSourceMode: 0 + m_InputActionPerformed: + m_Name: UI Press + m_Type: 1 + m_ExpectedControlType: + m_Id: 8e16e22c-3195-4e76-b0d2-9ec60d8bfc8e + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: UI Press Value + m_Type: 0 + m_ExpectedControlType: Axis + m_Id: f2af0d9f-965a-4778-accc-36828a6e40b8 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: 0} + m_InputActionReferenceValue: {fileID: 0} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_UIScrollInput: + m_InputSourceMode: 0 + m_InputAction: + m_Name: UI Scroll + m_Type: 0 + m_ExpectedControlType: Vector2 + m_Id: 83ec219e-cbbd-4b69-9013-f330cea06247 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReference: {fileID: 0} + m_ObjectReferenceObject: {fileID: 0} + m_ManualValue: {x: 0, y: 0} + m_TranslateManipulationInput: + m_InputSourceMode: 0 + m_InputAction: + m_Name: Translate Manipulation + m_Type: 0 + m_ExpectedControlType: Vector2 + m_Id: 78fd2d8b-06b9-4583-8d46-a896cee22152 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReference: {fileID: 0} + m_ObjectReferenceObject: {fileID: 0} + m_ManualValue: {x: 0, y: 0} + m_RotateManipulationInput: + m_InputSourceMode: 0 + m_InputAction: + m_Name: Rotate Manipulation + m_Type: 0 + m_ExpectedControlType: Vector2 + m_Id: 2941b9e4-5f6c-48d5-9338-136ff3a60e62 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReference: {fileID: 0} + m_ObjectReferenceObject: {fileID: 0} + m_ManualValue: {x: 0, y: 0} + m_DirectionalManipulationInput: + m_InputSourceMode: 0 + m_InputAction: + m_Name: Directional Manipulation + m_Type: 0 + m_ExpectedControlType: Vector2 + m_Id: 4decd4bd-22c4-4e97-af9b-f22d09a3ea8e + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReference: {fileID: 0} + m_ObjectReferenceObject: {fileID: 0} + m_ManualValue: {x: 0, y: 0} + m_ScaleToggleInput: + m_InputSourceMode: 0 + m_InputActionPerformed: + m_Name: Scale Toggle + m_Type: 1 + m_ExpectedControlType: + m_Id: 4e7a5ca5-86e4-4d9d-9678-01fb7083e39b + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: Scale Toggle Value + m_Type: 0 + m_ExpectedControlType: Axis + m_Id: 0c82215d-82dc-4f94-a5a2-cd3a7186171a + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: 0} + m_InputActionReferenceValue: {fileID: 0} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_ScaleOverTimeInput: + m_InputSourceMode: 0 + m_InputAction: + m_Name: Scale Over Time + m_Type: 0 + m_ExpectedControlType: Vector2 + m_Id: ec6d1bcc-90c1-4e80-98a9-7de37426ef90 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReference: {fileID: 0} + m_ObjectReferenceObject: {fileID: 0} + m_ManualValue: {x: 0, y: 0} + m_ScaleDistanceDeltaInput: + m_InputSourceMode: 0 + m_InputAction: + m_Name: Scale Distance Delta + m_Type: 0 + m_ExpectedControlType: Axis + m_Id: 7e170bb1-3339-4b96-bbd9-61c01cb414db + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReference: {fileID: 0} + m_ObjectReferenceObject: {fileID: 0} + m_ManualValue: 0 m_GazeAssistanceCalculation: 1 m_GazeAssistanceColliderFixedSize: 1 m_GazeAssistanceColliderScale: 1 @@ -171,232 +358,6 @@ MonoBehaviour: m_GazeAssistanceDistanceScaling: 0 m_ClampGazeAssistanceDistanceScaling: 0 m_GazeAssistanceDistanceScalingClampValue: 0 ---- !u!114 &1646405018166597243 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3055433562365713971} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: caff514de9b15ad48ab85dcff5508221, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UpdateTrackingType: 0 - m_EnableInputTracking: 1 - m_EnableInputActions: 0 - m_ModelPrefab: {fileID: 0} - m_ModelParent: {fileID: 0} - m_Model: {fileID: 0} - m_AnimateModel: 0 - m_ModelSelectTransition: - m_ModelDeSelectTransition: - m_PositionAction: - m_UseReference: 1 - m_Action: - m_Name: Position - m_Type: 0 - m_ExpectedControlType: Vector3 - m_Id: c5c11aa1-bde1-4a3a-a80e-886509abbc16 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 3220680263695665919, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_RotationAction: - m_UseReference: 1 - m_Action: - m_Name: Rotation - m_Type: 0 - m_ExpectedControlType: Quaternion - m_Id: 49d34eac-625a-45e4-99f1-520d9a91587d - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -5930349909990434036, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_IsTrackedAction: - m_UseReference: 1 - m_Action: - m_Name: Is Tracked - m_Type: 1 - m_ExpectedControlType: Button - m_Id: 8e2e727b-5c20-4155-8455-04c94bc54da8 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 1 - m_Reference: {fileID: -831106814531524825, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_TrackingStateAction: - m_UseReference: 1 - m_Action: - m_Name: Tracking State - m_Type: 0 - m_ExpectedControlType: Integer - m_Id: 776eea05-891d-47cc-ba9d-8353541bbc61 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 2069149553511882089, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_SelectAction: - m_UseReference: 1 - m_Action: - m_Name: Select - m_Type: 1 - m_ExpectedControlType: Button - m_Id: d90b6a89-0f2d-4711-b5e3-6f709d46a3e9 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 0} - m_SelectActionValue: - m_UseReference: 1 - m_Action: - m_Name: Select Action Value - m_Type: 0 - m_ExpectedControlType: Axis - m_Id: 982fe616-81e7-4cea-8b1c-0fc18677699d - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 0} - m_ActivateAction: - m_UseReference: 1 - m_Action: - m_Name: Activate - m_Type: 1 - m_ExpectedControlType: Button - m_Id: 19b691c8-8354-453a-818d-9ab6fc719aa7 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 0} - m_ActivateActionValue: - m_UseReference: 1 - m_Action: - m_Name: Activate Action Value - m_Type: 0 - m_ExpectedControlType: Axis - m_Id: 8f68251c-035b-44ae-9665-8d736bde8dbe - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 0} - m_UIPressAction: - m_UseReference: 1 - m_Action: - m_Name: UI Press - m_Type: 1 - m_ExpectedControlType: Button - m_Id: cdf9e438-d5dd-488a-b24c-92607b3cf39e - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 0} - m_UIPressActionValue: - m_UseReference: 1 - m_Action: - m_Name: UI Press Action Value - m_Type: 0 - m_ExpectedControlType: Axis - m_Id: d4ffb96f-9b0b-4d82-93a2-b7bd82d288c9 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 0} - m_UIScrollAction: - m_UseReference: 1 - m_Action: - m_Name: UI Scroll - m_Type: 0 - m_ExpectedControlType: Vector2 - m_Id: 3261309f-f95a-4f48-aa8d-6b06dab8f09f - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 0} - m_HapticDeviceAction: - m_UseReference: 1 - m_Action: - m_Name: Haptic Device - m_Type: 2 - m_ExpectedControlType: - m_Id: 9b83662a-0fd2-4aee-aae5-c6634d0fbafc - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 0} - m_RotateAnchorAction: - m_UseReference: 1 - m_Action: - m_Name: Rotate Anchor - m_Type: 0 - m_ExpectedControlType: Vector2 - m_Id: 4cae4fad-cc16-4684-8fec-1ba47667d275 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 0} - m_DirectionalAnchorRotationAction: - m_UseReference: 1 - m_Action: - m_Name: Directional Anchor Rotation - m_Type: 0 - m_ExpectedControlType: Vector2 - m_Id: f58ccfc7-633b-46cf-9164-6dfafd85bf99 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 0} - m_TranslateAnchorAction: - m_UseReference: 1 - m_Action: - m_Name: Translate Anchor - m_Type: 0 - m_ExpectedControlType: Vector2 - m_Id: 83996765-f9ca-47e0-969e-b8fa763170db - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 0} - m_ScaleToggleAction: - m_UseReference: 1 - m_Action: - m_Name: Scale Toggle - m_Type: 1 - m_ExpectedControlType: - m_Id: cbaaadec-6494-4e38-a764-cf6099f71738 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 0} - m_ScaleDeltaAction: - m_UseReference: 1 - m_Action: - m_Name: Scale Delta - m_Type: 0 - m_ExpectedControlType: Vector2 - m_Id: 84640846-a827-414a-a35d-773ed3bc62c7 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 0} - m_ButtonPressPoint: 0.5 --- !u!114 &6161168854630649507 MonoBehaviour: m_ObjectHideFlags: 0 @@ -410,3 +371,72 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_FallbackIfEyeTrackingUnavailable: 1 +--- !u!114 &2894763562165408636 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3055433562365713971} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c2fadf230d1919748a9aa21d40f74619, type: 3} + m_Name: + m_EditorClassIdentifier: + m_TrackingType: 0 + m_UpdateType: 0 + m_IgnoreTrackingState: 0 + m_PositionInput: + m_UseReference: 1 + m_Action: + m_Name: Position + m_Type: 0 + m_ExpectedControlType: Vector3 + m_Id: e0974d43-a211-4251-882f-3f0b4749db16 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_Reference: {fileID: 3220680263695665919, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_RotationInput: + m_UseReference: 1 + m_Action: + m_Name: Rotation + m_Type: 0 + m_ExpectedControlType: Quaternion + m_Id: 0a88b07c-2048-460b-b52d-880dd98ceb35 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_Reference: {fileID: -5930349909990434036, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_TrackingStateInput: + m_UseReference: 1 + m_Action: + m_Name: Tracking State + m_Type: 0 + m_ExpectedControlType: Integer + m_Id: ca2485cb-f4d4-4bef-84e6-b085e080175c + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_Reference: {fileID: 2069149553511882089, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_PositionAction: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: b902054d-edbb-440a-a455-68558ef17b58 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_RotationAction: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 629180f1-a17a-4e47-a583-481808df540f + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Interactors/Gaze Interactor.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Interactors/Gaze Interactor.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Interactors/Gaze Interactor.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Interactors/Gaze Interactor.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Interactors/Left_NearFarInteractor.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Interactors/Left_NearFarInteractor.prefab new file mode 100644 index 00000000..cd43e9bf --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Interactors/Left_NearFarInteractor.prefab @@ -0,0 +1,721 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1323442585405899171 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 893315461643433812} + - component: {fileID: 3755238779732181253} + - component: {fileID: 3053154067257784704} + - component: {fileID: 6278253758758756215} + m_Layer: 0 + m_Name: LineVisual + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &893315461643433812 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1323442585405899171} + 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: 5745700813747042508} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &3755238779732181253 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1323442585405899171} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 80e353695beb436ab39a90d9ecefaee6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_LineRenderer: {fileID: 3053154067257784704} + m_CurveVisualObject: {fileID: 2442306273320644280} + m_OverrideLineOrigin: 1 + m_LineOriginTransform: {fileID: 5745700813747042508} + m_VisualPointCount: 20 + m_MaxVisualCurveDistance: 10 + m_RestingVisualLineLength: 0.25 + m_LineDynamicsMode: 1 + m_RetractDelay: 1 + m_RetractDuration: 1 + m_ExtendLineToEmptyHit: 0 + m_ExtensionRate: 10 + m_EndPointExpansionRate: 10 + m_ComputeMidPointWithComplexCurves: 0 + m_SnapToSelectedAttachIfAvailable: 1 + m_SnapToSnapVolumeIfAvailable: 1 + m_CurveStartOffset: 0.015 + m_CurveEndOffset: 0.005 + m_CustomizeLinePropertiesForState: 1 + m_LinePropertyAnimationSpeed: 8 + m_NoValidHitProperties: + m_SmoothlyCurveLine: 1 + m_LineBendRatio: 0.25 + m_AdjustWidth: 1 + m_StarWidth: 0.003 + m_EndWidth: 0.003 + m_EndWidthScaleDistanceFactor: 2 + m_AdjustGradient: 1 + m_Gradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 0} + key1: {r: 1, g: 1, b: 1, a: 0.5019608} + key2: {r: 0, g: 0, b: 0, a: 0.2509804} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 193 + atime1: 8192 + atime2: 32768 + atime3: 55705 + atime4: 65342 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 4 + m_CustomizeExpandLineDrawPercent: 1 + m_ExpandModeLineDrawPercent: 0.9 + m_UIHitProperties: + m_SmoothlyCurveLine: 1 + m_LineBendRatio: 0.5 + m_AdjustWidth: 1 + m_StarWidth: 0.004 + m_EndWidth: 0.004 + m_EndWidthScaleDistanceFactor: 2 + m_AdjustGradient: 1 + m_Gradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 0} + key1: {r: 1, g: 0.78431374, b: 0.5686275, a: 0.49019608} + key2: {r: 1, g: 1, b: 1, a: 1} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 16384 + ctime2: 65535 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 8192 + atime2: 32768 + atime3: 65535 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 3 + m_NumAlphaKeys: 4 + m_CustomizeExpandLineDrawPercent: 1 + m_ExpandModeLineDrawPercent: 0.9 + m_UIPressHitProperties: + m_SmoothlyCurveLine: 1 + m_LineBendRatio: 0.5 + m_AdjustWidth: 1 + m_StarWidth: 0.003 + m_EndWidth: 0.003 + m_EndWidthScaleDistanceFactor: 2 + m_AdjustGradient: 1 + m_Gradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 0} + key1: {r: 0.5686275, g: 0.78431374, b: 1, a: 0.627451} + key2: {r: 1, g: 1, b: 1, a: 1} + key3: {r: 1, g: 1, b: 1, a: 0.78431374} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 32768 + ctime2: 65535 + ctime3: 65535 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 8192 + atime2: 26214 + atime3: 42598 + atime4: 65535 + atime5: 65535 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 3 + m_NumAlphaKeys: 5 + m_CustomizeExpandLineDrawPercent: 1 + m_ExpandModeLineDrawPercent: 0.9 + m_SelectHitProperties: + m_SmoothlyCurveLine: 1 + m_LineBendRatio: 0.5 + m_AdjustWidth: 1 + m_StarWidth: 0.003 + m_EndWidth: 0.003 + m_EndWidthScaleDistanceFactor: 2 + m_AdjustGradient: 1 + m_Gradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 0} + key1: {r: 0.5686275, g: 0.78431374, b: 1, a: 0.627451} + key2: {r: 1, g: 1, b: 1, a: 1} + key3: {r: 1, g: 1, b: 1, a: 0.78431374} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 32768 + ctime2: 65535 + ctime3: 65535 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 8192 + atime2: 26214 + atime3: 42598 + atime4: 65535 + atime5: 65535 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 3 + m_NumAlphaKeys: 5 + m_CustomizeExpandLineDrawPercent: 1 + m_ExpandModeLineDrawPercent: 0.75 + m_HoverHitProperties: + m_SmoothlyCurveLine: 1 + m_LineBendRatio: 0.25 + m_AdjustWidth: 1 + m_StarWidth: 0.004 + m_EndWidth: 0.004 + m_EndWidthScaleDistanceFactor: 2 + m_AdjustGradient: 1 + m_Gradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 0} + key1: {r: 1, g: 0.78431374, b: 0.5686275, a: 0.49019608} + key2: {r: 1, g: 1, b: 1, a: 1} + key3: {r: 1, g: 1, b: 1, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 16384 + ctime2: 65535 + ctime3: 65535 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 13878 + atime2: 32768 + atime3: 65535 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 3 + m_NumAlphaKeys: 4 + m_CustomizeExpandLineDrawPercent: 1 + m_ExpandModeLineDrawPercent: 0.9 + m_RenderLineInWorldSpace: 1 + m_SwapMaterials: 0 + m_BaseLineMaterial: {fileID: 0} + m_EmptyHitMaterial: {fileID: 0} +--- !u!120 &3053154067257784704 +LineRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1323442585405899171} + m_Enabled: 0 + m_CastShadows: 0 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 0 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10306, 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_Positions: [] + m_Parameters: + serializedVersion: 3 + widthMultiplier: 1 + widthCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.012002945 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + colorGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + numCornerVertices: 8 + numCapVertices: 8 + alignment: 0 + textureMode: 0 + shadowBias: 0.5 + generateLightingData: 0 + m_UseWorldSpace: 1 + m_Loop: 0 +--- !u!210 &6278253758758756215 +SortingGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1323442585405899171} + m_Enabled: 1 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 30005 +--- !u!1 &4804964734930210078 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5745700813747042508} + - component: {fileID: 2442306273320644280} + - component: {fileID: 1722882099693224055} + - component: {fileID: 7104419533170684624} + - component: {fileID: 1255647619390271626} + - component: {fileID: 3179295312718945089} + m_Layer: 0 + m_Name: Left_NearFarInteractor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5745700813747042508 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4804964734930210078} + 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: 893315461643433812} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2442306273320644280 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4804964734930210078} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 25a07ef133a37d140a87cdf1f1c75fdf, type: 3} + m_Name: + m_EditorClassIdentifier: + m_InteractionManager: {fileID: 0} + m_InteractionLayers: + m_Bits: 1 + m_Handedness: 1 + m_AttachTransform: {fileID: 0} + m_KeepSelectedTargetValid: 1 + m_DisableVisualsWhenBlockedInGroup: 1 + m_StartingSelectedInteractable: {fileID: 0} + m_StartingTargetFilter: {fileID: 0} + m_HoverEntered: + m_PersistentCalls: + m_Calls: [] + m_HoverExited: + m_PersistentCalls: + m_Calls: [] + m_SelectEntered: + m_PersistentCalls: + m_Calls: [] + m_SelectExited: + m_PersistentCalls: + m_Calls: [] + m_StartingHoverFilters: [] + m_StartingSelectFilters: [] + m_SelectInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: Select + m_Type: 1 + m_ExpectedControlType: + m_Id: 2491b664-3d4e-4f20-a7ae-ee1861d845f2 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: Select Value + m_Type: 0 + m_ExpectedControlType: Axis + m_Id: fc42dacc-33eb-41ec-9c17-d242ac6b0c5b + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: -6131295136447488360, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_InputActionReferenceValue: {fileID: 6558622148059887818, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_ActivateInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: Activate + m_Type: 1 + m_ExpectedControlType: + m_Id: 77660b9e-6bbe-4740-b80f-1fea8d0f59e1 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: Activate Value + m_Type: 0 + m_ExpectedControlType: Axis + m_Id: 94568f52-c27a-47fc-a190-5e3b17572929 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: -5982496924579745919, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_InputActionReferenceValue: {fileID: -4289430672226363583, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_SelectActionTrigger: 1 + m_AllowHoveredActivate: 0 + m_TargetPriorityMode: 0 + m_HideControllerOnSelect: 0 + m_InputCompatibilityMode: 0 + m_PlayAudioClipOnSelectEntered: 0 + m_AudioClipForOnSelectEntered: {fileID: 0} + m_PlayAudioClipOnSelectExited: 0 + m_AudioClipForOnSelectExited: {fileID: 0} + m_PlayAudioClipOnSelectCanceled: 0 + m_AudioClipForOnSelectCanceled: {fileID: 0} + m_PlayAudioClipOnHoverEntered: 0 + m_AudioClipForOnHoverEntered: {fileID: 0} + m_PlayAudioClipOnHoverExited: 0 + m_AudioClipForOnHoverExited: {fileID: 0} + m_PlayAudioClipOnHoverCanceled: 0 + m_AudioClipForOnHoverCanceled: {fileID: 0} + m_AllowHoverAudioWhileSelecting: 1 + m_PlayHapticsOnSelectEntered: 0 + m_HapticSelectEnterIntensity: 0 + m_HapticSelectEnterDuration: 0 + m_PlayHapticsOnSelectExited: 0 + m_HapticSelectExitIntensity: 0 + m_HapticSelectExitDuration: 0 + m_PlayHapticsOnSelectCanceled: 0 + m_HapticSelectCancelIntensity: 0 + m_HapticSelectCancelDuration: 0 + m_PlayHapticsOnHoverEntered: 0 + m_HapticHoverEnterIntensity: 0 + m_HapticHoverEnterDuration: 0 + m_PlayHapticsOnHoverExited: 0 + m_HapticHoverExitIntensity: 0 + m_HapticHoverExitDuration: 0 + m_PlayHapticsOnHoverCanceled: 0 + m_HapticHoverCancelIntensity: 0 + m_HapticHoverCancelDuration: 0 + m_AllowHoverHapticsWhileSelecting: 1 + m_InteractionAttachController: {fileID: 1722882099693224055} + m_EnableNearCasting: 1 + m_NearInteractionCaster: {fileID: 7104419533170684624} + m_NearCasterSortingStrategy: 1 + m_SortNearTargetsAfterTargetFilter: 0 + m_EnableFarCasting: 1 + m_FarInteractionCaster: {fileID: 1255647619390271626} + m_FarAttachMode: 1 + m_EnableUIInteraction: 1 + m_BlockUIOnInteractableSelection: 1 + m_UIHoverEntered: + m_PersistentCalls: + m_Calls: [] + m_UIHoverExited: + m_PersistentCalls: + m_Calls: [] + m_UIPressInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: UI Press + m_Type: 1 + m_ExpectedControlType: + m_Id: ded1ccb2-ff18-46c7-ade9-b80985fe2825 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: UI Press Value + m_Type: 0 + m_ExpectedControlType: Axis + m_Id: d762660e-30e0-4a4d-8e2a-e6b553e03f11 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: -6395602842196007441, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_InputActionReferenceValue: {fileID: 71106601250685021, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_UIScrollInput: + m_InputSourceMode: 2 + m_InputAction: + m_Name: UI Scroll + m_Type: 0 + m_ExpectedControlType: Vector2 + m_Id: ef5cc4a5-b968-432c-9ae7-45e494178db0 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReference: {fileID: 2464016903823916871, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualValue: {x: 0, y: 0} +--- !u!114 &1722882099693224055 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4804964734930210078} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 792f6c7eaa1a4b82abf8351559ac97eb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_TransformToFollow: {fileID: 5745700813747042508} + m_MotionStabilizationMode: 1 + m_PositionStabilization: 0.25 + m_AngleStabilization: 20 + m_SmoothOffset: 0 + m_SmoothingSpeed: 10 + m_UseDistanceBasedVelocityScaling: 1 + m_UseMomentum: 1 + m_MomentumDecayScale: 1.25 + m_ZVelocityRampThreshold: 0.3 + m_PullVelocityBias: 1 + m_PushVelocityBias: 1.25 + m_MinAdditionalVelocityScalar: 0.05 + m_MaxAdditionalVelocityScalar: 1.5 +--- !u!114 &7104419533170684624 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4804964734930210078} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 48139a683d3b4ac3a37cd5d24f71acf1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_CastOrigin: {fileID: 5745700813747042508} + m_EnableStabilization: 0 + m_PositionStabilization: 0.25 + m_AngleStabilization: 20 + m_AimTargetObject: {fileID: 0} + m_PhysicsLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_PhysicsTriggerInteraction: 1 + m_CastRadius: 0.1 +--- !u!114 &1255647619390271626 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4804964734930210078} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ef20135915079454985abea5a2ec8967, type: 3} + m_Name: + m_EditorClassIdentifier: + m_CastOrigin: {fileID: 5745700813747042508} + m_EnableStabilization: 1 + m_PositionStabilization: 0.25 + m_AngleStabilization: 20 + m_AimTargetObject: {fileID: 2442306273320644280} + m_RaycastMask: + serializedVersion: 2 + m_Bits: 2147483681 + m_RaycastTriggerInteraction: 1 + m_RaycastSnapVolumeInteraction: 1 + m_TargetNumCurveSegments: 1 + m_HitDetectionType: 2 + m_CastDistance: 10 + m_SphereCastRadius: 0.1 + m_ConeCastAngle: 6 +--- !u!114 &3179295312718945089 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4804964734930210078} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dd0b9921bce4eeb49bd05815b1135ac2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_InteractorSourceObject: {fileID: 2442306273320644280} + m_HapticImpulsePlayer: {fileID: 0} + m_PlaySelectEntered: 1 + m_SelectEnteredData: + m_Amplitude: 0.5 + m_Duration: 0.1 + m_Frequency: 0 + m_PlaySelectExited: 0 + m_SelectExitedData: + m_Amplitude: 0.5 + m_Duration: 0.1 + m_Frequency: 0 + m_PlaySelectCanceled: 0 + m_SelectCanceledData: + m_Amplitude: 0.5 + m_Duration: 0.1 + m_Frequency: 0 + m_PlayHoverEntered: 1 + m_HoverEnteredData: + m_Amplitude: 0.25 + m_Duration: 0.1 + m_Frequency: 0 + m_PlayHoverExited: 0 + m_HoverExitedData: + m_Amplitude: 0.25 + m_Duration: 0.1 + m_Frequency: 0 + m_PlayHoverCanceled: 0 + m_HoverCanceledData: + m_Amplitude: 0.25 + m_Duration: 0.1 + m_Frequency: 0 + m_AllowHoverHapticsWhileSelecting: 0 diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Interactors/Left_NearFarInteractor.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Interactors/Left_NearFarInteractor.prefab.meta new file mode 100644 index 00000000..aa0ca7c8 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Interactors/Left_NearFarInteractor.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 3df3e1220f2164f448701a6de8084f92 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Interactors/Poke Interactor.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Interactors/Poke Interactor.prefab new file mode 100644 index 00000000..b1233a0b --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Interactors/Poke Interactor.prefab @@ -0,0 +1,264 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1096232077998711156 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8259524632637961923} + m_Layer: 0 + m_Name: Poke Point + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8259524632637961923 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1096232077998711156} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0.0075} + m_LocalScale: {x: 0.01, y: 0.01, z: 0.01} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3381213159206026464} + m_Father: {fileID: 780270278251679399} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &4125421792874400280 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 780270278251679399} + - component: {fileID: 2417358720014700305} + - component: {fileID: 1838083765625025125} + m_Layer: 0 + m_Name: Poke Interactor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &780270278251679399 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4125421792874400280} + 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: 8259524632637961923} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2417358720014700305 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4125421792874400280} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0924bcaa9eb50df458a783ae0e2b59f5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_InteractionManager: {fileID: 0} + m_InteractionLayers: + m_Bits: 1 + m_Handedness: 0 + m_AttachTransform: {fileID: 8259524632637961923} + m_KeepSelectedTargetValid: 1 + m_DisableVisualsWhenBlockedInGroup: 1 + m_StartingSelectedInteractable: {fileID: 0} + m_StartingTargetFilter: {fileID: 0} + m_HoverEntered: + m_PersistentCalls: + m_Calls: [] + m_HoverExited: + m_PersistentCalls: + m_Calls: [] + m_SelectEntered: + m_PersistentCalls: + m_Calls: [] + m_SelectExited: + m_PersistentCalls: + m_Calls: [] + m_StartingHoverFilters: [] + m_StartingSelectFilters: [] + m_PokeDepth: 0.1 + m_PokeWidth: 0.0075 + m_PokeSelectWidth: 0.015 + m_PokeHoverRadius: 0.015 + m_PokeInteractionOffset: 0.005 + m_PhysicsLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_PhysicsTriggerInteraction: 1 + m_RequirePokeFilter: 1 + m_EnableUIInteraction: 1 + m_DebugVisualizationsEnabled: 0 + m_UIHoverEntered: + m_PersistentCalls: + m_Calls: [] + m_UIHoverExited: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &1838083765625025125 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4125421792874400280} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dd0b9921bce4eeb49bd05815b1135ac2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_InteractorSourceObject: {fileID: 2417358720014700305} + m_HapticImpulsePlayer: {fileID: 0} + m_PlaySelectEntered: 1 + m_SelectEnteredData: + m_Amplitude: 0.5 + m_Duration: 0.1 + m_Frequency: 0 + m_PlaySelectExited: 0 + m_SelectExitedData: + m_Amplitude: 0.5 + m_Duration: 0.1 + m_Frequency: 0 + m_PlaySelectCanceled: 0 + m_SelectCanceledData: + m_Amplitude: 0.5 + m_Duration: 0.1 + m_Frequency: 0 + m_PlayHoverEntered: 1 + m_HoverEnteredData: + m_Amplitude: 0.25 + m_Duration: 0.1 + m_Frequency: 0 + m_PlayHoverExited: 0 + m_HoverExitedData: + m_Amplitude: 0.25 + m_Duration: 0.1 + m_Frequency: 0 + m_PlayHoverCanceled: 0 + m_HoverCanceledData: + m_Amplitude: 0.25 + m_Duration: 0.1 + m_Frequency: 0 + m_AllowHoverHapticsWhileSelecting: 0 +--- !u!1001 &2983285148413631243 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 8259524632637961923} + m_Modifications: + - target: {fileID: -8679921383154817045, guid: e053b8fbc416ba349b4a58a26410bba2, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: e053b8fbc416ba349b4a58a26410bba2, type: 3} + propertyPath: m_LocalScale.x + value: 50 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: e053b8fbc416ba349b4a58a26410bba2, type: 3} + propertyPath: m_LocalScale.y + value: 50 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: e053b8fbc416ba349b4a58a26410bba2, type: 3} + propertyPath: m_LocalScale.z + value: 50 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: e053b8fbc416ba349b4a58a26410bba2, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: e053b8fbc416ba349b4a58a26410bba2, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: e053b8fbc416ba349b4a58a26410bba2, type: 3} + propertyPath: m_LocalPosition.z + value: -0.72 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: e053b8fbc416ba349b4a58a26410bba2, type: 3} + propertyPath: m_LocalRotation.w + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: e053b8fbc416ba349b4a58a26410bba2, type: 3} + propertyPath: m_LocalRotation.x + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: e053b8fbc416ba349b4a58a26410bba2, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: e053b8fbc416ba349b4a58a26410bba2, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: e053b8fbc416ba349b4a58a26410bba2, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 90 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: e053b8fbc416ba349b4a58a26410bba2, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: e053b8fbc416ba349b4a58a26410bba2, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -3887185075125053422, guid: e053b8fbc416ba349b4a58a26410bba2, type: 3} + propertyPath: m_DirtyAABB + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -3887185075125053422, guid: e053b8fbc416ba349b4a58a26410bba2, type: 3} + propertyPath: m_AABB.m_Center.y + value: 0.009045093 + objectReference: {fileID: 0} + - target: {fileID: -3887185075125053422, guid: e053b8fbc416ba349b4a58a26410bba2, type: 3} + propertyPath: m_AABB.m_Extent.x + value: 0.0077457884 + objectReference: {fileID: 0} + - target: {fileID: -3887185075125053422, guid: e053b8fbc416ba349b4a58a26410bba2, type: 3} + propertyPath: m_AABB.m_Extent.y + value: 0.016694028 + objectReference: {fileID: 0} + - target: {fileID: -3887185075125053422, guid: e053b8fbc416ba349b4a58a26410bba2, type: 3} + propertyPath: m_AABB.m_Extent.z + value: 0.0077457884 + objectReference: {fileID: 0} + - target: {fileID: -3887185075125053422, guid: e053b8fbc416ba349b4a58a26410bba2, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: f5ccd52dc494e054fbe7d7161dcabe25, type: 2} + - target: {fileID: 919132149155446097, guid: e053b8fbc416ba349b4a58a26410bba2, type: 3} + propertyPath: m_Name + value: Pinch_Pointer_LOD0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: e053b8fbc416ba349b4a58a26410bba2, type: 3} +--- !u!4 &3381213159206026464 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: e053b8fbc416ba349b4a58a26410bba2, type: 3} + m_PrefabInstance: {fileID: 2983285148413631243} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Interactors/Poke Interactor.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Interactors/Poke Interactor.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Interactors/Poke Interactor.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Interactors/Poke Interactor.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Interactors/Ray Interactor.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Interactors/Ray Interactor.prefab similarity index 57% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Interactors/Ray Interactor.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Interactors/Ray Interactor.prefab index 4dc0669d..a64d6ebd 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Interactors/Ray Interactor.prefab +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Interactors/Ray Interactor.prefab @@ -13,6 +13,7 @@ GameObject: - component: {fileID: 7693184380767619946} - component: {fileID: 4924506573850889901} - component: {fileID: 759886463073337534} + - component: {fileID: 5800936643595229357} m_Layer: 0 m_Name: Ray Interactor m_TagString: Untagged @@ -48,11 +49,9 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_InteractionManager: {fileID: 0} - m_InteractionLayerMask: - serializedVersion: 2 - m_Bits: 55 m_InteractionLayers: m_Bits: 1 + m_Handedness: 0 m_AttachTransform: {fileID: 0} m_KeepSelectedTargetValid: 1 m_DisableVisualsWhenBlockedInGroup: 1 @@ -72,22 +71,69 @@ MonoBehaviour: m_Calls: [] m_StartingHoverFilters: [] m_StartingSelectFilters: [] - m_OnHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectEntered: - m_PersistentCalls: - m_Calls: [] - m_OnSelectExited: - m_PersistentCalls: - m_Calls: [] + m_SelectInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: Select + m_Type: 1 + m_ExpectedControlType: + m_Id: 429ea6c2-900b-4600-9dec-ef981c442e74 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: Select Value + m_Type: 0 + m_ExpectedControlType: Axis + m_Id: a2b28d4d-fc21-46c4-a146-41ab6eafdc6e + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: 0} + m_InputActionReferenceValue: {fileID: 0} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_ActivateInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: Activate + m_Type: 1 + m_ExpectedControlType: + m_Id: 9463bd95-e6a6-4e29-a93b-3f0fef3a8139 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: Activate Value + m_Type: 0 + m_ExpectedControlType: Axis + m_Id: 2a74813e-aeb0-4476-9b57-ae667c5da716 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: 0} + m_InputActionReferenceValue: {fileID: 0} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 m_SelectActionTrigger: 1 - m_HideControllerOnSelect: 0 m_AllowHoveredActivate: 0 m_TargetPriorityMode: 0 + m_HideControllerOnSelect: 0 + m_InputCompatibilityMode: 0 m_PlayAudioClipOnSelectEntered: 0 m_AudioClipForOnSelectEntered: {fileID: 0} m_PlayAudioClipOnSelectExited: 0 @@ -101,21 +147,21 @@ MonoBehaviour: m_PlayAudioClipOnHoverCanceled: 0 m_AudioClipForOnHoverCanceled: {fileID: 0} m_AllowHoverAudioWhileSelecting: 0 - m_PlayHapticsOnSelectEntered: 1 - m_HapticSelectEnterIntensity: 0.5 - m_HapticSelectEnterDuration: 0.1 - m_PlayHapticsOnSelectExited: 1 - m_HapticSelectExitIntensity: 0.5 - m_HapticSelectExitDuration: 0.1 + m_PlayHapticsOnSelectEntered: 0 + m_HapticSelectEnterIntensity: 0 + m_HapticSelectEnterDuration: 0 + m_PlayHapticsOnSelectExited: 0 + m_HapticSelectExitIntensity: 0 + m_HapticSelectExitDuration: 0 m_PlayHapticsOnSelectCanceled: 0 m_HapticSelectCancelIntensity: 0 m_HapticSelectCancelDuration: 0 - m_PlayHapticsOnHoverEntered: 1 - m_HapticHoverEnterIntensity: 0.25 - m_HapticHoverEnterDuration: 0.1 - m_PlayHapticsOnHoverExited: 1 - m_HapticHoverExitIntensity: 0.25 - m_HapticHoverExitDuration: 0.1 + m_PlayHapticsOnHoverEntered: 0 + m_HapticHoverEnterIntensity: 0 + m_HapticHoverEnterDuration: 0 + m_PlayHapticsOnHoverExited: 0 + m_HapticHoverExitIntensity: 0 + m_HapticHoverExitDuration: 0 m_PlayHapticsOnHoverCanceled: 0 m_HapticHoverCancelIntensity: 0 m_HapticHoverCancelDuration: 0 @@ -149,12 +195,12 @@ MonoBehaviour: m_TimeToAutoDeselect: 1 m_EnableUIInteraction: 1 m_BlockUIOnInteractableSelection: 1 - m_AllowAnchorControl: 1 + m_ManipulateAttachTransform: 1 m_UseForceGrab: 0 m_RotateSpeed: 180 m_TranslateSpeed: 1 - m_AnchorRotateReferenceFrame: {fileID: 0} - m_AnchorRotationMode: 0 + m_RotateReferenceFrame: {fileID: 0} + m_RotateMode: 0 m_UIHoverEntered: m_PersistentCalls: m_Calls: [] @@ -165,6 +211,148 @@ MonoBehaviour: m_OccludeARHitsWith3DObjects: 0 m_OccludeARHitsWith2DObjects: 0 m_ScaleMode: 1 + m_UIPressInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: UI Press + m_Type: 1 + m_ExpectedControlType: + m_Id: 114095d0-3f3f-4498-8173-6c1ef51c395f + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: UI Press Value + m_Type: 0 + m_ExpectedControlType: Axis + m_Id: 28edaf06-248c-4566-9e77-e0a8306f5b23 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: 0} + m_InputActionReferenceValue: {fileID: 0} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_UIScrollInput: + m_InputSourceMode: 2 + m_InputAction: + m_Name: UI Scroll + m_Type: 0 + m_ExpectedControlType: Vector2 + m_Id: a97b7b43-9f7a-4629-8bf8-cd9e4366135e + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReference: {fileID: 0} + m_ObjectReferenceObject: {fileID: 0} + m_ManualValue: {x: 0, y: 0} + m_TranslateManipulationInput: + m_InputSourceMode: 2 + m_InputAction: + m_Name: Translate Manipulation + m_Type: 0 + m_ExpectedControlType: Vector2 + m_Id: 4ebd55dc-790f-4902-a152-a2ad2f58b954 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReference: {fileID: 0} + m_ObjectReferenceObject: {fileID: 0} + m_ManualValue: {x: 0, y: 0} + m_RotateManipulationInput: + m_InputSourceMode: 2 + m_InputAction: + m_Name: Rotate Manipulation + m_Type: 0 + m_ExpectedControlType: Vector2 + m_Id: 57b99265-24c1-4c01-9723-1e2d868d39a3 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReference: {fileID: 0} + m_ObjectReferenceObject: {fileID: 0} + m_ManualValue: {x: 0, y: 0} + m_DirectionalManipulationInput: + m_InputSourceMode: 2 + m_InputAction: + m_Name: Directional Manipulation + m_Type: 0 + m_ExpectedControlType: Vector2 + m_Id: 8745cceb-738c-4169-a81b-c9611ff835c1 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReference: {fileID: 0} + m_ObjectReferenceObject: {fileID: 0} + m_ManualValue: {x: 0, y: 0} + m_ScaleToggleInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: Scale Toggle + m_Type: 1 + m_ExpectedControlType: + m_Id: 3f354885-6c35-4d4c-8937-f39f9281823f + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: Scale Toggle Value + m_Type: 0 + m_ExpectedControlType: Axis + m_Id: 7cb37a30-9cf3-4543-a117-80b77e8a2158 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: 0} + m_InputActionReferenceValue: {fileID: 0} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_ScaleOverTimeInput: + m_InputSourceMode: 2 + m_InputAction: + m_Name: Scale Over Time + m_Type: 0 + m_ExpectedControlType: Vector2 + m_Id: bb96d9ab-3ef4-47b7-85c5-67f09482637d + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReference: {fileID: 0} + m_ObjectReferenceObject: {fileID: 0} + m_ManualValue: {x: 0, y: 0} + m_ScaleDistanceDeltaInput: + m_InputSourceMode: 0 + m_InputAction: + m_Name: Scale Distance Delta + m_Type: 0 + m_ExpectedControlType: Axis + m_Id: 16abd2a2-ba80-4824-a33c-cd5a47c3cfa5 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReference: {fileID: 0} + m_ObjectReferenceObject: {fileID: 0} + m_ManualValue: 0 --- !u!120 &7693184380767619946 LineRenderer: m_ObjectHideFlags: 0 @@ -427,3 +615,48 @@ SortingGroup: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 30005 +--- !u!114 &5800936643595229357 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1787346994484839025} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dd0b9921bce4eeb49bd05815b1135ac2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_InteractorSourceObject: {fileID: 7462879561657043759} + m_HapticImpulsePlayer: {fileID: 0} + m_PlaySelectEntered: 1 + m_SelectEnteredData: + m_Amplitude: 0.5 + m_Duration: 0.1 + m_Frequency: 0 + m_PlaySelectExited: 0 + m_SelectExitedData: + m_Amplitude: 0.5 + m_Duration: 0.1 + m_Frequency: 0 + m_PlaySelectCanceled: 0 + m_SelectCanceledData: + m_Amplitude: 0.5 + m_Duration: 0.1 + m_Frequency: 0 + m_PlayHoverEntered: 1 + m_HoverEnteredData: + m_Amplitude: 0.25 + m_Duration: 0.1 + m_Frequency: 0 + m_PlayHoverExited: 0 + m_HoverExitedData: + m_Amplitude: 0.25 + m_Duration: 0.1 + m_Frequency: 0 + m_PlayHoverCanceled: 0 + m_HoverCanceledData: + m_Amplitude: 0.25 + m_Duration: 0.1 + m_Frequency: 0 + m_AllowHoverHapticsWhileSelecting: 0 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Interactors/Ray Interactor.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Interactors/Ray Interactor.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Interactors/Ray Interactor.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Interactors/Ray Interactor.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Interactors/Right_NearFarInteractor.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Interactors/Right_NearFarInteractor.prefab new file mode 100644 index 00000000..f603a3d4 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Interactors/Right_NearFarInteractor.prefab @@ -0,0 +1,91 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &7158566501882083953 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 2442306273320644280, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} + propertyPath: m_Handedness + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 2442306273320644280, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} + propertyPath: m_UIScrollInput.m_InputActionReference + value: + objectReference: {fileID: -6756787485274679044, guid: c348712bda248c246b8c49b3db54643f, type: 3} + - target: {fileID: 2442306273320644280, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} + propertyPath: m_SelectInput.m_InputActionReferenceValue + value: + objectReference: {fileID: -1758520528963094988, guid: c348712bda248c246b8c49b3db54643f, type: 3} + - target: {fileID: 2442306273320644280, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} + propertyPath: m_UIPressInput.m_InputActionReferenceValue + value: + objectReference: {fileID: -5908353012961274365, guid: c348712bda248c246b8c49b3db54643f, type: 3} + - target: {fileID: 2442306273320644280, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} + propertyPath: m_ActivateInput.m_InputActionReferenceValue + value: + objectReference: {fileID: 7904272356298805229, guid: c348712bda248c246b8c49b3db54643f, type: 3} + - target: {fileID: 2442306273320644280, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} + propertyPath: m_SelectInput.m_InputActionReferencePerformed + value: + objectReference: {fileID: 187161793506945269, guid: c348712bda248c246b8c49b3db54643f, type: 3} + - target: {fileID: 2442306273320644280, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} + propertyPath: m_UIPressInput.m_InputActionReferencePerformed + value: + objectReference: {fileID: 3279264004350380116, guid: c348712bda248c246b8c49b3db54643f, type: 3} + - target: {fileID: 2442306273320644280, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} + propertyPath: m_ActivateInput.m_InputActionReferencePerformed + value: + objectReference: {fileID: 83097790271614945, guid: c348712bda248c246b8c49b3db54643f, type: 3} + - target: {fileID: 4804964734930210078, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} + propertyPath: m_Name + value: Right_NearFarInteractor + objectReference: {fileID: 0} + - target: {fileID: 5745700813747042508, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5745700813747042508, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5745700813747042508, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5745700813747042508, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5745700813747042508, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5745700813747042508, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5745700813747042508, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5745700813747042508, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5745700813747042508, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5745700813747042508, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5745700813747042508, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Interactors/Right_NearFarInteractor.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Interactors/Right_NearFarInteractor.prefab.meta new file mode 100644 index 00000000..8a869143 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Interactors/Right_NearFarInteractor.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b200f6587d118224eba8467281481800 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Interactors/Teleport Interactor.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Interactors/Teleport Interactor.prefab similarity index 56% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Interactors/Teleport Interactor.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Interactors/Teleport Interactor.prefab index 37d9bf8f..ed022273 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Interactors/Teleport Interactor.prefab +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Interactors/Teleport Interactor.prefab @@ -13,6 +13,7 @@ GameObject: - component: {fileID: 2761784063978902504} - component: {fileID: 2761784063978902505} - component: {fileID: 7708679388415899527} + - component: {fileID: 3616344554909481683} m_Layer: 0 m_Name: Teleport Interactor m_TagString: Untagged @@ -48,11 +49,9 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_InteractionManager: {fileID: 0} - m_InteractionLayerMask: - serializedVersion: 2 - m_Bits: 2147483648 m_InteractionLayers: m_Bits: 2147483648 + m_Handedness: 0 m_AttachTransform: {fileID: 0} m_KeepSelectedTargetValid: 0 m_DisableVisualsWhenBlockedInGroup: 1 @@ -72,22 +71,69 @@ MonoBehaviour: m_Calls: [] m_StartingHoverFilters: [] m_StartingSelectFilters: [] - m_OnHoverEntered: - m_PersistentCalls: - m_Calls: [] - m_OnHoverExited: - m_PersistentCalls: - m_Calls: [] - m_OnSelectEntered: - m_PersistentCalls: - m_Calls: [] - m_OnSelectExited: - m_PersistentCalls: - m_Calls: [] + m_SelectInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: Select + m_Type: 1 + m_ExpectedControlType: + m_Id: 36843f28-4fd5-4729-b5a6-afe92ef11597 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: Select Value + m_Type: 0 + m_ExpectedControlType: Axis + m_Id: 1a51c331-470d-4462-b8e1-2522a24bd40c + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: 0} + m_InputActionReferenceValue: {fileID: 0} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_ActivateInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: Activate + m_Type: 1 + m_ExpectedControlType: + m_Id: 0ace7244-e61f-4e60-8d0b-2ef8c3ae51af + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: Activate Value + m_Type: 0 + m_ExpectedControlType: Axis + m_Id: bdf06a24-21b3-4f27-a8a3-72086e6c7f00 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: 0} + m_InputActionReferenceValue: {fileID: 0} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 m_SelectActionTrigger: 0 - m_HideControllerOnSelect: 0 m_AllowHoveredActivate: 0 m_TargetPriorityMode: 0 + m_HideControllerOnSelect: 0 + m_InputCompatibilityMode: 0 m_PlayAudioClipOnSelectEntered: 0 m_AudioClipForOnSelectEntered: {fileID: 0} m_PlayAudioClipOnSelectExited: 0 @@ -100,26 +146,26 @@ MonoBehaviour: m_AudioClipForOnHoverExited: {fileID: 0} m_PlayAudioClipOnHoverCanceled: 0 m_AudioClipForOnHoverCanceled: {fileID: 0} - m_AllowHoverAudioWhileSelecting: 1 - m_PlayHapticsOnSelectEntered: 1 - m_HapticSelectEnterIntensity: 0.5 - m_HapticSelectEnterDuration: 0.1 - m_PlayHapticsOnSelectExited: 1 - m_HapticSelectExitIntensity: 0.5 - m_HapticSelectExitDuration: 0.1 + m_AllowHoverAudioWhileSelecting: 0 + m_PlayHapticsOnSelectEntered: 0 + m_HapticSelectEnterIntensity: 0 + m_HapticSelectEnterDuration: 0 + m_PlayHapticsOnSelectExited: 0 + m_HapticSelectExitIntensity: 0 + m_HapticSelectExitDuration: 0 m_PlayHapticsOnSelectCanceled: 0 m_HapticSelectCancelIntensity: 0 m_HapticSelectCancelDuration: 0 - m_PlayHapticsOnHoverEntered: 1 - m_HapticHoverEnterIntensity: 0.25 - m_HapticHoverEnterDuration: 0.1 - m_PlayHapticsOnHoverExited: 1 - m_HapticHoverExitIntensity: 0.25 - m_HapticHoverExitDuration: 0.1 + m_PlayHapticsOnHoverEntered: 0 + m_HapticHoverEnterIntensity: 0 + m_HapticHoverEnterDuration: 0 + m_PlayHapticsOnHoverExited: 0 + m_HapticHoverExitIntensity: 0 + m_HapticHoverExitDuration: 0 m_PlayHapticsOnHoverCanceled: 0 m_HapticHoverCancelIntensity: 0 m_HapticHoverCancelDuration: 0 - m_AllowHoverHapticsWhileSelecting: 1 + m_AllowHoverHapticsWhileSelecting: 0 m_LineType: 1 m_BlendVisualLinePoints: 1 m_MaxRaycastDistance: 30 @@ -142,19 +188,19 @@ MonoBehaviour: m_Bits: 2147483681 m_RaycastTriggerInteraction: 1 m_RaycastSnapVolumeInteraction: 1 - m_HitClosestOnly: 0 + m_HitClosestOnly: 1 m_HoverToSelect: 0 m_HoverTimeToSelect: 0.5 m_AutoDeselect: 0 m_TimeToAutoDeselect: 1 m_EnableUIInteraction: 0 m_BlockUIOnInteractableSelection: 1 - m_AllowAnchorControl: 1 + m_ManipulateAttachTransform: 1 m_UseForceGrab: 0 m_RotateSpeed: 180 m_TranslateSpeed: 0 - m_AnchorRotateReferenceFrame: {fileID: 0} - m_AnchorRotationMode: 1 + m_RotateReferenceFrame: {fileID: 0} + m_RotateMode: 1 m_UIHoverEntered: m_PersistentCalls: m_Calls: [] @@ -165,6 +211,148 @@ MonoBehaviour: m_OccludeARHitsWith3DObjects: 0 m_OccludeARHitsWith2DObjects: 0 m_ScaleMode: 0 + m_UIPressInput: + m_InputSourceMode: 0 + m_InputActionPerformed: + m_Name: UI Press + m_Type: 1 + m_ExpectedControlType: + m_Id: 54867c8e-3650-4605-a53c-ee8ffb351dcf + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: UI Press Value + m_Type: 0 + m_ExpectedControlType: Axis + m_Id: 257d8673-0295-4ff5-b278-e63d20cd918b + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: 0} + m_InputActionReferenceValue: {fileID: 0} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_UIScrollInput: + m_InputSourceMode: 0 + m_InputAction: + m_Name: UI Scroll + m_Type: 0 + m_ExpectedControlType: Vector2 + m_Id: 8c6b1aac-a242-4bf4-a5b3-bfad6e83b638 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReference: {fileID: 0} + m_ObjectReferenceObject: {fileID: 0} + m_ManualValue: {x: 0, y: 0} + m_TranslateManipulationInput: + m_InputSourceMode: 0 + m_InputAction: + m_Name: Translate Manipulation + m_Type: 0 + m_ExpectedControlType: Vector2 + m_Id: 0f9fd0ee-650d-41a6-ab30-2a036c425c21 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReference: {fileID: 0} + m_ObjectReferenceObject: {fileID: 0} + m_ManualValue: {x: 0, y: 0} + m_RotateManipulationInput: + m_InputSourceMode: 2 + m_InputAction: + m_Name: Rotate Manipulation + m_Type: 0 + m_ExpectedControlType: Vector2 + m_Id: cadca2d2-f642-4efc-a222-c1827be3e896 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReference: {fileID: 0} + m_ObjectReferenceObject: {fileID: 0} + m_ManualValue: {x: 0, y: 0} + m_DirectionalManipulationInput: + m_InputSourceMode: 2 + m_InputAction: + m_Name: Directional Manipulation + m_Type: 0 + m_ExpectedControlType: Vector2 + m_Id: 472cbca3-7add-47a9-a5fc-73d3d10107aa + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReference: {fileID: 0} + m_ObjectReferenceObject: {fileID: 0} + m_ManualValue: {x: 0, y: 0} + m_ScaleToggleInput: + m_InputSourceMode: 0 + m_InputActionPerformed: + m_Name: Scale Toggle + m_Type: 1 + m_ExpectedControlType: + m_Id: 692a9304-a2fd-4dbd-9e2f-2fb4b6154f1c + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: Scale Toggle Value + m_Type: 0 + m_ExpectedControlType: Axis + m_Id: d0cf082b-f2d7-4100-b069-651cf2820425 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: 0} + m_InputActionReferenceValue: {fileID: 0} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_ScaleOverTimeInput: + m_InputSourceMode: 0 + m_InputAction: + m_Name: Scale Over Time + m_Type: 0 + m_ExpectedControlType: Vector2 + m_Id: 6f835f0d-f1c2-461c-b8bc-edc587e89149 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReference: {fileID: 0} + m_ObjectReferenceObject: {fileID: 0} + m_ManualValue: {x: 0, y: 0} + m_ScaleDistanceDeltaInput: + m_InputSourceMode: 0 + m_InputAction: + m_Name: Scale Distance Delta + m_Type: 0 + m_ExpectedControlType: Axis + m_Id: 9140e1d5-f197-46d4-88c2-a02441edeac5 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReference: {fileID: 0} + m_ObjectReferenceObject: {fileID: 0} + m_ManualValue: 0 --- !u!120 &2761784063978902504 LineRenderer: m_ObjectHideFlags: 0 @@ -318,8 +506,8 @@ MonoBehaviour: m_SetLineColorGradient: 1 m_ValidColorGradient: serializedVersion: 2 - key0: {r: 0.1999999, g: 1, b: 0, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} + key0: {r: 0.1254902, g: 0.5882353, b: 0.9529412, a: 0.5882353} + key1: {r: 0.1254902, g: 0.5882353, b: 0.9529412, a: 0.5882353} key2: {r: 0, g: 0, b: 0, a: 0} key3: {r: 0, g: 0, b: 0, a: 0} key4: {r: 0, g: 0, b: 0, a: 0} @@ -347,8 +535,8 @@ MonoBehaviour: m_NumAlphaKeys: 2 m_InvalidColorGradient: serializedVersion: 2 - key0: {r: 1, g: 0, b: 0, a: 1} - key1: {r: 1, g: 0, b: 0, a: 1} + key0: {r: 1, g: 0, b: 0, a: 0.5882353} + key1: {r: 1, g: 0, b: 0, a: 0.5882353} key2: {r: 0, g: 0, b: 0, a: 0} key3: {r: 0, g: 0, b: 0, a: 0} key4: {r: 0, g: 0, b: 0, a: 0} @@ -427,3 +615,48 @@ SortingGroup: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 30005 +--- !u!114 &3616344554909481683 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2761784063978902507} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dd0b9921bce4eeb49bd05815b1135ac2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_InteractorSourceObject: {fileID: 2761784063978902503} + m_HapticImpulsePlayer: {fileID: 0} + m_PlaySelectEntered: 1 + m_SelectEnteredData: + m_Amplitude: 0.5 + m_Duration: 0.1 + m_Frequency: 0 + m_PlaySelectExited: 0 + m_SelectExitedData: + m_Amplitude: 0.5 + m_Duration: 0.1 + m_Frequency: 0 + m_PlaySelectCanceled: 0 + m_SelectCanceledData: + m_Amplitude: 0.5 + m_Duration: 0.1 + m_Frequency: 0 + m_PlayHoverEntered: 1 + m_HoverEnteredData: + m_Amplitude: 0.25 + m_Duration: 0.1 + m_Frequency: 0 + m_PlayHoverExited: 0 + m_HoverExitedData: + m_Amplitude: 0.25 + m_Duration: 0.1 + m_Frequency: 0 + m_PlayHoverCanceled: 0 + m_HoverCanceledData: + m_Amplitude: 0.25 + m_Duration: 0.1 + m_Frequency: 0 + m_AllowHoverHapticsWhileSelecting: 1 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Interactors/Teleport Interactor.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Interactors/Teleport Interactor.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Interactors/Teleport Interactor.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Interactors/Teleport Interactor.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Teleport.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Teleport.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Teleport.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Teleport.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Teleport/Blocking Teleport Reticle.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Teleport/Blocking Teleport Reticle.prefab similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Teleport/Blocking Teleport Reticle.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Teleport/Blocking Teleport Reticle.prefab diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Teleport/Blocking Teleport Reticle.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Teleport/Blocking Teleport Reticle.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Teleport/Blocking Teleport Reticle.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Teleport/Blocking Teleport Reticle.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Teleport/Climb Teleport Arrow.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Teleport/Climb Teleport Arrow.prefab new file mode 100644 index 00000000..31575b2d --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Teleport/Climb Teleport Arrow.prefab @@ -0,0 +1,342 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1012474302365061065 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8934229655344817645} + - component: {fileID: 5962201224213111797} + - component: {fileID: 4425444026892826216} + m_Layer: 5 + m_Name: LegibilityMask + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8934229655344817645 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1012474302365061065} + 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: 675172513429724377} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: -20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5962201224213111797 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1012474302365061065} + m_CullTransparentMesh: 1 +--- !u!114 &4425444026892826216 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1012474302365061065} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 2100000, guid: 6f3d696f7c3365846b6dc2402afb3d3e, type: 2} + m_Color: {r: 0, g: 0, b: 0, a: 0.7490196} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: a85d80c1edb5d2f458d42e79f78055b9, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &2381863983095932316 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 675172513429724377} + - component: {fileID: 3525437950293334695} + - component: {fileID: 6685223427317928156} + - component: {fileID: 6603494849455392037} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &675172513429724377 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2381863983095932316} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.01, y: 0.01, z: 0.01} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8934229655344817645} + - {fileID: 625181587466419018} + m_Father: {fileID: 4241918020790837401} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 50, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!223 &3525437950293334695 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2381863983095932316} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 2 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!114 &6685223427317928156 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2381863983095932316} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 1 +--- !u!114 &6603494849455392037 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2381863983095932316} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!1 &4664704153202512397 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 625181587466419018} + - component: {fileID: 5426692648920724456} + - component: {fileID: 4346818701845822207} + m_Layer: 5 + m_Name: ArrowImage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &625181587466419018 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4664704153202512397} + 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: [] + m_Father: {fileID: 675172513429724377} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -20, y: -20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5426692648920724456 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4664704153202512397} + m_CullTransparentMesh: 1 +--- !u!114 &4346818701845822207 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4664704153202512397} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 2100000, guid: 6f3d696f7c3365846b6dc2402afb3d3e, type: 2} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: f8ecc54972abacc46a93f671b0602139, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &5212361887338514247 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2012181715459153768} + - component: {fileID: 3190360804220159386} + m_Layer: 0 + m_Name: Climb Teleport Arrow + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2012181715459153768 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5212361887338514247} + 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: 4241918020790837401} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!95 &3190360804220159386 +Animator: + serializedVersion: 5 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5212361887338514247} + m_Enabled: 1 + m_Avatar: {fileID: 0} + m_Controller: {fileID: 9100000, guid: db6239f7ccb29ca4aac63126c6a35e7d, type: 2} + m_CullingMode: 0 + 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 &6551041024203653996 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4241918020790837401} + m_Layer: 0 + m_Name: Arrow + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4241918020790837401 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6551041024203653996} + 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: 675172513429724377} + m_Father: {fileID: 2012181715459153768} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Teleport/Climb Teleport Arrow.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Teleport/Climb Teleport Arrow.prefab.meta new file mode 100644 index 00000000..a83e5fd0 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Teleport/Climb Teleport Arrow.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ae1968658b9687b47976fe86c062168f +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Teleport/Directional Teleport Reticle.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Teleport/Directional Teleport Reticle.prefab new file mode 100644 index 00000000..cf1a77b4 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Teleport/Directional Teleport Reticle.prefab @@ -0,0 +1,184 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &267897047611828928 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4559510824621843958} + - component: {fileID: 3945107309013936975} + - component: {fileID: 20787158971208101} + m_Layer: 0 + m_Name: Sphere + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4559510824621843958 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 267897047611828928} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.025, y: 0.025, z: 0.025} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 8568544637412148623} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &3945107309013936975 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 267897047611828928} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &20787158971208101 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 267897047611828928} + 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: 91ff3830fc4055a4fb0d0d2be32101a7, 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 &8748868027195207512 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8568544637412148623} + m_Layer: 0 + m_Name: Directional Teleport Reticle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8568544637412148623 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8748868027195207512} + 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: 4310739026852207495} + - {fileID: 4559510824621843958} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &4348343308092521580 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 8568544637412148623} + m_Modifications: + - target: {fileID: -8679921383154817045, guid: 27b7629e54b332449bfa3a4065ffe17a, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 27b7629e54b332449bfa3a4065ffe17a, type: 3} + propertyPath: m_LocalPosition.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 27b7629e54b332449bfa3a4065ffe17a, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 27b7629e54b332449bfa3a4065ffe17a, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 27b7629e54b332449bfa3a4065ffe17a, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 27b7629e54b332449bfa3a4065ffe17a, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 27b7629e54b332449bfa3a4065ffe17a, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 27b7629e54b332449bfa3a4065ffe17a, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 27b7629e54b332449bfa3a4065ffe17a, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 27b7629e54b332449bfa3a4065ffe17a, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 27b7629e54b332449bfa3a4065ffe17a, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -7511558181221131132, guid: 27b7629e54b332449bfa3a4065ffe17a, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: fd3c5d8fce991e04f9c11109dde95b3b, type: 2} + - target: {fileID: 919132149155446097, guid: 27b7629e54b332449bfa3a4065ffe17a, type: 3} + propertyPath: m_Name + value: BlinkVisual + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 27b7629e54b332449bfa3a4065ffe17a, type: 3} +--- !u!4 &4310739026852207495 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: 27b7629e54b332449bfa3a4065ffe17a, type: 3} + m_PrefabInstance: {fileID: 4348343308092521580} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Teleport/Directional Teleport Reticle.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Teleport/Directional Teleport Reticle.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/Teleport/Directional Teleport Reticle.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/Teleport/Directional Teleport Reticle.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/XR Origin (XR Rig).prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/XR Origin (XR Rig).prefab similarity index 62% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/XR Origin (XR Rig).prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/XR Origin (XR Rig).prefab index 2c1baf44..d2188a9e 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/XR Origin (XR Rig).prefab +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/XR Origin (XR Rig).prefab @@ -10,8 +10,9 @@ GameObject: m_Component: - component: {fileID: 202364688} - component: {fileID: 4778211696441940833} - - component: {fileID: 202364692} - component: {fileID: 942810691211101373} + - component: {fileID: 5967689310316253315} + - component: {fileID: 6693052528577237899} m_Layer: 0 m_Name: Left Controller m_TagString: Untagged @@ -32,9 +33,9 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1666320186578454293} - - {fileID: 9013359448673381486} - - {fileID: 3881409846907809176} + - {fileID: 1543070802843469984} - {fileID: 1319746309} + - {fileID: 8366379412631108205} m_Father: {fileID: 1680501587} m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -50,11 +51,10 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: f9ac216f0eb04754b1d938aac6380b31, type: 3} m_Name: m_EditorClassIdentifier: - m_ManipulationInteractionGroup: {fileID: 942810691211101373} - m_DirectInteractor: {fileID: 2434299456458490401} - m_RayInteractor: {fileID: 285389467476424711} + m_RayInteractor: {fileID: 0} + m_NearFarInteractor: {fileID: 8877177980677234388} m_TeleportInteractor: {fileID: 1319746312} - m_TeleportModeActivate: {fileID: 1263111715868034790, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_TeleportMode: {fileID: 1263111715868034790, guid: c348712bda248c246b8c49b3db54643f, type: 3} m_TeleportModeCancel: {fileID: 737890489006591557, guid: c348712bda248c246b8c49b3db54643f, type: 3} m_Turn: {fileID: 1010738217276881514, guid: c348712bda248c246b8c49b3db54643f, type: 3} m_SnapTurn: {fileID: -7374733323251553461, guid: c348712bda248c246b8c49b3db54643f, type: 3} @@ -62,249 +62,11 @@ MonoBehaviour: m_UIScroll: {fileID: 2464016903823916871, guid: c348712bda248c246b8c49b3db54643f, type: 3} m_SmoothMotionEnabled: 1 m_SmoothTurnEnabled: 0 + m_NearFarEnableTeleportDuringNearInteraction: 1 m_UIScrollingEnabled: 1 m_RayInteractorChanged: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 3752199730057449385} - m_TargetAssemblyTypeName: UnityEngine.XR.Interaction.Toolkit.Inputs.XRTransformStabilizer, - Unity.XR.Interaction.Toolkit - m_MethodName: set_aimTarget - m_Mode: 0 - 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 ---- !u!114 &202364692 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 202364687} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: caff514de9b15ad48ab85dcff5508221, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UpdateTrackingType: 0 - m_EnableInputTracking: 1 - m_EnableInputActions: 1 - m_ModelPrefab: {fileID: 8270855663187062767, guid: 1392f805216c47742996d4742c80721c, type: 3} - m_ModelParent: {fileID: 202364688} - m_Model: {fileID: 0} - m_AnimateModel: 0 - m_ModelSelectTransition: - m_ModelDeSelectTransition: - m_PositionAction: - m_UseReference: 1 - m_Action: - m_Name: Position - m_Type: 0 - m_ExpectedControlType: Vector3 - m_Id: 8b170a9b-132e-486d-947e-6a244d4362ea - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -2024308242397127297, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_RotationAction: - m_UseReference: 1 - m_Action: - m_Name: Rotation - m_Type: 0 - m_ExpectedControlType: Quaternion - m_Id: 080819c2-8547-4beb-8522-e6356be16fb1 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 8248158260566104461, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_IsTrackedAction: - m_UseReference: 1 - m_Action: - m_Name: Is Tracked - m_Type: 1 - m_ExpectedControlType: Button - m_Id: 22c1da5c-d38f-4253-a25c-fe94205f2ec5 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 1 - m_Reference: {fileID: 840156964685210860, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_TrackingStateAction: - m_UseReference: 1 - m_Action: - m_Name: Tracking State - m_Type: 0 - m_ExpectedControlType: Integer - m_Id: f3874727-df53-4207-8cd4-6248164663d7 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 684395432459739428, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_SelectAction: - m_UseReference: 1 - m_Action: - m_Name: Select - m_Type: 1 - m_ExpectedControlType: Button - m_Id: 8e000d1c-13a4-4cc0-ad37-f2e125874399 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -6131295136447488360, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_SelectActionValue: - m_UseReference: 1 - m_Action: - m_Name: Select Action Value - m_Type: 0 - m_ExpectedControlType: Axis - m_Id: e015d020-ed5c-40b6-b968-fa9881521f0e - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 6558622148059887818, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_ActivateAction: - m_UseReference: 1 - m_Action: - m_Name: Activate - m_Type: 1 - m_ExpectedControlType: Button - m_Id: 3995f9f4-6aa7-409a-80d2-5f7ea1464fde - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -5982496924579745919, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_ActivateActionValue: - m_UseReference: 1 - m_Action: - m_Name: Activate Action Value - m_Type: 0 - m_ExpectedControlType: Axis - m_Id: 492aea1c-7d58-4cb0-8e3c-257d2f651c04 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -4289430672226363583, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_UIPressAction: - m_UseReference: 1 - m_Action: - m_Name: UI Press - m_Type: 1 - m_ExpectedControlType: Button - m_Id: db89d01c-df6f-4954-b868-103dd5bdb514 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -6395602842196007441, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_UIPressActionValue: - m_UseReference: 1 - m_Action: - m_Name: UI Press Action Value - m_Type: 0 - m_ExpectedControlType: Axis - m_Id: 6258f0cd-e000-49ea-b3b6-7c930f12c390 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 71106601250685021, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_UIScrollAction: - m_UseReference: 1 - m_Action: - m_Name: UI Scroll - m_Type: 0 - m_ExpectedControlType: Vector2 - m_Id: b74fcfe3-d94d-4bf1-960a-364568ffe66b - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 2464016903823916871, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_HapticDeviceAction: - m_UseReference: 1 - m_Action: - m_Name: Haptic Device - m_Type: 2 - m_ExpectedControlType: - m_Id: 3e09b626-c80d-40ec-9592-eb3fe89c2038 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -8785819595477538065, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_RotateAnchorAction: - m_UseReference: 1 - m_Action: - m_Name: Rotate Anchor - m_Type: 0 - m_ExpectedControlType: Vector2 - m_Id: 3dca8766-e652-4e78-8406-420aa73ba338 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -7363382999065477798, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_DirectionalAnchorRotationAction: - m_UseReference: 1 - m_Action: - m_Name: Directional Anchor Rotation - m_Type: 0 - m_ExpectedControlType: Vector2 - m_Id: 7d323aae-15a7-4c32-a2b9-0653cb108725 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -8811388872089202044, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_TranslateAnchorAction: - m_UseReference: 1 - m_Action: - m_Name: Translate Anchor - m_Type: 0 - m_ExpectedControlType: Vector2 - m_Id: e873605e-6a95-4389-8fbe-39069340ba92 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 7779212132400271959, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_ScaleToggleAction: - m_UseReference: 1 - m_Action: - m_Name: Scale Toggle - m_Type: 1 - m_ExpectedControlType: - m_Id: a1912586-fdc4-4079-b714-faafc085fd22 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -335775248641796371, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_ScaleDeltaAction: - m_UseReference: 1 - m_Action: - m_Name: Scale Delta - m_Type: 0 - m_ExpectedControlType: Vector2 - m_Id: 61322b52-a380-4dd9-9782-1091163d1509 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -1636515391019944688, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_ButtonPressPoint: 0.5 + m_Calls: [] --- !u!114 &942810691211101373 MonoBehaviour: m_ObjectHideFlags: 0 @@ -321,12 +83,106 @@ MonoBehaviour: m_InteractionManager: {fileID: 0} m_StartingGroupMembers: - {fileID: 4343660526480754339} - - {fileID: 2434299456458490401} - - {fileID: 285389467476424711} + - {fileID: 8877177980677234388} m_StartingInteractionOverridesMap: - groupMember: {fileID: 4343660526480754339} overrideGroupMembers: - - {fileID: 2434299456458490401} + - {fileID: 8877177980677234388} +--- !u!114 &5967689310316253315 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 202364687} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b734f2bd29eeddd4d85afb0c266228c3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HapticOutput: + m_InputSourceMode: 2 + m_InputAction: + m_Name: Haptic + m_Type: 2 + m_ExpectedControlType: + m_Id: a67d36a7-d7d4-428e-877d-0cad8d4a162f + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReference: {fileID: -8785819595477538065, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_AmplitudeMultiplier: 1 +--- !u!114 &6693052528577237899 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 202364687} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c2fadf230d1919748a9aa21d40f74619, type: 3} + m_Name: + m_EditorClassIdentifier: + m_TrackingType: 0 + m_UpdateType: 0 + m_IgnoreTrackingState: 0 + m_PositionInput: + m_UseReference: 1 + m_Action: + m_Name: Position + m_Type: 0 + m_ExpectedControlType: Vector3 + m_Id: cd22b81e-c39a-4170-bdbf-33b5a06ea86f + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_Reference: {fileID: -2024308242397127297, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_RotationInput: + m_UseReference: 1 + m_Action: + m_Name: Rotation + m_Type: 0 + m_ExpectedControlType: Quaternion + m_Id: 04fa80c1-7876-441c-8416-c5ea3caea5c4 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_Reference: {fileID: 8248158260566104461, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_TrackingStateInput: + m_UseReference: 1 + m_Action: + m_Name: Tracking State + m_Type: 0 + m_ExpectedControlType: Integer + m_Id: fdcc0d62-5cd0-4fcc-8c3a-c07cf6230b7d + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_Reference: {fileID: 684395432459739428, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_PositionAction: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: ddb05e9d-4218-401c-a7a8-003424f4b4fa + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_RotationAction: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: de98cdb6-b2c4-4d67-af3c-9c8bd60b295a + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 --- !u!1 &1670256624 GameObject: m_ObjectHideFlags: 0 @@ -337,8 +193,9 @@ GameObject: m_Component: - component: {fileID: 1670256625} - component: {fileID: 5663893676086941514} - - component: {fileID: 1670256628} - component: {fileID: 6678509202150728127} + - component: {fileID: 4238984354899526239} + - component: {fileID: 4602308928622519009} m_Layer: 0 m_Name: Right Controller m_TagString: Untagged @@ -359,9 +216,9 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 3954319948395782924} - - {fileID: 1096734238491090331} - - {fileID: 3921468432820449555} + - {fileID: 8393186890254128703} - {fileID: 2449787133337329436} + - {fileID: 6528530117482412838} m_Father: {fileID: 1680501587} m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -377,11 +234,10 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: f9ac216f0eb04754b1d938aac6380b31, type: 3} m_Name: m_EditorClassIdentifier: - m_ManipulationInteractionGroup: {fileID: 6678509202150728127} - m_DirectInteractor: {fileID: 6045481230268494804} - m_RayInteractor: {fileID: 19064736505062540} + m_RayInteractor: {fileID: 0} + m_NearFarInteractor: {fileID: 1883230248363655243} m_TeleportInteractor: {fileID: 2449787133337329425} - m_TeleportModeActivate: {fileID: -8061240218431744966, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_TeleportMode: {fileID: -8061240218431744966, guid: c348712bda248c246b8c49b3db54643f, type: 3} m_TeleportModeCancel: {fileID: 2307464322626738743, guid: c348712bda248c246b8c49b3db54643f, type: 3} m_Turn: {fileID: -6493913391331992944, guid: c348712bda248c246b8c49b3db54643f, type: 3} m_SnapTurn: {fileID: -8525429354371678379, guid: c348712bda248c246b8c49b3db54643f, type: 3} @@ -389,249 +245,11 @@ MonoBehaviour: m_UIScroll: {fileID: -6756787485274679044, guid: c348712bda248c246b8c49b3db54643f, type: 3} m_SmoothMotionEnabled: 0 m_SmoothTurnEnabled: 0 + m_NearFarEnableTeleportDuringNearInteraction: 1 m_UIScrollingEnabled: 1 m_RayInteractorChanged: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 1801942220539511183} - m_TargetAssemblyTypeName: UnityEngine.XR.Interaction.Toolkit.Inputs.XRTransformStabilizer, - Unity.XR.Interaction.Toolkit - m_MethodName: set_aimTarget - m_Mode: 0 - 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 ---- !u!114 &1670256628 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1670256624} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: caff514de9b15ad48ab85dcff5508221, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UpdateTrackingType: 0 - m_EnableInputTracking: 1 - m_EnableInputActions: 1 - m_ModelPrefab: {fileID: 3475118261464492563, guid: 9f3369e30fbd31f4bb596b1a99babe83, type: 3} - m_ModelParent: {fileID: 1670256625} - m_Model: {fileID: 0} - m_AnimateModel: 0 - m_ModelSelectTransition: - m_ModelDeSelectTransition: - m_PositionAction: - m_UseReference: 1 - m_Action: - m_Name: - m_Type: 0 - m_ExpectedControlType: Vector3 - m_Id: - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -3326005586356538449, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_RotationAction: - m_UseReference: 1 - m_Action: - m_Name: - m_Type: 0 - m_ExpectedControlType: Quaternion - m_Id: - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 5101698808175986029, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_IsTrackedAction: - m_UseReference: 1 - m_Action: - m_Name: - m_Type: 1 - m_ExpectedControlType: Button - m_Id: - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 1 - m_Reference: {fileID: -7044516463258014562, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_TrackingStateAction: - m_UseReference: 1 - m_Action: - m_Name: Tracking State - m_Type: 0 - m_ExpectedControlType: Integer - m_Id: 008dba4e-870a-43fb-9a1f-1a7bc3ecec0c - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -1277054153949319361, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_SelectAction: - m_UseReference: 1 - m_Action: - m_Name: - m_Type: 1 - m_ExpectedControlType: Button - m_Id: - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 187161793506945269, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_SelectActionValue: - m_UseReference: 1 - m_Action: - m_Name: Select Action Value - m_Type: 0 - m_ExpectedControlType: Axis - m_Id: 6b1e5826-d74e-452e-ab31-5d6eae6f407e - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -1758520528963094988, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_ActivateAction: - m_UseReference: 1 - m_Action: - m_Name: - m_Type: 1 - m_ExpectedControlType: Button - m_Id: - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 83097790271614945, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_ActivateActionValue: - m_UseReference: 1 - m_Action: - m_Name: Activate Action Value - m_Type: 0 - m_ExpectedControlType: Axis - m_Id: 98d3d870-d1c9-4fbe-9790-8d0c2cb9ffc0 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 7904272356298805229, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_UIPressAction: - m_UseReference: 1 - m_Action: - m_Name: - m_Type: 1 - m_ExpectedControlType: Button - m_Id: - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 3279264004350380116, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_UIPressActionValue: - m_UseReference: 1 - m_Action: - m_Name: UI Press Action Value - m_Type: 0 - m_ExpectedControlType: Axis - m_Id: bf4ab5bd-3648-4de6-a1f6-8e879b2612c2 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -5908353012961274365, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_UIScrollAction: - m_UseReference: 1 - m_Action: - m_Name: UI Scroll - m_Type: 0 - m_ExpectedControlType: Vector2 - m_Id: a6c0ac1e-4065-4abc-ac84-e81172fbfdd4 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -6756787485274679044, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_HapticDeviceAction: - m_UseReference: 1 - m_Action: - m_Name: Haptic Device - m_Type: 2 - m_ExpectedControlType: - m_Id: 59ea1b94-e9f8-4049-ab97-5920b11143a5 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -8222252007134549311, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_RotateAnchorAction: - m_UseReference: 1 - m_Action: - m_Name: - m_Type: 0 - m_ExpectedControlType: Vector2 - m_Id: - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -5913262927076077117, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_DirectionalAnchorRotationAction: - m_UseReference: 1 - m_Action: - m_Name: Directional Anchor Rotation - m_Type: 0 - m_ExpectedControlType: Vector2 - m_Id: 72b93609-c58e-411b-a958-c221860f8269 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -440298646266941818, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_TranslateAnchorAction: - m_UseReference: 1 - m_Action: - m_Name: - m_Type: 0 - m_ExpectedControlType: Vector2 - m_Id: - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 875253871413052681, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_ScaleToggleAction: - m_UseReference: 1 - m_Action: - m_Name: Scale Toggle - m_Type: 1 - m_ExpectedControlType: - m_Id: 08507162-a3bd-4e4f-9854-0b3051398d03 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -2524354804938687746, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_ScaleDeltaAction: - m_UseReference: 1 - m_Action: - m_Name: Scale Delta - m_Type: 0 - m_ExpectedControlType: Vector2 - m_Id: 65d9ae9e-5581-4b2c-a1f5-2ba0614443e2 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -6447266317303757838, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_ButtonPressPoint: 0.5 + m_Calls: [] --- !u!114 &6678509202150728127 MonoBehaviour: m_ObjectHideFlags: 0 @@ -648,12 +266,106 @@ MonoBehaviour: m_InteractionManager: {fileID: 0} m_StartingGroupMembers: - {fileID: 2141651114331267770} - - {fileID: 6045481230268494804} - - {fileID: 19064736505062540} + - {fileID: 1883230248363655243} m_StartingInteractionOverridesMap: - groupMember: {fileID: 2141651114331267770} overrideGroupMembers: - - {fileID: 6045481230268494804} + - {fileID: 1883230248363655243} +--- !u!114 &4238984354899526239 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1670256624} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b734f2bd29eeddd4d85afb0c266228c3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HapticOutput: + m_InputSourceMode: 2 + m_InputAction: + m_Name: Haptic + m_Type: 2 + m_ExpectedControlType: + m_Id: b71b5bb4-1b09-415f-a4df-1476771fcae6 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReference: {fileID: -8222252007134549311, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_AmplitudeMultiplier: 1 +--- !u!114 &4602308928622519009 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1670256624} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c2fadf230d1919748a9aa21d40f74619, type: 3} + m_Name: + m_EditorClassIdentifier: + m_TrackingType: 0 + m_UpdateType: 0 + m_IgnoreTrackingState: 0 + m_PositionInput: + m_UseReference: 1 + m_Action: + m_Name: Position + m_Type: 0 + m_ExpectedControlType: Vector3 + m_Id: c21ad7d3-c46f-48ad-99da-097df39312cc + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_Reference: {fileID: -3326005586356538449, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_RotationInput: + m_UseReference: 1 + m_Action: + m_Name: Rotation + m_Type: 0 + m_ExpectedControlType: Quaternion + m_Id: 69f091ba-e646-4189-9296-d68870a4d922 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_Reference: {fileID: 5101698808175986029, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_TrackingStateInput: + m_UseReference: 1 + m_Action: + m_Name: Tracking State + m_Type: 0 + m_ExpectedControlType: Integer + m_Id: 05873c58-6d6f-4aea-8e06-78c4544c58dc + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_Reference: {fileID: -1277054153949319361, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_PositionAction: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: e0c62bbd-29f9-48af-967b-21babef9a6a4 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_RotationAction: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 303ef588-e0d6-494e-9ceb-2d2edc0eb8e5 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 --- !u!1 &1680501586 GameObject: m_ObjectHideFlags: 0 @@ -922,37 +634,41 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 9b1e8c997df241c1a67045eeac79b41b, type: 3} m_Name: m_EditorClassIdentifier: - m_System: {fileID: 1589979491555116479} - m_MoveSpeed: 1 + m_Mediator: {fileID: 6640002710935096923} + m_TransformationPriority: 0 + m_MoveSpeed: 2.5 m_EnableStrafe: 1 m_EnableFly: 0 m_UseGravity: 1 - m_GravityApplicationMode: 0 m_ForwardSource: {fileID: 1767192434} - m_LeftHandMoveAction: - m_UseReference: 1 - m_Action: + m_LeftHandMoveInput: + m_InputSourceMode: 2 + m_InputAction: m_Name: Left Hand Move m_Type: 0 - m_ExpectedControlType: - m_Id: fa65baa9-ca16-4d92-8425-3195462c2aea + m_ExpectedControlType: Vector2 + m_Id: 16c2fabb-fb1c-4a11-94d0-0b1d894b8593 m_Processors: m_Interactions: m_SingletonActionBindings: [] m_Flags: 0 - m_Reference: {fileID: 6972639530819350904, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_RightHandMoveAction: - m_UseReference: 1 - m_Action: + m_InputActionReference: {fileID: 6972639530819350904, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualValue: {x: 0, y: 0} + m_RightHandMoveInput: + m_InputSourceMode: 2 + m_InputAction: m_Name: Right Hand Move m_Type: 0 - m_ExpectedControlType: - m_Id: 7c956f1d-8187-437c-8dc4-afdbf8424b34 + m_ExpectedControlType: Vector2 + m_Id: af2e3d83-024e-4a1f-8bc1-f97f0b4ae1d5 m_Processors: m_Interactions: m_SingletonActionBindings: [] m_Flags: 0 - m_Reference: {fileID: -8198699208435500284, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_InputActionReference: {fileID: -8198699208435500284, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualValue: {x: 0, y: 0} m_HeadTransform: {fileID: 1767192434} m_LeftControllerTransform: {fileID: 202364688} m_RightControllerTransform: {fileID: 1670256625} @@ -967,8 +683,8 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 8770899961536015614} - - component: {fileID: 6397299583031462443} - - component: {fileID: 3072087220465571386} + - component: {fileID: 7347985736721345035} + - component: {fileID: 6480925242510836759} m_Layer: 2 m_Name: Turn m_TagString: Untagged @@ -991,7 +707,7 @@ Transform: m_Father: {fileID: 6981642495833523204} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &6397299583031462443 +--- !u!114 &7347985736721345035 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -1000,40 +716,45 @@ MonoBehaviour: m_GameObject: {fileID: 1470279098769358944} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 2213c36610e3b1c4bbf886810ed9db12, type: 3} + m_Script: {fileID: 11500000, guid: e9f365cf844c03449bc8973eead2c3c1, type: 3} m_Name: m_EditorClassIdentifier: - m_System: {fileID: 1589979491555116479} + m_Mediator: {fileID: 6640002710935096923} + m_TransformationPriority: 0 m_TurnAmount: 45 m_DebounceTime: 0.5 m_EnableTurnLeftRight: 1 m_EnableTurnAround: 1 m_DelayTime: 0 - m_LeftHandSnapTurnAction: - m_UseReference: 1 - m_Action: + m_LeftHandTurnInput: + m_InputSourceMode: 2 + m_InputAction: m_Name: Left Hand Snap Turn m_Type: 0 - m_ExpectedControlType: - m_Id: a1d07c24-ca50-422a-a23f-685d9fabf63b + m_ExpectedControlType: Vector2 + m_Id: 536e141d-ee23-4272-b0fd-3984d1655f02 m_Processors: m_Interactions: m_SingletonActionBindings: [] m_Flags: 0 - m_Reference: {fileID: -7374733323251553461, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_RightHandSnapTurnAction: - m_UseReference: 1 - m_Action: + m_InputActionReference: {fileID: -7374733323251553461, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualValue: {x: 0, y: 0} + m_RightHandTurnInput: + m_InputSourceMode: 2 + m_InputAction: m_Name: Right Hand Snap Turn m_Type: 0 - m_ExpectedControlType: - m_Id: a7b54797-6974-4f75-81d0-42b9c15ef1e0 + m_ExpectedControlType: Vector2 + m_Id: b17ca378-4740-48c7-abe1-7f35bce317e9 m_Processors: m_Interactions: m_SingletonActionBindings: [] m_Flags: 0 - m_Reference: {fileID: -8525429354371678379, guid: c348712bda248c246b8c49b3db54643f, type: 3} ---- !u!114 &3072087220465571386 + m_InputActionReference: {fileID: -8525429354371678379, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualValue: {x: 0, y: 0} +--- !u!114 &6480925242510836759 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -1042,35 +763,40 @@ MonoBehaviour: m_GameObject: {fileID: 1470279098769358944} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 919e39492806b334982b6b84c90dd927, type: 3} + m_Script: {fileID: 11500000, guid: 75b29b6c6428c984a8a73ffc2d58063b, type: 3} m_Name: m_EditorClassIdentifier: - m_System: {fileID: 1589979491555116479} + m_Mediator: {fileID: 6640002710935096923} + m_TransformationPriority: 0 m_TurnSpeed: 60 - m_LeftHandTurnAction: - m_UseReference: 1 - m_Action: + m_LeftHandTurnInput: + m_InputSourceMode: 2 + m_InputAction: m_Name: Left Hand Turn m_Type: 0 - m_ExpectedControlType: - m_Id: d065cb11-e9f6-4747-a3d4-1c032fc345a0 + m_ExpectedControlType: Vector2 + m_Id: 3610965d-108d-4451-a143-a78d1ee8f9b8 m_Processors: m_Interactions: m_SingletonActionBindings: [] m_Flags: 0 - m_Reference: {fileID: 1010738217276881514, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_RightHandTurnAction: - m_UseReference: 1 - m_Action: + m_InputActionReference: {fileID: 1010738217276881514, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualValue: {x: 0, y: 0} + m_RightHandTurnInput: + m_InputSourceMode: 2 + m_InputAction: m_Name: Right Hand Turn m_Type: 0 - m_ExpectedControlType: - m_Id: e043a43a-0352-4ee2-ab81-9dafdfb41dc2 + m_ExpectedControlType: Vector2 + m_Id: eeb82678-2af4-4b6c-87fc-621bb707edc5 m_Processors: m_Interactions: m_SingletonActionBindings: [] m_Flags: 0 - m_Reference: {fileID: -6493913391331992944, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_InputActionReference: {fileID: -6493913391331992944, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualValue: {x: 0, y: 0} --- !u!1 &1717954561962503725 GameObject: m_ObjectHideFlags: 0 @@ -1082,7 +808,7 @@ GameObject: - component: {fileID: 1717954561962503726} - component: {fileID: 1178791450436251564} - component: {fileID: 6232745470614056090} - - component: {fileID: 6232745470614056095} + - component: {fileID: 6520291404937146767} - component: {fileID: 5826056641483426609} - component: {fileID: 5033801203051696737} m_Layer: 2 @@ -1144,7 +870,7 @@ CharacterController: m_SkinWidth: 0.08 m_MinMoveDistance: 0.001 m_Center: {x: 0, y: 0.76072, z: 0} ---- !u!114 &6232745470614056095 +--- !u!114 &6520291404937146767 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -1153,12 +879,11 @@ MonoBehaviour: m_GameObject: {fileID: 1717954561962503725} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: af6bf904e410ee8479f9093d8830d1f8, type: 3} + m_Script: {fileID: 11500000, guid: 017c5e3933235514c9520e1dace2a4b2, type: 3} m_Name: m_EditorClassIdentifier: - m_LocomotionProvider: {fileID: 153982007679157697} - m_MinHeight: 0 - m_MaxHeight: Infinity + m_ActionAssets: + - {fileID: -944628639613478452, guid: c348712bda248c246b8c49b3db54643f, type: 3} --- !u!114 &5826056641483426609 MonoBehaviour: m_ObjectHideFlags: 0 @@ -1203,11 +928,11 @@ MonoBehaviour: m_FallbackDivergence: 60 m_HideCursorWithNoActiveRays: 1 m_RayInteractors: - - m_Interactor: {fileID: 285389467476424711} + - m_Interactor: {fileID: 0} m_TeleportRay: 0 - m_Interactor: {fileID: 1319746312} m_TeleportRay: 1 - - m_Interactor: {fileID: 19064736505062540} + - m_Interactor: {fileID: 0} m_TeleportRay: 0 - m_Interactor: {fileID: 2449787133337329425} m_TeleportRay: 1 @@ -1290,7 +1015,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 01f69dc1cb084aa42b2f2f8cd87bc770, type: 3} m_Name: m_EditorClassIdentifier: - m_System: {fileID: 1589979491555116479} + m_Mediator: {fileID: 6640002710935096923} + m_TransformationPriority: 0 m_DelayTime: 0 --- !u!1 &2626757739553014894 GameObject: @@ -1320,7 +1046,8 @@ Transform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: [] + m_Children: + - {fileID: 2749926995908329476} m_Father: {fileID: 6981642495833523204} m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -1336,7 +1063,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 496880615cd240be960d436c1c8ae570, type: 3} m_Name: m_EditorClassIdentifier: - m_System: {fileID: 1589979491555116479} + m_Mediator: {fileID: 6640002710935096923} + m_TransformationPriority: 0 m_ClimbSettings: m_UseConstant: 1 m_ConstantValue: @@ -1355,7 +1083,7 @@ GameObject: - component: {fileID: 8718302446126152263} - component: {fileID: 1801942220539511183} m_Layer: 0 - m_Name: Right Controller Stabilized + m_Name: Right Controller Teleport Stabilized Origin m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -1389,9 +1117,9 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 64d299502104b064388841ec2adf6def, type: 3} m_Name: m_EditorClassIdentifier: - m_Target: {fileID: 1670256625} - m_AimTargetObject: {fileID: 19064736505062540} - m_UseLocalSpace: 1 + m_Target: {fileID: 5668689709192895336} + m_AimTargetObject: {fileID: 2449787133337329425} + m_UseLocalSpace: 0 m_AngleStabilization: 20 m_PositionStabilization: 0.25 --- !u!1 &3533369827395663398 @@ -1440,7 +1168,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 8b94c4c83dec6a94fbaebf543478259e, type: 3} m_Name: m_EditorClassIdentifier: - m_System: {fileID: 1589979491555116479} + m_Mediator: {fileID: 6640002710935096923} + m_TransformationPriority: 0 m_EnableFreeXMovement: 1 m_EnableFreeYMovement: 0 m_EnableFreeZMovement: 1 @@ -1449,6 +1178,35 @@ MonoBehaviour: m_ControllerTransform: {fileID: 202364688} m_EnableMoveWhileSelecting: 0 m_MoveFactor: 1 + m_GrabMoveInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: Grab Move + m_Type: 1 + m_ExpectedControlType: + m_Id: 2e9a23ce-d949-4c67-9b12-7a9a35510733 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: Grab Move Value + m_Type: 0 + m_ExpectedControlType: Axis + m_Id: 3680a95b-119c-4eba-b8fe-7e0a362e460b + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: -3742484312079769484, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_InputActionReferenceValue: {fileID: -3742484312079769484, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 m_GrabMoveAction: m_UseReference: 1 m_Action: @@ -1460,7 +1218,7 @@ MonoBehaviour: m_Interactions: m_SingletonActionBindings: [] m_Flags: 0 - m_Reference: {fileID: -3742484312079769484, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_Reference: {fileID: 0} --- !u!114 &4083252680172266230 MonoBehaviour: m_ObjectHideFlags: 0 @@ -1473,7 +1231,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 8b94c4c83dec6a94fbaebf543478259e, type: 3} m_Name: m_EditorClassIdentifier: - m_System: {fileID: 1589979491555116479} + m_Mediator: {fileID: 6640002710935096923} + m_TransformationPriority: 0 m_EnableFreeXMovement: 1 m_EnableFreeYMovement: 0 m_EnableFreeZMovement: 1 @@ -1482,6 +1241,35 @@ MonoBehaviour: m_ControllerTransform: {fileID: 1670256625} m_EnableMoveWhileSelecting: 0 m_MoveFactor: 1 + m_GrabMoveInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: Grab Move + m_Type: 1 + m_ExpectedControlType: + m_Id: 67220c99-f046-4e98-aa6f-d84114cad173 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: Grab Move Value + m_Type: 0 + m_ExpectedControlType: Axis + m_Id: ed114d26-3fbf-41fc-80fa-9675240038c5 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: 15759602096507913, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_InputActionReferenceValue: {fileID: 15759602096507913, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 m_GrabMoveAction: m_UseReference: 1 m_Action: @@ -1493,7 +1281,7 @@ MonoBehaviour: m_Interactions: m_SingletonActionBindings: [] m_Flags: 0 - m_Reference: {fileID: 15759602096507913, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_Reference: {fileID: 0} --- !u!114 &742272467831425975 MonoBehaviour: m_ObjectHideFlags: 0 @@ -1506,7 +1294,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 760ff70c1c91bdd45907d0ff0cdcaf7f, type: 3} m_Name: m_EditorClassIdentifier: - m_System: {fileID: 1589979491555116479} + m_Mediator: {fileID: 6640002710935096923} + m_TransformationPriority: 0 m_EnableFreeXMovement: 1 m_EnableFreeYMovement: 0 m_EnableFreeZMovement: 1 @@ -1561,9 +1350,10 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 6981642495833523204} - - component: {fileID: 1589979491555116479} + - component: {fileID: 6640002710935096923} + - component: {fileID: 7399425242140339816} m_Layer: 2 - m_Name: Locomotion System + m_Name: Locomotion m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -1589,7 +1379,7 @@ Transform: m_Father: {fileID: 1717954561962503726} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1589979491555116479 +--- !u!114 &6640002710935096923 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -1598,11 +1388,25 @@ MonoBehaviour: m_GameObject: {fileID: 5167925059111895691} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 03a5df2202a8b96488c744be3bd0c33e, type: 3} + m_Script: {fileID: 11500000, guid: 6fa7b4195685c3846be746c74f0ab2f8, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &7399425242140339816 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5167925059111895691} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6a26c941eb8a46f7b6d00416227ab8c0, type: 3} m_Name: m_EditorClassIdentifier: - m_Timeout: 10 m_XROrigin: {fileID: 1178791450436251564} + m_BodyPositionEvaluatorObject: {fileID: 0} + m_ConstrainedBodyManipulatorObject: {fileID: 0} + m_UseCharacterControllerIfExists: 1 --- !u!1 &5563199296126487199 GameObject: m_ObjectHideFlags: 0 @@ -1614,7 +1418,7 @@ GameObject: - component: {fileID: 716906830792148215} - component: {fileID: 3752199730057449385} m_Layer: 0 - m_Name: Left Controller Stabilized + m_Name: Left Controller Teleport Stabilized Origin m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -1648,11 +1452,104 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 64d299502104b064388841ec2adf6def, type: 3} m_Name: m_EditorClassIdentifier: - m_Target: {fileID: 202364688} - m_AimTargetObject: {fileID: 285389467476424711} - m_UseLocalSpace: 1 + m_Target: {fileID: 8022141474358935409} + m_AimTargetObject: {fileID: 1319746312} + m_UseLocalSpace: 0 m_AngleStabilization: 20 m_PositionStabilization: 0.25 +--- !u!1 &5617778599117486727 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2749926995908329476} + - component: {fileID: 758862941726224967} + - component: {fileID: 4375985661701987801} + m_Layer: 2 + m_Name: Climb Teleport + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2749926995908329476 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5617778599117486727} + 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: 8418786636219059989} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &758862941726224967 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5617778599117486727} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e3c5f6c9defa4ae9ad41bcc3f8754f86, type: 3} + m_Name: + m_EditorClassIdentifier: + m_InteractionManager: {fileID: 0} + m_InteractionLayers: + m_Bits: 4294967295 + m_Handedness: 0 + m_AttachTransform: {fileID: 0} + m_KeepSelectedTargetValid: 1 + m_DisableVisualsWhenBlockedInGroup: 1 + m_StartingSelectedInteractable: {fileID: 0} + m_StartingTargetFilter: {fileID: 0} + m_HoverEntered: + m_PersistentCalls: + m_Calls: [] + m_HoverExited: + m_PersistentCalls: + m_Calls: [] + m_SelectEntered: + m_PersistentCalls: + m_Calls: [] + m_SelectExited: + m_PersistentCalls: + m_Calls: [] + m_StartingHoverFilters: [] + m_StartingSelectFilters: [] + m_ClimbProvider: {fileID: 5739245880472075158} + m_DestinationEvaluationSettings: + m_UseConstant: 1 + m_ConstantValue: + m_EnableDestinationEvaluationDelay: 0 + m_DestinationEvaluationDelayTime: 1 + m_PollForDestinationChange: 1 + m_DestinationPollFrequency: 1 + m_DestinationFilterObject: {fileID: 11400000, guid: 0f906c94e2aa0c3488832acc1db04295, type: 2} + m_Variable: {fileID: 0} +--- !u!114 &4375985661701987801 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5617778599117486727} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e766f86cb7d2461683eb37d8a971fb14, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ClimbTeleportInteractor: {fileID: 758862941726224967} + m_PointerPrefab: {fileID: 5212361887338514247, guid: ae1968658b9687b47976fe86c062168f, type: 3} + m_PointerDistance: 0.3 --- !u!1 &6501755809687671949 GameObject: m_ObjectHideFlags: 0 @@ -1734,6 +1631,68 @@ Transform: m_Father: {fileID: 3595914740002285240} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &494449108016059778 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 202364688} + m_Modifications: + - target: {fileID: 8270855663187062767, guid: 1392f805216c47742996d4742c80721c, type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 8270855663187062767, guid: 1392f805216c47742996d4742c80721c, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8270855663187062767, guid: 1392f805216c47742996d4742c80721c, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8270855663187062767, guid: 1392f805216c47742996d4742c80721c, type: 3} + propertyPath: m_LocalPosition.z + value: -0.05 + objectReference: {fileID: 0} + - target: {fileID: 8270855663187062767, guid: 1392f805216c47742996d4742c80721c, type: 3} + propertyPath: m_LocalRotation.w + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8270855663187062767, guid: 1392f805216c47742996d4742c80721c, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8270855663187062767, guid: 1392f805216c47742996d4742c80721c, type: 3} + propertyPath: m_LocalRotation.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8270855663187062767, guid: 1392f805216c47742996d4742c80721c, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8270855663187062767, guid: 1392f805216c47742996d4742c80721c, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8270855663187062767, guid: 1392f805216c47742996d4742c80721c, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8270855663187062767, guid: 1392f805216c47742996d4742c80721c, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8758423527188247893, guid: 1392f805216c47742996d4742c80721c, type: 3} + propertyPath: m_Name + value: Left Controller Visual + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 1392f805216c47742996d4742c80721c, type: 3} +--- !u!4 &8366379412631108205 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 8270855663187062767, guid: 1392f805216c47742996d4742c80721c, type: 3} + m_PrefabInstance: {fileID: 494449108016059778} + m_PrefabAsset: {fileID: 0} --- !u!1001 &553018692727262454 PrefabInstance: m_ObjectHideFlags: 0 @@ -1741,6 +1700,10 @@ PrefabInstance: m_Modification: m_TransformParent: {fileID: 1670256625} m_Modifications: + - target: {fileID: 2761784063978902503, guid: c1800acf6366418a9b5f610249000331, type: 3} + propertyPath: m_Handedness + value: 2 + objectReference: {fileID: 0} - target: {fileID: 2761784063978902503, guid: c1800acf6366418a9b5f610249000331, type: 3} propertyPath: m_AttachTransform value: @@ -1749,6 +1712,42 @@ PrefabInstance: propertyPath: m_RayOriginTransform value: objectReference: {fileID: 8718302446126152263} + - target: {fileID: 2761784063978902503, guid: c1800acf6366418a9b5f610249000331, type: 3} + propertyPath: m_RaycastMask.m_Bits + value: 2147483681 + objectReference: {fileID: 0} + - target: {fileID: 2761784063978902503, guid: c1800acf6366418a9b5f610249000331, type: 3} + propertyPath: m_SelectInput.m_InputActionReferenceValue + value: + objectReference: {fileID: -8061240218431744966, guid: c348712bda248c246b8c49b3db54643f, type: 3} + - target: {fileID: 2761784063978902503, guid: c1800acf6366418a9b5f610249000331, type: 3} + propertyPath: m_RotateAnchorInput.m_InputActionReference + value: + objectReference: {fileID: -5913262927076077117, guid: c348712bda248c246b8c49b3db54643f, type: 3} + - target: {fileID: 2761784063978902503, guid: c1800acf6366418a9b5f610249000331, type: 3} + propertyPath: m_ActivateInput.m_InputActionReferenceValue + value: + objectReference: {fileID: 7904272356298805229, guid: c348712bda248c246b8c49b3db54643f, type: 3} + - target: {fileID: 2761784063978902503, guid: c1800acf6366418a9b5f610249000331, type: 3} + propertyPath: m_SelectInput.m_InputActionReferencePerformed + value: + objectReference: {fileID: -8061240218431744966, guid: c348712bda248c246b8c49b3db54643f, type: 3} + - target: {fileID: 2761784063978902503, guid: c1800acf6366418a9b5f610249000331, type: 3} + propertyPath: m_ActivateInput.m_InputActionReferencePerformed + value: + objectReference: {fileID: 83097790271614945, guid: c348712bda248c246b8c49b3db54643f, type: 3} + - target: {fileID: 2761784063978902503, guid: c1800acf6366418a9b5f610249000331, type: 3} + propertyPath: m_DirectionalAnchorInput.m_InputActionReference + value: + objectReference: {fileID: -440298646266941818, guid: c348712bda248c246b8c49b3db54643f, type: 3} + - target: {fileID: 2761784063978902503, guid: c1800acf6366418a9b5f610249000331, type: 3} + propertyPath: m_RotateManipulationInput.m_InputActionReference + value: + objectReference: {fileID: -5913262927076077117, guid: c348712bda248c246b8c49b3db54643f, type: 3} + - target: {fileID: 2761784063978902503, guid: c1800acf6366418a9b5f610249000331, type: 3} + propertyPath: m_DirectionalManipulationInput.m_InputActionReference + value: + objectReference: {fileID: -440298646266941818, guid: c348712bda248c246b8c49b3db54643f, type: 3} - target: {fileID: 2761784063978902504, guid: c1800acf6366418a9b5f610249000331, type: 3} propertyPath: m_Parameters.numCapVertices value: 4 @@ -1764,10 +1763,10 @@ PrefabInstance: - target: {fileID: 2761784063978902505, guid: c1800acf6366418a9b5f610249000331, type: 3} propertyPath: m_LineOriginTransform value: - objectReference: {fileID: 1670256625} + objectReference: {fileID: 5668689709192895336} - target: {fileID: 2761784063978902506, guid: c1800acf6366418a9b5f610249000331, type: 3} propertyPath: m_RootOrder - value: 3 + value: 2 objectReference: {fileID: 0} - target: {fileID: 2761784063978902506, guid: c1800acf6366418a9b5f610249000331, type: 3} propertyPath: m_LocalPosition.x @@ -1813,6 +1812,10 @@ PrefabInstance: propertyPath: m_Name value: Teleport Interactor objectReference: {fileID: 0} + - target: {fileID: 3616344554909481683, guid: c1800acf6366418a9b5f610249000331, type: 3} + propertyPath: m_HapticImpulsePlayer + value: + objectReference: {fileID: 4238984354899526239} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: c1800acf6366418a9b5f610249000331, type: 3} --- !u!114 &2449787133337329425 stripped @@ -1820,7 +1823,7 @@ MonoBehaviour: m_CorrespondingSourceObject: {fileID: 2761784063978902503, guid: c1800acf6366418a9b5f610249000331, type: 3} m_PrefabInstance: {fileID: 553018692727262454} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2449787133337329437} + m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 6803edce0201f574f923fd9d10e5b30a, type: 3} @@ -1831,237 +1834,6 @@ Transform: m_CorrespondingSourceObject: {fileID: 2761784063978902506, guid: c1800acf6366418a9b5f610249000331, type: 3} m_PrefabInstance: {fileID: 553018692727262454} m_PrefabAsset: {fileID: 0} ---- !u!1 &2449787133337329437 stripped -GameObject: - m_CorrespondingSourceObject: {fileID: 2761784063978902507, guid: c1800acf6366418a9b5f610249000331, type: 3} - m_PrefabInstance: {fileID: 553018692727262454} - m_PrefabAsset: {fileID: 0} ---- !u!114 &4898442741215327232 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2449787133337329437} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: caff514de9b15ad48ab85dcff5508221, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UpdateTrackingType: 0 - m_EnableInputTracking: 0 - m_EnableInputActions: 1 - m_ModelPrefab: {fileID: 0} - m_ModelParent: {fileID: 0} - m_Model: {fileID: 0} - m_AnimateModel: 0 - m_ModelSelectTransition: - m_ModelDeSelectTransition: - m_PositionAction: - m_UseReference: 1 - m_Action: - m_Name: Position - m_Type: 0 - m_ExpectedControlType: Vector3 - m_Id: db83b55c-ddbb-4078-919c-0b0cbc6afe9b - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 0} - m_RotationAction: - m_UseReference: 1 - m_Action: - m_Name: Rotation - m_Type: 0 - m_ExpectedControlType: Quaternion - m_Id: 934a28ac-b7af-4a72-896e-f98ee8741de7 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 0} - m_IsTrackedAction: - m_UseReference: 1 - m_Action: - m_Name: Is Tracked - m_Type: 1 - m_ExpectedControlType: Button - m_Id: aa4d4d88-f823-41b6-9d48-77b617f86edd - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 1 - m_Reference: {fileID: 0} - m_TrackingStateAction: - m_UseReference: 1 - m_Action: - m_Name: Tracking State - m_Type: 0 - m_ExpectedControlType: Integer - m_Id: 41ec62b5-77e9-433d-839f-2daf5c703355 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 0} - m_SelectAction: - m_UseReference: 1 - m_Action: - m_Name: Select - m_Type: 1 - m_ExpectedControlType: Button - m_Id: 00f93d2a-0364-4d11-90a6-5ef13b9957a8 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -8270564778575511633, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_SelectActionValue: - m_UseReference: 1 - m_Action: - m_Name: Select Action Value - m_Type: 0 - m_ExpectedControlType: Vector2 - m_Id: 27191759-33e4-4f45-a0fd-7623410a9e62 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -8270564778575511633, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_ActivateAction: - m_UseReference: 1 - m_Action: - m_Name: Activate - m_Type: 1 - m_ExpectedControlType: Button - m_Id: f4128915-c017-4646-8498-38077fd94651 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 83097790271614945, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_ActivateActionValue: - m_UseReference: 1 - m_Action: - m_Name: Activate Action Value - m_Type: 0 - m_ExpectedControlType: Axis - m_Id: a7069e58-5c7c-41cc-b6c2-68810e4a9e99 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 7904272356298805229, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_UIPressAction: - m_UseReference: 1 - m_Action: - m_Name: UI Press - m_Type: 1 - m_ExpectedControlType: Button - m_Id: 90782e27-0ef9-4a5a-a0a0-f5b588d6ff72 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 0} - m_UIPressActionValue: - m_UseReference: 1 - m_Action: - m_Name: UI Press Action Value - m_Type: 0 - m_ExpectedControlType: Axis - m_Id: c27db6a8-7713-4ef9-9c9d-18b76c3a4c97 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 0} - m_UIScrollAction: - m_UseReference: 1 - m_Action: - m_Name: UI Scroll - m_Type: 0 - m_ExpectedControlType: Vector2 - m_Id: e7a23052-7dfc-481a-8bff-2dae62df0f5d - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 0} - m_HapticDeviceAction: - m_UseReference: 1 - m_Action: - m_Name: Haptic Device - m_Type: 2 - m_ExpectedControlType: - m_Id: 59ea1b94-e9f8-4049-ab97-5920b11143a5 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -8222252007134549311, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_RotateAnchorAction: - m_UseReference: 1 - m_Action: - m_Name: Rotate Anchor - m_Type: 0 - m_ExpectedControlType: Vector2 - m_Id: 219ef40d-4838-4ec7-8534-38c5e8e5612d - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -5913262927076077117, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_DirectionalAnchorRotationAction: - m_UseReference: 1 - m_Action: - m_Name: Directional Anchor Rotation - m_Type: 0 - m_ExpectedControlType: Vector2 - m_Id: 37b7c356-f2e9-47c7-ba4c-34757c8b8df8 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -440298646266941818, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_TranslateAnchorAction: - m_UseReference: 1 - m_Action: - m_Name: Translate Anchor - m_Type: 0 - m_ExpectedControlType: Vector2 - m_Id: b1006d10-a3ef-4a91-ae37-8d5547fe6331 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 0} - m_ScaleToggleAction: - m_UseReference: 1 - m_Action: - m_Name: Scale Toggle - m_Type: 1 - m_ExpectedControlType: - m_Id: 9a064928-c984-4fe4-a3c8-5ac507a62c67 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 0} - m_ScaleDeltaAction: - m_UseReference: 1 - m_Action: - m_Name: Scale Delta - m_Type: 0 - m_ExpectedControlType: Vector2 - m_Id: 3e88ad80-3f35-49c8-b51b-bd3b2dac1749 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 0} - m_ButtonPressPoint: 0.5 --- !u!1001 &2147063422107175346 PrefabInstance: m_ObjectHideFlags: 0 @@ -2113,30 +1885,22 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} + - target: {fileID: 1838083765625025125, guid: 27024f5809f4a4347b9cd7f26a1bdf93, type: 3} + propertyPath: m_HapticImpulsePlayer + value: + objectReference: {fileID: 5967689310316253315} + - target: {fileID: 2417358720014700305, guid: 27024f5809f4a4347b9cd7f26a1bdf93, type: 3} + propertyPath: m_Handedness + value: 1 + objectReference: {fileID: 0} - target: {fileID: 4125421792874400280, guid: 27024f5809f4a4347b9cd7f26a1bdf93, type: 3} propertyPath: m_Name value: Poke Interactor objectReference: {fileID: 0} - - target: {fileID: 8259524632637961923, guid: 27024f5809f4a4347b9cd7f26a1bdf93, type: 3} - propertyPath: m_LocalPosition.x - value: -0.005 - objectReference: {fileID: 0} - - target: {fileID: 8259524632637961923, guid: 27024f5809f4a4347b9cd7f26a1bdf93, type: 3} - propertyPath: m_LocalRotation.w - value: 0.9952465 - objectReference: {fileID: 0} - - target: {fileID: 8259524632637961923, guid: 27024f5809f4a4347b9cd7f26a1bdf93, type: 3} - propertyPath: m_LocalRotation.x - value: 0.04345342 - objectReference: {fileID: 0} - - target: {fileID: 8259524632637961923, guid: 27024f5809f4a4347b9cd7f26a1bdf93, type: 3} - propertyPath: m_LocalRotation.y - value: 0.08707283 - objectReference: {fileID: 0} - - target: {fileID: 8259524632637961923, guid: 27024f5809f4a4347b9cd7f26a1bdf93, type: 3} - propertyPath: m_LocalRotation.z - value: -0.0038016832 - objectReference: {fileID: 0} + - target: {fileID: 6102213085606525114, guid: 27024f5809f4a4347b9cd7f26a1bdf93, type: 3} + propertyPath: m_CurveInteractionDataProvider + value: + objectReference: {fileID: 8877177980677234388} - target: {fileID: 8259524632637961923, guid: 27024f5809f4a4347b9cd7f26a1bdf93, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 10 @@ -2159,6 +1923,16 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 0924bcaa9eb50df458a783ae0e2b59f5, type: 3} m_Name: m_EditorClassIdentifier: +--- !u!4 &8022141474358935409 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 8259524632637961923, guid: 27024f5809f4a4347b9cd7f26a1bdf93, type: 3} + m_PrefabInstance: {fileID: 2147063422107175346} + m_PrefabAsset: {fileID: 0} +--- !u!137 &9124527054769015467 stripped +SkinnedMeshRenderer: + m_CorrespondingSourceObject: {fileID: 7163876590946616089, guid: 27024f5809f4a4347b9cd7f26a1bdf93, type: 3} + m_PrefabInstance: {fileID: 2147063422107175346} + m_PrefabAsset: {fileID: 0} --- !u!1001 &2761784064811051247 PrefabInstance: m_ObjectHideFlags: 0 @@ -2166,6 +1940,10 @@ PrefabInstance: m_Modification: m_TransformParent: {fileID: 202364688} m_Modifications: + - target: {fileID: 2761784063978902503, guid: c1800acf6366418a9b5f610249000331, type: 3} + propertyPath: m_Handedness + value: 1 + objectReference: {fileID: 0} - target: {fileID: 2761784063978902503, guid: c1800acf6366418a9b5f610249000331, type: 3} propertyPath: m_AttachTransform value: @@ -2174,6 +1952,38 @@ PrefabInstance: propertyPath: m_RayOriginTransform value: objectReference: {fileID: 716906830792148215} + - target: {fileID: 2761784063978902503, guid: c1800acf6366418a9b5f610249000331, type: 3} + propertyPath: m_SelectInput.m_InputActionReferenceValue + value: + objectReference: {fileID: 1263111715868034790, guid: c348712bda248c246b8c49b3db54643f, type: 3} + - target: {fileID: 2761784063978902503, guid: c1800acf6366418a9b5f610249000331, type: 3} + propertyPath: m_RotateAnchorInput.m_InputActionReference + value: + objectReference: {fileID: -7363382999065477798, guid: c348712bda248c246b8c49b3db54643f, type: 3} + - target: {fileID: 2761784063978902503, guid: c1800acf6366418a9b5f610249000331, type: 3} + propertyPath: m_ActivateInput.m_InputActionReferenceValue + value: + objectReference: {fileID: -4289430672226363583, guid: c348712bda248c246b8c49b3db54643f, type: 3} + - target: {fileID: 2761784063978902503, guid: c1800acf6366418a9b5f610249000331, type: 3} + propertyPath: m_SelectInput.m_InputActionReferencePerformed + value: + objectReference: {fileID: 1263111715868034790, guid: c348712bda248c246b8c49b3db54643f, type: 3} + - target: {fileID: 2761784063978902503, guid: c1800acf6366418a9b5f610249000331, type: 3} + propertyPath: m_ActivateInput.m_InputActionReferencePerformed + value: + objectReference: {fileID: -5982496924579745919, guid: c348712bda248c246b8c49b3db54643f, type: 3} + - target: {fileID: 2761784063978902503, guid: c1800acf6366418a9b5f610249000331, type: 3} + propertyPath: m_DirectionalAnchorInput.m_InputActionReference + value: + objectReference: {fileID: -8811388872089202044, guid: c348712bda248c246b8c49b3db54643f, type: 3} + - target: {fileID: 2761784063978902503, guid: c1800acf6366418a9b5f610249000331, type: 3} + propertyPath: m_RotateManipulationInput.m_InputActionReference + value: + objectReference: {fileID: -7363382999065477798, guid: c348712bda248c246b8c49b3db54643f, type: 3} + - target: {fileID: 2761784063978902503, guid: c1800acf6366418a9b5f610249000331, type: 3} + propertyPath: m_DirectionalManipulationInput.m_InputActionReference + value: + objectReference: {fileID: -8811388872089202044, guid: c348712bda248c246b8c49b3db54643f, type: 3} - target: {fileID: 2761784063978902504, guid: c1800acf6366418a9b5f610249000331, type: 3} propertyPath: m_Parameters.numCapVertices value: 4 @@ -2189,10 +1999,10 @@ PrefabInstance: - target: {fileID: 2761784063978902505, guid: c1800acf6366418a9b5f610249000331, type: 3} propertyPath: m_LineOriginTransform value: - objectReference: {fileID: 202364688} + objectReference: {fileID: 8022141474358935409} - target: {fileID: 2761784063978902506, guid: c1800acf6366418a9b5f610249000331, type: 3} propertyPath: m_RootOrder - value: 3 + value: 2 objectReference: {fileID: 0} - target: {fileID: 2761784063978902506, guid: c1800acf6366418a9b5f610249000331, type: 3} propertyPath: m_LocalPosition.x @@ -2242,239 +2052,12 @@ PrefabInstance: propertyPath: m_IsActive value: 0 objectReference: {fileID: 0} + - target: {fileID: 3616344554909481683, guid: c1800acf6366418a9b5f610249000331, type: 3} + propertyPath: m_HapticImpulsePlayer + value: + objectReference: {fileID: 5967689310316253315} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: c1800acf6366418a9b5f610249000331, type: 3} ---- !u!1 &1319746308 stripped -GameObject: - m_CorrespondingSourceObject: {fileID: 2761784063978902507, guid: c1800acf6366418a9b5f610249000331, type: 3} - m_PrefabInstance: {fileID: 2761784064811051247} - m_PrefabAsset: {fileID: 0} ---- !u!114 &3114443105980813935 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1319746308} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: caff514de9b15ad48ab85dcff5508221, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UpdateTrackingType: 0 - m_EnableInputTracking: 0 - m_EnableInputActions: 1 - m_ModelPrefab: {fileID: 0} - m_ModelParent: {fileID: 0} - m_Model: {fileID: 0} - m_AnimateModel: 0 - m_ModelSelectTransition: - m_ModelDeSelectTransition: - m_PositionAction: - m_UseReference: 1 - m_Action: - m_Name: Position - m_Type: 0 - m_ExpectedControlType: Vector3 - m_Id: 8b170a9b-132e-486d-947e-6a244d4362ea - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 0} - m_RotationAction: - m_UseReference: 1 - m_Action: - m_Name: Rotation - m_Type: 0 - m_ExpectedControlType: Quaternion - m_Id: 080819c2-8547-4beb-8522-e6356be16fb1 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 0} - m_IsTrackedAction: - m_UseReference: 1 - m_Action: - m_Name: Is Tracked - m_Type: 1 - m_ExpectedControlType: Button - m_Id: 3975349d-0575-4146-938e-7c8de713073b - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 1 - m_Reference: {fileID: 0} - m_TrackingStateAction: - m_UseReference: 1 - m_Action: - m_Name: Tracking State - m_Type: 0 - m_ExpectedControlType: Integer - m_Id: 8db27cb3-9369-4e6a-9c66-17df490c89af - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 0} - m_SelectAction: - m_UseReference: 1 - m_Action: - m_Name: Select - m_Type: 1 - m_ExpectedControlType: Button - m_Id: 8e000d1c-13a4-4cc0-ad37-f2e125874399 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -4084014799535200556, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_SelectActionValue: - m_UseReference: 1 - m_Action: - m_Name: Select Action Value - m_Type: 0 - m_ExpectedControlType: Vector2 - m_Id: 07d9e458-3e59-4acb-8a8f-2325c5fb0904 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -4084014799535200556, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_ActivateAction: - m_UseReference: 1 - m_Action: - m_Name: Activate - m_Type: 1 - m_ExpectedControlType: Button - m_Id: 3995f9f4-6aa7-409a-80d2-5f7ea1464fde - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -5982496924579745919, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_ActivateActionValue: - m_UseReference: 1 - m_Action: - m_Name: Activate Action Value - m_Type: 0 - m_ExpectedControlType: Axis - m_Id: b99c6f8c-3762-478a-b2d6-882b9175d1bb - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -4289430672226363583, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_UIPressAction: - m_UseReference: 1 - m_Action: - m_Name: UI Press - m_Type: 1 - m_ExpectedControlType: Button - m_Id: db89d01c-df6f-4954-b868-103dd5bdb514 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 0} - m_UIPressActionValue: - m_UseReference: 1 - m_Action: - m_Name: UI Press Action Value - m_Type: 0 - m_ExpectedControlType: Axis - m_Id: 15e220ae-aa18-4d3d-a3d7-0c505dc649c8 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 0} - m_UIScrollAction: - m_UseReference: 1 - m_Action: - m_Name: UI Scroll - m_Type: 0 - m_ExpectedControlType: Vector2 - m_Id: c2cad5a5-b96a-4161-ac52-0781e2861c1e - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 0} - m_HapticDeviceAction: - m_UseReference: 1 - m_Action: - m_Name: Haptic Device - m_Type: 2 - m_ExpectedControlType: - m_Id: 3e09b626-c80d-40ec-9592-eb3fe89c2038 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -8785819595477538065, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_RotateAnchorAction: - m_UseReference: 1 - m_Action: - m_Name: Rotate Anchor - m_Type: 0 - m_ExpectedControlType: Vector2 - m_Id: 3dca8766-e652-4e78-8406-420aa73ba338 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -7363382999065477798, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_DirectionalAnchorRotationAction: - m_UseReference: 1 - m_Action: - m_Name: Directional Anchor Rotation - m_Type: 0 - m_ExpectedControlType: Vector2 - m_Id: 6c0b9ec3-aa4f-4e6a-85ea-7db994c51246 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: -8811388872089202044, guid: c348712bda248c246b8c49b3db54643f, type: 3} - m_TranslateAnchorAction: - m_UseReference: 1 - m_Action: - m_Name: Translate Anchor - m_Type: 0 - m_ExpectedControlType: Vector2 - m_Id: e873605e-6a95-4389-8fbe-39069340ba92 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 0} - m_ScaleToggleAction: - m_UseReference: 1 - m_Action: - m_Name: Scale Toggle - m_Type: 1 - m_ExpectedControlType: - m_Id: 8ade6c1d-9712-4906-b8c1-b614dad5da11 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 0} - m_ScaleDeltaAction: - m_UseReference: 1 - m_Action: - m_Name: Scale Delta - m_Type: 0 - m_ExpectedControlType: Vector2 - m_Id: 6317d004-7d4a-4ee3-b309-c53cf4879474 - m_Processors: - m_Interactions: - m_SingletonActionBindings: [] - m_Flags: 0 - m_Reference: {fileID: 0} - m_ButtonPressPoint: 0.5 --- !u!4 &1319746309 stripped Transform: m_CorrespondingSourceObject: {fileID: 2761784063978902506, guid: c1800acf6366418a9b5f610249000331, type: 3} @@ -2485,85 +2068,12 @@ MonoBehaviour: m_CorrespondingSourceObject: {fileID: 2761784063978902503, guid: c1800acf6366418a9b5f610249000331, type: 3} m_PrefabInstance: {fileID: 2761784064811051247} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1319746308} + m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 6803edce0201f574f923fd9d10e5b30a, type: 3} m_Name: m_EditorClassIdentifier: ---- !u!1001 &2950107899174535523 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 202364688} - m_Modifications: - - target: {fileID: 6189354538098044173, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} - propertyPath: m_RootOrder - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 6189354538098044173, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 6189354538098044173, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 6189354538098044173, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 6189354538098044173, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 6189354538098044173, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 6189354538098044173, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 6189354538098044173, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 6189354538098044173, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 6189354538098044173, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 6189354538098044173, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8841706926471734270, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} - propertyPath: m_Name - value: Direct Interactor - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} ---- !u!114 &2434299456458490401 stripped -MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 664489801923019586, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} - m_PrefabInstance: {fileID: 2950107899174535523} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4253f32900bcc4d499d675566142ded0, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!4 &9013359448673381486 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 6189354538098044173, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} - m_PrefabInstance: {fileID: 2950107899174535523} - m_PrefabAsset: {fileID: 0} --- !u!1001 &4338235989863673259 PrefabInstance: m_ObjectHideFlags: 0 @@ -2615,30 +2125,18 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} + - target: {fileID: 1838083765625025125, guid: 27024f5809f4a4347b9cd7f26a1bdf93, type: 3} + propertyPath: m_HapticImpulsePlayer + value: + objectReference: {fileID: 4238984354899526239} + - target: {fileID: 2417358720014700305, guid: 27024f5809f4a4347b9cd7f26a1bdf93, type: 3} + propertyPath: m_Handedness + value: 2 + objectReference: {fileID: 0} - target: {fileID: 4125421792874400280, guid: 27024f5809f4a4347b9cd7f26a1bdf93, type: 3} propertyPath: m_Name value: Poke Interactor objectReference: {fileID: 0} - - target: {fileID: 8259524632637961923, guid: 27024f5809f4a4347b9cd7f26a1bdf93, type: 3} - propertyPath: m_LocalPosition.x - value: 0.005 - objectReference: {fileID: 0} - - target: {fileID: 8259524632637961923, guid: 27024f5809f4a4347b9cd7f26a1bdf93, type: 3} - propertyPath: m_LocalRotation.w - value: 0.9952465 - objectReference: {fileID: 0} - - target: {fileID: 8259524632637961923, guid: 27024f5809f4a4347b9cd7f26a1bdf93, type: 3} - propertyPath: m_LocalRotation.x - value: 0.04345342 - objectReference: {fileID: 0} - - target: {fileID: 8259524632637961923, guid: 27024f5809f4a4347b9cd7f26a1bdf93, type: 3} - propertyPath: m_LocalRotation.y - value: -0.08707283 - objectReference: {fileID: 0} - - target: {fileID: 8259524632637961923, guid: 27024f5809f4a4347b9cd7f26a1bdf93, type: 3} - propertyPath: m_LocalRotation.z - value: 0.0038016832 - objectReference: {fileID: 0} - target: {fileID: 8259524632637961923, guid: 27024f5809f4a4347b9cd7f26a1bdf93, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: -10 @@ -2661,248 +2159,369 @@ Transform: m_CorrespondingSourceObject: {fileID: 780270278251679399, guid: 27024f5809f4a4347b9cd7f26a1bdf93, type: 3} m_PrefabInstance: {fileID: 4338235989863673259} m_PrefabAsset: {fileID: 0} ---- !u!1001 &6547495889434062998 +--- !u!4 &5668689709192895336 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 8259524632637961923, guid: 27024f5809f4a4347b9cd7f26a1bdf93, type: 3} + m_PrefabInstance: {fileID: 4338235989863673259} + m_PrefabAsset: {fileID: 0} +--- !u!137 &6872406618466660018 stripped +SkinnedMeshRenderer: + m_CorrespondingSourceObject: {fileID: 7163876590946616089, guid: 27024f5809f4a4347b9cd7f26a1bdf93, type: 3} + m_PrefabInstance: {fileID: 4338235989863673259} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &6385564673524208770 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: m_TransformParent: {fileID: 1670256625} m_Modifications: - - target: {fileID: 6189354538098044173, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} + - target: {fileID: 2447424620550846319, guid: b200f6587d118224eba8467281481800, type: 3} + propertyPath: m_Name + value: Near-Far Interactor + objectReference: {fileID: 0} + - target: {fileID: 3234853630605623997, guid: b200f6587d118224eba8467281481800, type: 3} propertyPath: m_RootOrder value: 1 objectReference: {fileID: 0} - - target: {fileID: 6189354538098044173, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} + - target: {fileID: 3234853630605623997, guid: b200f6587d118224eba8467281481800, type: 3} propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 6189354538098044173, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} + - target: {fileID: 3234853630605623997, guid: b200f6587d118224eba8467281481800, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 6189354538098044173, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} + - target: {fileID: 3234853630605623997, guid: b200f6587d118224eba8467281481800, type: 3} propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 6189354538098044173, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} + - target: {fileID: 3234853630605623997, guid: b200f6587d118224eba8467281481800, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 6189354538098044173, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} + - target: {fileID: 3234853630605623997, guid: b200f6587d118224eba8467281481800, type: 3} propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 6189354538098044173, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} + - target: {fileID: 3234853630605623997, guid: b200f6587d118224eba8467281481800, type: 3} propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 6189354538098044173, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} + - target: {fileID: 3234853630605623997, guid: b200f6587d118224eba8467281481800, type: 3} propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 6189354538098044173, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} + - target: {fileID: 3234853630605623997, guid: b200f6587d118224eba8467281481800, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 6189354538098044173, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} + - target: {fileID: 3234853630605623997, guid: b200f6587d118224eba8467281481800, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 6189354538098044173, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} + - target: {fileID: 3234853630605623997, guid: b200f6587d118224eba8467281481800, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 8841706926471734270, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} - propertyPath: m_Name - value: Direct Interactor - objectReference: {fileID: 0} m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} ---- !u!4 &1096734238491090331 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 6189354538098044173, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} - m_PrefabInstance: {fileID: 6547495889434062998} - m_PrefabAsset: {fileID: 0} ---- !u!114 &6045481230268494804 stripped + m_SourcePrefab: {fileID: 100100000, guid: b200f6587d118224eba8467281481800, type: 3} +--- !u!114 &1883230248363655243 stripped MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 664489801923019586, guid: 2fd3e07afe5b461490fb8e314976b1b0, type: 3} - m_PrefabInstance: {fileID: 6547495889434062998} + m_CorrespondingSourceObject: {fileID: 4808866746549998793, guid: b200f6587d118224eba8467281481800, type: 3} + m_PrefabInstance: {fileID: 6385564673524208770} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4253f32900bcc4d499d675566142ded0, type: 3} + m_Script: {fileID: 11500000, guid: 25a07ef133a37d140a87cdf1f1c75fdf, type: 3} m_Name: m_EditorClassIdentifier: ---- !u!1001 &7234066737556534056 +--- !u!4 &8393186890254128703 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 3234853630605623997, guid: b200f6587d118224eba8467281481800, type: 3} + m_PrefabInstance: {fileID: 6385564673524208770} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &6545633283681792108 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: m_TransformParent: {fileID: 202364688} m_Modifications: - - target: {fileID: 1787346994484839025, guid: ad818c36731146e994540a1896ad8f24, type: 3} + - target: {fileID: 4804964734930210078, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} propertyPath: m_Name - value: Ray Interactor + value: Near-Far Interactor objectReference: {fileID: 0} - - target: {fileID: 4924506573850889901, guid: ad818c36731146e994540a1896ad8f24, type: 3} - propertyPath: m_LineOriginTransform - value: - objectReference: {fileID: 202364688} - - target: {fileID: 5888765399538998960, guid: ad818c36731146e994540a1896ad8f24, type: 3} + - target: {fileID: 5745700813747042508, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} propertyPath: m_RootOrder - value: 2 + value: 1 objectReference: {fileID: 0} - - target: {fileID: 5888765399538998960, guid: ad818c36731146e994540a1896ad8f24, type: 3} + - target: {fileID: 5745700813747042508, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 5888765399538998960, guid: ad818c36731146e994540a1896ad8f24, type: 3} + - target: {fileID: 5745700813747042508, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} propertyPath: m_LocalPosition.y - value: -0.02 + value: 0 objectReference: {fileID: 0} - - target: {fileID: 5888765399538998960, guid: ad818c36731146e994540a1896ad8f24, type: 3} + - target: {fileID: 5745700813747042508, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} propertyPath: m_LocalPosition.z - value: -0.035 + value: 0 objectReference: {fileID: 0} - - target: {fileID: 5888765399538998960, guid: ad818c36731146e994540a1896ad8f24, type: 3} + - target: {fileID: 5745700813747042508, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 5888765399538998960, guid: ad818c36731146e994540a1896ad8f24, type: 3} + - target: {fileID: 5745700813747042508, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} propertyPath: m_LocalRotation.x - value: -0 + value: 0 objectReference: {fileID: 0} - - target: {fileID: 5888765399538998960, guid: ad818c36731146e994540a1896ad8f24, type: 3} + - target: {fileID: 5745700813747042508, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} propertyPath: m_LocalRotation.y - value: -0 + value: 0 objectReference: {fileID: 0} - - target: {fileID: 5888765399538998960, guid: ad818c36731146e994540a1896ad8f24, type: 3} + - target: {fileID: 5745700813747042508, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} propertyPath: m_LocalRotation.z - value: -0 + value: 0 objectReference: {fileID: 0} - - target: {fileID: 5888765399538998960, guid: ad818c36731146e994540a1896ad8f24, type: 3} + - target: {fileID: 5745700813747042508, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 5888765399538998960, guid: ad818c36731146e994540a1896ad8f24, type: 3} + - target: {fileID: 5745700813747042508, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 5888765399538998960, guid: ad818c36731146e994540a1896ad8f24, type: 3} + - target: {fileID: 5745700813747042508, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 7462879561657043759, guid: ad818c36731146e994540a1896ad8f24, type: 3} - propertyPath: m_AttachTransform - value: - objectReference: {fileID: 5556032914392612086} - - target: {fileID: 7462879561657043759, guid: ad818c36731146e994540a1896ad8f24, type: 3} - propertyPath: m_RayOriginTransform - value: - objectReference: {fileID: 716906830792148215} m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: ad818c36731146e994540a1896ad8f24, type: 3} ---- !u!114 &285389467476424711 stripped + m_SourcePrefab: {fileID: 100100000, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} +--- !u!4 &1543070802843469984 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 5745700813747042508, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} + m_PrefabInstance: {fileID: 6545633283681792108} + m_PrefabAsset: {fileID: 0} +--- !u!114 &8877177980677234388 stripped MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 7462879561657043759, guid: ad818c36731146e994540a1896ad8f24, type: 3} - m_PrefabInstance: {fileID: 7234066737556534056} + m_CorrespondingSourceObject: {fileID: 2442306273320644280, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} + m_PrefabInstance: {fileID: 6545633283681792108} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 6803edce0201f574f923fd9d10e5b30a, type: 3} + m_Script: {fileID: 11500000, guid: 25a07ef133a37d140a87cdf1f1c75fdf, type: 3} m_Name: m_EditorClassIdentifier: ---- !u!4 &3881409846907809176 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 5888765399538998960, guid: ad818c36731146e994540a1896ad8f24, type: 3} - m_PrefabInstance: {fileID: 7234066737556534056} - m_PrefabAsset: {fileID: 0} ---- !u!1001 &7481255429629652899 +--- !u!1001 &6764233457049000944 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1666320186578454293} + m_Modifications: + - target: {fileID: 863512645795027999, guid: bb91fcbcb3cc896468b372b1c762bfab, type: 3} + propertyPath: m_Renderer + value: + objectReference: {fileID: 9124527054769015467} + - target: {fileID: 5964744442239762404, guid: bb91fcbcb3cc896468b372b1c762bfab, type: 3} + propertyPath: m_InteractorSource + value: + objectReference: {fileID: 8877177980677234388} + - target: {fileID: 6212858538863823644, guid: bb91fcbcb3cc896468b372b1c762bfab, type: 3} + propertyPath: m_Renderer + value: + objectReference: {fileID: 9124527054769015467} + - target: {fileID: 6707959385038857591, guid: bb91fcbcb3cc896468b372b1c762bfab, type: 3} + propertyPath: m_InteractorSource + value: + objectReference: {fileID: 4343660526480754339} + - target: {fileID: 7734889806894075718, guid: bb91fcbcb3cc896468b372b1c762bfab, type: 3} + propertyPath: m_Name + value: Poke Point Affordances + objectReference: {fileID: 0} + - target: {fileID: 8849414207674852688, guid: bb91fcbcb3cc896468b372b1c762bfab, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8849414207674852688, guid: bb91fcbcb3cc896468b372b1c762bfab, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8849414207674852688, guid: bb91fcbcb3cc896468b372b1c762bfab, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8849414207674852688, guid: bb91fcbcb3cc896468b372b1c762bfab, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8849414207674852688, guid: bb91fcbcb3cc896468b372b1c762bfab, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8849414207674852688, guid: bb91fcbcb3cc896468b372b1c762bfab, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8849414207674852688, guid: bb91fcbcb3cc896468b372b1c762bfab, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8849414207674852688, guid: bb91fcbcb3cc896468b372b1c762bfab, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8849414207674852688, guid: bb91fcbcb3cc896468b372b1c762bfab, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8849414207674852688, guid: bb91fcbcb3cc896468b372b1c762bfab, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8849414207674852688, guid: bb91fcbcb3cc896468b372b1c762bfab, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: bb91fcbcb3cc896468b372b1c762bfab, type: 3} +--- !u!1001 &7400760887118150798 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 3954319948395782924} + m_Modifications: + - target: {fileID: 863512645795027999, guid: bb91fcbcb3cc896468b372b1c762bfab, type: 3} + propertyPath: m_Renderer + value: + objectReference: {fileID: 6872406618466660018} + - target: {fileID: 5964744442239762404, guid: bb91fcbcb3cc896468b372b1c762bfab, type: 3} + propertyPath: m_InteractorSource + value: + objectReference: {fileID: 1883230248363655243} + - target: {fileID: 6212858538863823644, guid: bb91fcbcb3cc896468b372b1c762bfab, type: 3} + propertyPath: m_Renderer + value: + objectReference: {fileID: 6872406618466660018} + - target: {fileID: 6707959385038857591, guid: bb91fcbcb3cc896468b372b1c762bfab, type: 3} + propertyPath: m_InteractorSource + value: + objectReference: {fileID: 2141651114331267770} + - target: {fileID: 7734889806894075718, guid: bb91fcbcb3cc896468b372b1c762bfab, type: 3} + propertyPath: m_Name + value: Poke Point Affordances + objectReference: {fileID: 0} + - target: {fileID: 8849414207674852688, guid: bb91fcbcb3cc896468b372b1c762bfab, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8849414207674852688, guid: bb91fcbcb3cc896468b372b1c762bfab, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8849414207674852688, guid: bb91fcbcb3cc896468b372b1c762bfab, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8849414207674852688, guid: bb91fcbcb3cc896468b372b1c762bfab, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8849414207674852688, guid: bb91fcbcb3cc896468b372b1c762bfab, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8849414207674852688, guid: bb91fcbcb3cc896468b372b1c762bfab, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8849414207674852688, guid: bb91fcbcb3cc896468b372b1c762bfab, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8849414207674852688, guid: bb91fcbcb3cc896468b372b1c762bfab, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8849414207674852688, guid: bb91fcbcb3cc896468b372b1c762bfab, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8849414207674852688, guid: bb91fcbcb3cc896468b372b1c762bfab, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8849414207674852688, guid: bb91fcbcb3cc896468b372b1c762bfab, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: bb91fcbcb3cc896468b372b1c762bfab, type: 3} +--- !u!1001 &7684238452101615925 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: m_TransformParent: {fileID: 1670256625} m_Modifications: - - target: {fileID: 1787346994484839025, guid: ad818c36731146e994540a1896ad8f24, type: 3} - propertyPath: m_Name - value: Ray Interactor - objectReference: {fileID: 0} - - target: {fileID: 4924506573850889901, guid: ad818c36731146e994540a1896ad8f24, type: 3} - propertyPath: m_LineOriginTransform - value: - objectReference: {fileID: 1670256625} - - target: {fileID: 5888765399538998960, guid: ad818c36731146e994540a1896ad8f24, type: 3} + - target: {fileID: 3475118261464492563, guid: 9f3369e30fbd31f4bb596b1a99babe83, type: 3} propertyPath: m_RootOrder - value: 2 + value: 3 objectReference: {fileID: 0} - - target: {fileID: 5888765399538998960, guid: ad818c36731146e994540a1896ad8f24, type: 3} + - target: {fileID: 3475118261464492563, guid: 9f3369e30fbd31f4bb596b1a99babe83, type: 3} propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 5888765399538998960, guid: ad818c36731146e994540a1896ad8f24, type: 3} + - target: {fileID: 3475118261464492563, guid: 9f3369e30fbd31f4bb596b1a99babe83, type: 3} propertyPath: m_LocalPosition.y - value: -0.02 + value: 0 objectReference: {fileID: 0} - - target: {fileID: 5888765399538998960, guid: ad818c36731146e994540a1896ad8f24, type: 3} + - target: {fileID: 3475118261464492563, guid: 9f3369e30fbd31f4bb596b1a99babe83, type: 3} propertyPath: m_LocalPosition.z - value: -0.035 + value: -0.05 objectReference: {fileID: 0} - - target: {fileID: 5888765399538998960, guid: ad818c36731146e994540a1896ad8f24, type: 3} + - target: {fileID: 3475118261464492563, guid: 9f3369e30fbd31f4bb596b1a99babe83, type: 3} propertyPath: m_LocalRotation.w + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3475118261464492563, guid: 9f3369e30fbd31f4bb596b1a99babe83, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3475118261464492563, guid: 9f3369e30fbd31f4bb596b1a99babe83, type: 3} + propertyPath: m_LocalRotation.y value: 1 objectReference: {fileID: 0} - - target: {fileID: 5888765399538998960, guid: ad818c36731146e994540a1896ad8f24, type: 3} - propertyPath: m_LocalRotation.x - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 5888765399538998960, guid: ad818c36731146e994540a1896ad8f24, type: 3} - propertyPath: m_LocalRotation.y - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 5888765399538998960, guid: ad818c36731146e994540a1896ad8f24, type: 3} + - target: {fileID: 3475118261464492563, guid: 9f3369e30fbd31f4bb596b1a99babe83, type: 3} propertyPath: m_LocalRotation.z - value: -0 + value: 0 objectReference: {fileID: 0} - - target: {fileID: 5888765399538998960, guid: ad818c36731146e994540a1896ad8f24, type: 3} + - target: {fileID: 3475118261464492563, guid: 9f3369e30fbd31f4bb596b1a99babe83, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 5888765399538998960, guid: ad818c36731146e994540a1896ad8f24, type: 3} + - target: {fileID: 3475118261464492563, guid: 9f3369e30fbd31f4bb596b1a99babe83, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 5888765399538998960, guid: ad818c36731146e994540a1896ad8f24, type: 3} + - target: {fileID: 3475118261464492563, guid: 9f3369e30fbd31f4bb596b1a99babe83, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 7462879561657043759, guid: ad818c36731146e994540a1896ad8f24, type: 3} - propertyPath: m_AttachTransform - value: - objectReference: {fileID: 150171005766949883} - - target: {fileID: 7462879561657043759, guid: ad818c36731146e994540a1896ad8f24, type: 3} - propertyPath: m_RayOriginTransform - value: - objectReference: {fileID: 8718302446126152263} + - target: {fileID: 4283425761326543017, guid: 9f3369e30fbd31f4bb596b1a99babe83, type: 3} + propertyPath: m_Name + value: Right Controller Visual + objectReference: {fileID: 0} m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: ad818c36731146e994540a1896ad8f24, type: 3} ---- !u!114 &19064736505062540 stripped -MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 7462879561657043759, guid: ad818c36731146e994540a1896ad8f24, type: 3} - m_PrefabInstance: {fileID: 7481255429629652899} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 6803edce0201f574f923fd9d10e5b30a, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!4 &3921468432820449555 stripped + m_SourcePrefab: {fileID: 100100000, guid: 9f3369e30fbd31f4bb596b1a99babe83, type: 3} +--- !u!4 &6528530117482412838 stripped Transform: - m_CorrespondingSourceObject: {fileID: 5888765399538998960, guid: ad818c36731146e994540a1896ad8f24, type: 3} - m_PrefabInstance: {fileID: 7481255429629652899} + m_CorrespondingSourceObject: {fileID: 3475118261464492563, guid: 9f3369e30fbd31f4bb596b1a99babe83, type: 3} + m_PrefabInstance: {fileID: 7684238452101615925} m_PrefabAsset: {fileID: 0} --- !u!1001 &8654467957078447927 PrefabInstance: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/XR Origin (XR Rig).prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/XR Origin (XR Rig).prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Prefabs/XR Origin (XR Rig).prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Prefabs/XR Origin (XR Rig).prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Continuous Move.preset b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default Continuous Move.preset similarity index 54% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Continuous Move.preset rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default Continuous Move.preset index f8822a86..a2f723f3 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Continuous Move.preset +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default Continuous Move.preset @@ -9,7 +9,7 @@ Preset: m_Name: XRI Default Continuous Move m_TargetType: m_NativeTypeID: 114 - m_ManagedTypePPtr: {fileID: 11500000, guid: 0bf296fc962d7184ab14ad1841598d5f, type: 3} + m_ManagedTypePPtr: {fileID: 11500000, guid: 626a4d6723d6ad24b9aebb811ad5a3dd, type: 3} m_ManagedTypeFallback: m_Properties: - target: {fileID: 0} @@ -25,12 +25,16 @@ Preset: value: objectReference: {fileID: 0} - target: {fileID: 0} - propertyPath: m_System + propertyPath: m_Mediator value: objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TransformationPriority + value: 0 + objectReference: {fileID: 0} - target: {fileID: 0} propertyPath: m_MoveSpeed - value: 1 + value: 2.5 objectReference: {fileID: 0} - target: {fileID: 0} propertyPath: m_EnableStrafe @@ -44,92 +48,112 @@ Preset: propertyPath: m_UseGravity value: 1 objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_GravityApplicationMode - value: 0 - objectReference: {fileID: 0} - target: {fileID: 0} propertyPath: m_ForwardSource value: objectReference: {fileID: 0} - target: {fileID: 0} - propertyPath: m_LeftHandMoveAction.m_UseReference - value: 1 + propertyPath: m_LeftHandMoveInput.m_InputSourceMode + value: 2 objectReference: {fileID: 0} - target: {fileID: 0} - propertyPath: m_LeftHandMoveAction.m_Action.m_Name + propertyPath: m_LeftHandMoveInput.m_InputAction.m_Name value: Left Hand Move objectReference: {fileID: 0} - target: {fileID: 0} - propertyPath: m_LeftHandMoveAction.m_Action.m_Type + propertyPath: m_LeftHandMoveInput.m_InputAction.m_Type value: 0 objectReference: {fileID: 0} - target: {fileID: 0} - propertyPath: m_LeftHandMoveAction.m_Action.m_ExpectedControlType + propertyPath: m_LeftHandMoveInput.m_InputAction.m_ExpectedControlType value: Vector2 objectReference: {fileID: 0} - target: {fileID: 0} - propertyPath: m_LeftHandMoveAction.m_Action.m_Id - value: 75f1b245-c357-48c8-9acb-8967bec9dda2 + propertyPath: m_LeftHandMoveInput.m_InputAction.m_Id + value: 2c9225f2-be1b-4f69-8acc-007d58b10449 objectReference: {fileID: 0} - target: {fileID: 0} - propertyPath: m_LeftHandMoveAction.m_Action.m_Processors + propertyPath: m_LeftHandMoveInput.m_InputAction.m_Processors value: objectReference: {fileID: 0} - target: {fileID: 0} - propertyPath: m_LeftHandMoveAction.m_Action.m_Interactions + propertyPath: m_LeftHandMoveInput.m_InputAction.m_Interactions value: objectReference: {fileID: 0} - target: {fileID: 0} - propertyPath: m_LeftHandMoveAction.m_Action.m_SingletonActionBindings.Array.size + propertyPath: m_LeftHandMoveInput.m_InputAction.m_SingletonActionBindings.Array.size value: 0 objectReference: {fileID: 0} - target: {fileID: 0} - propertyPath: m_LeftHandMoveAction.m_Action.m_Flags + propertyPath: m_LeftHandMoveInput.m_InputAction.m_Flags value: 0 objectReference: {fileID: 0} - target: {fileID: 0} - propertyPath: m_LeftHandMoveAction.m_Reference + propertyPath: m_LeftHandMoveInput.m_InputActionReference value: objectReference: {fileID: 6972639530819350904, guid: c348712bda248c246b8c49b3db54643f, type: 3} - target: {fileID: 0} - propertyPath: m_RightHandMoveAction.m_UseReference - value: 1 + propertyPath: m_LeftHandMoveInput.m_ObjectReferenceObject + value: objectReference: {fileID: 0} - target: {fileID: 0} - propertyPath: m_RightHandMoveAction.m_Action.m_Name + propertyPath: m_LeftHandMoveInput.m_ManualValue.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandMoveInput.m_ManualValue.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandMoveInput.m_InputSourceMode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandMoveInput.m_InputAction.m_Name value: Right Hand Move objectReference: {fileID: 0} - target: {fileID: 0} - propertyPath: m_RightHandMoveAction.m_Action.m_Type + propertyPath: m_RightHandMoveInput.m_InputAction.m_Type value: 0 objectReference: {fileID: 0} - target: {fileID: 0} - propertyPath: m_RightHandMoveAction.m_Action.m_ExpectedControlType + propertyPath: m_RightHandMoveInput.m_InputAction.m_ExpectedControlType value: Vector2 objectReference: {fileID: 0} - target: {fileID: 0} - propertyPath: m_RightHandMoveAction.m_Action.m_Id - value: 6bf6c732-e011-46b1-acc5-b649a4ec5f10 + propertyPath: m_RightHandMoveInput.m_InputAction.m_Id + value: 4e18714b-a6d2-4e88-b89e-4d9aa436967b objectReference: {fileID: 0} - target: {fileID: 0} - propertyPath: m_RightHandMoveAction.m_Action.m_Processors + propertyPath: m_RightHandMoveInput.m_InputAction.m_Processors value: objectReference: {fileID: 0} - target: {fileID: 0} - propertyPath: m_RightHandMoveAction.m_Action.m_Interactions + propertyPath: m_RightHandMoveInput.m_InputAction.m_Interactions value: objectReference: {fileID: 0} - target: {fileID: 0} - propertyPath: m_RightHandMoveAction.m_Action.m_SingletonActionBindings.Array.size + propertyPath: m_RightHandMoveInput.m_InputAction.m_SingletonActionBindings.Array.size value: 0 objectReference: {fileID: 0} - target: {fileID: 0} - propertyPath: m_RightHandMoveAction.m_Action.m_Flags + propertyPath: m_RightHandMoveInput.m_InputAction.m_Flags value: 0 objectReference: {fileID: 0} - target: {fileID: 0} - propertyPath: m_RightHandMoveAction.m_Reference + propertyPath: m_RightHandMoveInput.m_InputActionReference value: objectReference: {fileID: -8198699208435500284, guid: c348712bda248c246b8c49b3db54643f, type: 3} + - target: {fileID: 0} + propertyPath: m_RightHandMoveInput.m_ObjectReferenceObject + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandMoveInput.m_ManualValue.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandMoveInput.m_ManualValue.y + value: 0 + objectReference: {fileID: 0} m_ExcludedProperties: [] diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Gaze Controller.preset.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default Continuous Move.preset.meta similarity index 80% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Gaze Controller.preset.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default Continuous Move.preset.meta index 08909ebb..ae0a2a5f 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Gaze Controller.preset.meta +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default Continuous Move.preset.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 2e6e6d902741c934ba75a28389d4f66e +guid: 27c5945ad36f6f147bc402250679a228 NativeFormatImporter: externalObjects: {} mainObjectFileID: 2655988077585873504 diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default Continuous Turn.preset b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default Continuous Turn.preset new file mode 100644 index 00000000..a6126ced --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default Continuous Turn.preset @@ -0,0 +1,143 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!181963792 &2655988077585873504 +Preset: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: XRI Default Continuous Turn + m_TargetType: + m_NativeTypeID: 114 + m_ManagedTypePPtr: {fileID: 11500000, guid: 75b29b6c6428c984a8a73ffc2d58063b, type: 3} + m_ManagedTypeFallback: + m_Properties: + - target: {fileID: 0} + propertyPath: m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_EditorHideFlags + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_EditorClassIdentifier + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_Mediator + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TransformationPriority + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TurnSpeed + value: 60 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandTurnInput.m_InputSourceMode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandTurnInput.m_InputAction.m_Name + value: Left Hand Turn + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandTurnInput.m_InputAction.m_Type + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandTurnInput.m_InputAction.m_ExpectedControlType + value: Vector2 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandTurnInput.m_InputAction.m_Id + value: 3610965d-108d-4451-a143-a78d1ee8f9b8 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandTurnInput.m_InputAction.m_Processors + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandTurnInput.m_InputAction.m_Interactions + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandTurnInput.m_InputAction.m_SingletonActionBindings.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandTurnInput.m_InputAction.m_Flags + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandTurnInput.m_InputActionReference + value: + objectReference: {fileID: 1010738217276881514, guid: c348712bda248c246b8c49b3db54643f, type: 3} + - target: {fileID: 0} + propertyPath: m_LeftHandTurnInput.m_ObjectReferenceObject + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandTurnInput.m_ManualValue.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandTurnInput.m_ManualValue.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandTurnInput.m_InputSourceMode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandTurnInput.m_InputAction.m_Name + value: Right Hand Turn + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandTurnInput.m_InputAction.m_Type + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandTurnInput.m_InputAction.m_ExpectedControlType + value: Vector2 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandTurnInput.m_InputAction.m_Id + value: eeb82678-2af4-4b6c-87fc-621bb707edc5 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandTurnInput.m_InputAction.m_Processors + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandTurnInput.m_InputAction.m_Interactions + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandTurnInput.m_InputAction.m_SingletonActionBindings.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandTurnInput.m_InputAction.m_Flags + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandTurnInput.m_InputActionReference + value: + objectReference: {fileID: -6493913391331992944, guid: c348712bda248c246b8c49b3db54643f, type: 3} + - target: {fileID: 0} + propertyPath: m_RightHandTurnInput.m_ObjectReferenceObject + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandTurnInput.m_ManualValue.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandTurnInput.m_ManualValue.y + value: 0 + objectReference: {fileID: 0} + m_ExcludedProperties: [] diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default XR Screen Space Controller.preset.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default Continuous Turn.preset.meta similarity index 80% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default XR Screen Space Controller.preset.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default Continuous Turn.preset.meta index d4bed1f7..1dbdfc1b 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default XR Screen Space Controller.preset.meta +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default Continuous Turn.preset.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: d3223012ddb39d24584825882e7ea40b +guid: 735a78fc7c2a98a4e85e0e42bf895f48 NativeFormatImporter: externalObjects: {} mainObjectFileID: 2655988077585873504 diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default Dynamic Move.preset b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default Dynamic Move.preset new file mode 100644 index 00000000..186e04a9 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default Dynamic Move.preset @@ -0,0 +1,179 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!181963792 &2655988077585873504 +Preset: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: XRI Default Dynamic Move + m_TargetType: + m_NativeTypeID: 114 + m_ManagedTypePPtr: {fileID: 11500000, guid: 9b1e8c997df241c1a67045eeac79b41b, type: 3} + m_ManagedTypeFallback: + m_Properties: + - target: {fileID: 0} + propertyPath: m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_EditorHideFlags + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_EditorClassIdentifier + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_Mediator + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TransformationPriority + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MoveSpeed + value: 2.5 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_EnableStrafe + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_EnableFly + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_UseGravity + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ForwardSource + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandMoveInput.m_InputSourceMode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandMoveInput.m_InputAction.m_Name + value: Left Hand Move + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandMoveInput.m_InputAction.m_Type + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandMoveInput.m_InputAction.m_ExpectedControlType + value: Vector2 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandMoveInput.m_InputAction.m_Id + value: 16c2fabb-fb1c-4a11-94d0-0b1d894b8593 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandMoveInput.m_InputAction.m_Processors + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandMoveInput.m_InputAction.m_Interactions + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandMoveInput.m_InputAction.m_SingletonActionBindings.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandMoveInput.m_InputAction.m_Flags + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandMoveInput.m_InputActionReference + value: + objectReference: {fileID: 6972639530819350904, guid: c348712bda248c246b8c49b3db54643f, type: 3} + - target: {fileID: 0} + propertyPath: m_LeftHandMoveInput.m_ObjectReferenceObject + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandMoveInput.m_ManualValue.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandMoveInput.m_ManualValue.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandMoveInput.m_InputSourceMode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandMoveInput.m_InputAction.m_Name + value: Right Hand Move + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandMoveInput.m_InputAction.m_Type + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandMoveInput.m_InputAction.m_ExpectedControlType + value: Vector2 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandMoveInput.m_InputAction.m_Id + value: af2e3d83-024e-4a1f-8bc1-f97f0b4ae1d5 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandMoveInput.m_InputAction.m_Processors + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandMoveInput.m_InputAction.m_Interactions + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandMoveInput.m_InputAction.m_SingletonActionBindings.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandMoveInput.m_InputAction.m_Flags + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandMoveInput.m_InputActionReference + value: + objectReference: {fileID: -8198699208435500284, guid: c348712bda248c246b8c49b3db54643f, type: 3} + - target: {fileID: 0} + propertyPath: m_RightHandMoveInput.m_ObjectReferenceObject + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandMoveInput.m_ManualValue.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandMoveInput.m_ManualValue.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_HeadTransform + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftControllerTransform + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightControllerTransform + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandMovementDirection + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandMovementDirection + value: 0 + objectReference: {fileID: 0} + m_ExcludedProperties: [] diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default Dynamic Move.preset.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default Dynamic Move.preset.meta new file mode 100644 index 00000000..cf1f40fe --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default Dynamic Move.preset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: da25954ba1a2e604294f2ccda1d6372c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2655988077585873504 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Left ActionBasedControllerManager.preset b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default Left Controller InputActionManager.preset similarity index 92% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Left ActionBasedControllerManager.preset rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default Left Controller InputActionManager.preset index 5166a013..7153cabc 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Left ActionBasedControllerManager.preset +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default Left Controller InputActionManager.preset @@ -6,7 +6,7 @@ Preset: m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: XRI Default Left ActionBasedControllerManager + m_Name: XRI Default Left Controller InputActionManager m_TargetType: m_NativeTypeID: 114 m_ManagedTypePPtr: {fileID: 11500000, guid: f9ac216f0eb04754b1d938aac6380b31, type: 3} @@ -24,24 +24,20 @@ Preset: propertyPath: m_EditorClassIdentifier value: objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ManipulationInteractionGroup - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_DirectInteractor - value: - objectReference: {fileID: 0} - target: {fileID: 0} propertyPath: m_RayInteractor value: objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_NearFarInteractor + value: + objectReference: {fileID: 0} - target: {fileID: 0} propertyPath: m_TeleportInteractor value: objectReference: {fileID: 0} - target: {fileID: 0} - propertyPath: m_TeleportModeActivate + propertyPath: m_TeleportMode value: objectReference: {fileID: 1263111715868034790, guid: c348712bda248c246b8c49b3db54643f, type: 3} - target: {fileID: 0} @@ -72,6 +68,10 @@ Preset: propertyPath: m_SmoothTurnEnabled value: 0 objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_NearFarEnableTeleportDuringNearInteraction + value: 1 + objectReference: {fileID: 0} - target: {fileID: 0} propertyPath: m_UIScrollingEnabled value: 1 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Left ActionBasedControllerManager.preset.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default Left Controller InputActionManager.preset.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Left ActionBasedControllerManager.preset.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default Left Controller InputActionManager.preset.meta diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default Left Grab Move.preset b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default Left Grab Move.preset new file mode 100644 index 00000000..f88de047 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default Left Grab Move.preset @@ -0,0 +1,211 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!181963792 &2655988077585873504 +Preset: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: XRI Default Left Grab Move + m_TargetType: + m_NativeTypeID: 114 + m_ManagedTypePPtr: {fileID: 11500000, guid: 8b94c4c83dec6a94fbaebf543478259e, type: 3} + m_ManagedTypeFallback: + m_Properties: + - target: {fileID: 0} + propertyPath: m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_EditorHideFlags + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_EditorClassIdentifier + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_Mediator + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TransformationPriority + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_EnableFreeXMovement + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_EnableFreeYMovement + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_EnableFreeZMovement + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_UseGravity + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GravityApplicationMode + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ControllerTransform + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_EnableMoveWhileSelecting + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MoveFactor + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_InputSourceMode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_InputActionPerformed.m_Name + value: Grab Move + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_InputActionPerformed.m_Type + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_InputActionPerformed.m_ExpectedControlType + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_InputActionPerformed.m_Id + value: 2e9a23ce-d949-4c67-9b12-7a9a35510733 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_InputActionPerformed.m_Processors + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_InputActionPerformed.m_Interactions + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_InputActionPerformed.m_SingletonActionBindings.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_InputActionPerformed.m_Flags + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_InputActionValue.m_Name + value: Grab Move Value + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_InputActionValue.m_Type + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_InputActionValue.m_ExpectedControlType + value: Axis + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_InputActionValue.m_Id + value: 3680a95b-119c-4eba-b8fe-7e0a362e460b + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_InputActionValue.m_Processors + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_InputActionValue.m_Interactions + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_InputActionValue.m_SingletonActionBindings.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_InputActionValue.m_Flags + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_InputActionReferencePerformed + value: + objectReference: {fileID: -3742484312079769484, guid: c348712bda248c246b8c49b3db54643f, type: 3} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_InputActionReferenceValue + value: + objectReference: {fileID: -3742484312079769484, guid: c348712bda248c246b8c49b3db54643f, type: 3} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_ObjectReferenceObject + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_ManualPerformed + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_ManualValue + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_ManualQueuePerformed + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_ManualQueueWasPerformedThisFrame + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_ManualQueueValue + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_ManualQueueTargetFrame + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveAction.m_UseReference + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveAction.m_Action.m_Name + value: Grab Move + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveAction.m_Action.m_Type + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveAction.m_Action.m_ExpectedControlType + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveAction.m_Action.m_Id + value: 3d33edcf-0043-45cb-95a7-008204badf83 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveAction.m_Action.m_Processors + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveAction.m_Action.m_Interactions + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveAction.m_Action.m_SingletonActionBindings.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveAction.m_Action.m_Flags + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveAction.m_Reference + value: + objectReference: {fileID: 0} + m_ExcludedProperties: [] diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Left Grab Move.preset.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default Left Grab Move.preset.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Left Grab Move.preset.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default Left Grab Move.preset.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Right ActionBasedControllerManager.preset b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default Right Controller InputActionManager.preset similarity index 92% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Right ActionBasedControllerManager.preset rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default Right Controller InputActionManager.preset index 2a7a5219..1df76df5 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Right ActionBasedControllerManager.preset +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default Right Controller InputActionManager.preset @@ -6,7 +6,7 @@ Preset: m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: XRI Default Right ActionBasedControllerManager + m_Name: XRI Default Right Controller InputActionManager m_TargetType: m_NativeTypeID: 114 m_ManagedTypePPtr: {fileID: 11500000, guid: f9ac216f0eb04754b1d938aac6380b31, type: 3} @@ -24,24 +24,20 @@ Preset: propertyPath: m_EditorClassIdentifier value: objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_ManipulationInteractionGroup - value: - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_DirectInteractor - value: - objectReference: {fileID: 0} - target: {fileID: 0} propertyPath: m_RayInteractor value: objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_NearFarInteractor + value: + objectReference: {fileID: 0} - target: {fileID: 0} propertyPath: m_TeleportInteractor value: objectReference: {fileID: 0} - target: {fileID: 0} - propertyPath: m_TeleportModeActivate + propertyPath: m_TeleportMode value: objectReference: {fileID: -8061240218431744966, guid: c348712bda248c246b8c49b3db54643f, type: 3} - target: {fileID: 0} @@ -72,6 +68,10 @@ Preset: propertyPath: m_SmoothTurnEnabled value: 0 objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_NearFarEnableTeleportDuringNearInteraction + value: 1 + objectReference: {fileID: 0} - target: {fileID: 0} propertyPath: m_UIScrollingEnabled value: 1 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Right ActionBasedControllerManager.preset.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default Right Controller InputActionManager.preset.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Right ActionBasedControllerManager.preset.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default Right Controller InputActionManager.preset.meta diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default Right Grab Move.preset b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default Right Grab Move.preset new file mode 100644 index 00000000..baefee43 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default Right Grab Move.preset @@ -0,0 +1,211 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!181963792 &2655988077585873504 +Preset: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: XRI Default Right Grab Move + m_TargetType: + m_NativeTypeID: 114 + m_ManagedTypePPtr: {fileID: 11500000, guid: 8b94c4c83dec6a94fbaebf543478259e, type: 3} + m_ManagedTypeFallback: + m_Properties: + - target: {fileID: 0} + propertyPath: m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_EditorHideFlags + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_EditorClassIdentifier + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_Mediator + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TransformationPriority + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_EnableFreeXMovement + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_EnableFreeYMovement + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_EnableFreeZMovement + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_UseGravity + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GravityApplicationMode + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ControllerTransform + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_EnableMoveWhileSelecting + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MoveFactor + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_InputSourceMode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_InputActionPerformed.m_Name + value: Grab Move + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_InputActionPerformed.m_Type + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_InputActionPerformed.m_ExpectedControlType + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_InputActionPerformed.m_Id + value: 67220c99-f046-4e98-aa6f-d84114cad173 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_InputActionPerformed.m_Processors + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_InputActionPerformed.m_Interactions + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_InputActionPerformed.m_SingletonActionBindings.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_InputActionPerformed.m_Flags + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_InputActionValue.m_Name + value: Grab Move Value + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_InputActionValue.m_Type + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_InputActionValue.m_ExpectedControlType + value: Axis + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_InputActionValue.m_Id + value: ed114d26-3fbf-41fc-80fa-9675240038c5 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_InputActionValue.m_Processors + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_InputActionValue.m_Interactions + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_InputActionValue.m_SingletonActionBindings.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_InputActionValue.m_Flags + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_InputActionReferencePerformed + value: + objectReference: {fileID: 15759602096507913, guid: c348712bda248c246b8c49b3db54643f, type: 3} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_InputActionReferenceValue + value: + objectReference: {fileID: 15759602096507913, guid: c348712bda248c246b8c49b3db54643f, type: 3} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_ObjectReferenceObject + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_ManualPerformed + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_ManualValue + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_ManualQueuePerformed + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_ManualQueueWasPerformedThisFrame + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_ManualQueueValue + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveInput.m_ManualQueueTargetFrame + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveAction.m_UseReference + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveAction.m_Action.m_Name + value: Grab Move + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveAction.m_Action.m_Type + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveAction.m_Action.m_ExpectedControlType + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveAction.m_Action.m_Id + value: de56d195-bf90-4347-9982-6bf8ffa3420c + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveAction.m_Action.m_Processors + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveAction.m_Action.m_Interactions + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveAction.m_Action.m_SingletonActionBindings.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveAction.m_Action.m_Flags + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrabMoveAction.m_Reference + value: + objectReference: {fileID: 0} + m_ExcludedProperties: [] diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Right Grab Move.preset.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default Right Grab Move.preset.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Right Grab Move.preset.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default Right Grab Move.preset.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Snap Turn.preset b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default Snap Turn.preset similarity index 55% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Snap Turn.preset rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default Snap Turn.preset index 45ed0f42..d1d91fd0 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Snap Turn.preset +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default Snap Turn.preset @@ -9,7 +9,7 @@ Preset: m_Name: XRI Default Snap Turn m_TargetType: m_NativeTypeID: 114 - m_ManagedTypePPtr: {fileID: 11500000, guid: 2213c36610e3b1c4bbf886810ed9db12, type: 3} + m_ManagedTypePPtr: {fileID: 11500000, guid: e9f365cf844c03449bc8973eead2c3c1, type: 3} m_ManagedTypeFallback: m_Properties: - target: {fileID: 0} @@ -25,9 +25,13 @@ Preset: value: objectReference: {fileID: 0} - target: {fileID: 0} - propertyPath: m_System + propertyPath: m_Mediator value: objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TransformationPriority + value: 0 + objectReference: {fileID: 0} - target: {fileID: 0} propertyPath: m_TurnAmount value: 45 @@ -49,83 +53,107 @@ Preset: value: 0 objectReference: {fileID: 0} - target: {fileID: 0} - propertyPath: m_LeftHandSnapTurnAction.m_UseReference - value: 1 + propertyPath: m_LeftHandTurnInput.m_InputSourceMode + value: 2 objectReference: {fileID: 0} - target: {fileID: 0} - propertyPath: m_LeftHandSnapTurnAction.m_Action.m_Name + propertyPath: m_LeftHandTurnInput.m_InputAction.m_Name value: Left Hand Snap Turn objectReference: {fileID: 0} - target: {fileID: 0} - propertyPath: m_LeftHandSnapTurnAction.m_Action.m_Type + propertyPath: m_LeftHandTurnInput.m_InputAction.m_Type value: 0 objectReference: {fileID: 0} - target: {fileID: 0} - propertyPath: m_LeftHandSnapTurnAction.m_Action.m_ExpectedControlType + propertyPath: m_LeftHandTurnInput.m_InputAction.m_ExpectedControlType value: Vector2 objectReference: {fileID: 0} - target: {fileID: 0} - propertyPath: m_LeftHandSnapTurnAction.m_Action.m_Id - value: a1d07c24-ca50-422a-a23f-685d9fabf63b + propertyPath: m_LeftHandTurnInput.m_InputAction.m_Id + value: 536e141d-ee23-4272-b0fd-3984d1655f02 objectReference: {fileID: 0} - target: {fileID: 0} - propertyPath: m_LeftHandSnapTurnAction.m_Action.m_Processors + propertyPath: m_LeftHandTurnInput.m_InputAction.m_Processors value: objectReference: {fileID: 0} - target: {fileID: 0} - propertyPath: m_LeftHandSnapTurnAction.m_Action.m_Interactions + propertyPath: m_LeftHandTurnInput.m_InputAction.m_Interactions value: objectReference: {fileID: 0} - target: {fileID: 0} - propertyPath: m_LeftHandSnapTurnAction.m_Action.m_SingletonActionBindings.Array.size + propertyPath: m_LeftHandTurnInput.m_InputAction.m_SingletonActionBindings.Array.size value: 0 objectReference: {fileID: 0} - target: {fileID: 0} - propertyPath: m_LeftHandSnapTurnAction.m_Action.m_Flags + propertyPath: m_LeftHandTurnInput.m_InputAction.m_Flags value: 0 objectReference: {fileID: 0} - target: {fileID: 0} - propertyPath: m_LeftHandSnapTurnAction.m_Reference + propertyPath: m_LeftHandTurnInput.m_InputActionReference value: objectReference: {fileID: -7374733323251553461, guid: c348712bda248c246b8c49b3db54643f, type: 3} - target: {fileID: 0} - propertyPath: m_RightHandSnapTurnAction.m_UseReference - value: 1 + propertyPath: m_LeftHandTurnInput.m_ObjectReferenceObject + value: objectReference: {fileID: 0} - target: {fileID: 0} - propertyPath: m_RightHandSnapTurnAction.m_Action.m_Name + propertyPath: m_LeftHandTurnInput.m_ManualValue.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandTurnInput.m_ManualValue.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandTurnInput.m_InputSourceMode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandTurnInput.m_InputAction.m_Name value: Right Hand Snap Turn objectReference: {fileID: 0} - target: {fileID: 0} - propertyPath: m_RightHandSnapTurnAction.m_Action.m_Type + propertyPath: m_RightHandTurnInput.m_InputAction.m_Type value: 0 objectReference: {fileID: 0} - target: {fileID: 0} - propertyPath: m_RightHandSnapTurnAction.m_Action.m_ExpectedControlType + propertyPath: m_RightHandTurnInput.m_InputAction.m_ExpectedControlType value: Vector2 objectReference: {fileID: 0} - target: {fileID: 0} - propertyPath: m_RightHandSnapTurnAction.m_Action.m_Id - value: a7b54797-6974-4f75-81d0-42b9c15ef1e0 + propertyPath: m_RightHandTurnInput.m_InputAction.m_Id + value: b17ca378-4740-48c7-abe1-7f35bce317e9 objectReference: {fileID: 0} - target: {fileID: 0} - propertyPath: m_RightHandSnapTurnAction.m_Action.m_Processors + propertyPath: m_RightHandTurnInput.m_InputAction.m_Processors value: objectReference: {fileID: 0} - target: {fileID: 0} - propertyPath: m_RightHandSnapTurnAction.m_Action.m_Interactions + propertyPath: m_RightHandTurnInput.m_InputAction.m_Interactions value: objectReference: {fileID: 0} - target: {fileID: 0} - propertyPath: m_RightHandSnapTurnAction.m_Action.m_SingletonActionBindings.Array.size + propertyPath: m_RightHandTurnInput.m_InputAction.m_SingletonActionBindings.Array.size value: 0 objectReference: {fileID: 0} - target: {fileID: 0} - propertyPath: m_RightHandSnapTurnAction.m_Action.m_Flags + propertyPath: m_RightHandTurnInput.m_InputAction.m_Flags value: 0 objectReference: {fileID: 0} - target: {fileID: 0} - propertyPath: m_RightHandSnapTurnAction.m_Reference + propertyPath: m_RightHandTurnInput.m_InputActionReference value: objectReference: {fileID: -8525429354371678379, guid: c348712bda248c246b8c49b3db54643f, type: 3} + - target: {fileID: 0} + propertyPath: m_RightHandTurnInput.m_ObjectReferenceObject + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandTurnInput.m_ManualValue.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandTurnInput.m_ManualValue.y + value: 0 + objectReference: {fileID: 0} m_ExcludedProperties: [] diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Snap Turn.preset.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default Snap Turn.preset.meta similarity index 60% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Snap Turn.preset.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default Snap Turn.preset.meta index db247157..ffc05562 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default Snap Turn.preset.meta +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default Snap Turn.preset.meta @@ -1,8 +1,8 @@ fileFormatVersion: 2 -guid: 18697d253d848974aa7052cba872c9f0 +guid: 5d3a60dbf2f04694f9060712df89debb NativeFormatImporter: externalObjects: {} - mainObjectFileID: 0 + mainObjectFileID: 2655988077585873504 userData: assetBundleName: assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default XR UI Input Module.preset b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default XR UI Input Module.preset similarity index 96% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default XR UI Input Module.preset rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default XR UI Input Module.preset index 9cdf9ab0..01f1de67 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default XR UI Input Module.preset +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default XR UI Input Module.preset @@ -46,7 +46,7 @@ Preset: objectReference: {fileID: 0} - target: {fileID: 0} propertyPath: m_TrackedDeviceDragThresholdMultiplier - value: 1.4 + value: 2 objectReference: {fileID: 0} - target: {fileID: 0} propertyPath: m_TrackedScrollDeltaMultiplier @@ -56,10 +56,6 @@ Preset: propertyPath: m_ActiveInputMode value: 1 objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: m_MaxTrackedDeviceRaycastDistance - value: 1000 - objectReference: {fileID: 0} - target: {fileID: 0} propertyPath: m_EnableXRInput value: 1 diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default XR UI Input Module.preset.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default XR UI Input Module.preset.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Presets/XRI Default XR UI Input Module.preset.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Presets/XRI Default XR UI Input Module.preset.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Scripts.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Scripts.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts.meta diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/ClimbTeleportDestinationIndicator.cs b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/ClimbTeleportDestinationIndicator.cs new file mode 100644 index 00000000..f64d1561 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/ClimbTeleportDestinationIndicator.cs @@ -0,0 +1,143 @@ +using UnityEngine.XR.Interaction.Toolkit.Locomotion.Climbing; +using UnityEngine.XR.Interaction.Toolkit.Locomotion.Teleportation; +using UnityEngine.XR.Interaction.Toolkit.Utilities; + +namespace UnityEngine.XR.Interaction.Toolkit.Samples.StarterAssets +{ + /// + /// Affordance component used in conjunction with a to display an object + /// pointing at the target teleport destination while climbing. + /// + public class ClimbTeleportDestinationIndicator : MonoBehaviour + { + [SerializeField] + [Tooltip("The interactor that drives the display and placement of the pointer object.")] + ClimbTeleportInteractor m_ClimbTeleportInteractor; + + /// + /// The interactor that drives the display and placement of the pointer object. + /// + public ClimbTeleportInteractor climbTeleportInteractor + { + get => m_ClimbTeleportInteractor; + set => m_ClimbTeleportInteractor = value; + } + + [SerializeField] + [Tooltip("The prefab to spawn when a teleport destination is chosen. The instance will spawn next to the " + + "destination and point its forward vector at the destination and its up vector at the camera.")] + GameObject m_PointerPrefab; + + /// + /// The prefab to spawn when a teleport destination is chosen. The instance will spawn next to the destination + /// and point its forward vector at the destination and its up vector at the camera. + /// + public GameObject pointerPrefab + { + get => m_PointerPrefab; + set => m_PointerPrefab = value; + } + + [SerializeField] + [Tooltip("The distance from the destination at which the pointer object spawns.")] + float m_PointerDistance = 0.3f; + + /// + /// The distance from the destination at which the pointer object spawns. + /// + public float pointerDistance + { + get => m_PointerDistance; + set => m_PointerDistance = value; + } + + TeleportationMultiAnchorVolume m_ActiveTeleportVolume; + Transform m_PointerInstance; + + /// + /// See . + /// + protected void OnEnable() + { + if (m_ClimbTeleportInteractor == null) + { + if (!ComponentLocatorUtility.TryFindComponent(out m_ClimbTeleportInteractor)) + { + Debug.LogError($"Could not find {nameof(ClimbTeleportInteractor)} in scene."); + enabled = false; + return; + } + } + + m_ClimbTeleportInteractor.hoverEntered.AddListener(OnInteractorHoverEntered); + m_ClimbTeleportInteractor.hoverExited.AddListener(OnInteractorHoverExited); + } + + /// + /// See . + /// + protected void OnDisable() + { + HideIndicator(); + + if (m_ActiveTeleportVolume != null) + { + m_ActiveTeleportVolume.destinationAnchorChanged -= OnClimbTeleportDestinationAnchorChanged; + m_ActiveTeleportVolume = null; + } + + if (m_ClimbTeleportInteractor != null) + { + m_ClimbTeleportInteractor.hoverEntered.RemoveListener(OnInteractorHoverEntered); + m_ClimbTeleportInteractor.hoverExited.RemoveListener(OnInteractorHoverExited); + } + } + + void OnInteractorHoverEntered(HoverEnterEventArgs args) + { + if (m_ActiveTeleportVolume != null || !(args.interactableObject is TeleportationMultiAnchorVolume teleportVolume)) + return; + + m_ActiveTeleportVolume = teleportVolume; + if (m_ActiveTeleportVolume.destinationAnchor != null) + OnClimbTeleportDestinationAnchorChanged(m_ActiveTeleportVolume); + + m_ActiveTeleportVolume.destinationAnchorChanged += OnClimbTeleportDestinationAnchorChanged; + } + + void OnInteractorHoverExited(HoverExitEventArgs args) + { + if (!(args.interactableObject is TeleportationMultiAnchorVolume teleportVolume) || teleportVolume != m_ActiveTeleportVolume) + return; + + HideIndicator(); + m_ActiveTeleportVolume.destinationAnchorChanged -= OnClimbTeleportDestinationAnchorChanged; + m_ActiveTeleportVolume = null; + } + + void OnClimbTeleportDestinationAnchorChanged(TeleportationMultiAnchorVolume teleportVolume) + { + HideIndicator(); + + var destinationAnchor = teleportVolume.destinationAnchor; + if (destinationAnchor == null) + return; + + m_PointerInstance = Instantiate(m_PointerPrefab).transform; + var cameraTrans = teleportVolume.teleportationProvider.mediator.xrOrigin.Camera.transform; + var cameraPosition = cameraTrans.position; + var destinationPosition = destinationAnchor.position; + var destinationDirectionInScreenSpace = cameraTrans.InverseTransformDirection(destinationPosition - cameraPosition); + destinationDirectionInScreenSpace.z = 0f; + var pointerDirection = cameraTrans.TransformDirection(destinationDirectionInScreenSpace).normalized; + m_PointerInstance.position = destinationPosition - pointerDirection * m_PointerDistance; + m_PointerInstance.rotation = Quaternion.LookRotation(pointerDirection, -cameraTrans.forward); + } + + void HideIndicator() + { + if (m_PointerInstance != null) + Destroy(m_PointerInstance.gameObject); + } + } +} diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/ClimbTeleportDestinationIndicator.cs.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/ClimbTeleportDestinationIndicator.cs.meta new file mode 100644 index 00000000..d9e84f5c --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/ClimbTeleportDestinationIndicator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e766f86cb7d2461683eb37d8a971fb14 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/ControllerAnimator.cs b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/ControllerAnimator.cs new file mode 100644 index 00000000..858f8f24 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/ControllerAnimator.cs @@ -0,0 +1,84 @@ +using UnityEngine.XR.Interaction.Toolkit.Inputs.Readers; + +namespace UnityEngine.XR.Interaction.Toolkit.Samples.StarterAssets +{ + /// + /// Component which reads input values and drives the thumbstick, trigger, and grip transforms + /// to animate a controller model. + /// + public class ControllerAnimator : MonoBehaviour + { + [Header("Thumbstick")] + [SerializeField] + Transform m_ThumbstickTransform; + + [SerializeField] + Vector2 m_StickRotationRange = new Vector2(30f, 30f); + + [SerializeField] + XRInputValueReader m_StickInput = new XRInputValueReader("Thumbstick"); + + [Header("Trigger")] + [SerializeField] + Transform m_TriggerTransform; + + [SerializeField] + Vector2 m_TriggerXAxisRotationRange = new Vector2(0f, -15f); + + [SerializeField] + XRInputValueReader m_TriggerInput = new XRInputValueReader("Trigger"); + + [Header("Grip")] + [SerializeField] + Transform m_GripTransform; + + [SerializeField] + Vector2 m_GripRightRange = new Vector2(-0.0125f, -0.011f); + + [SerializeField] + XRInputValueReader m_GripInput = new XRInputValueReader("Grip"); + + void OnEnable() + { + if (m_ThumbstickTransform == null || m_GripTransform == null || m_TriggerTransform == null) + { + enabled = false; + Debug.LogWarning($"Controller Animator component missing references on {gameObject.name}", this); + return; + } + + m_StickInput?.EnableDirectActionIfModeUsed(); + m_TriggerInput?.EnableDirectActionIfModeUsed(); + m_GripInput?.EnableDirectActionIfModeUsed(); + } + + void OnDisable() + { + m_StickInput?.DisableDirectActionIfModeUsed(); + m_TriggerInput?.DisableDirectActionIfModeUsed(); + m_GripInput?.DisableDirectActionIfModeUsed(); + } + + void Update() + { + if (m_StickInput != null) + { + var stickVal = m_StickInput.ReadValue(); + m_ThumbstickTransform.localRotation = Quaternion.Euler(-stickVal.y * m_StickRotationRange.x, 0f, -stickVal.x * m_StickRotationRange.y); + } + + if (m_TriggerInput != null) + { + var triggerVal = m_TriggerInput.ReadValue(); + m_TriggerTransform.localRotation = Quaternion.Euler(Mathf.Lerp(m_TriggerXAxisRotationRange.x, m_TriggerXAxisRotationRange.y, triggerVal), 0f, 0f); + } + + if (m_GripInput != null) + { + var gripVal = m_GripInput.ReadValue(); + var currentPos = m_GripTransform.localPosition; + m_GripTransform.localPosition = new Vector3(Mathf.Lerp(m_GripRightRange.x, m_GripRightRange.y, gripVal), currentPos.y, currentPos.z); + } + } + } +} diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/ControllerAnimator.cs.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/ControllerAnimator.cs.meta new file mode 100644 index 00000000..8215d8e2 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/ControllerAnimator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4a5f76f9ea8c80547973ab01877f9567 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Scripts/ActionBasedControllerManager.cs b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/ControllerInputActionManager.cs similarity index 54% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Scripts/ActionBasedControllerManager.cs rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/ControllerInputActionManager.cs index 5565c684..cf5e0cae 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Scripts/ActionBasedControllerManager.cs +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/ControllerInputActionManager.cs @@ -1,45 +1,44 @@ -using System.Collections; using System.Collections.Generic; +using Unity.XR.CoreUtils.Bindings; using UnityEngine.Events; using UnityEngine.InputSystem; +using UnityEngine.Serialization; +using UnityEngine.XR.Interaction.Toolkit.Interactors; using UnityEngine.XR.Interaction.Toolkit.UI; namespace UnityEngine.XR.Interaction.Toolkit.Samples.StarterAssets { /// - /// Use this class to mediate the controllers and their associated interactors and input actions under different interaction states. + /// Use this class to mediate the interactors for a controller under different interaction states + /// and the input actions used by them. /// - [AddComponentMenu("XR/Action Based Controller Manager")] - [DefaultExecutionOrder(k_UpdateOrder)] - public class ActionBasedControllerManager : MonoBehaviour + /// + /// If the teleport ray input is engaged, the Ray Interactor used for distant manipulation is disabled + /// and the Ray Interactor used for teleportation is enabled. If the Ray Interactor is selecting and it + /// is configured to allow for attach transform manipulation, all locomotion input actions are disabled + /// (teleport ray, move, and turn controls) to prevent input collision with the manipulation inputs used + /// by the ray interactor. + ///
+ /// A typical hierarchy also includes an XR Interaction Group component to mediate between interactors. + /// The interaction group ensures that the Direct and Ray Interactors cannot interact at the same time, + /// with the Direct Interactor taking priority over the Ray Interactor. + ///
+ [AddComponentMenu("XR/Controller Input Action Manager")] + public class ControllerInputActionManager : MonoBehaviour { - /// - /// Order when instances of type are updated. - /// - /// - /// Executes before controller components to ensure input processors can be attached - /// to input actions and/or bindings before the controller component reads the current - /// values of the input actions. - /// - public const int k_UpdateOrder = XRInteractionUpdateOrder.k_Controllers - 1; - [Space] [Header("Interactors")] [SerializeField] - [Tooltip("The GameObject containing the interaction group used for direct and distant manipulation.")] - XRInteractionGroup m_ManipulationInteractionGroup; - - [SerializeField] - [Tooltip("The GameObject containing the interactor used for direct manipulation.")] - XRDirectInteractor m_DirectInteractor; - - [SerializeField] - [Tooltip("The GameObject containing the interactor used for distant/ray manipulation.")] + [Tooltip("The interactor used for distant/ray manipulation. Use this or Near-Far Interactor, not both.")] XRRayInteractor m_RayInteractor; [SerializeField] - [Tooltip("The GameObject containing the interactor used for teleportation.")] + [Tooltip("Near-Far Interactor used for distant/ray manipulation. Use this or Ray Interactor, not both.")] + NearFarInteractor m_NearFarInteractor; + + [SerializeField] + [Tooltip("The interactor used for teleportation.")] XRRayInteractor m_TeleportInteractor; [Space] @@ -47,7 +46,8 @@ namespace UnityEngine.XR.Interaction.Toolkit.Samples.StarterAssets [SerializeField] [Tooltip("The reference to the action to start the teleport aiming mode for this controller.")] - InputActionReference m_TeleportModeActivate; + [FormerlySerializedAs("m_TeleportModeActivate")] + InputActionReference m_TeleportMode; [SerializeField] [Tooltip("The reference to the action to cancel the teleport aiming mode for this controller.")] @@ -73,22 +73,27 @@ namespace UnityEngine.XR.Interaction.Toolkit.Samples.StarterAssets [Header("Locomotion Settings")] [SerializeField] - [Tooltip("If true, continuous movement will be enabled. If false, teleport will enabled.")] + [Tooltip("If true, continuous movement will be enabled. If false, teleport will be enabled.")] bool m_SmoothMotionEnabled; - + [SerializeField] [Tooltip("If true, continuous turn will be enabled. If false, snap turn will be enabled. Note: If smooth motion is enabled and enable strafe is enabled on the continuous move provider, turn will be overriden in favor of strafe.")] bool m_SmoothTurnEnabled; + [SerializeField] + [Tooltip("With the Near-Far Interactor, if true, teleport will be enabled during near interaction. If false, teleport will be disabled during near interaction.")] + bool m_NearFarEnableTeleportDuringNearInteraction = true; + [Space] [Header("UI Settings")] [SerializeField] - [Tooltip("If true, UI scrolling will be enabled.")] - bool m_UIScrollingEnabled; + [Tooltip("If true, UI scrolling will be enabled. Locomotion will be disabled when pointing at UI to allow it to be scrolled.")] + bool m_UIScrollingEnabled = true; [Space] [Header("Mediation Events")] + [SerializeField] [Tooltip("Event fired when the active ray interactor changes between interaction and teleport.")] UnityEvent m_RayInteractorChanged; @@ -123,25 +128,22 @@ namespace UnityEngine.XR.Interaction.Toolkit.Samples.StarterAssets } } + bool m_StartCalled; bool m_PostponedDeactivateTeleport; - bool m_UIScrollModeActive = false; + bool m_HoveringScrollableUI; - const int k_InteractorNotInGroup = -1; + readonly HashSet m_LocomotionUsers = new HashSet(); + readonly BindingsGroup m_BindingsGroup = new BindingsGroup(); - IEnumerator m_AfterInteractionEventsRoutine; - HashSet m_LocomotionUsers = new HashSet(); - - /// - /// Temporary scratch list to populate with the group members of the interaction group. - /// - static readonly List s_GroupMembers = new List(); - - // For our input mediation, we are enforcing a few rules between direct, ray, and teleportation interaction: - // 1. If the Teleportation Ray is engaged, the Ray interactor is disabled - // 2. The interaction group ensures that the Direct and Ray interactors cannot interact at the same time, with the Direct interactor taking priority - // 3. If the Ray interactor is selecting, all locomotion controls are disabled (teleport ray, move, and turn controls) to prevent input collision void SetupInteractorEvents() { + if (m_NearFarInteractor != null) + { + m_NearFarInteractor.uiHoverEntered.AddListener(OnUIHoverEntered); + m_NearFarInteractor.uiHoverExited.AddListener(OnUIHoverExited); + m_BindingsGroup.AddBinding(m_NearFarInteractor.selectionRegion.Subscribe(OnNearFarSelectionRegionChanged)); + } + if (m_RayInteractor != null) { m_RayInteractor.selectEntered.AddListener(OnRaySelectEntered); @@ -150,74 +152,96 @@ namespace UnityEngine.XR.Interaction.Toolkit.Samples.StarterAssets m_RayInteractor.uiHoverExited.AddListener(OnUIHoverExited); } - var teleportModeActivateAction = GetInputAction(m_TeleportModeActivate); - if (teleportModeActivateAction != null) + var teleportModeAction = GetInputAction(m_TeleportMode); + if (teleportModeAction != null) { - teleportModeActivateAction.performed += OnStartTeleport; - teleportModeActivateAction.performed += OnStartLocomotion; - teleportModeActivateAction.canceled += OnCancelTeleport; - teleportModeActivateAction.canceled += OnStopLocomotion; + teleportModeAction.performed += OnStartTeleport; + teleportModeAction.performed += OnStartLocomotion; + teleportModeAction.canceled += OnCancelTeleport; + teleportModeAction.canceled += OnStopLocomotion; } var teleportModeCancelAction = GetInputAction(m_TeleportModeCancel); if (teleportModeCancelAction != null) { teleportModeCancelAction.performed += OnCancelTeleport; - teleportModeActivateAction.canceled += OnStopLocomotion; } var moveAction = GetInputAction(m_Move); if (moveAction != null) { - moveAction.performed += OnStartLocomotion; + moveAction.started += OnStartLocomotion; moveAction.canceled += OnStopLocomotion; } var turnAction = GetInputAction(m_Turn); if (turnAction != null) { - turnAction.performed += OnStartLocomotion; + turnAction.started += OnStartLocomotion; turnAction.canceled += OnStopLocomotion; } + + var snapTurnAction = GetInputAction(m_SnapTurn); + if (snapTurnAction != null) + { + snapTurnAction.started += OnStartLocomotion; + snapTurnAction.canceled += OnStopLocomotion; + } } void TeardownInteractorEvents() { + m_BindingsGroup.Clear(); + + if (m_NearFarInteractor != null) + { + m_NearFarInteractor.uiHoverEntered.RemoveListener(OnUIHoverEntered); + m_NearFarInteractor.uiHoverExited.RemoveListener(OnUIHoverExited); + } + if (m_RayInteractor != null) { m_RayInteractor.selectEntered.RemoveListener(OnRaySelectEntered); m_RayInteractor.selectExited.RemoveListener(OnRaySelectExited); + m_RayInteractor.uiHoverEntered.RemoveListener(OnUIHoverEntered); + m_RayInteractor.uiHoverExited.RemoveListener(OnUIHoverExited); } - var teleportModeActivateAction = GetInputAction(m_TeleportModeActivate); - if (teleportModeActivateAction != null) + var teleportModeAction = GetInputAction(m_TeleportMode); + if (teleportModeAction != null) { - teleportModeActivateAction.performed -= OnStartTeleport; - teleportModeActivateAction.performed -= OnStartLocomotion; - teleportModeActivateAction.canceled -= OnCancelTeleport; - teleportModeActivateAction.canceled -= OnStopLocomotion; + teleportModeAction.performed -= OnStartTeleport; + teleportModeAction.performed -= OnStartLocomotion; + teleportModeAction.canceled -= OnCancelTeleport; + teleportModeAction.canceled -= OnStopLocomotion; } var teleportModeCancelAction = GetInputAction(m_TeleportModeCancel); if (teleportModeCancelAction != null) { teleportModeCancelAction.performed -= OnCancelTeleport; - teleportModeCancelAction.performed -= OnStopLocomotion; } var moveAction = GetInputAction(m_Move); if (moveAction != null) { - moveAction.performed -= OnStartLocomotion; + moveAction.started -= OnStartLocomotion; moveAction.canceled -= OnStopLocomotion; } var turnAction = GetInputAction(m_Turn); if (turnAction != null) { - turnAction.performed -= OnStartLocomotion; + turnAction.started -= OnStartLocomotion; turnAction.canceled -= OnStopLocomotion; } + + var snapTurnAction = GetInputAction(m_SnapTurn); + if (snapTurnAction != null) + { + snapTurnAction.started -= OnStartLocomotion; + snapTurnAction.canceled -= OnStopLocomotion; + } } void OnStartTeleport(InputAction.CallbackContext context) @@ -230,6 +254,9 @@ namespace UnityEngine.XR.Interaction.Toolkit.Samples.StarterAssets if (m_RayInteractor != null) m_RayInteractor.gameObject.SetActive(false); + if (m_NearFarInteractor != null && m_NearFarInteractor.selectionRegion.Value != NearFarInteractor.Region.Near) + m_NearFarInteractor.gameObject.SetActive(false); + m_RayInteractorChanged?.Invoke(m_TeleportInteractor); } @@ -244,15 +271,23 @@ namespace UnityEngine.XR.Interaction.Toolkit.Samples.StarterAssets if (m_RayInteractor != null) m_RayInteractor.gameObject.SetActive(true); - m_RayInteractorChanged?.Invoke(m_RayInteractor); + if (m_NearFarInteractor != null) + m_NearFarInteractor.gameObject.SetActive(true); + m_RayInteractorChanged?.Invoke(m_RayInteractor); + } + + void OnNearFarSelectionRegionChanged(NearFarInteractor.Region selectionRegion) + { + if (selectionRegion == NearFarInteractor.Region.Far || + (selectionRegion == NearFarInteractor.Region.Near && !m_NearFarEnableTeleportDuringNearInteraction)) + DisableTeleportActions(); + else + UpdateLocomotionActions(); } void OnStartLocomotion(InputAction.CallbackContext context) { - if (!context.started) - return; - m_LocomotionUsers.Add(context.action); } @@ -260,149 +295,102 @@ namespace UnityEngine.XR.Interaction.Toolkit.Samples.StarterAssets { m_LocomotionUsers.Remove(context.action); - if (m_LocomotionUsers.Count == 0 && m_UIScrollModeActive) + if (m_LocomotionUsers.Count == 0 && m_HoveringScrollableUI) { - DisableLocomotionActions(); + DisableAllLocomotionActions(); + UpdateUIActions(); } } void OnRaySelectEntered(SelectEnterEventArgs args) { - // Disable locomotion and turn actions - DisableLocomotionActions(); + if (m_RayInteractor.manipulateAttachTransform) + { + // Disable locomotion and turn actions + DisableAllLocomotionActions(); + } } void OnRaySelectExited(SelectExitEventArgs args) { - // Re-enable the locomotion and turn actions - UpdateLocomotionActions(); + if (m_RayInteractor.manipulateAttachTransform) + { + // Re-enable the locomotion and turn actions + UpdateLocomotionActions(); + } } void OnUIHoverEntered(UIHoverEventArgs args) { - m_UIScrollModeActive = args.deviceModel.isScrollable && m_UIScrollingEnabled; - if (!m_UIScrollModeActive) - return; + m_HoveringScrollableUI = m_UIScrollingEnabled && args.deviceModel.isScrollable; + UpdateUIActions(); // If locomotion is occurring, wait - if (m_LocomotionUsers.Count == 0) + if (m_HoveringScrollableUI && m_LocomotionUsers.Count == 0) { // Disable locomotion and turn actions - DisableLocomotionActions(); + DisableAllLocomotionActions(); } } void OnUIHoverExited(UIHoverEventArgs args) { - m_UIScrollModeActive = false; + m_HoveringScrollableUI = false; + UpdateUIActions(); // Re-enable the locomotion and turn actions UpdateLocomotionActions(); } - protected void Awake() - { - m_AfterInteractionEventsRoutine = OnAfterInteractionEvents(); - } - protected void OnEnable() { + if (m_RayInteractor != null && m_NearFarInteractor != null) + { + Debug.LogWarning("Both Ray Interactor and Near-Far Interactor are assigned. Only one should be assigned, not both. Clearing Ray Interactor.", this); + m_RayInteractor = null; + } + if (m_TeleportInteractor != null) m_TeleportInteractor.gameObject.SetActive(false); - SetupInteractorEvents(); + // Allow the actions to be refreshed when this component is re-enabled. + // See comments in Start for why we wait until Start to enable/disable actions. + if (m_StartCalled) + { + UpdateLocomotionActions(); + UpdateUIActions(); + } - // Start the coroutine that executes code after the Update phase (during yield null). - // Since this behavior has an execution order that runs before the XRInteractionManager, - // we use the coroutine to run after the selection events - StartCoroutine(m_AfterInteractionEventsRoutine); + SetupInteractorEvents(); } protected void OnDisable() { TeardownInteractorEvents(); - - StopCoroutine(m_AfterInteractionEventsRoutine); } protected void Start() { + m_StartCalled = true; + // Ensure the enabled state of locomotion and turn actions are properly set up. // Called in Start so it is done after the InputActionManager enables all input actions earlier in OnEnable. UpdateLocomotionActions(); UpdateUIActions(); - - if (m_ManipulationInteractionGroup == null) - { - Debug.LogError("Missing required Manipulation Interaction Group reference. Use the Inspector window to assign the XR Interaction Group component reference.", this); - return; - } - - // Ensure interactors are properly set up in the interaction group by adding - // them if necessary and ordering Direct before Ray interactor. - var directInteractorIndex = k_InteractorNotInGroup; - var rayInteractorIndex = k_InteractorNotInGroup; - m_ManipulationInteractionGroup.GetGroupMembers(s_GroupMembers); - for (var i = 0; i < s_GroupMembers.Count; ++i) - { - var groupMember = s_GroupMembers[i]; - if (ReferenceEquals(groupMember, m_DirectInteractor)) - directInteractorIndex = i; - else if (ReferenceEquals(groupMember, m_RayInteractor)) - rayInteractorIndex = i; - } - - if (directInteractorIndex == k_InteractorNotInGroup) - { - // Must add Direct interactor to group, and make sure it is ordered before the Ray interactor - if (rayInteractorIndex == k_InteractorNotInGroup) - { - // Must add Ray interactor to group - if (m_DirectInteractor != null) - m_ManipulationInteractionGroup.AddGroupMember(m_DirectInteractor); - - if (m_RayInteractor != null) - m_ManipulationInteractionGroup.AddGroupMember(m_RayInteractor); - } - else if (m_DirectInteractor != null) - { - m_ManipulationInteractionGroup.MoveGroupMemberTo(m_DirectInteractor, rayInteractorIndex); - } - } - else - { - if (rayInteractorIndex == k_InteractorNotInGroup) - { - // Must add Ray interactor to group - if (m_RayInteractor != null) - m_ManipulationInteractionGroup.AddGroupMember(m_RayInteractor); - } - else - { - // Must make sure Direct interactor is ordered before the Ray interactor - if (rayInteractorIndex < directInteractorIndex) - { - m_ManipulationInteractionGroup.MoveGroupMemberTo(m_DirectInteractor, rayInteractorIndex); - } - } - } } - IEnumerator OnAfterInteractionEvents() + protected void Update() { - while (true) + // Start the coroutine that executes code after the Update phase (during yield null). + // Since this behavior has the default execution order, it runs after the XRInteractionManager, + // so selection events have been finished by now this frame. This means that the teleport interactor + // has had a chance to process its select interaction event and teleport if needed. + if (m_PostponedDeactivateTeleport) { - // Yield so this coroutine is resumed after the teleport interactor - // has a chance to process its select interaction event during Update. - yield return null; + if (m_TeleportInteractor != null) + m_TeleportInteractor.gameObject.SetActive(false); - if (m_PostponedDeactivateTeleport) - { - if (m_TeleportInteractor != null) - m_TeleportInteractor.gameObject.SetActive(false); - - m_PostponedDeactivateTeleport = false; - } + m_PostponedDeactivateTeleport = false; } } @@ -410,7 +398,7 @@ namespace UnityEngine.XR.Interaction.Toolkit.Samples.StarterAssets { // Disable/enable Teleport and Turn when Move is enabled/disabled. SetEnabled(m_Move, m_SmoothMotionEnabled); - SetEnabled(m_TeleportModeActivate, !m_SmoothMotionEnabled); + SetEnabled(m_TeleportMode, !m_SmoothMotionEnabled); SetEnabled(m_TeleportModeCancel, !m_SmoothMotionEnabled); // Disable ability to turn when using continuous movement @@ -418,18 +406,28 @@ namespace UnityEngine.XR.Interaction.Toolkit.Samples.StarterAssets SetEnabled(m_SnapTurn, !m_SmoothMotionEnabled && !m_SmoothTurnEnabled); } - void DisableLocomotionActions() + void DisableTeleportActions() + { + DisableAction(m_TeleportMode); + DisableAction(m_TeleportModeCancel); + } + + void DisableMoveAndTurnActions() { DisableAction(m_Move); - DisableAction(m_TeleportModeActivate); - DisableAction(m_TeleportModeCancel); DisableAction(m_Turn); DisableAction(m_SnapTurn); } + void DisableAllLocomotionActions() + { + DisableTeleportActions(); + DisableMoveAndTurnActions(); + } + void UpdateUIActions() { - SetEnabled(m_UIScroll, m_UIScrollingEnabled); + SetEnabled(m_UIScroll, m_UIScrollingEnabled && m_HoveringScrollableUI && m_LocomotionUsers.Count == 0); } static void SetEnabled(InputActionReference actionReference, bool enabled) diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Scripts/ActionBasedControllerManager.cs.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/ControllerInputActionManager.cs.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Scripts/ActionBasedControllerManager.cs.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/ControllerInputActionManager.cs.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Scripts/DestroySelf.cs b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/DestroySelf.cs similarity index 99% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Scripts/DestroySelf.cs rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/DestroySelf.cs index 93e53933..f10ffc41 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Scripts/DestroySelf.cs +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/DestroySelf.cs @@ -17,7 +17,7 @@ namespace UnityEngine.XR.Interaction.Toolkit.Samples.StarterAssets get => m_Lifetime; set => m_Lifetime = value; } - + /// /// See . /// @@ -26,4 +26,4 @@ namespace UnityEngine.XR.Interaction.Toolkit.Samples.StarterAssets Destroy(gameObject, m_Lifetime); } } -} \ No newline at end of file +} diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Scripts/DestroySelf.cs.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/DestroySelf.cs.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Scripts/DestroySelf.cs.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/DestroySelf.cs.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Scripts/DynamicMoveProvider.cs b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/DynamicMoveProvider.cs similarity index 94% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Scripts/DynamicMoveProvider.cs rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/DynamicMoveProvider.cs index e5ec63e4..243cfed8 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Scripts/DynamicMoveProvider.cs +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/DynamicMoveProvider.cs @@ -1,14 +1,15 @@ using Unity.XR.CoreUtils; using UnityEngine.Assertions; +using UnityEngine.XR.Interaction.Toolkit.Locomotion.Movement; namespace UnityEngine.XR.Interaction.Toolkit.Samples.StarterAssets { /// - /// A version of action-based continuous movement that automatically controls the frame of reference that + /// A version of continuous movement that automatically controls the frame of reference that /// determines the forward direction of movement based on user preference for each hand. /// For example, can configure to use head relative movement for the left hand and controller relative movement for the right hand. /// - public class DynamicMoveProvider : ActionBasedContinuousMoveProvider + public class DynamicMoveProvider : ContinuousMoveProvider { /// /// Defines which transform the XR Origin's movement direction is relative to. @@ -121,7 +122,7 @@ namespace UnityEngine.XR.Interaction.Toolkit.Samples.StarterAssets // Initialize the Head Transform if necessary, getting the Camera from XR Origin if (m_HeadTransform == null) { - var xrOrigin = system.xrOrigin; + var xrOrigin = mediator.xrOrigin; if (xrOrigin != null) { var xrCamera = xrOrigin.Camera; @@ -171,8 +172,8 @@ namespace UnityEngine.XR.Interaction.Toolkit.Samples.StarterAssets } // Combine the two poses into the forward source based on the magnitude of input - var leftHandValue = leftHandMoveAction.action?.ReadValue() ?? Vector2.zero; - var rightHandValue = rightHandMoveAction.action?.ReadValue() ?? Vector2.zero; + var leftHandValue = leftHandMoveInput.ReadValue(); + var rightHandValue = rightHandMoveInput.ReadValue(); var totalSqrMagnitude = leftHandValue.sqrMagnitude + rightHandValue.sqrMagnitude; var leftHandBlend = 0.5f; diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Scripts/DynamicMoveProvider.cs.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/DynamicMoveProvider.cs.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Scripts/DynamicMoveProvider.cs.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/DynamicMoveProvider.cs.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Scripts/GazeInputManager.cs b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/GazeInputManager.cs similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Scripts/GazeInputManager.cs rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/GazeInputManager.cs diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Scripts/GazeInputManager.cs.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/GazeInputManager.cs.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Scripts/GazeInputManager.cs.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/GazeInputManager.cs.meta diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/MaterialPipelineHandler.cs b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/MaterialPipelineHandler.cs new file mode 100644 index 00000000..b72012b3 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/MaterialPipelineHandler.cs @@ -0,0 +1,242 @@ +using UnityEngine.Rendering; +using System.Collections.Generic; +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace UnityEngine.XR.Interaction.Toolkit.Samples.StarterAssets +{ +#if UNITY_EDITOR + [InitializeOnLoad] + static class RenderPipelineValidation + { + static RenderPipelineValidation() + { + foreach (var pipelineHandler in GetAllInstances()) + pipelineHandler.AutoRefreshPipelineShaders(); + } + + static List GetAllInstances() + { + var instances = new List(); + + // Find all GUIDs for objects that match the type MaterialPipelineHandler + var guids = AssetDatabase.FindAssets("t:MaterialPipelineHandler"); + for (int i = 0; i < guids.Length; i++) + { + string path = AssetDatabase.GUIDToAssetPath(guids[i]); + var asset = AssetDatabase.LoadAssetAtPath(path); + if (asset != null) + instances.Add(asset); + } + + return instances; + } + } +#endif + + /// + /// Serializable class that contains the shader information for a material. + /// + [System.Serializable] + public class ShaderContainer + { + public Material material; + public bool useSRPShaderName = true; + public string scriptableRenderPipelineShaderName = "Universal Render Pipeline/Lit"; + public Shader scriptableRenderPipelineShader; + public bool useBuiltinShaderName = true; + public string builtInPipelineShaderName = "Standard"; + public Shader builtInPipelineShader; + } + + /// + /// Scriptable object that allows for setting the shader on a material based on the current render pipeline. + /// Will run automatically OnEnable in the editor to set the shaders on project bootup. Can be refreshed manually with editor button. + /// This exists because while objects render correctly using shadergraph shaders, others do not and using the standard shader resolves various rendering issues. + /// + [CreateAssetMenu(fileName = "MaterialPipelineHandler", menuName = "XR/MaterialPipelineHandler", order = 0)] + public class MaterialPipelineHandler : ScriptableObject + { + [SerializeField] + [Tooltip("List of materials and their associated shaders.")] + List m_ShaderContainers; + + [SerializeField] + [Tooltip("If true, the shaders will be refreshed automatically when the editor opens and when this scriptable object instance is enabled.")] + bool m_AutoRefreshShaders = true; + +#if UNITY_EDITOR + void OnEnable() + { + if (Application.isPlaying) + return; + AutoRefreshPipelineShaders(); + } +#endif + + public void AutoRefreshPipelineShaders() + { + if (m_AutoRefreshShaders) + SetPipelineShaders(); + } + + /// + /// Applies the appropriate shader to the materials based on the current render pipeline. + /// + public void SetPipelineShaders() + { + if (m_ShaderContainers == null) + return; + + bool isBuiltinRenderPipeline = GraphicsSettings.currentRenderPipeline == null; + + foreach (var info in m_ShaderContainers) + { + if (info.material == null) + continue; + + // Find the appropriate shaders based on the toggle + Shader birpShader = info.useBuiltinShaderName ? Shader.Find(info.builtInPipelineShaderName) : info.builtInPipelineShader; + Shader srpShader = info.useSRPShaderName ? Shader.Find(info.scriptableRenderPipelineShaderName) : info.scriptableRenderPipelineShader; + + // Determine current shader for comparison + Shader currentShader = info.material.shader; + + // Update shader for the current render pipeline only if necessary + if (isBuiltinRenderPipeline && birpShader != null && currentShader != birpShader) + { + info.material.shader = birpShader; + MarkMaterialModified(info.material); + } + else if (!isBuiltinRenderPipeline && srpShader != null && currentShader != srpShader) + { + info.material.shader = srpShader; + MarkMaterialModified(info.material); + } + } + } + + static void MarkMaterialModified(Material material) + { +#if UNITY_EDITOR + EditorUtility.SetDirty(material); +#endif + } + } + +#if UNITY_EDITOR + /// + /// Custom property drawer for the shader container class. + /// + [CustomPropertyDrawer(typeof(ShaderContainer))] + public class ShaderContainerDrawer : PropertyDrawer + { + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + EditorGUI.BeginProperty(position, label, property); + + float singleLineHeight = EditorGUIUtility.singleLineHeight; + float verticalSpacing = EditorGUIUtility.standardVerticalSpacing; + + SerializedProperty materialProp = property.FindPropertyRelative("material"); + SerializedProperty useSRPShaderNameProp = property.FindPropertyRelative("useSRPShaderName"); + SerializedProperty scriptableShaderNameProp = property.FindPropertyRelative("scriptableRenderPipelineShaderName"); + SerializedProperty scriptableShaderProp = property.FindPropertyRelative("scriptableRenderPipelineShader"); + SerializedProperty useShaderNameProp = property.FindPropertyRelative("useBuiltinShaderName"); + SerializedProperty builtInNameProp = property.FindPropertyRelative("builtInPipelineShaderName"); + SerializedProperty builtInShaderProp = property.FindPropertyRelative("builtInPipelineShader"); + + // Draw Material without the header. + position.height = singleLineHeight; + EditorGUI.PropertyField(position, materialProp); + position.y += singleLineHeight + verticalSpacing; + + // SRP Shader header and fields. + EditorGUI.LabelField(position, "Scriptable Render Pipeline Shader", EditorStyles.boldLabel); + position.y += EditorGUIUtility.singleLineHeight + verticalSpacing; + + EditorGUI.PropertyField(position, useSRPShaderNameProp); + position.y += singleLineHeight + verticalSpacing; + + if (useSRPShaderNameProp.boolValue) + { + EditorGUI.PropertyField(position, scriptableShaderNameProp); + position.y += singleLineHeight + verticalSpacing; + } + else + { + EditorGUI.PropertyField(position, scriptableShaderProp); + position.y += singleLineHeight + verticalSpacing; + } + + // Built-in Shader header and fields. + EditorGUI.LabelField(position, "Built-In Render Pipeline Shader", EditorStyles.boldLabel); + position.y += singleLineHeight + verticalSpacing; + + EditorGUI.PropertyField(position, useShaderNameProp); + position.y += singleLineHeight + verticalSpacing; + + if (useShaderNameProp.boolValue) + { + EditorGUI.PropertyField(position, builtInNameProp); + position.y += singleLineHeight + verticalSpacing; + } + else + { + EditorGUI.PropertyField(position, builtInShaderProp); + position.y += singleLineHeight + verticalSpacing; + } + + // Draw a separator line at the end. + position.y += verticalSpacing / 2; // Extra space for the line. + position.height = 1; + EditorGUI.DrawRect(new Rect(position.x, position.y, position.width, 1), Color.gray); + + EditorGUI.EndProperty(); + } + + public override float GetPropertyHeight(SerializedProperty property, GUIContent label) + { + const int baseFieldCount = 4; // The Material field, the two toggles, and one for an optional field. + int extraLineCount = property.FindPropertyRelative("useBuiltinShaderName").boolValue ? 0 : 1; + extraLineCount += property.FindPropertyRelative("useSRPShaderName").boolValue ? 0 : 1; + + float singleLineHeight = EditorGUIUtility.singleLineHeight; + float verticalSpacing = EditorGUIUtility.standardVerticalSpacing; + float headerHeight = EditorGUIUtility.singleLineHeight; // No longer need extra height for headers. + + // Calculate height for fields and headers + float fieldsHeight = baseFieldCount * singleLineHeight + (baseFieldCount - 1 + extraLineCount) * verticalSpacing; + + // Allow space for header, separator line, and a bit of padding before the line. + float headersHeight = 2 * (headerHeight + verticalSpacing); + float separatorSpace = verticalSpacing / 2 + 1; // Additional vertical spacing and line height. + + return fieldsHeight + headersHeight + separatorSpace + singleLineHeight * 1.5f; + } + } + + /// + /// Custom editor MaterialPipelineHandler + /// + [CustomEditor(typeof(MaterialPipelineHandler)), CanEditMultipleObjects] + public class MaterialPipelineHandlerEditor : Editor + { + public override void OnInspectorGUI() + { + base.OnInspectorGUI(); + + // Draw the "Refresh Shaders" button + if (GUILayout.Button("Refresh Shaders")) + { + foreach (var t in targets) + { + var handler = (MaterialPipelineHandler)t; + handler.SetPipelineShaders(); + } + } + } + } +#endif +} diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/MaterialPipelineHandler.cs.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/MaterialPipelineHandler.cs.meta new file mode 100644 index 00000000..cd729367 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/MaterialPipelineHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e7883133e628dff4a86f50c082f77055 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Scripts/ObjectSpawner.cs b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/ObjectSpawner.cs similarity index 99% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Scripts/ObjectSpawner.cs rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/ObjectSpawner.cs index 485e34ae..3b278e0b 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Scripts/ObjectSpawner.cs +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/ObjectSpawner.cs @@ -211,7 +211,7 @@ namespace UnityEngine.XR.Interaction.Toolkit.Samples.StarterAssets newObject.transform.position = spawnPoint; EnsureFacingCamera(); - + var facePosition = m_CameraToFace.transform.position; var forward = facePosition - spawnPoint; BurstMathUtility.ProjectOnPlane(forward, spawnNormal, out var projectedForward); @@ -234,4 +234,4 @@ namespace UnityEngine.XR.Interaction.Toolkit.Samples.StarterAssets return true; } } -} \ No newline at end of file +} diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Scripts/ObjectSpawner.cs.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/ObjectSpawner.cs.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Scripts/ObjectSpawner.cs.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/ObjectSpawner.cs.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/GrabTransformerRotationAxisLock.cs b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/RotationAxisLockGrabTransformer.cs similarity index 91% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/GrabTransformerRotationAxisLock.cs rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/RotationAxisLockGrabTransformer.cs index 11d699ad..a5799aa5 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/GrabTransformerRotationAxisLock.cs +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/RotationAxisLockGrabTransformer.cs @@ -1,12 +1,13 @@ +using UnityEngine.XR.Interaction.Toolkit.Interactables; using UnityEngine.XR.Interaction.Toolkit.Transformers; -namespace UnityEngine.XR.Interaction.Toolkit.Samples.Hands +namespace UnityEngine.XR.Interaction.Toolkit.Samples.StarterAssets { /// /// An XR grab transformer that allows for the locking of specific rotation axes. When an object is grabbed and manipulated, /// this class ensures that rotations are only applied to the specified axes, preserving the initial rotation for the others. /// - public class GrabTransformerRotationAxisLock : XRBaseGrabTransformer + public class RotationAxisLockGrabTransformer : XRBaseGrabTransformer { [SerializeField] [Tooltip("Defines which rotation axes are allowed when an object is grabbed. Axes not selected will maintain their initial rotation.")] diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/RotationAxisLockGrabTransformer.cs.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/RotationAxisLockGrabTransformer.cs.meta new file mode 100644 index 00000000..c16b51ce --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/RotationAxisLockGrabTransformer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4dd2e41114c62b44fbd334ca5b314352 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/TeleportVolumeAnchorAffordanceStateLink.cs b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/TeleportVolumeAnchorAffordanceStateLink.cs new file mode 100644 index 00000000..7cc9a21b --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/TeleportVolumeAnchorAffordanceStateLink.cs @@ -0,0 +1,97 @@ +using System; +using UnityEngine.XR.Interaction.Toolkit.AffordanceSystem.State; +using UnityEngine.XR.Interaction.Toolkit.Interactables; +using UnityEngine.XR.Interaction.Toolkit.Locomotion.Teleportation; + +namespace UnityEngine.XR.Interaction.Toolkit.Samples.StarterAssets +{ + /// + /// Helper component that binds an to a + /// when the teleport volume sets its destination anchor to a child transform + /// of the state provider's originally bound interactable. + /// + [RequireComponent(typeof(XRInteractableAffordanceStateProvider))] + [Obsolete("The Affordance System namespace and all associated classes have been deprecated. The existing affordance system will be moved, replaced and updated with a new interaction feedback system in a future version of XRI.")] + public class TeleportVolumeAnchorAffordanceStateLink : MonoBehaviour + { + [SerializeField] + [Tooltip("The teleport volume that will drive affordance states when its destination anchor belongs to this interactable.")] + TeleportationMultiAnchorVolume m_ContainingTeleportVolume; + + /// + /// The teleport volume that will drive affordance states when its destination anchor belongs to the + /// state provider's originally bound interactable. + /// + public TeleportationMultiAnchorVolume containingTeleportVolume + { + get => m_ContainingTeleportVolume; + set => m_ContainingTeleportVolume = value; + } + + XRInteractableAffordanceStateProvider m_AffordanceStateProvider; + IXRInteractable m_Interactable; + + /// + /// See . + /// + protected void OnEnable() + { + m_AffordanceStateProvider = GetComponent(); + if (m_AffordanceStateProvider == null) + { + Debug.LogError($"Missing {nameof(XRInteractableAffordanceStateProvider)} on {gameObject.name}.", this); + enabled = false; + return; + } + + if (m_ContainingTeleportVolume == null) + { + Debug.LogError($"Missing {nameof(TeleportationMultiAnchorVolume)} reference on {gameObject.name}.", this); + enabled = false; + return; + } + + var interactableSource = m_AffordanceStateProvider.interactableSource; + m_Interactable = interactableSource != null && interactableSource is IXRInteractable interactable + ? interactable + : m_AffordanceStateProvider.GetComponentInParent(); + + if (m_Interactable == null) + { + Debug.LogError($"Interactable source must be an {nameof(IXRInteractable)}.", this); + enabled = false; + return; + } + + m_ContainingTeleportVolume.destinationAnchorChanged += OnDestinationAnchorChanged; + } + + /// + /// See . + /// + protected void OnDisable() + { + if (m_ContainingTeleportVolume != null) + m_ContainingTeleportVolume.destinationAnchorChanged -= OnDestinationAnchorChanged; + + if (m_AffordanceStateProvider != null) + m_AffordanceStateProvider.SetBoundInteractionReceiver(m_Interactable); + } + + void OnDestinationAnchorChanged(TeleportationMultiAnchorVolume anchorVolume) + { + var anchor = anchorVolume.destinationAnchor; + if (anchor == null) + { + m_AffordanceStateProvider.SetBoundInteractionReceiver(m_Interactable); + return; + } + + // Use teleport volume to drive affordance states if its current anchor belongs to this interactable + m_AffordanceStateProvider.SetBoundInteractionReceiver( + anchor.IsChildOf(m_Interactable.transform) + ? m_ContainingTeleportVolume + : m_Interactable); + } + } +} diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/TeleportVolumeAnchorAffordanceStateLink.cs.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/TeleportVolumeAnchorAffordanceStateLink.cs.meta new file mode 100644 index 00000000..2244e8e5 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/TeleportVolumeAnchorAffordanceStateLink.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7da98a0edd844d83b9b4de3f91de030c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Scripts/XRPokeFollowAffordance.cs b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/XRPokeFollowAffordance.cs similarity index 68% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Scripts/XRPokeFollowAffordance.cs rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/XRPokeFollowAffordance.cs index eb735ac0..25e252ca 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Scripts/XRPokeFollowAffordance.cs +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/XRPokeFollowAffordance.cs @@ -1,4 +1,5 @@ -using Unity.Mathematics; +using System; +using Unity.Mathematics; using Unity.XR.CoreUtils.Bindings; using UnityEngine.XR.Interaction.Toolkit.AffordanceSystem.State; using UnityEngine.XR.Interaction.Toolkit.Filtering; @@ -10,6 +11,11 @@ namespace UnityEngine.XR.Interaction.Toolkit.Samples.StarterAssets /// Follow animation affordance for , such as . /// Used to animate a pressed transform, such as a button to follow the poke position. /// + /// + /// The Affordance System namespace and all associated classes have been deprecated. + /// The existing affordance system will be moved, replaced and updated with a new interaction + /// feedback system in a future version of XRI, including this sample script. + /// [AddComponentMenu("XR/XR Poke Follow Affordance", 22)] public class XRPokeFollowAffordance : MonoBehaviour { @@ -109,18 +115,24 @@ namespace UnityEngine.XR.Interaction.Toolkit.Samples.StarterAssets IPokeStateDataProvider m_PokeDataProvider; IMultiPokeStateDataProvider m_MultiPokeStateDataProvider; +#pragma warning disable CS0618 // Type or member is obsolete readonly Vector3TweenableVariable m_TransformTweenableVariable = new Vector3TweenableVariable(); +#pragma warning restore CS0618 // Type or member is obsolete readonly BindingsGroup m_BindingsGroup = new BindingsGroup(); Vector3 m_InitialPosition; bool m_IsFirstFrame; + [HideInInspector] + [SerializeField] + XRPokeFilter m_PokeFilter = null; + /// /// See . /// protected void Awake() { m_MultiPokeStateDataProvider = GetComponentInParent(); - if(m_MultiPokeStateDataProvider == null) + if (m_MultiPokeStateDataProvider == null) m_PokeDataProvider = GetComponentInParent(); } @@ -133,10 +145,10 @@ namespace UnityEngine.XR.Interaction.Toolkit.Samples.StarterAssets { m_InitialPosition = m_PokeFollowTransform.localPosition; m_BindingsGroup.AddBinding(m_TransformTweenableVariable.Subscribe(OnTransformTweenableVariableUpdated)); - - if(m_MultiPokeStateDataProvider != null) + + if (m_MultiPokeStateDataProvider != null) m_BindingsGroup.AddBinding(m_MultiPokeStateDataProvider.GetPokeStateDataForTarget(transform).Subscribe(OnPokeStateDataUpdated)); - else if(m_PokeDataProvider != null) + else if (m_PokeDataProvider != null) m_BindingsGroup.AddBinding(m_PokeDataProvider.pokeStateData.SubscribeAndUpdate(OnPokeStateDataUpdated)); } else @@ -166,12 +178,23 @@ namespace UnityEngine.XR.Interaction.Toolkit.Samples.StarterAssets m_IsFirstFrame = false; return; } + m_TransformTweenableVariable.HandleTween(m_SmoothingSpeed > 0f ? Time.deltaTime * m_SmoothingSpeed : 1f); } - void OnTransformTweenableVariableUpdated(float3 position) + protected virtual void OnTransformTweenableVariableUpdated(float3 position) { - m_PokeFollowTransform.localPosition = position; + // UI Anchors can cause this to not work correctly, so we check if it's a RectTransform and set the localPosition Z only + if (m_PokeFollowTransform is RectTransform) + { + var targetPosition = m_PokeFollowTransform.localPosition; + targetPosition.z = position.z; + m_PokeFollowTransform.localPosition = targetPosition; + } + else + { + m_PokeFollowTransform.localPosition = position; + } } void OnPokeStateDataUpdated(PokeStateData data) @@ -202,5 +225,74 @@ namespace UnityEngine.XR.Interaction.Toolkit.Samples.StarterAssets m_PokeFollowTransform.localPosition = m_InitialPosition; } + + void OnDrawGizmos() + { + if (!TryGetTargetEndPoint(out var endPoint)) + return; + + Gizmos.color = Color.yellow; + Gizmos.DrawLine(transform.position, endPoint); + } + + bool TryGetTargetEndPoint(out Vector3 endPoint) + { + if (!m_ClampToMaxDistance || m_PokeFilter == null) + { + endPoint = Vector3.zero; + return false; + } + + Vector3 origin = transform.position; + Vector3 direction = ComputeRotatedDepthEvaluationAxis(m_PokeFilter.pokeConfiguration); + endPoint = origin + direction.normalized * m_MaxDistance; + return true; + } + + Vector3 ComputeRotatedDepthEvaluationAxis(PokeThresholdData pokeThresholdData) + { + if (pokeThresholdData == null) + return Vector3.zero; + + Vector3 rotatedDepthEvaluationAxis = Vector3.zero; + switch (pokeThresholdData.pokeDirection) + { + case PokeAxis.X: + case PokeAxis.NegativeX: + rotatedDepthEvaluationAxis = transform.right; + break; + case PokeAxis.Y: + case PokeAxis.NegativeY: + rotatedDepthEvaluationAxis = transform.up; + break; + case PokeAxis.Z: + case PokeAxis.NegativeZ: + rotatedDepthEvaluationAxis = transform.forward; + break; + } + + switch (pokeThresholdData.pokeDirection) + { + case PokeAxis.X: + case PokeAxis.Y: + case PokeAxis.Z: + rotatedDepthEvaluationAxis = -rotatedDepthEvaluationAxis; + break; + } + + return rotatedDepthEvaluationAxis; + } + + void OnValidate() + { + if (m_PokeFilter == null) + { + m_PokeFilter = GetComponentInParent(); + } + + // Visually update the end point to match the target clamped position + if (m_PokeFollowTransform != null && TryGetTargetEndPoint(out var endPoint)) + m_PokeFollowTransform.position = endPoint; + } } -} \ No newline at end of file +} diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Scripts/XRPokeFollowAffordance.cs.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/XRPokeFollowAffordance.cs.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Scripts/XRPokeFollowAffordance.cs.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Scripts/XRPokeFollowAffordance.cs.meta diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Shaders.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Shaders.meta new file mode 100644 index 00000000..eed0ac56 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Shaders.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 388cb625f9bdf7444b7b2df5b64a84c6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Shaders/BiRP_Fresnel.shader b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Shaders/BiRP_Fresnel.shader new file mode 100644 index 00000000..d7f4bffb --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Shaders/BiRP_Fresnel.shader @@ -0,0 +1,83 @@ +Shader "XRIT/BiRP_Fresnel" +{ + Properties + { + _BaseColor ("_BaseColor", Color) = (0, 0, 0, 1) + _MainTex ("Texture", 2D) = "white" {} + _Smoothness ("Smoothness", Range(0, 1)) = 0 + _Metallic ("Metalness", Range(0, 1)) = 0 + _RimColor ("_RimColor", Color) = (1,1,1,1) + [PowerSlider(4)]_RimPower ("_RimPower", Range(0.25, 10)) = 1 + } + + SubShader + { + Tags + { + "RenderType"="Opaque" + } + LOD 200 + + CGPROGRAM + #if !defined(UNITY_USES_HDRP) && !defined(UNITY_USES_URP) + // Physically based Standard lighting model, and enable shadows on all light types + #pragma surface surf Standard fullforwardshadows + + // Use shader model 3.0 target, to get nicer looking lighting + #pragma target 3.0 + + sampler2D _MainTex; + fixed4 _BaseColor; + half _Smoothness; + half _Metallic; + float3 _RimColor; + float _RimPower; + + struct Input + { + float2 uv_MainTex; + float3 worldNormal; + float3 viewDir; + INTERNAL_DATA + }; + + // Add instancing support for this shader. You need to check 'Enable Instancing' on materials that use the shader. + // See https://docs.unity3d.com/Manual/GPUInstancing.html for more information about instancing. + // #pragma instancing_options assumeuniformscaling + UNITY_INSTANCING_BUFFER_START(Props) + UNITY_INSTANCING_BUFFER_END(Props) + + half4 LightingSimpleLambert (SurfaceOutput s, half3 lightDir, half atten) { + half NdotL = dot (s.Normal, lightDir); + half4 c; + c.rgb = s.Albedo * _LightColor0.rgb * (NdotL * atten); + c.a = s.Alpha; + return c; + } + + void surf(Input i, inout SurfaceOutputStandard o) + { + //sample and tint albedo texture + fixed4 col = tex2D(_MainTex, i.uv_MainTex); + col *= _BaseColor; + o.Albedo = col.rgb; + //just apply the values for metalness and smoothness + o.Metallic = _Metallic; + o.Smoothness = _Smoothness; + //get the dot product between the normal and the view direction + float fresnel = dot(i.worldNormal, i.viewDir); + //invert the fresnel so the big values are on the outside + fresnel = saturate(1 - fresnel); + //raise the fresnel value to the exponents power to be able to adjust it + fresnel = pow(fresnel, _RimPower); + //combine the fresnel value with a color + float3 fresnelColor = fresnel * _RimColor; + //apply the fresnel value to the emission + o.Emission = fresnelColor; + } + #endif + ENDCG + } + FallBack "Diffuse" + FallBack "Standard" +} diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Shaders/BiRP_Fresnel.shader.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Shaders/BiRP_Fresnel.shader.meta new file mode 100644 index 00000000..7773a18a --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Shaders/BiRP_Fresnel.shader.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: b24c216c4acb0094c892a61dfbbb76b4 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + preprocessorOverride: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Shaders/Interactable.shadergraph b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Shaders/Interactable.shadergraph new file mode 100644 index 00000000..753107cb --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Shaders/Interactable.shadergraph @@ -0,0 +1,4145 @@ +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.GraphData", + "m_ObjectId": "34a2241cace747c1aab795b47b74d96c", + "m_Properties": [ + { + "m_Id": "482b6de253db465e808a80828ae136f2" + }, + { + "m_Id": "48a4c9b172e24ee490580e77efba26cc" + }, + { + "m_Id": "13226371ac59487c895d28a58a0b3e3a" + }, + { + "m_Id": "d777fa61789b4e60ac09af623ceb253c" + }, + { + "m_Id": "33ed807b47194420b7ca5e54e9eaddd5" + }, + { + "m_Id": "8b7d12739f9d4a64ad74d97000195713" + }, + { + "m_Id": "0e2d0060fb6647d8acd0791e1a2eb28f" + }, + { + "m_Id": "9a38e5a780f542199b7ea2ec7be0f311" + }, + { + "m_Id": "286f78650b2f4e19bbe36808021ec65b" + }, + { + "m_Id": "edabcdf3486a4812ae5658b8254c258d" + } + ], + "m_Keywords": [], + "m_Dropdowns": [], + "m_CategoryData": [ + { + "m_Id": "ce7e4776faf54c8c921c004ff57e6a67" + } + ], + "m_Nodes": [ + { + "m_Id": "dc5c91e79c014636a601536af3db47c8" + }, + { + "m_Id": "92a68cfb809948f78bed1524817e802f" + }, + { + "m_Id": "cee5b6702a794bbeb43982d32bfc94fd" + }, + { + "m_Id": "420cff3beaab447a98e34cbb581c753f" + }, + { + "m_Id": "b6a22e59a17a422c9ceac09ca5674c70" + }, + { + "m_Id": "0d031ca8645e4afea738475766ca5bb3" + }, + { + "m_Id": "19c524ef7c754603b474342b29968df0" + }, + { + "m_Id": "edc683028f7f4a08b249d0f0183a917e" + }, + { + "m_Id": "cef58d737f9a4ad88ee208166ef4ce90" + }, + { + "m_Id": "44e63cb3307344a88ed8b1a5f11b3502" + }, + { + "m_Id": "09b3896ce0154c11be905235318d515f" + }, + { + "m_Id": "eafb2f1b4ba4441e9fa3108ff8dca237" + }, + { + "m_Id": "1392772296394069b49fae2bbb14d56d" + }, + { + "m_Id": "b595b08d61a241218a3d80c369108496" + }, + { + "m_Id": "b235a886335b4c1ab4872a03c9eccfb0" + }, + { + "m_Id": "bdf57607f4ba4a3489c0e98ad3c19461" + }, + { + "m_Id": "67cd07f9ae82453ea0de2e29dae18080" + }, + { + "m_Id": "ec5b4f9bacdc41899dc4d7117d8770c5" + }, + { + "m_Id": "2bdcefbcdf6c41c6a3e2987caa8c3026" + }, + { + "m_Id": "0acf8bd626b94aabb7d43f6b72ce295d" + }, + { + "m_Id": "ae5e313f8d344ca893e946534337db18" + }, + { + "m_Id": "5f73c8e6a9e04ee6bd08c7ec664f9ead" + }, + { + "m_Id": "4f3ed500dc274e0aa11ac48d35310f1a" + }, + { + "m_Id": "4aa1427bc1fe490a9883f5a6cd2264a4" + }, + { + "m_Id": "16c7ac4e3c05444eb73185aa4ceb9045" + }, + { + "m_Id": "4b21122999664ab3bd65422a1090bf90" + }, + { + "m_Id": "9be4b481dfe642d3960f2b92e27f46f7" + }, + { + "m_Id": "e6385eca93e04655ac0c7e189b3fcc60" + }, + { + "m_Id": "287d175dfb7e44c18187bdf69ed6d5d0" + }, + { + "m_Id": "347ba48b64334e4da6257f142dac85bd" + }, + { + "m_Id": "b73b6b04fdab45deba4776d91f3464e7" + }, + { + "m_Id": "a494549a5e5c4a9eaa0853c58ef669a7" + }, + { + "m_Id": "8fa23fa35fce46898c7646a5eb1ed324" + }, + { + "m_Id": "c41673cb40ec4182ba75ff9078f9dd76" + }, + { + "m_Id": "ed5c980ec8ff40d8b0929a9783b4749b" + }, + { + "m_Id": "ff719c8fc32845faa0b1dc53fd3eae21" + } + ], + "m_GroupDatas": [ + { + "m_Id": "346e9930ce5d4eca9bd1178e5109e3f1" + }, + { + "m_Id": "d2387c00d8984e4aa40d39ea25262374" + }, + { + "m_Id": "e12fecca803d4bcea0269e65353747b9" + } + ], + "m_StickyNoteDatas": [], + "m_Edges": [ + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "0acf8bd626b94aabb7d43f6b72ce295d" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "2bdcefbcdf6c41c6a3e2987caa8c3026" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "1392772296394069b49fae2bbb14d56d" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b235a886335b4c1ab4872a03c9eccfb0" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "16c7ac4e3c05444eb73185aa4ceb9045" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "0d031ca8645e4afea738475766ca5bb3" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "287d175dfb7e44c18187bdf69ed6d5d0" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "bdf57607f4ba4a3489c0e98ad3c19461" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "287d175dfb7e44c18187bdf69ed6d5d0" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "edc683028f7f4a08b249d0f0183a917e" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "2bdcefbcdf6c41c6a3e2987caa8c3026" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "5f73c8e6a9e04ee6bd08c7ec664f9ead" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "347ba48b64334e4da6257f142dac85bd" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b595b08d61a241218a3d80c369108496" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "4aa1427bc1fe490a9883f5a6cd2264a4" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "ed5c980ec8ff40d8b0929a9783b4749b" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "4b21122999664ab3bd65422a1090bf90" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "19c524ef7c754603b474342b29968df0" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "4f3ed500dc274e0aa11ac48d35310f1a" + }, + "m_SlotId": 4 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "287d175dfb7e44c18187bdf69ed6d5d0" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "5f73c8e6a9e04ee6bd08c7ec664f9ead" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "287d175dfb7e44c18187bdf69ed6d5d0" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "67cd07f9ae82453ea0de2e29dae18080" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "ec5b4f9bacdc41899dc4d7117d8770c5" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "8fa23fa35fce46898c7646a5eb1ed324" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "a494549a5e5c4a9eaa0853c58ef669a7" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "9be4b481dfe642d3960f2b92e27f46f7" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "2bdcefbcdf6c41c6a3e2987caa8c3026" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "a494549a5e5c4a9eaa0853c58ef669a7" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "4aa1427bc1fe490a9883f5a6cd2264a4" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "ae5e313f8d344ca893e946534337db18" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "2bdcefbcdf6c41c6a3e2987caa8c3026" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "b235a886335b4c1ab4872a03c9eccfb0" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "bdf57607f4ba4a3489c0e98ad3c19461" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "b235a886335b4c1ab4872a03c9eccfb0" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "ec5b4f9bacdc41899dc4d7117d8770c5" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "b595b08d61a241218a3d80c369108496" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b235a886335b4c1ab4872a03c9eccfb0" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "b73b6b04fdab45deba4776d91f3464e7" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "4aa1427bc1fe490a9883f5a6cd2264a4" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "bdf57607f4ba4a3489c0e98ad3c19461" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "420cff3beaab447a98e34cbb581c753f" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "c41673cb40ec4182ba75ff9078f9dd76" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "a494549a5e5c4a9eaa0853c58ef669a7" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "e6385eca93e04655ac0c7e189b3fcc60" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "4f3ed500dc274e0aa11ac48d35310f1a" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "e6385eca93e04655ac0c7e189b3fcc60" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "5f73c8e6a9e04ee6bd08c7ec664f9ead" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "ec5b4f9bacdc41899dc4d7117d8770c5" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "bdf57607f4ba4a3489c0e98ad3c19461" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "ed5c980ec8ff40d8b0929a9783b4749b" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b6a22e59a17a422c9ceac09ca5674c70" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "ff719c8fc32845faa0b1dc53fd3eae21" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "ed5c980ec8ff40d8b0929a9783b4749b" + }, + "m_SlotId": 1 + } + } + ], + "m_VertexContext": { + "m_Position": { + "x": 112.99992370605469, + "y": 132.00003051757813 + }, + "m_Blocks": [ + { + "m_Id": "dc5c91e79c014636a601536af3db47c8" + }, + { + "m_Id": "92a68cfb809948f78bed1524817e802f" + }, + { + "m_Id": "cee5b6702a794bbeb43982d32bfc94fd" + } + ] + }, + "m_FragmentContext": { + "m_Position": { + "x": 112.99992370605469, + "y": 331.9999084472656 + }, + "m_Blocks": [ + { + "m_Id": "420cff3beaab447a98e34cbb581c753f" + }, + { + "m_Id": "b6a22e59a17a422c9ceac09ca5674c70" + }, + { + "m_Id": "0d031ca8645e4afea738475766ca5bb3" + }, + { + "m_Id": "19c524ef7c754603b474342b29968df0" + }, + { + "m_Id": "edc683028f7f4a08b249d0f0183a917e" + }, + { + "m_Id": "cef58d737f9a4ad88ee208166ef4ce90" + }, + { + "m_Id": "44e63cb3307344a88ed8b1a5f11b3502" + }, + { + "m_Id": "09b3896ce0154c11be905235318d515f" + }, + { + "m_Id": "eafb2f1b4ba4441e9fa3108ff8dca237" + } + ] + }, + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "preventRotation": false + }, + "m_Path": "Shader Graphs", + "m_GraphPrecision": 1, + "m_PreviewMode": 2, + "m_OutputNode": { + "m_Id": "" + }, + "m_ActiveTargets": [ + { + "m_Id": "7f4faf20e056441da3400fcf5a01bd1d" + }, + { + "m_Id": "4aa8a973dd78498e827b15fa6d213bc0" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "010c84257e1d457c9139b10afe0c86ce", + "m_Id": 0, + "m_DisplayName": "Alpha Clip Threshold", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "AlphaClipThreshold", + "m_StageCapability": 2, + "m_Value": 0.5, + "m_DefaultValue": 0.5, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "07b346956d8e427a8fb6a4e597439425", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "08269a550cd74ba29f50c7d60fb4dcc2", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "090dac5d94e9450bbca9bf47c6502992", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "093e7e86995446d2ab10f431b05ef76a", + "m_Id": 0, + "m_DisplayName": "Normal", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Normal", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 2 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "09b3896ce0154c11be905235318d515f", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Alpha", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "1b62da38b8ef48edb6ff30ae07ce41b8" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Alpha" +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.ViewDirectionNode", + "m_ObjectId": "0acf8bd626b94aabb7d43f6b72ce295d", + "m_Group": { + "m_Id": "d2387c00d8984e4aa40d39ea25262374" + }, + "m_Name": "View Direction", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1811.9998779296875, + "y": 336.6666564941406, + "width": 207.3331298828125, + "height": 134.66671752929688 + } + }, + "m_Slots": [ + { + "m_Id": "07b346956d8e427a8fb6a4e597439425" + } + ], + "synonyms": [ + "eye direction" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 2, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Space": 2 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "0d031ca8645e4afea738475766ca5bb3", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Metallic", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "f9bfc7cf42df49dbb5c5bb74afedf657" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Metallic" +} + +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.Internal.ColorShaderProperty", + "m_ObjectId": "0e2d0060fb6647d8acd0791e1a2eb28f", + "m_Guid": { + "m_GuidSerialized": "c5c7a42b-05c6-4506-8cd3-7905607cdb99" + }, + "m_Name": "_RimColor", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "_RimColor", + "m_DefaultReferenceName": "_RimColor", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 0.5803921818733215 + }, + "isMainColor": false, + "m_ColorMode": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "0f2b559f30b14a44ad0eb771394fba11", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "1256dd214f7e485c8ceba8ab2793b320", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.Internal.ColorShaderProperty", + "m_ObjectId": "13226371ac59487c895d28a58a0b3e3a", + "m_Guid": { + "m_GuidSerialized": "63931a48-e350-41dc-959a-31ee6a7dd197" + }, + "m_Name": "_BaseColor", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "_BaseColor", + "m_DefaultReferenceName": "_BaseColor", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "r": 0.4433962106704712, + "g": 0.4433962106704712, + "b": 0.4433962106704712, + "a": 0.0 + }, + "isMainColor": false, + "m_ColorMode": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "1392772296394069b49fae2bbb14d56d", + "m_Group": { + "m_Id": "346e9930ce5d4eca9bd1178e5109e3f1" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1472.0, + "y": -92.00001525878906, + "width": 136.0, + "height": 34.000057220458987 + } + }, + "m_Slots": [ + { + "m_Id": "e233a5083310407eb373bca889c776fb" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "13226371ac59487c895d28a58a0b3e3a" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "168ebbe1e8ff4012ba3f03f575db7f62", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "16c7ac4e3c05444eb73185aa4ceb9045", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -111.0, + "y": 450.0000305175781, + "width": 120.99996948242188, + "height": 33.99993896484375 + } + }, + "m_Slots": [ + { + "m_Id": "a0af5b6dc5e04d53961c9637cae2fd54" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "33ed807b47194420b7ca5e54e9eaddd5" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "19c524ef7c754603b474342b29968df0", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Smoothness", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "1a6239ebfe974097a50095d7a90a657d" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Smoothness" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "1a6239ebfe974097a50095d7a90a657d", + "m_Id": 0, + "m_DisplayName": "Smoothness", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Smoothness", + "m_StageCapability": 2, + "m_Value": 0.5, + "m_DefaultValue": 0.5, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "1b62da38b8ef48edb6ff30ae07ce41b8", + "m_Id": 0, + "m_DisplayName": "Alpha", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Alpha", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "1b7a5e0aa600437986160c13473a534c", + "m_Id": 0, + "m_DisplayName": "Normal (Tangent Space)", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "NormalTS", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 3 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "204bf07fc52f464886121fba7aa55854", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "21ecb0ca4fd14bd1963896f80890fcdf", + "m_Id": 0, + "m_DisplayName": "_NormalOffset", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "286f78650b2f4e19bbe36808021ec65b", + "m_Guid": { + "m_GuidSerialized": "585b125c-7345-4901-8a0a-911173c93c23" + }, + "m_Name": "_NormalMap", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "_NormalMap", + "m_DefaultReferenceName": "_NormalMap", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": false, + "m_Modifiable": true, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "287d175dfb7e44c18187bdf69ed6d5d0", + "m_Group": { + "m_Id": "d2387c00d8984e4aa40d39ea25262374" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1062.0, + "y": 782.6666259765625, + "width": 209.3333740234375, + "height": 304.0001220703125 + } + }, + "m_Slots": [ + { + "m_Id": "9373dada293e4cfe873ee24758aab624" + }, + { + "m_Id": "48d0163f1eb44689bd2d92db8b83c26d" + }, + { + "m_Id": "9b7541f5acf24bebab9e6e52ddbd6978" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.FresnelNode", + "m_ObjectId": "2bdcefbcdf6c41c6a3e2987caa8c3026", + "m_Group": { + "m_Id": "d2387c00d8984e4aa40d39ea25262374" + }, + "m_Name": "Fresnel Effect", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1575.9998779296875, + "y": 192.66664123535157, + "width": 209.3331298828125, + "height": 328.0 + } + }, + "m_Slots": [ + { + "m_Id": "093e7e86995446d2ab10f431b05ef76a" + }, + { + "m_Id": "c2bc03b289c8414faefea80453a771d7" + }, + { + "m_Id": "fb35a4ac50284fd7be5ad8f9852599d8" + }, + { + "m_Id": "a3abbf8c77134dfb883d49bd47948ff5" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 2, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "2ce60f6d067840858f6f483fe66f7920", + "m_Id": 1, + "m_DisplayName": "Tiling", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Tiling", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "3048608fbe8642e28d956117310e0289", + "m_Id": 0, + "m_DisplayName": "Base Color", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "BaseColor", + "m_StageCapability": 2, + "m_Value": { + "x": 0.5, + "y": 0.5, + "z": 0.5 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 1.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "33ed807b47194420b7ca5e54e9eaddd5", + "m_Guid": { + "m_GuidSerialized": "6bf14cc0-0608-4ee2-a8ab-3b5e777048a0" + }, + "m_Name": "_Metallic", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "_Metallic", + "m_DefaultReferenceName": "_Metallic", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "346e9930ce5d4eca9bd1178e5109e3f1", + "m_Title": "Base Color", + "m_Position": { + "x": -1750.0, + "y": -418.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "347ba48b64334e4da6257f142dac85bd", + "m_Group": { + "m_Id": "346e9930ce5d4eca9bd1178e5109e3f1" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1725.0, + "y": -320.9999694824219, + "width": 154.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "aa99c20e15b34ddd93fbfc3785e93c84" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "9a38e5a780f542199b7ea2ec7be0f311" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "3ca310b930214bd488cbcfe0fb4c4aa1", + "m_Id": 2, + "m_DisplayName": "T", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "T", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "3df7ef171b554965934cd6c224c2fe01", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "420cff3beaab447a98e34cbb581c753f", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.BaseColor", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "3048608fbe8642e28d956117310e0289" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.BaseColor" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "435c1f0c66d446bcaa8b9305c86b343b", + "m_Id": 0, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "44e63cb3307344a88ed8b1a5f11b3502", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Specular", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "62558937cb274219a225293cb367c131" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Specular" +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector2ShaderProperty", + "m_ObjectId": "482b6de253db465e808a80828ae136f2", + "m_Guid": { + "m_GuidSerialized": "5e3d2d5b-4c27-43b5-a362-5d81e01557f9" + }, + "m_Name": "_NormalTiling", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "_NormalTiling", + "m_DefaultReferenceName": "_NormalTiling", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector2ShaderProperty", + "m_ObjectId": "48a4c9b172e24ee490580e77efba26cc", + "m_Guid": { + "m_GuidSerialized": "3dc1dccc-2e7e-40ab-bdc9-cf5f59fa035f" + }, + "m_Name": "_NormalOffset", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "_NormalOffset", + "m_DefaultReferenceName": "_NormalOffset", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "48d0163f1eb44689bd2d92db8b83c26d", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "49b2e273ff8143c98594122e7bda1921", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "4aa1427bc1fe490a9883f5a6cd2264a4", + "m_Group": { + "m_Id": "e12fecca803d4bcea0269e65353747b9" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -689.3334350585938, + "y": 1431.3336181640625, + "width": 184.66665649414063, + "height": 254.666748046875 + } + }, + "m_Slots": [ + { + "m_Id": "aedd4f017f0a429eaeec2300f2d34a13" + }, + { + "m_Id": "c1693d33b43944939f79836b5ee92b9e" + }, + { + "m_Id": "49b2e273ff8143c98594122e7bda1921" + }, + { + "m_Id": "75e4b2fc2b14411ea596ad6d043bfd19" + }, + { + "m_Id": "1256dd214f7e485c8ceba8ab2793b320" + }, + { + "m_Id": "69185d49db874cdd997509b2bc47ccf4" + }, + { + "m_Id": "3df7ef171b554965934cd6c224c2fe01" + }, + { + "m_Id": "ca01421b190c4577a0224197d2cd5c7a" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 1, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalTarget", + "m_ObjectId": "4aa8a973dd78498e827b15fa6d213bc0", + "m_ActiveSubTarget": { + "m_Id": "8950326a11f44a81b3fc69ca5170c9c1" + }, + "m_AllowMaterialOverride": true, + "m_SurfaceType": 0, + "m_ZTestMode": 4, + "m_ZWriteControl": 0, + "m_AlphaMode": 0, + "m_RenderFace": 2, + "m_AlphaClip": false, + "m_CastShadows": true, + "m_ReceiveShadows": true, + "m_CustomEditorGUI": "", + "m_SupportVFX": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "4b21122999664ab3bd65422a1090bf90", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -111.0, + "y": 498.0000305175781, + "width": 144.99998474121095, + "height": 33.999969482421878 + } + }, + "m_Slots": [ + { + "m_Id": "78d5ba098fff44d784cac38e12121e35" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "d777fa61789b4e60ac09af623ceb253c" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "4b876a2eb5374638aa8127fe007028e1", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SplitNode", + "m_ObjectId": "4f3ed500dc274e0aa11ac48d35310f1a", + "m_Group": { + "m_Id": "d2387c00d8984e4aa40d39ea25262374" + }, + "m_Name": "Split", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1666.0, + "y": 750.0000610351563, + "width": 120.6666259765625, + "height": 150.66656494140626 + } + }, + "m_Slots": [ + { + "m_Id": "a25121cc210e4d98839a6414ec205c52" + }, + { + "m_Id": "55f511eff23a439d8e7bb1b90e286404" + }, + { + "m_Id": "c0d7bc7d667546cfa35d8b3f8dcd2a91" + }, + { + "m_Id": "aeaf3c2e18ac44519565912a2a226e0d" + }, + { + "m_Id": "a949b7346d8e49ebb5620272fcfb649b" + } + ], + "synonyms": [ + "separate" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.BuiltIn.ShaderGraph.BuiltInLitSubTarget", + "m_ObjectId": "4f5ac9a480ac4addaabd14ae58f8f316", + "m_WorkflowMode": 1, + "m_NormalDropOffSpace": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "506c0f1aebfc4ad09f0eb2121587bcbf", + "m_Id": 0, + "m_DisplayName": "_NormalTiling", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "55f511eff23a439d8e7bb1b90e286404", + "m_Id": 1, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "5924130b5dd6473ab2250627bd2fd164", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "597df34c40a4441f998897dc339fb224", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "5caea0051a0243c69d697cdc1c61849f", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "5d643daba2cd49489834d2ff5c533711", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "5f46d02731dd44959c9de80809a55065", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "5f73c8e6a9e04ee6bd08c7ec664f9ead", + "m_Group": { + "m_Id": "d2387c00d8984e4aa40d39ea25262374" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1305.9998779296875, + "y": 368.66668701171877, + "width": 209.333251953125, + "height": 303.99993896484377 + } + }, + "m_Slots": [ + { + "m_Id": "f1e906005cdd4adb8ed714ff5a11decf" + }, + { + "m_Id": "b4d6ff520223479b96c05d917958b9ea" + }, + { + "m_Id": "89c379a11bff4e06a02b4f273fafe67a" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "62558937cb274219a225293cb367c131", + "m_Id": 0, + "m_DisplayName": "Specular Color", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Specular", + "m_StageCapability": 2, + "m_Value": { + "x": 0.5, + "y": 0.5, + "z": 0.5 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "65c92864d5e04998a78eaae24932a8bc", + "m_Id": 2, + "m_DisplayName": "Offset", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Offset", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "66bdfad7baee489e9146ffc0593536e6", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.ColorNode", + "m_ObjectId": "67cd07f9ae82453ea0de2e29dae18080", + "m_Group": { + "m_Id": "346e9930ce5d4eca9bd1178e5109e3f1" + }, + "m_Name": "Color", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1281.0, + "y": -92.00001525878906, + "width": 208.0, + "height": 127.00001525878906 + } + }, + "m_Slots": [ + { + "m_Id": "cc22d74ed8294080a6739d8c60960af4" + } + ], + "synonyms": [ + "rgba" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Color": { + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 0.0 + }, + "mode": 0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "69185d49db874cdd997509b2bc47ccf4", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 3 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "6ad20246b9ee43c1a3d764816839d87e", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "6c6112919ae948c480f769618d6ca3cc", + "m_Id": 0, + "m_DisplayName": "Ambient Occlusion", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Occlusion", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "75e4b2fc2b14411ea596ad6d043bfd19", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "78d5ba098fff44d784cac38e12121e35", + "m_Id": 0, + "m_DisplayName": "_Smoothness", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "7eb10e80af9945558dfdd46a9ab7711d", + "m_Id": 0, + "m_DisplayName": "Normal", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Normal", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 2, + "m_Type": "UnityEditor.Rendering.BuiltIn.ShaderGraph.BuiltInTarget", + "m_ObjectId": "7f4faf20e056441da3400fcf5a01bd1d", + "m_ActiveSubTarget": { + "m_Id": "4f5ac9a480ac4addaabd14ae58f8f316" + }, + "m_AllowMaterialOverride": true, + "m_SurfaceType": 0, + "m_ZWriteControl": 0, + "m_ZTestMode": 4, + "m_AlphaMode": 0, + "m_RenderFace": 2, + "m_AlphaClip": false, + "m_CustomEditorGUI": "" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PositionMaterialSlot", + "m_ObjectId": "82d125805fb943fe9c4a333fbd8e7255", + "m_Id": 0, + "m_DisplayName": "Position", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Position", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "8361725185a94957a52e7ec7c79be04c", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "85094a7e47404ac2ab51e47eafce138f", + "m_Id": 1, + "m_DisplayName": "Strength", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Strength", + "m_StageCapability": 3, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalLitSubTarget", + "m_ObjectId": "8950326a11f44a81b3fc69ca5170c9c1", + "m_WorkflowMode": 1, + "m_NormalDropOffSpace": 0, + "m_ClearCoat": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "89c379a11bff4e06a02b4f273fafe67a", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "8b7d12739f9d4a64ad74d97000195713", + "m_Guid": { + "m_GuidSerialized": "e6af6915-1660-4e93-8ebe-6218e0863f03" + }, + "m_Name": "_RimPower", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "_RimPower", + "m_DefaultReferenceName": "_RimPower", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 5.0, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "8fa23fa35fce46898c7646a5eb1ed324", + "m_Group": { + "m_Id": "e12fecca803d4bcea0269e65353747b9" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1155.3336181640625, + "y": 1648.6671142578125, + "width": 148.66680908203126, + "height": 35.999755859375 + } + }, + "m_Slots": [ + { + "m_Id": "506c0f1aebfc4ad09f0eb2121587bcbf" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "482b6de253db465e808a80828ae136f2" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "90dcf6b524a349428f5929f14d197009", + "m_Id": 0, + "m_DisplayName": "_NormalStrength", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "92a68cfb809948f78bed1524817e802f", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Normal", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "7eb10e80af9945558dfdd46a9ab7711d" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Normal" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "9373dada293e4cfe873ee24758aab624", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "93777603651842e8ba2575a7d75ab84e", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "9a38e5a780f542199b7ea2ec7be0f311", + "m_Guid": { + "m_GuidSerialized": "378aba7a-99d9-4bef-ae7d-ee04663c8b22" + }, + "m_Name": "_MainTexture", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "_MainTexture", + "m_DefaultReferenceName": "_MainTexture", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": false, + "m_Modifiable": true, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "9b7541f5acf24bebab9e6e52ddbd6978", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "9be4b481dfe642d3960f2b92e27f46f7", + "m_Group": { + "m_Id": "d2387c00d8984e4aa40d39ea25262374" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1727.333251953125, + "y": 512.0, + "width": 133.9998779296875, + "height": 36.0 + } + }, + "m_Slots": [ + { + "m_Id": "bc6beafdb79a48e0a51da2b31c014b0d" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "8b7d12739f9d4a64ad74d97000195713" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "a0af5b6dc5e04d53961c9637cae2fd54", + "m_Id": 0, + "m_DisplayName": "_Metallic", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "a0f05ff40df64bf88bdef02e17ad9f58", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "a25121cc210e4d98839a6414ec205c52", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "a3abbf8c77134dfb883d49bd47948ff5", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.TilingAndOffsetNode", + "m_ObjectId": "a494549a5e5c4a9eaa0853c58ef669a7", + "m_Group": { + "m_Id": "e12fecca803d4bcea0269e65353747b9" + }, + "m_Name": "Tiling And Offset", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -982.6668090820313, + "y": 1569.3336181640625, + "width": 209.33331298828126, + "height": 327.9998779296875 + } + }, + "m_Slots": [ + { + "m_Id": "435c1f0c66d446bcaa8b9305c86b343b" + }, + { + "m_Id": "2ce60f6d067840858f6f483fe66f7920" + }, + { + "m_Id": "65c92864d5e04998a78eaae24932a8bc" + }, + { + "m_Id": "5f46d02731dd44959c9de80809a55065" + } + ], + "synonyms": [ + "pan", + "scale" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "a949b7346d8e49ebb5620272fcfb649b", + "m_Id": 4, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "aa99c20e15b34ddd93fbfc3785e93c84", + "m_Id": 0, + "m_DisplayName": "_MainTexture", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalVectorNode", + "m_ObjectId": "ae5e313f8d344ca893e946534337db18", + "m_Group": { + "m_Id": "d2387c00d8984e4aa40d39ea25262374" + }, + "m_Name": "Normal Vector", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1811.9998779296875, + "y": 192.66664123535157, + "width": 207.3331298828125, + "height": 134.6667022705078 + } + }, + "m_Slots": [ + { + "m_Id": "090dac5d94e9450bbca9bf47c6502992" + } + ], + "synonyms": [ + "surface direction" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 2, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Space": 2 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "aeaf3c2e18ac44519565912a2a226e0d", + "m_Id": 3, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "aedd4f017f0a429eaeec2300f2d34a13", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "b235a886335b4c1ab4872a03c9eccfb0", + "m_Group": { + "m_Id": "346e9930ce5d4eca9bd1178e5109e3f1" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1231.0, + "y": -260.0, + "width": 130.0, + "height": 118.00001525878906 + } + }, + "m_Slots": [ + { + "m_Id": "204bf07fc52f464886121fba7aa55854" + }, + { + "m_Id": "ce67ea2f6bc747a9b3388ca695f14173" + }, + { + "m_Id": "d0955daf6fd24052b1262de5b954a04c" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "b4d6ff520223479b96c05d917958b9ea", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "b595b08d61a241218a3d80c369108496", + "m_Group": { + "m_Id": "346e9930ce5d4eca9bd1178e5109e3f1" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1524.0, + "y": -359.0, + "width": 183.0, + "height": 250.99996948242188 + } + }, + "m_Slots": [ + { + "m_Id": "5d643daba2cd49489834d2ff5c533711" + }, + { + "m_Id": "597df34c40a4441f998897dc339fb224" + }, + { + "m_Id": "4b876a2eb5374638aa8127fe007028e1" + }, + { + "m_Id": "93777603651842e8ba2575a7d75ab84e" + }, + { + "m_Id": "8361725185a94957a52e7ec7c79be04c" + }, + { + "m_Id": "5caea0051a0243c69d697cdc1c61849f" + }, + { + "m_Id": "5924130b5dd6473ab2250627bd2fd164" + }, + { + "m_Id": "d5be504a226a48f89855449d24fd4408" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 0, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "b6a22e59a17a422c9ceac09ca5674c70", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.NormalTS", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "1b7a5e0aa600437986160c13473a534c" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.NormalTS" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "b73b6b04fdab45deba4776d91f3464e7", + "m_Group": { + "m_Id": "e12fecca803d4bcea0269e65353747b9" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1155.3336181640625, + "y": 1468.6668701171875, + "width": 150.0, + "height": 36.0001220703125 + } + }, + "m_Slots": [ + { + "m_Id": "e496b85a93f84d2aaed9bffea8dd638a" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "286f78650b2f4e19bbe36808021ec65b" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "bc6beafdb79a48e0a51da2b31c014b0d", + "m_Id": 0, + "m_DisplayName": "_RimPower", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.LerpNode", + "m_ObjectId": "bdf57607f4ba4a3489c0e98ad3c19461", + "m_Group": { + "m_Id": "346e9930ce5d4eca9bd1178e5109e3f1" + }, + "m_Name": "Lerp", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -795.0, + "y": -260.0, + "width": 130.0, + "height": 142.00003051757813 + } + }, + "m_Slots": [ + { + "m_Id": "6ad20246b9ee43c1a3d764816839d87e" + }, + { + "m_Id": "66bdfad7baee489e9146ffc0593536e6" + }, + { + "m_Id": "3ca310b930214bd488cbcfe0fb4c4aa1" + }, + { + "m_Id": "c9f4d4e361714aeda80766b19607836f" + } + ], + "synonyms": [ + "mix", + "blend", + "linear interpolate" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "c0d7bc7d667546cfa35d8b3f8dcd2a91", + "m_Id": 2, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "c1693d33b43944939f79836b5ee92b9e", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ViewDirectionMaterialSlot", + "m_ObjectId": "c2bc03b289c8414faefea80453a771d7", + "m_Id": 1, + "m_DisplayName": "View Dir", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "ViewDir", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 2 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "c3c92150b5bf4f5cba45fc161483f9b3", + "m_Id": 0, + "m_DisplayName": "Emission", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Emission", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_ColorMode": 1, + "m_DefaultColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "c41673cb40ec4182ba75ff9078f9dd76", + "m_Group": { + "m_Id": "e12fecca803d4bcea0269e65353747b9" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1155.3336181640625, + "y": 1682.6669921875, + "width": 153.3333740234375, + "height": 36.0001220703125 + } + }, + "m_Slots": [ + { + "m_Id": "21ecb0ca4fd14bd1963896f80890fcdf" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "48a4c9b172e24ee490580e77efba26cc" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "c9f4d4e361714aeda80766b19607836f", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "ca01421b190c4577a0224197d2cd5c7a", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "cc22d74ed8294080a6739d8c60960af4", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "ce67ea2f6bc747a9b3388ca695f14173", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CategoryData", + "m_ObjectId": "ce7e4776faf54c8c921c004ff57e6a67", + "m_Name": "", + "m_ChildObjectList": [ + { + "m_Id": "13226371ac59487c895d28a58a0b3e3a" + }, + { + "m_Id": "9a38e5a780f542199b7ea2ec7be0f311" + }, + { + "m_Id": "d777fa61789b4e60ac09af623ceb253c" + }, + { + "m_Id": "33ed807b47194420b7ca5e54e9eaddd5" + }, + { + "m_Id": "8b7d12739f9d4a64ad74d97000195713" + }, + { + "m_Id": "0e2d0060fb6647d8acd0791e1a2eb28f" + }, + { + "m_Id": "286f78650b2f4e19bbe36808021ec65b" + }, + { + "m_Id": "482b6de253db465e808a80828ae136f2" + }, + { + "m_Id": "48a4c9b172e24ee490580e77efba26cc" + }, + { + "m_Id": "edabcdf3486a4812ae5658b8254c258d" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "cee5b6702a794bbeb43982d32bfc94fd", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Tangent", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "d0a6e92f04b14b07ba374bcd06109ec8" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Tangent" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "cef58d737f9a4ad88ee208166ef4ce90", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Occlusion", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "6c6112919ae948c480f769618d6ca3cc" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Occlusion" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "d0955daf6fd24052b1262de5b954a04c", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.TangentMaterialSlot", + "m_ObjectId": "d0a6e92f04b14b07ba374bcd06109ec8", + "m_Id": 0, + "m_DisplayName": "Tangent", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Tangent", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "d2387c00d8984e4aa40d39ea25262374", + "m_Title": "Edge Highlight", + "m_Position": { + "x": -1989.333251953125, + "y": 134.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "d5be504a226a48f89855449d24fd4408", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "d777fa61789b4e60ac09af623ceb253c", + "m_Guid": { + "m_GuidSerialized": "0c0c8dbd-aebb-4237-b517-04b8441662cd" + }, + "m_Name": "_Smoothness", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "_Smoothness", + "m_DefaultReferenceName": "_Smoothness", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.5, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "d8b5fc969aca4bf2b3b1da659f582a24", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "dc5c91e79c014636a601536af3db47c8", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Position", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "82d125805fb943fe9c4a333fbd8e7255" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Position" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "e12fecca803d4bcea0269e65353747b9", + "m_Title": "Normal", + "m_Position": { + "x": -1180.6669921875, + "y": 1372.6666259765625 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "e233a5083310407eb373bca889c776fb", + "m_Id": 0, + "m_DisplayName": "_BaseColor", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "e496b85a93f84d2aaed9bffea8dd638a", + "m_Id": 0, + "m_DisplayName": "_NormalMap", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "e6385eca93e04655ac0c7e189b3fcc60", + "m_Group": { + "m_Id": "d2387c00d8984e4aa40d39ea25262374" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1963.9998779296875, + "y": 730.6666259765625, + "width": 130.6666259765625, + "height": 36.0 + } + }, + "m_Slots": [ + { + "m_Id": "ea6145f6bbac4c32be932805370dbecc" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "0e2d0060fb6647d8acd0791e1a2eb28f" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "ea6145f6bbac4c32be932805370dbecc", + "m_Id": 0, + "m_DisplayName": "_RimColor", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "eafb2f1b4ba4441e9fa3108ff8dca237", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.AlphaClipThreshold", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "010c84257e1d457c9139b10afe0c86ce" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.AlphaClipThreshold" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "ec5b4f9bacdc41899dc4d7117d8770c5", + "m_Group": { + "m_Id": "346e9930ce5d4eca9bd1178e5109e3f1" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1008.0, + "y": -176.99998474121095, + "width": 130.0, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "0f2b559f30b14a44ad0eb771394fba11" + }, + { + "m_Id": "168ebbe1e8ff4012ba3f03f575db7f62" + }, + { + "m_Id": "08269a550cd74ba29f50c7d60fb4dcc2" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalStrengthNode", + "m_ObjectId": "ed5c980ec8ff40d8b0929a9783b4749b", + "m_Group": { + "m_Id": "e12fecca803d4bcea0269e65353747b9" + }, + "m_Name": "Normal Strength", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -466.6667785644531, + "y": 1648.6671142578125, + "width": 209.3333740234375, + "height": 303.9998779296875 + } + }, + "m_Slots": [ + { + "m_Id": "a0f05ff40df64bf88bdef02e17ad9f58" + }, + { + "m_Id": "85094a7e47404ac2ab51e47eafce138f" + }, + { + "m_Id": "d8b5fc969aca4bf2b3b1da659f582a24" + } + ], + "synonyms": [ + "intensity" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "edabcdf3486a4812ae5658b8254c258d", + "m_Guid": { + "m_GuidSerialized": "c641259e-615a-4125-a659-964ec1e4ca41" + }, + "m_Name": "_NormalStrength", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "_NormalStrength", + "m_DefaultReferenceName": "_NormalStrength", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.20000000298023225, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "edc683028f7f4a08b249d0f0183a917e", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Emission", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "c3c92150b5bf4f5cba45fc161483f9b3" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Emission" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "f1e906005cdd4adb8ed714ff5a11decf", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "f9bfc7cf42df49dbb5c5bb74afedf657", + "m_Id": 0, + "m_DisplayName": "Metallic", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Metallic", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "fb35a4ac50284fd7be5ad8f9852599d8", + "m_Id": 2, + "m_DisplayName": "Power", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Power", + "m_StageCapability": 3, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "ff719c8fc32845faa0b1dc53fd3eae21", + "m_Group": { + "m_Id": "e12fecca803d4bcea0269e65353747b9" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -669.33349609375, + "y": 1759.333740234375, + "width": 163.99996948242188, + "height": 35.9998779296875 + } + }, + "m_Slots": [ + { + "m_Id": "90dcf6b524a349428f5929f14d197009" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "edabcdf3486a4812ae5658b8254c258d" + } +} + diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Shaders/Interactable.shadergraph.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Shaders/Interactable.shadergraph.meta new file mode 100644 index 00000000..36b31839 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Shaders/Interactable.shadergraph.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 0927d29e476ce5843b1f7d2a96943c51 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Shaders/UI-NoZTest.shader b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Shaders/UI-NoZTest.shader new file mode 100644 index 00000000..c8cc4efc --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Shaders/UI-NoZTest.shader @@ -0,0 +1,95 @@ +Shader "UI/NoZTest" +{ + Properties + { + [PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {} + _Color ("Tint", Color) = (1,1,1,1) + [Toggle(UNITY_UI_ALPHACLIP)] _UseUIAlphaClip ("Use Alpha Clip", Float) = 0 + } + + SubShader + { + Tags + { + "Queue"="Transparent" + "IgnoreProjector"="True" + "RenderType"="Transparent" + "PreviewType"="Plane" + "CanUseSpriteAtlas"="True" + } + + Cull Off + Lighting Off + ZWrite Off + ZTest Off + Blend SrcAlpha OneMinusSrcAlpha + + Pass + { + Name "Default" + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma target 2.0 + + #include "UnityCG.cginc" + #include "UnityUI.cginc" + + #pragma multi_compile_local _ UNITY_UI_CLIP_RECT + #pragma multi_compile_local _ UNITY_UI_ALPHACLIP + + struct appdata_t + { + float4 vertex : POSITION; + float4 color : COLOR; + float2 texcoord : TEXCOORD0; + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct v2f + { + float4 vertex : SV_POSITION; + fixed4 color : COLOR; + float2 texcoord : TEXCOORD0; + float4 worldPosition : TEXCOORD1; + UNITY_VERTEX_OUTPUT_STEREO + }; + + sampler2D _MainTex; + fixed4 _Color; + fixed4 _TextureSampleAdd; + float4 _ClipRect; + float4 _MainTex_ST; + + v2f vert(appdata_t v) + { + v2f OUT; + UNITY_SETUP_INSTANCE_ID(v); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(OUT); + OUT.worldPosition = v.vertex; + OUT.vertex = UnityObjectToClipPos(OUT.worldPosition); + + OUT.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex); + + OUT.color = v.color * _Color; + return OUT; + } + + fixed4 frag(v2f IN) : SV_Target + { + half4 color = (tex2D(_MainTex, IN.texcoord) + _TextureSampleAdd) * IN.color; + + #ifdef UNITY_UI_CLIP_RECT + color.a *= UnityGet2DClipping(IN.worldPosition.xy, _ClipRect); + #endif + + #ifdef UNITY_UI_ALPHACLIP + clip (color.a - 0.001); + #endif + + return color; + } + ENDCG + } + } +} diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Shaders/UI-NoZTest.shader.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Shaders/UI-NoZTest.shader.meta new file mode 100644 index 00000000..c289cee6 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Shaders/UI-NoZTest.shader.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: a661e7516de55c047905f40ca76fe701 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + preprocessorOverride: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Shaders/Unlit_Fresnel.shadergraph b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Shaders/Unlit_Fresnel.shadergraph new file mode 100644 index 00000000..d2cb6950 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Shaders/Unlit_Fresnel.shadergraph @@ -0,0 +1,2197 @@ +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.GraphData", + "m_ObjectId": "34a2241cace747c1aab795b47b74d96c", + "m_Properties": [ + { + "m_Id": "13226371ac59487c895d28a58a0b3e3a" + }, + { + "m_Id": "8b7d12739f9d4a64ad74d97000195713" + }, + { + "m_Id": "0e2d0060fb6647d8acd0791e1a2eb28f" + } + ], + "m_Keywords": [], + "m_Dropdowns": [], + "m_CategoryData": [ + { + "m_Id": "ce7e4776faf54c8c921c004ff57e6a67" + } + ], + "m_Nodes": [ + { + "m_Id": "dc5c91e79c014636a601536af3db47c8" + }, + { + "m_Id": "92a68cfb809948f78bed1524817e802f" + }, + { + "m_Id": "cee5b6702a794bbeb43982d32bfc94fd" + }, + { + "m_Id": "420cff3beaab447a98e34cbb581c753f" + }, + { + "m_Id": "09b3896ce0154c11be905235318d515f" + }, + { + "m_Id": "eafb2f1b4ba4441e9fa3108ff8dca237" + }, + { + "m_Id": "2bdcefbcdf6c41c6a3e2987caa8c3026" + }, + { + "m_Id": "0acf8bd626b94aabb7d43f6b72ce295d" + }, + { + "m_Id": "ae5e313f8d344ca893e946534337db18" + }, + { + "m_Id": "5f73c8e6a9e04ee6bd08c7ec664f9ead" + }, + { + "m_Id": "4f3ed500dc274e0aa11ac48d35310f1a" + }, + { + "m_Id": "9be4b481dfe642d3960f2b92e27f46f7" + }, + { + "m_Id": "e6385eca93e04655ac0c7e189b3fcc60" + }, + { + "m_Id": "287d175dfb7e44c18187bdf69ed6d5d0" + }, + { + "m_Id": "168e578c571c4e899268bfd7419acebb" + }, + { + "m_Id": "aaaf13e266e24c96b49d642e1d29febc" + }, + { + "m_Id": "1225ed0d1aa34528bbc8820b38841316" + }, + { + "m_Id": "3a2438f9bbdd447ca9be452f10c6038b" + } + ], + "m_GroupDatas": [ + { + "m_Id": "d2387c00d8984e4aa40d39ea25262374" + }, + { + "m_Id": "9366a6b5dbf4480fa0dbd4f5767c9c60" + } + ], + "m_StickyNoteDatas": [], + "m_Edges": [ + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "0acf8bd626b94aabb7d43f6b72ce295d" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "2bdcefbcdf6c41c6a3e2987caa8c3026" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "1225ed0d1aa34528bbc8820b38841316" + }, + "m_SlotId": 4 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "3a2438f9bbdd447ca9be452f10c6038b" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "168e578c571c4e899268bfd7419acebb" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "287d175dfb7e44c18187bdf69ed6d5d0" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "287d175dfb7e44c18187bdf69ed6d5d0" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "420cff3beaab447a98e34cbb581c753f" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "2bdcefbcdf6c41c6a3e2987caa8c3026" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "5f73c8e6a9e04ee6bd08c7ec664f9ead" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "3a2438f9bbdd447ca9be452f10c6038b" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "168e578c571c4e899268bfd7419acebb" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "4f3ed500dc274e0aa11ac48d35310f1a" + }, + "m_SlotId": 4 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "09b3896ce0154c11be905235318d515f" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "4f3ed500dc274e0aa11ac48d35310f1a" + }, + "m_SlotId": 4 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "287d175dfb7e44c18187bdf69ed6d5d0" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "5f73c8e6a9e04ee6bd08c7ec664f9ead" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "168e578c571c4e899268bfd7419acebb" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "9be4b481dfe642d3960f2b92e27f46f7" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "2bdcefbcdf6c41c6a3e2987caa8c3026" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "aaaf13e266e24c96b49d642e1d29febc" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "1225ed0d1aa34528bbc8820b38841316" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "aaaf13e266e24c96b49d642e1d29febc" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "3a2438f9bbdd447ca9be452f10c6038b" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "ae5e313f8d344ca893e946534337db18" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "2bdcefbcdf6c41c6a3e2987caa8c3026" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "e6385eca93e04655ac0c7e189b3fcc60" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "4f3ed500dc274e0aa11ac48d35310f1a" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "e6385eca93e04655ac0c7e189b3fcc60" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "5f73c8e6a9e04ee6bd08c7ec664f9ead" + }, + "m_SlotId": 1 + } + } + ], + "m_VertexContext": { + "m_Position": { + "x": 112.99992370605469, + "y": 132.00003051757813 + }, + "m_Blocks": [ + { + "m_Id": "dc5c91e79c014636a601536af3db47c8" + }, + { + "m_Id": "92a68cfb809948f78bed1524817e802f" + }, + { + "m_Id": "cee5b6702a794bbeb43982d32bfc94fd" + } + ] + }, + "m_FragmentContext": { + "m_Position": { + "x": 112.99992370605469, + "y": 331.9999084472656 + }, + "m_Blocks": [ + { + "m_Id": "420cff3beaab447a98e34cbb581c753f" + }, + { + "m_Id": "09b3896ce0154c11be905235318d515f" + }, + { + "m_Id": "eafb2f1b4ba4441e9fa3108ff8dca237" + } + ] + }, + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "preventRotation": false + }, + "m_Path": "Shader Graphs", + "m_GraphPrecision": 1, + "m_PreviewMode": 2, + "m_OutputNode": { + "m_Id": "" + }, + "m_ActiveTargets": [ + { + "m_Id": "7f4faf20e056441da3400fcf5a01bd1d" + }, + { + "m_Id": "4aa8a973dd78498e827b15fa6d213bc0" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "000fa6abe01e4941816071bbc2cb95dc", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "010c84257e1d457c9139b10afe0c86ce", + "m_Id": 0, + "m_DisplayName": "Alpha Clip Threshold", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "AlphaClipThreshold", + "m_StageCapability": 2, + "m_Value": 0.5, + "m_DefaultValue": 0.5, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "07b346956d8e427a8fb6a4e597439425", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "090dac5d94e9450bbca9bf47c6502992", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "093e7e86995446d2ab10f431b05ef76a", + "m_Id": 0, + "m_DisplayName": "Normal", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Normal", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 2 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "09b3896ce0154c11be905235318d515f", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Alpha", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "1b62da38b8ef48edb6ff30ae07ce41b8" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Alpha" +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.ViewDirectionNode", + "m_ObjectId": "0acf8bd626b94aabb7d43f6b72ce295d", + "m_Group": { + "m_Id": "d2387c00d8984e4aa40d39ea25262374" + }, + "m_Name": "View Direction", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1810.0001220703125, + "y": 332.0, + "width": 207.3333740234375, + "height": 134.66677856445313 + } + }, + "m_Slots": [ + { + "m_Id": "07b346956d8e427a8fb6a4e597439425" + } + ], + "synonyms": [ + "eye direction" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 2, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Space": 2 +} + +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.Internal.ColorShaderProperty", + "m_ObjectId": "0e2d0060fb6647d8acd0791e1a2eb28f", + "m_Guid": { + "m_GuidSerialized": "c5c7a42b-05c6-4506-8cd3-7905607cdb99" + }, + "m_Name": "_RimColor", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "_RimColor", + "m_DefaultReferenceName": "_RimColor", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "isMainColor": false, + "m_ColorMode": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SplitNode", + "m_ObjectId": "1225ed0d1aa34528bbc8820b38841316", + "m_Group": { + "m_Id": "9366a6b5dbf4480fa0dbd4f5767c9c60" + }, + "m_Name": "Split", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1626.666748046875, + "y": -184.66664123535157, + "width": 120.6666259765625, + "height": 150.66668701171876 + } + }, + "m_Slots": [ + { + "m_Id": "d5376d2c832b407dab229ebc86c45dbe" + }, + { + "m_Id": "833fbccf318544d39d7164fab452a107" + }, + { + "m_Id": "ca09841cca9a4690a1c73b29a09ceffa" + }, + { + "m_Id": "f4d4793d915849e59674f61477e74517" + }, + { + "m_Id": "4144cd4ea63745f18260f8c6319348a9" + } + ], + "synonyms": [ + "separate" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.Internal.ColorShaderProperty", + "m_ObjectId": "13226371ac59487c895d28a58a0b3e3a", + "m_Guid": { + "m_GuidSerialized": "63931a48-e350-41dc-959a-31ee6a7dd197" + }, + "m_Name": "_BaseColor", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "_BaseColor", + "m_DefaultReferenceName": "_BaseColor", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "isMainColor": false, + "m_ColorMode": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.AddNode", + "m_ObjectId": "168e578c571c4e899268bfd7419acebb", + "m_Group": { + "m_Id": "d2387c00d8984e4aa40d39ea25262374" + }, + "m_Name": "Add", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -950.0, + "y": 212.00009155273438, + "width": 209.33343505859376, + "height": 303.9999694824219 + } + }, + "m_Slots": [ + { + "m_Id": "c80b647882c94d8787e4f128cd9e7f29" + }, + { + "m_Id": "000fa6abe01e4941816071bbc2cb95dc" + }, + { + "m_Id": "1908a33a15f442f5b9213bd2a0249aee" + } + ], + "synonyms": [ + "addition", + "sum", + "plus" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "1908a33a15f442f5b9213bd2a0249aee", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "1b62da38b8ef48edb6ff30ae07ce41b8", + "m_Id": 0, + "m_DisplayName": "Alpha", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Alpha", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "287d175dfb7e44c18187bdf69ed6d5d0", + "m_Group": { + "m_Id": "d2387c00d8984e4aa40d39ea25262374" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -687.3333129882813, + "y": 804.6666259765625, + "width": 209.33328247070313, + "height": 304.000244140625 + } + }, + "m_Slots": [ + { + "m_Id": "9373dada293e4cfe873ee24758aab624" + }, + { + "m_Id": "48d0163f1eb44689bd2d92db8b83c26d" + }, + { + "m_Id": "9b7541f5acf24bebab9e6e52ddbd6978" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.FresnelNode", + "m_ObjectId": "2bdcefbcdf6c41c6a3e2987caa8c3026", + "m_Group": { + "m_Id": "d2387c00d8984e4aa40d39ea25262374" + }, + "m_Name": "Fresnel Effect", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1574.0, + "y": 187.99996948242188, + "width": 209.333251953125, + "height": 328.0000915527344 + } + }, + "m_Slots": [ + { + "m_Id": "093e7e86995446d2ab10f431b05ef76a" + }, + { + "m_Id": "c2bc03b289c8414faefea80453a771d7" + }, + { + "m_Id": "fb35a4ac50284fd7be5ad8f9852599d8" + }, + { + "m_Id": "a3abbf8c77134dfb883d49bd47948ff5" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 2, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "3048608fbe8642e28d956117310e0289", + "m_Id": 0, + "m_DisplayName": "Base Color", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "BaseColor", + "m_StageCapability": 2, + "m_Value": { + "x": 0.5, + "y": 0.5, + "z": 0.5 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "3a2438f9bbdd447ca9be452f10c6038b", + "m_Group": { + "m_Id": "9366a6b5dbf4480fa0dbd4f5767c9c60" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1373.33349609375, + "y": -305.3332824707031, + "width": 209.3333740234375, + "height": 304.0 + } + }, + "m_Slots": [ + { + "m_Id": "e1135e6b17d64d509abf98c806937086" + }, + { + "m_Id": "45dba6cbeb7b46f0a2e873d6331798f7" + }, + { + "m_Id": "dfb61dcd21c049d58e6ea6d0a7258051" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "4144cd4ea63745f18260f8c6319348a9", + "m_Id": 4, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "420cff3beaab447a98e34cbb581c753f", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.BaseColor", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "3048608fbe8642e28d956117310e0289" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.BaseColor" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "45dba6cbeb7b46f0a2e873d6331798f7", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "477e186e47b34829a9654e492c14b7aa", + "m_Id": 0, + "m_DisplayName": "_BaseColor", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "48d0163f1eb44689bd2d92db8b83c26d", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalTarget", + "m_ObjectId": "4aa8a973dd78498e827b15fa6d213bc0", + "m_ActiveSubTarget": { + "m_Id": "82b2f67b52b0430a8982266199ef17c0" + }, + "m_AllowMaterialOverride": true, + "m_SurfaceType": 1, + "m_ZTestMode": 4, + "m_ZWriteControl": 0, + "m_AlphaMode": 0, + "m_RenderFace": 2, + "m_AlphaClip": false, + "m_CastShadows": false, + "m_ReceiveShadows": true, + "m_CustomEditorGUI": "", + "m_SupportVFX": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SplitNode", + "m_ObjectId": "4f3ed500dc274e0aa11ac48d35310f1a", + "m_Group": { + "m_Id": "d2387c00d8984e4aa40d39ea25262374" + }, + "m_Name": "Split", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1664.0, + "y": 745.3333129882813, + "width": 120.6666259765625, + "height": 150.666748046875 + } + }, + "m_Slots": [ + { + "m_Id": "a25121cc210e4d98839a6414ec205c52" + }, + { + "m_Id": "55f511eff23a439d8e7bb1b90e286404" + }, + { + "m_Id": "c0d7bc7d667546cfa35d8b3f8dcd2a91" + }, + { + "m_Id": "aeaf3c2e18ac44519565912a2a226e0d" + }, + { + "m_Id": "a949b7346d8e49ebb5620272fcfb649b" + } + ], + "synonyms": [ + "separate" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "55f511eff23a439d8e7bb1b90e286404", + "m_Id": 1, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "5f73c8e6a9e04ee6bd08c7ec664f9ead", + "m_Group": { + "m_Id": "d2387c00d8984e4aa40d39ea25262374" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1304.0, + "y": 364.0, + "width": 209.3331298828125, + "height": 304.00006103515627 + } + }, + "m_Slots": [ + { + "m_Id": "f1e906005cdd4adb8ed714ff5a11decf" + }, + { + "m_Id": "b4d6ff520223479b96c05d917958b9ea" + }, + { + "m_Id": "89c379a11bff4e06a02b4f273fafe67a" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "7eb10e80af9945558dfdd46a9ab7711d", + "m_Id": 0, + "m_DisplayName": "Normal", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Normal", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.BuiltIn.ShaderGraph.BuiltInUnlitSubTarget", + "m_ObjectId": "7ec39f14b8b1406aaf27b19e88495159" +} + +{ + "m_SGVersion": 2, + "m_Type": "UnityEditor.Rendering.BuiltIn.ShaderGraph.BuiltInTarget", + "m_ObjectId": "7f4faf20e056441da3400fcf5a01bd1d", + "m_ActiveSubTarget": { + "m_Id": "7ec39f14b8b1406aaf27b19e88495159" + }, + "m_AllowMaterialOverride": true, + "m_SurfaceType": 1, + "m_ZWriteControl": 0, + "m_ZTestMode": 4, + "m_AlphaMode": 0, + "m_RenderFace": 2, + "m_AlphaClip": false, + "m_CustomEditorGUI": "" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalUnlitSubTarget", + "m_ObjectId": "82b2f67b52b0430a8982266199ef17c0" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PositionMaterialSlot", + "m_ObjectId": "82d125805fb943fe9c4a333fbd8e7255", + "m_Id": 0, + "m_DisplayName": "Position", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Position", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "833fbccf318544d39d7164fab452a107", + "m_Id": 1, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "89c379a11bff4e06a02b4f273fafe67a", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "8b7d12739f9d4a64ad74d97000195713", + "m_Guid": { + "m_GuidSerialized": "e6af6915-1660-4e93-8ebe-6218e0863f03" + }, + "m_Name": "_RimPower", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "_RimPower", + "m_DefaultReferenceName": "_RimPower", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 5.0, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "92a68cfb809948f78bed1524817e802f", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Normal", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "7eb10e80af9945558dfdd46a9ab7711d" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Normal" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "9366a6b5dbf4480fa0dbd4f5767c9c60", + "m_Title": "Base Color", + "m_Position": { + "x": -1808.7840576171875, + "y": -363.76800537109377 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "9373dada293e4cfe873ee24758aab624", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "9b7541f5acf24bebab9e6e52ddbd6978", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "9be4b481dfe642d3960f2b92e27f46f7", + "m_Group": { + "m_Id": "d2387c00d8984e4aa40d39ea25262374" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1725.3333740234375, + "y": 507.3334045410156, + "width": 133.9998779296875, + "height": 35.999969482421878 + } + }, + "m_Slots": [ + { + "m_Id": "bc6beafdb79a48e0a51da2b31c014b0d" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "8b7d12739f9d4a64ad74d97000195713" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "a25121cc210e4d98839a6414ec205c52", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "a3abbf8c77134dfb883d49bd47948ff5", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "a949b7346d8e49ebb5620272fcfb649b", + "m_Id": 4, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "aaaf13e266e24c96b49d642e1d29febc", + "m_Group": { + "m_Id": "9366a6b5dbf4480fa0dbd4f5767c9c60" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1784.0, + "y": -256.6666564941406, + "width": 137.3331298828125, + "height": 36.000030517578128 + } + }, + "m_Slots": [ + { + "m_Id": "477e186e47b34829a9654e492c14b7aa" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "13226371ac59487c895d28a58a0b3e3a" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalVectorNode", + "m_ObjectId": "ae5e313f8d344ca893e946534337db18", + "m_Group": { + "m_Id": "d2387c00d8984e4aa40d39ea25262374" + }, + "m_Name": "Normal Vector", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1810.0001220703125, + "y": 187.99996948242188, + "width": 207.3333740234375, + "height": 134.666748046875 + } + }, + "m_Slots": [ + { + "m_Id": "090dac5d94e9450bbca9bf47c6502992" + } + ], + "synonyms": [ + "surface direction" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 2, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Space": 2 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "aeaf3c2e18ac44519565912a2a226e0d", + "m_Id": 3, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "b4d6ff520223479b96c05d917958b9ea", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "bc6beafdb79a48e0a51da2b31c014b0d", + "m_Id": 0, + "m_DisplayName": "_RimPower", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "c0d7bc7d667546cfa35d8b3f8dcd2a91", + "m_Id": 2, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ViewDirectionMaterialSlot", + "m_ObjectId": "c2bc03b289c8414faefea80453a771d7", + "m_Id": 1, + "m_DisplayName": "View Dir", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "ViewDir", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 2 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "c80b647882c94d8787e4f128cd9e7f29", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "ca09841cca9a4690a1c73b29a09ceffa", + "m_Id": 2, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CategoryData", + "m_ObjectId": "ce7e4776faf54c8c921c004ff57e6a67", + "m_Name": "", + "m_ChildObjectList": [ + { + "m_Id": "13226371ac59487c895d28a58a0b3e3a" + }, + { + "m_Id": "8b7d12739f9d4a64ad74d97000195713" + }, + { + "m_Id": "0e2d0060fb6647d8acd0791e1a2eb28f" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "cee5b6702a794bbeb43982d32bfc94fd", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Tangent", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "d0a6e92f04b14b07ba374bcd06109ec8" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Tangent" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.TangentMaterialSlot", + "m_ObjectId": "d0a6e92f04b14b07ba374bcd06109ec8", + "m_Id": 0, + "m_DisplayName": "Tangent", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Tangent", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "d2387c00d8984e4aa40d39ea25262374", + "m_Title": "Edge Highlight", + "m_Position": { + "x": -1987.020263671875, + "y": 129.37379455566407 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "d5376d2c832b407dab229ebc86c45dbe", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "dc5c91e79c014636a601536af3db47c8", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Position", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "82d125805fb943fe9c4a333fbd8e7255" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Position" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "dfb61dcd21c049d58e6ea6d0a7258051", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "e1135e6b17d64d509abf98c806937086", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "e6385eca93e04655ac0c7e189b3fcc60", + "m_Group": { + "m_Id": "d2387c00d8984e4aa40d39ea25262374" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1962.0, + "y": 726.0001220703125, + "width": 130.6666259765625, + "height": 35.99993896484375 + } + }, + "m_Slots": [ + { + "m_Id": "ea6145f6bbac4c32be932805370dbecc" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "0e2d0060fb6647d8acd0791e1a2eb28f" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "ea6145f6bbac4c32be932805370dbecc", + "m_Id": 0, + "m_DisplayName": "_RimColor", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "eafb2f1b4ba4441e9fa3108ff8dca237", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.AlphaClipThreshold", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "010c84257e1d457c9139b10afe0c86ce" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.AlphaClipThreshold" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "f1e906005cdd4adb8ed714ff5a11decf", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "f4d4793d915849e59674f61477e74517", + "m_Id": 3, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "fb35a4ac50284fd7be5ad8f9852599d8", + "m_Id": 2, + "m_DisplayName": "Power", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Power", + "m_StageCapability": 3, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [] +} + diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Shaders/Unlit_Fresnel.shadergraph.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Shaders/Unlit_Fresnel.shadergraph.meta new file mode 100644 index 00000000..9125bd13 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Shaders/Unlit_Fresnel.shadergraph.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: e19b5bb6cb8e91e43b1b5d81a069296f +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Shaders/Unlit_ShaderGraph.shadergraph b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Shaders/Unlit_ShaderGraph.shadergraph new file mode 100644 index 00000000..081e286c --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Shaders/Unlit_ShaderGraph.shadergraph @@ -0,0 +1,755 @@ +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.GraphData", + "m_ObjectId": "34a2241cace747c1aab795b47b74d96c", + "m_Properties": [ + { + "m_Id": "13226371ac59487c895d28a58a0b3e3a" + } + ], + "m_Keywords": [], + "m_Dropdowns": [], + "m_CategoryData": [ + { + "m_Id": "ce7e4776faf54c8c921c004ff57e6a67" + } + ], + "m_Nodes": [ + { + "m_Id": "dc5c91e79c014636a601536af3db47c8" + }, + { + "m_Id": "92a68cfb809948f78bed1524817e802f" + }, + { + "m_Id": "cee5b6702a794bbeb43982d32bfc94fd" + }, + { + "m_Id": "420cff3beaab447a98e34cbb581c753f" + }, + { + "m_Id": "f52a2322fd3545fc8d54cb272e73bfc9" + }, + { + "m_Id": "09b3896ce0154c11be905235318d515f" + }, + { + "m_Id": "eafb2f1b4ba4441e9fa3108ff8dca237" + }, + { + "m_Id": "7c518b6728a74dd58425375b3226e89a" + } + ], + "m_GroupDatas": [], + "m_StickyNoteDatas": [], + "m_Edges": [ + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "7c518b6728a74dd58425375b3226e89a" + }, + "m_SlotId": 4 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "09b3896ce0154c11be905235318d515f" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "f52a2322fd3545fc8d54cb272e73bfc9" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "420cff3beaab447a98e34cbb581c753f" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "f52a2322fd3545fc8d54cb272e73bfc9" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "7c518b6728a74dd58425375b3226e89a" + }, + "m_SlotId": 0 + } + } + ], + "m_VertexContext": { + "m_Position": { + "x": 0.0, + "y": 0.0 + }, + "m_Blocks": [ + { + "m_Id": "dc5c91e79c014636a601536af3db47c8" + }, + { + "m_Id": "92a68cfb809948f78bed1524817e802f" + }, + { + "m_Id": "cee5b6702a794bbeb43982d32bfc94fd" + } + ] + }, + "m_FragmentContext": { + "m_Position": { + "x": 0.0, + "y": 200.0 + }, + "m_Blocks": [ + { + "m_Id": "420cff3beaab447a98e34cbb581c753f" + }, + { + "m_Id": "09b3896ce0154c11be905235318d515f" + }, + { + "m_Id": "eafb2f1b4ba4441e9fa3108ff8dca237" + } + ] + }, + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "preventRotation": false + }, + "m_Path": "Shader Graphs", + "m_GraphPrecision": 1, + "m_PreviewMode": 2, + "m_OutputNode": { + "m_Id": "" + }, + "m_ActiveTargets": [ + { + "m_Id": "7f4faf20e056441da3400fcf5a01bd1d" + }, + { + "m_Id": "4aa8a973dd78498e827b15fa6d213bc0" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "010c84257e1d457c9139b10afe0c86ce", + "m_Id": 0, + "m_DisplayName": "Alpha Clip Threshold", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "AlphaClipThreshold", + "m_StageCapability": 2, + "m_Value": 0.5, + "m_DefaultValue": 0.5, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "09b3896ce0154c11be905235318d515f", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Alpha", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "1b62da38b8ef48edb6ff30ae07ce41b8" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Alpha" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "0ec2aeaa7acc4cc48c62853418ca386c", + "m_Id": 1, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.Internal.ColorShaderProperty", + "m_ObjectId": "13226371ac59487c895d28a58a0b3e3a", + "m_Guid": { + "m_GuidSerialized": "63931a48-e350-41dc-959a-31ee6a7dd197" + }, + "m_Name": "_BaseColor", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "_BaseColor", + "m_DefaultReferenceName": "_BaseColor", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "isMainColor": false, + "m_ColorMode": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "1b62da38b8ef48edb6ff30ae07ce41b8", + "m_Id": 0, + "m_DisplayName": "Alpha", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Alpha", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "2e8b814f0659493c9ce45b430a57e441", + "m_Id": 2, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "3048608fbe8642e28d956117310e0289", + "m_Id": 0, + "m_DisplayName": "Base Color", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "BaseColor", + "m_StageCapability": 2, + "m_Value": { + "x": 0.5, + "y": 0.5, + "z": 0.5 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "365c7afee0714a3b9372d00357cd2b02", + "m_Id": 3, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalUnlitSubTarget", + "m_ObjectId": "40976af7a36e42dfbe8c0521a60373d4" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "420cff3beaab447a98e34cbb581c753f", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.BaseColor", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "3048608fbe8642e28d956117310e0289" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.BaseColor" +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalTarget", + "m_ObjectId": "4aa8a973dd78498e827b15fa6d213bc0", + "m_ActiveSubTarget": { + "m_Id": "40976af7a36e42dfbe8c0521a60373d4" + }, + "m_AllowMaterialOverride": true, + "m_SurfaceType": 0, + "m_ZTestMode": 4, + "m_ZWriteControl": 0, + "m_AlphaMode": 0, + "m_RenderFace": 2, + "m_AlphaClip": false, + "m_CastShadows": true, + "m_ReceiveShadows": true, + "m_CustomEditorGUI": "", + "m_SupportVFX": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "5cf0ea0b89f34f509aa33f89065dc276", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.BuiltIn.ShaderGraph.BuiltInUnlitSubTarget", + "m_ObjectId": "5e730d4e0f344a498bfb4038e0d45f8f" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SplitNode", + "m_ObjectId": "7c518b6728a74dd58425375b3226e89a", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Split", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -282.3333435058594, + "y": 346.33331298828127, + "width": 120.66665649414063, + "height": 150.66665649414063 + } + }, + "m_Slots": [ + { + "m_Id": "5cf0ea0b89f34f509aa33f89065dc276" + }, + { + "m_Id": "0ec2aeaa7acc4cc48c62853418ca386c" + }, + { + "m_Id": "2e8b814f0659493c9ce45b430a57e441" + }, + { + "m_Id": "365c7afee0714a3b9372d00357cd2b02" + }, + { + "m_Id": "800f5ac4bddf40ccb0e846b3f7bc6577" + } + ], + "synonyms": [ + "separate" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "7eb10e80af9945558dfdd46a9ab7711d", + "m_Id": 0, + "m_DisplayName": "Normal", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Normal", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 2, + "m_Type": "UnityEditor.Rendering.BuiltIn.ShaderGraph.BuiltInTarget", + "m_ObjectId": "7f4faf20e056441da3400fcf5a01bd1d", + "m_ActiveSubTarget": { + "m_Id": "5e730d4e0f344a498bfb4038e0d45f8f" + }, + "m_AllowMaterialOverride": true, + "m_SurfaceType": 0, + "m_ZWriteControl": 0, + "m_ZTestMode": 4, + "m_AlphaMode": 0, + "m_RenderFace": 2, + "m_AlphaClip": false, + "m_CustomEditorGUI": "" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "800f5ac4bddf40ccb0e846b3f7bc6577", + "m_Id": 4, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PositionMaterialSlot", + "m_ObjectId": "82d125805fb943fe9c4a333fbd8e7255", + "m_Id": 0, + "m_DisplayName": "Position", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Position", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "92a68cfb809948f78bed1524817e802f", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Normal", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "7eb10e80af9945558dfdd46a9ab7711d" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Normal" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "a8a5050a744e447eb795eda3239ce13a", + "m_Id": 0, + "m_DisplayName": "_BaseColor", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CategoryData", + "m_ObjectId": "ce7e4776faf54c8c921c004ff57e6a67", + "m_Name": "", + "m_ChildObjectList": [ + { + "m_Id": "13226371ac59487c895d28a58a0b3e3a" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "cee5b6702a794bbeb43982d32bfc94fd", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Tangent", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "d0a6e92f04b14b07ba374bcd06109ec8" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Tangent" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.TangentMaterialSlot", + "m_ObjectId": "d0a6e92f04b14b07ba374bcd06109ec8", + "m_Id": 0, + "m_DisplayName": "Tangent", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Tangent", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "dc5c91e79c014636a601536af3db47c8", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Position", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "82d125805fb943fe9c4a333fbd8e7255" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Position" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "eafb2f1b4ba4441e9fa3108ff8dca237", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.AlphaClipThreshold", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "010c84257e1d457c9139b10afe0c86ce" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.AlphaClipThreshold" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "f52a2322fd3545fc8d54cb272e73bfc9", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -455.3333435058594, + "y": 245.33334350585938, + "width": 137.33334350585938, + "height": 35.999969482421878 + } + }, + "m_Slots": [ + { + "m_Id": "a8a5050a744e447eb795eda3239ce13a" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "13226371ac59487c895d28a58a0b3e3a" + } +} + diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Shaders/Unlit_ShaderGraph.shadergraph.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Shaders/Unlit_ShaderGraph.shadergraph.meta new file mode 100644 index 00000000..26100b16 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Shaders/Unlit_ShaderGraph.shadergraph.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 740445f1490c01e4b8feacf8d9ab5e7f +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Unity.XR.Interaction.Toolkit.Samples.StarterAssets.asmdef b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/StarterAssets.asmdef similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Unity.XR.Interaction.Toolkit.Samples.StarterAssets.asmdef rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/StarterAssets.asmdef diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Unity.XR.Interaction.Toolkit.Samples.StarterAssets.asmdef.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/StarterAssets.asmdef.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Unity.XR.Interaction.Toolkit.Samples.StarterAssets.asmdef.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/StarterAssets.asmdef.meta diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Textures.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Textures.meta new file mode 100644 index 00000000..283e3e70 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Textures.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 91a77be4c84205e4ba7056605bdb9e1d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Textures/DefaultMaterial_AO.png b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Textures/DefaultMaterial_AO.png new file mode 100644 index 00000000..05da5ba9 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Textures/DefaultMaterial_AO.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b2339b3e506470ef40d4c3d6a617bc4f1d3be0cc6910a2c9eecbfb8088b94824 +size 891404 diff --git a/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Textures/DefaultMaterial_AO.png.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Textures/DefaultMaterial_AO.png.meta new file mode 100644 index 00000000..6b36516d --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/Textures/DefaultMaterial_AO.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: 85e675893a909864d9c237e20202651b +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: 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: Server + 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/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Tunneling Vignette.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/TunnelingVignette.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Tunneling Vignette.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/TunnelingVignette.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Tunneling Vignette/TunnelingVignette.mat b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/TunnelingVignette/TunnelingVignette.mat similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Tunneling Vignette/TunnelingVignette.mat rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/TunnelingVignette/TunnelingVignette.mat diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Tunneling Vignette/TunnelingVignette.mat.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/TunnelingVignette/TunnelingVignette.mat.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Tunneling Vignette/TunnelingVignette.mat.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/TunnelingVignette/TunnelingVignette.mat.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Tunneling Vignette/TunnelingVignette.prefab b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/TunnelingVignette/TunnelingVignette.prefab similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Tunneling Vignette/TunnelingVignette.prefab rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/TunnelingVignette/TunnelingVignette.prefab diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Tunneling Vignette/TunnelingVignette.prefab.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/TunnelingVignette/TunnelingVignette.prefab.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Tunneling Vignette/TunnelingVignette.prefab.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/TunnelingVignette/TunnelingVignette.prefab.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Tunneling Vignette/TunnelingVignette.shader b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/TunnelingVignette/TunnelingVignette.shader similarity index 99% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Tunneling Vignette/TunnelingVignette.shader rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/TunnelingVignette/TunnelingVignette.shader index 5ed7341f..75cb88e9 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Tunneling Vignette/TunnelingVignette.shader +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/TunnelingVignette/TunnelingVignette.shader @@ -75,4 +75,4 @@ Shader "VR/TunnelingVignette" ENDCG } } -} \ No newline at end of file +} diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Tunneling Vignette/TunnelingVignette.shader.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/TunnelingVignette/TunnelingVignette.shader.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Tunneling Vignette/TunnelingVignette.shader.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/TunnelingVignette/TunnelingVignette.shader.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Tunneling Vignette/TunnelingVignetteHemisphere.fbx b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/TunnelingVignette/TunnelingVignetteHemisphere.fbx similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Tunneling Vignette/TunnelingVignetteHemisphere.fbx rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/TunnelingVignette/TunnelingVignetteHemisphere.fbx diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Tunneling Vignette/TunnelingVignetteHemisphere.fbx.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/TunnelingVignette/TunnelingVignetteHemisphere.fbx.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Tunneling Vignette/TunnelingVignetteHemisphere.fbx.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/TunnelingVignette/TunnelingVignetteHemisphere.fbx.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Tunneling Vignette/TunnelingVignetteSG.shadergraph b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/TunnelingVignette/TunnelingVignetteSG.shadergraph similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Tunneling Vignette/TunnelingVignetteSG.shadergraph rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/TunnelingVignette/TunnelingVignetteSG.shadergraph diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Tunneling Vignette/TunnelingVignetteSG.shadergraph.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/TunnelingVignette/TunnelingVignetteSG.shadergraph.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/Tunneling Vignette/TunnelingVignetteSG.shadergraph.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/TunnelingVignette/TunnelingVignetteSG.shadergraph.meta diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/XRI Default Input Actions.inputactions b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/XRI Default Input Actions.inputactions similarity index 77% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/XRI Default Input Actions.inputactions rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/XRI Default Input Actions.inputactions index 62822989..3dcc2615 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/XRI Default Input Actions.inputactions +++ b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/XRI Default Input Actions.inputactions @@ -85,7 +85,7 @@ "path": "/centerEyePosition", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Position", "isComposite": false, "isPartOfComposite": false @@ -107,7 +107,7 @@ "path": "/centerEyeRotation", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Rotation", "isComposite": false, "isPartOfComposite": false @@ -140,7 +140,7 @@ "path": "/pose/rotation", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Eye Gaze Rotation", "isComposite": false, "isPartOfComposite": true @@ -151,7 +151,7 @@ "path": "/centerEyeRotation", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Eye Gaze Rotation", "isComposite": false, "isPartOfComposite": true @@ -162,7 +162,7 @@ "path": "", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Eye Gaze Rotation", "isComposite": false, "isPartOfComposite": true @@ -184,7 +184,7 @@ "path": "/pose/position", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Eye Gaze Position", "isComposite": false, "isPartOfComposite": true @@ -195,7 +195,7 @@ "path": "/centerEyePosition", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Eye Gaze Position", "isComposite": false, "isPartOfComposite": true @@ -206,7 +206,7 @@ "path": "", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Eye Gaze Position", "isComposite": false, "isPartOfComposite": true @@ -228,7 +228,7 @@ "path": "/pose/trackingState", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Eye Gaze Tracking State", "isComposite": false, "isPartOfComposite": true @@ -239,7 +239,7 @@ "path": "/trackingState", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Eye Gaze Tracking State", "isComposite": false, "isPartOfComposite": true @@ -250,7 +250,7 @@ "path": "", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Eye Gaze Tracking State", "isComposite": false, "isPartOfComposite": true @@ -261,7 +261,7 @@ "path": "/trackingState", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Tracking State", "isComposite": false, "isPartOfComposite": false @@ -272,7 +272,7 @@ "path": "/isTracked", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Is Tracked", "isComposite": false, "isPartOfComposite": false @@ -294,7 +294,7 @@ "path": "/pose/isTracked", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Eye Gaze Is Tracked", "isComposite": false, "isPartOfComposite": true @@ -305,7 +305,7 @@ "path": "/isTracked", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Eye Gaze Is Tracked", "isComposite": false, "isPartOfComposite": true @@ -316,7 +316,7 @@ "path": "", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Eye Gaze Is Tracked", "isComposite": false, "isPartOfComposite": true @@ -324,7 +324,7 @@ ] }, { - "name": "XRI LeftHand", + "name": "XRI Left", "id": "5fe596f9-1b7b-49b7-80a7-3b5195caf74d", "actions": [ { @@ -391,7 +391,7 @@ "initialStateCheck": true }, { - "name": "Aim Flags", + "name": "Meta Aim Flags", "type": "Value", "id": "f98e71db-49b4-4882-8991-a0e386733e87", "expectedControlType": "Integer", @@ -443,6 +443,15 @@ "processors": "", "interactions": "", "initialStateCheck": true + }, + { + "name": "Thumbstick", + "type": "Value", + "id": "c01850c4-700b-4ae6-a187-a894afef5bbd", + "expectedControlType": "Vector2", + "processors": "", + "interactions": "", + "initialStateCheck": true } ], "bindings": [ @@ -463,7 +472,7 @@ "path": "{LeftHand}/pointerRotation", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Rotation", "isComposite": false, "isPartOfComposite": true @@ -474,7 +483,7 @@ "path": "{LeftHand}/deviceRotation", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Rotation", "isComposite": false, "isPartOfComposite": true @@ -485,7 +494,7 @@ "path": "{LeftHand}/deviceRotation", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Rotation", "isComposite": false, "isPartOfComposite": true @@ -507,7 +516,7 @@ "path": "{LeftHand}/pointerPosition", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Position", "isComposite": false, "isPartOfComposite": true @@ -518,7 +527,7 @@ "path": "{LeftHand}/devicePosition", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Position", "isComposite": false, "isPartOfComposite": true @@ -529,7 +538,7 @@ "path": "{LeftHand}/devicePosition", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Position", "isComposite": false, "isPartOfComposite": true @@ -540,7 +549,7 @@ "path": "{LeftHand}/*", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Haptic Device", "isComposite": false, "isPartOfComposite": false @@ -551,7 +560,7 @@ "path": "{LeftHand}/trackingState", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Tracking State", "isComposite": false, "isPartOfComposite": false @@ -562,7 +571,7 @@ "path": "{LeftHand}/trackingState", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Tracking State", "isComposite": false, "isPartOfComposite": false @@ -573,15 +582,37 @@ "path": "{LeftHand}/devicePosition", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Aim Position", "isComposite": false, "isPartOfComposite": false }, { "name": "", - "id": "51dc1815-5375-4d6f-b211-bbdb678bfc58", - "path": "{LeftHand}/devicePosition", + "id": "8ee39b25-fde6-4195-bc6e-68caadef9183", + "path": "{LeftHand}/pointer/position", + "interactions": "", + "processors": "", + "groups": "", + "action": "Aim Position", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "ec4a1046-3843-445d-8ad4-a769823faa86", + "path": "{LeftHand}/pointer/position", + "interactions": "", + "processors": "", + "groups": "", + "action": "Aim Position", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "d29757d4-ec35-4477-8a26-1d14acd14ba9", + "path": "{LeftHand}/pointer/position", "interactions": "", "processors": "", "groups": "", @@ -595,15 +626,15 @@ "path": "{LeftHand}/deviceRotation", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Aim Rotation", "isComposite": false, "isPartOfComposite": false }, { "name": "", - "id": "9bd317cf-5529-4a90-8daa-9e7e64d6e9b3", - "path": "{LeftHand}/deviceRotation", + "id": "c3ff2c3c-d1ef-40c9-8777-72ee03df3ff3", + "path": "{LeftHand}/pointer/rotation", "interactions": "", "processors": "", "groups": "", @@ -613,36 +644,157 @@ }, { "name": "", - "id": "f7a37505-52bd-4a96-8f88-c761a62a71e7", + "id": "68633061-addf-447b-969e-06249302eaad", + "path": "{LeftHand}/pointer/rotation", + "interactions": "", + "processors": "", + "groups": "", + "action": "Aim Rotation", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "4848899c-8c90-455a-a915-6422290f501b", + "path": "{LeftHand}/pointer/rotation", + "interactions": "", + "processors": "", + "groups": "", + "action": "Aim Rotation", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "Vector 3 Fallback", + "id": "aff6849b-544f-473c-9d7e-da40488aa6ab", + "path": "Vector3Fallback", + "interactions": "", + "processors": "", + "groups": "", + "action": "Pinch Position", + "isComposite": true, + "isPartOfComposite": false + }, + { + "name": "first", + "id": "e62f5918-8922-4a59-ae42-179b1fde0d29", "path": "{LeftHand}/pinchPosition", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Pinch Position", "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "second", + "id": "1e9cdc2b-24e6-4624-9bd8-02c7dcf68fb4", + "path": "{LeftHand}/pinchPose/position", + "interactions": "", + "processors": "", + "groups": "", + "action": "Pinch Position", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "third", + "id": "0adea6d4-f14c-4243-8217-dd63b6529bcc", + "path": "{LeftHand}/pinchPose/position", + "interactions": "", + "processors": "", + "groups": "", + "action": "Pinch Position", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "Vector 3 Fallback", + "id": "2ef93166-d4e5-471d-8321-71e7cdec9220", + "path": "Vector3Fallback", + "interactions": "", + "processors": "", + "groups": "", + "action": "Poke Position", + "isComposite": true, "isPartOfComposite": false }, { - "name": "", - "id": "017a01a2-6e1a-4b39-9b5e-e115d5d2dd6a", + "name": "first", + "id": "55020194-7022-4059-8424-8ecc0de92c13", "path": "{LeftHand}/pokePosition", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Poke Position", "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "second", + "id": "9a8820cc-2172-4641-9fae-0c416b2649e2", + "path": "{LeftHand}/pokePose/position", + "interactions": "", + "processors": "", + "groups": "", + "action": "Poke Position", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "third", + "id": "ef0a4717-47f8-47a3-8dae-fd0cba366115", + "path": "{LeftHand}/pokePose/position", + "interactions": "", + "processors": "", + "groups": "", + "action": "Poke Position", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "Quaternion Fallback", + "id": "892e5765-05a7-460a-942c-32e8a36bd441", + "path": "QuaternionFallback", + "interactions": "", + "processors": "", + "groups": "", + "action": "Poke Rotation", + "isComposite": true, "isPartOfComposite": false }, { - "name": "", - "id": "3ab4651e-837c-4352-9055-6671517f1917", + "name": "first", + "id": "5f5fb46a-effc-4105-bb74-d30dc9cd1f43", "path": "{LeftHand}/pokeRotation", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Poke Rotation", "isComposite": false, - "isPartOfComposite": false + "isPartOfComposite": true + }, + { + "name": "second", + "id": "8fba8372-e2dd-4a31-8048-45d49484323e", + "path": "{LeftHand}/pokePose/rotation", + "interactions": "", + "processors": "", + "groups": "", + "action": "Poke Rotation", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "third", + "id": "8c1d4e9b-88f5-4966-a6e4-0f22f7bb896d", + "path": "{LeftHand}/pokePose/rotation", + "interactions": "", + "processors": "", + "groups": "", + "action": "Poke Rotation", + "isComposite": false, + "isPartOfComposite": true }, { "name": "", @@ -650,7 +802,7 @@ "path": "{LeftHand}/isTracked", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Is Tracked", "isComposite": false, "isPartOfComposite": false @@ -661,7 +813,7 @@ "path": "{LeftHand}/isTracked", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Is Tracked", "isComposite": false, "isPartOfComposite": false @@ -672,19 +824,8 @@ "path": "{LeftHand}/aimFlags", "interactions": "", "processors": "", - "groups": "Generic XR Controller", - "action": "Aim Flags", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "37905047-4822-4a1e-953a-36eb8d0cebce", - "path": "{LeftHand}/aimFlags", - "interactions": "", - "processors": "", "groups": "", - "action": "Aim Flags", + "action": "Meta Aim Flags", "isComposite": false, "isPartOfComposite": false }, @@ -694,7 +835,7 @@ "path": "{LeftHand}/gripPosition", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Grip Position", "isComposite": false, "isPartOfComposite": false @@ -705,15 +846,26 @@ "path": "{LeftHand}/gripRotation", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Grip Rotation", "isComposite": false, "isPartOfComposite": false + }, + { + "name": "", + "id": "0123e5fd-aec0-4ab3-b201-2e6c65d2b93e", + "path": "{LeftHand}/{Primary2DAxis}", + "interactions": "", + "processors": "", + "groups": "", + "action": "Thumbstick", + "isComposite": false, + "isPartOfComposite": false } ] }, { - "name": "XRI LeftHand Interaction", + "name": "XRI Left Interaction", "id": "7a5e7537-cc30-4eb1-a544-6946baa8f3eb", "actions": [ { @@ -756,7 +908,7 @@ "name": "UI Press", "type": "Button", "id": "7e1eced7-c774-4fe5-be8f-d8711f646d9e", - "expectedControlType": "Button", + "expectedControlType": "", "processors": "", "interactions": "", "initialStateCheck": false @@ -780,7 +932,16 @@ "initialStateCheck": true }, { - "name": "Rotate Anchor", + "name": "Translate Manipulation", + "type": "Value", + "id": "bfa204c7-3c92-4193-bad1-39eb71920042", + "expectedControlType": "Vector2", + "processors": "", + "interactions": "", + "initialStateCheck": true + }, + { + "name": "Rotate Manipulation", "type": "Value", "id": "21b75b25-12ad-410f-b4f8-a7745b7aca27", "expectedControlType": "Vector2", @@ -789,9 +950,9 @@ "initialStateCheck": true }, { - "name": "Translate Anchor", + "name": "Directional Manipulation", "type": "Value", - "id": "bfa204c7-3c92-4193-bad1-39eb71920042", + "id": "93bd97c5-fd23-4853-8045-1b12324aa24e", "expectedControlType": "Vector2", "processors": "", "interactions": "", @@ -807,7 +968,7 @@ "initialStateCheck": false }, { - "name": "Scale Delta", + "name": "Scale Over Time", "type": "Value", "id": "2257500c-1efb-4f69-a54d-ed5db2708616", "expectedControlType": "Vector2", @@ -823,7 +984,7 @@ "path": "{LeftHand}/{GripButton}", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Select", "isComposite": false, "isPartOfComposite": false @@ -834,15 +995,37 @@ "path": "{LeftHand}/indexPressed", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Select", "isComposite": false, "isPartOfComposite": false }, { "name": "", - "id": "b00a6351-67b0-4c17-8a10-324f78c13425", - "path": "{LeftHand}/grabActive", + "id": "3bbf9f24-2edd-41b9-8456-683298f1e58c", + "path": "{LeftHand}/graspFirm", + "interactions": "", + "processors": "", + "groups": "", + "action": "Select", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "a86585c7-1d41-40e2-a7ca-bb76cca5c32a", + "path": "{LeftHand}/pinchTouched", + "interactions": "", + "processors": "", + "groups": "", + "action": "Select", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "ebab6345-d4f7-4a42-94b3-12d4464de218", + "path": "{LeftHand}/squeezePressed", "interactions": "", "processors": "", "groups": "", @@ -856,7 +1039,7 @@ "path": "{LeftHand}/{Grip}", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Select Value", "isComposite": false, "isPartOfComposite": false @@ -867,15 +1050,37 @@ "path": "{LeftHand}/pinchStrengthIndex", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Select Value", "isComposite": false, "isPartOfComposite": false }, { "name": "", - "id": "c077759c-ff81-4db2-a38b-609d34b5e256", - "path": "{LeftHand}/grabActive", + "id": "2a4b758a-252a-484c-9a26-438954189c08", + "path": "{LeftHand}/graspValue", + "interactions": "", + "processors": "", + "groups": "", + "action": "Select Value", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "bc272ed6-7655-4292-9c21-e5b87bec4350", + "path": "{LeftHand}/pinchValue", + "interactions": "", + "processors": "", + "groups": "", + "action": "Select Value", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "a8d99ae3-e736-4370-ad5e-9fa45cb7a1be", + "path": "{LeftHand}/squeeze", "interactions": "", "processors": "", "groups": "", @@ -889,7 +1094,7 @@ "path": "{LeftHand}/{TriggerButton}", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Activate", "isComposite": false, "isPartOfComposite": false @@ -900,7 +1105,7 @@ "path": "{LeftHand}/{Trigger}", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Activate Value", "isComposite": false, "isPartOfComposite": false @@ -911,7 +1116,7 @@ "path": "{LeftHand}/{TriggerButton}", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "UI Press", "isComposite": false, "isPartOfComposite": false @@ -922,15 +1127,26 @@ "path": "{LeftHand}/indexPressed", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "UI Press", "isComposite": false, "isPartOfComposite": false }, { "name": "", - "id": "1ee0549c-a5b7-4b3e-bbf0-8d6e5e934ed5", - "path": "{LeftHand}/indexPressed", + "id": "fc8b2287-429e-4be4-a34b-cca7c50eeb52", + "path": "{LeftHand}/pointerActivated", + "interactions": "", + "processors": "", + "groups": "", + "action": "UI Press", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "ca931b95-39e0-4db1-9887-f5a5f68298d4", + "path": "{LeftHand}/selectPressed", "interactions": "", "processors": "", "groups": "", @@ -944,7 +1160,7 @@ "path": "{LeftHand}/{Trigger}", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "UI Press Value", "isComposite": false, "isPartOfComposite": false @@ -955,15 +1171,26 @@ "path": "{LeftHand}/pinchStrengthIndex", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "UI Press Value", "isComposite": false, "isPartOfComposite": false }, { "name": "", - "id": "250ef949-5a7c-4283-91ea-3772cd9f4f43", - "path": "{LeftHand}/pinchStrengthIndex", + "id": "c4c2fc93-75fe-4910-95ca-6b1cc163a48a", + "path": "{LeftHand}/pointerActivateValue", + "interactions": "", + "processors": "", + "groups": "", + "action": "UI Press Value", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "c7b5ae56-e532-43a3-a053-8d66df507df1", + "path": "{LeftHand}/select", "interactions": "", "processors": "", "groups": "", @@ -977,19 +1204,8 @@ "path": "{LeftHand}/{Primary2DAxis}", "interactions": "", "processors": "ScaleVector2(y=0),StickDeadzone", - "groups": "Generic XR Controller", - "action": "Rotate Anchor", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "370f21e3-a80b-4b07-990b-299c2da0929a", - "path": "{LeftHand}/{Primary2DAxis}", - "interactions": "", - "processors": "ScaleVector2(x=0),StickDeadzone", - "groups": "Generic XR Controller", - "action": "Translate Anchor", + "groups": "", + "action": "Rotate Manipulation", "isComposite": false, "isPartOfComposite": false }, @@ -999,7 +1215,7 @@ "path": "{LeftHand}/{Primary2DAxis}", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "UI Scroll", "isComposite": false, "isPartOfComposite": false @@ -1010,7 +1226,7 @@ "path": "{LeftHand}/{Primary2DAxisClick}", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Scale Toggle", "isComposite": false, "isPartOfComposite": false @@ -1021,28 +1237,41 @@ "path": "{LeftHand}/{Primary2DAxis}", "interactions": "", "processors": "ScaleVector2(x=0),StickDeadzone", - "groups": "Generic XR Controller", - "action": "Scale Delta", + "groups": "", + "action": "Scale Over Time", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "5fe0ed53-b4d3-4cd8-b567-397a7d1e1c6a", + "path": "{LeftHand}/{Primary2DAxis}", + "interactions": "", + "processors": "", + "groups": "", + "action": "Directional Manipulation", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "370f21e3-a80b-4b07-990b-299c2da0929a", + "path": "{LeftHand}/{Primary2DAxis}", + "interactions": "", + "processors": "ScaleVector2(x=0),StickDeadzone", + "groups": "", + "action": "Translate Manipulation", "isComposite": false, "isPartOfComposite": false } ] }, { - "name": "XRI LeftHand Locomotion", + "name": "XRI Left Locomotion", "id": "22336389-9fb1-4c2c-8635-0ed30db0d29e", "actions": [ { - "name": "Teleport Select", - "type": "Value", - "id": "cbeaf823-3b69-4004-8ec8-13ea2ca3fc31", - "expectedControlType": "Vector2", - "processors": "", - "interactions": "", - "initialStateCheck": true - }, - { - "name": "Teleport Mode Activate", + "name": "Teleport Mode", "type": "Value", "id": "a21db72c-4843-4839-b4d0-3ce8d287cb86", "expectedControlType": "Vector2", @@ -1060,18 +1289,18 @@ "initialStateCheck": false }, { - "name": "Teleport Direction", + "name": "Turn", "type": "Value", - "id": "93bd97c5-fd23-4853-8045-1b12324aa24e", + "id": "9164e093-ebd4-4923-af32-1b52f31c2d66", "expectedControlType": "Vector2", "processors": "", "interactions": "", "initialStateCheck": true }, { - "name": "Turn", + "name": "Snap Turn", "type": "Value", - "id": "9164e093-ebd4-4923-af32-1b52f31c2d66", + "id": "8c14e969-a054-4f12-840c-4e0bd85173d9", "expectedControlType": "Vector2", "processors": "", "interactions": "", @@ -1094,37 +1323,17 @@ "processors": "", "interactions": "", "initialStateCheck": false - }, - { - "name": "Snap Turn", - "type": "Value", - "id": "8c14e969-a054-4f12-840c-4e0bd85173d9", - "expectedControlType": "Vector2", - "processors": "", - "interactions": "", - "initialStateCheck": true } ], "bindings": [ - { - "name": "", - "id": "95fa1419-ca7b-4c8a-8d15-7d46e58d82e3", - "path": "{LeftHand}/{Primary2DAxis}", - "interactions": "Sector(directions=-1,sweepBehavior=3)", - "processors": "", - "groups": "Noncontinuous Move", - "action": "Teleport Select", - "isComposite": false, - "isPartOfComposite": false - }, { "name": "", "id": "8da6ed3a-f621-49fe-8c76-1f6b7d7754d6", "path": "{LeftHand}/{Primary2DAxis}", "interactions": "Sector(directions=1)", "processors": "", - "groups": "Noncontinuous Move", - "action": "Teleport Mode Activate", + "groups": "", + "action": "Teleport Mode", "isComposite": false, "isPartOfComposite": false }, @@ -1134,7 +1343,7 @@ "path": "{LeftHand}/{GripButton}", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Teleport Mode Cancel", "isComposite": false, "isPartOfComposite": false @@ -1145,7 +1354,7 @@ "path": "{LeftHand}/{Primary2DAxis}", "interactions": "Sector(directions=12,sweepBehavior=1),Sector(directions=2,sweepBehavior=2)", "processors": "", - "groups": "Noncontinuous Move", + "groups": "", "action": "Turn", "isComposite": false, "isPartOfComposite": false @@ -1156,29 +1365,18 @@ "path": "{LeftHand}/{Primary2DAxis}", "interactions": "", "processors": "StickDeadzone", - "groups": "Continuous Move", + "groups": "", "action": "Move", "isComposite": false, "isPartOfComposite": false }, - { - "name": "", - "id": "5fe0ed53-b4d3-4cd8-b567-397a7d1e1c6a", - "path": "{LeftHand}/{Primary2DAxis}", - "interactions": "", - "processors": "", - "groups": "Noncontinuous Move", - "action": "Teleport Direction", - "isComposite": false, - "isPartOfComposite": false - }, { "name": "", "id": "9e2fa814-8cbd-4c65-a60d-a1503f30ffd8", "path": "{LeftHand}/{GripButton}", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Grab Move", "isComposite": false, "isPartOfComposite": false @@ -1189,7 +1387,7 @@ "path": "{LeftHand}/{Primary2DAxis}", "interactions": "Sector(directions=12,sweepBehavior=1),Sector(directions=2,sweepBehavior=2)", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Snap Turn", "isComposite": false, "isPartOfComposite": false @@ -1197,7 +1395,7 @@ ] }, { - "name": "XRI RightHand", + "name": "XRI Right", "id": "7960f8ef-2bf3-4281-aecc-4c03809d6c8c", "actions": [ { @@ -1222,7 +1420,7 @@ "name": "Is Tracked", "type": "Button", "id": "a705ffe4-b2c8-4b78-847f-25257d4e30af", - "expectedControlType": "Button", + "expectedControlType": "", "processors": "", "interactions": "", "initialStateCheck": true @@ -1264,7 +1462,7 @@ "initialStateCheck": true }, { - "name": "Aim Flags", + "name": "Meta Aim Flags", "type": "Value", "id": "93a75a21-033e-440c-9954-ff264afb2db9", "expectedControlType": "Integer", @@ -1316,6 +1514,15 @@ "processors": "", "interactions": "", "initialStateCheck": true + }, + { + "name": "Thumbstick", + "type": "Value", + "id": "b8c0ccd3-e1b6-4913-96b3-e0864c9ac6bd", + "expectedControlType": "Vector2", + "processors": "", + "interactions": "", + "initialStateCheck": true } ], "bindings": [ @@ -1336,7 +1543,7 @@ "path": "{RightHand}/pointerRotation", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Rotation", "isComposite": false, "isPartOfComposite": true @@ -1347,7 +1554,7 @@ "path": "{RightHand}/deviceRotation", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Rotation", "isComposite": false, "isPartOfComposite": true @@ -1358,7 +1565,7 @@ "path": "{RightHand}/deviceRotation", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Rotation", "isComposite": false, "isPartOfComposite": true @@ -1380,7 +1587,7 @@ "path": "{RightHand}/pointerPosition", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Position", "isComposite": false, "isPartOfComposite": true @@ -1391,7 +1598,7 @@ "path": "{RightHand}/devicePosition", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Position", "isComposite": false, "isPartOfComposite": true @@ -1402,7 +1609,7 @@ "path": "{RightHand}/devicePosition", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Position", "isComposite": false, "isPartOfComposite": true @@ -1413,7 +1620,7 @@ "path": "{RightHand}/*", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Haptic Device", "isComposite": false, "isPartOfComposite": false @@ -1424,7 +1631,7 @@ "path": "{RightHand}/trackingState", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Tracking State", "isComposite": false, "isPartOfComposite": false @@ -1435,7 +1642,7 @@ "path": "{RightHand}/trackingState", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Tracking State", "isComposite": false, "isPartOfComposite": false @@ -1446,15 +1653,37 @@ "path": "{RightHand}/devicePosition", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Aim Position", "isComposite": false, "isPartOfComposite": false }, { "name": "", - "id": "29fc2d66-6999-451e-91c2-33ad2dd1e196", - "path": "{RightHand}/devicePosition", + "id": "e60d7767-705f-4af2-ae42-f135e6580630", + "path": "{RightHand}/pointer/position", + "interactions": "", + "processors": "", + "groups": "", + "action": "Aim Position", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "d34dafcf-a3a4-4511-a73f-1ecbfd6099c8", + "path": "{RightHand}/pointer/position", + "interactions": "", + "processors": "", + "groups": "", + "action": "Aim Position", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "720d5e83-6877-4504-9b4a-aa550c2593af", + "path": "{RightHand}/pointer/position", "interactions": "", "processors": "", "groups": "", @@ -1468,15 +1697,15 @@ "path": "{RightHand}/deviceRotation", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Aim Rotation", "isComposite": false, "isPartOfComposite": false }, { "name": "", - "id": "a2ddbfaf-6217-47e4-b0e6-1c6f7c9fa869", - "path": "{RightHand}/deviceRotation", + "id": "256fbef4-95a6-4127-ac3e-6a259b640666", + "path": "{RightHand}/pointer/rotation", "interactions": "", "processors": "", "groups": "", @@ -1486,36 +1715,157 @@ }, { "name": "", - "id": "21413a94-0048-4112-b433-a770f183f592", + "id": "d46291b9-775e-457b-a909-649a301d55c3", + "path": "{RightHand}/pointer/rotation", + "interactions": "", + "processors": "", + "groups": "", + "action": "Aim Rotation", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "2fac2635-e015-4fb7-9578-34b85a5d5797", + "path": "{RightHand}/pointer/rotation", + "interactions": "", + "processors": "", + "groups": "", + "action": "Aim Rotation", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "Vector 3 Fallback", + "id": "0323576b-ec88-4459-a791-4afeada3f7c8", + "path": "Vector3Fallback", + "interactions": "", + "processors": "", + "groups": "", + "action": "Pinch Position", + "isComposite": true, + "isPartOfComposite": false + }, + { + "name": "first", + "id": "0bdf98f1-d1a8-443f-805e-9718b34fc6ea", "path": "{RightHand}/pinchPosition", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Pinch Position", "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "second", + "id": "0bd62ec6-1259-40f6-aa0a-71b82a790764", + "path": "{RightHand}/pinchPose/position", + "interactions": "", + "processors": "", + "groups": "", + "action": "Pinch Position", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "third", + "id": "7271c456-534a-4e51-9835-1ebd589a938e", + "path": "{RightHand}/pinchPose/position", + "interactions": "", + "processors": "", + "groups": "", + "action": "Pinch Position", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "Vector 3 Fallback", + "id": "5724159b-b0ee-4458-b567-63874ee6e24a", + "path": "Vector3Fallback", + "interactions": "", + "processors": "", + "groups": "", + "action": "Poke Position", + "isComposite": true, "isPartOfComposite": false }, { - "name": "", - "id": "5e847fad-7431-4e48-883a-d489fca4ce0d", + "name": "first", + "id": "3f5ff135-3cfa-48b6-a35c-aa52badc1d6e", "path": "{RightHand}/pokePosition", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Poke Position", "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "second", + "id": "c46e492c-1618-4d10-8c99-3079cf9deda6", + "path": "{RightHand}/pokePose/position", + "interactions": "", + "processors": "", + "groups": "", + "action": "Poke Position", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "third", + "id": "34b9f870-767e-422c-b558-0708567a1a5d", + "path": "{RightHand}/pokePose/position", + "interactions": "", + "processors": "", + "groups": "", + "action": "Poke Position", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "Quaternion Fallback", + "id": "74a5f1ad-f8ed-42cf-aff3-eb911325ca7d", + "path": "QuaternionFallback", + "interactions": "", + "processors": "", + "groups": "", + "action": "Poke Rotation", + "isComposite": true, "isPartOfComposite": false }, { - "name": "", - "id": "99b19b88-e2ad-4670-91ee-1f55f6c34a69", + "name": "first", + "id": "595c1ccb-9c05-411a-a2fd-e892ca0c9091", "path": "{RightHand}/pokeRotation", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Poke Rotation", "isComposite": false, - "isPartOfComposite": false + "isPartOfComposite": true + }, + { + "name": "second", + "id": "d7ce6129-ec94-4757-9595-aaf1032cae86", + "path": "{RightHand}/pokePose/rotation", + "interactions": "", + "processors": "", + "groups": "", + "action": "Poke Rotation", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "third", + "id": "0e7b9607-caf5-46cc-adb9-2a1500c718a4", + "path": "{RightHand}/pokePose/rotation", + "interactions": "", + "processors": "", + "groups": "", + "action": "Poke Rotation", + "isComposite": false, + "isPartOfComposite": true }, { "name": "", @@ -1523,7 +1873,7 @@ "path": "{RightHand}/isTracked", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Is Tracked", "isComposite": false, "isPartOfComposite": false @@ -1534,7 +1884,7 @@ "path": "{RightHand}/isTracked", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Is Tracked", "isComposite": false, "isPartOfComposite": false @@ -1545,19 +1895,8 @@ "path": "{RightHand}/aimFlags", "interactions": "", "processors": "", - "groups": "Generic XR Controller", - "action": "Aim Flags", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "f86084c3-8cbd-4b77-8317-267eb319819e", - "path": "{RightHand}/aimFlags", - "interactions": "", - "processors": "", "groups": "", - "action": "Aim Flags", + "action": "Meta Aim Flags", "isComposite": false, "isPartOfComposite": false }, @@ -1567,7 +1906,7 @@ "path": "{RightHand}/gripPosition", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Grip Position", "isComposite": false, "isPartOfComposite": false @@ -1578,15 +1917,26 @@ "path": "{RightHand}/gripRotation", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Grip Rotation", "isComposite": false, "isPartOfComposite": false + }, + { + "name": "", + "id": "709cc921-f3b0-4dc8-88d4-7787b8a3ced1", + "path": "{RightHand}/{Primary2DAxis}", + "interactions": "", + "processors": "", + "groups": "", + "action": "Thumbstick", + "isComposite": false, + "isPartOfComposite": false } ] }, { - "name": "XRI RightHand Interaction", + "name": "XRI Right Interaction", "id": "461bce25-7762-40c5-b639-f190649be6d6", "actions": [ { @@ -1629,7 +1979,7 @@ "name": "UI Press", "type": "Button", "id": "65174b45-c2ee-4f90-93bb-fb4084eaaab3", - "expectedControlType": "Button", + "expectedControlType": "", "processors": "", "interactions": "", "initialStateCheck": false @@ -1653,7 +2003,16 @@ "initialStateCheck": true }, { - "name": "Rotate Anchor", + "name": "Translate Manipulation", + "type": "Value", + "id": "6f7cf253-7062-443b-b10f-2be48a33f027", + "expectedControlType": "Vector2", + "processors": "", + "interactions": "", + "initialStateCheck": true + }, + { + "name": "Rotate Manipulation", "type": "Value", "id": "9b5d8312-f609-4895-b70f-81a722b2ae11", "expectedControlType": "Vector2", @@ -1662,9 +2021,9 @@ "initialStateCheck": true }, { - "name": "Translate Anchor", + "name": "Directional Manipulation", "type": "Value", - "id": "6f7cf253-7062-443b-b10f-2be48a33f027", + "id": "b950a329-6492-4e29-b563-afc726f81e95", "expectedControlType": "Vector2", "processors": "", "interactions": "", @@ -1674,13 +2033,13 @@ "name": "Scale Toggle", "type": "Button", "id": "5ad73d15-99a4-4bce-a76f-f49815602416", - "expectedControlType": "Button", + "expectedControlType": "", "processors": "", "interactions": "", "initialStateCheck": false }, { - "name": "Scale Delta", + "name": "Scale Over Time", "type": "Value", "id": "19a21f59-bd21-4f77-b29d-4fda26ef6769", "expectedControlType": "Vector2", @@ -1696,7 +2055,7 @@ "path": "{RightHand}/{GripButton}", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Select", "isComposite": false, "isPartOfComposite": false @@ -1707,15 +2066,37 @@ "path": "{RightHand}/indexPressed", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Select", "isComposite": false, "isPartOfComposite": false }, { "name": "", - "id": "f1f0ee56-dfeb-428b-b581-419f440f23a2", - "path": "{RightHand}/grabActive", + "id": "1fe3ab58-51f3-4274-995c-176ac72d9610", + "path": "{RightHand}/graspFirm", + "interactions": "", + "processors": "", + "groups": "", + "action": "Select", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "f6083118-4e38-45a2-afaf-52fa60444f78", + "path": "{RightHand}/pinchTouched", + "interactions": "", + "processors": "", + "groups": "", + "action": "Select", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "82f232f1-6246-4d1e-aacc-a7ccc16c76d9", + "path": "{RightHand}/squeezePressed", "interactions": "", "processors": "", "groups": "", @@ -1729,7 +2110,7 @@ "path": "{RightHand}/{Grip}", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Select Value", "isComposite": false, "isPartOfComposite": false @@ -1740,15 +2121,37 @@ "path": "{RightHand}/pinchStrengthIndex", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Select Value", "isComposite": false, "isPartOfComposite": false }, { "name": "", - "id": "05a06cc4-bd94-4916-836a-a954ceedcb02", - "path": "{RightHand}/grabActive", + "id": "e8d22d4b-ac0c-452b-9f5e-247f94754302", + "path": "{RightHand}/graspValue", + "interactions": "", + "processors": "", + "groups": "", + "action": "Select Value", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "c850e784-816f-4df7-8759-a725cb4a84bf", + "path": "{RightHand}/pinchValue", + "interactions": "", + "processors": "", + "groups": "", + "action": "Select Value", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "e890a130-d436-4b52-a092-bff81d18bfb7", + "path": "{RightHand}/squeeze", "interactions": "", "processors": "", "groups": "", @@ -1762,7 +2165,7 @@ "path": "{RightHand}/{TriggerButton}", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Activate", "isComposite": false, "isPartOfComposite": false @@ -1773,7 +2176,7 @@ "path": "{RightHand}/{Trigger}", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Activate Value", "isComposite": false, "isPartOfComposite": false @@ -1784,7 +2187,7 @@ "path": "{RightHand}/{TriggerButton}", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "UI Press", "isComposite": false, "isPartOfComposite": false @@ -1795,15 +2198,26 @@ "path": "{RightHand}/indexPressed", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "UI Press", "isComposite": false, "isPartOfComposite": false }, { "name": "", - "id": "06ad2ed4-86c4-45e7-be80-c82d6549f259", - "path": "{RightHand}/indexPressed", + "id": "7ae41e93-9c2b-4d15-8387-0eddbc823053", + "path": "{RightHand}/pointerActivated", + "interactions": "", + "processors": "", + "groups": "", + "action": "UI Press", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "f8a900c7-8116-4f44-9d24-8f19caf07108", + "path": "{RightHand}/selectPressed", "interactions": "", "processors": "", "groups": "", @@ -1817,7 +2231,7 @@ "path": "{RightHand}/{Trigger}", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "UI Press Value", "isComposite": false, "isPartOfComposite": false @@ -1828,15 +2242,26 @@ "path": "{RightHand}/pinchStrengthIndex", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "UI Press Value", "isComposite": false, "isPartOfComposite": false }, { "name": "", - "id": "a1b2690b-71eb-40cc-ae49-1a00e5148342", - "path": "{RightHand}/pinchStrengthIndex", + "id": "4bfac4d7-1bce-4fa7-a6b1-00eb7e5f346e", + "path": "{RightHand}/pointerActivateValue", + "interactions": "", + "processors": "", + "groups": "", + "action": "UI Press Value", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "e2fbf204-5031-483f-beaa-abf05113dbc7", + "path": "{RightHand}/select", "interactions": "", "processors": "", "groups": "", @@ -1850,19 +2275,8 @@ "path": "{RightHand}/{Primary2DAxis}", "interactions": "", "processors": "ScaleVector2(y=0),StickDeadzone", - "groups": "Generic XR Controller", - "action": "Rotate Anchor", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "4caf4e8d-13e5-4bd6-8f42-b6b99c315ad0", - "path": "{RightHand}/{Primary2DAxis}", - "interactions": "", - "processors": "ScaleVector2(x=0),StickDeadzone", - "groups": "Generic XR Controller", - "action": "Translate Anchor", + "groups": "", + "action": "Rotate Manipulation", "isComposite": false, "isPartOfComposite": false }, @@ -1872,7 +2286,7 @@ "path": "{RightHand}/{Primary2DAxis}", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "UI Scroll", "isComposite": false, "isPartOfComposite": false @@ -1883,7 +2297,7 @@ "path": "{RightHand}/{Primary2DAxisClick}", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Scale Toggle", "isComposite": false, "isPartOfComposite": false @@ -1894,28 +2308,41 @@ "path": "{RightHand}/{Primary2DAxis}", "interactions": "", "processors": "ScaleVector2(x=0),StickDeadzone", - "groups": "Generic XR Controller", - "action": "Scale Delta", + "groups": "", + "action": "Scale Over Time", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "c4b46d7d-8231-4672-83f9-75af565faf57", + "path": "{RightHand}/{Primary2DAxis}", + "interactions": "", + "processors": "", + "groups": "", + "action": "Directional Manipulation", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "4caf4e8d-13e5-4bd6-8f42-b6b99c315ad0", + "path": "{RightHand}/{Primary2DAxis}", + "interactions": "", + "processors": "ScaleVector2(x=0),StickDeadzone", + "groups": "", + "action": "Translate Manipulation", "isComposite": false, "isPartOfComposite": false } ] }, { - "name": "XRI RightHand Locomotion", + "name": "XRI Right Locomotion", "id": "99ce76d3-82c5-4289-9670-2ecffa6833fd", "actions": [ { - "name": "Teleport Select", - "type": "Value", - "id": "02e43582-8973-4940-af06-dff6158e3df2", - "expectedControlType": "Vector2", - "processors": "", - "interactions": "", - "initialStateCheck": true - }, - { - "name": "Teleport Mode Activate", + "name": "Teleport Mode", "type": "Value", "id": "a6c7231d-c55d-4dd4-9e87-877bb5522ef5", "expectedControlType": "Vector2", @@ -1933,18 +2360,18 @@ "initialStateCheck": false }, { - "name": "Teleport Direction", + "name": "Turn", "type": "Value", - "id": "b950a329-6492-4e29-b563-afc726f81e95", + "id": "9fb2eb2b-2fb6-4328-8167-10a1bf11b424", "expectedControlType": "Vector2", "processors": "", "interactions": "", "initialStateCheck": true }, { - "name": "Turn", + "name": "Snap Turn", "type": "Value", - "id": "9fb2eb2b-2fb6-4328-8167-10a1bf11b424", + "id": "44441ad6-5762-466d-ad54-aa44fcd61a5c", "expectedControlType": "Vector2", "processors": "", "interactions": "", @@ -1967,37 +2394,17 @@ "processors": "", "interactions": "", "initialStateCheck": false - }, - { - "name": "Snap Turn", - "type": "Value", - "id": "44441ad6-5762-466d-ad54-aa44fcd61a5c", - "expectedControlType": "Vector2", - "processors": "", - "interactions": "", - "initialStateCheck": true } ], "bindings": [ - { - "name": "", - "id": "919c4a6c-22ed-4083-8e14-f30e91ff59fe", - "path": "{RightHand}/{Primary2DAxis}", - "interactions": "Sector(directions=-1,sweepBehavior=3)", - "processors": "", - "groups": "Generic XR Controller", - "action": "Teleport Select", - "isComposite": false, - "isPartOfComposite": false - }, { "name": "", "id": "62690862-4688-4010-975b-b3d9c6062157", "path": "{RightHand}/{Primary2DAxis}", "interactions": "Sector(directions=1)", "processors": "", - "groups": "Generic XR Controller", - "action": "Teleport Mode Activate", + "groups": "", + "action": "Teleport Mode", "isComposite": false, "isPartOfComposite": false }, @@ -2007,7 +2414,7 @@ "path": "{RightHand}/{GripButton}", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Teleport Mode Cancel", "isComposite": false, "isPartOfComposite": false @@ -2018,7 +2425,7 @@ "path": "{RightHand}/{Primary2DAxis}", "interactions": "Sector(directions=12,sweepBehavior=1),Sector(directions=2,sweepBehavior=2)", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Turn", "isComposite": false, "isPartOfComposite": false @@ -2029,29 +2436,18 @@ "path": "{RightHand}/{Primary2DAxis}", "interactions": "", "processors": "StickDeadzone", - "groups": "Continuous Move", + "groups": "", "action": "Move", "isComposite": false, "isPartOfComposite": false }, - { - "name": "", - "id": "c4b46d7d-8231-4672-83f9-75af565faf57", - "path": "{RightHand}/{Primary2DAxis}", - "interactions": "", - "processors": "", - "groups": "Noncontinuous Move", - "action": "Teleport Direction", - "isComposite": false, - "isPartOfComposite": false - }, { "name": "", "id": "7ecb549e-ab98-4a4b-b979-38068fe3b811", "path": "{RightHand}/{GripButton}", "interactions": "", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Grab Move", "isComposite": false, "isPartOfComposite": false @@ -2062,7 +2458,7 @@ "path": "{RightHand}/{Primary2DAxis}", "interactions": "Sector(directions=12,sweepBehavior=1),Sector(directions=2,sweepBehavior=2)", "processors": "", - "groups": "Generic XR Controller", + "groups": "", "action": "Snap Turn", "isComposite": false, "isPartOfComposite": false @@ -2618,6 +3014,15 @@ "processors": "", "interactions": "", "initialStateCheck": true + }, + { + "name": "Spawn Object", + "type": "Button", + "id": "1415f3c5-fc5f-4f58-a044-4a69560151f2", + "expectedControlType": "Button", + "processors": "", + "interactions": "", + "initialStateCheck": false } ], "bindings": [ @@ -2625,13 +3030,46 @@ "name": "", "id": "fea81b99-07f5-426a-beba-5e0832c14855", "path": "/tapStartPosition", - "interactions": "Tap", + "interactions": "", "processors": "", "groups": "", "action": "Tap Start Position", "isComposite": false, "isPartOfComposite": false }, + { + "name": "One Modifier", + "id": "ccaca70d-b804-4cda-9dd1-ee9152fa6ec8", + "path": "OneModifier", + "interactions": "Tap", + "processors": "", + "groups": "", + "action": "Tap Start Position", + "isComposite": true, + "isPartOfComposite": false + }, + { + "name": "modifier", + "id": "30c845d9-0972-4e51-92bf-2eee8171abc7", + "path": "/press", + "interactions": "", + "processors": "", + "groups": "", + "action": "Tap Start Position", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "binding", + "id": "9ab23efd-1004-4423-b9b9-b070db6cde4e", + "path": "/position", + "interactions": "", + "processors": "", + "groups": "", + "action": "Tap Start Position", + "isComposite": false, + "isPartOfComposite": true + }, { "name": "", "id": "eb175a82-fad6-4249-bc9f-a6c9acee4436", @@ -2687,6 +3125,39 @@ "isComposite": false, "isPartOfComposite": false }, + { + "name": "1D Axis", + "id": "57cc64a3-de05-45d9-971f-764c0aa9efe5", + "path": "1DAxis", + "interactions": "", + "processors": "", + "groups": "", + "action": "Twist Delta Rotation", + "isComposite": true, + "isPartOfComposite": false + }, + { + "name": "negative", + "id": "475bf595-e1da-44b6-8674-677260bd2dcf", + "path": "/r", + "interactions": "", + "processors": "", + "groups": "", + "action": "Twist Delta Rotation", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "positive", + "id": "05a801e2-b5df-4253-b3a9-ad2213853f57", + "path": "/e", + "interactions": "", + "processors": "", + "groups": "", + "action": "Twist Delta Rotation", + "isComposite": false, + "isPartOfComposite": true + }, { "name": "", "id": "d919e652-0e4a-4f12-a1f9-b18cead206e2", @@ -2731,6 +3202,50 @@ "isComposite": false, "isPartOfComposite": false }, + { + "name": "", + "id": "6926b069-b36d-40c2-8325-797a8deb9038", + "path": "/scroll/y", + "interactions": "", + "processors": "", + "groups": "", + "action": "Pinch Gap Delta", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "1D Axis", + "id": "da16ab02-4e2b-46f5-a969-c780423ac0e9", + "path": "1DAxis", + "interactions": "", + "processors": "", + "groups": "", + "action": "Pinch Gap Delta", + "isComposite": true, + "isPartOfComposite": false + }, + { + "name": "negative", + "id": "07794ffe-429a-49c7-93c1-83c4af6695f4", + "path": "/z", + "interactions": "", + "processors": "", + "groups": "", + "action": "Pinch Gap Delta", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "positive", + "id": "c480645b-97d7-4c34-8797-7f9a24edb3c5", + "path": "/x", + "interactions": "", + "processors": "", + "groups": "", + "action": "Pinch Gap Delta", + "isComposite": false, + "isPartOfComposite": true + }, { "name": "", "id": "0f8550ed-7261-48e0-aa0e-6670f29141f5", @@ -2752,68 +3267,53 @@ "action": "Pinch Gap", "isComposite": false, "isPartOfComposite": false + }, + { + "name": "", + "id": "f0f27c2a-eef2-418a-986a-811bf690fd89", + "path": "/Press", + "interactions": "Tap", + "processors": "", + "groups": "", + "action": "Spawn Object", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "One Modifier", + "id": "6f6c3123-8e3c-4f69-9ecc-2a605a5f8777", + "path": "OneModifier", + "interactions": "Tap", + "processors": "", + "groups": "", + "action": "Spawn Object", + "isComposite": true, + "isPartOfComposite": false + }, + { + "name": "modifier", + "id": "ab34c73d-e0f0-4cf2-962e-2c201f9c5714", + "path": "/press", + "interactions": "", + "processors": "", + "groups": "", + "action": "Spawn Object", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "binding", + "id": "38c38fe4-fefa-4a01-a80a-6185ecb009cb", + "path": "/position", + "interactions": "", + "processors": "", + "groups": "", + "action": "Spawn Object", + "isComposite": false, + "isPartOfComposite": true } ] } ], - "controlSchemes": [ - { - "name": "Generic XR Controller", - "bindingGroup": "Generic XR Controller", - "devices": [ - { - "devicePath": "{LeftHand}", - "isOptional": true, - "isOR": false - }, - { - "devicePath": "{RightHand}", - "isOptional": true, - "isOR": false - }, - { - "devicePath": "", - "isOptional": true, - "isOR": false - }, - { - "devicePath": "", - "isOptional": true, - "isOR": false - } - ] - }, - { - "name": "Continuous Move", - "bindingGroup": "Continuous Move", - "devices": [ - { - "devicePath": "{LeftHand}", - "isOptional": false, - "isOR": false - }, - { - "devicePath": "{RightHand}", - "isOptional": false, - "isOR": false - } - ] - }, - { - "name": "Noncontinuous Move", - "bindingGroup": "Noncontinuous Move", - "devices": [ - { - "devicePath": "{LeftHand}", - "isOptional": false, - "isOR": false - }, - { - "devicePath": "{RightHand}", - "isOptional": false, - "isOR": false - } - ] - } - ] + "controlSchemes": [] } \ No newline at end of file diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/XRI Default Input Actions.inputactions.meta b/Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/XRI Default Input Actions.inputactions.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Starter Assets/XRI Default Input Actions.inputactions.meta rename to Assets/Samples/XR Interaction Toolkit/3.0.7/Starter Assets/XRI Default Input Actions.inputactions.meta diff --git a/Assets/Scenes/Old/Launcher.unity b/Assets/Scenes/Old/Launcher.unity index 11bc03cb..15635377 100644 --- a/Assets/Scenes/Old/Launcher.unity +++ b/Assets/Scenes/Old/Launcher.unity @@ -38,7 +38,6 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} m_UseRadianceAmbientProbe: 0 --- !u!157 &3 LightmapSettings: @@ -1163,12 +1162,17 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_SendPointerHoverToParent: 1 + m_EventSystem: {fileID: 0} + m_InputOverride: {fileID: 0} + m_DefaultInput: {fileID: 0} m_ClickSpeed: 0.3 m_MoveDeadzone: 0.6 m_RepeatDelay: 0.5 m_RepeatRate: 0.1 m_TrackedDeviceDragThresholdMultiplier: 1.4 m_TrackedScrollDeltaMultiplier: 5 + m_UICamera: {fileID: 0} + m_MainCameraCache: {fileID: 0} m_ActiveInputMode: 0 m_MaxTrackedDeviceRaycastDistance: 1000 m_EnableXRInput: 1 @@ -1189,6 +1193,8 @@ MonoBehaviour: m_VerticalAxis: Vertical m_SubmitButton: Submit m_CancelButton: Cancel + m_RollingPointerId: 0 + m_UseBuiltInInputSystemActions: 0 --- !u!114 &256662350 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/Help/SetHandRay.cs b/Assets/Scripts/Help/SetHandRay.cs index a48b3010..75e0796b 100644 --- a/Assets/Scripts/Help/SetHandRay.cs +++ b/Assets/Scripts/Help/SetHandRay.cs @@ -1,6 +1,6 @@ using UnityEngine; using UnityEngine.Rendering; -using UnityEngine.XR.Interaction.Toolkit; + using BigSpace.Logic; using BigSpace.XRCore.Event; @@ -10,14 +10,14 @@ public class SetHandRay : MonoBehaviour public GameObject LeftRya; public GameObject RigthRay; - XRRayInteractor xRRayInteractor_Left; + UnityEngine.XR.Interaction.Toolkit.Interactors.XRRayInteractor xRRayInteractor_Left; LineRenderer lineRenderer_Left; - XRInteractorLineVisual xRInteractorLineVisual_Left; + UnityEngine.XR.Interaction.Toolkit.Interactors.Visuals.XRInteractorLineVisual xRInteractorLineVisual_Left; SortingGroup sortingGroup_Left; - XRRayInteractor xRRayInteractor_Right; + UnityEngine.XR.Interaction.Toolkit.Interactors.XRRayInteractor xRRayInteractor_Right; LineRenderer lineRenderer_Right; - XRInteractorLineVisual xRInteractorLineVisual_Right; + UnityEngine.XR.Interaction.Toolkit.Interactors.Visuals.XRInteractorLineVisual xRInteractorLineVisual_Right; SortingGroup sortingGroup_Right; @@ -25,14 +25,14 @@ public class SetHandRay : MonoBehaviour // Start is called before the first frame update void Start() { - xRRayInteractor_Left = LeftRya.GetComponent(); + xRRayInteractor_Left = LeftRya.GetComponent(); lineRenderer_Left = LeftRya.GetComponent(); - xRInteractorLineVisual_Left = LeftRya.GetComponent(); + xRInteractorLineVisual_Left = LeftRya.GetComponent(); sortingGroup_Left = LeftRya.GetComponent(); - xRRayInteractor_Right = RigthRay.GetComponent(); + xRRayInteractor_Right = RigthRay.GetComponent(); lineRenderer_Right = RigthRay.GetComponent(); - xRInteractorLineVisual_Right = RigthRay.GetComponent(); + xRInteractorLineVisual_Right = RigthRay.GetComponent(); sortingGroup_Right = RigthRay.GetComponent(); diff --git a/Assets/Third Party/AmplifyShaderEditor/Examples/Built-In Samples.unitypackage.meta b/Assets/Third Party/AmplifyShaderEditor/Examples/Built-In Samples.unitypackage.meta deleted file mode 100644 index ee1d5e40..00000000 --- a/Assets/Third Party/AmplifyShaderEditor/Examples/Built-In Samples.unitypackage.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: e00e6f90ab8233e46a41c5e33917c642 -timeCreated: 1585839223 -licenseType: Store -DefaultImporter: - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Third Party/AmplifyShaderEditor/Examples/HDRP Samples 14x.unitypackage.meta b/Assets/Third Party/AmplifyShaderEditor/Examples/HDRP Samples 14x.unitypackage.meta deleted file mode 100644 index ba827d29..00000000 --- a/Assets/Third Party/AmplifyShaderEditor/Examples/HDRP Samples 14x.unitypackage.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 7a0bb33169d95ec499136d59cb25918b -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Third Party/AmplifyShaderEditor/Examples/HDRP Samples.unitypackage.meta b/Assets/Third Party/AmplifyShaderEditor/Examples/HDRP Samples.unitypackage.meta deleted file mode 100644 index 59379f1b..00000000 --- a/Assets/Third Party/AmplifyShaderEditor/Examples/HDRP Samples.unitypackage.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: d1c0b77896049554fa4b635531caf741 -timeCreated: 1533059192 -licenseType: Store -DefaultImporter: - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Third Party/AmplifyShaderEditor/Examples/Sample Resources.unitypackage.meta b/Assets/Third Party/AmplifyShaderEditor/Examples/Sample Resources.unitypackage.meta deleted file mode 100644 index 2de62af1..00000000 --- a/Assets/Third Party/AmplifyShaderEditor/Examples/Sample Resources.unitypackage.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: c0a0a980c9ba86345bc15411db88d34f -timeCreated: 1585839223 -licenseType: Store -DefaultImporter: - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Third Party/AmplifyShaderEditor/Examples/URP Samples 10x.unitypackage.meta b/Assets/Third Party/AmplifyShaderEditor/Examples/URP Samples 10x.unitypackage.meta deleted file mode 100644 index 819d3c7d..00000000 --- a/Assets/Third Party/AmplifyShaderEditor/Examples/URP Samples 10x.unitypackage.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 2edbf4a9b9544774bbef617e92429664 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Third Party/AmplifyShaderEditor/Examples/URP Samples 12x.unitypackage.meta b/Assets/Third Party/AmplifyShaderEditor/Examples/URP Samples 12x.unitypackage.meta deleted file mode 100644 index 9c0d665d..00000000 --- a/Assets/Third Party/AmplifyShaderEditor/Examples/URP Samples 12x.unitypackage.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 13ab599a7bda4e54fba3e92a13c9580a -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Third Party/AmplifyShaderEditor/Examples/URP Samples 14x.unitypackage.meta b/Assets/Third Party/AmplifyShaderEditor/Examples/URP Samples 14x.unitypackage.meta deleted file mode 100644 index 624d8621..00000000 --- a/Assets/Third Party/AmplifyShaderEditor/Examples/URP Samples 14x.unitypackage.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: f6f268949ccf3f34fa4d18e92501ed82 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Third Party/AmplifyShaderEditor/Examples/URP Samples.unitypackage.meta b/Assets/Third Party/AmplifyShaderEditor/Examples/URP Samples.unitypackage.meta deleted file mode 100644 index 10f67fac..00000000 --- a/Assets/Third Party/AmplifyShaderEditor/Examples/URP Samples.unitypackage.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: a9d68dd8913f05d4d9ce75e7b40c6044 -timeCreated: 1575902011 -licenseType: Store -DefaultImporter: - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Third Party/AmplifyShaderEditor/Plugins/EditorResources/Templates/HDRP 10x.unitypackage.meta b/Assets/Third Party/AmplifyShaderEditor/Plugins/EditorResources/Templates/HDRP 10x.unitypackage.meta deleted file mode 100644 index 602bd09a..00000000 --- a/Assets/Third Party/AmplifyShaderEditor/Plugins/EditorResources/Templates/HDRP 10x.unitypackage.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 2243c8b4e1ab6914995699133f67ab5a -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Third Party/AmplifyShaderEditor/Plugins/EditorResources/Templates/HDRP 12x.unitypackage.meta b/Assets/Third Party/AmplifyShaderEditor/Plugins/EditorResources/Templates/HDRP 12x.unitypackage.meta deleted file mode 100644 index e51ee6d4..00000000 --- a/Assets/Third Party/AmplifyShaderEditor/Plugins/EditorResources/Templates/HDRP 12x.unitypackage.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 9a5e61a8b3421b944863d0946e32da0a -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Third Party/AmplifyShaderEditor/Plugins/EditorResources/Templates/HDRP 14x.unitypackage.meta b/Assets/Third Party/AmplifyShaderEditor/Plugins/EditorResources/Templates/HDRP 14x.unitypackage.meta deleted file mode 100644 index 82a2ab0e..00000000 --- a/Assets/Third Party/AmplifyShaderEditor/Plugins/EditorResources/Templates/HDRP 14x.unitypackage.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 89f0b84148d149d4d96b838d7ef60e92 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Third Party/AmplifyShaderEditor/Plugins/EditorResources/Templates/URP 10x.unitypackage.meta b/Assets/Third Party/AmplifyShaderEditor/Plugins/EditorResources/Templates/URP 10x.unitypackage.meta deleted file mode 100644 index 34f23836..00000000 --- a/Assets/Third Party/AmplifyShaderEditor/Plugins/EditorResources/Templates/URP 10x.unitypackage.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: b460b52e6c1feae45b70b7ddc2c45bd6 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Third Party/AmplifyShaderEditor/Plugins/EditorResources/Templates/URP 12x.unitypackage.meta b/Assets/Third Party/AmplifyShaderEditor/Plugins/EditorResources/Templates/URP 12x.unitypackage.meta deleted file mode 100644 index 04c4f886..00000000 --- a/Assets/Third Party/AmplifyShaderEditor/Plugins/EditorResources/Templates/URP 12x.unitypackage.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 57fcea0ed8b5eb347923c4c21fa31b57 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Third Party/AmplifyShaderEditor/Plugins/EditorResources/Templates/URP 14x.unitypackage.meta b/Assets/Third Party/AmplifyShaderEditor/Plugins/EditorResources/Templates/URP 14x.unitypackage.meta deleted file mode 100644 index d5cd3087..00000000 --- a/Assets/Third Party/AmplifyShaderEditor/Plugins/EditorResources/Templates/URP 14x.unitypackage.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 2e9da72e7e3196146bf7d27450013734 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Third Party/Procedural Worlds/Packages - Install/Gaia/Editor Resources/GaiaXRController.unitypackage.meta b/Assets/Third Party/Procedural Worlds/Packages - Install/Gaia/Editor Resources/GaiaXRController.unitypackage.meta deleted file mode 100644 index a33ac68b..00000000 --- a/Assets/Third Party/Procedural Worlds/Packages - Install/Gaia/Editor Resources/GaiaXRController.unitypackage.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: c814d2df27a2eb14d9f6198b08046609 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor.meta b/Packages/MCPForUnity/Editor.meta new file mode 100644 index 00000000..26495d40 --- /dev/null +++ b/Packages/MCPForUnity/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 31e7fac5858840340a75cc6df0ad3d9e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/AssemblyInfo.cs b/Packages/MCPForUnity/Editor/AssemblyInfo.cs new file mode 100644 index 00000000..bae75b67 --- /dev/null +++ b/Packages/MCPForUnity/Editor/AssemblyInfo.cs @@ -0,0 +1,3 @@ +using System.Runtime.CompilerServices; + +[assembly: InternalsVisibleTo("MCPForUnityTests.EditMode")] diff --git a/Packages/MCPForUnity/Editor/AssemblyInfo.cs.meta b/Packages/MCPForUnity/Editor/AssemblyInfo.cs.meta new file mode 100644 index 00000000..72bf5f72 --- /dev/null +++ b/Packages/MCPForUnity/Editor/AssemblyInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: be61633e00d934610ac1ff8192ffbe3d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Clients.meta b/Packages/MCPForUnity/Editor/Clients.meta new file mode 100644 index 00000000..b4105b36 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Clients.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c9d47f01d06964ee7843765d1bd71205 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Clients/Configurators.meta b/Packages/MCPForUnity/Editor/Clients/Configurators.meta new file mode 100644 index 00000000..a259c217 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Clients/Configurators.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 59ff83375c2c74c8385c4a22549778dd +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Clients/Configurators/AntigravityConfigurator.cs b/Packages/MCPForUnity/Editor/Clients/Configurators/AntigravityConfigurator.cs new file mode 100644 index 00000000..9a83620f --- /dev/null +++ b/Packages/MCPForUnity/Editor/Clients/Configurators/AntigravityConfigurator.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using System.IO; +using MCPForUnity.Editor.Constants; +using MCPForUnity.Editor.Models; +using UnityEditor; + +namespace MCPForUnity.Editor.Clients.Configurators +{ + public class AntigravityConfigurator : JsonFileMcpConfigurator + { + public AntigravityConfigurator() : base(new McpClient + { + name = "Antigravity", + windowsConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".gemini", "antigravity", "mcp_config.json"), + macConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".gemini", "antigravity", "mcp_config.json"), + linuxConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".gemini", "antigravity", "mcp_config.json"), + HttpUrlProperty = "serverUrl", + DefaultUnityFields = { { "disabled", false } }, + StripEnvWhenNotRequired = true + }) + { } + + public override IList GetInstallationSteps() => new List + { + "Open Antigravity", + "Click the more_horiz menu in the Agent pane > MCP Servers", + "Select 'Install' for Unity MCP or use the Configure button above", + "Restart Antigravity if necessary" + }; + } +} diff --git a/Packages/MCPForUnity/Editor/Clients/Configurators/AntigravityConfigurator.cs.meta b/Packages/MCPForUnity/Editor/Clients/Configurators/AntigravityConfigurator.cs.meta new file mode 100644 index 00000000..76e91a07 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Clients/Configurators/AntigravityConfigurator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 331b33961513042e3945d0a1d06615b5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Clients/Configurators/CherryStudioConfigurator.cs b/Packages/MCPForUnity/Editor/Clients/Configurators/CherryStudioConfigurator.cs new file mode 100644 index 00000000..bf14559f --- /dev/null +++ b/Packages/MCPForUnity/Editor/Clients/Configurators/CherryStudioConfigurator.cs @@ -0,0 +1,94 @@ +using System; +using System.Collections.Generic; +using System.IO; +using MCPForUnity.Editor.Constants; +using MCPForUnity.Editor.Models; +using MCPForUnity.Editor.Services; +using UnityEditor; + +namespace MCPForUnity.Editor.Clients.Configurators +{ + public class CherryStudioConfigurator : JsonFileMcpConfigurator + { + public const string ClientName = "Cherry Studio"; + + public CherryStudioConfigurator() : base(new McpClient + { + name = ClientName, + windowsConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Cherry Studio", "config"), + macConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Library", "Application Support", "Cherry Studio", "config"), + linuxConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".config", "Cherry Studio", "config"), + SupportsHttpTransport = false + }) + { } + + public override bool SupportsAutoConfigure => false; + + public override IList GetInstallationSteps() => new List + { + "Open Cherry Studio", + "Go to Settings (⚙️) → MCP Server", + "Click 'Add Server' button", + "For STDIO mode (recommended):", + " - Name: unity-mcp", + " - Type: STDIO", + " - Command: uvx", + " - Arguments: Copy from the Manual Configuration JSON below", + "Click Save and restart Cherry Studio", + "", + "Note: Cherry Studio uses UI-based configuration.", + "Use the manual snippet below as reference for the values to enter." + }; + + public override McpStatus CheckStatus(bool attemptAutoRewrite = true) + { + client.SetStatus(McpStatus.NotConfigured, "Cherry Studio requires manual UI configuration"); + return client.status; + } + + public override void Configure() + { + throw new InvalidOperationException( + "Cherry Studio uses UI-based configuration. " + + "Please use the Manual Configuration snippet and Installation Steps to configure manually." + ); + } + + public override string GetManualSnippet() + { + bool useHttp = EditorConfigurationCache.Instance.UseHttpTransport; + + if (useHttp) + { + return "# Cherry Studio does not support WebSocket transport.\n" + + "# Cherry Studio supports STDIO and SSE transports.\n" + + "# \n" + + "# To use Cherry Studio:\n" + + "# 1. Switch transport to 'Stdio' in Advanced Settings below\n" + + "# 2. Return to this configuration screen\n" + + "# 3. Copy the STDIO configuration snippet that will appear\n" + + "# \n" + + "# OPTION 2: SSE mode (future support)\n" + + "# Note: Unity MCP does not currently have an SSE endpoint.\n" + + "# This may be added in a future update."; + } + + return base.GetManualSnippet() + "\n\n" + + "# Cherry Studio Configuration Instructions:\n" + + "# Cherry Studio uses UI-based configuration, not a JSON file.\n" + + "# \n" + + "# To configure:\n" + + "# 1. Open Cherry Studio\n" + + "# 2. Go to Settings (⚙️) → MCP Server\n" + + "# 3. Click 'Add Server'\n" + + "# 4. Enter the following values from the JSON above:\n" + + "# - Name: unity-mcp\n" + + "# - Type: STDIO\n" + + "# - Command: (copy 'command' value from JSON)\n" + + "# - Arguments: (copy 'args' array values, space-separated or as individual entries)\n" + + "# - Active: true\n" + + "# 5. Click Save\n" + + "# 6. Restart Cherry Studio"; + } + } +} diff --git a/Packages/MCPForUnity/Editor/Clients/Configurators/CherryStudioConfigurator.cs.meta b/Packages/MCPForUnity/Editor/Clients/Configurators/CherryStudioConfigurator.cs.meta new file mode 100644 index 00000000..81450515 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Clients/Configurators/CherryStudioConfigurator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6de06c6bb0399154d840a1e4c84be869 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: \ No newline at end of file diff --git a/Packages/MCPForUnity/Editor/Clients/Configurators/ClaudeCodeConfigurator.cs b/Packages/MCPForUnity/Editor/Clients/Configurators/ClaudeCodeConfigurator.cs new file mode 100644 index 00000000..c890d7c4 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Clients/Configurators/ClaudeCodeConfigurator.cs @@ -0,0 +1,27 @@ +using System.Collections.Generic; +using MCPForUnity.Editor.Models; + +namespace MCPForUnity.Editor.Clients.Configurators +{ + /// + /// Claude Code configurator using the CLI-based registration (claude mcp add/remove). + /// This integrates with Claude Code's native MCP management. + /// + public class ClaudeCodeConfigurator : ClaudeCliMcpConfigurator + { + public ClaudeCodeConfigurator() : base(new McpClient + { + name = "Claude Code", + SupportsHttpTransport = true, + }) + { } + + public override IList GetInstallationSteps() => new List + { + "Ensure Claude CLI is installed (comes with Claude Code)", + "Click Register to add UnityMCP via 'claude mcp add'", + "The server will be automatically available in Claude Code", + "Use Unregister to remove via 'claude mcp remove'" + }; + } +} diff --git a/Packages/MCPForUnity/Editor/Clients/Configurators/ClaudeCodeConfigurator.cs.meta b/Packages/MCPForUnity/Editor/Clients/Configurators/ClaudeCodeConfigurator.cs.meta new file mode 100644 index 00000000..b5ceb3fc --- /dev/null +++ b/Packages/MCPForUnity/Editor/Clients/Configurators/ClaudeCodeConfigurator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d0d22681fc594475db1c189f2d9abdf7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Clients/Configurators/ClaudeDesktopConfigurator.cs b/Packages/MCPForUnity/Editor/Clients/Configurators/ClaudeDesktopConfigurator.cs new file mode 100644 index 00000000..72861349 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Clients/Configurators/ClaudeDesktopConfigurator.cs @@ -0,0 +1,57 @@ +using System; +using System.Collections.Generic; +using System.IO; +using MCPForUnity.Editor.Constants; +using MCPForUnity.Editor.Models; +using MCPForUnity.Editor.Services; +using UnityEditor; + +namespace MCPForUnity.Editor.Clients.Configurators +{ + public class ClaudeDesktopConfigurator : JsonFileMcpConfigurator + { + public const string ClientName = "Claude Desktop"; + + public ClaudeDesktopConfigurator() : base(new McpClient + { + name = ClientName, + windowsConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Claude", "claude_desktop_config.json"), + macConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Library", "Application Support", "Claude", "claude_desktop_config.json"), + linuxConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".config", "Claude", "claude_desktop_config.json"), + SupportsHttpTransport = false, + StripEnvWhenNotRequired = true + }) + { } + + public override IList GetInstallationSteps() => new List + { + "Open Claude Desktop", + "Go to Settings > Developer > Edit Config\nOR open the config path", + "Paste the configuration JSON", + "Save and restart Claude Desktop" + }; + + public override void Configure() + { + bool useHttp = EditorConfigurationCache.Instance.UseHttpTransport; + if (useHttp) + { + throw new InvalidOperationException("Claude Desktop does not support HTTP transport. Switch to stdio in settings before configuring."); + } + + base.Configure(); + } + + public override string GetManualSnippet() + { + bool useHttp = EditorConfigurationCache.Instance.UseHttpTransport; + if (useHttp) + { + return "# Claude Desktop does not support HTTP transport.\n" + + "# Open Advanced Settings and disable HTTP transport to use stdio, then regenerate."; + } + + return base.GetManualSnippet(); + } + } +} diff --git a/Packages/MCPForUnity/Editor/Clients/Configurators/ClaudeDesktopConfigurator.cs.meta b/Packages/MCPForUnity/Editor/Clients/Configurators/ClaudeDesktopConfigurator.cs.meta new file mode 100644 index 00000000..905c262d --- /dev/null +++ b/Packages/MCPForUnity/Editor/Clients/Configurators/ClaudeDesktopConfigurator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d5e5d87c9db57495f842dc366f1ebd65 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Clients/Configurators/CodeBuddyCliConfigurator.cs b/Packages/MCPForUnity/Editor/Clients/Configurators/CodeBuddyCliConfigurator.cs new file mode 100644 index 00000000..4ef36243 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Clients/Configurators/CodeBuddyCliConfigurator.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.IO; +using MCPForUnity.Editor.Models; + +namespace MCPForUnity.Editor.Clients.Configurators +{ + /// + /// Configures the CodeBuddy CLI (~/.codebuddy.json) MCP settings. + /// + public class CodeBuddyCliConfigurator : JsonFileMcpConfigurator + { + public CodeBuddyCliConfigurator() : base(new McpClient + { + name = "CodeBuddy CLI", + windowsConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".codebuddy.json"), + macConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".codebuddy.json"), + linuxConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".codebuddy.json"), + }) + { } + + public override IList GetInstallationSteps() => new List + { + "Install CodeBuddy CLI and ensure '~/.codebuddy.json' exists", + "Click Configure to add the UnityMCP entry (or manually edit the file above)", + "Restart your CLI session if needed" + }; + } +} diff --git a/Packages/MCPForUnity/Editor/Clients/Configurators/CodeBuddyCliConfigurator.cs.meta b/Packages/MCPForUnity/Editor/Clients/Configurators/CodeBuddyCliConfigurator.cs.meta new file mode 100644 index 00000000..255f740f --- /dev/null +++ b/Packages/MCPForUnity/Editor/Clients/Configurators/CodeBuddyCliConfigurator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 923728a98c8c74cfaa6e9203c408f34e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Clients/Configurators/CodexConfigurator.cs b/Packages/MCPForUnity/Editor/Clients/Configurators/CodexConfigurator.cs new file mode 100644 index 00000000..9337d4cd --- /dev/null +++ b/Packages/MCPForUnity/Editor/Clients/Configurators/CodexConfigurator.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.IO; +using MCPForUnity.Editor.Models; + +namespace MCPForUnity.Editor.Clients.Configurators +{ + public class CodexConfigurator : CodexMcpConfigurator + { + public CodexConfigurator() : base(new McpClient + { + name = "Codex", + windowsConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".codex", "config.toml"), + macConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".codex", "config.toml"), + linuxConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".codex", "config.toml") + }) + { } + + public override IList GetInstallationSteps() => new List + { + "Run 'codex config edit' in a terminal\nOR open the config file at the path above", + "Paste the configuration TOML", + "Save and restart Codex" + }; + } +} diff --git a/Packages/MCPForUnity/Editor/Clients/Configurators/CodexConfigurator.cs.meta b/Packages/MCPForUnity/Editor/Clients/Configurators/CodexConfigurator.cs.meta new file mode 100644 index 00000000..14bc60e4 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Clients/Configurators/CodexConfigurator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c7037ef8b168e49f79247cb31c3be75a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Clients/Configurators/CopilotCliConfigurator.cs b/Packages/MCPForUnity/Editor/Clients/Configurators/CopilotCliConfigurator.cs new file mode 100644 index 00000000..84120a4f --- /dev/null +++ b/Packages/MCPForUnity/Editor/Clients/Configurators/CopilotCliConfigurator.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.IO; +using MCPForUnity.Editor.Models; + +namespace MCPForUnity.Editor.Clients.Configurators +{ + public class CopilotCliConfigurator : JsonFileMcpConfigurator + { + public CopilotCliConfigurator() : base(new McpClient + { + name = "GitHub Copilot CLI", + windowsConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".copilot", "mcp-config.json"), + macConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".copilot", "mcp-config.json"), + linuxConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".copilot", "mcp-config.json") + }) + { } + + public override IList GetInstallationSteps() => new List + { + "Install GitHub Copilot CLI (https://docs.github.com/en/copilot/concepts/agents/about-copilot-cli)", + "Open or create mcp-config.json at the path above", + "Paste the configuration JSON (or use /mcp add in the CLI)", + "Restart your Copilot CLI session" + }; + } +} diff --git a/Packages/MCPForUnity/Editor/Clients/Configurators/CopilotCliConfigurator.cs.meta b/Packages/MCPForUnity/Editor/Clients/Configurators/CopilotCliConfigurator.cs.meta new file mode 100644 index 00000000..d6c740f3 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Clients/Configurators/CopilotCliConfigurator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 14a4b9a7f749248d496466c2a3a53e56 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Clients/Configurators/CursorConfigurator.cs b/Packages/MCPForUnity/Editor/Clients/Configurators/CursorConfigurator.cs new file mode 100644 index 00000000..d63b2261 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Clients/Configurators/CursorConfigurator.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.IO; +using MCPForUnity.Editor.Models; + +namespace MCPForUnity.Editor.Clients.Configurators +{ + public class CursorConfigurator : JsonFileMcpConfigurator + { + public CursorConfigurator() : base(new McpClient + { + name = "Cursor", + windowsConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".cursor", "mcp.json"), + macConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".cursor", "mcp.json"), + linuxConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".cursor", "mcp.json") + }) + { } + + public override IList GetInstallationSteps() => new List + { + "Open Cursor", + "Go to File > Preferences > Cursor Settings > MCP > Add new global MCP server\nOR open the config file at the path above", + "Paste the configuration JSON", + "Save and restart Cursor" + }; + } +} diff --git a/Packages/MCPForUnity/Editor/Clients/Configurators/CursorConfigurator.cs.meta b/Packages/MCPForUnity/Editor/Clients/Configurators/CursorConfigurator.cs.meta new file mode 100644 index 00000000..578eb0f6 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Clients/Configurators/CursorConfigurator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b708eda314746481fb8f4a1fb0652b03 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Clients/Configurators/KiloCodeConfigurator.cs b/Packages/MCPForUnity/Editor/Clients/Configurators/KiloCodeConfigurator.cs new file mode 100644 index 00000000..e62b6456 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Clients/Configurators/KiloCodeConfigurator.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.IO; +using MCPForUnity.Editor.Models; + +namespace MCPForUnity.Editor.Clients.Configurators +{ + public class KiloCodeConfigurator : JsonFileMcpConfigurator + { + public KiloCodeConfigurator() : base(new McpClient + { + name = "Kilo Code", + windowsConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Code", "User", "globalStorage", "kilocode.kilo-code", "settings", "mcp_settings.json"), + macConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Library", "Application Support", "Code", "User", "globalStorage", "kilocode.kilo-code", "settings", "mcp_settings.json"), + linuxConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".config", "Code", "User", "globalStorage", "kilocode.kilo-code", "settings", "mcp_settings.json"), + IsVsCodeLayout = true + }) + { } + + public override IList GetInstallationSteps() => new List + { + "Install Kilo Code extension in VS Code", + "Open Kilo Code settings (gear icon in sidebar)", + "Navigate to MCP Servers section and click 'Edit Global MCP Settings'\nOR open the config file at the path above", + "Paste the configuration JSON into the mcpServers object", + "Save and restart VS Code" + }; + } +} diff --git a/Packages/MCPForUnity/Editor/Clients/Configurators/KiloCodeConfigurator.cs.meta b/Packages/MCPForUnity/Editor/Clients/Configurators/KiloCodeConfigurator.cs.meta new file mode 100644 index 00000000..9e2bbfb0 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Clients/Configurators/KiloCodeConfigurator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3286d62ffe5644f5ea60488fd7e6513d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Clients/Configurators/KiroConfigurator.cs b/Packages/MCPForUnity/Editor/Clients/Configurators/KiroConfigurator.cs new file mode 100644 index 00000000..445b6e59 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Clients/Configurators/KiroConfigurator.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.IO; +using MCPForUnity.Editor.Models; + +namespace MCPForUnity.Editor.Clients.Configurators +{ + public class KiroConfigurator : JsonFileMcpConfigurator + { + public KiroConfigurator() : base(new McpClient + { + name = "Kiro", + windowsConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".kiro", "settings", "mcp.json"), + macConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".kiro", "settings", "mcp.json"), + linuxConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".kiro", "settings", "mcp.json"), + EnsureEnvObject = true, + DefaultUnityFields = { { "disabled", false } } + }) + { } + + public override IList GetInstallationSteps() => new List + { + "Open Kiro", + "Go to File > Settings > Settings > Search for \"MCP\" > Open Workspace MCP Config\nOR open the config file at the path above", + "Paste the configuration JSON", + "Save and restart Kiro" + }; + } +} diff --git a/Packages/MCPForUnity/Editor/Clients/Configurators/KiroConfigurator.cs.meta b/Packages/MCPForUnity/Editor/Clients/Configurators/KiroConfigurator.cs.meta new file mode 100644 index 00000000..dacb0435 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Clients/Configurators/KiroConfigurator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e9b73ff071a6043dda1f2ec7d682ef71 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Clients/Configurators/OpenCodeConfigurator.cs b/Packages/MCPForUnity/Editor/Clients/Configurators/OpenCodeConfigurator.cs new file mode 100644 index 00000000..34ab535b --- /dev/null +++ b/Packages/MCPForUnity/Editor/Clients/Configurators/OpenCodeConfigurator.cs @@ -0,0 +1,178 @@ +using System; +using System.Collections.Generic; +using System.IO; +using MCPForUnity.Editor.Helpers; +using MCPForUnity.Editor.Models; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; + +namespace MCPForUnity.Editor.Clients.Configurators +{ + /// + /// Configurator for OpenCode (opencode.ai) - a Go-based terminal AI coding assistant. + /// OpenCode uses ~/.config/opencode/opencode.json with a custom "mcp" format. + /// + public class OpenCodeConfigurator : McpClientConfiguratorBase + { + private const string ServerName = "unityMCP"; + private const string SchemaUrl = "https://opencode.ai/config.json"; + + public OpenCodeConfigurator() : base(new McpClient + { + name = "OpenCode", + windowsConfigPath = BuildConfigPath(), + macConfigPath = BuildConfigPath(), + linuxConfigPath = BuildConfigPath() + }) + { } + + private static string BuildConfigPath() + { + string xdgConfigHome = Environment.GetEnvironmentVariable("XDG_CONFIG_HOME"); + string configBase = !string.IsNullOrEmpty(xdgConfigHome) + ? xdgConfigHome + : Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".config"); + return Path.Combine(configBase, "opencode", "opencode.json"); + } + + public override string GetConfigPath() => CurrentOsPath(); + + /// + /// Attempts to load and parse the config file. + /// Returns null if file doesn't exist or cannot be read. + /// Returns parsed JObject if valid JSON found. + /// Logs warning if file exists but contains malformed JSON. + /// + private JObject TryLoadConfig(string path) + { + if (!File.Exists(path)) + return null; + + string content; + try + { + content = File.ReadAllText(path); + } + catch (Exception ex) + { + UnityEngine.Debug.LogWarning($"[OpenCodeConfigurator] Failed to read config file {path}: {ex.Message}"); + return null; + } + + try + { + return JsonConvert.DeserializeObject(content) ?? new JObject(); + } + catch (JsonException ex) + { + // Malformed JSON - log warning and return null. + // When Configure() receives null, it will do: TryLoadConfig(path) ?? new JObject() + // This creates a fresh empty JObject, which replaces the entire file with only the unityMCP section. + // Existing config sections are lost. To preserve sections, a different recovery strategy + // (e.g., line-by-line parsing, JSON repair, or manual user intervention) would be needed. + UnityEngine.Debug.LogWarning($"[OpenCodeConfigurator] Malformed JSON in {path}: {ex.Message}"); + return null; + } + } + + public override McpStatus CheckStatus(bool attemptAutoRewrite = true) + { + try + { + string path = GetConfigPath(); + var config = TryLoadConfig(path); + + if (config == null) + { + client.SetStatus(McpStatus.NotConfigured); + return client.status; + } + + var unityMcp = config["mcp"]?[ServerName] as JObject; + + if (unityMcp == null) + { + client.SetStatus(McpStatus.NotConfigured); + return client.status; + } + + string configuredUrl = unityMcp["url"]?.ToString(); + string expectedUrl = HttpEndpointUtility.GetMcpRpcUrl(); + + if (UrlsEqual(configuredUrl, expectedUrl)) + { + client.SetStatus(McpStatus.Configured); + } + else if (attemptAutoRewrite) + { + Configure(); + } + else + { + client.SetStatus(McpStatus.IncorrectPath); + } + } + catch (Exception ex) + { + client.SetStatus(McpStatus.Error, ex.Message); + } + + return client.status; + } + + public override void Configure() + { + try + { + string path = GetConfigPath(); + McpConfigurationHelper.EnsureConfigDirectoryExists(path); + + // Load existing config or start fresh, preserving all other properties and MCP servers + var config = TryLoadConfig(path) ?? new JObject(); + + // Only add $schema if creating a new file + if (!File.Exists(path)) + { + config["$schema"] = SchemaUrl; + } + + // Preserve existing mcp section and only update our server entry + var mcpSection = config["mcp"] as JObject ?? new JObject(); + config["mcp"] = mcpSection; + + mcpSection[ServerName] = BuildServerEntry(); + + McpConfigurationHelper.WriteAtomicFile(path, JsonConvert.SerializeObject(config, Formatting.Indented)); + client.SetStatus(McpStatus.Configured); + } + catch (Exception ex) + { + client.SetStatus(McpStatus.Error, ex.Message); + } + } + + public override string GetManualSnippet() + { + var snippet = new JObject + { + ["mcp"] = new JObject { [ServerName] = BuildServerEntry() } + }; + return JsonConvert.SerializeObject(snippet, Formatting.Indented); + } + + public override IList GetInstallationSteps() => new List + { + "Install OpenCode (https://opencode.ai)", + "Click Configure to add Unity MCP to ~/.config/opencode/opencode.json", + "Restart OpenCode", + "The Unity MCP server should be detected automatically" + }; + + private static JObject BuildServerEntry() => new JObject + { + ["type"] = "remote", + ["url"] = HttpEndpointUtility.GetMcpRpcUrl(), + ["enabled"] = true + }; + } +} diff --git a/Packages/MCPForUnity/Editor/Clients/Configurators/OpenCodeConfigurator.cs.meta b/Packages/MCPForUnity/Editor/Clients/Configurators/OpenCodeConfigurator.cs.meta new file mode 100644 index 00000000..c3b334d5 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Clients/Configurators/OpenCodeConfigurator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 489f99ffb7e6743e88e3203552c8b37b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Clients/Configurators/RiderConfigurator.cs b/Packages/MCPForUnity/Editor/Clients/Configurators/RiderConfigurator.cs new file mode 100644 index 00000000..2558a426 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Clients/Configurators/RiderConfigurator.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.IO; +using MCPForUnity.Editor.Models; + +namespace MCPForUnity.Editor.Clients.Configurators +{ + public class RiderConfigurator : JsonFileMcpConfigurator + { + public RiderConfigurator() : base(new McpClient + { + name = "Rider GitHub Copilot", + windowsConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "github-copilot", "intellij", "mcp.json"), + macConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Library", "Application Support", "github-copilot", "intellij", "mcp.json"), + linuxConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".config", "github-copilot", "intellij", "mcp.json"), + IsVsCodeLayout = true + }) + { } + + public override IList GetInstallationSteps() => new List + { + "Install GitHub Copilot plugin in Rider", + "Open or create mcp.json at the path above", + "Paste the configuration JSON", + "Save and restart Rider" + }; + } +} + diff --git a/Packages/MCPForUnity/Editor/Clients/Configurators/RiderConfigurator.cs.meta b/Packages/MCPForUnity/Editor/Clients/Configurators/RiderConfigurator.cs.meta new file mode 100644 index 00000000..8f76ac04 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Clients/Configurators/RiderConfigurator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2511b0d05271d486bb61f8cc9fd11363 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Clients/Configurators/TraeConfigurator.cs b/Packages/MCPForUnity/Editor/Clients/Configurators/TraeConfigurator.cs new file mode 100644 index 00000000..f32b6886 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Clients/Configurators/TraeConfigurator.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.IO; +using MCPForUnity.Editor.Models; + +namespace MCPForUnity.Editor.Clients.Configurators +{ + public class TraeConfigurator : JsonFileMcpConfigurator + { + public TraeConfigurator() : base(new McpClient + { + name = "Trae", + windowsConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Trae", "mcp.json"), + macConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Library", "Application Support", "Trae", "mcp.json"), + linuxConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".config", "Trae", "mcp.json"), + }) + { } + + public override IList GetInstallationSteps() => new List + { + "Open Trae and go to Settings > MCP", + "Select Add Server > Add Manually", + "Paste the JSON or point to the mcp.json file\n"+ + "Windows: %AppData%\\Trae\\mcp.json\n" + + "macOS: ~/Library/Application Support/Trae/mcp.json\n" + + "Linux: ~/.config/Trae/mcp.json\n", + "Save and restart Trae" + }; + } +} diff --git a/Packages/MCPForUnity/Editor/Clients/Configurators/TraeConfigurator.cs.meta b/Packages/MCPForUnity/Editor/Clients/Configurators/TraeConfigurator.cs.meta new file mode 100644 index 00000000..09e953c1 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Clients/Configurators/TraeConfigurator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b3ab39e22ae0948ab94beae307f9902e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Clients/Configurators/VSCodeConfigurator.cs b/Packages/MCPForUnity/Editor/Clients/Configurators/VSCodeConfigurator.cs new file mode 100644 index 00000000..90579304 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Clients/Configurators/VSCodeConfigurator.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.IO; +using MCPForUnity.Editor.Models; + +namespace MCPForUnity.Editor.Clients.Configurators +{ + public class VSCodeConfigurator : JsonFileMcpConfigurator + { + public VSCodeConfigurator() : base(new McpClient + { + name = "VSCode GitHub Copilot", + windowsConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Code", "User", "mcp.json"), + macConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Library", "Application Support", "Code", "User", "mcp.json"), + linuxConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".config", "Code", "User", "mcp.json"), + IsVsCodeLayout = true + }) + { } + + public override IList GetInstallationSteps() => new List + { + "Install GitHub Copilot extension", + "Open or create mcp.json at the path above", + "Paste the configuration JSON", + "Save and restart VSCode" + }; + } +} diff --git a/Packages/MCPForUnity/Editor/Clients/Configurators/VSCodeConfigurator.cs.meta b/Packages/MCPForUnity/Editor/Clients/Configurators/VSCodeConfigurator.cs.meta new file mode 100644 index 00000000..056d0d41 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Clients/Configurators/VSCodeConfigurator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bcc7ead475a4d4ea2978151c217757b8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Clients/Configurators/VSCodeInsidersConfigurator.cs b/Packages/MCPForUnity/Editor/Clients/Configurators/VSCodeInsidersConfigurator.cs new file mode 100644 index 00000000..55adb28f --- /dev/null +++ b/Packages/MCPForUnity/Editor/Clients/Configurators/VSCodeInsidersConfigurator.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.IO; +using MCPForUnity.Editor.Models; + +namespace MCPForUnity.Editor.Clients.Configurators +{ + public class VSCodeInsidersConfigurator : JsonFileMcpConfigurator + { + public VSCodeInsidersConfigurator() : base(new McpClient + { + name = "VSCode Insiders GitHub Copilot", + windowsConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Code - Insiders", "User", "mcp.json"), + macConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Library", "Application Support", "Code - Insiders", "User", "mcp.json"), + linuxConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".config", "Code - Insiders", "User", "mcp.json"), + IsVsCodeLayout = true + }) + { } + + public override IList GetInstallationSteps() => new List + { + "Install GitHub Copilot extension in VS Code Insiders", + "Open or create mcp.json at the path above", + "Paste the configuration JSON", + "Save and restart VS Code Insiders" + }; + } +} diff --git a/Packages/MCPForUnity/Editor/Clients/Configurators/VSCodeInsidersConfigurator.cs.meta b/Packages/MCPForUnity/Editor/Clients/Configurators/VSCodeInsidersConfigurator.cs.meta new file mode 100644 index 00000000..e751d6f3 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Clients/Configurators/VSCodeInsidersConfigurator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2c4a1b0d3b34489cbf0f8c40c49c4f3b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Clients/Configurators/WindsurfConfigurator.cs b/Packages/MCPForUnity/Editor/Clients/Configurators/WindsurfConfigurator.cs new file mode 100644 index 00000000..4437170f --- /dev/null +++ b/Packages/MCPForUnity/Editor/Clients/Configurators/WindsurfConfigurator.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.IO; +using MCPForUnity.Editor.Models; + +namespace MCPForUnity.Editor.Clients.Configurators +{ + public class WindsurfConfigurator : JsonFileMcpConfigurator + { + public WindsurfConfigurator() : base(new McpClient + { + name = "Windsurf", + windowsConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".codeium", "windsurf", "mcp_config.json"), + macConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".codeium", "windsurf", "mcp_config.json"), + linuxConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".codeium", "windsurf", "mcp_config.json"), + HttpUrlProperty = "serverUrl", + DefaultUnityFields = { { "disabled", false } }, + StripEnvWhenNotRequired = true + }) + { } + + public override IList GetInstallationSteps() => new List + { + "Open Windsurf", + "Go to File > Preferences > Windsurf Settings > MCP > Manage MCPs > View raw config\nOR open the config file at the path above", + "Paste the configuration JSON", + "Save and restart Windsurf" + }; + } +} diff --git a/Packages/MCPForUnity/Editor/Clients/Configurators/WindsurfConfigurator.cs.meta b/Packages/MCPForUnity/Editor/Clients/Configurators/WindsurfConfigurator.cs.meta new file mode 100644 index 00000000..1b951566 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Clients/Configurators/WindsurfConfigurator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b528971e189f141d38db577f155bd222 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Clients/IMcpClientConfigurator.cs b/Packages/MCPForUnity/Editor/Clients/IMcpClientConfigurator.cs new file mode 100644 index 00000000..9fdea29c --- /dev/null +++ b/Packages/MCPForUnity/Editor/Clients/IMcpClientConfigurator.cs @@ -0,0 +1,47 @@ +using MCPForUnity.Editor.Models; + +namespace MCPForUnity.Editor.Clients +{ + /// + /// Contract for MCP client configurators. Each client is responsible for + /// status detection, auto-configure, and manual snippet/steps. + /// + public interface IMcpClientConfigurator + { + /// Stable identifier (e.g., "cursor"). + string Id { get; } + + /// Display name shown in the UI. + string DisplayName { get; } + + /// Current status cached by the configurator. + McpStatus Status { get; } + + /// + /// The transport type the client is currently configured for. + /// Returns Unknown if the client is not configured or the transport cannot be determined. + /// + ConfiguredTransport ConfiguredTransport { get; } + + /// True if this client supports auto-configure. + bool SupportsAutoConfigure { get; } + + /// Label to show on the configure button for the current state. + string GetConfigureActionLabel(); + + /// Returns the platform-specific config path (or message for CLI-managed clients). + string GetConfigPath(); + + /// Checks and updates status; returns current status. + McpStatus CheckStatus(bool attemptAutoRewrite = true); + + /// Runs auto-configuration (register/write file/CLI etc.). + void Configure(); + + /// Returns the manual configuration snippet (JSON/TOML/commands). + string GetManualSnippet(); + + /// Returns ordered human-readable installation steps. + System.Collections.Generic.IList GetInstallationSteps(); + } +} diff --git a/Packages/MCPForUnity/Editor/Clients/IMcpClientConfigurator.cs.meta b/Packages/MCPForUnity/Editor/Clients/IMcpClientConfigurator.cs.meta new file mode 100644 index 00000000..fc573966 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Clients/IMcpClientConfigurator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f5a5078d9e6e14027a1abfebf4018634 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Clients/McpClientConfiguratorBase.cs b/Packages/MCPForUnity/Editor/Clients/McpClientConfiguratorBase.cs new file mode 100644 index 00000000..0d69cafb --- /dev/null +++ b/Packages/MCPForUnity/Editor/Clients/McpClientConfiguratorBase.cs @@ -0,0 +1,925 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Runtime.InteropServices; +using MCPForUnity.Editor.Constants; +using MCPForUnity.Editor.Helpers; +using MCPForUnity.Editor.Models; +using MCPForUnity.Editor.Services; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using UnityEditor; +using UnityEngine; + +namespace MCPForUnity.Editor.Clients +{ + /// Shared base class for MCP configurators. + public abstract class McpClientConfiguratorBase : IMcpClientConfigurator + { + protected readonly McpClient client; + + protected McpClientConfiguratorBase(McpClient client) + { + this.client = client; + } + + internal McpClient Client => client; + + public string Id => client.name.Replace(" ", "").ToLowerInvariant(); + public virtual string DisplayName => client.name; + public McpStatus Status => client.status; + public ConfiguredTransport ConfiguredTransport => client.configuredTransport; + public virtual bool SupportsAutoConfigure => true; + public virtual string GetConfigureActionLabel() => "Configure"; + + public abstract string GetConfigPath(); + public abstract McpStatus CheckStatus(bool attemptAutoRewrite = true); + public abstract void Configure(); + public abstract string GetManualSnippet(); + public abstract IList GetInstallationSteps(); + + protected string GetUvxPathOrError() + { + string uvx = MCPServiceLocator.Paths.GetUvxPath(); + if (string.IsNullOrEmpty(uvx)) + { + throw new InvalidOperationException("uvx not found. Install uv/uvx or set the override in Advanced Settings."); + } + return uvx; + } + + protected string CurrentOsPath() + { + if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + return client.windowsConfigPath; + if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) + return client.macConfigPath; + return client.linuxConfigPath; + } + + protected bool UrlsEqual(string a, string b) + { + if (string.IsNullOrWhiteSpace(a) || string.IsNullOrWhiteSpace(b)) + { + return false; + } + + if (Uri.TryCreate(a.Trim(), UriKind.Absolute, out var uriA) && + Uri.TryCreate(b.Trim(), UriKind.Absolute, out var uriB)) + { + return Uri.Compare( + uriA, + uriB, + UriComponents.HttpRequestUrl, + UriFormat.SafeUnescaped, + StringComparison.OrdinalIgnoreCase) == 0; + } + + string Normalize(string value) => value.Trim().TrimEnd('/'); + return string.Equals(Normalize(a), Normalize(b), StringComparison.OrdinalIgnoreCase); + } + } + + /// JSON-file based configurator (Cursor, Windsurf, VS Code, etc.). + public abstract class JsonFileMcpConfigurator : McpClientConfiguratorBase + { + public JsonFileMcpConfigurator(McpClient client) : base(client) { } + + public override string GetConfigPath() => CurrentOsPath(); + + public override McpStatus CheckStatus(bool attemptAutoRewrite = true) + { + try + { + string path = GetConfigPath(); + if (!File.Exists(path)) + { + client.SetStatus(McpStatus.NotConfigured); + client.configuredTransport = Models.ConfiguredTransport.Unknown; + return client.status; + } + + string configJson = File.ReadAllText(path); + string[] args = null; + string configuredUrl = null; + bool configExists = false; + + if (client.IsVsCodeLayout) + { + var vsConfig = JsonConvert.DeserializeObject(configJson) as JObject; + if (vsConfig != null) + { + var unityToken = + vsConfig["servers"]?["unityMCP"] + ?? vsConfig["mcp"]?["servers"]?["unityMCP"]; + + if (unityToken is JObject unityObj) + { + configExists = true; + + var argsToken = unityObj["args"]; + if (argsToken is JArray) + { + args = argsToken.ToObject(); + } + + var urlToken = unityObj["url"] ?? unityObj["serverUrl"]; + if (urlToken != null && urlToken.Type != JTokenType.Null) + { + configuredUrl = urlToken.ToString(); + } + } + } + } + else + { + McpConfig standardConfig = JsonConvert.DeserializeObject(configJson); + if (standardConfig?.mcpServers?.unityMCP != null) + { + args = standardConfig.mcpServers.unityMCP.args; + configuredUrl = standardConfig.mcpServers.unityMCP.url; + configExists = true; + } + } + + if (!configExists) + { + client.SetStatus(McpStatus.MissingConfig); + client.configuredTransport = Models.ConfiguredTransport.Unknown; + return client.status; + } + + // Determine and set the configured transport type + if (args != null && args.Length > 0) + { + client.configuredTransport = Models.ConfiguredTransport.Stdio; + } + else if (!string.IsNullOrEmpty(configuredUrl)) + { + // Distinguish HTTP Local from HTTP Remote by matching against both URLs + string localRpcUrl = HttpEndpointUtility.GetLocalMcpRpcUrl(); + string remoteRpcUrl = HttpEndpointUtility.GetRemoteMcpRpcUrl(); + if (!string.IsNullOrEmpty(remoteRpcUrl) && UrlsEqual(configuredUrl, remoteRpcUrl)) + { + client.configuredTransport = Models.ConfiguredTransport.HttpRemote; + } + else + { + client.configuredTransport = Models.ConfiguredTransport.Http; + } + } + else + { + client.configuredTransport = Models.ConfiguredTransport.Unknown; + } + + bool matches = false; + if (args != null && args.Length > 0) + { + string expectedUvxUrl = AssetPathUtility.GetMcpServerPackageSource(); + string configuredUvxUrl = McpConfigurationHelper.ExtractUvxUrl(args); + matches = !string.IsNullOrEmpty(configuredUvxUrl) && + McpConfigurationHelper.PathsEqual(configuredUvxUrl, expectedUvxUrl); + } + else if (!string.IsNullOrEmpty(configuredUrl)) + { + // Match against the active scope's URL + string expectedUrl = HttpEndpointUtility.GetMcpRpcUrl(); + matches = UrlsEqual(configuredUrl, expectedUrl); + } + + if (matches) + { + client.SetStatus(McpStatus.Configured); + return client.status; + } + + if (attemptAutoRewrite) + { + var result = McpConfigurationHelper.WriteMcpConfiguration(path, client); + if (result == "Configured successfully") + { + client.SetStatus(McpStatus.Configured); + client.configuredTransport = HttpEndpointUtility.GetCurrentServerTransport(); + } + else + { + client.SetStatus(McpStatus.IncorrectPath); + } + } + else + { + client.SetStatus(McpStatus.IncorrectPath); + } + } + catch (Exception ex) + { + client.SetStatus(McpStatus.Error, ex.Message); + client.configuredTransport = Models.ConfiguredTransport.Unknown; + } + + return client.status; + } + + public override void Configure() + { + string path = GetConfigPath(); + McpConfigurationHelper.EnsureConfigDirectoryExists(path); + string result = McpConfigurationHelper.WriteMcpConfiguration(path, client); + if (result == "Configured successfully") + { + client.SetStatus(McpStatus.Configured); + client.configuredTransport = HttpEndpointUtility.GetCurrentServerTransport(); + } + else + { + throw new InvalidOperationException(result); + } + } + + public override string GetManualSnippet() + { + try + { + string uvx = GetUvxPathOrError(); + return ConfigJsonBuilder.BuildManualConfigJson(uvx, client); + } + catch (Exception ex) + { + var errorObj = new { error = ex.Message }; + return JsonConvert.SerializeObject(errorObj); + } + } + + public override IList GetInstallationSteps() => new List { "Configuration steps not available for this client." }; + } + + /// Codex (TOML) configurator. + public abstract class CodexMcpConfigurator : McpClientConfiguratorBase + { + public CodexMcpConfigurator(McpClient client) : base(client) { } + + public override string GetConfigPath() => CurrentOsPath(); + + public override McpStatus CheckStatus(bool attemptAutoRewrite = true) + { + try + { + string path = GetConfigPath(); + if (!File.Exists(path)) + { + client.SetStatus(McpStatus.NotConfigured); + client.configuredTransport = Models.ConfiguredTransport.Unknown; + return client.status; + } + + string toml = File.ReadAllText(path); + if (CodexConfigHelper.TryParseCodexServer(toml, out _, out var args, out var url)) + { + // Determine and set the configured transport type + if (!string.IsNullOrEmpty(url)) + { + // Distinguish HTTP Local from HTTP Remote + string remoteRpcUrl = HttpEndpointUtility.GetRemoteMcpRpcUrl(); + if (!string.IsNullOrEmpty(remoteRpcUrl) && UrlsEqual(url, remoteRpcUrl)) + { + client.configuredTransport = Models.ConfiguredTransport.HttpRemote; + } + else + { + client.configuredTransport = Models.ConfiguredTransport.Http; + } + } + else if (args != null && args.Length > 0) + { + client.configuredTransport = Models.ConfiguredTransport.Stdio; + } + else + { + client.configuredTransport = Models.ConfiguredTransport.Unknown; + } + + bool matches = false; + if (!string.IsNullOrEmpty(url)) + { + // Match against the active scope's URL + matches = UrlsEqual(url, HttpEndpointUtility.GetMcpRpcUrl()); + } + else if (args != null && args.Length > 0) + { + string expected = AssetPathUtility.GetMcpServerPackageSource(); + string configured = McpConfigurationHelper.ExtractUvxUrl(args); + matches = !string.IsNullOrEmpty(configured) && + McpConfigurationHelper.PathsEqual(configured, expected); + } + + if (matches) + { + client.SetStatus(McpStatus.Configured); + return client.status; + } + } + else + { + client.configuredTransport = Models.ConfiguredTransport.Unknown; + } + + if (attemptAutoRewrite) + { + string result = McpConfigurationHelper.ConfigureCodexClient(path, client); + if (result == "Configured successfully") + { + client.SetStatus(McpStatus.Configured); + client.configuredTransport = HttpEndpointUtility.GetCurrentServerTransport(); + } + else + { + client.SetStatus(McpStatus.IncorrectPath); + } + } + else + { + client.SetStatus(McpStatus.IncorrectPath); + } + } + catch (Exception ex) + { + client.SetStatus(McpStatus.Error, ex.Message); + client.configuredTransport = Models.ConfiguredTransport.Unknown; + } + + return client.status; + } + + public override void Configure() + { + string path = GetConfigPath(); + McpConfigurationHelper.EnsureConfigDirectoryExists(path); + string result = McpConfigurationHelper.ConfigureCodexClient(path, client); + if (result == "Configured successfully") + { + client.SetStatus(McpStatus.Configured); + client.configuredTransport = HttpEndpointUtility.GetCurrentServerTransport(); + } + else + { + throw new InvalidOperationException(result); + } + } + + public override string GetManualSnippet() + { + try + { + string uvx = GetUvxPathOrError(); + return CodexConfigHelper.BuildCodexServerBlock(uvx); + } + catch (Exception ex) + { + return $"# error: {ex.Message}"; + } + } + + public override IList GetInstallationSteps() => new List + { + "Run 'codex config edit' or open the config path", + "Paste the TOML", + "Save and restart Codex" + }; + } + + /// CLI-based configurator (Claude Code). + public abstract class ClaudeCliMcpConfigurator : McpClientConfiguratorBase + { + public ClaudeCliMcpConfigurator(McpClient client) : base(client) { } + + public override bool SupportsAutoConfigure => true; + public override string GetConfigureActionLabel() => client.status == McpStatus.Configured ? "Unregister" : "Register"; + + public override string GetConfigPath() => "Managed via Claude CLI"; + + /// + /// Checks the Claude CLI registration status. + /// MUST be called from the main Unity thread due to EditorPrefs and Application.dataPath access. + /// + public override McpStatus CheckStatus(bool attemptAutoRewrite = true) + { + // Capture main-thread-only values before delegating to thread-safe method + string projectDir = Path.GetDirectoryName(Application.dataPath); + bool useHttpTransport = EditorConfigurationCache.Instance.UseHttpTransport; + // Resolve claudePath on the main thread (EditorPrefs access) + string claudePath = MCPServiceLocator.Paths.GetClaudeCliPath(); + return CheckStatusWithProjectDir(projectDir, useHttpTransport, claudePath, attemptAutoRewrite); + } + + /// + /// Internal thread-safe version of CheckStatus. + /// Can be called from background threads because all main-thread-only values are passed as parameters. + /// projectDir, useHttpTransport, and claudePath are REQUIRED (non-nullable) to enforce thread safety at compile time. + /// NOTE: attemptAutoRewrite is NOT fully thread-safe because Configure() requires the main thread. + /// When called from a background thread, pass attemptAutoRewrite=false and handle re-registration + /// on the main thread based on the returned status. + /// + internal McpStatus CheckStatusWithProjectDir(string projectDir, bool useHttpTransport, string claudePath, bool attemptAutoRewrite = false) + { + try + { + if (string.IsNullOrEmpty(claudePath)) + { + client.SetStatus(McpStatus.NotConfigured, "Claude CLI not found"); + client.configuredTransport = Models.ConfiguredTransport.Unknown; + return client.status; + } + + // projectDir is required - no fallback to Application.dataPath + if (string.IsNullOrEmpty(projectDir)) + { + throw new ArgumentNullException(nameof(projectDir), "Project directory must be provided for thread-safe execution"); + } + + string pathPrepend = null; + if (Application.platform == RuntimePlatform.OSXEditor) + { + pathPrepend = "/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin"; + } + else if (Application.platform == RuntimePlatform.LinuxEditor) + { + pathPrepend = "/usr/local/bin:/usr/bin:/bin"; + } + + try + { + string claudeDir = Path.GetDirectoryName(claudePath); + if (!string.IsNullOrEmpty(claudeDir)) + { + pathPrepend = string.IsNullOrEmpty(pathPrepend) + ? claudeDir + : $"{claudeDir}:{pathPrepend}"; + } + } + catch { } + + // Check if UnityMCP exists (handles both "UnityMCP" and legacy "unityMCP") + if (ExecPath.TryRun(claudePath, "mcp list", projectDir, out var listStdout, out var listStderr, 10000, pathPrepend)) + { + if (!string.IsNullOrEmpty(listStdout) && listStdout.IndexOf("UnityMCP", StringComparison.OrdinalIgnoreCase) >= 0) + { + // UnityMCP is registered - now verify transport mode matches + // useHttpTransport parameter is required (non-nullable) to ensure thread safety + bool currentUseHttp = useHttpTransport; + + // Get detailed info about the registration to check transport type + // Try both "UnityMCP" and "unityMCP" (legacy naming) + string getStdout = null, getStderr = null; + bool gotInfo = ExecPath.TryRun(claudePath, "mcp get UnityMCP", projectDir, out getStdout, out getStderr, 7000, pathPrepend) + || ExecPath.TryRun(claudePath, "mcp get unityMCP", projectDir, out getStdout, out getStderr, 7000, pathPrepend); + if (gotInfo) + { + // Parse the output to determine registered transport mode + // The CLI output format contains "Type: http" or "Type: stdio" + bool registeredWithHttp = getStdout.Contains("Type: http", StringComparison.OrdinalIgnoreCase); + bool registeredWithStdio = getStdout.Contains("Type: stdio", StringComparison.OrdinalIgnoreCase); + + // Set the configured transport based on what we detected + // For HTTP, we can't distinguish local/remote from CLI output alone, + // so infer from the current scope setting when HTTP is detected. + if (registeredWithHttp) + { + client.configuredTransport = HttpEndpointUtility.IsRemoteScope() + ? Models.ConfiguredTransport.HttpRemote + : Models.ConfiguredTransport.Http; + } + else if (registeredWithStdio) + { + client.configuredTransport = Models.ConfiguredTransport.Stdio; + } + else + { + client.configuredTransport = Models.ConfiguredTransport.Unknown; + } + + // Check for transport mismatch (3-way: Stdio, Http, HttpRemote) + bool hasTransportMismatch = (currentUseHttp && registeredWithStdio) || (!currentUseHttp && registeredWithHttp); + + // For stdio transport, also check package version + bool hasVersionMismatch = false; + string configuredPackageSource = null; + string expectedPackageSource = null; + if (registeredWithStdio) + { + expectedPackageSource = AssetPathUtility.GetMcpServerPackageSource(); + configuredPackageSource = ExtractPackageSourceFromCliOutput(getStdout); + hasVersionMismatch = !string.IsNullOrEmpty(configuredPackageSource) && + !string.Equals(configuredPackageSource, expectedPackageSource, StringComparison.OrdinalIgnoreCase); + } + + // If there's any mismatch and auto-rewrite is enabled, re-register + if (hasTransportMismatch || hasVersionMismatch) + { + // Configure() requires main thread (accesses EditorPrefs, Application.dataPath) + // Only attempt auto-rewrite if we're on the main thread + bool isMainThread = System.Threading.Thread.CurrentThread.ManagedThreadId == 1; + if (attemptAutoRewrite && isMainThread) + { + string reason = hasTransportMismatch + ? $"Transport mismatch (registered: {(registeredWithHttp ? "HTTP" : "stdio")}, expected: {(currentUseHttp ? "HTTP" : "stdio")})" + : $"Package version mismatch (registered: {configuredPackageSource}, expected: {expectedPackageSource})"; + McpLog.Info($"{reason}. Re-registering..."); + try + { + // Force re-register by ensuring status is not Configured (which would toggle to Unregister) + client.SetStatus(McpStatus.IncorrectPath); + Configure(); + return client.status; + } + catch (Exception ex) + { + McpLog.Warn($"Auto-reregister failed: {ex.Message}"); + client.SetStatus(McpStatus.IncorrectPath, $"Configuration mismatch. Click Configure to re-register."); + return client.status; + } + } + else + { + if (hasTransportMismatch) + { + string errorMsg = $"Transport mismatch: Claude Code is registered with {(registeredWithHttp ? "HTTP" : "stdio")} but current setting is {(currentUseHttp ? "HTTP" : "stdio")}. Click Configure to re-register."; + client.SetStatus(McpStatus.Error, errorMsg); + McpLog.Warn(errorMsg); + } + else + { + client.SetStatus(McpStatus.IncorrectPath, $"Package version mismatch: registered with '{configuredPackageSource}' but current version is '{expectedPackageSource}'."); + } + return client.status; + } + } + } + + client.SetStatus(McpStatus.Configured); + return client.status; + } + } + + client.SetStatus(McpStatus.NotConfigured); + client.configuredTransport = Models.ConfiguredTransport.Unknown; + } + catch (Exception ex) + { + client.SetStatus(McpStatus.Error, ex.Message); + client.configuredTransport = Models.ConfiguredTransport.Unknown; + } + + return client.status; + } + + public override void Configure() + { + if (client.status == McpStatus.Configured) + { + Unregister(); + } + else + { + Register(); + } + } + + /// + /// Thread-safe version of Configure that uses pre-captured main-thread values. + /// All parameters must be captured on the main thread before calling this method. + /// + public void ConfigureWithCapturedValues( + string projectDir, string claudePath, string pathPrepend, + bool useHttpTransport, string httpUrl, + string uvxPath, string gitUrl, string packageName, bool shouldForceRefresh, + string apiKey, + Models.ConfiguredTransport serverTransport) + { + if (client.status == McpStatus.Configured) + { + UnregisterWithCapturedValues(projectDir, claudePath, pathPrepend); + } + else + { + RegisterWithCapturedValues(projectDir, claudePath, pathPrepend, + useHttpTransport, httpUrl, uvxPath, gitUrl, packageName, shouldForceRefresh, + apiKey, serverTransport); + } + } + + /// + /// Thread-safe registration using pre-captured values. + /// + private void RegisterWithCapturedValues( + string projectDir, string claudePath, string pathPrepend, + bool useHttpTransport, string httpUrl, + string uvxPath, string gitUrl, string packageName, bool shouldForceRefresh, + string apiKey, + Models.ConfiguredTransport serverTransport) + { + if (string.IsNullOrEmpty(claudePath)) + { + throw new InvalidOperationException("Claude CLI not found. Please install Claude Code first."); + } + + string args; + if (useHttpTransport) + { + // Only include API key header for remote-hosted mode + if (serverTransport == Models.ConfiguredTransport.HttpRemote && !string.IsNullOrEmpty(apiKey)) + { + string safeKey = SanitizeShellHeaderValue(apiKey); + args = $"mcp add --transport http UnityMCP {httpUrl} --header \"{AuthConstants.ApiKeyHeader}: {safeKey}\""; + } + else + { + args = $"mcp add --transport http UnityMCP {httpUrl}"; + } + } + else + { + // Note: --reinstall is not supported by uvx, use --no-cache --refresh instead + string devFlags = shouldForceRefresh ? "--no-cache --refresh " : string.Empty; + args = $"mcp add --transport stdio UnityMCP -- \"{uvxPath}\" {devFlags}--from \"{gitUrl}\" {packageName}"; + } + + // Remove any existing registrations - handle both "UnityMCP" and "unityMCP" (legacy) + McpLog.Info("Removing any existing UnityMCP registrations before adding..."); + ExecPath.TryRun(claudePath, "mcp remove UnityMCP", projectDir, out _, out _, 7000, pathPrepend); + ExecPath.TryRun(claudePath, "mcp remove unityMCP", projectDir, out _, out _, 7000, pathPrepend); + + // Now add the registration + if (!ExecPath.TryRun(claudePath, args, projectDir, out var stdout, out var stderr, 15000, pathPrepend)) + { + throw new InvalidOperationException($"Failed to register with Claude Code:\n{stderr}\n{stdout}"); + } + + McpLog.Info($"Successfully registered with Claude Code using {(useHttpTransport ? "HTTP" : "stdio")} transport."); + client.SetStatus(McpStatus.Configured); + client.configuredTransport = serverTransport; + } + + /// + /// Thread-safe unregistration using pre-captured values. + /// + private void UnregisterWithCapturedValues(string projectDir, string claudePath, string pathPrepend) + { + if (string.IsNullOrEmpty(claudePath)) + { + throw new InvalidOperationException("Claude CLI not found. Please install Claude Code first."); + } + + // Remove both "UnityMCP" and "unityMCP" (legacy naming) + McpLog.Info("Removing all UnityMCP registrations..."); + ExecPath.TryRun(claudePath, "mcp remove UnityMCP", projectDir, out _, out _, 7000, pathPrepend); + ExecPath.TryRun(claudePath, "mcp remove unityMCP", projectDir, out _, out _, 7000, pathPrepend); + + McpLog.Info("MCP server successfully unregistered from Claude Code."); + client.SetStatus(McpStatus.NotConfigured); + client.configuredTransport = Models.ConfiguredTransport.Unknown; + } + + private void Register() + { + var pathService = MCPServiceLocator.Paths; + string claudePath = pathService.GetClaudeCliPath(); + if (string.IsNullOrEmpty(claudePath)) + { + throw new InvalidOperationException("Claude CLI not found. Please install Claude Code first."); + } + + bool useHttpTransport = EditorConfigurationCache.Instance.UseHttpTransport; + + string args; + if (useHttpTransport) + { + string httpUrl = HttpEndpointUtility.GetMcpRpcUrl(); + // Only include API key header for remote-hosted mode + if (HttpEndpointUtility.IsRemoteScope()) + { + string apiKey = EditorPrefs.GetString(EditorPrefKeys.ApiKey, string.Empty); + if (!string.IsNullOrEmpty(apiKey)) + { + string safeKey = SanitizeShellHeaderValue(apiKey); + args = $"mcp add --transport http UnityMCP {httpUrl} --header \"{AuthConstants.ApiKeyHeader}: {safeKey}\""; + } + else + { + args = $"mcp add --transport http UnityMCP {httpUrl}"; + } + } + else + { + args = $"mcp add --transport http UnityMCP {httpUrl}"; + } + } + else + { + var (uvxPath, gitUrl, packageName) = AssetPathUtility.GetUvxCommandParts(); + // Use central helper that checks both DevModeForceServerRefresh AND local path detection. + // Note: --reinstall is not supported by uvx, use --no-cache --refresh instead + string devFlags = AssetPathUtility.ShouldForceUvxRefresh() ? "--no-cache --refresh " : string.Empty; + args = $"mcp add --transport stdio UnityMCP -- \"{uvxPath}\" {devFlags}--from \"{gitUrl}\" {packageName}"; + } + + string projectDir = Path.GetDirectoryName(Application.dataPath); + + string pathPrepend = null; + if (Application.platform == RuntimePlatform.OSXEditor) + { + pathPrepend = "/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin"; + } + else if (Application.platform == RuntimePlatform.LinuxEditor) + { + pathPrepend = "/usr/local/bin:/usr/bin:/bin"; + } + + try + { + string claudeDir = Path.GetDirectoryName(claudePath); + if (!string.IsNullOrEmpty(claudeDir)) + { + pathPrepend = string.IsNullOrEmpty(pathPrepend) + ? claudeDir + : $"{claudeDir}:{pathPrepend}"; + } + } + catch { } + + // Remove any existing registrations - handle both "UnityMCP" and "unityMCP" (legacy) + McpLog.Info("Removing any existing UnityMCP registrations before adding..."); + ExecPath.TryRun(claudePath, "mcp remove UnityMCP", projectDir, out _, out _, 7000, pathPrepend); + ExecPath.TryRun(claudePath, "mcp remove unityMCP", projectDir, out _, out _, 7000, pathPrepend); + + // Now add the registration with the current transport mode + if (!ExecPath.TryRun(claudePath, args, projectDir, out var stdout, out var stderr, 15000, pathPrepend)) + { + throw new InvalidOperationException($"Failed to register with Claude Code:\n{stderr}\n{stdout}"); + } + + McpLog.Info($"Successfully registered with Claude Code using {(useHttpTransport ? "HTTP" : "stdio")} transport."); + + // Set status to Configured immediately after successful registration + // The UI will trigger an async verification check separately to avoid blocking + client.SetStatus(McpStatus.Configured); + client.configuredTransport = HttpEndpointUtility.GetCurrentServerTransport(); + } + + private void Unregister() + { + var pathService = MCPServiceLocator.Paths; + string claudePath = pathService.GetClaudeCliPath(); + + if (string.IsNullOrEmpty(claudePath)) + { + throw new InvalidOperationException("Claude CLI not found. Please install Claude Code first."); + } + + string projectDir = Path.GetDirectoryName(Application.dataPath); + string pathPrepend = null; + if (Application.platform == RuntimePlatform.OSXEditor) + { + pathPrepend = "/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin"; + } + else if (Application.platform == RuntimePlatform.LinuxEditor) + { + pathPrepend = "/usr/local/bin:/usr/bin:/bin"; + } + + // Remove both "UnityMCP" and "unityMCP" (legacy naming) + McpLog.Info("Removing all UnityMCP registrations..."); + ExecPath.TryRun(claudePath, "mcp remove UnityMCP", projectDir, out _, out _, 7000, pathPrepend); + ExecPath.TryRun(claudePath, "mcp remove unityMCP", projectDir, out _, out _, 7000, pathPrepend); + + McpLog.Info("MCP server successfully unregistered from Claude Code."); + client.SetStatus(McpStatus.NotConfigured); + client.configuredTransport = Models.ConfiguredTransport.Unknown; + } + + public override string GetManualSnippet() + { + string uvxPath = MCPServiceLocator.Paths.GetUvxPath(); + bool useHttpTransport = EditorConfigurationCache.Instance.UseHttpTransport; + + if (useHttpTransport) + { + string httpUrl = HttpEndpointUtility.GetMcpRpcUrl(); + // Only include API key header for remote-hosted mode + string headerArg = ""; + if (HttpEndpointUtility.IsRemoteScope()) + { + string apiKey = EditorPrefs.GetString(EditorPrefKeys.ApiKey, string.Empty); + headerArg = !string.IsNullOrEmpty(apiKey) ? $" --header \"{AuthConstants.ApiKeyHeader}: {SanitizeShellHeaderValue(apiKey)}\"" : ""; + } + return "# Register the MCP server with Claude Code:\n" + + $"claude mcp add --transport http UnityMCP {httpUrl}{headerArg}\n\n" + + "# Unregister the MCP server:\n" + + "claude mcp remove UnityMCP\n\n" + + "# List registered servers:\n" + + "claude mcp list"; + } + + if (string.IsNullOrEmpty(uvxPath)) + { + return "# Error: Configuration not available - check paths in Advanced Settings"; + } + + string packageSource = AssetPathUtility.GetMcpServerPackageSource(); + // Use central helper that checks both DevModeForceServerRefresh AND local path detection. + // Note: --reinstall is not supported by uvx, use --no-cache --refresh instead + string devFlags = AssetPathUtility.ShouldForceUvxRefresh() ? "--no-cache --refresh " : string.Empty; + + return "# Register the MCP server with Claude Code:\n" + + $"claude mcp add --transport stdio UnityMCP -- \"{uvxPath}\" {devFlags}--from \"{packageSource}\" mcp-for-unity\n\n" + + "# Unregister the MCP server:\n" + + "claude mcp remove UnityMCP\n\n" + + "# List registered servers:\n" + + "claude mcp list"; + } + + public override IList GetInstallationSteps() => new List + { + "Ensure Claude CLI is installed", + "Use Register to add UnityMCP (or run claude mcp add UnityMCP)", + "Restart Claude Code" + }; + + /// + /// Sanitizes a value for safe inclusion inside a double-quoted shell argument. + /// Escapes characters that are special within double quotes (", \, `, $, !) + /// to prevent shell injection or argument splitting. + /// + private static string SanitizeShellHeaderValue(string value) + { + if (string.IsNullOrEmpty(value)) + return value; + + var sb = new System.Text.StringBuilder(value.Length); + foreach (char c in value) + { + switch (c) + { + case '"': + case '\\': + case '`': + case '$': + case '!': + sb.Append('\\'); + sb.Append(c); + break; + default: + sb.Append(c); + break; + } + } + return sb.ToString(); + } + + /// + /// Extracts the package source (--from argument value) from claude mcp get output. + /// The output format includes args like: --from "mcpforunityserver==9.0.1" + /// + private static string ExtractPackageSourceFromCliOutput(string cliOutput) + { + if (string.IsNullOrEmpty(cliOutput)) + return null; + + // Look for --from followed by the package source + // The CLI output may have it quoted or unquoted + int fromIndex = cliOutput.IndexOf("--from", StringComparison.OrdinalIgnoreCase); + if (fromIndex < 0) + return null; + + // Move past "--from" and any whitespace + int startIndex = fromIndex + 6; + while (startIndex < cliOutput.Length && char.IsWhiteSpace(cliOutput[startIndex])) + startIndex++; + + if (startIndex >= cliOutput.Length) + return null; + + // Check if value is quoted + char quoteChar = cliOutput[startIndex]; + if (quoteChar == '"' || quoteChar == '\'') + { + startIndex++; + int endIndex = cliOutput.IndexOf(quoteChar, startIndex); + if (endIndex > startIndex) + return cliOutput.Substring(startIndex, endIndex - startIndex); + } + else + { + // Unquoted - read until whitespace or end of line + int endIndex = startIndex; + while (endIndex < cliOutput.Length && !char.IsWhiteSpace(cliOutput[endIndex])) + endIndex++; + + if (endIndex > startIndex) + return cliOutput.Substring(startIndex, endIndex - startIndex); + } + + return null; + } + } +} diff --git a/Packages/MCPForUnity/Editor/Clients/McpClientConfiguratorBase.cs.meta b/Packages/MCPForUnity/Editor/Clients/McpClientConfiguratorBase.cs.meta new file mode 100644 index 00000000..17709d19 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Clients/McpClientConfiguratorBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8d408fd7733cb4a1eb80f785307db2ff +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Clients/McpClientRegistry.cs b/Packages/MCPForUnity/Editor/Clients/McpClientRegistry.cs new file mode 100644 index 00000000..57e4dc1c --- /dev/null +++ b/Packages/MCPForUnity/Editor/Clients/McpClientRegistry.cs @@ -0,0 +1,60 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using MCPForUnity.Editor.Helpers; +using UnityEditor; +using UnityEngine; + +namespace MCPForUnity.Editor.Clients +{ + /// + /// Central registry that auto-discovers configurators via TypeCache. + /// + public static class McpClientRegistry + { + private static List cached; + + public static IReadOnlyList All + { + get + { + if (cached == null) + { + cached = BuildRegistry(); + } + return cached; + } + } + + private static List BuildRegistry() + { + var configurators = new List(); + + foreach (var type in TypeCache.GetTypesDerivedFrom()) + { + if (type.IsAbstract || !type.IsClass || !type.IsPublic) + continue; + + // Require a public parameterless constructor + if (type.GetConstructor(Type.EmptyTypes) == null) + continue; + + try + { + if (Activator.CreateInstance(type) is IMcpClientConfigurator instance) + { + configurators.Add(instance); + } + } + catch (Exception ex) + { + McpLog.Warn($"UnityMCP: Failed to instantiate configurator {type.Name}: {ex.Message}"); + } + } + + // Alphabetical order by display name + configurators = configurators.OrderBy(c => c.DisplayName, StringComparer.OrdinalIgnoreCase).ToList(); + return configurators; + } + } +} diff --git a/Packages/MCPForUnity/Editor/Clients/McpClientRegistry.cs.meta b/Packages/MCPForUnity/Editor/Clients/McpClientRegistry.cs.meta new file mode 100644 index 00000000..2e0400b5 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Clients/McpClientRegistry.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4ce08555f995e4e848a826c63f18cb35 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Constants.meta b/Packages/MCPForUnity/Editor/Constants.meta new file mode 100644 index 00000000..7c23235a --- /dev/null +++ b/Packages/MCPForUnity/Editor/Constants.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f7e009cbf3e74f6c987331c2b438ec59 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Constants/AuthConstants.cs b/Packages/MCPForUnity/Editor/Constants/AuthConstants.cs new file mode 100644 index 00000000..76579e64 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Constants/AuthConstants.cs @@ -0,0 +1,10 @@ +namespace MCPForUnity.Editor.Constants +{ + /// + /// Protocol-level constants for API key authentication. + /// + internal static class AuthConstants + { + internal const string ApiKeyHeader = "X-API-Key"; + } +} diff --git a/Packages/MCPForUnity/Editor/Constants/AuthConstants.cs.meta b/Packages/MCPForUnity/Editor/Constants/AuthConstants.cs.meta new file mode 100644 index 00000000..55af6d27 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Constants/AuthConstants.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 96844bc39e9a94cf18b18f8127f3854f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Constants/EditorPrefKeys.cs b/Packages/MCPForUnity/Editor/Constants/EditorPrefKeys.cs new file mode 100644 index 00000000..488bf39d --- /dev/null +++ b/Packages/MCPForUnity/Editor/Constants/EditorPrefKeys.cs @@ -0,0 +1,66 @@ +namespace MCPForUnity.Editor.Constants +{ + /// + /// Centralized list of EditorPrefs keys used by the MCP for Unity package. + /// Keeping them in one place avoids typos and simplifies migrations. + /// + internal static class EditorPrefKeys + { + internal const string UseHttpTransport = "MCPForUnity.UseHttpTransport"; + internal const string HttpTransportScope = "MCPForUnity.HttpTransportScope"; // "local" | "remote" + internal const string LastLocalHttpServerPid = "MCPForUnity.LocalHttpServer.LastPid"; + internal const string LastLocalHttpServerPort = "MCPForUnity.LocalHttpServer.LastPort"; + internal const string LastLocalHttpServerStartedUtc = "MCPForUnity.LocalHttpServer.LastStartedUtc"; + internal const string LastLocalHttpServerPidArgsHash = "MCPForUnity.LocalHttpServer.LastPidArgsHash"; + internal const string LastLocalHttpServerPidFilePath = "MCPForUnity.LocalHttpServer.LastPidFilePath"; + internal const string LastLocalHttpServerInstanceToken = "MCPForUnity.LocalHttpServer.LastInstanceToken"; + internal const string DebugLogs = "MCPForUnity.DebugLogs"; + internal const string ValidationLevel = "MCPForUnity.ValidationLevel"; + internal const string UnitySocketPort = "MCPForUnity.UnitySocketPort"; + internal const string ResumeHttpAfterReload = "MCPForUnity.ResumeHttpAfterReload"; + internal const string ResumeStdioAfterReload = "MCPForUnity.ResumeStdioAfterReload"; + + internal const string UvxPathOverride = "MCPForUnity.UvxPath"; + internal const string ClaudeCliPathOverride = "MCPForUnity.ClaudeCliPath"; + + internal const string HttpBaseUrl = "MCPForUnity.HttpUrl"; + internal const string HttpRemoteBaseUrl = "MCPForUnity.HttpRemoteUrl"; + internal const string SessionId = "MCPForUnity.SessionId"; + internal const string WebSocketUrlOverride = "MCPForUnity.WebSocketUrl"; + internal const string GitUrlOverride = "MCPForUnity.GitUrlOverride"; + internal const string DevModeForceServerRefresh = "MCPForUnity.DevModeForceServerRefresh"; + internal const string UseBetaServer = "MCPForUnity.UseBetaServer"; + internal const string ProjectScopedToolsLocalHttp = "MCPForUnity.ProjectScopedTools.LocalHttp"; + + internal const string PackageDeploySourcePath = "MCPForUnity.PackageDeploy.SourcePath"; + internal const string PackageDeployLastBackupPath = "MCPForUnity.PackageDeploy.LastBackupPath"; + internal const string PackageDeployLastTargetPath = "MCPForUnity.PackageDeploy.LastTargetPath"; + internal const string PackageDeployLastSourcePath = "MCPForUnity.PackageDeploy.LastSourcePath"; + + internal const string ServerSrc = "MCPForUnity.ServerSrc"; + internal const string UseEmbeddedServer = "MCPForUnity.UseEmbeddedServer"; + internal const string LockCursorConfig = "MCPForUnity.LockCursorConfig"; + internal const string AutoRegisterEnabled = "MCPForUnity.AutoRegisterEnabled"; + internal const string ToolEnabledPrefix = "MCPForUnity.ToolEnabled."; + internal const string ToolFoldoutStatePrefix = "MCPForUnity.ToolFoldout."; + internal const string ResourceEnabledPrefix = "MCPForUnity.ResourceEnabled."; + internal const string ResourceFoldoutStatePrefix = "MCPForUnity.ResourceFoldout."; + internal const string EditorWindowActivePanel = "MCPForUnity.EditorWindow.ActivePanel"; + + internal const string SetupCompleted = "MCPForUnity.SetupCompleted"; + internal const string SetupDismissed = "MCPForUnity.SetupDismissed"; + + internal const string CustomToolRegistrationEnabled = "MCPForUnity.CustomToolRegistrationEnabled"; + + internal const string LastUpdateCheck = "MCPForUnity.LastUpdateCheck"; + internal const string LatestKnownVersion = "MCPForUnity.LatestKnownVersion"; + internal const string LastAssetStoreUpdateCheck = "MCPForUnity.LastAssetStoreUpdateCheck"; + internal const string LatestKnownAssetStoreVersion = "MCPForUnity.LatestKnownAssetStoreVersion"; + internal const string LastStdIoUpgradeVersion = "MCPForUnity.LastStdIoUpgradeVersion"; + + internal const string TelemetryDisabled = "MCPForUnity.TelemetryDisabled"; + internal const string CustomerUuid = "MCPForUnity.CustomerUUID"; + + internal const string ApiKey = "MCPForUnity.ApiKey"; + } +} diff --git a/Packages/MCPForUnity/Editor/Constants/EditorPrefKeys.cs.meta b/Packages/MCPForUnity/Editor/Constants/EditorPrefKeys.cs.meta new file mode 100644 index 00000000..9c923daa --- /dev/null +++ b/Packages/MCPForUnity/Editor/Constants/EditorPrefKeys.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7317786cfb9304b0db20ca73a774b9fa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Constants/HealthStatus.cs b/Packages/MCPForUnity/Editor/Constants/HealthStatus.cs new file mode 100644 index 00000000..7506caaa --- /dev/null +++ b/Packages/MCPForUnity/Editor/Constants/HealthStatus.cs @@ -0,0 +1,14 @@ +namespace MCPForUnity.Editor.Constants +{ + /// + /// Constants for health check status values. + /// Used for coordinating health state between Connection and Advanced sections. + /// + public static class HealthStatus + { + public const string Unknown = "Unknown"; + public const string Healthy = "Healthy"; + public const string PingFailed = "Ping Failed"; + public const string Unhealthy = "Unhealthy"; + } +} diff --git a/Packages/MCPForUnity/Editor/Constants/HealthStatus.cs.meta b/Packages/MCPForUnity/Editor/Constants/HealthStatus.cs.meta new file mode 100644 index 00000000..a08698ca --- /dev/null +++ b/Packages/MCPForUnity/Editor/Constants/HealthStatus.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c15ed2426f43860479f1b8a99a343d16 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Dependencies.meta b/Packages/MCPForUnity/Editor/Dependencies.meta new file mode 100644 index 00000000..77685d17 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Dependencies.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 221a4d6e595be6897a5b17b77aedd4d0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Dependencies/DependencyManager.cs b/Packages/MCPForUnity/Editor/Dependencies/DependencyManager.cs new file mode 100644 index 00000000..c3802c47 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Dependencies/DependencyManager.cs @@ -0,0 +1,143 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using MCPForUnity.Editor.Dependencies.Models; +using MCPForUnity.Editor.Dependencies.PlatformDetectors; +using MCPForUnity.Editor.Helpers; +using UnityEditor; +using UnityEngine; + +namespace MCPForUnity.Editor.Dependencies +{ + /// + /// Main orchestrator for dependency validation and management + /// + public static class DependencyManager + { + private static readonly List _detectors = new List + { + new WindowsPlatformDetector(), + new MacOSPlatformDetector(), + new LinuxPlatformDetector() + }; + + private static IPlatformDetector _currentDetector; + + /// + /// Get the platform detector for the current operating system + /// + public static IPlatformDetector GetCurrentPlatformDetector() + { + if (_currentDetector == null) + { + _currentDetector = _detectors.FirstOrDefault(d => d.CanDetect); + if (_currentDetector == null) + { + throw new PlatformNotSupportedException($"No detector available for current platform: {RuntimeInformation.OSDescription}"); + } + } + return _currentDetector; + } + + /// + /// Perform a comprehensive dependency check + /// + public static DependencyCheckResult CheckAllDependencies() + { + var result = new DependencyCheckResult(); + + try + { + var detector = GetCurrentPlatformDetector(); + McpLog.Info($"Checking dependencies on {detector.PlatformName}...", always: false); + + // Check Python + var pythonStatus = detector.DetectPython(); + result.Dependencies.Add(pythonStatus); + + // Check uv + var uvStatus = detector.DetectUv(); + result.Dependencies.Add(uvStatus); + + // Generate summary and recommendations + result.GenerateSummary(); + GenerateRecommendations(result, detector); + + McpLog.Info($"Dependency check completed. System ready: {result.IsSystemReady}", always: false); + } + catch (Exception ex) + { + McpLog.Error($"Error during dependency check: {ex.Message}"); + result.Summary = $"Dependency check failed: {ex.Message}"; + result.IsSystemReady = false; + } + + return result; + } + + /// + /// Get installation recommendations for the current platform + /// + public static string GetInstallationRecommendations() + { + try + { + var detector = GetCurrentPlatformDetector(); + return detector.GetInstallationRecommendations(); + } + catch (Exception ex) + { + return $"Error getting installation recommendations: {ex.Message}"; + } + } + + /// + /// Get platform-specific installation URLs + /// + public static (string pythonUrl, string uvUrl) GetInstallationUrls() + { + try + { + var detector = GetCurrentPlatformDetector(); + return (detector.GetPythonInstallUrl(), detector.GetUvInstallUrl()); + } + catch + { + return ("https://python.org/downloads/", "https://docs.astral.sh/uv/getting-started/installation/"); + } + } + + private static void GenerateRecommendations(DependencyCheckResult result, IPlatformDetector detector) + { + var missing = result.GetMissingDependencies(); + + if (missing.Count == 0) + { + result.RecommendedActions.Add("All dependencies are available. You can start using MCP for Unity."); + return; + } + + foreach (var dep in missing) + { + if (dep.Name == "Python") + { + result.RecommendedActions.Add($"Install Python 3.10+ from: {detector.GetPythonInstallUrl()}"); + } + else if (dep.Name == "uv Package Manager") + { + result.RecommendedActions.Add($"Install uv package manager from: {detector.GetUvInstallUrl()}"); + } + else if (dep.Name == "MCP Server") + { + result.RecommendedActions.Add("MCP Server will be installed automatically when needed."); + } + } + + if (result.GetMissingRequired().Count > 0) + { + result.RecommendedActions.Add("Use the Setup Window (Window > MCP for Unity > Local Setup Window) for guided installation."); + } + } + } +} diff --git a/Packages/MCPForUnity/Editor/Dependencies/DependencyManager.cs.meta b/Packages/MCPForUnity/Editor/Dependencies/DependencyManager.cs.meta new file mode 100644 index 00000000..fc192c2b --- /dev/null +++ b/Packages/MCPForUnity/Editor/Dependencies/DependencyManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4a6d2236d370b4f1db4d0e3d3ce0dcac +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Models.meta b/Packages/MCPForUnity/Editor/Dependencies/Models.meta similarity index 77% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Models.meta rename to Packages/MCPForUnity/Editor/Dependencies/Models.meta index 03daa0ec..1e05b9d1 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Models.meta +++ b/Packages/MCPForUnity/Editor/Dependencies/Models.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: afa9af25bc870b04ebcb8d9f9b33703c +guid: 4c0f2e87395b4c6c9df8c21b6d0fae13 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Packages/MCPForUnity/Editor/Dependencies/Models/DependencyCheckResult.cs b/Packages/MCPForUnity/Editor/Dependencies/Models/DependencyCheckResult.cs new file mode 100644 index 00000000..5dd2edaf --- /dev/null +++ b/Packages/MCPForUnity/Editor/Dependencies/Models/DependencyCheckResult.cs @@ -0,0 +1,96 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace MCPForUnity.Editor.Dependencies.Models +{ + /// + /// Result of a comprehensive dependency check + /// + [Serializable] + public class DependencyCheckResult + { + /// + /// List of all dependency statuses checked + /// + public List Dependencies { get; set; } + + /// + /// Overall system readiness for MCP operations + /// + public bool IsSystemReady { get; set; } + + /// + /// Whether all required dependencies are available + /// + public bool AllRequiredAvailable => Dependencies?.Where(d => d.IsRequired).All(d => d.IsAvailable) ?? false; + + /// + /// Whether any optional dependencies are missing + /// + public bool HasMissingOptional => Dependencies?.Where(d => !d.IsRequired).Any(d => !d.IsAvailable) ?? false; + + /// + /// Summary message about the dependency state + /// + public string Summary { get; set; } + + /// + /// Recommended next steps for the user + /// + public List RecommendedActions { get; set; } + + /// + /// Timestamp when this check was performed + /// + public DateTime CheckedAt { get; set; } + + public DependencyCheckResult() + { + Dependencies = new List(); + RecommendedActions = new List(); + CheckedAt = DateTime.UtcNow; + } + + /// + /// Get dependencies by availability status + /// + public List GetMissingDependencies() + { + return Dependencies?.Where(d => !d.IsAvailable).ToList() ?? new List(); + } + + /// + /// Get missing required dependencies + /// + public List GetMissingRequired() + { + return Dependencies?.Where(d => d.IsRequired && !d.IsAvailable).ToList() ?? new List(); + } + + /// + /// Generate a user-friendly summary of the dependency state + /// + public void GenerateSummary() + { + var missing = GetMissingDependencies(); + var missingRequired = GetMissingRequired(); + + if (missing.Count == 0) + { + Summary = "All dependencies are available and ready."; + IsSystemReady = true; + } + else if (missingRequired.Count == 0) + { + Summary = $"System is ready. {missing.Count} optional dependencies are missing."; + IsSystemReady = true; + } + else + { + Summary = $"System is not ready. {missingRequired.Count} required dependencies are missing."; + IsSystemReady = false; + } + } + } +} diff --git a/Packages/MCPForUnity/Editor/Dependencies/Models/DependencyCheckResult.cs.meta b/Packages/MCPForUnity/Editor/Dependencies/Models/DependencyCheckResult.cs.meta new file mode 100644 index 00000000..4d70a111 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Dependencies/Models/DependencyCheckResult.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f6df82faa423f4e9ebb13a3dcee8ba19 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Dependencies/Models/DependencyStatus.cs b/Packages/MCPForUnity/Editor/Dependencies/Models/DependencyStatus.cs new file mode 100644 index 00000000..e755ecad --- /dev/null +++ b/Packages/MCPForUnity/Editor/Dependencies/Models/DependencyStatus.cs @@ -0,0 +1,65 @@ +using System; + +namespace MCPForUnity.Editor.Dependencies.Models +{ + /// + /// Represents the status of a dependency check + /// + [Serializable] + public class DependencyStatus + { + /// + /// Name of the dependency being checked + /// + public string Name { get; set; } + + /// + /// Whether the dependency is available and functional + /// + public bool IsAvailable { get; set; } + + /// + /// Version information if available + /// + public string Version { get; set; } + + /// + /// Path to the dependency executable/installation + /// + public string Path { get; set; } + + /// + /// Additional details about the dependency status + /// + public string Details { get; set; } + + /// + /// Error message if dependency check failed + /// + public string ErrorMessage { get; set; } + + /// + /// Whether this dependency is required for basic functionality + /// + public bool IsRequired { get; set; } + + /// + /// Suggested installation method or URL + /// + public string InstallationHint { get; set; } + + public DependencyStatus(string name, bool isRequired = true) + { + Name = name; + IsRequired = isRequired; + IsAvailable = false; + } + + public override string ToString() + { + var status = IsAvailable ? "✓" : "✗"; + var version = !string.IsNullOrEmpty(Version) ? $" ({Version})" : ""; + return $"{status} {Name}{version}"; + } + } +} diff --git a/Packages/MCPForUnity/Editor/Dependencies/Models/DependencyStatus.cs.meta b/Packages/MCPForUnity/Editor/Dependencies/Models/DependencyStatus.cs.meta new file mode 100644 index 00000000..7e93ff49 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Dependencies/Models/DependencyStatus.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ddeeeca2f876f4083a84417404175199 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Dependencies/PlatformDetectors.meta b/Packages/MCPForUnity/Editor/Dependencies/PlatformDetectors.meta new file mode 100644 index 00000000..8c863075 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Dependencies/PlatformDetectors.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bdbaced669d14798a4ceeebfbff2b22c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Dependencies/PlatformDetectors/IPlatformDetector.cs b/Packages/MCPForUnity/Editor/Dependencies/PlatformDetectors/IPlatformDetector.cs new file mode 100644 index 00000000..3231105e --- /dev/null +++ b/Packages/MCPForUnity/Editor/Dependencies/PlatformDetectors/IPlatformDetector.cs @@ -0,0 +1,45 @@ +using MCPForUnity.Editor.Dependencies.Models; + +namespace MCPForUnity.Editor.Dependencies.PlatformDetectors +{ + /// + /// Interface for platform-specific dependency detection + /// + public interface IPlatformDetector + { + /// + /// Platform name this detector handles + /// + string PlatformName { get; } + + /// + /// Whether this detector can run on the current platform + /// + bool CanDetect { get; } + + /// + /// Detect Python installation on this platform + /// + DependencyStatus DetectPython(); + + /// + /// Detect uv package manager on this platform + /// + DependencyStatus DetectUv(); + + /// + /// Get platform-specific installation recommendations + /// + string GetInstallationRecommendations(); + + /// + /// Get platform-specific Python installation URL + /// + string GetPythonInstallUrl(); + + /// + /// Get platform-specific uv installation URL + /// + string GetUvInstallUrl(); + } +} diff --git a/Packages/MCPForUnity/Editor/Dependencies/PlatformDetectors/IPlatformDetector.cs.meta b/Packages/MCPForUnity/Editor/Dependencies/PlatformDetectors/IPlatformDetector.cs.meta new file mode 100644 index 00000000..1ec32f33 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Dependencies/PlatformDetectors/IPlatformDetector.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 67d73d0e8caef4e60942f4419c6b76bf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Dependencies/PlatformDetectors/LinuxPlatformDetector.cs b/Packages/MCPForUnity/Editor/Dependencies/PlatformDetectors/LinuxPlatformDetector.cs new file mode 100644 index 00000000..be9db17f --- /dev/null +++ b/Packages/MCPForUnity/Editor/Dependencies/PlatformDetectors/LinuxPlatformDetector.cs @@ -0,0 +1,207 @@ +using System; +using System.Diagnostics; +using System.IO; +using System.Runtime.InteropServices; +using MCPForUnity.Editor.Constants; +using MCPForUnity.Editor.Dependencies.Models; +using MCPForUnity.Editor.Helpers; +using MCPForUnity.Editor.Services; + +namespace MCPForUnity.Editor.Dependencies.PlatformDetectors +{ + /// + /// Linux-specific dependency detection + /// + public class LinuxPlatformDetector : PlatformDetectorBase + { + public override string PlatformName => "Linux"; + + public override bool CanDetect => RuntimeInformation.IsOSPlatform(OSPlatform.Linux); + + public override DependencyStatus DetectPython() + { + var status = new DependencyStatus("Python", isRequired: true) + { + InstallationHint = GetPythonInstallUrl() + }; + + try + { + // Try running python directly first + if (TryValidatePython("python3", out string version, out string fullPath) || + TryValidatePython("python", out version, out fullPath)) + { + status.IsAvailable = true; + status.Version = version; + status.Path = fullPath; + status.Details = $"Found Python {version} in PATH"; + return status; + } + + // Fallback: try 'which' command + if (TryFindInPath("python3", out string pathResult) || + TryFindInPath("python", out pathResult)) + { + if (TryValidatePython(pathResult, out version, out fullPath)) + { + status.IsAvailable = true; + status.Version = version; + status.Path = fullPath; + status.Details = $"Found Python {version} in PATH"; + return status; + } + } + + status.ErrorMessage = "Python not found in PATH"; + status.Details = "Install Python 3.10+ and ensure it's added to PATH."; + } + catch (Exception ex) + { + status.ErrorMessage = $"Error detecting Python: {ex.Message}"; + } + + return status; + } + + public override string GetPythonInstallUrl() + { + return "https://www.python.org/downloads/source/"; + } + + public override string GetUvInstallUrl() + { + return "https://docs.astral.sh/uv/getting-started/installation/#linux"; + } + + public override string GetInstallationRecommendations() + { + return @"Linux Installation Recommendations: + +1. Python: Install via package manager or pyenv + - Ubuntu/Debian: sudo apt install python3 python3-pip + - Fedora/RHEL: sudo dnf install python3 python3-pip + - Arch: sudo pacman -S python python-pip + - Or use pyenv: https://github.com/pyenv/pyenv + +2. uv Package Manager: Install via curl + - Run: curl -LsSf https://astral.sh/uv/install.sh | sh + - Or download from: https://github.com/astral-sh/uv/releases + +3. MCP Server: Will be installed automatically by MCP for Unity + +Note: Make sure ~/.local/bin is in your PATH for user-local installations."; + } + + public override DependencyStatus DetectUv() + { + // First, honor overrides and cross-platform resolution via the base implementation + var status = base.DetectUv(); + if (status.IsAvailable) + { + return status; + } + + // If the user configured an override path but fallback was not used, keep the base result + // (failure typically means the override path is invalid and no system fallback found) + if (MCPServiceLocator.Paths.HasUvxPathOverride && !MCPServiceLocator.Paths.HasUvxPathFallback) + { + return status; + } + + try + { + string augmentedPath = BuildAugmentedPath(); + + // Try uv first, then uvx, using ExecPath.TryRun for proper timeout handling + if (TryValidateUvWithPath("uv", augmentedPath, out string version, out string fullPath) || + TryValidateUvWithPath("uvx", augmentedPath, out version, out fullPath)) + { + status.IsAvailable = true; + status.Version = version; + status.Path = fullPath; + status.Details = $"Found uv {version} in PATH"; + status.ErrorMessage = null; + return status; + } + + status.ErrorMessage = "uv not found in PATH"; + status.Details = "Install uv package manager and ensure it's added to PATH."; + } + catch (Exception ex) + { + status.ErrorMessage = $"Error detecting uv: {ex.Message}"; + } + + return status; + } + + private bool TryValidatePython(string pythonPath, out string version, out string fullPath) + { + version = null; + fullPath = null; + + try + { + string augmentedPath = BuildAugmentedPath(); + + // First, try to resolve the absolute path for better UI/logging display + string commandToRun = pythonPath; + if (TryFindInPath(pythonPath, out string resolvedPath)) + { + commandToRun = resolvedPath; + } + + if (!ExecPath.TryRun(commandToRun, "--version", null, out string stdout, out string stderr, + 5000, augmentedPath)) + return false; + + // Check stdout first, then stderr (some Python distributions output to stderr) + string output = !string.IsNullOrWhiteSpace(stdout) ? stdout.Trim() : stderr.Trim(); + if (output.StartsWith("Python ")) + { + version = output.Substring(7); + fullPath = commandToRun; + + if (TryParseVersion(version, out var major, out var minor)) + { + return major > 3 || (major == 3 && minor >= 10); + } + } + } + catch + { + // Ignore validation errors + } + + return false; + } + + protected string BuildAugmentedPath() + { + var additions = GetPathAdditions(); + if (additions.Length == 0) return null; + + // Only return the additions - ExecPath.TryRun will prepend to existing PATH + return string.Join(Path.PathSeparator, additions); + } + + private string[] GetPathAdditions() + { + var homeDir = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile); + return new[] + { + "/usr/local/bin", + "/usr/bin", + "/bin", + "/snap/bin", + Path.Combine(homeDir, ".local", "bin") + }; + } + + protected override bool TryFindInPath(string executable, out string fullPath) + { + fullPath = ExecPath.FindInPath(executable, BuildAugmentedPath()); + return !string.IsNullOrEmpty(fullPath); + } + } +} diff --git a/Packages/MCPForUnity/Editor/Dependencies/PlatformDetectors/LinuxPlatformDetector.cs.meta b/Packages/MCPForUnity/Editor/Dependencies/PlatformDetectors/LinuxPlatformDetector.cs.meta new file mode 100644 index 00000000..96e1a43d --- /dev/null +++ b/Packages/MCPForUnity/Editor/Dependencies/PlatformDetectors/LinuxPlatformDetector.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b682b492eb80d4ed6834b76f72c9f0f3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Dependencies/PlatformDetectors/MacOSPlatformDetector.cs b/Packages/MCPForUnity/Editor/Dependencies/PlatformDetectors/MacOSPlatformDetector.cs new file mode 100644 index 00000000..b162f11a --- /dev/null +++ b/Packages/MCPForUnity/Editor/Dependencies/PlatformDetectors/MacOSPlatformDetector.cs @@ -0,0 +1,205 @@ +using System; +using System.Diagnostics; +using System.IO; +using System.Runtime.InteropServices; +using MCPForUnity.Editor.Constants; +using MCPForUnity.Editor.Dependencies.Models; +using MCPForUnity.Editor.Helpers; +using MCPForUnity.Editor.Services; + +namespace MCPForUnity.Editor.Dependencies.PlatformDetectors +{ + /// + /// macOS-specific dependency detection + /// + public class MacOSPlatformDetector : PlatformDetectorBase + { + public override string PlatformName => "macOS"; + + public override bool CanDetect => RuntimeInformation.IsOSPlatform(OSPlatform.OSX); + + public override DependencyStatus DetectPython() + { + var status = new DependencyStatus("Python", isRequired: true) + { + InstallationHint = GetPythonInstallUrl() + }; + + try + { + // 1. Try 'which' command with augmented PATH (prioritizing Homebrew) + if (TryFindInPath("python3", out string pathResult) || + TryFindInPath("python", out pathResult)) + { + if (TryValidatePython(pathResult, out string version, out string fullPath)) + { + status.IsAvailable = true; + status.Version = version; + status.Path = fullPath; + status.Details = $"Found Python {version} at {fullPath}"; + return status; + } + } + + // 2. Fallback: Try running python directly from PATH + if (TryValidatePython("python3", out string v, out string p) || + TryValidatePython("python", out v, out p)) + { + status.IsAvailable = true; + status.Version = v; + status.Path = p; + status.Details = $"Found Python {v} in PATH"; + return status; + } + + status.ErrorMessage = "Python not found in PATH or standard locations"; + status.Details = "Install Python 3.10+ via Homebrew ('brew install python3') and ensure it's in your PATH."; + } + catch (Exception ex) + { + status.ErrorMessage = $"Error detecting Python: {ex.Message}"; + } + + return status; + } + + public override string GetPythonInstallUrl() + { + return "https://www.python.org/downloads/macos/"; + } + + public override string GetUvInstallUrl() + { + return "https://docs.astral.sh/uv/getting-started/installation/#macos"; + } + + public override string GetInstallationRecommendations() + { + return @"macOS Installation Recommendations: + +1. Python: Install via Homebrew (recommended) or python.org + - Homebrew: brew install python3 + - Direct download: https://python.org/downloads/macos/ + +2. uv Package Manager: Install via curl or Homebrew + - Curl: curl -LsSf https://astral.sh/uv/install.sh | sh + - Homebrew: brew install uv + +3. MCP Server: Will be installed automatically by MCP for Unity Bridge + +Note: If using Homebrew, make sure /opt/homebrew/bin is in your PATH."; + } + + public override DependencyStatus DetectUv() + { + // First, honor overrides and cross-platform resolution via the base implementation + var status = base.DetectUv(); + if (status.IsAvailable) + { + return status; + } + + // If the user configured an override path but fallback was not used, keep the base result + // (failure typically means the override path is invalid and no system fallback found) + if (MCPServiceLocator.Paths.HasUvxPathOverride && !MCPServiceLocator.Paths.HasUvxPathFallback) + { + return status; + } + + try + { + string augmentedPath = BuildAugmentedPath(); + + // Try uv first, then uvx, using ExecPath.TryRun for proper timeout handling + if (TryValidateUvWithPath("uv", augmentedPath, out string version, out string fullPath) || + TryValidateUvWithPath("uvx", augmentedPath, out version, out fullPath)) + { + status.IsAvailable = true; + status.Version = version; + status.Path = fullPath; + status.Details = $"Found uv {version} in PATH"; + status.ErrorMessage = null; + return status; + } + + status.ErrorMessage = "uv not found in PATH"; + status.Details = "Install uv package manager and ensure it's added to PATH."; + } + catch (Exception ex) + { + status.ErrorMessage = $"Error detecting uv: {ex.Message}"; + } + + return status; + } + + private bool TryValidatePython(string pythonPath, out string version, out string fullPath) + { + version = null; + fullPath = null; + + try + { + string augmentedPath = BuildAugmentedPath(); + + // First, try to resolve the absolute path for better UI/logging display + string commandToRun = pythonPath; + if (TryFindInPath(pythonPath, out string resolvedPath)) + { + commandToRun = resolvedPath; + } + + if (!ExecPath.TryRun(commandToRun, "--version", null, out string stdout, out string stderr, + 5000, augmentedPath)) + return false; + + // Check stdout first, then stderr (some Python distributions output to stderr) + string output = !string.IsNullOrWhiteSpace(stdout) ? stdout.Trim() : stderr.Trim(); + if (output.StartsWith("Python ")) + { + version = output.Substring(7); + fullPath = commandToRun; + + if (TryParseVersion(version, out var major, out var minor)) + { + return major > 3 || (major == 3 && minor >= 10); + } + } + } + catch + { + // Ignore validation errors + } + + return false; + } + + protected string BuildAugmentedPath() + { + var additions = GetPathAdditions(); + if (additions.Length == 0) return null; + + // Only return the additions - ExecPath.TryRun will prepend to existing PATH + return string.Join(Path.PathSeparator, additions); + } + + private string[] GetPathAdditions() + { + var homeDir = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile); + return new[] + { + "/opt/homebrew/bin", + "/usr/local/bin", + "/usr/bin", + "/bin", + Path.Combine(homeDir, ".local", "bin") + }; + } + + protected override bool TryFindInPath(string executable, out string fullPath) + { + fullPath = ExecPath.FindInPath(executable, BuildAugmentedPath()); + return !string.IsNullOrEmpty(fullPath); + } + } +} diff --git a/Packages/MCPForUnity/Editor/Dependencies/PlatformDetectors/MacOSPlatformDetector.cs.meta b/Packages/MCPForUnity/Editor/Dependencies/PlatformDetectors/MacOSPlatformDetector.cs.meta new file mode 100644 index 00000000..57b516ba --- /dev/null +++ b/Packages/MCPForUnity/Editor/Dependencies/PlatformDetectors/MacOSPlatformDetector.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c6f602b0a8ca848859197f9a949a7a5d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Dependencies/PlatformDetectors/PlatformDetectorBase.cs b/Packages/MCPForUnity/Editor/Dependencies/PlatformDetectors/PlatformDetectorBase.cs new file mode 100644 index 00000000..c955381d --- /dev/null +++ b/Packages/MCPForUnity/Editor/Dependencies/PlatformDetectors/PlatformDetectorBase.cs @@ -0,0 +1,137 @@ +using System; +using MCPForUnity.Editor.Dependencies.Models; +using MCPForUnity.Editor.Helpers; +using MCPForUnity.Editor.Services; + +namespace MCPForUnity.Editor.Dependencies.PlatformDetectors +{ + /// + /// Base class for platform-specific dependency detection + /// + public abstract class PlatformDetectorBase : IPlatformDetector + { + public abstract string PlatformName { get; } + public abstract bool CanDetect { get; } + + public abstract DependencyStatus DetectPython(); + public abstract string GetPythonInstallUrl(); + public abstract string GetUvInstallUrl(); + public abstract string GetInstallationRecommendations(); + + public virtual DependencyStatus DetectUv() + { + var status = new DependencyStatus("uv Package Manager", isRequired: true) + { + InstallationHint = GetUvInstallUrl() + }; + + try + { + // Get uv path from PathResolverService (respects override) + string uvxPath = MCPServiceLocator.Paths.GetUvxPath(); + + // Verify uv executable and get version + if (MCPServiceLocator.Paths.TryValidateUvxExecutable(uvxPath, out string version)) + { + status.IsAvailable = true; + status.Version = version; + status.Path = uvxPath; + + // Check if we used fallback from override to system path + if (MCPServiceLocator.Paths.HasUvxPathFallback) + { + status.Details = $"Found uv {version} (fallback to system path)"; + status.ErrorMessage = "Override path not found, using system path"; + } + else + { + status.Details = MCPServiceLocator.Paths.HasUvxPathOverride + ? $"Found uv {version} (override path)" + : $"Found uv {version} in system path"; + } + return status; + } + + status.ErrorMessage = "uvx not found"; + status.Details = "Install uv package manager or configure path override in Advanced Settings."; + } + catch (Exception ex) + { + status.ErrorMessage = $"Error detecting uvx: {ex.Message}"; + } + + return status; + } + + + protected bool TryParseVersion(string version, out int major, out int minor) + { + major = 0; + minor = 0; + + try + { + var parts = version.Split('.'); + if (parts.Length >= 2) + { + return int.TryParse(parts[0], out major) && int.TryParse(parts[1], out minor); + } + } + catch + { + // Ignore parsing errors + } + + return false; + } + // In PlatformDetectorBase.cs + protected bool TryValidateUvWithPath(string command, string augmentedPath, out string version, out string fullPath) + { + version = null; + fullPath = null; + + try + { + string commandToRun = command; + if (TryFindInPath(command, out string resolvedPath)) + { + commandToRun = resolvedPath; + } + + if (!ExecPath.TryRun(commandToRun, "--version", null, out string stdout, out string stderr, + 5000, augmentedPath)) + return false; + + string output = string.IsNullOrWhiteSpace(stdout) ? stderr.Trim() : stdout.Trim(); + + if (output.StartsWith("uvx ") || output.StartsWith("uv ")) + { + int spaceIndex = output.IndexOf(' '); + if (spaceIndex >= 0) + { + var remainder = output.Substring(spaceIndex + 1).Trim(); + int nextSpace = remainder.IndexOf(' '); + int parenIndex = remainder.IndexOf('('); + int endIndex = Math.Min( + nextSpace >= 0 ? nextSpace : int.MaxValue, + parenIndex >= 0 ? parenIndex : int.MaxValue + ); + version = endIndex < int.MaxValue ? remainder.Substring(0, endIndex).Trim() : remainder; + fullPath = commandToRun; + return true; + } + } + } + catch + { + // Ignore validation errors + } + + return false; + } + + + // Add abstract method for subclasses to implement + protected abstract bool TryFindInPath(string executable, out string fullPath); + } +} diff --git a/Packages/MCPForUnity/Editor/Dependencies/PlatformDetectors/PlatformDetectorBase.cs.meta b/Packages/MCPForUnity/Editor/Dependencies/PlatformDetectors/PlatformDetectorBase.cs.meta new file mode 100644 index 00000000..4821e757 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Dependencies/PlatformDetectors/PlatformDetectorBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 44d715aedea2b8b41bf914433bbb2c49 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Dependencies/PlatformDetectors/WindowsPlatformDetector.cs b/Packages/MCPForUnity/Editor/Dependencies/PlatformDetectors/WindowsPlatformDetector.cs new file mode 100644 index 00000000..706e5030 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Dependencies/PlatformDetectors/WindowsPlatformDetector.cs @@ -0,0 +1,297 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices; +using MCPForUnity.Editor.Constants; +using MCPForUnity.Editor.Dependencies.Models; +using MCPForUnity.Editor.Helpers; +using MCPForUnity.Editor.Services; + +namespace MCPForUnity.Editor.Dependencies.PlatformDetectors +{ + /// + /// Windows-specific dependency detection + /// + public class WindowsPlatformDetector : PlatformDetectorBase + { + public override string PlatformName => "Windows"; + + public override bool CanDetect => RuntimeInformation.IsOSPlatform(OSPlatform.Windows); + + public override DependencyStatus DetectPython() + { + var status = new DependencyStatus("Python", isRequired: true) + { + InstallationHint = GetPythonInstallUrl() + }; + + try + { + // Try running python directly first (works with Windows App Execution Aliases) + if (TryValidatePython("python3.exe", out string version, out string fullPath) || + TryValidatePython("python.exe", out version, out fullPath)) + { + status.IsAvailable = true; + status.Version = version; + status.Path = fullPath; + status.Details = $"Found Python {version} in PATH"; + return status; + } + + // Fallback: try 'where' command + if (TryFindInPath("python3.exe", out string pathResult) || + TryFindInPath("python.exe", out pathResult)) + { + if (TryValidatePython(pathResult, out version, out fullPath)) + { + status.IsAvailable = true; + status.Version = version; + status.Path = fullPath; + status.Details = $"Found Python {version} in PATH"; + return status; + } + } + + // Fallback: try to find python via uv + if (TryFindPythonViaUv(out version, out fullPath)) + { + status.IsAvailable = true; + status.Version = version; + status.Path = fullPath; + status.Details = $"Found Python {version} via uv"; + return status; + } + + status.ErrorMessage = "Python not found in PATH"; + status.Details = "Install Python 3.10+ and ensure it's added to PATH."; + } + catch (Exception ex) + { + status.ErrorMessage = $"Error detecting Python: {ex.Message}"; + } + + return status; + } + + public override string GetPythonInstallUrl() + { + return "https://apps.microsoft.com/store/detail/python-313/9NCVDN91XZQP"; + } + + public override string GetUvInstallUrl() + { + return "https://docs.astral.sh/uv/getting-started/installation/#windows"; + } + + public override string GetInstallationRecommendations() + { + return @"Windows Installation Recommendations: + +1. Python: Install from Microsoft Store or python.org + - Microsoft Store: Search for 'Python 3.10' or higher + - Direct download: https://python.org/downloads/windows/ + +2. uv Package Manager: Install via PowerShell + - Run: powershell -ExecutionPolicy ByPass -c ""irm https://astral.sh/uv/install.ps1 | iex"" + - Or download from: https://github.com/astral-sh/uv/releases + +3. MCP Server: Will be installed automatically by MCP for Unity Bridge"; + } + + public override DependencyStatus DetectUv() + { + // First, honor overrides and cross-platform resolution via the base implementation + var status = base.DetectUv(); + if (status.IsAvailable) + { + return status; + } + + // If the user configured an override path but fallback was not used, keep the base result + // (failure typically means the override path is invalid and no system fallback found) + if (MCPServiceLocator.Paths.HasUvxPathOverride && !MCPServiceLocator.Paths.HasUvxPathFallback) + { + return status; + } + + try + { + string augmentedPath = BuildAugmentedPath(); + + // try to find uv + if (TryValidateUvWithPath("uv.exe", augmentedPath, out string uvVersion, out string uvPath)) + { + status.IsAvailable = true; + status.Version = uvVersion; + status.Path = uvPath; + status.Details = $"Found uv {uvVersion} at {uvPath}"; + return status; + } + + // try to find uvx + if (TryValidateUvWithPath("uvx.exe", augmentedPath, out string uvxVersion, out string uvxPath)) + { + status.IsAvailable = true; + status.Version = uvxVersion; + status.Path = uvxPath; + status.Details = $"Found uvx {uvxVersion} at {uvxPath} (fallback)"; + return status; + } + + status.ErrorMessage = "uv not found in PATH"; + status.Details = "Install uv package manager and ensure it's added to PATH."; + } + catch (Exception ex) + { + status.ErrorMessage = $"Error detecting uv: {ex.Message}"; + } + + return status; + } + + + private bool TryFindPythonViaUv(out string version, out string fullPath) + { + version = null; + fullPath = null; + + try + { + string augmentedPath = BuildAugmentedPath(); + // Try to list installed python versions via uvx + if (!ExecPath.TryRun("uv", "python list", null, out string stdout, out string stderr, 5000, augmentedPath)) + return false; + + var lines = stdout.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); + foreach (var line in lines) + { + if (line.Contains("")) continue; + + var parts = line.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); + if (parts.Length >= 2) + { + string potentialPath = parts[parts.Length - 1]; + if (File.Exists(potentialPath) && + (potentialPath.EndsWith("python.exe") || potentialPath.EndsWith("python3.exe"))) + { + if (TryValidatePython(potentialPath, out version, out fullPath)) + { + return true; + } + } + } + } + } + catch + { + // Ignore errors if uv is not installed or fails + } + + return false; + } + + private bool TryValidatePython(string pythonPath, out string version, out string fullPath) + { + version = null; + fullPath = null; + + try + { + string augmentedPath = BuildAugmentedPath(); + + // First, try to resolve the absolute path for better UI/logging display + string commandToRun = pythonPath; + if (TryFindInPath(pythonPath, out string resolvedPath)) + { + commandToRun = resolvedPath; + } + + // Run 'python --version' to get the version + if (!ExecPath.TryRun(commandToRun, "--version", null, out string stdout, out string stderr, 5000, augmentedPath)) + return false; + + // Check stdout first, then stderr (some Python distributions output to stderr) + string output = !string.IsNullOrWhiteSpace(stdout) ? stdout.Trim() : stderr.Trim(); + if (output.StartsWith("Python ")) + { + version = output.Substring(7); + fullPath = commandToRun; + + if (TryParseVersion(version, out var major, out var minor)) + { + return major > 3 || (major == 3 && minor >= 10); + } + } + } + catch + { + // Ignore validation errors + } + + return false; + } + + protected override bool TryFindInPath(string executable, out string fullPath) + { + fullPath = ExecPath.FindInPath(executable, BuildAugmentedPath()); + return !string.IsNullOrEmpty(fullPath); + } + + protected string BuildAugmentedPath() + { + var additions = GetPathAdditions(); + if (additions.Length == 0) return null; + + // Only return the additions - ExecPath.TryRun will prepend to existing PATH + return string.Join(Path.PathSeparator, additions); + } + + private string[] GetPathAdditions() + { + var localAppData = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); + var programFiles = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles); + var appData = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); + var homeDir = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile); + + var additions = new List(); + + // uv common installation paths + if (!string.IsNullOrEmpty(localAppData)) + additions.Add(Path.Combine(localAppData, "Programs", "uv")); + if (!string.IsNullOrEmpty(programFiles)) + additions.Add(Path.Combine(programFiles, "uv")); + + // npm global paths + if (!string.IsNullOrEmpty(appData)) + additions.Add(Path.Combine(appData, "npm")); + if (!string.IsNullOrEmpty(localAppData)) + additions.Add(Path.Combine(localAppData, "npm")); + + // Python common paths + if (!string.IsNullOrEmpty(localAppData)) + additions.Add(Path.Combine(localAppData, "Programs", "Python")); + // Instead of hardcoded versions, enumerate existing directories + if (!string.IsNullOrEmpty(programFiles)) + { + try + { + var pythonDirs = Directory.GetDirectories(programFiles, "Python3*") + .OrderByDescending(d => d); // Newest first + foreach (var dir in pythonDirs) + { + additions.Add(dir); + } + } + catch { /* Ignore if directory doesn't exist */ } + } + + // User scripts + if (!string.IsNullOrEmpty(homeDir)) + additions.Add(Path.Combine(homeDir, ".local", "bin")); + + return additions.ToArray(); + } + } +} diff --git a/Packages/MCPForUnity/Editor/Dependencies/PlatformDetectors/WindowsPlatformDetector.cs.meta b/Packages/MCPForUnity/Editor/Dependencies/PlatformDetectors/WindowsPlatformDetector.cs.meta new file mode 100644 index 00000000..59cf1d9f --- /dev/null +++ b/Packages/MCPForUnity/Editor/Dependencies/PlatformDetectors/WindowsPlatformDetector.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1aedc29caa5704c07b487d20a27e9334 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/External.meta b/Packages/MCPForUnity/Editor/External.meta new file mode 100644 index 00000000..ce757b15 --- /dev/null +++ b/Packages/MCPForUnity/Editor/External.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c11944bcfb9ec4576bab52874b7df584 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/External/Tommy.cs b/Packages/MCPForUnity/Editor/External/Tommy.cs new file mode 100644 index 00000000..22e83b81 --- /dev/null +++ b/Packages/MCPForUnity/Editor/External/Tommy.cs @@ -0,0 +1,2138 @@ +#region LICENSE + +/* + * MIT License + * + * Copyright (c) 2020 Denis Zhidkikh + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#endregion + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; + +namespace MCPForUnity.External.Tommy +{ + #region TOML Nodes + + public abstract class TomlNode : IEnumerable + { + public virtual bool HasValue { get; } = false; + public virtual bool IsArray { get; } = false; + public virtual bool IsTable { get; } = false; + public virtual bool IsString { get; } = false; + public virtual bool IsInteger { get; } = false; + public virtual bool IsFloat { get; } = false; + public bool IsDateTime => IsDateTimeLocal || IsDateTimeOffset; + public virtual bool IsDateTimeLocal { get; } = false; + public virtual bool IsDateTimeOffset { get; } = false; + public virtual bool IsBoolean { get; } = false; + public virtual string Comment { get; set; } + public virtual int CollapseLevel { get; set; } + + public virtual TomlTable AsTable => this as TomlTable; + public virtual TomlString AsString => this as TomlString; + public virtual TomlInteger AsInteger => this as TomlInteger; + public virtual TomlFloat AsFloat => this as TomlFloat; + public virtual TomlBoolean AsBoolean => this as TomlBoolean; + public virtual TomlDateTimeLocal AsDateTimeLocal => this as TomlDateTimeLocal; + public virtual TomlDateTimeOffset AsDateTimeOffset => this as TomlDateTimeOffset; + public virtual TomlDateTime AsDateTime => this as TomlDateTime; + public virtual TomlArray AsArray => this as TomlArray; + + public virtual int ChildrenCount => 0; + + public virtual TomlNode this[string key] + { + get => null; + set { } + } + + public virtual TomlNode this[int index] + { + get => null; + set { } + } + + public virtual IEnumerable Children + { + get { yield break; } + } + + public virtual IEnumerable Keys + { + get { yield break; } + } + + public IEnumerator GetEnumerator() => Children.GetEnumerator(); + + public virtual bool TryGetNode(string key, out TomlNode node) + { + node = null; + return false; + } + + public virtual bool HasKey(string key) => false; + + public virtual bool HasItemAt(int index) => false; + + public virtual void Add(string key, TomlNode node) { } + + public virtual void Add(TomlNode node) { } + + public virtual void Delete(TomlNode node) { } + + public virtual void Delete(string key) { } + + public virtual void Delete(int index) { } + + public virtual void AddRange(IEnumerable nodes) + { + foreach (var tomlNode in nodes) Add(tomlNode); + } + + public virtual void WriteTo(TextWriter tw, string name = null) => tw.WriteLine(ToInlineToml()); + + public virtual string ToInlineToml() => ToString(); + + #region Native type to TOML cast + + public static implicit operator TomlNode(string value) => new TomlString { Value = value }; + + public static implicit operator TomlNode(bool value) => new TomlBoolean { Value = value }; + + public static implicit operator TomlNode(long value) => new TomlInteger { Value = value }; + + public static implicit operator TomlNode(float value) => new TomlFloat { Value = value }; + + public static implicit operator TomlNode(double value) => new TomlFloat { Value = value }; + + public static implicit operator TomlNode(DateTime value) => new TomlDateTimeLocal { Value = value }; + + public static implicit operator TomlNode(DateTimeOffset value) => new TomlDateTimeOffset { Value = value }; + + public static implicit operator TomlNode(TomlNode[] nodes) + { + var result = new TomlArray(); + result.AddRange(nodes); + return result; + } + + #endregion + + #region TOML to native type cast + + public static implicit operator string(TomlNode value) => value.ToString(); + + public static implicit operator int(TomlNode value) => (int)value.AsInteger.Value; + + public static implicit operator long(TomlNode value) => value.AsInteger.Value; + + public static implicit operator float(TomlNode value) => (float)value.AsFloat.Value; + + public static implicit operator double(TomlNode value) => value.AsFloat.Value; + + public static implicit operator bool(TomlNode value) => value.AsBoolean.Value; + + public static implicit operator DateTime(TomlNode value) => value.AsDateTimeLocal.Value; + + public static implicit operator DateTimeOffset(TomlNode value) => value.AsDateTimeOffset.Value; + + #endregion + } + + public class TomlString : TomlNode + { + public override bool HasValue { get; } = true; + public override bool IsString { get; } = true; + public bool IsMultiline { get; set; } + public bool MultilineTrimFirstLine { get; set; } + public bool PreferLiteral { get; set; } + + public string Value { get; set; } + + public override string ToString() => Value; + + public override string ToInlineToml() + { + // Automatically convert literal to non-literal if there are too many literal string symbols + if (Value.IndexOf(new string(TomlSyntax.LITERAL_STRING_SYMBOL, IsMultiline ? 3 : 1), StringComparison.Ordinal) != -1 && PreferLiteral) PreferLiteral = false; + var quotes = new string(PreferLiteral ? TomlSyntax.LITERAL_STRING_SYMBOL : TomlSyntax.BASIC_STRING_SYMBOL, + IsMultiline ? 3 : 1); + var result = PreferLiteral ? Value : Value.Escape(!IsMultiline); + if (IsMultiline) + result = result.Replace("\r\n", "\n").Replace("\n", Environment.NewLine); + if (IsMultiline && (MultilineTrimFirstLine || !MultilineTrimFirstLine && result.StartsWith(Environment.NewLine))) + result = $"{Environment.NewLine}{result}"; + return $"{quotes}{result}{quotes}"; + } + } + + public class TomlInteger : TomlNode + { + public enum Base + { + Binary = 2, + Octal = 8, + Decimal = 10, + Hexadecimal = 16 + } + + public override bool IsInteger { get; } = true; + public override bool HasValue { get; } = true; + public Base IntegerBase { get; set; } = Base.Decimal; + + public long Value { get; set; } + + public override string ToString() => Value.ToString(); + + public override string ToInlineToml() => + IntegerBase != Base.Decimal + ? $"0{TomlSyntax.BaseIdentifiers[(int)IntegerBase]}{Convert.ToString(Value, (int)IntegerBase)}" + : Value.ToString(CultureInfo.InvariantCulture); + } + + public class TomlFloat : TomlNode, IFormattable + { + public override bool IsFloat { get; } = true; + public override bool HasValue { get; } = true; + + public double Value { get; set; } + + public override string ToString() => Value.ToString(CultureInfo.InvariantCulture); + + public string ToString(string format, IFormatProvider formatProvider) => Value.ToString(format, formatProvider); + + public string ToString(IFormatProvider formatProvider) => Value.ToString(formatProvider); + + public override string ToInlineToml() => + Value switch + { + var v when double.IsNaN(v) => TomlSyntax.NAN_VALUE, + var v when double.IsPositiveInfinity(v) => TomlSyntax.INF_VALUE, + var v when double.IsNegativeInfinity(v) => TomlSyntax.NEG_INF_VALUE, + var v => v.ToString("G", CultureInfo.InvariantCulture).ToLowerInvariant() + }; + } + + public class TomlBoolean : TomlNode + { + public override bool IsBoolean { get; } = true; + public override bool HasValue { get; } = true; + + public bool Value { get; set; } + + public override string ToString() => Value.ToString(); + + public override string ToInlineToml() => Value ? TomlSyntax.TRUE_VALUE : TomlSyntax.FALSE_VALUE; + } + + public class TomlDateTime : TomlNode, IFormattable + { + public int SecondsPrecision { get; set; } + public override bool HasValue { get; } = true; + public virtual string ToString(string format, IFormatProvider formatProvider) => string.Empty; + public virtual string ToString(IFormatProvider formatProvider) => string.Empty; + protected virtual string ToInlineTomlInternal() => string.Empty; + + public override string ToInlineToml() => ToInlineTomlInternal() + .Replace(TomlSyntax.RFC3339EmptySeparator, TomlSyntax.ISO861Separator) + .Replace(TomlSyntax.ISO861ZeroZone, TomlSyntax.RFC3339ZeroZone); + } + + public class TomlDateTimeOffset : TomlDateTime + { + public override bool IsDateTimeOffset { get; } = true; + public DateTimeOffset Value { get; set; } + + public override string ToString() => Value.ToString(CultureInfo.CurrentCulture); + public override string ToString(IFormatProvider formatProvider) => Value.ToString(formatProvider); + + public override string ToString(string format, IFormatProvider formatProvider) => + Value.ToString(format, formatProvider); + + protected override string ToInlineTomlInternal() => Value.ToString(TomlSyntax.RFC3339Formats[SecondsPrecision]); + } + + public class TomlDateTimeLocal : TomlDateTime + { + public enum DateTimeStyle + { + Date, + Time, + DateTime + } + + public override bool IsDateTimeLocal { get; } = true; + public DateTimeStyle Style { get; set; } = DateTimeStyle.DateTime; + public DateTime Value { get; set; } + + public override string ToString() => Value.ToString(CultureInfo.CurrentCulture); + + public override string ToString(IFormatProvider formatProvider) => Value.ToString(formatProvider); + + public override string ToString(string format, IFormatProvider formatProvider) => + Value.ToString(format, formatProvider); + + public override string ToInlineToml() => + Style switch + { + DateTimeStyle.Date => Value.ToString(TomlSyntax.LocalDateFormat), + DateTimeStyle.Time => Value.ToString(TomlSyntax.RFC3339LocalTimeFormats[SecondsPrecision]), + var _ => Value.ToString(TomlSyntax.RFC3339LocalDateTimeFormats[SecondsPrecision]) + }; + } + + public class TomlArray : TomlNode + { + private List values; + + public override bool HasValue { get; } = true; + public override bool IsArray { get; } = true; + public bool IsMultiline { get; set; } + public bool IsTableArray { get; set; } + public List RawArray => values ??= new List(); + + public override TomlNode this[int index] + { + get + { + if (index < RawArray.Count) return RawArray[index]; + var lazy = new TomlLazy(this); + this[index] = lazy; + return lazy; + } + set + { + if (index == RawArray.Count) + RawArray.Add(value); + else + RawArray[index] = value; + } + } + + public override int ChildrenCount => RawArray.Count; + + public override IEnumerable Children => RawArray.AsEnumerable(); + + public override void Add(TomlNode node) => RawArray.Add(node); + + public override void AddRange(IEnumerable nodes) => RawArray.AddRange(nodes); + + public override void Delete(TomlNode node) => RawArray.Remove(node); + + public override void Delete(int index) => RawArray.RemoveAt(index); + + public override string ToString() => ToString(false); + + public string ToString(bool multiline) + { + var sb = new StringBuilder(); + sb.Append(TomlSyntax.ARRAY_START_SYMBOL); + if (ChildrenCount != 0) + { + var arrayStart = multiline ? $"{Environment.NewLine} " : " "; + var arraySeparator = multiline ? $"{TomlSyntax.ITEM_SEPARATOR}{Environment.NewLine} " : $"{TomlSyntax.ITEM_SEPARATOR} "; + var arrayEnd = multiline ? Environment.NewLine : " "; + sb.Append(arrayStart) + .Append(arraySeparator.Join(RawArray.Select(n => n.ToInlineToml()))) + .Append(arrayEnd); + } + sb.Append(TomlSyntax.ARRAY_END_SYMBOL); + return sb.ToString(); + } + + public override void WriteTo(TextWriter tw, string name = null) + { + // If it's a normal array, write it as usual + if (!IsTableArray) + { + tw.WriteLine(ToString(IsMultiline)); + return; + } + + if (!(Comment is null)) + { + tw.WriteLine(); + Comment.AsComment(tw); + } + tw.Write(TomlSyntax.ARRAY_START_SYMBOL); + tw.Write(TomlSyntax.ARRAY_START_SYMBOL); + tw.Write(name); + tw.Write(TomlSyntax.ARRAY_END_SYMBOL); + tw.Write(TomlSyntax.ARRAY_END_SYMBOL); + tw.WriteLine(); + + var first = true; + + foreach (var tomlNode in RawArray) + { + if (!(tomlNode is TomlTable tbl)) + throw new TomlFormatException("The array is marked as array table but contains non-table nodes!"); + + // Ensure it's parsed as a section + tbl.IsInline = false; + + if (!first) + { + tw.WriteLine(); + + Comment?.AsComment(tw); + tw.Write(TomlSyntax.ARRAY_START_SYMBOL); + tw.Write(TomlSyntax.ARRAY_START_SYMBOL); + tw.Write(name); + tw.Write(TomlSyntax.ARRAY_END_SYMBOL); + tw.Write(TomlSyntax.ARRAY_END_SYMBOL); + tw.WriteLine(); + } + + first = false; + + // Don't write section since it's already written here + tbl.WriteTo(tw, name, false); + } + } + } + + public class TomlTable : TomlNode + { + private Dictionary children; + internal bool isImplicit; + + public override bool HasValue { get; } = false; + public override bool IsTable { get; } = true; + public bool IsInline { get; set; } + public Dictionary RawTable => children ??= new Dictionary(); + + public override TomlNode this[string key] + { + get + { + if (RawTable.TryGetValue(key, out var result)) return result; + var lazy = new TomlLazy(this); + RawTable[key] = lazy; + return lazy; + } + set => RawTable[key] = value; + } + + public override int ChildrenCount => RawTable.Count; + public override IEnumerable Children => RawTable.Select(kv => kv.Value); + public override IEnumerable Keys => RawTable.Select(kv => kv.Key); + public override bool HasKey(string key) => RawTable.ContainsKey(key); + public override void Add(string key, TomlNode node) => RawTable.Add(key, node); + public override bool TryGetNode(string key, out TomlNode node) => RawTable.TryGetValue(key, out node); + public override void Delete(TomlNode node) => RawTable.Remove(RawTable.First(kv => kv.Value == node).Key); + public override void Delete(string key) => RawTable.Remove(key); + + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append(TomlSyntax.INLINE_TABLE_START_SYMBOL); + + if (ChildrenCount != 0) + { + var collapsed = CollectCollapsedItems(normalizeOrder: false); + + if (collapsed.Count != 0) + sb.Append(' ') + .Append($"{TomlSyntax.ITEM_SEPARATOR} ".Join(collapsed.Select(n => + $"{n.Key} {TomlSyntax.KEY_VALUE_SEPARATOR} {n.Value.ToInlineToml()}"))); + sb.Append(' '); + } + + sb.Append(TomlSyntax.INLINE_TABLE_END_SYMBOL); + return sb.ToString(); + } + + private LinkedList> CollectCollapsedItems(string prefix = "", int level = 0, bool normalizeOrder = true) + { + var nodes = new LinkedList>(); + var postNodes = normalizeOrder ? new LinkedList>() : nodes; + + foreach (var keyValuePair in RawTable) + { + var node = keyValuePair.Value; + var key = keyValuePair.Key.AsKey(); + + if (node is TomlTable tbl) + { + var subnodes = tbl.CollectCollapsedItems($"{prefix}{key}.", level + 1, normalizeOrder); + // Write main table first before writing collapsed items + if (subnodes.Count == 0 && node.CollapseLevel == level) + { + postNodes.AddLast(new KeyValuePair($"{prefix}{key}", node)); + } + foreach (var kv in subnodes) + postNodes.AddLast(kv); + } + else if (node.CollapseLevel == level) + nodes.AddLast(new KeyValuePair($"{prefix}{key}", node)); + } + + if (normalizeOrder) + foreach (var kv in postNodes) + nodes.AddLast(kv); + + return nodes; + } + + public override void WriteTo(TextWriter tw, string name = null) => WriteTo(tw, name, true); + + internal void WriteTo(TextWriter tw, string name, bool writeSectionName) + { + // The table is inline table + if (IsInline && name != null) + { + tw.WriteLine(ToInlineToml()); + return; + } + + var collapsedItems = CollectCollapsedItems(); + + if (collapsedItems.Count == 0) + return; + + var hasRealValues = !collapsedItems.All(n => n.Value is TomlTable { IsInline: false } or TomlArray { IsTableArray: true }); + + Comment?.AsComment(tw); + + if (name != null && (hasRealValues || Comment != null) && writeSectionName) + { + tw.Write(TomlSyntax.ARRAY_START_SYMBOL); + tw.Write(name); + tw.Write(TomlSyntax.ARRAY_END_SYMBOL); + tw.WriteLine(); + } + else if (Comment != null) // Add some spacing between the first node and the comment + { + tw.WriteLine(); + } + + var namePrefix = name == null ? "" : $"{name}."; + var first = true; + + foreach (var collapsedItem in collapsedItems) + { + var key = collapsedItem.Key; + if (collapsedItem.Value is TomlArray { IsTableArray: true } or TomlTable { IsInline: false }) + { + if (!first) tw.WriteLine(); + first = false; + collapsedItem.Value.WriteTo(tw, $"{namePrefix}{key}"); + continue; + } + first = false; + + collapsedItem.Value.Comment?.AsComment(tw); + tw.Write(key); + tw.Write(' '); + tw.Write(TomlSyntax.KEY_VALUE_SEPARATOR); + tw.Write(' '); + + collapsedItem.Value.WriteTo(tw, $"{namePrefix}{key}"); + } + } + } + + internal class TomlLazy : TomlNode + { + private readonly TomlNode parent; + private TomlNode replacement; + + public TomlLazy(TomlNode parent) => this.parent = parent; + + public override TomlNode this[int index] + { + get => Set()[index]; + set => Set()[index] = value; + } + + public override TomlNode this[string key] + { + get => Set()[key]; + set => Set()[key] = value; + } + + public override void Add(TomlNode node) => Set().Add(node); + + public override void Add(string key, TomlNode node) => Set().Add(key, node); + + public override void AddRange(IEnumerable nodes) => Set().AddRange(nodes); + + private TomlNode Set() where T : TomlNode, new() + { + if (replacement != null) return replacement; + + var newNode = new T + { + Comment = Comment + }; + + if (parent.IsTable) + { + var key = parent.Keys.FirstOrDefault(s => parent.TryGetNode(s, out var node) && node.Equals(this)); + if (key == null) return default(T); + + parent[key] = newNode; + } + else if (parent.IsArray) + { + var index = parent.Children.TakeWhile(child => child != this).Count(); + if (index == parent.ChildrenCount) return default(T); + parent[index] = newNode; + } + else + { + return default(T); + } + + replacement = newNode; + return newNode; + } + } + + #endregion + + #region Parser + + public class TOMLParser : IDisposable + { + public enum ParseState + { + None, + KeyValuePair, + SkipToNextLine, + Table + } + + private readonly TextReader reader; + private ParseState currentState; + private int line, col; + private List syntaxErrors; + + public TOMLParser(TextReader reader) + { + this.reader = reader; + line = col = 0; + } + + public bool ForceASCII { get; set; } + + public void Dispose() => reader?.Dispose(); + + public TomlTable Parse() + { + syntaxErrors = new List(); + line = col = 1; + var rootNode = new TomlTable(); + var currentNode = rootNode; + currentState = ParseState.None; + var keyParts = new List(); + var arrayTable = false; + StringBuilder latestComment = null; + var firstComment = true; + + int currentChar; + while ((currentChar = reader.Peek()) >= 0) + { + var c = (char)currentChar; + + if (currentState == ParseState.None) + { + // Skip white space + if (TomlSyntax.IsWhiteSpace(c)) goto consume_character; + + if (TomlSyntax.IsNewLine(c)) + { + // Check if there are any comments and so far no items being declared + if (latestComment != null && firstComment) + { + rootNode.Comment = latestComment.ToString().TrimEnd(); + latestComment = null; + firstComment = false; + } + + if (TomlSyntax.IsLineBreak(c)) + AdvanceLine(); + + goto consume_character; + } + + // Start of a comment; ignore until newline + if (c == TomlSyntax.COMMENT_SYMBOL) + { + latestComment ??= new StringBuilder(); + latestComment.AppendLine(ParseComment()); + AdvanceLine(1); + continue; + } + + // Encountered a non-comment value. The comment must belong to it (ignore possible newlines)! + firstComment = false; + + if (c == TomlSyntax.TABLE_START_SYMBOL) + { + currentState = ParseState.Table; + goto consume_character; + } + + if (TomlSyntax.IsBareKey(c) || TomlSyntax.IsQuoted(c)) + { + currentState = ParseState.KeyValuePair; + } + else + { + AddError($"Unexpected character \"{c}\""); + continue; + } + } + + if (currentState == ParseState.KeyValuePair) + { + var keyValuePair = ReadKeyValuePair(keyParts); + + if (keyValuePair == null) + { + latestComment = null; + keyParts.Clear(); + + if (currentState != ParseState.None) + AddError("Failed to parse key-value pair!"); + continue; + } + + keyValuePair.Comment = latestComment?.ToString()?.TrimEnd(); + var inserted = InsertNode(keyValuePair, currentNode, keyParts); + latestComment = null; + keyParts.Clear(); + if (inserted) + currentState = ParseState.SkipToNextLine; + continue; + } + + if (currentState == ParseState.Table) + { + if (keyParts.Count == 0) + { + // We have array table + if (c == TomlSyntax.TABLE_START_SYMBOL) + { + // Consume the character + ConsumeChar(); + arrayTable = true; + } + + if (!ReadKeyName(ref keyParts, TomlSyntax.TABLE_END_SYMBOL)) + { + keyParts.Clear(); + continue; + } + + if (keyParts.Count == 0) + { + AddError("Table name is emtpy."); + arrayTable = false; + latestComment = null; + keyParts.Clear(); + } + + continue; + } + + if (c == TomlSyntax.TABLE_END_SYMBOL) + { + if (arrayTable) + { + // Consume the ending bracket so we can peek the next character + ConsumeChar(); + var nextChar = reader.Peek(); + if (nextChar < 0 || (char)nextChar != TomlSyntax.TABLE_END_SYMBOL) + { + AddError($"Array table {".".Join(keyParts)} has only one closing bracket."); + keyParts.Clear(); + arrayTable = false; + latestComment = null; + continue; + } + } + + currentNode = CreateTable(rootNode, keyParts, arrayTable); + if (currentNode != null) + { + currentNode.IsInline = false; + currentNode.Comment = latestComment?.ToString()?.TrimEnd(); + } + + keyParts.Clear(); + arrayTable = false; + latestComment = null; + + if (currentNode == null) + { + if (currentState != ParseState.None) + AddError("Error creating table array!"); + // Reset a node to root in order to try and continue parsing + currentNode = rootNode; + continue; + } + + currentState = ParseState.SkipToNextLine; + goto consume_character; + } + + if (keyParts.Count != 0) + { + AddError($"Unexpected character \"{c}\""); + keyParts.Clear(); + arrayTable = false; + latestComment = null; + } + } + + if (currentState == ParseState.SkipToNextLine) + { + if (TomlSyntax.IsWhiteSpace(c) || c == TomlSyntax.NEWLINE_CARRIAGE_RETURN_CHARACTER) + goto consume_character; + + if (c is TomlSyntax.COMMENT_SYMBOL or TomlSyntax.NEWLINE_CHARACTER) + { + currentState = ParseState.None; + AdvanceLine(); + + if (c == TomlSyntax.COMMENT_SYMBOL) + { + col++; + ParseComment(); + continue; + } + + goto consume_character; + } + + AddError($"Unexpected character \"{c}\" at the end of the line."); + } + + consume_character: + reader.Read(); + col++; + } + + if (currentState != ParseState.None && currentState != ParseState.SkipToNextLine) + AddError("Unexpected end of file!"); + + if (syntaxErrors.Count > 0) + throw new TomlParseException(rootNode, syntaxErrors); + + return rootNode; + } + + private bool AddError(string message, bool skipLine = true) + { + syntaxErrors.Add(new TomlSyntaxException(message, currentState, line, col)); + // Skip the whole line in hope that it was only a single faulty value (and non-multiline one at that) + if (skipLine) + { + reader.ReadLine(); + AdvanceLine(1); + } + currentState = ParseState.None; + return false; + } + + private void AdvanceLine(int startCol = 0) + { + line++; + col = startCol; + } + + private int ConsumeChar() + { + col++; + return reader.Read(); + } + + #region Key-Value pair parsing + + /** + * Reads a single key-value pair. + * Assumes the cursor is at the first character that belong to the pair (including possible whitespace). + * Consumes all characters that belong to the key and the value (ignoring possible trailing whitespace at the end). + * + * Example: + * foo = "bar" ==> foo = "bar" + * ^ ^ + */ + private TomlNode ReadKeyValuePair(List keyParts) + { + int cur; + while ((cur = reader.Peek()) >= 0) + { + var c = (char)cur; + + if (TomlSyntax.IsQuoted(c) || TomlSyntax.IsBareKey(c)) + { + if (keyParts.Count != 0) + { + AddError("Encountered extra characters in key definition!"); + return null; + } + + if (!ReadKeyName(ref keyParts, TomlSyntax.KEY_VALUE_SEPARATOR)) + return null; + + continue; + } + + if (TomlSyntax.IsWhiteSpace(c)) + { + ConsumeChar(); + continue; + } + + if (c == TomlSyntax.KEY_VALUE_SEPARATOR) + { + ConsumeChar(); + return ReadValue(); + } + + AddError($"Unexpected character \"{c}\" in key name."); + return null; + } + + return null; + } + + /** + * Reads a single value. + * Assumes the cursor is at the first character that belongs to the value (including possible starting whitespace). + * Consumes all characters belonging to the value (ignoring possible trailing whitespace at the end). + * + * Example: + * "test" ==> "test" + * ^ ^ + */ + private TomlNode ReadValue(bool skipNewlines = false) + { + int cur; + while ((cur = reader.Peek()) >= 0) + { + var c = (char)cur; + + if (TomlSyntax.IsWhiteSpace(c)) + { + ConsumeChar(); + continue; + } + + if (c == TomlSyntax.COMMENT_SYMBOL) + { + AddError("No value found!"); + return null; + } + + if (TomlSyntax.IsNewLine(c)) + { + if (skipNewlines) + { + reader.Read(); + AdvanceLine(1); + continue; + } + + AddError("Encountered a newline when expecting a value!"); + return null; + } + + if (TomlSyntax.IsQuoted(c)) + { + var isMultiline = IsTripleQuote(c, out var excess); + + // Error occurred in triple quote parsing + if (currentState == ParseState.None) + return null; + + var value = isMultiline + ? ReadQuotedValueMultiLine(c) + : ReadQuotedValueSingleLine(c, excess); + + if (value is null) + return null; + + return new TomlString + { + Value = value, + IsMultiline = isMultiline, + PreferLiteral = c == TomlSyntax.LITERAL_STRING_SYMBOL + }; + } + + return c switch + { + TomlSyntax.INLINE_TABLE_START_SYMBOL => ReadInlineTable(), + TomlSyntax.ARRAY_START_SYMBOL => ReadArray(), + var _ => ReadTomlValue() + }; + } + + return null; + } + + /** + * Reads a single key name. + * Assumes the cursor is at the first character belonging to the key (with possible trailing whitespace if `skipWhitespace = true`). + * Consumes all the characters until the `until` character is met (but does not consume the character itself). + * + * Example 1: + * foo.bar ==> foo.bar (`skipWhitespace = false`, `until = ' '`) + * ^ ^ + * + * Example 2: + * [ foo . bar ] ==> [ foo . bar ] (`skipWhitespace = true`, `until = ']'`) + * ^ ^ + */ + private bool ReadKeyName(ref List parts, char until) + { + var buffer = new StringBuilder(); + var quoted = false; + var prevWasSpace = false; + int cur; + while ((cur = reader.Peek()) >= 0) + { + var c = (char)cur; + + // Reached the final character + if (c == until) break; + + if (TomlSyntax.IsWhiteSpace(c)) + { + prevWasSpace = true; + goto consume_character; + } + + if (buffer.Length == 0) prevWasSpace = false; + + if (c == TomlSyntax.SUBKEY_SEPARATOR) + { + if (buffer.Length == 0 && !quoted) + return AddError($"Found an extra subkey separator in {".".Join(parts)}..."); + + parts.Add(buffer.ToString()); + buffer.Length = 0; + quoted = false; + prevWasSpace = false; + goto consume_character; + } + + if (prevWasSpace) + return AddError("Invalid spacing in key name"); + + if (TomlSyntax.IsQuoted(c)) + { + if (quoted) + + return AddError("Expected a subkey separator but got extra data instead!"); + + if (buffer.Length != 0) + return AddError("Encountered a quote in the middle of subkey name!"); + + // Consume the quote character and read the key name + col++; + buffer.Append(ReadQuotedValueSingleLine((char)reader.Read())); + quoted = true; + continue; + } + + if (TomlSyntax.IsBareKey(c)) + { + buffer.Append(c); + goto consume_character; + } + + // If we see an invalid symbol, let the next parser handle it + break; + + consume_character: + reader.Read(); + col++; + } + + if (buffer.Length == 0 && !quoted) + return AddError($"Found an extra subkey separator in {".".Join(parts)}..."); + + parts.Add(buffer.ToString()); + + return true; + } + + #endregion + + #region Non-string value parsing + + /** + * Reads the whole raw value until the first non-value character is encountered. + * Assumes the cursor start position at the first value character and consumes all characters that may be related to the value. + * Example: + * + * 1_0_0_0 ==> 1_0_0_0 + * ^ ^ + */ + private string ReadRawValue() + { + var result = new StringBuilder(); + int cur; + while ((cur = reader.Peek()) >= 0) + { + var c = (char)cur; + if (c == TomlSyntax.COMMENT_SYMBOL || TomlSyntax.IsNewLine(c) || TomlSyntax.IsValueSeparator(c)) break; + result.Append(c); + ConsumeChar(); + } + + // Replace trim with manual space counting? + return result.ToString().Trim(); + } + + /** + * Reads and parses a non-string, non-composite TOML value. + * Assumes the cursor at the first character that is related to the value (with possible spaces). + * Consumes all the characters that are related to the value. + * + * Example + * 1_0_0_0 # This is a comment + * + * ==> 1_0_0_0 # This is a comment + * ^ ^ + */ + private TomlNode ReadTomlValue() + { + var value = ReadRawValue(); + TomlNode node = value switch + { + var v when TomlSyntax.IsBoolean(v) => bool.Parse(v), + var v when TomlSyntax.IsNaN(v) => double.NaN, + var v when TomlSyntax.IsPosInf(v) => double.PositiveInfinity, + var v when TomlSyntax.IsNegInf(v) => double.NegativeInfinity, + var v when TomlSyntax.IsInteger(v) => long.Parse(value.RemoveAll(TomlSyntax.INT_NUMBER_SEPARATOR), + CultureInfo.InvariantCulture), + var v when TomlSyntax.IsFloat(v) => double.Parse(value.RemoveAll(TomlSyntax.INT_NUMBER_SEPARATOR), + CultureInfo.InvariantCulture), + var v when TomlSyntax.IsIntegerWithBase(v, out var numberBase) => new TomlInteger + { + Value = Convert.ToInt64(value.Substring(2).RemoveAll(TomlSyntax.INT_NUMBER_SEPARATOR), numberBase), + IntegerBase = (TomlInteger.Base)numberBase + }, + var _ => null + }; + if (node != null) return node; + + // Normalize by removing space separator + value = value.Replace(TomlSyntax.RFC3339EmptySeparator, TomlSyntax.ISO861Separator); + if (StringUtils.TryParseDateTime(value, + TomlSyntax.RFC3339LocalDateTimeFormats, + DateTimeStyles.AssumeLocal, + DateTime.TryParseExact, + out var dateTimeResult, + out var precision)) + return new TomlDateTimeLocal + { + Value = dateTimeResult, + SecondsPrecision = precision + }; + + if (DateTime.TryParseExact(value, + TomlSyntax.LocalDateFormat, + CultureInfo.InvariantCulture, + DateTimeStyles.AssumeLocal, + out dateTimeResult)) + return new TomlDateTimeLocal + { + Value = dateTimeResult, + Style = TomlDateTimeLocal.DateTimeStyle.Date + }; + + if (StringUtils.TryParseDateTime(value, + TomlSyntax.RFC3339LocalTimeFormats, + DateTimeStyles.AssumeLocal, + DateTime.TryParseExact, + out dateTimeResult, + out precision)) + return new TomlDateTimeLocal + { + Value = dateTimeResult, + Style = TomlDateTimeLocal.DateTimeStyle.Time, + SecondsPrecision = precision + }; + + if (StringUtils.TryParseDateTime(value, + TomlSyntax.RFC3339Formats, + DateTimeStyles.None, + DateTimeOffset.TryParseExact, + out var dateTimeOffsetResult, + out precision)) + return new TomlDateTimeOffset + { + Value = dateTimeOffsetResult, + SecondsPrecision = precision + }; + + AddError($"Value \"{value}\" is not a valid TOML value!"); + return null; + } + + /** + * Reads an array value. + * Assumes the cursor is at the start of the array definition. Reads all character until the array closing bracket. + * + * Example: + * [1, 2, 3] ==> [1, 2, 3] + * ^ ^ + */ + private TomlArray ReadArray() + { + // Consume the start of array character + ConsumeChar(); + var result = new TomlArray(); + TomlNode currentValue = null; + var expectValue = true; + + int cur; + while ((cur = reader.Peek()) >= 0) + { + var c = (char)cur; + + if (c == TomlSyntax.ARRAY_END_SYMBOL) + { + ConsumeChar(); + break; + } + + if (c == TomlSyntax.COMMENT_SYMBOL) + { + reader.ReadLine(); + AdvanceLine(1); + continue; + } + + if (TomlSyntax.IsWhiteSpace(c) || TomlSyntax.IsNewLine(c)) + { + if (TomlSyntax.IsLineBreak(c)) + AdvanceLine(); + goto consume_character; + } + + if (c == TomlSyntax.ITEM_SEPARATOR) + { + if (currentValue == null) + { + AddError("Encountered multiple value separators"); + return null; + } + + result.Add(currentValue); + currentValue = null; + expectValue = true; + goto consume_character; + } + + if (!expectValue) + { + AddError("Missing separator between values"); + return null; + } + currentValue = ReadValue(true); + if (currentValue == null) + { + if (currentState != ParseState.None) + AddError("Failed to determine and parse a value!"); + return null; + } + expectValue = false; + + continue; + consume_character: + ConsumeChar(); + } + + if (currentValue != null) result.Add(currentValue); + return result; + } + + /** + * Reads an inline table. + * Assumes the cursor is at the start of the table definition. Reads all character until the table closing bracket. + * + * Example: + * { test = "foo", value = 1 } ==> { test = "foo", value = 1 } + * ^ ^ + */ + private TomlNode ReadInlineTable() + { + ConsumeChar(); + var result = new TomlTable { IsInline = true }; + TomlNode currentValue = null; + var separator = false; + var keyParts = new List(); + int cur; + while ((cur = reader.Peek()) >= 0) + { + var c = (char)cur; + + if (c == TomlSyntax.INLINE_TABLE_END_SYMBOL) + { + ConsumeChar(); + break; + } + + if (c == TomlSyntax.COMMENT_SYMBOL) + { + AddError("Incomplete inline table definition!"); + return null; + } + + if (TomlSyntax.IsNewLine(c)) + { + AddError("Inline tables are only allowed to be on single line"); + return null; + } + + if (TomlSyntax.IsWhiteSpace(c)) + goto consume_character; + + if (c == TomlSyntax.ITEM_SEPARATOR) + { + if (currentValue == null) + { + AddError("Encountered multiple value separators in inline table!"); + return null; + } + + if (!InsertNode(currentValue, result, keyParts)) + return null; + keyParts.Clear(); + currentValue = null; + separator = true; + goto consume_character; + } + + separator = false; + currentValue = ReadKeyValuePair(keyParts); + continue; + + consume_character: + ConsumeChar(); + } + + if (separator) + { + AddError("Trailing commas are not allowed in inline tables."); + return null; + } + + if (currentValue != null && !InsertNode(currentValue, result, keyParts)) + return null; + + return result; + } + + #endregion + + #region String parsing + + /** + * Checks if the string value a multiline string (i.e. a triple quoted string). + * Assumes the cursor is at the first quote character. Consumes the least amount of characters needed to determine if the string is multiline. + * + * If the result is false, returns the consumed character through the `excess` variable. + * + * Example 1: + * """test""" ==> """test""" + * ^ ^ + * + * Example 2: + * "test" ==> "test" (doesn't return the first quote) + * ^ ^ + * + * Example 3: + * "" ==> "" (returns the extra `"` through the `excess` variable) + * ^ ^ + */ + private bool IsTripleQuote(char quote, out char excess) + { + // Copypasta, but it's faster... + + int cur; + // Consume the first quote + ConsumeChar(); + if ((cur = reader.Peek()) < 0) + { + excess = '\0'; + return AddError("Unexpected end of file!"); + } + + if ((char)cur != quote) + { + excess = '\0'; + return false; + } + + // Consume the second quote + excess = (char)ConsumeChar(); + if ((cur = reader.Peek()) < 0 || (char)cur != quote) return false; + + // Consume the final quote + ConsumeChar(); + excess = '\0'; + return true; + } + + /** + * A convenience method to process a single character within a quote. + */ + private bool ProcessQuotedValueCharacter(char quote, + bool isNonLiteral, + char c, + StringBuilder sb, + ref bool escaped) + { + if (TomlSyntax.MustBeEscaped(c)) + return AddError($"The character U+{(int)c:X8} must be escaped in a string!"); + + if (escaped) + { + sb.Append(c); + escaped = false; + return false; + } + + if (c == quote) + { + if (!isNonLiteral && reader.Peek() == quote) + { + reader.Read(); + col++; + sb.Append(quote); + return false; + } + + return true; + } + if (isNonLiteral && c == TomlSyntax.ESCAPE_SYMBOL) + escaped = true; + if (c == TomlSyntax.NEWLINE_CHARACTER) + return AddError("Encountered newline in single line string!"); + + sb.Append(c); + return false; + } + + /** + * Reads a single-line string. + * Assumes the cursor is at the first character that belongs to the string. + * Consumes all characters that belong to the string (including the closing quote). + * + * Example: + * "test" ==> "test" + * ^ ^ + */ + private string ReadQuotedValueSingleLine(char quote, char initialData = '\0') + { + var isNonLiteral = quote == TomlSyntax.BASIC_STRING_SYMBOL; + var sb = new StringBuilder(); + var escaped = false; + + if (initialData != '\0') + { + var shouldReturn = + ProcessQuotedValueCharacter(quote, isNonLiteral, initialData, sb, ref escaped); + if (currentState == ParseState.None) return null; + if (shouldReturn) + if (isNonLiteral) + { + if (sb.ToString().TryUnescape(out var res, out var ex)) return res; + AddError(ex.Message); + return null; + } + else + return sb.ToString(); + } + + int cur; + var readDone = false; + while ((cur = reader.Read()) >= 0) + { + // Consume the character + col++; + var c = (char)cur; + readDone = ProcessQuotedValueCharacter(quote, isNonLiteral, c, sb, ref escaped); + if (readDone) + { + if (currentState == ParseState.None) return null; + break; + } + } + + if (!readDone) + { + AddError("Unclosed string."); + return null; + } + + if (!isNonLiteral) return sb.ToString(); + if (sb.ToString().TryUnescape(out var unescaped, out var unescapedEx)) return unescaped; + AddError(unescapedEx.Message); + return null; + } + + /** + * Reads a multiline string. + * Assumes the cursor is at the first character that belongs to the string. + * Consumes all characters that belong to the string and the three closing quotes. + * + * Example: + * """test""" ==> """test""" + * ^ ^ + */ + private string ReadQuotedValueMultiLine(char quote) + { + var isBasic = quote == TomlSyntax.BASIC_STRING_SYMBOL; + var sb = new StringBuilder(); + var escaped = false; + var skipWhitespace = false; + var skipWhitespaceLineSkipped = false; + var quotesEncountered = 0; + var first = true; + int cur; + while ((cur = ConsumeChar()) >= 0) + { + var c = (char)cur; + if (TomlSyntax.MustBeEscaped(c, true)) + { + AddError($"The character U+{(int)c:X8} must be escaped!"); + return null; + } + // Trim the first newline + if (first && TomlSyntax.IsNewLine(c)) + { + if (TomlSyntax.IsLineBreak(c)) + first = false; + else + AdvanceLine(); + continue; + } + + first = false; + //TODO: Reuse ProcessQuotedValueCharacter + // Skip the current character if it is going to be escaped later + if (escaped) + { + sb.Append(c); + escaped = false; + continue; + } + + // If we are currently skipping empty spaces, skip + if (skipWhitespace) + { + if (TomlSyntax.IsEmptySpace(c)) + { + if (TomlSyntax.IsLineBreak(c)) + { + skipWhitespaceLineSkipped = true; + AdvanceLine(); + } + continue; + } + + if (!skipWhitespaceLineSkipped) + { + AddError("Non-whitespace character after trim marker."); + return null; + } + + skipWhitespaceLineSkipped = false; + skipWhitespace = false; + } + + // If we encounter an escape sequence... + if (isBasic && c == TomlSyntax.ESCAPE_SYMBOL) + { + var next = reader.Peek(); + var nc = (char)next; + if (next >= 0) + { + // ...and the next char is empty space, we must skip all whitespaces + if (TomlSyntax.IsEmptySpace(nc)) + { + skipWhitespace = true; + continue; + } + + // ...and we have \" or \, skip the character + if (nc == quote || nc == TomlSyntax.ESCAPE_SYMBOL) escaped = true; + } + } + + // Count the consecutive quotes + if (c == quote) + quotesEncountered++; + else + quotesEncountered = 0; + + // If the are three quotes, count them as closing quotes + if (quotesEncountered == 3) break; + + sb.Append(c); + } + + // TOML actually allows to have five ending quotes like + // """"" => "" belong to the string + """ is the actual ending + quotesEncountered = 0; + while ((cur = reader.Peek()) >= 0) + { + var c = (char)cur; + if (c == quote && ++quotesEncountered < 3) + { + sb.Append(c); + ConsumeChar(); + } + else break; + } + + // Remove last two quotes (third one wasn't included by default) + sb.Length -= 2; + if (!isBasic) return sb.ToString(); + if (sb.ToString().TryUnescape(out var res, out var ex)) return res; + AddError(ex.Message); + return null; + } + + #endregion + + #region Node creation + + private bool InsertNode(TomlNode node, TomlNode root, IList path) + { + var latestNode = root; + if (path.Count > 1) + for (var index = 0; index < path.Count - 1; index++) + { + var subkey = path[index]; + if (latestNode.TryGetNode(subkey, out var currentNode)) + { + if (currentNode.HasValue) + return AddError($"The key {".".Join(path)} already has a value assigned to it!"); + } + else + { + currentNode = new TomlTable(); + latestNode[subkey] = currentNode; + } + + latestNode = currentNode; + if (latestNode is TomlTable { IsInline: true }) + return AddError($"Cannot assign {".".Join(path)} because it will edit an immutable table."); + } + + if (latestNode.HasKey(path[path.Count - 1])) + return AddError($"The key {".".Join(path)} is already defined!"); + latestNode[path[path.Count - 1]] = node; + node.CollapseLevel = path.Count - 1; + return true; + } + + private TomlTable CreateTable(TomlNode root, IList path, bool arrayTable) + { + if (path.Count == 0) return null; + var latestNode = root; + for (var index = 0; index < path.Count; index++) + { + var subkey = path[index]; + + if (latestNode.TryGetNode(subkey, out var node)) + { + if (node.IsArray && arrayTable) + { + var arr = (TomlArray)node; + + if (!arr.IsTableArray) + { + AddError($"The array {".".Join(path)} cannot be redefined as an array table!"); + return null; + } + + if (index == path.Count - 1) + { + latestNode = new TomlTable(); + arr.Add(latestNode); + break; + } + + latestNode = arr[arr.ChildrenCount - 1]; + continue; + } + + if (node is TomlTable { IsInline: true }) + { + AddError($"Cannot create table {".".Join(path)} because it will edit an immutable table."); + return null; + } + + if (node.HasValue) + { + if (!(node is TomlArray { IsTableArray: true } array)) + { + AddError($"The key {".".Join(path)} has a value assigned to it!"); + return null; + } + + latestNode = array[array.ChildrenCount - 1]; + continue; + } + + if (index == path.Count - 1) + { + if (arrayTable && !node.IsArray) + { + AddError($"The table {".".Join(path)} cannot be redefined as an array table!"); + return null; + } + + if (node is TomlTable { isImplicit: false }) + { + AddError($"The table {".".Join(path)} is defined multiple times!"); + return null; + } + } + } + else + { + if (index == path.Count - 1 && arrayTable) + { + var table = new TomlTable(); + var arr = new TomlArray + { + IsTableArray = true + }; + arr.Add(table); + latestNode[subkey] = arr; + latestNode = table; + break; + } + + node = new TomlTable { isImplicit = true }; + latestNode[subkey] = node; + } + + latestNode = node; + } + + var result = (TomlTable)latestNode; + result.isImplicit = false; + return result; + } + + #endregion + + #region Misc parsing + + private string ParseComment() + { + ConsumeChar(); + var commentLine = reader.ReadLine()?.Trim() ?? ""; + if (commentLine.Any(ch => TomlSyntax.MustBeEscaped(ch))) + AddError("Comment must not contain control characters other than tab.", false); + return commentLine; + } + #endregion + } + + #endregion + + public static class TOML + { + public static bool ForceASCII { get; set; } = false; + + public static TomlTable Parse(TextReader reader) + { + using var parser = new TOMLParser(reader) { ForceASCII = ForceASCII }; + return parser.Parse(); + } + } + + #region Exception Types + + public class TomlFormatException : Exception + { + public TomlFormatException(string message) : base(message) { } + } + + public class TomlParseException : Exception + { + public TomlParseException(TomlTable parsed, IEnumerable exceptions) : + base("TOML file contains format errors") + { + ParsedTable = parsed; + SyntaxErrors = exceptions; + } + + public TomlTable ParsedTable { get; } + + public IEnumerable SyntaxErrors { get; } + } + + public class TomlSyntaxException : Exception + { + public TomlSyntaxException(string message, TOMLParser.ParseState state, int line, int col) : base(message) + { + ParseState = state; + Line = line; + Column = col; + } + + public TOMLParser.ParseState ParseState { get; } + + public int Line { get; } + + public int Column { get; } + } + + #endregion + + #region Parse utilities + + internal static class TomlSyntax + { + #region Type Patterns + + public const string TRUE_VALUE = "true"; + public const string FALSE_VALUE = "false"; + public const string NAN_VALUE = "nan"; + public const string POS_NAN_VALUE = "+nan"; + public const string NEG_NAN_VALUE = "-nan"; + public const string INF_VALUE = "inf"; + public const string POS_INF_VALUE = "+inf"; + public const string NEG_INF_VALUE = "-inf"; + + public static bool IsBoolean(string s) => s is TRUE_VALUE or FALSE_VALUE; + + public static bool IsPosInf(string s) => s is INF_VALUE or POS_INF_VALUE; + + public static bool IsNegInf(string s) => s == NEG_INF_VALUE; + + public static bool IsNaN(string s) => s is NAN_VALUE or POS_NAN_VALUE or NEG_NAN_VALUE; + + public static bool IsInteger(string s) => IntegerPattern.IsMatch(s); + + public static bool IsFloat(string s) => FloatPattern.IsMatch(s); + + public static bool IsIntegerWithBase(string s, out int numberBase) + { + numberBase = 10; + var match = BasedIntegerPattern.Match(s); + if (!match.Success) return false; + IntegerBases.TryGetValue(match.Groups["base"].Value, out numberBase); + return true; + } + + /** + * A pattern to verify the integer value according to the TOML specification. + */ + public static readonly Regex IntegerPattern = + new(@"^(\+|-)?(?!_)(0|(?!0)(_?\d)*)$", RegexOptions.Compiled); + + /** + * A pattern to verify a special 0x, 0o and 0b forms of an integer according to the TOML specification. + */ + public static readonly Regex BasedIntegerPattern = + new(@"^0(?x|b|o)(?!_)(_?[0-9A-F])*$", RegexOptions.Compiled | RegexOptions.IgnoreCase); + + /** + * A pattern to verify the float value according to the TOML specification. + */ + public static readonly Regex FloatPattern = + new(@"^(\+|-)?(?!_)(0|(?!0)(_?\d)+)(((e(\+|-)?(?!_)(_?\d)+)?)|(\.(?!_)(_?\d)+(e(\+|-)?(?!_)(_?\d)+)?))$", + RegexOptions.Compiled | RegexOptions.IgnoreCase); + + /** + * A helper dictionary to map TOML base codes into the radii. + */ + public static readonly Dictionary IntegerBases = new() + { + ["x"] = 16, + ["o"] = 8, + ["b"] = 2 + }; + + /** + * A helper dictionary to map non-decimal bases to their TOML identifiers + */ + public static readonly Dictionary BaseIdentifiers = new() + { + [2] = "b", + [8] = "o", + [16] = "x" + }; + + public const string RFC3339EmptySeparator = " "; + public const string ISO861Separator = "T"; + public const string ISO861ZeroZone = "+00:00"; + public const string RFC3339ZeroZone = "Z"; + + /** + * Valid date formats with timezone as per RFC3339. + */ + public static readonly string[] RFC3339Formats = + { + "yyyy'-'MM-ddTHH':'mm':'ssK", "yyyy'-'MM-ddTHH':'mm':'ss'.'fK", "yyyy'-'MM-ddTHH':'mm':'ss'.'ffK", + "yyyy'-'MM-ddTHH':'mm':'ss'.'fffK", "yyyy'-'MM-ddTHH':'mm':'ss'.'ffffK", + "yyyy'-'MM-ddTHH':'mm':'ss'.'fffffK", "yyyy'-'MM-ddTHH':'mm':'ss'.'ffffffK", + "yyyy'-'MM-ddTHH':'mm':'ss'.'fffffffK" + }; + + /** + * Valid date formats without timezone (assumes local) as per RFC3339. + */ + public static readonly string[] RFC3339LocalDateTimeFormats = + { + "yyyy'-'MM-ddTHH':'mm':'ss", "yyyy'-'MM-ddTHH':'mm':'ss'.'f", "yyyy'-'MM-ddTHH':'mm':'ss'.'ff", + "yyyy'-'MM-ddTHH':'mm':'ss'.'fff", "yyyy'-'MM-ddTHH':'mm':'ss'.'ffff", + "yyyy'-'MM-ddTHH':'mm':'ss'.'fffff", "yyyy'-'MM-ddTHH':'mm':'ss'.'ffffff", + "yyyy'-'MM-ddTHH':'mm':'ss'.'fffffff" + }; + + /** + * Valid full date format as per TOML spec. + */ + public static readonly string LocalDateFormat = "yyyy'-'MM'-'dd"; + + /** + * Valid time formats as per TOML spec. + */ + public static readonly string[] RFC3339LocalTimeFormats = + { + "HH':'mm':'ss", "HH':'mm':'ss'.'f", "HH':'mm':'ss'.'ff", "HH':'mm':'ss'.'fff", "HH':'mm':'ss'.'ffff", + "HH':'mm':'ss'.'fffff", "HH':'mm':'ss'.'ffffff", "HH':'mm':'ss'.'fffffff" + }; + + #endregion + + #region Character definitions + + public const char ARRAY_END_SYMBOL = ']'; + public const char ITEM_SEPARATOR = ','; + public const char ARRAY_START_SYMBOL = '['; + public const char BASIC_STRING_SYMBOL = '\"'; + public const char COMMENT_SYMBOL = '#'; + public const char ESCAPE_SYMBOL = '\\'; + public const char KEY_VALUE_SEPARATOR = '='; + public const char NEWLINE_CARRIAGE_RETURN_CHARACTER = '\r'; + public const char NEWLINE_CHARACTER = '\n'; + public const char SUBKEY_SEPARATOR = '.'; + public const char TABLE_END_SYMBOL = ']'; + public const char TABLE_START_SYMBOL = '['; + public const char INLINE_TABLE_START_SYMBOL = '{'; + public const char INLINE_TABLE_END_SYMBOL = '}'; + public const char LITERAL_STRING_SYMBOL = '\''; + public const char INT_NUMBER_SEPARATOR = '_'; + + public static readonly char[] NewLineCharacters = { NEWLINE_CHARACTER, NEWLINE_CARRIAGE_RETURN_CHARACTER }; + + public static bool IsQuoted(char c) => c is BASIC_STRING_SYMBOL or LITERAL_STRING_SYMBOL; + + public static bool IsWhiteSpace(char c) => c is ' ' or '\t'; + + public static bool IsNewLine(char c) => c is NEWLINE_CHARACTER or NEWLINE_CARRIAGE_RETURN_CHARACTER; + + public static bool IsLineBreak(char c) => c == NEWLINE_CHARACTER; + + public static bool IsEmptySpace(char c) => IsWhiteSpace(c) || IsNewLine(c); + + public static bool IsBareKey(char c) => + c is >= 'A' and <= 'Z' or >= 'a' and <= 'z' or >= '0' and <= '9' or '_' or '-'; + + public static bool MustBeEscaped(char c, bool allowNewLines = false) + { + var result = c is (>= '\u0000' and <= '\u0008') or '\u000b' or '\u000c' or (>= '\u000e' and <= '\u001f') or '\u007f'; + if (!allowNewLines) + result |= c is >= '\u000a' and <= '\u000e'; + return result; + } + + public static bool IsValueSeparator(char c) => + c is ITEM_SEPARATOR or ARRAY_END_SYMBOL or INLINE_TABLE_END_SYMBOL; + + #endregion + } + + internal static class StringUtils + { + public static string AsKey(this string key) + { + var quote = key == string.Empty || key.Any(c => !TomlSyntax.IsBareKey(c)); + return !quote ? key : $"{TomlSyntax.BASIC_STRING_SYMBOL}{key.Escape()}{TomlSyntax.BASIC_STRING_SYMBOL}"; + } + + public static string Join(this string self, IEnumerable subItems) + { + var sb = new StringBuilder(); + var first = true; + + foreach (var subItem in subItems) + { + if (!first) sb.Append(self); + first = false; + sb.Append(subItem); + } + + return sb.ToString(); + } + + public delegate bool TryDateParseDelegate(string s, string format, IFormatProvider ci, DateTimeStyles dts, out T dt); + + public static bool TryParseDateTime(string s, + string[] formats, + DateTimeStyles styles, + TryDateParseDelegate parser, + out T dateTime, + out int parsedFormat) + { + parsedFormat = 0; + dateTime = default; + for (var i = 0; i < formats.Length; i++) + { + var format = formats[i]; + if (!parser(s, format, CultureInfo.InvariantCulture, styles, out dateTime)) continue; + parsedFormat = i; + return true; + } + + return false; + } + + public static void AsComment(this string self, TextWriter tw) + { + foreach (var line in self.Split(TomlSyntax.NEWLINE_CHARACTER)) + tw.WriteLine($"{TomlSyntax.COMMENT_SYMBOL} {line.Trim()}"); + } + + public static string RemoveAll(this string txt, char toRemove) + { + var sb = new StringBuilder(txt.Length); + foreach (var c in txt.Where(c => c != toRemove)) + sb.Append(c); + return sb.ToString(); + } + + public static string Escape(this string txt, bool escapeNewlines = true) + { + var stringBuilder = new StringBuilder(txt.Length + 2); + for (var i = 0; i < txt.Length; i++) + { + var c = txt[i]; + + static string CodePoint(string txt, ref int i, char c) => char.IsSurrogatePair(txt, i) + ? $"\\U{char.ConvertToUtf32(txt, i++):X8}" + : $"\\u{(ushort)c:X4}"; + + stringBuilder.Append(c switch + { + '\b' => @"\b", + '\t' => @"\t", + '\n' when escapeNewlines => @"\n", + '\f' => @"\f", + '\r' when escapeNewlines => @"\r", + '\\' => @"\\", + '\"' => @"\""", + var _ when TomlSyntax.MustBeEscaped(c, !escapeNewlines) || TOML.ForceASCII && c > sbyte.MaxValue => + CodePoint(txt, ref i, c), + var _ => c + }); + } + + return stringBuilder.ToString(); + } + + public static bool TryUnescape(this string txt, out string unescaped, out Exception exception) + { + try + { + exception = null; + unescaped = txt.Unescape(); + return true; + } + catch (Exception e) + { + exception = e; + unescaped = null; + return false; + } + } + + public static string Unescape(this string txt) + { + if (string.IsNullOrEmpty(txt)) return txt; + var stringBuilder = new StringBuilder(txt.Length); + for (var i = 0; i < txt.Length;) + { + var num = txt.IndexOf('\\', i); + var next = num + 1; + if (num < 0 || num == txt.Length - 1) num = txt.Length; + stringBuilder.Append(txt, i, num - i); + if (num >= txt.Length) break; + var c = txt[next]; + + static string CodePoint(int next, string txt, ref int num, int size) + { + if (next + size >= txt.Length) throw new Exception("Undefined escape sequence!"); + num += size; + return char.ConvertFromUtf32(Convert.ToInt32(txt.Substring(next + 1, size), 16)); + } + + stringBuilder.Append(c switch + { + 'b' => "\b", + 't' => "\t", + 'n' => "\n", + 'f' => "\f", + 'r' => "\r", + '\'' => "\'", + '\"' => "\"", + '\\' => "\\", + 'u' => CodePoint(next, txt, ref num, 4), + 'U' => CodePoint(next, txt, ref num, 8), + var _ => throw new Exception("Undefined escape sequence!") + }); + i = num + 2; + } + + return stringBuilder.ToString(); + } + } + + #endregion +} diff --git a/Packages/MCPForUnity/Editor/External/Tommy.cs.meta b/Packages/MCPForUnity/Editor/External/Tommy.cs.meta new file mode 100644 index 00000000..efcb8ff8 --- /dev/null +++ b/Packages/MCPForUnity/Editor/External/Tommy.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ea652131dcdaa44ca8cb35cd1191be3f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Helpers.meta b/Packages/MCPForUnity/Editor/Helpers.meta new file mode 100644 index 00000000..c57a3420 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 94cb070dc5e15024da86150b27699ca0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Helpers/AssetPathUtility.cs b/Packages/MCPForUnity/Editor/Helpers/AssetPathUtility.cs new file mode 100644 index 00000000..69c017ef --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/AssetPathUtility.cs @@ -0,0 +1,430 @@ +using System; +using System.IO; +using MCPForUnity.Editor.Constants; +using MCPForUnity.Editor.Services; +using Newtonsoft.Json.Linq; +using UnityEditor; +using UnityEngine; +using PackageInfo = UnityEditor.PackageManager.PackageInfo; + +namespace MCPForUnity.Editor.Helpers +{ + /// + /// Provides common utility methods for working with Unity asset paths. + /// + public static class AssetPathUtility + { + /// + /// Normalizes path separators to forward slashes without modifying the path structure. + /// Use this for non-asset paths (e.g., file system paths, relative directories). + /// + public static string NormalizeSeparators(string path) + { + if (string.IsNullOrEmpty(path)) + return path; + return path.Replace('\\', '/'); + } + + /// + /// Normalizes a Unity asset path by ensuring forward slashes are used and that it is rooted under "Assets/". + /// Also protects against path traversal attacks using "../" sequences. + /// + public static string SanitizeAssetPath(string path) + { + if (string.IsNullOrEmpty(path)) + { + return path; + } + + path = NormalizeSeparators(path); + + // Check for path traversal sequences + if (path.Contains("..")) + { + McpLog.Warn($"[AssetPathUtility] Path contains potential traversal sequence: '{path}'"); + return null; + } + + // Ensure path starts with Assets/ + if (!path.StartsWith("Assets/", StringComparison.OrdinalIgnoreCase)) + { + return "Assets/" + path.TrimStart('/'); + } + + return path; + } + + /// + /// Checks if a given asset path is valid and safe (no traversal, within Assets folder). + /// + /// True if the path is valid, false otherwise. + public static bool IsValidAssetPath(string path) + { + if (string.IsNullOrEmpty(path)) + { + return false; + } + + // Normalize for comparison + string normalized = NormalizeSeparators(path); + + // Must start with Assets/ + if (!normalized.StartsWith("Assets/", StringComparison.OrdinalIgnoreCase)) + { + return false; + } + + // Must not contain traversal sequences + if (normalized.Contains("..")) + { + return false; + } + + // Must not contain invalid path characters + char[] invalidChars = { ':', '*', '?', '"', '<', '>', '|' }; + foreach (char c in invalidChars) + { + if (normalized.IndexOf(c) >= 0) + { + return false; + } + } + + return true; + } + + /// + /// Gets the MCP for Unity package root path. + /// Works for registry Package Manager, local Package Manager, and Asset Store installations. + /// + /// The package root path (virtual for PM, absolute for Asset Store), or null if not found + public static string GetMcpPackageRootPath() + { + try + { + // Try Package Manager first (registry and local installs) + var packageInfo = PackageInfo.FindForAssembly(typeof(AssetPathUtility).Assembly); + if (packageInfo != null && !string.IsNullOrEmpty(packageInfo.assetPath)) + { + return packageInfo.assetPath; + } + + // Fallback to AssetDatabase for Asset Store installs (Assets/MCPForUnity) + string[] guids = AssetDatabase.FindAssets($"t:Script {nameof(AssetPathUtility)}"); + + if (guids.Length == 0) + { + McpLog.Warn("Could not find AssetPathUtility script in AssetDatabase"); + return null; + } + + string scriptPath = AssetDatabase.GUIDToAssetPath(guids[0]); + + // Script is at: {packageRoot}/Editor/Helpers/AssetPathUtility.cs + // Extract {packageRoot} + int editorIndex = scriptPath.IndexOf("/Editor/", StringComparison.Ordinal); + + if (editorIndex >= 0) + { + return scriptPath.Substring(0, editorIndex); + } + + McpLog.Warn($"Could not determine package root from script path: {scriptPath}"); + return null; + } + catch (Exception ex) + { + McpLog.Error($"Failed to get package root path: {ex.Message}"); + return null; + } + } + + /// + /// Reads and parses the package.json file for MCP for Unity. + /// Handles both Package Manager (registry/local) and Asset Store installations. + /// + /// JObject containing package.json data, or null if not found or parse failed + public static JObject GetPackageJson() + { + try + { + string packageRoot = GetMcpPackageRootPath(); + if (string.IsNullOrEmpty(packageRoot)) + { + return null; + } + + string packageJsonPath = Path.Combine(packageRoot, "package.json"); + + // Convert virtual asset path to file system path + if (packageRoot.StartsWith("Packages/", StringComparison.OrdinalIgnoreCase)) + { + // Package Manager install - must use PackageInfo.resolvedPath + // Virtual paths like "Packages/..." don't work with File.Exists() + // Registry packages live in Library/PackageCache/package@version/ + var packageInfo = PackageInfo.FindForAssembly(typeof(AssetPathUtility).Assembly); + if (packageInfo != null && !string.IsNullOrEmpty(packageInfo.resolvedPath)) + { + packageJsonPath = Path.Combine(packageInfo.resolvedPath, "package.json"); + } + else + { + McpLog.Warn("Could not resolve Package Manager path for package.json"); + return null; + } + } + else if (packageRoot.StartsWith("Assets/", StringComparison.OrdinalIgnoreCase)) + { + // Asset Store install - convert to absolute file system path + // Application.dataPath is the absolute path to the Assets folder + string relativePath = packageRoot.Substring("Assets/".Length); + packageJsonPath = Path.Combine(Application.dataPath, relativePath, "package.json"); + } + + if (!File.Exists(packageJsonPath)) + { + McpLog.Warn($"package.json not found at: {packageJsonPath}"); + return null; + } + + string json = File.ReadAllText(packageJsonPath); + return JObject.Parse(json); + } + catch (Exception ex) + { + McpLog.Warn($"Failed to read or parse package.json: {ex.Message}"); + return null; + } + } + + /// + /// Gets the package source for the MCP server (used with uvx --from). + /// Checks for EditorPrefs override first (supports git URLs, file:// paths, etc.), + /// then falls back to PyPI package reference. + /// + /// Package source string for uvx --from argument + public static string GetMcpServerPackageSource() + { + // Check for override first (supports git URLs, file:// paths, local paths) + string sourceOverride = EditorPrefs.GetString(EditorPrefKeys.GitUrlOverride, ""); + if (!string.IsNullOrEmpty(sourceOverride)) + { + return sourceOverride; + } + + // Default to PyPI package (avoids Windows long path issues with git clone) + string version = GetPackageVersion(); + if (version == "unknown") + { + // Fall back to latest PyPI version so configs remain valid in test scenarios + return "mcpforunityserver"; + } + + return $"mcpforunityserver=={version}"; + } + + /// + /// Deprecated: Use GetMcpServerPackageSource() instead. + /// Kept for backwards compatibility. + /// + [System.Obsolete("Use GetMcpServerPackageSource() instead")] + public static string GetMcpServerGitUrl() => GetMcpServerPackageSource(); + + /// + /// Gets structured uvx command parts for different client configurations + /// + /// Tuple containing (uvxPath, fromUrl, packageName) + public static (string uvxPath, string fromUrl, string packageName) GetUvxCommandParts() + { + string uvxPath = MCPServiceLocator.Paths.GetUvxPath(); + string fromUrl = GetMcpServerPackageSource(); + string packageName = "mcp-for-unity"; + + return (uvxPath, fromUrl, packageName); + } + + /// + /// Builds the uvx package source arguments for the MCP server. + /// Handles beta server mode (prerelease from PyPI) vs standard mode (pinned version or override). + /// Centralizes the prerelease logic to avoid duplication between HTTP and stdio transports. + /// Priority: explicit fromUrl override > beta server mode > default package. + /// + /// Whether to quote the --from path (needed for command-line strings, not for arg lists) + /// The package source arguments (e.g., "--prerelease explicit --from mcpforunityserver>=0.0.0a0") + public static string GetBetaServerFromArgs(bool quoteFromPath = false) + { + // Explicit override (local path, git URL, etc.) always wins + string fromUrl = GetMcpServerPackageSource(); + string overrideUrl = EditorPrefs.GetString(EditorPrefKeys.GitUrlOverride, ""); + if (!string.IsNullOrEmpty(overrideUrl)) + { + return $"--from {fromUrl}"; + } + + // Beta server mode: use prerelease from PyPI + bool useBetaServer = EditorPrefs.GetBool(EditorPrefKeys.UseBetaServer, true); + if (useBetaServer) + { + // Use --prerelease explicit with version specifier to only get prereleases of our package, + // not of dependencies (which can be broken on PyPI). + string fromValue = quoteFromPath ? "\"mcpforunityserver>=0.0.0a0\"" : "mcpforunityserver>=0.0.0a0"; + return $"--prerelease explicit --from {fromValue}"; + } + + // Standard mode: use pinned version from package.json + if (!string.IsNullOrEmpty(fromUrl)) + { + return $"--from {fromUrl}"; + } + + return string.Empty; + } + + /// + /// Builds the uvx package source arguments as a list (for JSON config builders). + /// Priority: explicit fromUrl override > beta server mode > default package. + /// + /// List of arguments to add to uvx command + public static System.Collections.Generic.IList GetBetaServerFromArgsList() + { + var args = new System.Collections.Generic.List(); + + // Explicit override (local path, git URL, etc.) always wins + string fromUrl = GetMcpServerPackageSource(); + string overrideUrl = EditorPrefs.GetString(EditorPrefKeys.GitUrlOverride, ""); + if (!string.IsNullOrEmpty(overrideUrl)) + { + args.Add("--from"); + args.Add(fromUrl); + return args; + } + + // Beta server mode: use prerelease from PyPI + bool useBetaServer = EditorPrefs.GetBool(EditorPrefKeys.UseBetaServer, true); + if (useBetaServer) + { + args.Add("--prerelease"); + args.Add("explicit"); + args.Add("--from"); + args.Add("mcpforunityserver>=0.0.0a0"); + return args; + } + + // Standard mode: use pinned version from package.json + if (!string.IsNullOrEmpty(fromUrl)) + { + args.Add("--from"); + args.Add(fromUrl); + } + + return args; + } + + /// + /// Determines whether uvx should use --no-cache --refresh flags. + /// Returns true if DevModeForceServerRefresh is enabled OR if the server URL is a local path. + /// Local paths (file:// or absolute) always need fresh builds to avoid stale uvx cache. + /// Note: --reinstall is not supported by uvx and will cause a warning. + /// + public static bool ShouldForceUvxRefresh() + { + bool devForceRefresh = false; + try { devForceRefresh = EditorPrefs.GetBool(EditorPrefKeys.DevModeForceServerRefresh, false); } catch { } + + if (devForceRefresh) + return true; + + // Auto-enable force refresh when using a local path override. + return IsLocalServerPath(); + } + + /// + /// Returns true if the server URL is a local path (file:// or absolute path). + /// + public static bool IsLocalServerPath() + { + string fromUrl = GetMcpServerPackageSource(); + if (string.IsNullOrEmpty(fromUrl)) + return false; + + // Check for file:// protocol or absolute local path + return fromUrl.StartsWith("file://", StringComparison.OrdinalIgnoreCase) || + System.IO.Path.IsPathRooted(fromUrl); + } + + /// + /// Gets the local server path if GitUrlOverride points to a local directory. + /// Returns null if not using a local path. + /// + public static string GetLocalServerPath() + { + if (!IsLocalServerPath()) + return null; + + string fromUrl = GetMcpServerPackageSource(); + if (fromUrl.StartsWith("file://", StringComparison.OrdinalIgnoreCase)) + { + // Strip file:// prefix + fromUrl = fromUrl.Substring(7); + } + + return fromUrl; + } + + /// + /// Cleans stale Python build artifacts from the local server path. + /// This is necessary because Python's build system doesn't remove deleted files from build/, + /// and the auto-discovery mechanism will pick up old .py files causing ghost resources/tools. + /// + /// True if cleaning was performed, false if not applicable or failed. + public static bool CleanLocalServerBuildArtifacts() + { + string localPath = GetLocalServerPath(); + if (string.IsNullOrEmpty(localPath)) + return false; + + // Clean the build/ directory which can contain stale .py files + string buildPath = System.IO.Path.Combine(localPath, "build"); + if (System.IO.Directory.Exists(buildPath)) + { + try + { + System.IO.Directory.Delete(buildPath, recursive: true); + McpLog.Info($"Cleaned stale build artifacts from: {buildPath}"); + return true; + } + catch (Exception ex) + { + McpLog.Warn($"Failed to clean build artifacts: {ex.Message}"); + return false; + } + } + + return false; + } + + /// + /// Gets the package version from package.json + /// + /// Version string, or "unknown" if not found + public static string GetPackageVersion() + { + try + { + var packageJson = GetPackageJson(); + if (packageJson == null) + { + return "unknown"; + } + + string version = packageJson["version"]?.ToString(); + return string.IsNullOrEmpty(version) ? "unknown" : version; + } + catch (Exception ex) + { + McpLog.Warn($"Failed to get package version: {ex.Message}"); + return "unknown"; + } + } + } +} diff --git a/Packages/MCPForUnity/Editor/Helpers/AssetPathUtility.cs.meta b/Packages/MCPForUnity/Editor/Helpers/AssetPathUtility.cs.meta new file mode 100644 index 00000000..bd6a0c70 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/AssetPathUtility.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1d42f5b5ea5d4d43ad1a771e14bda2a0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Helpers/CodexConfigHelper.cs b/Packages/MCPForUnity/Editor/Helpers/CodexConfigHelper.cs new file mode 100644 index 00000000..a68d47ed --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/CodexConfigHelper.cs @@ -0,0 +1,319 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using MCPForUnity.Editor.Constants; +using MCPForUnity.Editor.Services; +using MCPForUnity.External.Tommy; +using UnityEditor; +using UnityEngine; + +namespace MCPForUnity.Editor.Helpers +{ + /// + /// Codex CLI specific configuration helpers. Handles TOML snippet + /// generation and lightweight parsing so Codex can join the auto-setup + /// flow alongside JSON-based clients. + /// + public static class CodexConfigHelper + { + private static void AddDevModeArgs(TomlArray args) + { + if (args == null) return; + // Use central helper that checks both DevModeForceServerRefresh AND local path detection. + // Note: --reinstall is not supported by uvx, use --no-cache --refresh instead + if (!AssetPathUtility.ShouldForceUvxRefresh()) return; + args.Add(new TomlString { Value = "--no-cache" }); + args.Add(new TomlString { Value = "--refresh" }); + } + + public static string BuildCodexServerBlock(string uvPath) + { + var table = new TomlTable(); + var mcpServers = new TomlTable(); + var unityMCP = new TomlTable(); + + // Check transport preference + bool useHttpTransport = EditorPrefs.GetBool(MCPForUnity.Editor.Constants.EditorPrefKeys.UseHttpTransport, true); + + if (useHttpTransport) + { + // HTTP mode: Use url field + string httpUrl = HttpEndpointUtility.GetMcpRpcUrl(); + unityMCP["url"] = new TomlString { Value = httpUrl }; + + // Enable Codex's Rust MCP client for HTTP/SSE transport + EnsureRmcpClientFeature(table); + } + else + { + // Stdio mode: Use command and args + var (uvxPath, _, packageName) = AssetPathUtility.GetUvxCommandParts(); + + unityMCP["command"] = uvxPath; + + var args = new TomlArray(); + AddDevModeArgs(args); + // Use centralized helper for beta server / prerelease args + foreach (var arg in AssetPathUtility.GetBetaServerFromArgsList()) + { + args.Add(new TomlString { Value = arg }); + } + args.Add(new TomlString { Value = packageName }); + args.Add(new TomlString { Value = "--transport" }); + args.Add(new TomlString { Value = "stdio" }); + + unityMCP["args"] = args; + + // Add Windows-specific environment configuration for stdio mode + var platformService = MCPServiceLocator.Platform; + if (platformService.IsWindows()) + { + var envTable = new TomlTable { IsInline = true }; + envTable["SystemRoot"] = new TomlString { Value = platformService.GetSystemRoot() }; + unityMCP["env"] = envTable; + } + + // Allow extra time for uvx to download packages on first run + unityMCP["startup_timeout_sec"] = new TomlInteger { Value = 60 }; + } + + mcpServers["unityMCP"] = unityMCP; + table["mcp_servers"] = mcpServers; + + using var writer = new StringWriter(); + table.WriteTo(writer); + return writer.ToString(); + } + + public static string UpsertCodexServerBlock(string existingToml, string uvPath) + { + // Parse existing TOML or create new root table + var root = TryParseToml(existingToml) ?? new TomlTable(); + + bool useHttpTransport = EditorPrefs.GetBool(MCPForUnity.Editor.Constants.EditorPrefKeys.UseHttpTransport, true); + + // Ensure mcp_servers table exists + if (!root.TryGetNode("mcp_servers", out var mcpServersNode) || !(mcpServersNode is TomlTable)) + { + root["mcp_servers"] = new TomlTable(); + } + var mcpServers = root["mcp_servers"] as TomlTable; + + // Create or update unityMCP table + mcpServers["unityMCP"] = CreateUnityMcpTable(uvPath); + + if (useHttpTransport) + { + EnsureRmcpClientFeature(root); + } + + // Serialize back to TOML + using var writer = new StringWriter(); + root.WriteTo(writer); + return writer.ToString(); + } + + public static bool TryParseCodexServer(string toml, out string command, out string[] args) + { + return TryParseCodexServer(toml, out command, out args, out _); + } + + public static bool TryParseCodexServer(string toml, out string command, out string[] args, out string url) + { + command = null; + args = null; + url = null; + + var root = TryParseToml(toml); + if (root == null) return false; + + if (!TryGetTable(root, "mcp_servers", out var servers) + && !TryGetTable(root, "mcpServers", out servers)) + { + return false; + } + + if (!TryGetTable(servers, "unityMCP", out var unity)) + { + return false; + } + + // Check for HTTP mode (url field) + url = GetTomlString(unity, "url"); + if (!string.IsNullOrEmpty(url)) + { + // HTTP mode detected - return true with url + return true; + } + + // Check for stdio mode (command + args) + command = GetTomlString(unity, "command"); + args = GetTomlStringArray(unity, "args"); + + return !string.IsNullOrEmpty(command) && args != null; + } + + /// + /// Safely parses TOML string, returning null on failure + /// + private static TomlTable TryParseToml(string toml) + { + if (string.IsNullOrWhiteSpace(toml)) return null; + + try + { + using var reader = new StringReader(toml); + return TOML.Parse(reader); + } + catch (TomlParseException) + { + return null; + } + catch (TomlSyntaxException) + { + return null; + } + catch (FormatException) + { + return null; + } + } + + /// + /// Creates a TomlTable for the unityMCP server configuration + /// + /// Path to uv executable (used as fallback if uvx is not available) + private static TomlTable CreateUnityMcpTable(string uvPath) + { + var unityMCP = new TomlTable(); + + // Check transport preference + bool useHttpTransport = EditorPrefs.GetBool(MCPForUnity.Editor.Constants.EditorPrefKeys.UseHttpTransport, true); + + if (useHttpTransport) + { + // HTTP mode: Use url field + string httpUrl = HttpEndpointUtility.GetMcpRpcUrl(); + unityMCP["url"] = new TomlString { Value = httpUrl }; + } + else + { + // Stdio mode: Use command and args + var (uvxPath, _, packageName) = AssetPathUtility.GetUvxCommandParts(); + + unityMCP["command"] = new TomlString { Value = uvxPath }; + + var argsArray = new TomlArray(); + AddDevModeArgs(argsArray); + // Use centralized helper for beta server / prerelease args + foreach (var arg in AssetPathUtility.GetBetaServerFromArgsList()) + { + argsArray.Add(new TomlString { Value = arg }); + } + argsArray.Add(new TomlString { Value = packageName }); + argsArray.Add(new TomlString { Value = "--transport" }); + argsArray.Add(new TomlString { Value = "stdio" }); + unityMCP["args"] = argsArray; + + // Add Windows-specific environment configuration for stdio mode + var platformService = MCPServiceLocator.Platform; + if (platformService.IsWindows()) + { + var envTable = new TomlTable { IsInline = true }; + envTable["SystemRoot"] = new TomlString { Value = platformService.GetSystemRoot() }; + unityMCP["env"] = envTable; + } + + // Allow extra time for uvx to download packages on first run + unityMCP["startup_timeout_sec"] = new TomlInteger { Value = 60 }; + } + + return unityMCP; + } + + /// + /// Ensures the features table contains the rmcp_client flag for HTTP/SSE transport. + /// + private static void EnsureRmcpClientFeature(TomlTable root) + { + if (root == null) return; + + if (!root.TryGetNode("features", out var featuresNode) || featuresNode is not TomlTable features) + { + features = new TomlTable(); + root["features"] = features; + } + + features["rmcp_client"] = new TomlBoolean { Value = true }; + } + + private static bool TryGetTable(TomlTable parent, string key, out TomlTable table) + { + table = null; + if (parent == null) return false; + + if (parent.TryGetNode(key, out var node)) + { + if (node is TomlTable tbl) + { + table = tbl; + return true; + } + + if (node is TomlArray array) + { + var firstTable = array.Children.OfType().FirstOrDefault(); + if (firstTable != null) + { + table = firstTable; + return true; + } + } + } + + return false; + } + + private static string GetTomlString(TomlTable table, string key) + { + if (table != null && table.TryGetNode(key, out var node)) + { + if (node is TomlString str) return str.Value; + if (node.HasValue) return node.ToString(); + } + return null; + } + + private static string[] GetTomlStringArray(TomlTable table, string key) + { + if (table == null) return null; + if (!table.TryGetNode(key, out var node)) return null; + + if (node is TomlArray array) + { + List values = new List(); + foreach (TomlNode element in array.Children) + { + if (element is TomlString str) + { + values.Add(str.Value); + } + else if (element.HasValue) + { + values.Add(element.ToString()); + } + } + + return values.Count > 0 ? values.ToArray() : Array.Empty(); + } + + if (node is TomlString single) + { + return new[] { single.Value }; + } + + return null; + } + } +} diff --git a/Packages/MCPForUnity/Editor/Helpers/CodexConfigHelper.cs.meta b/Packages/MCPForUnity/Editor/Helpers/CodexConfigHelper.cs.meta new file mode 100644 index 00000000..581a4474 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/CodexConfigHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b3e68082ffc0b4cd39d3747673a4cc22 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Helpers/ComponentOps.cs b/Packages/MCPForUnity/Editor/Helpers/ComponentOps.cs new file mode 100644 index 00000000..90f1e7ad --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/ComponentOps.cs @@ -0,0 +1,349 @@ +using System; +using System.Collections.Generic; +using System.Reflection; +using Newtonsoft.Json.Linq; +using UnityEditor; +using UnityEngine; + +namespace MCPForUnity.Editor.Helpers +{ + /// + /// Low-level component operations extracted from ManageGameObject and ManageComponents. + /// Provides pure C# operations without JSON parsing or response formatting. + /// + public static class ComponentOps + { + /// + /// Adds a component to a GameObject with Undo support. + /// + /// The target GameObject + /// The type of component to add + /// Error message if operation fails + /// The added component, or null if failed + public static Component AddComponent(GameObject target, Type componentType, out string error) + { + error = null; + + if (target == null) + { + error = "Target GameObject is null."; + return null; + } + + if (componentType == null || !typeof(Component).IsAssignableFrom(componentType)) + { + error = $"Type '{componentType?.Name ?? "null"}' is not a valid Component type."; + return null; + } + + // Prevent adding duplicate Transform + if (componentType == typeof(Transform)) + { + error = "Cannot add another Transform component."; + return null; + } + + // Check for 2D/3D physics conflicts + string conflictError = CheckPhysicsConflict(target, componentType); + if (conflictError != null) + { + error = conflictError; + return null; + } + + try + { + Component newComponent = Undo.AddComponent(target, componentType); + if (newComponent == null) + { + error = $"Failed to add component '{componentType.Name}' to '{target.name}'. It might be disallowed."; + return null; + } + + // Apply default values for specific component types + ApplyDefaultValues(newComponent); + + return newComponent; + } + catch (Exception ex) + { + error = $"Error adding component '{componentType.Name}': {ex.Message}"; + return null; + } + } + + /// + /// Removes a component from a GameObject with Undo support. + /// + /// The target GameObject + /// The type of component to remove + /// Error message if operation fails + /// True if component was removed successfully + public static bool RemoveComponent(GameObject target, Type componentType, out string error) + { + error = null; + + if (target == null) + { + error = "Target GameObject is null."; + return false; + } + + if (componentType == null) + { + error = "Component type is null."; + return false; + } + + // Prevent removing Transform + if (componentType == typeof(Transform)) + { + error = "Cannot remove Transform component."; + return false; + } + + Component component = target.GetComponent(componentType); + if (component == null) + { + error = $"Component '{componentType.Name}' not found on '{target.name}'."; + return false; + } + + try + { + Undo.DestroyObjectImmediate(component); + return true; + } + catch (Exception ex) + { + error = $"Error removing component '{componentType.Name}': {ex.Message}"; + return false; + } + } + + /// + /// Sets a property value on a component using reflection. + /// + /// The target component + /// The property or field name + /// The value to set (JToken) + /// Error message if operation fails + /// True if property was set successfully + public static bool SetProperty(Component component, string propertyName, JToken value, out string error) + { + error = null; + + if (component == null) + { + error = "Component is null."; + return false; + } + + if (string.IsNullOrEmpty(propertyName)) + { + error = "Property name is null or empty."; + return false; + } + + Type type = component.GetType(); + BindingFlags flags = BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase; + string normalizedName = ParamCoercion.NormalizePropertyName(propertyName); + + // Try property first - check both original and normalized names for backwards compatibility + PropertyInfo propInfo = type.GetProperty(propertyName, flags) + ?? type.GetProperty(normalizedName, flags); + if (propInfo != null && propInfo.CanWrite) + { + try + { + object convertedValue = PropertyConversion.ConvertToType(value, propInfo.PropertyType); + // Detect conversion failure: null result when input wasn't null + if (convertedValue == null && value.Type != JTokenType.Null) + { + error = $"Failed to convert value for property '{propertyName}' to type '{propInfo.PropertyType.Name}'."; + return false; + } + propInfo.SetValue(component, convertedValue); + return true; + } + catch (Exception ex) + { + error = $"Failed to set property '{propertyName}': {ex.Message}"; + return false; + } + } + + // Try field - check both original and normalized names for backwards compatibility + FieldInfo fieldInfo = type.GetField(propertyName, flags) + ?? type.GetField(normalizedName, flags); + if (fieldInfo != null && !fieldInfo.IsInitOnly) + { + try + { + object convertedValue = PropertyConversion.ConvertToType(value, fieldInfo.FieldType); + // Detect conversion failure: null result when input wasn't null + if (convertedValue == null && value.Type != JTokenType.Null) + { + error = $"Failed to convert value for field '{propertyName}' to type '{fieldInfo.FieldType.Name}'."; + return false; + } + fieldInfo.SetValue(component, convertedValue); + return true; + } + catch (Exception ex) + { + error = $"Failed to set field '{propertyName}': {ex.Message}"; + return false; + } + } + + // Try non-public serialized fields - traverse inheritance hierarchy + // Type.GetField() with NonPublic only finds fields declared directly on that type, + // so we need to walk up the inheritance chain manually + fieldInfo = FindSerializedFieldInHierarchy(type, propertyName) + ?? FindSerializedFieldInHierarchy(type, normalizedName); + if (fieldInfo != null) + { + try + { + object convertedValue = PropertyConversion.ConvertToType(value, fieldInfo.FieldType); + // Detect conversion failure: null result when input wasn't null + if (convertedValue == null && value.Type != JTokenType.Null) + { + error = $"Failed to convert value for serialized field '{propertyName}' to type '{fieldInfo.FieldType.Name}'."; + return false; + } + fieldInfo.SetValue(component, convertedValue); + return true; + } + catch (Exception ex) + { + error = $"Failed to set serialized field '{propertyName}': {ex.Message}"; + return false; + } + } + + error = $"Property or field '{propertyName}' not found on component '{type.Name}'."; + return false; + } + + /// + /// Gets all public properties and fields from a component type. + /// + public static List GetAccessibleMembers(Type componentType) + { + var members = new List(); + if (componentType == null) return members; + + BindingFlags flags = BindingFlags.Public | BindingFlags.Instance; + + foreach (var prop in componentType.GetProperties(flags)) + { + if (prop.CanWrite && prop.GetSetMethod() != null) + { + members.Add(prop.Name); + } + } + + foreach (var field in componentType.GetFields(flags)) + { + if (!field.IsInitOnly) + { + members.Add(field.Name); + } + } + + // Include private [SerializeField] fields - traverse inheritance hierarchy + // Type.GetFields with NonPublic only returns fields declared directly on that type, + // so we need to walk up the chain to find inherited private serialized fields + var seenFieldNames = new HashSet(members); // Avoid duplicates with public fields + Type currentType = componentType; + while (currentType != null && currentType != typeof(object)) + { + foreach (var field in currentType.GetFields(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)) + { + if (field.GetCustomAttribute() != null && !seenFieldNames.Contains(field.Name)) + { + members.Add(field.Name); + seenFieldNames.Add(field.Name); + } + } + currentType = currentType.BaseType; + } + + members.Sort(); + return members; + } + + // --- Private Helpers --- + + /// + /// Searches for a non-public [SerializeField] field through the entire inheritance hierarchy. + /// Type.GetField() with NonPublic only returns fields declared directly on that type, + /// so this method walks up the chain to find inherited private serialized fields. + /// + private static FieldInfo FindSerializedFieldInHierarchy(Type type, string fieldName) + { + if (type == null || string.IsNullOrEmpty(fieldName)) + return null; + + BindingFlags privateFlags = BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly; + Type currentType = type; + + // Walk up the inheritance chain + while (currentType != null && currentType != typeof(object)) + { + // Search for the field on this specific type (case-insensitive) + foreach (var field in currentType.GetFields(privateFlags)) + { + if (string.Equals(field.Name, fieldName, StringComparison.OrdinalIgnoreCase) && + field.GetCustomAttribute() != null) + { + return field; + } + } + currentType = currentType.BaseType; + } + + return null; + } + + private static string CheckPhysicsConflict(GameObject target, Type componentType) + { + bool isAdding2DPhysics = + typeof(Rigidbody2D).IsAssignableFrom(componentType) || + typeof(Collider2D).IsAssignableFrom(componentType); + + bool isAdding3DPhysics = + typeof(Rigidbody).IsAssignableFrom(componentType) || + typeof(Collider).IsAssignableFrom(componentType); + + if (isAdding2DPhysics) + { + if (target.GetComponent() != null || target.GetComponent() != null) + { + return $"Cannot add 2D physics component '{componentType.Name}' because the GameObject '{target.name}' already has a 3D Rigidbody or Collider."; + } + } + else if (isAdding3DPhysics) + { + if (target.GetComponent() != null || target.GetComponent() != null) + { + return $"Cannot add 3D physics component '{componentType.Name}' because the GameObject '{target.name}' already has a 2D Rigidbody or Collider."; + } + } + + return null; + } + + private static void ApplyDefaultValues(Component component) + { + // Default newly added Lights to Directional + if (component is Light light) + { + light.type = LightType.Directional; + } + } + } +} + diff --git a/Packages/MCPForUnity/Editor/Helpers/ComponentOps.cs.meta b/Packages/MCPForUnity/Editor/Helpers/ComponentOps.cs.meta new file mode 100644 index 00000000..e8872500 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/ComponentOps.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 13dead161bc4540eeb771961df437779 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Helpers/ConfigJsonBuilder.cs b/Packages/MCPForUnity/Editor/Helpers/ConfigJsonBuilder.cs new file mode 100644 index 00000000..938d33c2 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/ConfigJsonBuilder.cs @@ -0,0 +1,194 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using MCPForUnity.Editor.Constants; +using MCPForUnity.Editor.Services; +using MCPForUnity.Editor.Models; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using UnityEditor; +using UnityEngine; + +namespace MCPForUnity.Editor.Helpers +{ + public static class ConfigJsonBuilder + { + public static string BuildManualConfigJson(string uvPath, McpClient client) + { + var root = new JObject(); + bool isVSCode = client?.IsVsCodeLayout == true; + JObject container = isVSCode ? EnsureObject(root, "servers") : EnsureObject(root, "mcpServers"); + + var unity = new JObject(); + PopulateUnityNode(unity, uvPath, client, isVSCode); + + container["unityMCP"] = unity; + + return root.ToString(Formatting.Indented); + } + + public static JObject ApplyUnityServerToExistingConfig(JObject root, string uvPath, McpClient client) + { + if (root == null) root = new JObject(); + bool isVSCode = client?.IsVsCodeLayout == true; + JObject container = isVSCode ? EnsureObject(root, "servers") : EnsureObject(root, "mcpServers"); + JObject unity = container["unityMCP"] as JObject ?? new JObject(); + PopulateUnityNode(unity, uvPath, client, isVSCode); + + container["unityMCP"] = unity; + return root; + } + + /// + /// Centralized builder that applies all caveats consistently. + /// - Sets command/args with uvx and package version + /// - Ensures env exists + /// - Adds transport configuration (HTTP or stdio) + /// - Adds disabled:false for Windsurf/Kiro only when missing + /// + private static void PopulateUnityNode(JObject unity, string uvPath, McpClient client, bool isVSCode) + { + // Get transport preference (default to HTTP) + bool prefValue = EditorConfigurationCache.Instance.UseHttpTransport; + bool clientSupportsHttp = client?.SupportsHttpTransport != false; + bool useHttpTransport = clientSupportsHttp && prefValue; + string httpProperty = string.IsNullOrEmpty(client?.HttpUrlProperty) ? "url" : client.HttpUrlProperty; + var urlPropsToRemove = new HashSet(StringComparer.OrdinalIgnoreCase) { "url", "serverUrl" }; + urlPropsToRemove.Remove(httpProperty); + + if (useHttpTransport) + { + // HTTP mode: Use URL, no command + string httpUrl = HttpEndpointUtility.GetMcpRpcUrl(); + unity[httpProperty] = httpUrl; + + foreach (var prop in urlPropsToRemove) + { + if (unity[prop] != null) unity.Remove(prop); + } + + // Remove command/args if they exist from previous config + if (unity["command"] != null) unity.Remove("command"); + if (unity["args"] != null) unity.Remove("args"); + + // Only include API key header for remote-hosted mode + if (HttpEndpointUtility.IsRemoteScope()) + { + string apiKey = EditorPrefs.GetString(EditorPrefKeys.ApiKey, string.Empty); + if (!string.IsNullOrEmpty(apiKey)) + { + var headers = new JObject { [AuthConstants.ApiKeyHeader] = apiKey }; + unity["headers"] = headers; + } + else + { + if (unity["headers"] != null) unity.Remove("headers"); + } + } + else + { + // Local HTTP doesn't use API keys; remove any stale headers + if (unity["headers"] != null) unity.Remove("headers"); + } + + if (isVSCode) + { + unity["type"] = "http"; + } + // Also add type for Claude Code (uses mcpServers layout but needs type field) + else if (client?.name == "Claude Code") + { + unity["type"] = "http"; + } + } + else + { + // Stdio mode: Use uvx command + var (uvxPath, fromUrl, packageName) = AssetPathUtility.GetUvxCommandParts(); + + var toolArgs = BuildUvxArgs(fromUrl, packageName); + + unity["command"] = uvxPath; + unity["args"] = JArray.FromObject(toolArgs.ToArray()); + + // Remove url/serverUrl if they exist from previous config + if (unity["url"] != null) unity.Remove("url"); + if (unity["serverUrl"] != null) unity.Remove("serverUrl"); + + if (isVSCode) + { + unity["type"] = "stdio"; + } + } + + // Remove type for non-VSCode clients (except Claude Code which needs it) + if (!isVSCode && client?.name != "Claude Code" && unity["type"] != null) + { + unity.Remove("type"); + } + + bool requiresEnv = client?.EnsureEnvObject == true; + bool stripEnv = client?.StripEnvWhenNotRequired == true; + + if (requiresEnv) + { + if (unity["env"] == null) + { + unity["env"] = new JObject(); + } + } + else if (stripEnv && unity["env"] != null) + { + unity.Remove("env"); + } + + if (client?.DefaultUnityFields != null) + { + foreach (var kvp in client.DefaultUnityFields) + { + if (unity[kvp.Key] == null) + { + unity[kvp.Key] = kvp.Value != null ? JToken.FromObject(kvp.Value) : JValue.CreateNull(); + } + } + } + } + + private static JObject EnsureObject(JObject parent, string name) + { + if (parent[name] is JObject o) return o; + var created = new JObject(); + parent[name] = created; + return created; + } + + private static IList BuildUvxArgs(string fromUrl, string packageName) + { + // Dev mode: force a fresh install/resolution (avoids stale cached builds while iterating). + // `--no-cache` avoids reading from cache; `--refresh` ensures metadata is revalidated. + // Note: --reinstall is not supported by uvx and will cause a warning. + // Keep ordering consistent with other uvx builders: dev flags first, then --from , then package name. + var args = new List(); + + // Use central helper that checks both DevModeForceServerRefresh AND local path detection. + if (AssetPathUtility.ShouldForceUvxRefresh()) + { + args.Add("--no-cache"); + args.Add("--refresh"); + } + + // Use centralized helper for beta server / prerelease args + foreach (var arg in AssetPathUtility.GetBetaServerFromArgsList()) + { + args.Add(arg); + } + args.Add(packageName); + + args.Add("--transport"); + args.Add("stdio"); + + return args; + } + + } +} diff --git a/Packages/MCPForUnity/Editor/Helpers/ConfigJsonBuilder.cs.meta b/Packages/MCPForUnity/Editor/Helpers/ConfigJsonBuilder.cs.meta new file mode 100644 index 00000000..f574fde7 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/ConfigJsonBuilder.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5c07c3369f73943919d9e086a81d1dcc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Helpers/ExecPath.cs b/Packages/MCPForUnity/Editor/Helpers/ExecPath.cs new file mode 100644 index 00000000..3801a03a --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/ExecPath.cs @@ -0,0 +1,324 @@ +using System; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; +using MCPForUnity.Editor.Constants; +using UnityEditor; + +namespace MCPForUnity.Editor.Helpers +{ + internal static class ExecPath + { + private const string PrefClaude = EditorPrefKeys.ClaudeCliPathOverride; + + // Resolve Claude CLI absolute path. Pref → env → common locations → PATH. + internal static string ResolveClaude() + { + try + { + string pref = EditorPrefs.GetString(PrefClaude, string.Empty); + if (!string.IsNullOrEmpty(pref) && File.Exists(pref)) return pref; + } + catch { } + + string env = Environment.GetEnvironmentVariable("CLAUDE_CLI"); + if (!string.IsNullOrEmpty(env) && File.Exists(env)) return env; + + if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) + { + string home = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) ?? string.Empty; + string[] candidates = + { + "/opt/homebrew/bin/claude", + "/usr/local/bin/claude", + Path.Combine(home, ".local", "bin", "claude"), + }; + foreach (string c in candidates) { if (File.Exists(c)) return c; } + // Try NVM-installed claude under ~/.nvm/versions/node/*/bin/claude + string nvmClaude = ResolveClaudeFromNvm(home); + if (!string.IsNullOrEmpty(nvmClaude)) return nvmClaude; +#if UNITY_EDITOR_OSX || UNITY_EDITOR_LINUX + return Which("claude", "/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin"); +#else + return null; +#endif + } + + if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + { +#if UNITY_EDITOR_WIN + // Common npm global locations + string appData = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) ?? string.Empty; + string localAppData = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) ?? string.Empty; + string[] candidates = + { + // Prefer .cmd (most reliable from non-interactive processes) + Path.Combine(appData, "npm", "claude.cmd"), + Path.Combine(localAppData, "npm", "claude.cmd"), + // Fall back to PowerShell shim if only .ps1 is present + Path.Combine(appData, "npm", "claude.ps1"), + Path.Combine(localAppData, "npm", "claude.ps1"), + }; + foreach (string c in candidates) { if (File.Exists(c)) return c; } + string fromWhere = FindInPathWindows("claude.exe") ?? FindInPathWindows("claude.cmd") ?? FindInPathWindows("claude.ps1") ?? FindInPathWindows("claude"); + if (!string.IsNullOrEmpty(fromWhere)) return fromWhere; +#endif + return null; + } + + // Linux + { + string home = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) ?? string.Empty; + string[] candidates = + { + "/usr/local/bin/claude", + "/usr/bin/claude", + Path.Combine(home, ".local", "bin", "claude"), + }; + foreach (string c in candidates) { if (File.Exists(c)) return c; } + // Try NVM-installed claude under ~/.nvm/versions/node/*/bin/claude + string nvmClaude = ResolveClaudeFromNvm(home); + if (!string.IsNullOrEmpty(nvmClaude)) return nvmClaude; +#if UNITY_EDITOR_OSX || UNITY_EDITOR_LINUX + return Which("claude", "/usr/local/bin:/usr/bin:/bin"); +#else + return null; +#endif + } + } + + // Attempt to resolve claude from NVM-managed Node installations, choosing the newest version + private static string ResolveClaudeFromNvm(string home) + { + try + { + if (string.IsNullOrEmpty(home)) return null; + string nvmNodeDir = Path.Combine(home, ".nvm", "versions", "node"); + if (!Directory.Exists(nvmNodeDir)) return null; + + string bestPath = null; + Version bestVersion = null; + foreach (string versionDir in Directory.EnumerateDirectories(nvmNodeDir)) + { + string name = Path.GetFileName(versionDir); + if (string.IsNullOrEmpty(name)) continue; + if (name.StartsWith("v", StringComparison.OrdinalIgnoreCase)) + { + // Extract numeric portion: e.g., v18.19.0-nightly -> 18.19.0 + string versionStr = name.Substring(1); + int dashIndex = versionStr.IndexOf('-'); + if (dashIndex > 0) + { + versionStr = versionStr.Substring(0, dashIndex); + } + if (Version.TryParse(versionStr, out Version parsed)) + { + string candidate = Path.Combine(versionDir, "bin", "claude"); + if (File.Exists(candidate)) + { + if (bestVersion == null || parsed > bestVersion) + { + bestVersion = parsed; + bestPath = candidate; + } + } + } + } + } + return bestPath; + } + catch { return null; } + } + + // Explicitly set the Claude CLI absolute path override in EditorPrefs + internal static void SetClaudeCliPath(string absolutePath) + { + try + { + if (!string.IsNullOrEmpty(absolutePath) && File.Exists(absolutePath)) + { + EditorPrefs.SetString(PrefClaude, absolutePath); + } + } + catch { } + } + + // Clear any previously set Claude CLI override path + internal static void ClearClaudeCliPath() + { + try + { + if (EditorPrefs.HasKey(PrefClaude)) + { + EditorPrefs.DeleteKey(PrefClaude); + } + } + catch { } + } + + internal static bool TryRun( + string file, + string args, + string workingDir, + out string stdout, + out string stderr, + int timeoutMs = 15000, + string extraPathPrepend = null) + { + stdout = string.Empty; + stderr = string.Empty; + try + { + // Handle PowerShell scripts on Windows by invoking through powershell.exe + bool isPs1 = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) && + file.EndsWith(".ps1", StringComparison.OrdinalIgnoreCase); + + var psi = new ProcessStartInfo + { + FileName = isPs1 ? "powershell.exe" : file, + Arguments = isPs1 + ? $"-NoProfile -ExecutionPolicy Bypass -File \"{file}\" {args}".Trim() + : args, + WorkingDirectory = string.IsNullOrEmpty(workingDir) ? Environment.CurrentDirectory : workingDir, + UseShellExecute = false, + RedirectStandardOutput = true, + RedirectStandardError = true, + CreateNoWindow = true, + }; + if (!string.IsNullOrEmpty(extraPathPrepend)) + { + string currentPath = Environment.GetEnvironmentVariable("PATH") ?? string.Empty; + psi.EnvironmentVariables["PATH"] = string.IsNullOrEmpty(currentPath) + ? extraPathPrepend + : (extraPathPrepend + System.IO.Path.PathSeparator + currentPath); + } + + using var process = new Process { StartInfo = psi, EnableRaisingEvents = false }; + + var sb = new StringBuilder(); + var se = new StringBuilder(); + process.OutputDataReceived += (_, e) => { if (e.Data != null) sb.AppendLine(e.Data); }; + process.ErrorDataReceived += (_, e) => { if (e.Data != null) se.AppendLine(e.Data); }; + + if (!process.Start()) return false; + + process.BeginOutputReadLine(); + process.BeginErrorReadLine(); + + if (!process.WaitForExit(timeoutMs)) + { + try { process.Kill(); } catch { } + return false; + } + + // Ensure async buffers are flushed + process.WaitForExit(); + + stdout = sb.ToString(); + stderr = se.ToString(); + return process.ExitCode == 0; + } + catch + { + return false; + } + } + + /// + /// Cross-platform path lookup. Uses 'where' on Windows, 'which' on macOS/Linux. + /// Returns the full path if found, null otherwise. + /// + internal static string FindInPath(string executable, string extraPathPrepend = null) + { +#if UNITY_EDITOR_WIN + return FindInPathWindows(executable, extraPathPrepend); +#elif UNITY_EDITOR_OSX || UNITY_EDITOR_LINUX + return Which(executable, extraPathPrepend ?? string.Empty); +#else + return null; +#endif + } + +#if UNITY_EDITOR_OSX || UNITY_EDITOR_LINUX + private static string Which(string exe, string prependPath) + { + try + { + var psi = new ProcessStartInfo("/usr/bin/which", exe) + { + UseShellExecute = false, + RedirectStandardOutput = true, + CreateNoWindow = true, + }; + string path = Environment.GetEnvironmentVariable("PATH") ?? string.Empty; + psi.EnvironmentVariables["PATH"] = string.IsNullOrEmpty(path) ? prependPath : (prependPath + Path.PathSeparator + path); + + using var p = Process.Start(psi); + if (p == null) return null; + + var so = new StringBuilder(); + p.OutputDataReceived += (_, e) => { if (e.Data != null) so.AppendLine(e.Data); }; + p.BeginOutputReadLine(); + + if (!p.WaitForExit(1500)) + { + try { p.Kill(); } catch { } + return null; + } + + p.WaitForExit(); + string output = so.ToString().Trim(); + return (!string.IsNullOrEmpty(output) && File.Exists(output)) ? output : null; + } + catch { return null; } + } +#endif + +#if UNITY_EDITOR_WIN + private static string FindInPathWindows(string exe, string extraPathPrepend = null) + { + try + { + string currentPath = Environment.GetEnvironmentVariable("PATH") ?? string.Empty; + string effectivePath = string.IsNullOrEmpty(extraPathPrepend) + ? currentPath + : (string.IsNullOrEmpty(currentPath) ? extraPathPrepend : extraPathPrepend + Path.PathSeparator + currentPath); + + var psi = new ProcessStartInfo("where", exe) + { + UseShellExecute = false, + RedirectStandardOutput = true, + RedirectStandardError = true, + CreateNoWindow = true, + }; + if (!string.IsNullOrEmpty(effectivePath)) + { + psi.EnvironmentVariables["PATH"] = effectivePath; + } + + using var p = Process.Start(psi); + if (p == null) return null; + + var so = new StringBuilder(); + p.OutputDataReceived += (_, e) => { if (e.Data != null) so.AppendLine(e.Data); }; + p.BeginOutputReadLine(); + + if (!p.WaitForExit(1500)) + { + try { p.Kill(); } catch { } + return null; + } + + p.WaitForExit(); + string first = so.ToString() + .Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries) + .FirstOrDefault(); + return (!string.IsNullOrEmpty(first) && File.Exists(first)) ? first : null; + } + catch { return null; } + } +#endif + } +} diff --git a/Packages/MCPForUnity/Editor/Helpers/ExecPath.cs.meta b/Packages/MCPForUnity/Editor/Helpers/ExecPath.cs.meta new file mode 100644 index 00000000..9e64a152 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/ExecPath.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8f2b7b3e9c3e4a0f9b2a1d4c7e6f5a12 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Helpers/GameObjectLookup.cs b/Packages/MCPForUnity/Editor/Helpers/GameObjectLookup.cs new file mode 100644 index 00000000..bd23bbd7 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/GameObjectLookup.cs @@ -0,0 +1,370 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Newtonsoft.Json.Linq; +using UnityEditor; +using UnityEditor.SceneManagement; +using UnityEngine; +using UnityEngine.SceneManagement; + +namespace MCPForUnity.Editor.Helpers +{ + /// + /// Utility class for finding and looking up GameObjects in the scene. + /// Provides search functionality by name, tag, layer, component, path, and instance ID. + /// + public static class GameObjectLookup + { + /// + /// Supported search methods for finding GameObjects. + /// + public enum SearchMethod + { + ByName, + ByTag, + ByLayer, + ByComponent, + ByPath, + ById + } + + /// + /// Parses a search method string into the enum value. + /// + public static SearchMethod ParseSearchMethod(string method) + { + if (string.IsNullOrEmpty(method)) + return SearchMethod.ByName; + + return method.ToLowerInvariant() switch + { + "by_name" => SearchMethod.ByName, + "by_tag" => SearchMethod.ByTag, + "by_layer" => SearchMethod.ByLayer, + "by_component" => SearchMethod.ByComponent, + "by_path" => SearchMethod.ByPath, + "by_id" => SearchMethod.ById, + _ => SearchMethod.ByName + }; + } + + /// + /// Finds a single GameObject based on the target and search method. + /// + /// The target identifier (name, ID, path, etc.) + /// The search method to use + /// Whether to include inactive objects + /// The found GameObject or null + public static GameObject FindByTarget(JToken target, string searchMethod, bool includeInactive = false) + { + if (target == null) + return null; + + var results = SearchGameObjects(searchMethod, target.ToString(), includeInactive, 1); + return results.Count > 0 ? FindById(results[0]) : null; + } + + /// + /// Finds a GameObject by its instance ID. + /// + public static GameObject FindById(int instanceId) + { +#pragma warning disable CS0618 // Type or member is obsolete + return EditorUtility.InstanceIDToObject(instanceId) as GameObject; +#pragma warning restore CS0618 + } + + /// + /// Searches for GameObjects and returns their instance IDs. + /// + /// The search method string (by_name, by_tag, etc.) + /// The term to search for + /// Whether to include inactive objects + /// Maximum number of results to return (0 = unlimited) + /// List of instance IDs + public static List SearchGameObjects(string searchMethod, string searchTerm, bool includeInactive = false, int maxResults = 0) + { + var method = ParseSearchMethod(searchMethod); + return SearchGameObjects(method, searchTerm, includeInactive, maxResults); + } + + /// + /// Searches for GameObjects and returns their instance IDs. + /// + /// The search method + /// The term to search for + /// Whether to include inactive objects + /// Maximum number of results to return (0 = unlimited) + /// List of instance IDs + public static List SearchGameObjects(SearchMethod method, string searchTerm, bool includeInactive = false, int maxResults = 0) + { + var results = new List(); + + switch (method) + { + case SearchMethod.ById: + if (int.TryParse(searchTerm, out int instanceId)) + { +#pragma warning disable CS0618 // Type or member is obsolete + var obj = EditorUtility.InstanceIDToObject(instanceId) as GameObject; +#pragma warning restore CS0618 + if (obj != null && (includeInactive || obj.activeInHierarchy)) + { + results.Add(instanceId); + } + } + break; + + case SearchMethod.ByName: + results.AddRange(SearchByName(searchTerm, includeInactive, maxResults)); + break; + + case SearchMethod.ByPath: + results.AddRange(SearchByPath(searchTerm, includeInactive)); + break; + + case SearchMethod.ByTag: + results.AddRange(SearchByTag(searchTerm, includeInactive, maxResults)); + break; + + case SearchMethod.ByLayer: + results.AddRange(SearchByLayer(searchTerm, includeInactive, maxResults)); + break; + + case SearchMethod.ByComponent: + results.AddRange(SearchByComponent(searchTerm, includeInactive, maxResults)); + break; + } + + return results; + } + + private static IEnumerable SearchByName(string name, bool includeInactive, int maxResults) + { + var allObjects = GetAllSceneObjects(includeInactive); + var matching = allObjects.Where(go => go.name == name); + + if (maxResults > 0) + matching = matching.Take(maxResults); + + return matching.Select(go => go.GetInstanceID()); + } + + private static IEnumerable SearchByPath(string path, bool includeInactive) + { + // Check Prefab Stage first - GameObject.Find() doesn't work in Prefab Stage + var prefabStage = PrefabStageUtility.GetCurrentPrefabStage(); + if (prefabStage != null) + { + // Use GetAllSceneObjects which already handles Prefab Stage + var allObjects = GetAllSceneObjects(includeInactive); + foreach (var go in allObjects) + { + if (MatchesPath(go, path)) + { + yield return go.GetInstanceID(); + } + } + yield break; + } + + // Normal scene mode + // NOTE: Unity's GameObject.Find(path) only finds ACTIVE GameObjects. + // If includeInactive=true, we need to search manually to find inactive objects. + if (includeInactive) + { + // Search manually to support inactive objects + var allObjects = GetAllSceneObjects(true); + foreach (var go in allObjects) + { + if (MatchesPath(go, path)) + { + yield return go.GetInstanceID(); + } + } + } + else + { + // Use GameObject.Find for active objects only (Unity API limitation) + var found = GameObject.Find(path); + if (found != null) + { + yield return found.GetInstanceID(); + } + } + } + + private static IEnumerable SearchByTag(string tag, bool includeInactive, int maxResults) + { + GameObject[] taggedObjects; + try + { + if (includeInactive) + { + // FindGameObjectsWithTag doesn't find inactive, so we need to iterate all + var allObjects = GetAllSceneObjects(true); + taggedObjects = allObjects.Where(go => go.CompareTag(tag)).ToArray(); + } + else + { + taggedObjects = GameObject.FindGameObjectsWithTag(tag); + } + } + catch (UnityException) + { + // Tag doesn't exist + yield break; + } + + var results = taggedObjects.AsEnumerable(); + if (maxResults > 0) + results = results.Take(maxResults); + + foreach (var go in results) + { + yield return go.GetInstanceID(); + } + } + + private static IEnumerable SearchByLayer(string layerName, bool includeInactive, int maxResults) + { + int layer = LayerMask.NameToLayer(layerName); + if (layer == -1) + { + // Try parsing as layer number + if (!int.TryParse(layerName, out layer) || layer < 0 || layer > 31) + { + yield break; + } + } + + var allObjects = GetAllSceneObjects(includeInactive); + var matching = allObjects.Where(go => go.layer == layer); + + if (maxResults > 0) + matching = matching.Take(maxResults); + + foreach (var go in matching) + { + yield return go.GetInstanceID(); + } + } + + private static IEnumerable SearchByComponent(string componentTypeName, bool includeInactive, int maxResults) + { + Type componentType = FindComponentType(componentTypeName); + if (componentType == null) + { + McpLog.Warn($"[GameObjectLookup] Component type '{componentTypeName}' not found."); + yield break; + } + + var allObjects = GetAllSceneObjects(includeInactive); + var count = 0; + + foreach (var go in allObjects) + { + if (go.GetComponent(componentType) != null) + { + yield return go.GetInstanceID(); + count++; + + if (maxResults > 0 && count >= maxResults) + yield break; + } + } + } + + /// + /// Gets all GameObjects in the current scene. + /// + public static IEnumerable GetAllSceneObjects(bool includeInactive) + { + // Check Prefab Stage first + var prefabStage = PrefabStageUtility.GetCurrentPrefabStage(); + if (prefabStage != null && prefabStage.prefabContentsRoot != null) + { + // Use Prefab Stage's prefabContentsRoot + foreach (var go in GetObjectAndDescendants(prefabStage.prefabContentsRoot, includeInactive)) + { + yield return go; + } + yield break; + } + + // Normal scene mode + var scene = SceneManager.GetActiveScene(); + if (!scene.IsValid()) + yield break; + + var rootObjects = scene.GetRootGameObjects(); + foreach (var root in rootObjects) + { + foreach (var go in GetObjectAndDescendants(root, includeInactive)) + { + yield return go; + } + } + } + + private static IEnumerable GetObjectAndDescendants(GameObject obj, bool includeInactive) + { + if (!includeInactive && !obj.activeInHierarchy) + yield break; + + yield return obj; + + foreach (Transform child in obj.transform) + { + foreach (var descendant in GetObjectAndDescendants(child.gameObject, includeInactive)) + { + yield return descendant; + } + } + } + + /// + /// Finds a component type by name, searching loaded assemblies. + /// + /// + /// Delegates to UnityTypeResolver.ResolveComponent() for unified type resolution. + /// + public static Type FindComponentType(string typeName) + { + return UnityTypeResolver.ResolveComponent(typeName); + } + + /// + /// Checks whether a GameObject matches a path or trailing path segment. + /// + internal static bool MatchesPath(GameObject go, string path) + { + if (go == null || string.IsNullOrEmpty(path)) + return false; + + var goPath = GetGameObjectPath(go); + return goPath == path || goPath.EndsWith("/" + path); + } + + /// + /// Gets the hierarchical path of a GameObject. + /// + public static string GetGameObjectPath(GameObject obj) + { + if (obj == null) + return string.Empty; + + var path = obj.name; + var parent = obj.transform.parent; + + while (parent != null) + { + path = parent.name + "/" + path; + parent = parent.parent; + } + + return path; + } + } +} + diff --git a/Packages/MCPForUnity/Editor/Helpers/GameObjectLookup.cs.meta b/Packages/MCPForUnity/Editor/Helpers/GameObjectLookup.cs.meta new file mode 100644 index 00000000..82fed7a1 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/GameObjectLookup.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4964205faa8dd4f8a960e58fd8c0d4f7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Helpers/GameObjectSerializer.cs b/Packages/MCPForUnity/Editor/Helpers/GameObjectSerializer.cs new file mode 100644 index 00000000..688546b7 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/GameObjectSerializer.cs @@ -0,0 +1,666 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using MCPForUnity.Runtime.Serialization; // For Converters +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using UnityEditor; +using UnityEngine; + +namespace MCPForUnity.Editor.Helpers +{ + /// + /// Handles serialization of GameObjects and Components for MCP responses. + /// Includes reflection helpers and caching for performance. + /// + public static class GameObjectSerializer + { + // --- Data Serialization --- + + /// + /// Creates a serializable representation of a GameObject. + /// + public static object GetGameObjectData(GameObject go) + { + if (go == null) + return null; + return new + { + name = go.name, + instanceID = go.GetInstanceID(), + tag = go.tag, + layer = go.layer, + activeSelf = go.activeSelf, + activeInHierarchy = go.activeInHierarchy, + isStatic = go.isStatic, + scenePath = go.scene.path, // Identify which scene it belongs to + transform = new // Serialize transform components carefully to avoid JSON issues + { + // Serialize Vector3 components individually to prevent self-referencing loops. + // The default serializer can struggle with properties like Vector3.normalized. + position = new + { + x = go.transform.position.x, + y = go.transform.position.y, + z = go.transform.position.z, + }, + localPosition = new + { + x = go.transform.localPosition.x, + y = go.transform.localPosition.y, + z = go.transform.localPosition.z, + }, + rotation = new + { + x = go.transform.rotation.eulerAngles.x, + y = go.transform.rotation.eulerAngles.y, + z = go.transform.rotation.eulerAngles.z, + }, + localRotation = new + { + x = go.transform.localRotation.eulerAngles.x, + y = go.transform.localRotation.eulerAngles.y, + z = go.transform.localRotation.eulerAngles.z, + }, + scale = new + { + x = go.transform.localScale.x, + y = go.transform.localScale.y, + z = go.transform.localScale.z, + }, + forward = new + { + x = go.transform.forward.x, + y = go.transform.forward.y, + z = go.transform.forward.z, + }, + up = new + { + x = go.transform.up.x, + y = go.transform.up.y, + z = go.transform.up.z, + }, + right = new + { + x = go.transform.right.x, + y = go.transform.right.y, + z = go.transform.right.z, + }, + }, + parentInstanceID = go.transform.parent?.gameObject.GetInstanceID() ?? 0, // 0 if no parent + // Optionally include components, but can be large + // components = go.GetComponents().Select(c => GetComponentData(c)).ToList() + // Or just component names: + componentNames = go.GetComponents() + .Select(c => c.GetType().FullName) + .ToList(), + }; + } + + // --- Metadata Caching for Reflection --- + private class CachedMetadata + { + public readonly List SerializableProperties; + public readonly List SerializableFields; + + public CachedMetadata(List properties, List fields) + { + SerializableProperties = properties; + SerializableFields = fields; + } + } + // Key becomes Tuple + private static readonly Dictionary, CachedMetadata> _metadataCache = new Dictionary, CachedMetadata>(); + // --- End Metadata Caching --- + + /// + /// Checks if a type is or derives from a type with the specified full name. + /// Used to detect special-case components including their subclasses. + /// + private static bool IsOrDerivedFrom(Type type, string baseTypeFullName) + { + Type current = type; + while (current != null) + { + if (current.FullName == baseTypeFullName) + return true; + current = current.BaseType; + } + return false; + } + + /// + /// Serializes a UnityEngine.Object reference to a dictionary with name, instanceID, and assetPath. + /// Used for consistent serialization of asset references in special-case component handlers. + /// + /// The Unity object to serialize + /// Whether to include the asset path (default true) + /// A dictionary with the object's reference info, or null if obj is null + private static Dictionary SerializeAssetReference(UnityEngine.Object obj, bool includeAssetPath = true) + { + if (obj == null) return null; + + var result = new Dictionary + { + { "name", obj.name }, + { "instanceID", obj.GetInstanceID() } + }; + + if (includeAssetPath) + { + var assetPath = AssetDatabase.GetAssetPath(obj); + result["assetPath"] = string.IsNullOrEmpty(assetPath) ? null : assetPath; + } + + return result; + } + + /// + /// Creates a serializable representation of a Component, attempting to serialize + /// public properties and fields using reflection, with caching and control over non-public fields. + /// + // Add the flag parameter here + public static object GetComponentData(Component c, bool includeNonPublicSerializedFields = true) + { + // --- Add Early Logging --- + // McpLog.Info($"[GetComponentData] Starting for component: {c?.GetType()?.FullName ?? "null"} (ID: {c?.GetInstanceID() ?? 0})"); + // --- End Early Logging --- + + if (c == null) return null; + Type componentType = c.GetType(); + + // --- Special handling for Transform to avoid reflection crashes and problematic properties --- + if (componentType == typeof(Transform)) + { + Transform tr = c as Transform; + // McpLog.Info($"[GetComponentData] Manually serializing Transform (ID: {tr.GetInstanceID()})"); + return new Dictionary + { + { "typeName", componentType.FullName }, + { "instanceID", tr.GetInstanceID() }, + // Manually extract known-safe properties. Avoid Quaternion 'rotation' and 'lossyScale'. + { "position", CreateTokenFromValue(tr.position, typeof(Vector3))?.ToObject() ?? new JObject() }, + { "localPosition", CreateTokenFromValue(tr.localPosition, typeof(Vector3))?.ToObject() ?? new JObject() }, + { "eulerAngles", CreateTokenFromValue(tr.eulerAngles, typeof(Vector3))?.ToObject() ?? new JObject() }, // Use Euler angles + { "localEulerAngles", CreateTokenFromValue(tr.localEulerAngles, typeof(Vector3))?.ToObject() ?? new JObject() }, + { "localScale", CreateTokenFromValue(tr.localScale, typeof(Vector3))?.ToObject() ?? new JObject() }, + { "right", CreateTokenFromValue(tr.right, typeof(Vector3))?.ToObject() ?? new JObject() }, + { "up", CreateTokenFromValue(tr.up, typeof(Vector3))?.ToObject() ?? new JObject() }, + { "forward", CreateTokenFromValue(tr.forward, typeof(Vector3))?.ToObject() ?? new JObject() }, + { "parentInstanceID", tr.parent?.gameObject.GetInstanceID() ?? 0 }, + { "rootInstanceID", tr.root?.gameObject.GetInstanceID() ?? 0 }, + { "childCount", tr.childCount }, + // Include standard Object/Component properties + { "name", tr.name }, + { "tag", tr.tag }, + { "gameObjectInstanceID", tr.gameObject?.GetInstanceID() ?? 0 } + }; + } + // --- End Special handling for Transform --- + + // --- Special handling for Camera to avoid matrix-related crashes --- + if (componentType == typeof(Camera)) + { + Camera cam = c as Camera; + var cameraProperties = new Dictionary(); + + // List of safe properties to serialize + var safeProperties = new Dictionary> + { + { "nearClipPlane", () => cam.nearClipPlane }, + { "farClipPlane", () => cam.farClipPlane }, + { "fieldOfView", () => cam.fieldOfView }, + { "renderingPath", () => (int)cam.renderingPath }, + { "actualRenderingPath", () => (int)cam.actualRenderingPath }, + { "allowHDR", () => cam.allowHDR }, + { "allowMSAA", () => cam.allowMSAA }, + { "allowDynamicResolution", () => cam.allowDynamicResolution }, + { "forceIntoRenderTexture", () => cam.forceIntoRenderTexture }, + { "orthographicSize", () => cam.orthographicSize }, + { "orthographic", () => cam.orthographic }, + { "opaqueSortMode", () => (int)cam.opaqueSortMode }, + { "transparencySortMode", () => (int)cam.transparencySortMode }, + { "depth", () => cam.depth }, + { "aspect", () => cam.aspect }, + { "cullingMask", () => cam.cullingMask }, + { "eventMask", () => cam.eventMask }, + { "backgroundColor", () => cam.backgroundColor }, + { "clearFlags", () => (int)cam.clearFlags }, + { "stereoEnabled", () => cam.stereoEnabled }, + { "stereoSeparation", () => cam.stereoSeparation }, + { "stereoConvergence", () => cam.stereoConvergence }, + { "enabled", () => cam.enabled }, + { "name", () => cam.name }, + { "tag", () => cam.tag }, + { "gameObject", () => new { name = cam.gameObject.name, instanceID = cam.gameObject.GetInstanceID() } } + }; + + foreach (var prop in safeProperties) + { + try + { + var value = prop.Value(); + if (value != null) + { + AddSerializableValue(cameraProperties, prop.Key, value.GetType(), value); + } + } + catch (Exception) + { + // Silently skip any property that fails + continue; + } + } + + return new Dictionary + { + { "typeName", componentType.FullName }, + { "instanceID", cam.GetInstanceID() }, + { "properties", cameraProperties } + }; + } + // --- End Special handling for Camera --- + + // --- Special handling for UIDocument to avoid infinite loops from VisualElement hierarchy (Issue #585) --- + // UIDocument.rootVisualElement contains circular parent/child references that cause infinite serialization loops. + // Use IsOrDerivedFrom to also catch subclasses of UIDocument. + if (IsOrDerivedFrom(componentType, "UnityEngine.UIElements.UIDocument")) + { + var uiDocProperties = new Dictionary(); + + try + { + // Get panelSettings reference safely + var panelSettingsProp = componentType.GetProperty("panelSettings"); + if (panelSettingsProp != null) + { + var panelSettings = panelSettingsProp.GetValue(c) as UnityEngine.Object; + uiDocProperties["panelSettings"] = SerializeAssetReference(panelSettings); + } + + // Get visualTreeAsset reference safely (the UXML file) + var visualTreeAssetProp = componentType.GetProperty("visualTreeAsset"); + if (visualTreeAssetProp != null) + { + var visualTreeAsset = visualTreeAssetProp.GetValue(c) as UnityEngine.Object; + uiDocProperties["visualTreeAsset"] = SerializeAssetReference(visualTreeAsset); + } + + // Get sortingOrder safely + var sortingOrderProp = componentType.GetProperty("sortingOrder"); + if (sortingOrderProp != null) + { + uiDocProperties["sortingOrder"] = sortingOrderProp.GetValue(c); + } + + // Get enabled state (from Behaviour base class) + var enabledProp = componentType.GetProperty("enabled"); + if (enabledProp != null) + { + uiDocProperties["enabled"] = enabledProp.GetValue(c); + } + + // Get parentUI reference safely (no asset path needed - it's a scene reference) + var parentUIProp = componentType.GetProperty("parentUI"); + if (parentUIProp != null) + { + var parentUI = parentUIProp.GetValue(c) as UnityEngine.Object; + uiDocProperties["parentUI"] = SerializeAssetReference(parentUI, includeAssetPath: false); + } + + // NOTE: rootVisualElement is intentionally skipped - it contains circular + // parent/child references that cause infinite serialization loops + uiDocProperties["_note"] = "rootVisualElement skipped to prevent circular reference loops"; + } + catch (Exception e) + { + McpLog.Warn($"[GetComponentData] Error reading UIDocument properties: {e.Message}"); + } + + // Return structure matches Camera special handling (typeName, instanceID, properties) + return new Dictionary + { + { "typeName", componentType.FullName }, + { "instanceID", c.GetInstanceID() }, + { "properties", uiDocProperties } + }; + } + // --- End Special handling for UIDocument --- + + var data = new Dictionary + { + { "typeName", componentType.FullName }, + { "instanceID", c.GetInstanceID() } + }; + + // --- Get Cached or Generate Metadata (using new cache key) --- + Tuple cacheKey = new Tuple(componentType, includeNonPublicSerializedFields); + if (!_metadataCache.TryGetValue(cacheKey, out CachedMetadata cachedData)) + { + var propertiesToCache = new List(); + var fieldsToCache = new List(); + + // Traverse the hierarchy from the component type up to MonoBehaviour + Type currentType = componentType; + while (currentType != null && currentType != typeof(MonoBehaviour) && currentType != typeof(object)) + { + // Get properties declared only at the current type level + BindingFlags propFlags = BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly; + foreach (var propInfo in currentType.GetProperties(propFlags)) + { + // Basic filtering (readable, not indexer, not transform which is handled elsewhere) + if (!propInfo.CanRead || propInfo.GetIndexParameters().Length > 0 || propInfo.Name == "transform") continue; + // Add if not already added (handles overrides - keep the most derived version) + if (!propertiesToCache.Any(p => p.Name == propInfo.Name)) + { + propertiesToCache.Add(propInfo); + } + } + + // Get fields declared only at the current type level (both public and non-public) + BindingFlags fieldFlags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly; + var declaredFields = currentType.GetFields(fieldFlags); + + // Process the declared Fields for caching + foreach (var fieldInfo in declaredFields) + { + if (fieldInfo.Name.EndsWith("k__BackingField")) continue; // Skip backing fields + + // Add if not already added (handles hiding - keep the most derived version) + if (fieldsToCache.Any(f => f.Name == fieldInfo.Name)) continue; + + bool shouldInclude = false; + if (includeNonPublicSerializedFields) + { + // If TRUE, include Public OR any NonPublic with [SerializeField] (private/protected/internal) + var hasSerializeField = fieldInfo.IsDefined(typeof(SerializeField), inherit: true); + shouldInclude = fieldInfo.IsPublic || (!fieldInfo.IsPublic && hasSerializeField); + } + else // includeNonPublicSerializedFields is FALSE + { + // If FALSE, include ONLY if it is explicitly Public. + shouldInclude = fieldInfo.IsPublic; + } + + if (shouldInclude) + { + fieldsToCache.Add(fieldInfo); + } + } + + // Move to the base type + currentType = currentType.BaseType; + } + // --- End Hierarchy Traversal --- + + cachedData = new CachedMetadata(propertiesToCache, fieldsToCache); + _metadataCache[cacheKey] = cachedData; // Add to cache with combined key + } + // --- End Get Cached or Generate Metadata --- + + // --- Use cached metadata --- + var serializablePropertiesOutput = new Dictionary(); + + // --- Add Logging Before Property Loop --- + // McpLog.Info($"[GetComponentData] Starting property loop for {componentType.Name}..."); + // --- End Logging Before Property Loop --- + + // Use cached properties + foreach (var propInfo in cachedData.SerializableProperties) + { + string propName = propInfo.Name; + + // --- Skip known obsolete/problematic Component shortcut properties --- + bool skipProperty = false; + if (propName == "rigidbody" || propName == "rigidbody2D" || propName == "camera" || + propName == "light" || propName == "animation" || propName == "constantForce" || + propName == "renderer" || propName == "audio" || propName == "networkView" || + propName == "collider" || propName == "collider2D" || propName == "hingeJoint" || + propName == "particleSystem" || + // Also skip potentially problematic Matrix properties prone to cycles/errors + propName == "worldToLocalMatrix" || propName == "localToWorldMatrix") + { + // McpLog.Info($"[GetComponentData] Explicitly skipping generic property: {propName}"); // Optional log + skipProperty = true; + } + // --- End Skip Generic Properties --- + + // --- Skip specific potentially problematic Camera properties --- + if (componentType == typeof(Camera) && + (propName == "pixelRect" || + propName == "rect" || + propName == "cullingMatrix" || + propName == "useOcclusionCulling" || + propName == "worldToCameraMatrix" || + propName == "projectionMatrix" || + propName == "nonJitteredProjectionMatrix" || + propName == "previousViewProjectionMatrix" || + propName == "cameraToWorldMatrix")) + { + // McpLog.Info($"[GetComponentData] Explicitly skipping Camera property: {propName}"); + skipProperty = true; + } + // --- End Skip Camera Properties --- + + // --- Skip specific potentially problematic Transform properties --- + if (componentType == typeof(Transform) && + (propName == "lossyScale" || + propName == "rotation" || + propName == "worldToLocalMatrix" || + propName == "localToWorldMatrix")) + { + // McpLog.Info($"[GetComponentData] Explicitly skipping Transform property: {propName}"); + skipProperty = true; + } + // --- End Skip Transform Properties --- + + // Skip if flagged + if (skipProperty) + { + continue; + } + + try + { + // --- Add detailed logging --- + // McpLog.Info($"[GetComponentData] Accessing: {componentType.Name}.{propName}"); + // --- End detailed logging --- + + // --- Special handling for material/mesh properties in edit mode --- + object value; + if (!Application.isPlaying && (propName == "material" || propName == "materials" || propName == "mesh")) + { + // In edit mode, use sharedMaterial/sharedMesh to avoid instantiation warnings + if ((propName == "material" || propName == "materials") && c is Renderer renderer) + { + if (propName == "material") + value = renderer.sharedMaterial; + else // materials + value = renderer.sharedMaterials; + } + else if (propName == "mesh" && c is MeshFilter meshFilter) + { + value = meshFilter.sharedMesh; + } + else + { + // Fallback to normal property access if type doesn't match + value = propInfo.GetValue(c); + } + } + else + { + value = propInfo.GetValue(c); + } + // --- End special handling --- + + Type propType = propInfo.PropertyType; + AddSerializableValue(serializablePropertiesOutput, propName, propType, value); + } + catch (Exception) + { + // McpLog.Warn($"Could not read property {propName} on {componentType.Name}"); + } + } + + // --- Add Logging Before Field Loop --- + // McpLog.Info($"[GetComponentData] Starting field loop for {componentType.Name}..."); + // --- End Logging Before Field Loop --- + + // Use cached fields + foreach (var fieldInfo in cachedData.SerializableFields) + { + try + { + // --- Add detailed logging for fields --- + // McpLog.Info($"[GetComponentData] Accessing Field: {componentType.Name}.{fieldInfo.Name}"); + // --- End detailed logging for fields --- + object value = fieldInfo.GetValue(c); + string fieldName = fieldInfo.Name; + Type fieldType = fieldInfo.FieldType; + AddSerializableValue(serializablePropertiesOutput, fieldName, fieldType, value); + } + catch (Exception) + { + // McpLog.Warn($"Could not read field {fieldInfo.Name} on {componentType.Name}"); + } + } + // --- End Use cached metadata --- + + if (serializablePropertiesOutput.Count > 0) + { + data["properties"] = serializablePropertiesOutput; + } + + return data; + } + + // Helper function to decide how to serialize different types + private static void AddSerializableValue(Dictionary dict, string name, Type type, object value) + { + // Simplified: Directly use CreateTokenFromValue which uses the serializer + if (value == null) + { + dict[name] = null; + return; + } + + try + { + // Use the helper that employs our custom serializer settings + JToken token = CreateTokenFromValue(value, type); + if (token != null) // Check if serialization succeeded in the helper + { + // Convert JToken back to a basic object structure for the dictionary + dict[name] = ConvertJTokenToPlainObject(token); + } + // If token is null, it means serialization failed and a warning was logged. + } + catch (Exception e) + { + // Catch potential errors during JToken conversion or addition to dictionary + McpLog.Warn($"[AddSerializableValue] Error processing value for '{name}' (Type: {type.FullName}): {e.Message}. Skipping."); + } + } + + // Helper to convert JToken back to basic object structure + private static object ConvertJTokenToPlainObject(JToken token) + { + if (token == null) return null; + + switch (token.Type) + { + case JTokenType.Object: + var objDict = new Dictionary(); + foreach (var prop in ((JObject)token).Properties()) + { + objDict[prop.Name] = ConvertJTokenToPlainObject(prop.Value); + } + return objDict; + + case JTokenType.Array: + var list = new List(); + foreach (var item in (JArray)token) + { + list.Add(ConvertJTokenToPlainObject(item)); + } + return list; + + case JTokenType.Integer: + return token.ToObject(); // Use long for safety + case JTokenType.Float: + return token.ToObject(); // Use double for safety + case JTokenType.String: + return token.ToObject(); + case JTokenType.Boolean: + return token.ToObject(); + case JTokenType.Date: + return token.ToObject(); + case JTokenType.Guid: + return token.ToObject(); + case JTokenType.Uri: + return token.ToObject(); + case JTokenType.TimeSpan: + return token.ToObject(); + case JTokenType.Bytes: + return token.ToObject(); + case JTokenType.Null: + return null; + case JTokenType.Undefined: + return null; // Treat undefined as null + + default: + // Fallback for simple value types not explicitly listed + if (token is JValue jValue && jValue.Value != null) + { + return jValue.Value; + } + // McpLog.Warn($"Unsupported JTokenType encountered: {token.Type}. Returning null."); + return null; + } + } + + // --- Define custom JsonSerializerSettings for OUTPUT --- + private static readonly JsonSerializerSettings _outputSerializerSettings = new JsonSerializerSettings + { + Converters = new List + { + new Vector3Converter(), + new Vector2Converter(), + new QuaternionConverter(), + new ColorConverter(), + new RectConverter(), + new BoundsConverter(), + new Matrix4x4Converter(), // Fix #478: Safe Matrix4x4 serialization for Cinemachine + new UnityEngineObjectConverter() // Handles serialization of references + }, + ReferenceLoopHandling = ReferenceLoopHandling.Ignore, + // ContractResolver = new DefaultContractResolver { NamingStrategy = new CamelCaseNamingStrategy() } // Example if needed + }; + private static readonly JsonSerializer _outputSerializer = JsonSerializer.Create(_outputSerializerSettings); + // --- End Define custom JsonSerializerSettings --- + + // Helper to create JToken using the output serializer + private static JToken CreateTokenFromValue(object value, Type type) + { + if (value == null) return JValue.CreateNull(); + + try + { + // Use the pre-configured OUTPUT serializer instance + return JToken.FromObject(value, _outputSerializer); + } + catch (JsonSerializationException e) + { + McpLog.Warn($"[GameObjectSerializer] Newtonsoft.Json Error serializing value of type {type.FullName}: {e.Message}. Skipping property/field."); + return null; // Indicate serialization failure + } + catch (Exception e) // Catch other unexpected errors + { + McpLog.Warn($"[GameObjectSerializer] Unexpected error serializing value of type {type.FullName}: {e}. Skipping property/field."); + return null; // Indicate serialization failure + } + } + } +} diff --git a/Packages/MCPForUnity/Editor/Helpers/GameObjectSerializer.cs.meta b/Packages/MCPForUnity/Editor/Helpers/GameObjectSerializer.cs.meta new file mode 100644 index 00000000..9eb69d04 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/GameObjectSerializer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 64b8ff807bc9a401c82015cbafccffac +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Helpers/HttpEndpointUtility.cs b/Packages/MCPForUnity/Editor/Helpers/HttpEndpointUtility.cs new file mode 100644 index 00000000..76b7aef1 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/HttpEndpointUtility.cs @@ -0,0 +1,184 @@ +using System; +using MCPForUnity.Editor.Constants; +using MCPForUnity.Editor.Models; +using MCPForUnity.Editor.Services; +using UnityEditor; + +namespace MCPForUnity.Editor.Helpers +{ + /// + /// Helper methods for managing HTTP endpoint URLs used by the MCP bridge. + /// Ensures the stored value is always the base URL (without trailing path), + /// and provides convenience accessors for specific endpoints. + /// + /// HTTP Local and HTTP Remote use separate EditorPrefs keys so that switching + /// between scopes does not overwrite the other scope's URL. + /// + public static class HttpEndpointUtility + { + private const string LocalPrefKey = EditorPrefKeys.HttpBaseUrl; + private const string RemotePrefKey = EditorPrefKeys.HttpRemoteBaseUrl; + private const string DefaultLocalBaseUrl = "http://localhost:8080"; + private const string DefaultRemoteBaseUrl = ""; + + /// + /// Returns the normalized base URL for the currently active HTTP scope. + /// If the scope is "remote", returns the remote URL; otherwise returns the local URL. + /// + public static string GetBaseUrl() + { + return IsRemoteScope() ? GetRemoteBaseUrl() : GetLocalBaseUrl(); + } + + /// + /// Saves a user-provided URL to the currently active HTTP scope's pref. + /// + public static void SaveBaseUrl(string userValue) + { + if (IsRemoteScope()) + { + SaveRemoteBaseUrl(userValue); + } + else + { + SaveLocalBaseUrl(userValue); + } + } + + /// + /// Returns the normalized local HTTP base URL (always reads local pref). + /// + public static string GetLocalBaseUrl() + { + string stored = EditorPrefs.GetString(LocalPrefKey, DefaultLocalBaseUrl); + return NormalizeBaseUrl(stored, DefaultLocalBaseUrl); + } + + /// + /// Saves a user-provided URL to the local HTTP pref. + /// + public static void SaveLocalBaseUrl(string userValue) + { + string normalized = NormalizeBaseUrl(userValue, DefaultLocalBaseUrl); + EditorPrefs.SetString(LocalPrefKey, normalized); + } + + /// + /// Returns the normalized remote HTTP base URL (always reads remote pref). + /// Returns empty string if no remote URL is configured. + /// + public static string GetRemoteBaseUrl() + { + string stored = EditorPrefs.GetString(RemotePrefKey, DefaultRemoteBaseUrl); + if (string.IsNullOrWhiteSpace(stored)) + { + return DefaultRemoteBaseUrl; + } + return NormalizeBaseUrl(stored, DefaultRemoteBaseUrl); + } + + /// + /// Saves a user-provided URL to the remote HTTP pref. + /// + public static void SaveRemoteBaseUrl(string userValue) + { + if (string.IsNullOrWhiteSpace(userValue)) + { + EditorPrefs.SetString(RemotePrefKey, DefaultRemoteBaseUrl); + return; + } + string normalized = NormalizeBaseUrl(userValue, DefaultRemoteBaseUrl); + EditorPrefs.SetString(RemotePrefKey, normalized); + } + + /// + /// Builds the JSON-RPC endpoint for the currently active scope (base + /mcp). + /// + public static string GetMcpRpcUrl() + { + return AppendPathSegment(GetBaseUrl(), "mcp"); + } + + /// + /// Builds the local JSON-RPC endpoint (local base + /mcp). + /// + public static string GetLocalMcpRpcUrl() + { + return AppendPathSegment(GetLocalBaseUrl(), "mcp"); + } + + /// + /// Builds the remote JSON-RPC endpoint (remote base + /mcp). + /// Returns empty string if no remote URL is configured. + /// + public static string GetRemoteMcpRpcUrl() + { + string remoteBase = GetRemoteBaseUrl(); + return string.IsNullOrEmpty(remoteBase) ? string.Empty : AppendPathSegment(remoteBase, "mcp"); + } + + /// + /// Builds the endpoint used when POSTing custom-tool registration payloads. + /// + public static string GetRegisterToolsUrl() + { + return AppendPathSegment(GetBaseUrl(), "register-tools"); + } + + /// + /// Returns true if the active HTTP transport scope is "remote". + /// + public static bool IsRemoteScope() + { + string scope = EditorConfigurationCache.Instance.HttpTransportScope; + return string.Equals(scope, "remote", StringComparison.OrdinalIgnoreCase); + } + + /// + /// Returns the that matches the current server-side + /// transport selection (Stdio, Http, or HttpRemote). + /// Centralises the 3-way determination so callers avoid duplicated logic. + /// + public static ConfiguredTransport GetCurrentServerTransport() + { + bool useHttp = EditorConfigurationCache.Instance.UseHttpTransport; + if (!useHttp) return ConfiguredTransport.Stdio; + return IsRemoteScope() ? ConfiguredTransport.HttpRemote : ConfiguredTransport.Http; + } + + /// + /// Normalizes a URL so that we consistently store just the base (no trailing slash/path). + /// + private static string NormalizeBaseUrl(string value, string defaultUrl) + { + if (string.IsNullOrWhiteSpace(value)) + { + return defaultUrl; + } + + string trimmed = value.Trim(); + + // Ensure scheme exists; default to http:// if user omitted it. + if (!trimmed.Contains("://")) + { + trimmed = $"http://{trimmed}"; + } + + // Remove trailing slash segments. + trimmed = trimmed.TrimEnd('/'); + + // Strip trailing "/mcp" (case-insensitive) if provided. + if (trimmed.EndsWith("/mcp", StringComparison.OrdinalIgnoreCase)) + { + trimmed = trimmed[..^4]; + } + + return trimmed; + } + + private static string AppendPathSegment(string baseUrl, string segment) + { + return $"{baseUrl.TrimEnd('/')}/{segment}"; + } + } +} diff --git a/Packages/MCPForUnity/Editor/Helpers/HttpEndpointUtility.cs.meta b/Packages/MCPForUnity/Editor/Helpers/HttpEndpointUtility.cs.meta new file mode 100644 index 00000000..55d67cbf --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/HttpEndpointUtility.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2051d90316ea345c09240c80c7138e3b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Helpers/MaterialOps.cs b/Packages/MCPForUnity/Editor/Helpers/MaterialOps.cs new file mode 100644 index 00000000..19f50288 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/MaterialOps.cs @@ -0,0 +1,397 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using MCPForUnity.Editor.Tools; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using UnityEditor; +using UnityEngine; + +namespace MCPForUnity.Editor.Helpers +{ + public static class MaterialOps + { + /// + /// Applies a set of properties (JObject) to a material, handling aliases and structured formats. + /// + public static bool ApplyProperties(Material mat, JObject properties, JsonSerializer serializer) + { + if (mat == null || properties == null) + return false; + bool modified = false; + + // Helper for case-insensitive lookup + JToken GetValue(string key) + { + return properties.Properties() + .FirstOrDefault(p => string.Equals(p.Name, key, StringComparison.OrdinalIgnoreCase))?.Value; + } + + // --- Structured / Legacy Format Handling --- + // Example: Set shader + var shaderToken = GetValue("shader"); + if (shaderToken?.Type == JTokenType.String) + { + string shaderRequest = shaderToken.ToString(); + // Set shader + Shader newShader = RenderPipelineUtility.ResolveShader(shaderRequest); + if (newShader != null && mat.shader != newShader) + { + mat.shader = newShader; + modified = true; + } + } + + // Example: Set color property (structured) + var colorToken = GetValue("color"); + if (colorToken is JObject colorProps) + { + string propName = colorProps["name"]?.ToString() ?? GetMainColorPropertyName(mat); + if (colorProps["value"] is JArray colArr && colArr.Count >= 3) + { + try + { + Color newColor = ParseColor(colArr, serializer); + if (mat.HasProperty(propName)) + { + if (mat.GetColor(propName) != newColor) + { + mat.SetColor(propName, newColor); + modified = true; + } + } + } + catch (Exception ex) + { + McpLog.Warn($"[MaterialOps] Failed to parse color for property '{propName}': {ex.Message}"); + } + } + } + else if (colorToken is JArray colorArr) // Structured shorthand + { + string propName = GetMainColorPropertyName(mat); + try + { + Color newColor = ParseColor(colorArr, serializer); + if (mat.HasProperty(propName) && mat.GetColor(propName) != newColor) + { + mat.SetColor(propName, newColor); + modified = true; + } + } + catch (Exception ex) + { + McpLog.Warn($"[MaterialOps] Failed to parse color array: {ex.Message}"); + } + } + + // Example: Set float property (structured) + var floatToken = GetValue("float"); + if (floatToken is JObject floatProps) + { + string propName = floatProps["name"]?.ToString(); + if (!string.IsNullOrEmpty(propName) && + (floatProps["value"]?.Type == JTokenType.Float || floatProps["value"]?.Type == JTokenType.Integer)) + { + try + { + float newVal = floatProps["value"].ToObject(); + if (mat.HasProperty(propName) && mat.GetFloat(propName) != newVal) + { + mat.SetFloat(propName, newVal); + modified = true; + } + } + catch (Exception ex) + { + McpLog.Warn($"[MaterialOps] Failed to set float property '{propName}': {ex.Message}"); + } + } + } + + // Example: Set texture property (structured) + { + var texToken = GetValue("texture"); + if (texToken is JObject texProps) + { + string rawName = (texProps["name"] ?? texProps["Name"])?.ToString(); + string texPath = (texProps["path"] ?? texProps["Path"])?.ToString(); + if (!string.IsNullOrEmpty(texPath)) + { + var sanitizedPath = AssetPathUtility.SanitizeAssetPath(texPath); + var newTex = AssetDatabase.LoadAssetAtPath(sanitizedPath); + // Use ResolvePropertyName to handle aliases even for structured texture names + string candidateName = string.IsNullOrEmpty(rawName) ? "_BaseMap" : rawName; + string targetProp = ResolvePropertyName(mat, candidateName); + + if (!string.IsNullOrEmpty(targetProp) && mat.HasProperty(targetProp)) + { + if (mat.GetTexture(targetProp) != newTex) + { + mat.SetTexture(targetProp, newTex); + modified = true; + } + } + } + } + } + + // --- Direct Property Assignment (Flexible) --- + var reservedKeys = new HashSet(StringComparer.OrdinalIgnoreCase) { "shader", "color", "float", "texture" }; + + foreach (var prop in properties.Properties()) + { + if (reservedKeys.Contains(prop.Name)) continue; + string shaderProp = ResolvePropertyName(mat, prop.Name); + JToken v = prop.Value; + + if (TrySetShaderProperty(mat, shaderProp, v, serializer)) + { + modified = true; + } + } + + return modified; + } + + /// + /// Resolves common property aliases (e.g. "metallic" -> "_Metallic"). + /// + public static string ResolvePropertyName(Material mat, string name) + { + if (mat == null || string.IsNullOrEmpty(name)) return name; + string[] candidates; + var lower = name.ToLowerInvariant(); + switch (lower) + { + case "_color": candidates = new[] { "_Color", "_BaseColor" }; break; + case "_basecolor": candidates = new[] { "_BaseColor", "_Color" }; break; + case "_maintex": candidates = new[] { "_MainTex", "_BaseMap" }; break; + case "_basemap": candidates = new[] { "_BaseMap", "_MainTex" }; break; + case "_glossiness": candidates = new[] { "_Glossiness", "_Smoothness" }; break; + case "_smoothness": candidates = new[] { "_Smoothness", "_Glossiness" }; break; + // Friendly names → shader property names + case "metallic": candidates = new[] { "_Metallic" }; break; + case "smoothness": candidates = new[] { "_Smoothness", "_Glossiness" }; break; + case "albedo": candidates = new[] { "_BaseMap", "_MainTex" }; break; + default: candidates = new[] { name }; break; // keep original as-is + } + foreach (var candidate in candidates) + { + if (mat.HasProperty(candidate)) return candidate; + } + return name; + } + + /// + /// Auto-detects the main color property name for a material's shader. + /// + public static string GetMainColorPropertyName(Material mat) + { + if (mat == null || mat.shader == null) + return "_Color"; + + string[] commonColorProps = { "_BaseColor", "_Color", "_MainColor", "_Tint", "_TintColor" }; + foreach (var prop in commonColorProps) + { + if (mat.HasProperty(prop)) + return prop; + } + return "_Color"; + } + + /// + /// Tries to set a shader property on a material based on a JToken value. + /// Handles Colors, Vectors, Floats, Ints, Booleans, and Textures. + /// + public static bool TrySetShaderProperty(Material material, string propertyName, JToken value, JsonSerializer serializer) + { + if (material == null || string.IsNullOrEmpty(propertyName) || value == null) + return false; + + // Handle stringified JSON + if (value.Type == JTokenType.String) + { + string s = value.ToString(); + if (s.TrimStart().StartsWith("[") || s.TrimStart().StartsWith("{")) + { + try + { + JToken parsed = JToken.Parse(s); + return TrySetShaderProperty(material, propertyName, parsed, serializer); + } + catch { } + } + } + + // Use the serializer to convert the JToken value first + if (value is JArray jArray) + { + if (jArray.Count == 4) + { + if (material.HasProperty(propertyName)) + { + try { material.SetColor(propertyName, ParseColor(value, serializer)); return true; } + catch (Exception ex) + { + // Log at Debug level since we'll try other conversions + McpLog.Info($"[MaterialOps] SetColor attempt for '{propertyName}' failed: {ex.Message}"); + } + + try { Vector4 vec = value.ToObject(serializer); material.SetVector(propertyName, vec); return true; } + catch (Exception ex) + { + McpLog.Info($"[MaterialOps] SetVector (Vec4) attempt for '{propertyName}' failed: {ex.Message}"); + } + } + } + else if (jArray.Count == 3) + { + if (material.HasProperty(propertyName)) + { + try { material.SetColor(propertyName, ParseColor(value, serializer)); return true; } + catch (Exception ex) + { + McpLog.Info($"[MaterialOps] SetColor (Vec3) attempt for '{propertyName}' failed: {ex.Message}"); + } + } + } + else if (jArray.Count == 2) + { + if (material.HasProperty(propertyName)) + { + try { Vector2 vec = value.ToObject(serializer); material.SetVector(propertyName, vec); return true; } + catch (Exception ex) + { + McpLog.Info($"[MaterialOps] SetVector (Vec2) attempt for '{propertyName}' failed: {ex.Message}"); + } + } + } + } + else if (value.Type == JTokenType.Float || value.Type == JTokenType.Integer) + { + if (!material.HasProperty(propertyName)) + return false; + + try { material.SetFloat(propertyName, value.ToObject(serializer)); return true; } + catch (Exception ex) + { + McpLog.Info($"[MaterialOps] SetFloat attempt for '{propertyName}' failed: {ex.Message}"); + } + } + else if (value.Type == JTokenType.Boolean) + { + if (!material.HasProperty(propertyName)) + return false; + + try { material.SetFloat(propertyName, value.ToObject(serializer) ? 1f : 0f); return true; } + catch (Exception ex) + { + McpLog.Info($"[MaterialOps] SetFloat (bool) attempt for '{propertyName}' failed: {ex.Message}"); + } + } + else if (value.Type == JTokenType.String) + { + try + { + // Try loading as asset path first (most common case for strings in this context) + string path = value.ToString(); + if (!string.IsNullOrEmpty(path) && path.Contains("/")) // Heuristic: paths usually have slashes + { + // We need to handle texture assignment here. + // Since we don't have easy access to AssetDatabase here directly without using UnityEditor namespace (which is imported), + // we can try to load it. + var sanitizedPath = AssetPathUtility.SanitizeAssetPath(path); + Texture tex = AssetDatabase.LoadAssetAtPath(sanitizedPath); + if (tex != null && material.HasProperty(propertyName)) + { + material.SetTexture(propertyName, tex); + return true; + } + } + } + catch (Exception ex) + { + McpLog.Warn($"SetTexture (string path) for '{propertyName}' failed: {ex.Message}"); + } + } + + if (value.Type == JTokenType.Object) + { + try + { + Texture texture = value.ToObject(serializer); + if (texture != null && material.HasProperty(propertyName)) + { + material.SetTexture(propertyName, texture); + return true; + } + } + catch (Exception ex) + { + McpLog.Warn($"SetTexture (object) for '{propertyName}' failed: {ex.Message}"); + } + } + + McpLog.Warn( + $"[MaterialOps] Unsupported or failed conversion for material property '{propertyName}' from value: {value.ToString(Formatting.None)}" + ); + return false; + } + + /// + /// Helper to parse color from JToken (array or object). + /// + public static Color ParseColor(JToken token, JsonSerializer serializer) + { + if (token.Type == JTokenType.String) + { + string s = token.ToString(); + if (s.TrimStart().StartsWith("[") || s.TrimStart().StartsWith("{")) + { + try + { + return ParseColor(JToken.Parse(s), serializer); + } + catch { } + } + } + + if (token is JArray jArray) + { + if (jArray.Count == 4) + { + return new Color( + (float)jArray[0], + (float)jArray[1], + (float)jArray[2], + (float)jArray[3] + ); + } + else if (jArray.Count == 3) + { + return new Color( + (float)jArray[0], + (float)jArray[1], + (float)jArray[2], + 1f + ); + } + else + { + throw new ArgumentException("Color array must have 3 or 4 elements."); + } + } + + try + { + return token.ToObject(serializer); + } + catch (Exception ex) + { + McpLog.Warn($"[MaterialOps] Failed to parse color from token: {ex.Message}"); + throw; + } + } + } +} diff --git a/Packages/MCPForUnity/Editor/Helpers/MaterialOps.cs.meta b/Packages/MCPForUnity/Editor/Helpers/MaterialOps.cs.meta new file mode 100644 index 00000000..9296369a --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/MaterialOps.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a59e8545e32664dae9a696d449f82c3d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Helpers/McpConfigurationHelper.cs b/Packages/MCPForUnity/Editor/Helpers/McpConfigurationHelper.cs new file mode 100644 index 00000000..61eccb13 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/McpConfigurationHelper.cs @@ -0,0 +1,283 @@ +using System; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; +using MCPForUnity.Editor.Constants; +using MCPForUnity.Editor.Dependencies; +using MCPForUnity.Editor.Helpers; +using MCPForUnity.Editor.Models; +using MCPForUnity.Editor.Services; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using UnityEditor; +using UnityEngine; + +namespace MCPForUnity.Editor.Helpers +{ + /// + /// Shared helper for MCP client configuration management with sophisticated + /// logic for preserving existing configs and handling different client types + /// + public static class McpConfigurationHelper + { + private const string LOCK_CONFIG_KEY = EditorPrefKeys.LockCursorConfig; + + /// + /// Writes MCP configuration to the specified path using sophisticated logic + /// that preserves existing configuration and only writes when necessary + /// + public static string WriteMcpConfiguration(string configPath, McpClient mcpClient = null) + { + // 0) Respect explicit lock (hidden pref or UI toggle) + try + { + if (EditorPrefs.GetBool(LOCK_CONFIG_KEY, false)) + return "Skipped (locked)"; + } + catch { } + + JsonSerializerSettings jsonSettings = new() { Formatting = Formatting.Indented }; + + // Read existing config if it exists + string existingJson = "{}"; + if (File.Exists(configPath)) + { + try + { + existingJson = File.ReadAllText(configPath); + } + catch (Exception e) + { + McpLog.Warn($"Error reading existing config: {e.Message}."); + } + } + + // Parse the existing JSON while preserving all properties + dynamic existingConfig; + try + { + if (string.IsNullOrWhiteSpace(existingJson)) + { + existingConfig = new JObject(); + } + else + { + existingConfig = JsonConvert.DeserializeObject(existingJson) ?? new JObject(); + } + } + catch + { + // If user has partial/invalid JSON (e.g., mid-edit), start from a fresh object + if (!string.IsNullOrWhiteSpace(existingJson)) + { + McpLog.Warn("UnityMCP: Configuration file could not be parsed; rewriting server block."); + } + existingConfig = new JObject(); + } + + // Determine existing entry references (command/args) + string existingCommand = null; + string[] existingArgs = null; + bool isVSCode = (mcpClient?.IsVsCodeLayout == true); + try + { + if (isVSCode) + { + existingCommand = existingConfig?.servers?.unityMCP?.command?.ToString(); + existingArgs = existingConfig?.servers?.unityMCP?.args?.ToObject(); + } + else + { + existingCommand = existingConfig?.mcpServers?.unityMCP?.command?.ToString(); + existingArgs = existingConfig?.mcpServers?.unityMCP?.args?.ToObject(); + } + } + catch { } + + // 1) Start from existing, only fill gaps (prefer trusted resolver) + string uvxPath = MCPServiceLocator.Paths.GetUvxPath(); + if (uvxPath == null) return "uv package manager not found. Please install uv first."; + + // Ensure containers exist and write back configuration + JObject existingRoot; + if (existingConfig is JObject eo) + existingRoot = eo; + else + existingRoot = JObject.FromObject(existingConfig); + + existingRoot = ConfigJsonBuilder.ApplyUnityServerToExistingConfig(existingRoot, uvxPath, mcpClient); + + string mergedJson = JsonConvert.SerializeObject(existingRoot, jsonSettings); + + EnsureConfigDirectoryExists(configPath); + WriteAtomicFile(configPath, mergedJson); + + return "Configured successfully"; + } + + /// + /// Configures a Codex client with sophisticated TOML handling + /// + public static string ConfigureCodexClient(string configPath, McpClient mcpClient) + { + try + { + if (EditorPrefs.GetBool(LOCK_CONFIG_KEY, false)) + return "Skipped (locked)"; + } + catch { } + + string existingToml = string.Empty; + if (File.Exists(configPath)) + { + try + { + existingToml = File.ReadAllText(configPath); + } + catch (Exception e) + { + McpLog.Warn($"UnityMCP: Failed to read Codex config '{configPath}': {e.Message}"); + existingToml = string.Empty; + } + } + + string existingCommand = null; + string[] existingArgs = null; + if (!string.IsNullOrWhiteSpace(existingToml)) + { + CodexConfigHelper.TryParseCodexServer(existingToml, out existingCommand, out existingArgs); + } + + string uvxPath = MCPServiceLocator.Paths.GetUvxPath(); + if (uvxPath == null) + { + return "uv package manager not found. Please install uv first."; + } + + string updatedToml = CodexConfigHelper.UpsertCodexServerBlock(existingToml, uvxPath); + + EnsureConfigDirectoryExists(configPath); + WriteAtomicFile(configPath, updatedToml); + + return "Configured successfully"; + } + + /// + /// Gets the appropriate config file path for the given MCP client based on OS + /// + public static string GetClientConfigPath(McpClient mcpClient) + { + if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + { + return mcpClient.windowsConfigPath; + } + else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) + { + return string.IsNullOrEmpty(mcpClient.macConfigPath) + ? mcpClient.linuxConfigPath + : mcpClient.macConfigPath; + } + else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) + { + return mcpClient.linuxConfigPath; + } + else + { + return mcpClient.linuxConfigPath; // fallback + } + } + + /// + /// Creates the directory for the config file if it doesn't exist + /// + public static void EnsureConfigDirectoryExists(string configPath) + { + Directory.CreateDirectory(Path.GetDirectoryName(configPath)); + } + + public static string ExtractUvxUrl(string[] args) + { + if (args == null) return null; + for (int i = 0; i < args.Length - 1; i++) + { + if (string.Equals(args[i], "--from", StringComparison.OrdinalIgnoreCase)) + { + return args[i + 1]; + } + } + return null; + } + + public static bool PathsEqual(string a, string b) + { + if (string.IsNullOrEmpty(a) || string.IsNullOrEmpty(b)) return false; + try + { + string na = Path.GetFullPath(a.Trim()); + string nb = Path.GetFullPath(b.Trim()); + if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + { + return string.Equals(na, nb, StringComparison.OrdinalIgnoreCase); + } + return string.Equals(na, nb, StringComparison.Ordinal); + } + catch + { + return false; + } + } + + public static void WriteAtomicFile(string path, string contents) + { + string tmp = path + ".tmp"; + string backup = path + ".backup"; + bool writeDone = false; + try + { + File.WriteAllText(tmp, contents, new UTF8Encoding(false)); + try + { + File.Replace(tmp, path, backup); + writeDone = true; + } + catch (FileNotFoundException) + { + File.Move(tmp, path); + writeDone = true; + } + catch (PlatformNotSupportedException) + { + if (File.Exists(path)) + { + try + { + if (File.Exists(backup)) File.Delete(backup); + } + catch { } + File.Move(path, backup); + } + File.Move(tmp, path); + writeDone = true; + } + } + catch (Exception ex) + { + try + { + if (!writeDone && File.Exists(backup)) + { + try { File.Copy(backup, path, true); } catch { } + } + } + catch { } + throw new Exception($"Failed to write config file '{path}': {ex.Message}", ex); + } + finally + { + try { if (File.Exists(tmp)) File.Delete(tmp); } catch { } + try { if (writeDone && File.Exists(backup)) File.Delete(backup); } catch { } + } + } + } +} diff --git a/Packages/MCPForUnity/Editor/Helpers/McpConfigurationHelper.cs.meta b/Packages/MCPForUnity/Editor/Helpers/McpConfigurationHelper.cs.meta new file mode 100644 index 00000000..17de56c8 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/McpConfigurationHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e45ac2a13b4c1ba468b8e3aa67b292ca +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Helpers/McpJobStateStore.cs b/Packages/MCPForUnity/Editor/Helpers/McpJobStateStore.cs new file mode 100644 index 00000000..5db093b3 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/McpJobStateStore.cs @@ -0,0 +1,62 @@ +using System; +using System.IO; +using Newtonsoft.Json; +using UnityEngine; + +namespace MCPForUnity.Editor.Helpers +{ + /// + /// Utility for persisting tool state across domain reloads. State is stored in + /// Library so it stays local to the project and is cleared by Unity as needed. + /// + public static class McpJobStateStore + { + private static string GetStatePath(string toolName) + { + if (string.IsNullOrEmpty(toolName)) + { + throw new ArgumentException("toolName cannot be null or empty", nameof(toolName)); + } + + var libraryPath = Path.Combine(Application.dataPath, "..", "Library"); + var fileName = $"McpState_{toolName}.json"; + return Path.GetFullPath(Path.Combine(libraryPath, fileName)); + } + + public static void SaveState(string toolName, T state) + { + var path = GetStatePath(toolName); + Directory.CreateDirectory(Path.GetDirectoryName(path)); + var json = JsonConvert.SerializeObject(state ?? Activator.CreateInstance()); + File.WriteAllText(path, json); + } + + public static T LoadState(string toolName) + { + var path = GetStatePath(toolName); + if (!File.Exists(path)) + { + return default; + } + + try + { + var json = File.ReadAllText(path); + return JsonConvert.DeserializeObject(json); + } + catch (Exception) + { + return default; + } + } + + public static void ClearState(string toolName) + { + var path = GetStatePath(toolName); + if (File.Exists(path)) + { + File.Delete(path); + } + } + } +} diff --git a/Packages/MCPForUnity/Editor/Helpers/McpJobStateStore.cs.meta b/Packages/MCPForUnity/Editor/Helpers/McpJobStateStore.cs.meta new file mode 100644 index 00000000..df45ef51 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/McpJobStateStore.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 28912085dd68342f8a9fda8a43c83a59 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Helpers/McpLog.cs b/Packages/MCPForUnity/Editor/Helpers/McpLog.cs new file mode 100644 index 00000000..ca9f7713 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/McpLog.cs @@ -0,0 +1,53 @@ +using MCPForUnity.Editor.Constants; +using UnityEditor; +using UnityEngine; + +namespace MCPForUnity.Editor.Helpers +{ + internal static class McpLog + { + private const string InfoPrefix = "MCP-FOR-UNITY:"; + private const string DebugPrefix = "MCP-FOR-UNITY:"; + private const string WarnPrefix = "MCP-FOR-UNITY:"; + private const string ErrorPrefix = "MCP-FOR-UNITY:"; + + private static volatile bool _debugEnabled = ReadDebugPreference(); + + private static bool IsDebugEnabled() => _debugEnabled; + + private static bool ReadDebugPreference() + { + try { return EditorPrefs.GetBool(EditorPrefKeys.DebugLogs, false); } + catch { return false; } + } + + public static void SetDebugLoggingEnabled(bool enabled) + { + _debugEnabled = enabled; + try { EditorPrefs.SetBool(EditorPrefKeys.DebugLogs, enabled); } + catch { } + } + + public static void Debug(string message) + { + if (!IsDebugEnabled()) return; + UnityEngine.Debug.Log($"{DebugPrefix} {message}"); + } + + public static void Info(string message, bool always = true) + { + if (!always && !IsDebugEnabled()) return; + UnityEngine.Debug.Log($"{InfoPrefix} {message}"); + } + + public static void Warn(string message) + { + UnityEngine.Debug.LogWarning($"{WarnPrefix} {message}"); + } + + public static void Error(string message) + { + UnityEngine.Debug.LogError($"{ErrorPrefix} {message}"); + } + } +} diff --git a/Packages/MCPForUnity/Editor/Helpers/McpLog.cs.meta b/Packages/MCPForUnity/Editor/Helpers/McpLog.cs.meta new file mode 100644 index 00000000..bbc0a775 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/McpLog.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9e2c3f8a4f4f48d8a4c1b7b8e3f5a1c2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Helpers/ObjectResolver.cs b/Packages/MCPForUnity/Editor/Helpers/ObjectResolver.cs new file mode 100644 index 00000000..ee351705 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/ObjectResolver.cs @@ -0,0 +1,202 @@ +using System; +using MCPForUnity.Editor.Helpers; +using Newtonsoft.Json.Linq; +using UnityEditor; +using UnityEngine; + +namespace MCPForUnity.Editor.Helpers +{ + /// + /// Resolves Unity Objects by instruction (handles GameObjects, Components, Assets). + /// Extracted from ManageGameObject to eliminate cross-tool dependencies. + /// + public static class ObjectResolver + { + /// + /// Resolves any Unity Object by instruction. + /// + /// The type of Unity Object to resolve + /// JObject with "find" (required), "method" (optional), "component" (optional) + /// The resolved object, or null if not found + public static T Resolve(JObject instruction) where T : UnityEngine.Object + { + return Resolve(instruction, typeof(T)) as T; + } + + /// + /// Resolves any Unity Object by instruction. + /// + /// JObject with "find" (required), "method" (optional), "component" (optional) + /// The type of Unity Object to resolve + /// The resolved object, or null if not found + public static UnityEngine.Object Resolve(JObject instruction, Type targetType) + { + if (instruction == null) + return null; + + string findTerm = instruction["find"]?.ToString(); + string method = instruction["method"]?.ToString()?.ToLower(); + string componentName = instruction["component"]?.ToString(); + + if (string.IsNullOrEmpty(findTerm)) + { + McpLog.Warn("[ObjectResolver] Find instruction missing 'find' term."); + return null; + } + + // Use a flexible default search method if none provided + string searchMethodToUse = string.IsNullOrEmpty(method) ? "by_id_or_name_or_path" : method; + + // --- Asset Search --- + // Normalize path separators before checking asset paths + string normalizedPath = AssetPathUtility.NormalizeSeparators(findTerm); + + // If the target is an asset type, try AssetDatabase first + if (IsAssetType(targetType) || + (typeof(GameObject).IsAssignableFrom(targetType) && normalizedPath.StartsWith("Assets/"))) + { + UnityEngine.Object asset = TryLoadAsset(normalizedPath, targetType); + if (asset != null) + return asset; + // If still not found, fall through to scene search + } + + // --- Scene Object Search --- + GameObject foundGo = GameObjectLookup.FindByTarget(new JValue(findTerm), searchMethodToUse, includeInactive: false); + + if (foundGo == null) + { + return null; + } + + // Get the target object/component from the found GameObject + if (targetType == typeof(GameObject)) + { + return foundGo; + } + else if (typeof(Component).IsAssignableFrom(targetType)) + { + Type componentToGetType = targetType; + if (!string.IsNullOrEmpty(componentName)) + { + Type specificCompType = GameObjectLookup.FindComponentType(componentName); + if (specificCompType != null && typeof(Component).IsAssignableFrom(specificCompType)) + { + componentToGetType = specificCompType; + } + else + { + McpLog.Warn($"[ObjectResolver] Could not find component type '{componentName}'. Falling back to target type '{targetType.Name}'."); + } + } + + Component foundComp = foundGo.GetComponent(componentToGetType); + if (foundComp == null) + { + McpLog.Warn($"[ObjectResolver] Found GameObject '{foundGo.name}' but could not find component of type '{componentToGetType.Name}'."); + } + return foundComp; + } + else + { + McpLog.Warn($"[ObjectResolver] Find instruction handling not implemented for target type: {targetType.Name}"); + return null; + } + } + + /// + /// Convenience method to resolve a GameObject. + /// + public static GameObject ResolveGameObject(JToken target, string searchMethod = null) + { + if (target == null) + return null; + + // If target is a simple value, use GameObjectLookup directly + if (target.Type != JTokenType.Object) + { + return GameObjectLookup.FindByTarget(target, searchMethod ?? "by_id_or_name_or_path"); + } + + // If target is an instruction object + var instruction = target as JObject; + if (instruction != null) + { + return Resolve(instruction); + } + + return null; + } + + /// + /// Convenience method to resolve a Material. + /// + public static Material ResolveMaterial(string pathOrName) + { + if (string.IsNullOrEmpty(pathOrName)) + return null; + + var instruction = new JObject { ["find"] = pathOrName }; + return Resolve(instruction); + } + + /// + /// Convenience method to resolve a Texture. + /// + public static Texture ResolveTexture(string pathOrName) + { + if (string.IsNullOrEmpty(pathOrName)) + return null; + + var instruction = new JObject { ["find"] = pathOrName }; + return Resolve(instruction); + } + + // --- Private Helpers --- + + private static bool IsAssetType(Type type) + { + return typeof(Material).IsAssignableFrom(type) || + typeof(Texture).IsAssignableFrom(type) || + typeof(ScriptableObject).IsAssignableFrom(type) || + type.FullName?.StartsWith("UnityEngine.U2D") == true || + typeof(AudioClip).IsAssignableFrom(type) || + typeof(AnimationClip).IsAssignableFrom(type) || + typeof(Font).IsAssignableFrom(type) || + typeof(Shader).IsAssignableFrom(type) || + typeof(ComputeShader).IsAssignableFrom(type); + } + + private static UnityEngine.Object TryLoadAsset(string findTerm, Type targetType) + { + // Try loading directly by path first + UnityEngine.Object asset = AssetDatabase.LoadAssetAtPath(findTerm, targetType); + if (asset != null) + return asset; + + // Try generic load if type-specific failed + asset = AssetDatabase.LoadAssetAtPath(findTerm); + if (asset != null && targetType.IsAssignableFrom(asset.GetType())) + return asset; + + // Try finding by name/type using FindAssets + string searchFilter = $"t:{targetType.Name} {System.IO.Path.GetFileNameWithoutExtension(findTerm)}"; + string[] guids = AssetDatabase.FindAssets(searchFilter); + + if (guids.Length == 1) + { + asset = AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath(guids[0]), targetType); + if (asset != null) + return asset; + } + else if (guids.Length > 1) + { + McpLog.Warn($"[ObjectResolver] Ambiguous asset find: Found {guids.Length} assets matching filter '{searchFilter}'. Provide a full path or unique name."); + return null; + } + + return null; + } + } +} + diff --git a/Packages/MCPForUnity/Editor/Helpers/ObjectResolver.cs.meta b/Packages/MCPForUnity/Editor/Helpers/ObjectResolver.cs.meta new file mode 100644 index 00000000..610a8f68 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/ObjectResolver.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ad678f7b0a2e6458bbdb38a15d857acf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Helpers/Pagination.cs b/Packages/MCPForUnity/Editor/Helpers/Pagination.cs new file mode 100644 index 00000000..e1d13873 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/Pagination.cs @@ -0,0 +1,149 @@ +using System.Collections.Generic; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; + +namespace MCPForUnity.Editor.Helpers +{ + /// + /// Standard pagination request for all paginated tool operations. + /// Provides consistent handling of page_size/pageSize and cursor/page_number parameters. + /// + public class PaginationRequest + { + /// + /// Number of items per page. Default is 50. + /// + public int PageSize { get; set; } = 50; + + /// + /// 0-based cursor position for the current page. + /// + public int Cursor { get; set; } = 0; + + /// + /// Creates a PaginationRequest from JObject parameters. + /// Accepts both snake_case and camelCase parameter names for flexibility. + /// Converts 1-based page_number to 0-based cursor if needed. + /// + public static PaginationRequest FromParams(JObject @params, int defaultPageSize = 50) + { + if (@params == null) + return new PaginationRequest { PageSize = defaultPageSize }; + + // Accept both page_size and pageSize + int pageSize = ParamCoercion.CoerceInt( + @params["page_size"] ?? @params["pageSize"], + defaultPageSize + ); + + // Accept both cursor (0-based) and page_number (convert 1-based to 0-based) + var cursorToken = @params["cursor"]; + var pageNumberToken = @params["page_number"] ?? @params["pageNumber"]; + + int cursor; + if (cursorToken != null) + { + cursor = ParamCoercion.CoerceInt(cursorToken, 0); + } + else if (pageNumberToken != null) + { + // Convert 1-based page_number to 0-based cursor + int pageNumber = ParamCoercion.CoerceInt(pageNumberToken, 1); + cursor = (pageNumber - 1) * pageSize; + if (cursor < 0) cursor = 0; + } + else + { + cursor = 0; + } + + return new PaginationRequest + { + PageSize = pageSize > 0 ? pageSize : defaultPageSize, + Cursor = cursor + }; + } + } + + /// + /// Standard pagination response for all paginated tool operations. + /// Provides consistent response structure across all tools. + /// + /// The type of items in the paginated list + public class PaginationResponse + { + /// + /// The items on the current page. + /// + [JsonProperty("items")] + public List Items { get; set; } = new List(); + + /// + /// The cursor position for the current page (0-based). + /// + [JsonProperty("cursor")] + public int Cursor { get; set; } + + /// + /// The cursor for the next page, or null if this is the last page. + /// + [JsonProperty("nextCursor")] + public int? NextCursor { get; set; } + + /// + /// Total number of items across all pages. + /// + [JsonProperty("totalCount")] + public int TotalCount { get; set; } + + /// + /// Number of items per page. + /// + [JsonProperty("pageSize")] + public int PageSize { get; set; } + + /// + /// Whether there are more items after this page. + /// + [JsonProperty("hasMore")] + public bool HasMore => NextCursor.HasValue; + + /// + /// Creates a PaginationResponse from a full list of items and pagination parameters. + /// + /// The full list of items to paginate + /// The pagination request parameters + /// A paginated response with the appropriate slice of items + public static PaginationResponse Create(IList allItems, PaginationRequest request) + { + int totalCount = allItems.Count; + int cursor = request.Cursor; + int pageSize = request.PageSize; + + // Clamp cursor to valid range + if (cursor < 0) cursor = 0; + if (cursor > totalCount) cursor = totalCount; + + // Get the page of items + var items = new List(); + int endIndex = System.Math.Min(cursor + pageSize, totalCount); + for (int i = cursor; i < endIndex; i++) + { + items.Add(allItems[i]); + } + + // Calculate next cursor + int? nextCursor = endIndex < totalCount ? endIndex : (int?)null; + + return new PaginationResponse + { + Items = items, + Cursor = cursor, + NextCursor = nextCursor, + TotalCount = totalCount, + PageSize = pageSize + }; + } + } +} + diff --git a/Packages/MCPForUnity/Editor/Helpers/Pagination.cs.meta b/Packages/MCPForUnity/Editor/Helpers/Pagination.cs.meta new file mode 100644 index 00000000..8d0479b6 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/Pagination.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 745564d5894d74c0ca24db39c77bab2c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Helpers/ParamCoercion.cs b/Packages/MCPForUnity/Editor/Helpers/ParamCoercion.cs new file mode 100644 index 00000000..d19d7bf4 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/ParamCoercion.cs @@ -0,0 +1,363 @@ +using System; +using System.Globalization; +using Newtonsoft.Json.Linq; + +namespace MCPForUnity.Editor.Helpers +{ + /// + /// Utility class for coercing JSON parameter values to strongly-typed values. + /// Handles various input formats (strings, numbers, booleans) gracefully. + /// + public static class ParamCoercion + { + /// + /// Coerces a JToken to an integer value, handling strings and floats. + /// + /// The JSON token to coerce + /// Default value if coercion fails + /// The coerced integer value or default + public static int CoerceInt(JToken token, int defaultValue) + { + if (token == null || token.Type == JTokenType.Null) + return defaultValue; + + try + { + if (token.Type == JTokenType.Integer) + return token.Value(); + + var s = token.ToString().Trim(); + if (s.Length == 0) + return defaultValue; + + if (int.TryParse(s, NumberStyles.Integer, CultureInfo.InvariantCulture, out var i)) + return i; + + if (double.TryParse(s, NumberStyles.Float, CultureInfo.InvariantCulture, out var d)) + return (int)d; + } + catch + { + // Swallow and return default + } + + return defaultValue; + } + + /// + /// Coerces a JToken to a nullable integer value. + /// Returns null if token is null, empty, or cannot be parsed. + /// + /// The JSON token to coerce + /// The coerced integer value or null + public static int? CoerceIntNullable(JToken token) + { + if (token == null || token.Type == JTokenType.Null) + return null; + + try + { + if (token.Type == JTokenType.Integer) + return token.Value(); + + var s = token.ToString().Trim(); + if (s.Length == 0) + return null; + + if (int.TryParse(s, NumberStyles.Integer, CultureInfo.InvariantCulture, out var i)) + return i; + + if (double.TryParse(s, NumberStyles.Float, CultureInfo.InvariantCulture, out var d)) + return (int)d; + } + catch + { + // Swallow and return null + } + + return null; + } + + /// + /// Coerces a JToken to a boolean value, handling strings like "true", "1", etc. + /// + /// The JSON token to coerce + /// Default value if coercion fails + /// The coerced boolean value or default + public static bool CoerceBool(JToken token, bool defaultValue) + { + if (token == null || token.Type == JTokenType.Null) + return defaultValue; + + try + { + if (token.Type == JTokenType.Boolean) + return token.Value(); + + var s = token.ToString().Trim().ToLowerInvariant(); + if (s.Length == 0) + return defaultValue; + + if (bool.TryParse(s, out var b)) + return b; + + if (s == "1" || s == "yes" || s == "on") + return true; + + if (s == "0" || s == "no" || s == "off") + return false; + } + catch + { + // Swallow and return default + } + + return defaultValue; + } + + /// + /// Coerces a JToken to a nullable boolean value. + /// Returns null if token is null, empty, or cannot be parsed. + /// + /// The JSON token to coerce + /// The coerced boolean value or null + public static bool? CoerceBoolNullable(JToken token) + { + if (token == null || token.Type == JTokenType.Null) + return null; + + try + { + if (token.Type == JTokenType.Boolean) + return token.Value(); + + var s = token.ToString().Trim().ToLowerInvariant(); + if (s.Length == 0) + return null; + + if (bool.TryParse(s, out var b)) + return b; + + if (s == "1" || s == "yes" || s == "on") + return true; + + if (s == "0" || s == "no" || s == "off") + return false; + } + catch + { + // Swallow and return null + } + + return null; + } + + /// + /// Coerces a JToken to a float value, handling strings and integers. + /// + /// The JSON token to coerce + /// Default value if coercion fails + /// The coerced float value or default + public static float CoerceFloat(JToken token, float defaultValue) + { + if (token == null || token.Type == JTokenType.Null) + return defaultValue; + + try + { + if (token.Type == JTokenType.Float || token.Type == JTokenType.Integer) + return token.Value(); + + var s = token.ToString().Trim(); + if (s.Length == 0) + return defaultValue; + + if (float.TryParse(s, NumberStyles.Float, CultureInfo.InvariantCulture, out var f)) + return f; + } + catch + { + // Swallow and return default + } + + return defaultValue; + } + + /// + /// Coerces a JToken to a nullable float value. + /// Returns null if token is null, empty, or cannot be parsed. + /// + /// The JSON token to coerce + /// The coerced float value or null + public static float? CoerceFloatNullable(JToken token) + { + if (token == null || token.Type == JTokenType.Null) + return null; + + try + { + if (token.Type == JTokenType.Float || token.Type == JTokenType.Integer) + return token.Value(); + + var s = token.ToString().Trim(); + if (s.Length == 0) + return null; + + if (float.TryParse(s, NumberStyles.Float, CultureInfo.InvariantCulture, out var f)) + return f; + } + catch + { + // Swallow and return null + } + + return null; + } + + /// + /// Coerces a JToken to a string value, with null handling. + /// + /// The JSON token to coerce + /// Default value if null or empty + /// The string value or default + public static string CoerceString(JToken token, string defaultValue = null) + { + if (token == null || token.Type == JTokenType.Null) + return defaultValue; + + var s = token.ToString(); + return string.IsNullOrEmpty(s) ? defaultValue : s; + } + + /// + /// Coerces a JToken to an enum value, handling strings. + /// + /// The enum type + /// The JSON token to coerce + /// Default value if coercion fails + /// The coerced enum value or default + public static T CoerceEnum(JToken token, T defaultValue) where T : struct, Enum + { + if (token == null || token.Type == JTokenType.Null) + return defaultValue; + + try + { + var s = token.ToString().Trim(); + if (s.Length == 0) + return defaultValue; + + if (Enum.TryParse(s, ignoreCase: true, out var result)) + return result; + } + catch + { + // Swallow and return default + } + + return defaultValue; + } + + /// + /// Checks if a JToken represents a numeric value (integer or float). + /// Useful for validating JSON values before parsing. + /// + /// The JSON token to check + /// True if the token is an integer or float, false otherwise + public static bool IsNumericToken(JToken token) + { + return token != null && (token.Type == JTokenType.Integer || token.Type == JTokenType.Float); + } + + /// + /// Validates that an optional field in a JObject is numeric if present. + /// Used for dry-run validation of complex type formats. + /// + /// The JSON object containing the field + /// The name of the field to validate + /// Output error message if validation fails + /// True if the field is absent, null, or numeric; false if present but non-numeric + public static bool ValidateNumericField(JObject obj, string fieldName, out string error) + { + error = null; + var token = obj[fieldName]; + if (token == null || token.Type == JTokenType.Null) + { + return true; // Field not present, valid (will use default) + } + if (!IsNumericToken(token)) + { + error = $"must be a number, got {token.Type}"; + return false; + } + return true; + } + + /// + /// Validates that an optional field in a JObject is an integer if present. + /// Used for dry-run validation of complex type formats. + /// + /// The JSON object containing the field + /// The name of the field to validate + /// Output error message if validation fails + /// True if the field is absent, null, or integer; false if present but non-integer + public static bool ValidateIntegerField(JObject obj, string fieldName, out string error) + { + error = null; + var token = obj[fieldName]; + if (token == null || token.Type == JTokenType.Null) + { + return true; // Field not present, valid + } + if (token.Type != JTokenType.Integer) + { + error = $"must be an integer, got {token.Type}"; + return false; + } + return true; + } + + /// + /// Normalizes a property name by removing separators and converting to camelCase. + /// Handles common naming variations from LLMs and humans. + /// Examples: + /// "Use Gravity" → "useGravity" + /// "is_kinematic" → "isKinematic" + /// "max-angular-velocity" → "maxAngularVelocity" + /// "Angular Drag" → "angularDrag" + /// + /// The property name to normalize + /// The normalized camelCase property name + public static string NormalizePropertyName(string input) + { + if (string.IsNullOrEmpty(input)) + return input; + + // Split on common separators: space, underscore, dash + var parts = input.Split(new[] { ' ', '_', '-' }, StringSplitOptions.RemoveEmptyEntries); + if (parts.Length == 0) + return input; + + // First word is lowercase, subsequent words are Title case (camelCase) + var sb = new System.Text.StringBuilder(); + for (int i = 0; i < parts.Length; i++) + { + string part = parts[i]; + if (i == 0) + { + // First word: all lowercase + sb.Append(part.ToLowerInvariant()); + } + else + { + // Subsequent words: capitalize first letter, lowercase rest + sb.Append(char.ToUpperInvariant(part[0])); + if (part.Length > 1) + sb.Append(part.Substring(1).ToLowerInvariant()); + } + } + return sb.ToString(); + } + } +} + diff --git a/Packages/MCPForUnity/Editor/Helpers/ParamCoercion.cs.meta b/Packages/MCPForUnity/Editor/Helpers/ParamCoercion.cs.meta new file mode 100644 index 00000000..36b9ec68 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/ParamCoercion.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: db54fbbe3ac7f429fbf808f72831374a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Helpers/PortManager.cs b/Packages/MCPForUnity/Editor/Helpers/PortManager.cs new file mode 100644 index 00000000..de46fd8f --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/PortManager.cs @@ -0,0 +1,345 @@ +using System; +using System.IO; +using System.Net; +using System.Net.Sockets; +using System.Security.Cryptography; +using System.Text; +using System.Threading; +using MCPForUnity.Editor.Constants; +using Newtonsoft.Json; +using UnityEditor; +using UnityEngine; + +namespace MCPForUnity.Editor.Helpers +{ + /// + /// Manages dynamic port allocation and persistent storage for MCP for Unity + /// + public static class PortManager + { + private static bool IsDebugEnabled() + { + try { return EditorPrefs.GetBool(EditorPrefKeys.DebugLogs, false); } + catch { return false; } + } + + private const int DefaultPort = 6400; + private const int MaxPortAttempts = 100; + private const string RegistryFileName = "unity-mcp-port.json"; + + [Serializable] + public class PortConfig + { + public int unity_port; + public string created_date; + public string project_path; + } + + /// + /// Get the port to use from storage, or return the default if none has been saved yet. + /// + /// Port number to use + public static int GetPortWithFallback() + { + var storedConfig = GetStoredPortConfig(); + if (storedConfig != null && + storedConfig.unity_port > 0 && + string.Equals(storedConfig.project_path ?? string.Empty, Application.dataPath ?? string.Empty, StringComparison.OrdinalIgnoreCase)) + { + return storedConfig.unity_port; + } + + return DefaultPort; + } + + /// + /// Discover and save a new available port (used by Auto-Connect button) + /// + /// New available port + public static int DiscoverNewPort() + { + int newPort = FindAvailablePort(); + SavePort(newPort); + if (IsDebugEnabled()) McpLog.Info($"Discovered and saved new port: {newPort}"); + return newPort; + } + + /// + /// Persist a user-selected port and return the value actually stored. + /// If is unavailable, the next available port is chosen instead. + /// + public static int SetPreferredPort(int port) + { + if (port <= 0) + { + throw new ArgumentOutOfRangeException(nameof(port), "Port must be positive."); + } + + if (!IsPortAvailable(port)) + { + throw new InvalidOperationException($"Port {port} is already in use."); + } + + SavePort(port); + return port; + } + + /// + /// Find an available port starting from the default port + /// + /// Available port number + private static int FindAvailablePort() + { + // Always try default port first + if (IsPortAvailable(DefaultPort)) + { + if (IsDebugEnabled()) McpLog.Info($"Using default port {DefaultPort}"); + return DefaultPort; + } + + if (IsDebugEnabled()) McpLog.Info($"Default port {DefaultPort} is in use, searching for alternative..."); + + // Search for alternatives + for (int port = DefaultPort + 1; port < DefaultPort + MaxPortAttempts; port++) + { + if (IsPortAvailable(port)) + { + if (IsDebugEnabled()) McpLog.Info($"Found available port {port}"); + return port; + } + } + + throw new Exception($"No available ports found in range {DefaultPort}-{DefaultPort + MaxPortAttempts}"); + } + + /// + /// Check if a specific port is available for binding + /// + /// Port to check + /// True if port is available + public static bool IsPortAvailable(int port) + { + // Start with quick loopback check + try + { + var testListener = new TcpListener(IPAddress.Loopback, port); + testListener.Start(); + testListener.Stop(); + } + catch (SocketException) + { + return false; + } + +#if UNITY_EDITOR_OSX + // On macOS, the OS might report the port as available (SO_REUSEADDR) even if another process + // is using it, unless we also check active connections or try a stricter bind. + // Double check by trying to Connect to it. If we CAN connect, it's NOT available. + try + { + using var client = new TcpClient(); + var connectTask = client.ConnectAsync(IPAddress.Loopback, port); + // If we connect successfully, someone is listening -> Not available + if (connectTask.Wait(50) && client.Connected) + { + if (IsDebugEnabled()) McpLog.Info($"[PortManager] Port {port} bind succeeded but connection also succeeded -> Not available (Conflict)."); + return false; + } + } + catch + { + // Connection failed -> likely available (or firewall blocked, but we assume available) + if (IsDebugEnabled()) McpLog.Info($"[PortManager] Port {port} connection failed -> likely available."); + } +#endif + + return true; + } + + /// + /// Check if a port is currently being used by MCP for Unity + /// This helps avoid unnecessary port changes when Unity itself is using the port + /// + /// Port to check + /// True if port appears to be used by MCP for Unity + public static bool IsPortUsedByMCPForUnity(int port) + { + try + { + // Try to make a quick connection to see if it's an MCP for Unity server + using var client = new TcpClient(); + var connectTask = client.ConnectAsync(IPAddress.Loopback, port); + if (connectTask.Wait(100)) // 100ms timeout + { + // If connection succeeded, it's likely the MCP for Unity server + return client.Connected; + } + return false; + } + catch + { + return false; + } + } + + /// + /// Wait for a port to become available for a limited amount of time. + /// Used to bridge the gap during domain reload when the old listener + /// hasn't released the socket yet. + /// + private static bool WaitForPortRelease(int port, int timeoutMs) + { + int waited = 0; + const int step = 100; + while (waited < timeoutMs) + { + if (IsPortAvailable(port)) + { + return true; + } + + // If the port is in use by an MCP instance, continue waiting briefly + if (!IsPortUsedByMCPForUnity(port)) + { + // In use by something else; don't keep waiting + return false; + } + + Thread.Sleep(step); + waited += step; + } + return IsPortAvailable(port); + } + + /// + /// Save port to persistent storage + /// + /// Port to save + private static void SavePort(int port) + { + try + { + var portConfig = new PortConfig + { + unity_port = port, + created_date = DateTime.UtcNow.ToString("O"), + project_path = Application.dataPath + }; + + string registryDir = GetRegistryDirectory(); + Directory.CreateDirectory(registryDir); + + string registryFile = GetRegistryFilePath(); + string json = JsonConvert.SerializeObject(portConfig, Formatting.Indented); + // Write to hashed, project-scoped file + File.WriteAllText(registryFile, json, new System.Text.UTF8Encoding(false)); + // Also write to legacy stable filename to avoid hash/case drift across reloads + string legacy = Path.Combine(GetRegistryDirectory(), RegistryFileName); + File.WriteAllText(legacy, json, new System.Text.UTF8Encoding(false)); + + if (IsDebugEnabled()) McpLog.Info($"Saved port {port} to storage"); + } + catch (Exception ex) + { + McpLog.Warn($"Could not save port to storage: {ex.Message}"); + } + } + + /// + /// Load port from persistent storage + /// + /// Stored port number, or 0 if not found + private static int LoadStoredPort() + { + try + { + string registryFile = GetRegistryFilePath(); + + if (!File.Exists(registryFile)) + { + // Backwards compatibility: try the legacy file name + string legacy = Path.Combine(GetRegistryDirectory(), RegistryFileName); + if (!File.Exists(legacy)) + { + return 0; + } + registryFile = legacy; + } + + string json = File.ReadAllText(registryFile); + var portConfig = JsonConvert.DeserializeObject(json); + + return portConfig?.unity_port ?? 0; + } + catch (Exception ex) + { + McpLog.Warn($"Could not load port from storage: {ex.Message}"); + return 0; + } + } + + /// + /// Get the current stored port configuration + /// + /// Port configuration if exists, null otherwise + public static PortConfig GetStoredPortConfig() + { + try + { + string registryFile = GetRegistryFilePath(); + + if (!File.Exists(registryFile)) + { + // Backwards compatibility: try the legacy file + string legacy = Path.Combine(GetRegistryDirectory(), RegistryFileName); + if (!File.Exists(legacy)) + { + return null; + } + registryFile = legacy; + } + + string json = File.ReadAllText(registryFile); + return JsonConvert.DeserializeObject(json); + } + catch (Exception ex) + { + McpLog.Warn($"Could not load port config: {ex.Message}"); + return null; + } + } + + private static string GetRegistryDirectory() + { + return Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".unity-mcp"); + } + + private static string GetRegistryFilePath() + { + string dir = GetRegistryDirectory(); + string hash = ComputeProjectHash(Application.dataPath); + string fileName = $"unity-mcp-port-{hash}.json"; + return Path.Combine(dir, fileName); + } + + private static string ComputeProjectHash(string input) + { + try + { + using SHA1 sha1 = SHA1.Create(); + byte[] bytes = Encoding.UTF8.GetBytes(input ?? string.Empty); + byte[] hashBytes = sha1.ComputeHash(bytes); + var sb = new StringBuilder(); + foreach (byte b in hashBytes) + { + sb.Append(b.ToString("x2")); + } + return sb.ToString()[..8]; // short, sufficient for filenames + } + catch + { + return "default"; + } + } + } +} diff --git a/Packages/MCPForUnity/Editor/Helpers/PortManager.cs.meta b/Packages/MCPForUnity/Editor/Helpers/PortManager.cs.meta new file mode 100644 index 00000000..17fd3ef1 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/PortManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 28c39813a10b4331afc764a04089cbef +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Helpers/PrefabUtilityHelper.cs b/Packages/MCPForUnity/Editor/Helpers/PrefabUtilityHelper.cs new file mode 100644 index 00000000..88397fb6 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/PrefabUtilityHelper.cs @@ -0,0 +1,228 @@ +using System; +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; + +namespace MCPForUnity.Editor.Helpers +{ + /// + /// Provides common utility methods for working with Unity Prefab assets. + /// + public static class PrefabUtilityHelper + { + /// + /// Gets the GUID for a prefab asset path. + /// + /// The Unity asset path (e.g., "Assets/Prefabs/MyPrefab.prefab") + /// The GUID string, or null if the path is invalid. + public static string GetPrefabGUID(string assetPath) + { + if (string.IsNullOrEmpty(assetPath)) + { + return null; + } + + try + { + return AssetDatabase.AssetPathToGUID(assetPath); + } + catch (Exception ex) + { + McpLog.Warn($"Failed to get GUID for asset path '{assetPath}': {ex.Message}"); + return null; + } + } + + /// + /// Gets variant information if the prefab is a variant. + /// + /// The prefab GameObject to check. + /// A tuple containing (isVariant, parentPath, parentGuid). + public static (bool isVariant, string parentPath, string parentGuid) GetVariantInfo(GameObject prefabAsset) + { + if (prefabAsset == null) + { + return (false, null, null); + } + + try + { + PrefabAssetType assetType = PrefabUtility.GetPrefabAssetType(prefabAsset); + if (assetType != PrefabAssetType.Variant) + { + return (false, null, null); + } + + GameObject parentAsset = PrefabUtility.GetCorrespondingObjectFromSource(prefabAsset); + if (parentAsset == null) + { + return (true, null, null); + } + + string parentPath = AssetDatabase.GetAssetPath(parentAsset); + string parentGuid = GetPrefabGUID(parentPath); + + return (true, parentPath, parentGuid); + } + catch (Exception ex) + { + McpLog.Warn($"Failed to get variant info for '{prefabAsset.name}': {ex.Message}"); + return (false, null, null); + } + } + + /// + /// Gets the list of component type names on a GameObject. + /// + /// The GameObject to inspect. + /// A list of component type full names. + public static List GetComponentTypeNames(GameObject obj) + { + var typeNames = new List(); + + if (obj == null) + { + return typeNames; + } + + try + { + var components = obj.GetComponents(); + foreach (var component in components) + { + if (component != null) + { + typeNames.Add(component.GetType().FullName); + } + } + } + catch (Exception ex) + { + McpLog.Warn($"Failed to get component types for '{obj.name}': {ex.Message}"); + } + + return typeNames; + } + + /// + /// Recursively counts all children in the hierarchy. + /// + /// The root transform to count from. + /// Total number of children in the hierarchy. + public static int CountChildrenRecursive(Transform transform) + { + if (transform == null) + { + return 0; + } + + int count = transform.childCount; + for (int i = 0; i < transform.childCount; i++) + { + count += CountChildrenRecursive(transform.GetChild(i)); + } + return count; + } + + /// + /// Gets the source prefab path for a nested prefab instance. + /// + /// The GameObject to check. + /// The asset path of the source prefab, or null if not a nested prefab. + public static string GetNestedPrefabPath(GameObject gameObject) + { + if (gameObject == null || !PrefabUtility.IsAnyPrefabInstanceRoot(gameObject)) + { + return null; + } + + try + { + var sourcePrefab = PrefabUtility.GetCorrespondingObjectFromSource(gameObject); + if (sourcePrefab != null) + { + return AssetDatabase.GetAssetPath(sourcePrefab); + } + } + catch (Exception ex) + { + McpLog.Warn($"Failed to get nested prefab path for '{gameObject.name}': {ex.Message}"); + } + + return null; + } + + /// + /// Gets the nesting depth of a prefab instance within the prefab hierarchy. + /// Returns 0 for main prefab root, 1 for first-level nested, 2 for second-level, etc. + /// Returns -1 for non-prefab-root objects. + /// + /// The GameObject to analyze. + /// The root transform of the main prefab asset. + /// Nesting depth (0=main root, 1+=nested), or -1 if not a prefab root. + public static int GetPrefabNestingDepth(GameObject gameObject, Transform mainPrefabRoot) + { + if (gameObject == null) + return -1; + + // Main prefab root + if (gameObject.transform == mainPrefabRoot) + return 0; + + // Not a prefab instance root + if (!PrefabUtility.IsAnyPrefabInstanceRoot(gameObject)) + return -1; + + // Calculate depth by walking up the hierarchy + int depth = 0; + Transform current = gameObject.transform; + + while (current != null && current != mainPrefabRoot) + { + if (PrefabUtility.IsAnyPrefabInstanceRoot(current.gameObject)) + { + depth++; + } + current = current.parent; + } + + return depth; + } + + /// + /// Gets the parent prefab path for a nested prefab instance. + /// Returns null for main prefab root or non-prefab objects. + /// + /// The GameObject to analyze. + /// The root transform of the main prefab asset. + /// The asset path of the parent prefab, or null if none. + public static string GetParentPrefabPath(GameObject gameObject, Transform mainPrefabRoot) + { + if (gameObject == null || gameObject.transform == mainPrefabRoot) + return null; + + if (!PrefabUtility.IsAnyPrefabInstanceRoot(gameObject)) + return null; + + // Walk up the hierarchy to find the parent prefab instance + Transform current = gameObject.transform.parent; + + while (current != null && current != mainPrefabRoot) + { + if (PrefabUtility.IsAnyPrefabInstanceRoot(current.gameObject)) + { + return GetNestedPrefabPath(current.gameObject); + } + current = current.parent; + } + + // Parent is the main prefab root - get its asset path + if (mainPrefabRoot != null) + { + return AssetDatabase.GetAssetPath(mainPrefabRoot.gameObject); + } + + return null; + } + } +} diff --git a/Packages/MCPForUnity/Editor/Helpers/PrefabUtilityHelper.cs.meta b/Packages/MCPForUnity/Editor/Helpers/PrefabUtilityHelper.cs.meta new file mode 100644 index 00000000..0f23694a --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/PrefabUtilityHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ebe2be77e64f4d4f811614b198210017 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Helpers/ProjectIdentityUtility.cs b/Packages/MCPForUnity/Editor/Helpers/ProjectIdentityUtility.cs new file mode 100644 index 00000000..34a53916 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/ProjectIdentityUtility.cs @@ -0,0 +1,260 @@ +using System; +using System.IO; +using System.Security.Cryptography; +using System.Text; +using MCPForUnity.Editor.Constants; +using UnityEditor; +using UnityEngine; + +namespace MCPForUnity.Editor.Helpers +{ + /// + /// Provides shared utilities for deriving deterministic project identity information + /// used by transport clients (hash, name, persistent session id). + /// + [InitializeOnLoad] + internal static class ProjectIdentityUtility + { + private const string SessionPrefKey = EditorPrefKeys.SessionId; + private static bool _legacyKeyCleared; + private static string _cachedProjectName = "Unknown"; + private static string _cachedProjectHash = "default"; + private static string _fallbackSessionId; + private static bool _cacheScheduled; + + static ProjectIdentityUtility() + { + ScheduleCacheRefresh(); + EditorApplication.projectChanged += ScheduleCacheRefresh; + } + + private static void ScheduleCacheRefresh() + { + if (_cacheScheduled) + { + return; + } + + _cacheScheduled = true; + EditorApplication.delayCall += CacheIdentityOnMainThread; + } + + private static void CacheIdentityOnMainThread() + { + EditorApplication.delayCall -= CacheIdentityOnMainThread; + _cacheScheduled = false; + UpdateIdentityCache(); + } + + private static void UpdateIdentityCache() + { + try + { + string dataPath = Application.dataPath; + if (string.IsNullOrEmpty(dataPath)) + { + return; + } + + _cachedProjectHash = ComputeProjectHash(dataPath); + _cachedProjectName = ComputeProjectName(dataPath); + } + catch + { + // Ignore and keep defaults + } + } + + /// + /// Returns the SHA1 hash of the current project path (truncated to 16 characters). + /// Matches the legacy hash used by the stdio bridge and server registry. + /// + public static string GetProjectHash() + { + EnsureIdentityCache(); + return _cachedProjectHash; + } + + /// + /// Returns a human friendly project name derived from the Assets directory path, + /// or "Unknown" if the name cannot be determined. + /// + public static string GetProjectName() + { + EnsureIdentityCache(); + return _cachedProjectName; + } + + private static string ComputeProjectHash(string dataPath) + { + try + { + using SHA1 sha1 = SHA1.Create(); + byte[] bytes = Encoding.UTF8.GetBytes(dataPath); + byte[] hashBytes = sha1.ComputeHash(bytes); + var sb = new StringBuilder(); + foreach (byte b in hashBytes) + { + sb.Append(b.ToString("x2")); + } + return sb.ToString(0, Math.Min(16, sb.Length)).ToLowerInvariant(); + } + catch + { + return "default"; + } + } + + private static string ComputeProjectName(string dataPath) + { + try + { + string projectPath = dataPath; + projectPath = projectPath.TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar); + if (projectPath.EndsWith("Assets", StringComparison.OrdinalIgnoreCase)) + { + projectPath = projectPath[..^6].TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar); + } + + string name = Path.GetFileName(projectPath); + return string.IsNullOrEmpty(name) ? "Unknown" : name; + } + catch + { + return "Unknown"; + } + } + + /// + /// Persists a server-assigned session id. + /// Safe to call from background threads. + /// + public static void SetSessionId(string sessionId) + { + if (string.IsNullOrEmpty(sessionId)) + { + return; + } + + EditorApplication.delayCall += () => + { + try + { + string projectHash = GetProjectHash(); + string projectSpecificKey = $"{SessionPrefKey}_{projectHash}"; + EditorPrefs.SetString(projectSpecificKey, sessionId); + } + catch (Exception ex) + { + McpLog.Warn($"Failed to persist session ID: {ex.Message}"); + } + }; + } + + /// + /// Retrieves a persistent session id for the plugin, creating one if absent. + /// The session id is unique per project (scoped by project hash). + /// + public static string GetOrCreateSessionId() + { + try + { + // Make the session ID project-specific by including the project hash in the key + string projectHash = GetProjectHash(); + string projectSpecificKey = $"{SessionPrefKey}_{projectHash}"; + + string sessionId = EditorPrefs.GetString(projectSpecificKey, string.Empty); + if (string.IsNullOrEmpty(sessionId)) + { + sessionId = Guid.NewGuid().ToString(); + EditorPrefs.SetString(projectSpecificKey, sessionId); + } + return sessionId; + } + catch + { + // If prefs are unavailable (e.g. during batch tests) fall back to runtime guid. + if (string.IsNullOrEmpty(_fallbackSessionId)) + { + _fallbackSessionId = Guid.NewGuid().ToString(); + } + + return _fallbackSessionId; + } + } + + /// + /// Clears the persisted session id (mainly for tests). + /// + public static void ResetSessionId() + { + try + { + // Clear the project-specific session ID + string projectHash = GetProjectHash(); + string projectSpecificKey = $"{SessionPrefKey}_{projectHash}"; + + if (EditorPrefs.HasKey(projectSpecificKey)) + { + EditorPrefs.DeleteKey(projectSpecificKey); + } + + if (!_legacyKeyCleared && EditorPrefs.HasKey(SessionPrefKey)) + { + EditorPrefs.DeleteKey(SessionPrefKey); + _legacyKeyCleared = true; + } + + _fallbackSessionId = null; + } + catch + { + // Ignore + } + } + + private static void EnsureIdentityCache() + { + // When Application.dataPath is unavailable (e.g., batch mode) we fall back to + // hashing the current working directory/Assets path so each project still + // derives a deterministic, per-project session id rather than sharing "default". + if (!string.IsNullOrEmpty(_cachedProjectHash) && _cachedProjectHash != "default") + { + return; + } + + UpdateIdentityCache(); + + if (!string.IsNullOrEmpty(_cachedProjectHash) && _cachedProjectHash != "default") + { + return; + } + + string fallback = TryComputeFallbackProjectHash(); + if (!string.IsNullOrEmpty(fallback)) + { + _cachedProjectHash = fallback; + } + } + + private static string TryComputeFallbackProjectHash() + { + try + { + string workingDirectory = Directory.GetCurrentDirectory(); + if (string.IsNullOrEmpty(workingDirectory)) + { + return "default"; + } + + // Normalise trailing separators so hashes remain stable + workingDirectory = workingDirectory.TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar); + return ComputeProjectHash(Path.Combine(workingDirectory, "Assets")); + } + catch + { + return "default"; + } + } + } +} diff --git a/Packages/MCPForUnity/Editor/Helpers/ProjectIdentityUtility.cs.meta b/Packages/MCPForUnity/Editor/Helpers/ProjectIdentityUtility.cs.meta new file mode 100644 index 00000000..b7879e1f --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/ProjectIdentityUtility.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 936e878ce1275453bae5e0cf03bd9d30 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Helpers/PropertyConversion.cs b/Packages/MCPForUnity/Editor/Helpers/PropertyConversion.cs new file mode 100644 index 00000000..0e3af0ae --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/PropertyConversion.cs @@ -0,0 +1,93 @@ +using System; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using MCPForUnity.Editor.Helpers; +using UnityEditor; +using UnityEngine; + +namespace MCPForUnity.Editor.Helpers +{ + /// + /// Unified property conversion from JSON to Unity types. + /// Uses UnityJsonSerializer for consistent type handling. + /// + public static class PropertyConversion + { + /// + /// Converts a JToken to the specified target type using Unity type converters. + /// + /// The JSON token to convert + /// The target type to convert to + /// The converted object, or null if conversion fails + public static object ConvertToType(JToken token, Type targetType) + { + if (token == null || token.Type == JTokenType.Null) + { + if (targetType.IsValueType && Nullable.GetUnderlyingType(targetType) == null) + { + McpLog.Warn($"[PropertyConversion] Cannot assign null to non-nullable value type {targetType.Name}. Returning default value."); + return Activator.CreateInstance(targetType); + } + return null; + } + + try + { + // Use the shared Unity serializer with custom converters + return token.ToObject(targetType, UnityJsonSerializer.Instance); + } + catch (Exception ex) + { + McpLog.Error($"Error converting token to {targetType.FullName}: {ex.Message}\nToken: {token.ToString(Formatting.None)}"); + throw; + } + } + + /// + /// Tries to convert a JToken to the specified target type. + /// Returns null and logs warning on failure (does not throw). + /// + public static object TryConvertToType(JToken token, Type targetType) + { + try + { + return ConvertToType(token, targetType); + } + catch + { + return null; + } + } + + /// + /// Generic version of ConvertToType. + /// + public static T ConvertTo(JToken token) + { + return (T)ConvertToType(token, typeof(T)); + } + + /// + /// Converts a JToken to a Unity asset by loading from path. + /// + /// JToken containing asset path + /// Expected asset type + /// The loaded asset, or null if not found + public static UnityEngine.Object LoadAssetFromToken(JToken token, Type targetType) + { + if (token == null || token.Type != JTokenType.String) + return null; + + string assetPath = AssetPathUtility.SanitizeAssetPath(token.ToString()); + UnityEngine.Object loadedAsset = AssetDatabase.LoadAssetAtPath(assetPath, targetType); + + if (loadedAsset == null) + { + McpLog.Warn($"[PropertyConversion] Could not load asset of type {targetType.Name} from path: {assetPath}"); + } + + return loadedAsset; + } + } +} + diff --git a/Packages/MCPForUnity/Editor/Helpers/PropertyConversion.cs.meta b/Packages/MCPForUnity/Editor/Helpers/PropertyConversion.cs.meta new file mode 100644 index 00000000..098528c5 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/PropertyConversion.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4b4187d5b338a453fbe0baceaeea6bcd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Helpers/RenderPipelineUtility.cs b/Packages/MCPForUnity/Editor/Helpers/RenderPipelineUtility.cs new file mode 100644 index 00000000..2065d173 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/RenderPipelineUtility.cs @@ -0,0 +1,284 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Rendering; +using UnityEditor; + +namespace MCPForUnity.Editor.Helpers +{ + internal static class RenderPipelineUtility + { + internal enum PipelineKind + { + BuiltIn, + Universal, + HighDefinition, + Custom + } + + internal enum VFXComponentType + { + ParticleSystem, + LineRenderer, + TrailRenderer + } + + private static Dictionary s_DefaultVFXMaterials = new Dictionary(); + + private static readonly string[] BuiltInLitShaders = { "Standard", "Legacy Shaders/Diffuse" }; + private static readonly string[] BuiltInUnlitShaders = { "Unlit/Color", "Unlit/Texture" }; + private static readonly string[] UrpLitShaders = { "Universal Render Pipeline/Lit", "Universal Render Pipeline/Simple Lit" }; + private static readonly string[] UrpUnlitShaders = { "Universal Render Pipeline/Unlit" }; + private static readonly string[] HdrpLitShaders = { "HDRP/Lit", "High Definition Render Pipeline/Lit" }; + private static readonly string[] HdrpUnlitShaders = { "HDRP/Unlit", "High Definition Render Pipeline/Unlit" }; + + internal static PipelineKind GetActivePipeline() + { + var asset = GraphicsSettings.currentRenderPipeline; + if (asset == null) + { + return PipelineKind.BuiltIn; + } + + var typeName = asset.GetType().FullName ?? string.Empty; + if (typeName.IndexOf("HighDefinition", StringComparison.OrdinalIgnoreCase) >= 0 || + typeName.IndexOf("HDRP", StringComparison.OrdinalIgnoreCase) >= 0) + { + return PipelineKind.HighDefinition; + } + + if (typeName.IndexOf("Universal", StringComparison.OrdinalIgnoreCase) >= 0 || + typeName.IndexOf("URP", StringComparison.OrdinalIgnoreCase) >= 0) + { + return PipelineKind.Universal; + } + + return PipelineKind.Custom; + } + + internal static Shader ResolveShader(string requestedNameOrAlias) + { + var pipeline = GetActivePipeline(); + + if (!string.IsNullOrWhiteSpace(requestedNameOrAlias)) + { + var alias = requestedNameOrAlias.Trim(); + var aliasMatch = ResolveAlias(alias, pipeline); + if (aliasMatch != null) + { + WarnIfPipelineMismatch(aliasMatch.name, pipeline); + return aliasMatch; + } + + var direct = Shader.Find(alias); + if (direct != null) + { + WarnIfPipelineMismatch(direct.name, pipeline); + return direct; + } + + McpLog.Warn($"Shader '{alias}' not found. Falling back to {pipeline} defaults."); + } + + var fallback = ResolveDefaultLitShader(pipeline) + ?? ResolveDefaultLitShader(PipelineKind.BuiltIn) + ?? Shader.Find("Unlit/Color"); + + if (fallback != null) + { + WarnIfPipelineMismatch(fallback.name, pipeline); + } + + return fallback; + } + + internal static Shader ResolveDefaultLitShader(PipelineKind pipeline) + { + return pipeline switch + { + PipelineKind.HighDefinition => TryFindShader(HdrpLitShaders) ?? TryFindShader(UrpLitShaders), + PipelineKind.Universal => TryFindShader(UrpLitShaders) ?? TryFindShader(HdrpLitShaders), + PipelineKind.Custom => TryFindShader(BuiltInLitShaders) ?? TryFindShader(UrpLitShaders) ?? TryFindShader(HdrpLitShaders), + _ => TryFindShader(BuiltInLitShaders) ?? Shader.Find("Unlit/Color") + }; + } + + internal static Shader ResolveDefaultUnlitShader(PipelineKind pipeline) + { + return pipeline switch + { + PipelineKind.HighDefinition => TryFindShader(HdrpUnlitShaders) ?? TryFindShader(UrpUnlitShaders) ?? TryFindShader(BuiltInUnlitShaders), + PipelineKind.Universal => TryFindShader(UrpUnlitShaders) ?? TryFindShader(HdrpUnlitShaders) ?? TryFindShader(BuiltInUnlitShaders), + PipelineKind.Custom => TryFindShader(BuiltInUnlitShaders) ?? TryFindShader(UrpUnlitShaders) ?? TryFindShader(HdrpUnlitShaders), + _ => TryFindShader(BuiltInUnlitShaders) + }; + } + + private static Shader ResolveAlias(string alias, PipelineKind pipeline) + { + if (string.Equals(alias, "lit", StringComparison.OrdinalIgnoreCase) || + string.Equals(alias, "default", StringComparison.OrdinalIgnoreCase) || + string.Equals(alias, "default_lit", StringComparison.OrdinalIgnoreCase) || + string.Equals(alias, "standard", StringComparison.OrdinalIgnoreCase)) + { + return ResolveDefaultLitShader(pipeline); + } + + if (string.Equals(alias, "unlit", StringComparison.OrdinalIgnoreCase)) + { + return ResolveDefaultUnlitShader(pipeline); + } + + if (string.Equals(alias, "urp_lit", StringComparison.OrdinalIgnoreCase)) + { + return TryFindShader(UrpLitShaders); + } + + if (string.Equals(alias, "hdrp_lit", StringComparison.OrdinalIgnoreCase)) + { + return TryFindShader(HdrpLitShaders); + } + + if (string.Equals(alias, "built_in_lit", StringComparison.OrdinalIgnoreCase)) + { + return TryFindShader(BuiltInLitShaders); + } + + return null; + } + + private static Shader TryFindShader(params string[] shaderNames) + { + foreach (var shaderName in shaderNames) + { + var shader = Shader.Find(shaderName); + if (shader != null) + { + return shader; + } + } + return null; + } + + private static void WarnIfPipelineMismatch(string shaderName, PipelineKind activePipeline) + { + if (string.IsNullOrEmpty(shaderName)) + { + return; + } + + var lowerName = shaderName.ToLowerInvariant(); + bool shaderLooksUrp = lowerName.Contains("universal render pipeline") || lowerName.Contains("urp/"); + bool shaderLooksHdrp = lowerName.Contains("high definition render pipeline") || lowerName.Contains("hdrp/"); + bool shaderLooksBuiltin = lowerName.Contains("standard") || lowerName.Contains("legacy shaders/"); + bool shaderLooksSrp = shaderLooksUrp || shaderLooksHdrp; + + switch (activePipeline) + { + case PipelineKind.HighDefinition: + if (shaderLooksUrp) + { + McpLog.Warn($"[RenderPipelineUtility] Active pipeline is HDRP but shader '{shaderName}' looks URP-based. Asset may appear incorrect."); + } + else if (shaderLooksBuiltin && !shaderLooksHdrp) + { + McpLog.Warn($"[RenderPipelineUtility] Active pipeline is HDRP but shader '{shaderName}' looks Built-in. Consider using an HDRP shader for correct results."); + } + break; + case PipelineKind.Universal: + if (shaderLooksHdrp) + { + McpLog.Warn($"[RenderPipelineUtility] Active pipeline is URP but shader '{shaderName}' looks HDRP-based. Asset may appear incorrect."); + } + else if (shaderLooksBuiltin && !shaderLooksUrp) + { + McpLog.Warn($"[RenderPipelineUtility] Active pipeline is URP but shader '{shaderName}' looks Built-in. Consider using a URP shader for correct results."); + } + break; + case PipelineKind.BuiltIn: + if (shaderLooksSrp) + { + McpLog.Warn($"[RenderPipelineUtility] Active pipeline is Built-in but shader '{shaderName}' targets URP/HDRP. Asset may not render as expected."); + } + break; + } + } + + internal static Material GetOrCreateDefaultVFXMaterial(VFXComponentType componentType) + { + var pipeline = GetActivePipeline(); + string cacheKey = $"{pipeline}_{componentType}"; + + if (s_DefaultVFXMaterials.TryGetValue(cacheKey, out Material cachedMaterial) && cachedMaterial != null) + { + return cachedMaterial; + } + + Material material = null; + + if (pipeline == PipelineKind.BuiltIn) + { + string builtinPath = componentType == VFXComponentType.ParticleSystem + ? "Default-Particle.mat" + : "Default-Line.mat"; + + material = AssetDatabase.GetBuiltinExtraResource(builtinPath); + } + + if (material == null) + { + Shader shader = ResolveDefaultUnlitShader(pipeline); + if (shader == null) + { + shader = Shader.Find("Unlit/Color"); + } + + if (shader != null) + { + material = new Material(shader); + material.name = $"Auto_Default_{componentType}_{pipeline}"; + + // Set default color (white is standard for VFX) + if (material.HasProperty("_Color")) + { + material.SetColor("_Color", Color.white); + } + if (material.HasProperty("_BaseColor")) + { + material.SetColor("_BaseColor", Color.white); + } + + if (componentType == VFXComponentType.ParticleSystem) + { + material.renderQueue = 3000; + if (material.HasProperty("_Mode")) + { + material.SetFloat("_Mode", 2); + } + if (material.HasProperty("_SrcBlend")) + { + material.SetFloat("_SrcBlend", (float)UnityEngine.Rendering.BlendMode.SrcAlpha); + } + if (material.HasProperty("_DstBlend")) + { + material.SetFloat("_DstBlend", (float)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha); + } + if (material.HasProperty("_ZWrite")) + { + material.SetFloat("_ZWrite", 0); + } + } + + McpLog.Info($"[RenderPipelineUtility] Created default VFX material for {componentType} using {shader.name}"); + } + } + + if (material != null) + { + s_DefaultVFXMaterials[cacheKey] = material; + } + + return material; + } + } +} diff --git a/Packages/MCPForUnity/Editor/Helpers/RenderPipelineUtility.cs.meta b/Packages/MCPForUnity/Editor/Helpers/RenderPipelineUtility.cs.meta new file mode 100644 index 00000000..8e7273bb --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/RenderPipelineUtility.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5a0a1cfd55ab4bc99c74c52854f6bdf3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Helpers/RendererHelpers.cs b/Packages/MCPForUnity/Editor/Helpers/RendererHelpers.cs new file mode 100644 index 00000000..07e39a54 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/RendererHelpers.cs @@ -0,0 +1,241 @@ +using System; +using System.Collections.Generic; +using Newtonsoft.Json.Linq; +using UnityEngine; +using UnityEditor; + +namespace MCPForUnity.Editor.Helpers +{ + /// + /// Utility class for common Renderer property operations. + /// Used by ManageVFX for ParticleSystem, LineRenderer, and TrailRenderer components. + /// + public static class RendererHelpers + { + /// + /// Ensures a renderer has a material assigned. If not, auto-assigns a default material + /// based on the render pipeline and component type. + /// + /// The renderer to check + public static void EnsureMaterial(Renderer renderer) + { + if (renderer == null || renderer.sharedMaterial != null) + { + return; + } + + RenderPipelineUtility.VFXComponentType? componentType = null; + if (renderer is ParticleSystemRenderer) + { + componentType = RenderPipelineUtility.VFXComponentType.ParticleSystem; + } + else if (renderer is LineRenderer) + { + componentType = RenderPipelineUtility.VFXComponentType.LineRenderer; + } + else if (renderer is TrailRenderer) + { + componentType = RenderPipelineUtility.VFXComponentType.TrailRenderer; + } + + if (componentType.HasValue) + { + Material defaultMat = RenderPipelineUtility.GetOrCreateDefaultVFXMaterial(componentType.Value); + if (defaultMat != null) + { + Undo.RecordObject(renderer, "Assign default VFX material"); + EditorUtility.SetDirty(renderer); + renderer.sharedMaterial = defaultMat; + } + } + } + + /// + /// Applies common Renderer properties (shadows, lighting, probes, sorting, rendering layer). + /// Used by ParticleSetRenderer, LineSetProperties, TrailSetProperties. + /// + public static void ApplyCommonRendererProperties(Renderer renderer, JObject @params, List changes) + { + // Shadows + if (@params["shadowCastingMode"] != null && Enum.TryParse(@params["shadowCastingMode"].ToString(), true, out var shadowMode)) + { renderer.shadowCastingMode = shadowMode; changes.Add("shadowCastingMode"); } + if (@params["receiveShadows"] != null) { renderer.receiveShadows = @params["receiveShadows"].ToObject(); changes.Add("receiveShadows"); } + // Note: shadowBias is only available on specific renderer types (e.g., ParticleSystemRenderer), not base Renderer + + // Lighting and probes + if (@params["lightProbeUsage"] != null && Enum.TryParse(@params["lightProbeUsage"].ToString(), true, out var probeUsage)) + { renderer.lightProbeUsage = probeUsage; changes.Add("lightProbeUsage"); } + if (@params["reflectionProbeUsage"] != null && Enum.TryParse(@params["reflectionProbeUsage"].ToString(), true, out var reflectionUsage)) + { renderer.reflectionProbeUsage = reflectionUsage; changes.Add("reflectionProbeUsage"); } + + // Motion vectors + if (@params["motionVectorGenerationMode"] != null && Enum.TryParse(@params["motionVectorGenerationMode"].ToString(), true, out var motionMode)) + { renderer.motionVectorGenerationMode = motionMode; changes.Add("motionVectorGenerationMode"); } + + // Sorting + if (@params["sortingOrder"] != null) { renderer.sortingOrder = @params["sortingOrder"].ToObject(); changes.Add("sortingOrder"); } + if (@params["sortingLayerName"] != null) { renderer.sortingLayerName = @params["sortingLayerName"].ToString(); changes.Add("sortingLayerName"); } + if (@params["sortingLayerID"] != null) { renderer.sortingLayerID = @params["sortingLayerID"].ToObject(); changes.Add("sortingLayerID"); } + + // Rendering layer mask (for SRP) + if (@params["renderingLayerMask"] != null) { renderer.renderingLayerMask = @params["renderingLayerMask"].ToObject(); changes.Add("renderingLayerMask"); } + } + + /// + /// Gets common Renderer properties for GetInfo methods. + /// + public static object GetCommonRendererInfo(Renderer renderer) + { + return new + { + shadowCastingMode = renderer.shadowCastingMode.ToString(), + receiveShadows = renderer.receiveShadows, + lightProbeUsage = renderer.lightProbeUsage.ToString(), + reflectionProbeUsage = renderer.reflectionProbeUsage.ToString(), + sortingOrder = renderer.sortingOrder, + sortingLayerName = renderer.sortingLayerName, + renderingLayerMask = renderer.renderingLayerMask + }; + } + + + /// + /// Sets width properties for LineRenderer or TrailRenderer. + /// + /// JSON parameters containing width, startWidth, endWidth, widthCurve, widthMultiplier + /// List to track changed properties + /// Action to set start width + /// Action to set end width + /// Action to set width curve + /// Action to set width multiplier + /// Function to parse animation curve from JToken + public static void ApplyWidthProperties(JObject @params, List changes, + Action setStartWidth, Action setEndWidth, + Action setWidthCurve, Action setWidthMultiplier, + Func parseAnimationCurve) + { + if (@params["width"] != null) + { + float w = @params["width"].ToObject(); + setStartWidth(w); + setEndWidth(w); + changes.Add("width"); + } + if (@params["startWidth"] != null) { setStartWidth(@params["startWidth"].ToObject()); changes.Add("startWidth"); } + if (@params["endWidth"] != null) { setEndWidth(@params["endWidth"].ToObject()); changes.Add("endWidth"); } + if (@params["widthCurve"] != null) { setWidthCurve(parseAnimationCurve(@params["widthCurve"], 1f)); changes.Add("widthCurve"); } + if (@params["widthMultiplier"] != null) { setWidthMultiplier(@params["widthMultiplier"].ToObject()); changes.Add("widthMultiplier"); } + } + + /// + /// Sets color properties for LineRenderer or TrailRenderer. + /// + /// JSON parameters containing color, startColor, endColor, gradient + /// List to track changed properties + /// Action to set start color + /// Action to set end color + /// Action to set gradient + /// Function to parse color from JToken + /// Function to parse gradient from JToken + /// If true, sets end color alpha to 0 when using single color + public static void ApplyColorProperties(JObject @params, List changes, + Action setStartColor, Action setEndColor, + Action setGradient, + Func parseColor, Func parseGradient, + bool fadeEndAlpha = false) + { + if (@params["color"] != null) + { + Color c = parseColor(@params["color"]); + setStartColor(c); + setEndColor(fadeEndAlpha ? new Color(c.r, c.g, c.b, 0f) : c); + changes.Add("color"); + } + if (@params["startColor"] != null) { setStartColor(parseColor(@params["startColor"])); changes.Add("startColor"); } + if (@params["endColor"] != null) { setEndColor(parseColor(@params["endColor"])); changes.Add("endColor"); } + if (@params["gradient"] != null) { setGradient(parseGradient(@params["gradient"])); changes.Add("gradient"); } + } + + + /// + /// Sets material for a Renderer. + /// + /// The renderer to set material on + /// JSON parameters containing materialPath + /// Name for the undo operation + /// Function to find material by path + /// If true, auto-assigns default material when materialPath is not provided + public static object SetRendererMaterial(Renderer renderer, JObject @params, string undoName, Func findMaterial, bool autoAssignDefault = true) + { + if (renderer == null) return new { success = false, message = "Renderer not found" }; + + string path = @params["materialPath"]?.ToString(); + + if (string.IsNullOrEmpty(path)) + { + if (!autoAssignDefault) + { + return new { success = false, message = "materialPath required" }; + } + + RenderPipelineUtility.VFXComponentType? componentType = null; + if (renderer is ParticleSystemRenderer) + { + componentType = RenderPipelineUtility.VFXComponentType.ParticleSystem; + } + else if (renderer is LineRenderer) + { + componentType = RenderPipelineUtility.VFXComponentType.LineRenderer; + } + else if (renderer is TrailRenderer) + { + componentType = RenderPipelineUtility.VFXComponentType.TrailRenderer; + } + + if (componentType.HasValue) + { + Material defaultMat = RenderPipelineUtility.GetOrCreateDefaultVFXMaterial(componentType.Value); + if (defaultMat != null) + { + Undo.RecordObject(renderer, undoName); + renderer.sharedMaterial = defaultMat; + EditorUtility.SetDirty(renderer); + return new { success = true, message = $"Auto-assigned default material: {defaultMat.name}" }; + } + } + + return new { success = false, message = "materialPath required" }; + } + + Material mat = findMaterial(path); + if (mat == null) return new { success = false, message = $"Material not found: {path}" }; + + Undo.RecordObject(renderer, undoName); + renderer.sharedMaterial = mat; + EditorUtility.SetDirty(renderer); + + return new { success = true, message = $"Set material to {mat.name}" }; + } + + + /// + /// Applies Line/Trail specific properties (loop, alignment, textureMode, etc.). + /// + public static void ApplyLineTrailProperties(JObject @params, List changes, + Action setLoop, Action setUseWorldSpace, + Action setNumCornerVertices, Action setNumCapVertices, + Action setAlignment, Action setTextureMode, + Action setGenerateLightingData) + { + if (@params["loop"] != null && setLoop != null) { setLoop(@params["loop"].ToObject()); changes.Add("loop"); } + if (@params["useWorldSpace"] != null && setUseWorldSpace != null) { setUseWorldSpace(@params["useWorldSpace"].ToObject()); changes.Add("useWorldSpace"); } + if (@params["numCornerVertices"] != null && setNumCornerVertices != null) { setNumCornerVertices(@params["numCornerVertices"].ToObject()); changes.Add("numCornerVertices"); } + if (@params["numCapVertices"] != null && setNumCapVertices != null) { setNumCapVertices(@params["numCapVertices"].ToObject()); changes.Add("numCapVertices"); } + if (@params["alignment"] != null && setAlignment != null && Enum.TryParse(@params["alignment"].ToString(), true, out var align)) { setAlignment(align); changes.Add("alignment"); } + if (@params["textureMode"] != null && setTextureMode != null && Enum.TryParse(@params["textureMode"].ToString(), true, out var texMode)) { setTextureMode(texMode); changes.Add("textureMode"); } + if (@params["generateLightingData"] != null && setGenerateLightingData != null) { setGenerateLightingData(@params["generateLightingData"].ToObject()); changes.Add("generateLightingData"); } + } + + } +} + diff --git a/Packages/MCPForUnity/Editor/Helpers/RendererHelpers.cs.meta b/Packages/MCPForUnity/Editor/Helpers/RendererHelpers.cs.meta new file mode 100644 index 00000000..db81f32a --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/RendererHelpers.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8f3a7e2d5c1b4a9e6d0f8c3b2a1e5d7c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: + diff --git a/Packages/MCPForUnity/Editor/Helpers/Response.cs b/Packages/MCPForUnity/Editor/Helpers/Response.cs new file mode 100644 index 00000000..6c6c299d --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/Response.cs @@ -0,0 +1,108 @@ +using Newtonsoft.Json; + +namespace MCPForUnity.Editor.Helpers +{ + public interface IMcpResponse + { + [JsonProperty("success")] + bool Success { get; } + } + + public sealed class SuccessResponse : IMcpResponse + { + [JsonProperty("success")] + public bool Success => true; + + [JsonIgnore] + public bool success => Success; // Backward-compatible casing for reflection-based tests + + [JsonProperty("message")] + public string Message { get; } + + [JsonProperty("data", NullValueHandling = NullValueHandling.Ignore)] + public object Data { get; } + + [JsonIgnore] + public object data => Data; + + public SuccessResponse(string message, object data = null) + { + Message = message; + Data = data; + } + } + + public sealed class ErrorResponse : IMcpResponse + { + [JsonProperty("success")] + public bool Success => false; + + [JsonIgnore] + public bool success => Success; // Backward-compatible casing for reflection-based tests + + [JsonProperty("code", NullValueHandling = NullValueHandling.Ignore)] + public string Code { get; } + + [JsonIgnore] + public string code => Code; + + [JsonProperty("error")] + public string Error { get; } + + [JsonIgnore] + public string error => Error; + + [JsonProperty("data", NullValueHandling = NullValueHandling.Ignore)] + public object Data { get; } + + [JsonIgnore] + public object data => Data; + + public ErrorResponse(string messageOrCode, object data = null) + { + Code = messageOrCode; + Error = messageOrCode; + Data = data; + } + } + + public sealed class PendingResponse : IMcpResponse + { + [JsonProperty("success")] + public bool Success => true; + + [JsonIgnore] + public bool success => Success; // Backward-compatible casing for reflection-based tests + + [JsonProperty("_mcp_status")] + public string Status => "pending"; + + [JsonIgnore] + public string _mcp_status => Status; + + [JsonProperty("_mcp_poll_interval")] + public double PollIntervalSeconds { get; } + + [JsonIgnore] + public double _mcp_poll_interval => PollIntervalSeconds; + + [JsonProperty("message", NullValueHandling = NullValueHandling.Ignore)] + public string Message { get; } + + [JsonIgnore] + public string message => Message; + + [JsonProperty("data", NullValueHandling = NullValueHandling.Ignore)] + public object Data { get; } + + [JsonIgnore] + public object data => Data; + + public PendingResponse(string message = "", double pollIntervalSeconds = 1.0, object data = null) + { + Message = string.IsNullOrEmpty(message) ? null : message; + PollIntervalSeconds = pollIntervalSeconds; + Data = data; + } + } +} diff --git a/Packages/MCPForUnity/Editor/Helpers/Response.cs.meta b/Packages/MCPForUnity/Editor/Helpers/Response.cs.meta new file mode 100644 index 00000000..6fd11e39 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/Response.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 80c09a76b944f8c4691e06c4d76c4be8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Helpers/StringCaseUtility.cs b/Packages/MCPForUnity/Editor/Helpers/StringCaseUtility.cs new file mode 100644 index 00000000..04b498a5 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/StringCaseUtility.cs @@ -0,0 +1,73 @@ +using System; +using System.Linq; +using System.Text.RegularExpressions; + +namespace MCPForUnity.Editor.Helpers +{ + /// + /// Utility class for converting between naming conventions (snake_case, camelCase). + /// Consolidates previously duplicated implementations from ToolParams, ManageVFX, + /// BatchExecute, CommandRegistry, and ToolDiscoveryService. + /// + public static class StringCaseUtility + { + /// + /// Checks whether a type belongs to the built-in MCP for Unity package. + /// Returns true when the type's namespace starts with + /// or its assembly is MCPForUnity.Editor. + /// + public static bool IsBuiltInMcpType(Type type, string assemblyName, string builtInNamespacePrefix) + { + if (type != null && !string.IsNullOrEmpty(type.Namespace) + && type.Namespace.StartsWith(builtInNamespacePrefix, StringComparison.Ordinal)) + { + return true; + } + + if (!string.IsNullOrEmpty(assemblyName) + && assemblyName.Equals("MCPForUnity.Editor", StringComparison.Ordinal)) + { + return true; + } + + return false; + } + + /// + /// Converts a camelCase string to snake_case. + /// Example: "searchMethod" -> "search_method", "param1Value" -> "param1_value" + /// + /// The camelCase string to convert + /// The snake_case equivalent, or original string if null/empty + public static string ToSnakeCase(string str) + { + if (string.IsNullOrEmpty(str)) + return str; + + return Regex.Replace(str, "([a-z0-9])([A-Z])", "$1_$2").ToLowerInvariant(); + } + + /// + /// Converts a snake_case string to camelCase. + /// Example: "search_method" -> "searchMethod" + /// + /// The snake_case string to convert + /// The camelCase equivalent, or original string if null/empty or no underscores + public static string ToCamelCase(string str) + { + if (string.IsNullOrEmpty(str) || !str.Contains("_")) + return str; + + var parts = str.Split('_'); + if (parts.Length == 0) + return str; + + // First part stays lowercase, rest get capitalized + var first = parts[0]; + var rest = string.Concat(parts.Skip(1).Select(part => + string.IsNullOrEmpty(part) ? "" : char.ToUpperInvariant(part[0]) + part.Substring(1))); + + return first + rest; + } + } +} diff --git a/Packages/MCPForUnity/Editor/Helpers/StringCaseUtility.cs.meta b/Packages/MCPForUnity/Editor/Helpers/StringCaseUtility.cs.meta new file mode 100644 index 00000000..62b2fcbf --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/StringCaseUtility.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f22b312318ade42c4bb6b5dfddacecfa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Helpers/TelemetryHelper.cs b/Packages/MCPForUnity/Editor/Helpers/TelemetryHelper.cs new file mode 100644 index 00000000..6e092d46 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/TelemetryHelper.cs @@ -0,0 +1,226 @@ +using System; +using System.Collections.Generic; +using System.Threading; +using MCPForUnity.Editor.Constants; +using MCPForUnity.Editor.Services.Transport.Transports; +using UnityEngine; + +namespace MCPForUnity.Editor.Helpers +{ + /// + /// Unity Bridge telemetry helper for collecting usage analytics + /// Following privacy-first approach with easy opt-out mechanisms + /// + public static class TelemetryHelper + { + private const string TELEMETRY_DISABLED_KEY = EditorPrefKeys.TelemetryDisabled; + private const string CUSTOMER_UUID_KEY = EditorPrefKeys.CustomerUuid; + private static Action> s_sender; + + /// + /// Check if telemetry is enabled (can be disabled via Environment Variable or EditorPrefs) + /// + public static bool IsEnabled + { + get + { + // Check environment variables first + var envDisable = Environment.GetEnvironmentVariable("DISABLE_TELEMETRY"); + if (!string.IsNullOrEmpty(envDisable) && + (envDisable.ToLower() == "true" || envDisable == "1")) + { + return false; + } + + var unityMcpDisable = Environment.GetEnvironmentVariable("UNITY_MCP_DISABLE_TELEMETRY"); + if (!string.IsNullOrEmpty(unityMcpDisable) && + (unityMcpDisable.ToLower() == "true" || unityMcpDisable == "1")) + { + return false; + } + + // Honor protocol-wide opt-out as well + var mcpDisable = Environment.GetEnvironmentVariable("MCP_DISABLE_TELEMETRY"); + if (!string.IsNullOrEmpty(mcpDisable) && + (mcpDisable.Equals("true", StringComparison.OrdinalIgnoreCase) || mcpDisable == "1")) + { + return false; + } + + // Check EditorPrefs + return !UnityEditor.EditorPrefs.GetBool(TELEMETRY_DISABLED_KEY, false); + } + } + + /// + /// Get or generate customer UUID for anonymous tracking + /// + public static string GetCustomerUUID() + { + var uuid = UnityEditor.EditorPrefs.GetString(CUSTOMER_UUID_KEY, ""); + if (string.IsNullOrEmpty(uuid)) + { + uuid = System.Guid.NewGuid().ToString(); + UnityEditor.EditorPrefs.SetString(CUSTOMER_UUID_KEY, uuid); + } + return uuid; + } + + /// + /// Disable telemetry (stored in EditorPrefs) + /// + public static void DisableTelemetry() + { + UnityEditor.EditorPrefs.SetBool(TELEMETRY_DISABLED_KEY, true); + } + + /// + /// Enable telemetry (stored in EditorPrefs) + /// + public static void EnableTelemetry() + { + UnityEditor.EditorPrefs.SetBool(TELEMETRY_DISABLED_KEY, false); + } + + /// + /// Send telemetry data to MCP server for processing + /// This is a lightweight bridge - the actual telemetry logic is in the MCP server + /// + public static void RecordEvent(string eventType, Dictionary data = null) + { + if (!IsEnabled) + return; + + try + { + var telemetryData = new Dictionary + { + ["event_type"] = eventType, + ["timestamp"] = DateTimeOffset.UtcNow.ToUnixTimeSeconds(), + ["customer_uuid"] = GetCustomerUUID(), + ["unity_version"] = Application.unityVersion, + ["platform"] = Application.platform.ToString(), + ["source"] = "unity_bridge" + }; + + if (data != null) + { + telemetryData["data"] = data; + } + + // Send to MCP server via existing bridge communication + // The MCP server will handle actual telemetry transmission + SendTelemetryToMcpServer(telemetryData); + } + catch (Exception e) + { + // Never let telemetry errors interfere with functionality + if (IsDebugEnabled()) + { + McpLog.Warn($"Telemetry error (non-blocking): {e.Message}"); + } + } + } + + /// + /// Allows the bridge to register a concrete sender for telemetry payloads. + /// + public static void RegisterTelemetrySender(Action> sender) + { + Interlocked.Exchange(ref s_sender, sender); + } + + public static void UnregisterTelemetrySender() + { + Interlocked.Exchange(ref s_sender, null); + } + + /// + /// Record bridge startup event + /// + public static void RecordBridgeStartup() + { + RecordEvent("bridge_startup", new Dictionary + { + ["bridge_version"] = AssetPathUtility.GetPackageVersion(), + ["auto_connect"] = StdioBridgeHost.IsAutoConnectMode() + }); + } + + /// + /// Record bridge connection event + /// + public static void RecordBridgeConnection(bool success, string error = null) + { + var data = new Dictionary + { + ["success"] = success + }; + + if (!string.IsNullOrEmpty(error)) + { + data["error"] = error.Substring(0, Math.Min(200, error.Length)); + } + + RecordEvent("bridge_connection", data); + } + + /// + /// Record tool execution from Unity side + /// + public static void RecordToolExecution(string toolName, bool success, float durationMs, string error = null) + { + var data = new Dictionary + { + ["tool_name"] = toolName, + ["success"] = success, + ["duration_ms"] = Math.Round(durationMs, 2) + }; + + if (!string.IsNullOrEmpty(error)) + { + data["error"] = error.Substring(0, Math.Min(200, error.Length)); + } + + RecordEvent("tool_execution_unity", data); + } + + private static void SendTelemetryToMcpServer(Dictionary telemetryData) + { + var sender = Volatile.Read(ref s_sender); + if (sender != null) + { + try + { + sender(telemetryData); + return; + } + catch (Exception e) + { + if (IsDebugEnabled()) + { + McpLog.Warn($"Telemetry sender error (non-blocking): {e.Message}"); + } + } + } + + // Fallback: log when debug is enabled + if (IsDebugEnabled()) + { + McpLog.Info($"Telemetry: {telemetryData["event_type"]}"); + } + } + + private static bool IsDebugEnabled() + { + try + { + return UnityEditor.EditorPrefs.GetBool(EditorPrefKeys.DebugLogs, false); + } + catch + { + return false; + } + } + } +} diff --git a/Packages/MCPForUnity/Editor/Helpers/TelemetryHelper.cs.meta b/Packages/MCPForUnity/Editor/Helpers/TelemetryHelper.cs.meta new file mode 100644 index 00000000..0c679608 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/TelemetryHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b8f3c2d1e7a94f6c8a9b5e3d2c1a0f9e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Helpers/TextureOps.cs b/Packages/MCPForUnity/Editor/Helpers/TextureOps.cs new file mode 100644 index 00000000..b062b47f --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/TextureOps.cs @@ -0,0 +1,162 @@ +using System; +using System.Collections.Generic; +using System.IO; +using Newtonsoft.Json.Linq; +using UnityEngine; + +namespace MCPForUnity.Editor.Helpers +{ + public static class TextureOps + { + public static byte[] EncodeTexture(Texture2D texture, string assetPath) + { + if (texture == null) + return null; + + string extension = Path.GetExtension(assetPath); + if (string.IsNullOrEmpty(extension)) + { + McpLog.Warn($"[TextureOps] No file extension for '{assetPath}', defaulting to PNG."); + return texture.EncodeToPNG(); + } + + switch (extension.ToLowerInvariant()) + { + case ".png": + return texture.EncodeToPNG(); + case ".jpg": + case ".jpeg": + return texture.EncodeToJPG(); + default: + McpLog.Warn($"[TextureOps] Unsupported extension '{extension}' for '{assetPath}', defaulting to PNG."); + return texture.EncodeToPNG(); + } + } + + public static void FillTexture(Texture2D texture, Color32 color) + { + if (texture == null) + return; + + Color32[] pixels = new Color32[texture.width * texture.height]; + for (int i = 0; i < pixels.Length; i++) + { + pixels[i] = color; + } + texture.SetPixels32(pixels); + } + + public static Color32 ParseColor32(JArray colorArray) + { + if (colorArray == null || colorArray.Count < 3) + return new Color32(255, 255, 255, 255); + + byte r = (byte)Mathf.Clamp(colorArray[0].ToObject(), 0, 255); + byte g = (byte)Mathf.Clamp(colorArray[1].ToObject(), 0, 255); + byte b = (byte)Mathf.Clamp(colorArray[2].ToObject(), 0, 255); + byte a = colorArray.Count > 3 ? (byte)Mathf.Clamp(colorArray[3].ToObject(), 0, 255) : (byte)255; + + return new Color32(r, g, b, a); + } + + public static List ParsePalette(JArray paletteArray) + { + if (paletteArray == null) + return null; + + List palette = new List(); + foreach (var item in paletteArray) + { + if (item is JArray colorArray) + { + palette.Add(ParseColor32(colorArray)); + } + } + return palette.Count > 0 ? palette : null; + } + + public static void ApplyPixelData(Texture2D texture, JToken pixelsToken, int width, int height) + { + ApplyPixelDataToRegion(texture, pixelsToken, 0, 0, width, height); + } + + public static void ApplyPixelDataToRegion(Texture2D texture, JToken pixelsToken, int offsetX, int offsetY, int regionWidth, int regionHeight) + { + if (texture == null || pixelsToken == null) + return; + + int textureWidth = texture.width; + int textureHeight = texture.height; + + if (pixelsToken is JArray pixelArray) + { + int index = 0; + for (int y = 0; y < regionHeight && index < pixelArray.Count; y++) + { + for (int x = 0; x < regionWidth && index < pixelArray.Count; x++) + { + var pixelColor = pixelArray[index] as JArray; + if (pixelColor != null) + { + int px = offsetX + x; + int py = offsetY + y; + if (px >= 0 && px < textureWidth && py >= 0 && py < textureHeight) + { + texture.SetPixel(px, py, ParseColor32(pixelColor)); + } + } + index++; + } + } + + int expectedCount = regionWidth * regionHeight; + if (pixelArray.Count != expectedCount) + { + McpLog.Warn($"[TextureOps] Pixel array size mismatch: expected {expectedCount} entries, got {pixelArray.Count}"); + } + } + else if (pixelsToken.Type == JTokenType.String) + { + string pixelString = pixelsToken.ToString(); + string base64 = pixelString.StartsWith("base64:") ? pixelString.Substring(7) : pixelString; + if (!pixelString.StartsWith("base64:")) + { + McpLog.Warn("[TextureOps] Base64 pixel data missing 'base64:' prefix; attempting to decode."); + } + + byte[] rawData = Convert.FromBase64String(base64); + + // Assume RGBA32 format: 4 bytes per pixel + int expectedBytes = regionWidth * regionHeight * 4; + if (rawData.Length == expectedBytes) + { + int pixelIndex = 0; + for (int y = 0; y < regionHeight; y++) + { + for (int x = 0; x < regionWidth; x++) + { + int px = offsetX + x; + int py = offsetY + y; + if (px >= 0 && px < textureWidth && py >= 0 && py < textureHeight) + { + int byteIndex = pixelIndex * 4; + Color32 color = new Color32( + rawData[byteIndex], + rawData[byteIndex + 1], + rawData[byteIndex + 2], + rawData[byteIndex + 3] + ); + texture.SetPixel(px, py, color); + } + pixelIndex++; + } + } + } + else + { + McpLog.Warn($"[TextureOps] Base64 data size mismatch: expected {expectedBytes} bytes, got {rawData.Length}"); + } + } + } + } +} diff --git a/Packages/MCPForUnity/Editor/Helpers/TextureOps.cs.meta b/Packages/MCPForUnity/Editor/Helpers/TextureOps.cs.meta new file mode 100644 index 00000000..6dc72907 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/TextureOps.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 864ea682d797466a84b6b951f6c4e4ba +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Helpers/ToolParams.cs b/Packages/MCPForUnity/Editor/Helpers/ToolParams.cs new file mode 100644 index 00000000..681ae489 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/ToolParams.cs @@ -0,0 +1,179 @@ +using Newtonsoft.Json.Linq; +using System; + +namespace MCPForUnity.Editor.Helpers +{ + /// + /// Unified parameter validation and extraction wrapper for MCP tools. + /// Eliminates repetitive IsNullOrEmpty checks and provides consistent error messages. + /// + public class ToolParams + { + private readonly JObject _params; + + public ToolParams(JObject @params) + { + _params = @params ?? throw new ArgumentNullException(nameof(@params)); + } + + /// + /// Get required string parameter. Returns ErrorResponse if missing or empty. + /// + public Result GetRequired(string key, string errorMessage = null) + { + var value = GetString(key); + if (string.IsNullOrEmpty(value)) + { + return Result.Error( + errorMessage ?? $"'{key}' parameter is required." + ); + } + return Result.Success(value); + } + + /// + /// Get optional string parameter with default value. + /// Supports both snake_case and camelCase automatically. + /// + public string Get(string key, string defaultValue = null) + { + return GetString(key) ?? defaultValue; + } + + /// + /// Get optional int parameter. + /// + public int? GetInt(string key, int? defaultValue = null) + { + var str = GetString(key); + if (string.IsNullOrEmpty(str)) return defaultValue; + return int.TryParse(str, out var result) ? result : defaultValue; + } + + /// + /// Get optional bool parameter. + /// Supports both snake_case and camelCase automatically. + /// + public bool GetBool(string key, bool defaultValue = false) + { + return ParamCoercion.CoerceBool(GetToken(key), defaultValue); + } + + /// + /// Get optional float parameter. + /// + public float? GetFloat(string key, float? defaultValue = null) + { + var str = GetString(key); + if (string.IsNullOrEmpty(str)) return defaultValue; + return float.TryParse(str, out var result) ? result : defaultValue; + } + + /// + /// Check if parameter exists (even if null). + /// Supports both snake_case and camelCase automatically. + /// + public bool Has(string key) + { + return GetToken(key) != null; + } + + /// + /// Get raw JToken for complex types. + /// Supports both snake_case and camelCase automatically. + /// + public JToken GetRaw(string key) + { + return GetToken(key); + } + + /// + /// Get raw JToken with snake_case/camelCase fallback. + /// + private JToken GetToken(string key) + { + // Try exact match first + var token = _params[key]; + if (token != null) return token; + + // Try snake_case if camelCase was provided + var snakeKey = ToSnakeCase(key); + if (snakeKey != key) + { + token = _params[snakeKey]; + if (token != null) return token; + } + + // Try camelCase if snake_case was provided + var camelKey = ToCamelCase(key); + if (camelKey != key) + { + token = _params[camelKey]; + } + + return token; + } + + private string GetString(string key) + { + // Try exact match first + var value = _params[key]?.ToString(); + if (value != null) return value; + + // Try snake_case if camelCase was provided + var snakeKey = ToSnakeCase(key); + if (snakeKey != key) + { + value = _params[snakeKey]?.ToString(); + if (value != null) return value; + } + + // Try camelCase if snake_case was provided + var camelKey = ToCamelCase(key); + if (camelKey != key) + { + value = _params[camelKey]?.ToString(); + } + + return value; + } + + private static string ToSnakeCase(string str) => StringCaseUtility.ToSnakeCase(str); + + private static string ToCamelCase(string str) => StringCaseUtility.ToCamelCase(str); + } + + /// + /// Result type for operations that can fail with an error message. + /// + public class Result + { + public bool IsSuccess { get; } + public T Value { get; } + public string ErrorMessage { get; } + + private Result(bool isSuccess, T value, string errorMessage) + { + IsSuccess = isSuccess; + Value = value; + ErrorMessage = errorMessage; + } + + public static Result Success(T value) => new Result(true, value, null); + public static Result Error(string errorMessage) => new Result(false, default, errorMessage); + + /// + /// Get value or return ErrorResponse. + /// + public object GetOrError(out T value) + { + if (IsSuccess) + { + value = Value; + return null; + } + value = default; + return new ErrorResponse(ErrorMessage); + } + } +} diff --git a/Packages/MCPForUnity/Editor/Helpers/ToolParams.cs.meta b/Packages/MCPForUnity/Editor/Helpers/ToolParams.cs.meta new file mode 100644 index 00000000..e335bb46 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/ToolParams.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 404b09ea3e2714e1babd16f5705ac788 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Helpers/UnityJsonSerializer.cs b/Packages/MCPForUnity/Editor/Helpers/UnityJsonSerializer.cs new file mode 100644 index 00000000..83b650fa --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/UnityJsonSerializer.cs @@ -0,0 +1,33 @@ +using System.Collections.Generic; +using Newtonsoft.Json; +using MCPForUnity.Runtime.Serialization; + +namespace MCPForUnity.Editor.Helpers +{ + /// + /// Shared JsonSerializer with Unity type converters. + /// Extracted from ManageGameObject to eliminate cross-tool dependencies. + /// + public static class UnityJsonSerializer + { + /// + /// Shared JsonSerializer instance with converters for Unity types. + /// Use this for all JToken-to-Unity-type conversions. + /// + public static readonly JsonSerializer Instance = JsonSerializer.Create(new JsonSerializerSettings + { + Converters = new List + { + new Vector2Converter(), + new Vector3Converter(), + new Vector4Converter(), + new QuaternionConverter(), + new ColorConverter(), + new RectConverter(), + new BoundsConverter(), + new UnityEngineObjectConverter() + } + }); + } +} + diff --git a/Packages/MCPForUnity/Editor/Helpers/UnityJsonSerializer.cs.meta b/Packages/MCPForUnity/Editor/Helpers/UnityJsonSerializer.cs.meta new file mode 100644 index 00000000..5c4391ad --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/UnityJsonSerializer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 24d94c9c030bd4ff1ab208c748f26b01 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Helpers/UnityTypeResolver.cs b/Packages/MCPForUnity/Editor/Helpers/UnityTypeResolver.cs new file mode 100644 index 00000000..feb0b5c7 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/UnityTypeResolver.cs @@ -0,0 +1,217 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using UnityEngine; +#if UNITY_EDITOR +using UnityEditor; +using UnityEditor.Compilation; +#endif + +namespace MCPForUnity.Editor.Helpers +{ + /// + /// Unified type resolution for Unity types (Components, ScriptableObjects, etc.). + /// Extracted from ComponentResolver in ManageGameObject and ResolveType in ManageScriptableObject. + /// Features: caching, prioritizes Player assemblies over Editor assemblies, uses TypeCache. + /// + public static class UnityTypeResolver + { + private static readonly Dictionary CacheByFqn = new(StringComparer.Ordinal); + private static readonly Dictionary CacheByName = new(StringComparer.Ordinal); + + /// + /// Resolves a type by name, with optional base type constraint. + /// Caches results for performance. Prefers runtime assemblies over Editor assemblies. + /// + /// The short name or fully-qualified name of the type + /// The resolved type, or null if not found + /// Error message if resolution failed + /// Optional base type constraint (e.g., typeof(Component)) + /// True if type was resolved successfully + public static bool TryResolve(string typeName, out Type type, out string error, Type requiredBaseType = null) + { + error = string.Empty; + type = null; + + if (string.IsNullOrWhiteSpace(typeName)) + { + error = "Type name cannot be null or empty"; + return false; + } + + // Check caches + if (CacheByFqn.TryGetValue(typeName, out type) && PassesConstraint(type, requiredBaseType)) + return true; + if (!typeName.Contains(".") && CacheByName.TryGetValue(typeName, out type) && PassesConstraint(type, requiredBaseType)) + return true; + + // Try direct Type.GetType + type = Type.GetType(typeName, throwOnError: false); + if (type != null && PassesConstraint(type, requiredBaseType)) + { + Cache(type); + return true; + } + + // Search loaded assemblies (prefer Player assemblies) + var candidates = FindCandidates(typeName, requiredBaseType); + if (candidates.Count == 1) + { + type = candidates[0]; + Cache(type); + return true; + } + if (candidates.Count > 1) + { + error = FormatAmbiguityError(typeName, candidates); + type = null; + return false; + } + +#if UNITY_EDITOR + // Last resort: TypeCache (fast index) + if (requiredBaseType != null) + { + var tc = TypeCache.GetTypesDerivedFrom(requiredBaseType) + .Where(t => NamesMatch(t, typeName)); + candidates = PreferPlayer(tc).ToList(); + if (candidates.Count == 1) + { + type = candidates[0]; + Cache(type); + return true; + } + if (candidates.Count > 1) + { + error = FormatAmbiguityError(typeName, candidates); + type = null; + return false; + } + } +#endif + + error = $"Type '{typeName}' not found in loaded runtime assemblies. " + + "Use a fully-qualified name (Namespace.TypeName) and ensure the script compiled."; + type = null; + return false; + } + + /// + /// Convenience method to resolve a Component type. + /// + public static Type ResolveComponent(string typeName) + { + if (TryResolve(typeName, out Type type, out _, typeof(Component))) + return type; + return null; + } + + /// + /// Convenience method to resolve a ScriptableObject type. + /// + public static Type ResolveScriptableObject(string typeName) + { + if (TryResolve(typeName, out Type type, out _, typeof(ScriptableObject))) + return type; + return null; + } + + /// + /// Convenience method to resolve any type without constraints. + /// + public static Type ResolveAny(string typeName) + { + if (TryResolve(typeName, out Type type, out _, null)) + return type; + return null; + } + + // --- Private Helpers --- + + private static bool PassesConstraint(Type type, Type requiredBaseType) + { + if (type == null) return false; + if (requiredBaseType == null) return true; + return requiredBaseType.IsAssignableFrom(type); + } + + private static bool NamesMatch(Type t, string query) => + t.Name.Equals(query, StringComparison.Ordinal) || + (t.FullName?.Equals(query, StringComparison.Ordinal) ?? false); + + private static void Cache(Type t) + { + if (t == null) return; + if (t.FullName != null) CacheByFqn[t.FullName] = t; + CacheByName[t.Name] = t; + } + + private static List FindCandidates(string query, Type requiredBaseType) + { + bool isShort = !query.Contains('.'); + var loaded = AppDomain.CurrentDomain.GetAssemblies(); + +#if UNITY_EDITOR + // Names of Player (runtime) script assemblies + var playerAsmNames = new HashSet( + CompilationPipeline.GetAssemblies(AssembliesType.Player).Select(a => a.name), + StringComparer.Ordinal); + + var playerAsms = loaded.Where(a => playerAsmNames.Contains(a.GetName().Name)); + var editorAsms = loaded.Except(playerAsms); +#else + var playerAsms = loaded; + var editorAsms = Array.Empty(); +#endif + + Func match = isShort + ? (t => t.Name.Equals(query, StringComparison.Ordinal)) + : (t => t.FullName?.Equals(query, StringComparison.Ordinal) ?? false); + + var fromPlayer = playerAsms.SelectMany(SafeGetTypes) + .Where(t => PassesConstraint(t, requiredBaseType)) + .Where(match); + var fromEditor = editorAsms.SelectMany(SafeGetTypes) + .Where(t => PassesConstraint(t, requiredBaseType)) + .Where(match); + + // Prefer Player over Editor + var candidates = fromPlayer.ToList(); + if (candidates.Count == 0) + candidates = fromEditor.ToList(); + + return candidates; + } + + private static IEnumerable SafeGetTypes(System.Reflection.Assembly assembly) + { + try { return assembly.GetTypes(); } + catch (ReflectionTypeLoadException rtle) { return rtle.Types.Where(t => t != null); } + catch { return Enumerable.Empty(); } + } + + private static IEnumerable PreferPlayer(IEnumerable types) + { +#if UNITY_EDITOR + var playerAsmNames = new HashSet( + CompilationPipeline.GetAssemblies(AssembliesType.Player).Select(a => a.name), + StringComparer.Ordinal); + + var list = types.ToList(); + var fromPlayer = list.Where(t => playerAsmNames.Contains(t.Assembly.GetName().Name)).ToList(); + return fromPlayer.Count > 0 ? fromPlayer : list; +#else + return types; +#endif + } + + private static string FormatAmbiguityError(string query, List candidates) + { + var names = string.Join(", ", candidates.Take(5).Select(t => t.FullName)); + if (candidates.Count > 5) names += $" ... ({candidates.Count - 5} more)"; + return $"Ambiguous type reference '{query}'. Found {candidates.Count} matches: [{names}]. Use a fully-qualified name."; + } + } +} + diff --git a/Packages/MCPForUnity/Editor/Helpers/UnityTypeResolver.cs.meta b/Packages/MCPForUnity/Editor/Helpers/UnityTypeResolver.cs.meta new file mode 100644 index 00000000..c0eed2d6 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/UnityTypeResolver.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2cdf06f869b124741af31f27b25742db +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Helpers/VectorParsing.cs b/Packages/MCPForUnity/Editor/Helpers/VectorParsing.cs new file mode 100644 index 00000000..0e81cca8 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/VectorParsing.cs @@ -0,0 +1,731 @@ +using System; +using System.Collections.Generic; +using Newtonsoft.Json.Linq; +using UnityEngine; + +namespace MCPForUnity.Editor.Helpers +{ + /// + /// Utility class for parsing JSON tokens into Unity vector, math, and animation types. + /// Supports both array format [x, y, z] and object format {x: 1, y: 2, z: 3}. + /// + public static class VectorParsing + { + /// + /// Parses a JToken (array or object) into a Vector3. + /// + /// The JSON token to parse + /// The parsed Vector3 or null if parsing fails + public static Vector3? ParseVector3(JToken token) + { + if (token == null || token.Type == JTokenType.Null) + return null; + + try + { + // Array format: [x, y, z] + if (token is JArray array && array.Count >= 3) + { + return new Vector3( + array[0].ToObject(), + array[1].ToObject(), + array[2].ToObject() + ); + } + + // Object format: {x: 1, y: 2, z: 3} + if (token is JObject obj && obj.ContainsKey("x") && obj.ContainsKey("y") && obj.ContainsKey("z")) + { + return new Vector3( + obj["x"].ToObject(), + obj["y"].ToObject(), + obj["z"].ToObject() + ); + } + } + catch (Exception ex) + { + McpLog.Warn($"[VectorParsing] Failed to parse Vector3 from '{token}': {ex.Message}"); + } + + return null; + } + + /// + /// Parses a JToken into a Vector3, returning a default value if parsing fails. + /// + public static Vector3 ParseVector3OrDefault(JToken token, Vector3 defaultValue = default) + { + return ParseVector3(token) ?? defaultValue; + } + + /// + /// Parses a JToken (array or object) into a Vector2. + /// + /// The JSON token to parse + /// The parsed Vector2 or null if parsing fails + public static Vector2? ParseVector2(JToken token) + { + if (token == null || token.Type == JTokenType.Null) + return null; + + try + { + // Array format: [x, y] + if (token is JArray array && array.Count >= 2) + { + return new Vector2( + array[0].ToObject(), + array[1].ToObject() + ); + } + + // Object format: {x: 1, y: 2} + if (token is JObject obj && obj.ContainsKey("x") && obj.ContainsKey("y")) + { + return new Vector2( + obj["x"].ToObject(), + obj["y"].ToObject() + ); + } + } + catch (Exception ex) + { + McpLog.Warn($"[VectorParsing] Failed to parse Vector2 from '{token}': {ex.Message}"); + } + + return null; + } + + /// + /// Parses a JToken (array or object) into a Vector4. + /// + /// The JSON token to parse + /// The parsed Vector4 or null if parsing fails + public static Vector4? ParseVector4(JToken token) + { + if (token == null || token.Type == JTokenType.Null) + return null; + + try + { + // Array format: [x, y, z, w] + if (token is JArray array && array.Count >= 4) + { + return new Vector4( + array[0].ToObject(), + array[1].ToObject(), + array[2].ToObject(), + array[3].ToObject() + ); + } + + // Object format: {x: 1, y: 2, z: 3, w: 4} + if (token is JObject obj && obj.ContainsKey("x") && obj.ContainsKey("y") && + obj.ContainsKey("z") && obj.ContainsKey("w")) + { + return new Vector4( + obj["x"].ToObject(), + obj["y"].ToObject(), + obj["z"].ToObject(), + obj["w"].ToObject() + ); + } + } + catch (Exception ex) + { + Debug.LogWarning($"[VectorParsing] Failed to parse Vector4 from '{token}': {ex.Message}"); + } + + return null; + } + + /// + /// Parses a JToken (array or object) into a Quaternion. + /// Supports both euler angles [x, y, z] and quaternion components [x, y, z, w]. + /// Note: Raw quaternion components are NOT normalized. Callers should normalize if needed + /// for operations like interpolation where non-unit quaternions cause issues. + /// + /// The JSON token to parse + /// If true, treats 3-element arrays as euler angles + /// The parsed Quaternion or null if parsing fails + public static Quaternion? ParseQuaternion(JToken token, bool asEulerAngles = true) + { + if (token == null || token.Type == JTokenType.Null) + return null; + + try + { + if (token is JArray array) + { + // Quaternion components: [x, y, z, w] + if (array.Count >= 4) + { + return new Quaternion( + array[0].ToObject(), + array[1].ToObject(), + array[2].ToObject(), + array[3].ToObject() + ); + } + + // Euler angles: [x, y, z] + if (array.Count >= 3 && asEulerAngles) + { + return Quaternion.Euler( + array[0].ToObject(), + array[1].ToObject(), + array[2].ToObject() + ); + } + } + + // Object format: {x: 0, y: 0, z: 0, w: 1} + if (token is JObject obj) + { + if (obj.ContainsKey("x") && obj.ContainsKey("y") && obj.ContainsKey("z") && obj.ContainsKey("w")) + { + return new Quaternion( + obj["x"].ToObject(), + obj["y"].ToObject(), + obj["z"].ToObject(), + obj["w"].ToObject() + ); + } + + // Euler format in object: {x: 45, y: 90, z: 0} (as euler angles) + if (obj.ContainsKey("x") && obj.ContainsKey("y") && obj.ContainsKey("z") && asEulerAngles) + { + return Quaternion.Euler( + obj["x"].ToObject(), + obj["y"].ToObject(), + obj["z"].ToObject() + ); + } + } + } + catch (Exception ex) + { + McpLog.Warn($"[VectorParsing] Failed to parse Quaternion from '{token}': {ex.Message}"); + } + + return null; + } + + /// + /// Parses a JToken (array or object) into a Color. + /// Supports both [r, g, b, a] and {r: 1, g: 1, b: 1, a: 1} formats. + /// + /// The JSON token to parse + /// The parsed Color or null if parsing fails + public static Color? ParseColor(JToken token) + { + if (token == null || token.Type == JTokenType.Null) + return null; + + try + { + // Array format: [r, g, b, a] or [r, g, b] + if (token is JArray array) + { + if (array.Count >= 4) + { + return new Color( + array[0].ToObject(), + array[1].ToObject(), + array[2].ToObject(), + array[3].ToObject() + ); + } + if (array.Count >= 3) + { + return new Color( + array[0].ToObject(), + array[1].ToObject(), + array[2].ToObject(), + 1f // Default alpha + ); + } + } + + // Object format: {r: 1, g: 1, b: 1, a: 1} + if (token is JObject obj && obj.ContainsKey("r") && obj.ContainsKey("g") && obj.ContainsKey("b")) + { + float a = obj.ContainsKey("a") ? obj["a"].ToObject() : 1f; + return new Color( + obj["r"].ToObject(), + obj["g"].ToObject(), + obj["b"].ToObject(), + a + ); + } + } + catch (Exception ex) + { + McpLog.Warn($"[VectorParsing] Failed to parse Color from '{token}': {ex.Message}"); + } + + return null; + } + + /// + /// Parses a JToken into a Color, returning Color.white if parsing fails and no default is specified. + /// + public static Color ParseColorOrDefault(JToken token) => ParseColor(token) ?? Color.white; + + /// + /// Parses a JToken into a Color, returning the specified default if parsing fails. + /// + public static Color ParseColorOrDefault(JToken token, Color defaultValue) => ParseColor(token) ?? defaultValue; + + /// + /// Parses a JToken into a Vector4, returning a default value if parsing fails. + /// Added for ManageVFX refactoring. + /// + public static Vector4 ParseVector4OrDefault(JToken token, Vector4 defaultValue = default) + { + return ParseVector4(token) ?? defaultValue; + } + + /// + /// Parses a JToken into a Gradient. + /// Supports formats: + /// - Simple: {startColor: [r,g,b,a], endColor: [r,g,b,a]} + /// - Full: {colorKeys: [{color: [r,g,b,a], time: 0.0}, ...], alphaKeys: [{alpha: 1.0, time: 0.0}, ...]} + /// Added for ManageVFX refactoring. + /// + /// The JSON token to parse + /// The parsed Gradient or null if parsing fails + public static Gradient ParseGradient(JToken token) + { + if (token == null || token.Type == JTokenType.Null) + return null; + + try + { + Gradient gradient = new Gradient(); + + if (token is JObject obj) + { + // Simple format: {startColor: ..., endColor: ...} + if (obj.ContainsKey("startColor")) + { + Color startColor = ParseColorOrDefault(obj["startColor"]); + Color endColor = ParseColorOrDefault(obj["endColor"] ?? obj["startColor"]); + float startAlpha = obj["startAlpha"]?.ToObject() ?? startColor.a; + float endAlpha = obj["endAlpha"]?.ToObject() ?? endColor.a; + + gradient.SetKeys( + new GradientColorKey[] { new GradientColorKey(startColor, 0f), new GradientColorKey(endColor, 1f) }, + new GradientAlphaKey[] { new GradientAlphaKey(startAlpha, 0f), new GradientAlphaKey(endAlpha, 1f) } + ); + return gradient; + } + + // Full format: {colorKeys: [...], alphaKeys: [...]} + var colorKeys = new List(); + var alphaKeys = new List(); + + if (obj["colorKeys"] is JArray colorKeysArr) + { + foreach (var key in colorKeysArr) + { + Color color = ParseColorOrDefault(key["color"]); + float time = key["time"]?.ToObject() ?? 0f; + colorKeys.Add(new GradientColorKey(color, time)); + } + } + + if (obj["alphaKeys"] is JArray alphaKeysArr) + { + foreach (var key in alphaKeysArr) + { + float alpha = key["alpha"]?.ToObject() ?? 1f; + float time = key["time"]?.ToObject() ?? 0f; + alphaKeys.Add(new GradientAlphaKey(alpha, time)); + } + } + + // Ensure at least 2 keys + if (colorKeys.Count == 0) + { + colorKeys.Add(new GradientColorKey(Color.white, 0f)); + colorKeys.Add(new GradientColorKey(Color.white, 1f)); + } + + if (alphaKeys.Count == 0) + { + alphaKeys.Add(new GradientAlphaKey(1f, 0f)); + alphaKeys.Add(new GradientAlphaKey(1f, 1f)); + } + + gradient.SetKeys(colorKeys.ToArray(), alphaKeys.ToArray()); + return gradient; + } + } + catch (Exception ex) + { + McpLog.Warn($"[VectorParsing] Failed to parse Gradient from '{token}': {ex.Message}"); + } + + return null; + } + + /// + /// Parses a JToken into a Gradient, returning a default gradient if parsing fails. + /// Added for ManageVFX refactoring. + /// + public static Gradient ParseGradientOrDefault(JToken token) + { + var result = ParseGradient(token); + if (result != null) return result; + + // Return default white gradient + var gradient = new Gradient(); + gradient.SetKeys( + new GradientColorKey[] { new GradientColorKey(Color.white, 0f), new GradientColorKey(Color.white, 1f) }, + new GradientAlphaKey[] { new GradientAlphaKey(1f, 0f), new GradientAlphaKey(1f, 1f) } + ); + return gradient; + } + + /// + /// Parses a JToken into an AnimationCurve. + /// + /// Supported formats: + /// + /// Constant: 1.0 (number) - Creates constant curve at that value + /// Simple: {start: 0.0, end: 1.0} or {startValue: 0.0, endValue: 1.0} + /// Full: {keys: [{time: 0, value: 1, inTangent: 0, outTangent: 0}, ...]} + /// + /// + /// Keyframe field defaults (for Full format): + /// + /// time (float): Default: 0 + /// value (float): Default: 1 (note: differs from ManageScriptableObject which uses 0) + /// inTangent (float): Default: 0 + /// outTangent (float): Default: 0 + /// + /// + /// Note: This method is used by ManageVFX. For ScriptableObject patching, + /// see which has slightly different defaults. + /// + /// The JSON token to parse + /// The parsed AnimationCurve or null if parsing fails + public static AnimationCurve ParseAnimationCurve(JToken token) + { + if (token == null || token.Type == JTokenType.Null) + return null; + + try + { + // Constant value: just a number + if (token.Type == JTokenType.Float || token.Type == JTokenType.Integer) + { + return AnimationCurve.Constant(0f, 1f, token.ToObject()); + } + + if (token is JObject obj) + { + // Full format: {keys: [...]} + if (obj["keys"] is JArray keys) + { + AnimationCurve curve = new AnimationCurve(); + foreach (var key in keys) + { + float time = key["time"]?.ToObject() ?? 0f; + float value = key["value"]?.ToObject() ?? 1f; + float inTangent = key["inTangent"]?.ToObject() ?? 0f; + float outTangent = key["outTangent"]?.ToObject() ?? 0f; + curve.AddKey(new Keyframe(time, value, inTangent, outTangent)); + } + return curve; + } + + // Simple format: {start: 0.0, end: 1.0} or {startValue: 0.0, endValue: 1.0} + if (obj.ContainsKey("start") || obj.ContainsKey("startValue") || obj.ContainsKey("end") || obj.ContainsKey("endValue")) + { + float startValue = obj["start"]?.ToObject() ?? obj["startValue"]?.ToObject() ?? 1f; + float endValue = obj["end"]?.ToObject() ?? obj["endValue"]?.ToObject() ?? 1f; + AnimationCurve curve = new AnimationCurve(); + curve.AddKey(0f, startValue); + curve.AddKey(1f, endValue); + return curve; + } + } + } + catch (Exception ex) + { + McpLog.Warn($"[VectorParsing] Failed to parse AnimationCurve from '{token}': {ex.Message}"); + } + + return null; + } + + /// + /// Parses a JToken into an AnimationCurve, returning a constant curve if parsing fails. + /// Added for ManageVFX refactoring. + /// + /// The JSON token to parse + /// The constant value for the default curve + public static AnimationCurve ParseAnimationCurveOrDefault(JToken token, float defaultValue = 1f) + { + return ParseAnimationCurve(token) ?? AnimationCurve.Constant(0f, 1f, defaultValue); + } + + /// + /// Validates AnimationCurve JSON format without parsing it. + /// Used by dry-run validation to provide early feedback on format errors. + /// + /// Validated formats: + /// + /// Wrapped: { "keys": [ { "time": 0, "value": 1.0 }, ... ] } + /// Direct array: [ { "time": 0, "value": 1.0 }, ... ] + /// Null/empty: Valid (will set empty curve) + /// + /// + /// The JSON value to validate + /// Output message describing validation result or error + /// True if format is valid, false otherwise + public static bool ValidateAnimationCurveFormat(JToken valueToken, out string message) + { + message = null; + + if (valueToken == null || valueToken.Type == JTokenType.Null) + { + message = "Value format valid (will set empty curve)."; + return true; + } + + JArray keysArray = null; + + if (valueToken is JObject curveObj) + { + keysArray = curveObj["keys"] as JArray; + if (keysArray == null) + { + message = "AnimationCurve object requires 'keys' array. Expected: { \"keys\": [ { \"time\": 0, \"value\": 0 }, ... ] }"; + return false; + } + } + else if (valueToken is JArray directArray) + { + keysArray = directArray; + } + else + { + message = "AnimationCurve requires object with 'keys' or array of keyframes. " + + "Expected: { \"keys\": [ { \"time\": 0, \"value\": 0, \"inSlope\": 0, \"outSlope\": 0 }, ... ] }"; + return false; + } + + // Validate each keyframe + for (int i = 0; i < keysArray.Count; i++) + { + var keyToken = keysArray[i]; + if (keyToken is not JObject keyObj) + { + message = $"Keyframe at index {i} must be an object with 'time' and 'value'."; + return false; + } + + // Validate numeric fields if present + string[] numericFields = { "time", "value", "inSlope", "outSlope", "inTangent", "outTangent", "inWeight", "outWeight" }; + foreach (var field in numericFields) + { + if (!ParamCoercion.ValidateNumericField(keyObj, field, out var fieldError)) + { + message = $"Keyframe[{i}].{field}: {fieldError}"; + return false; + } + } + + if (!ParamCoercion.ValidateIntegerField(keyObj, "weightedMode", out var weightedModeError)) + { + message = $"Keyframe[{i}].weightedMode: {weightedModeError}"; + return false; + } + } + + message = $"Value format valid (AnimationCurve with {keysArray.Count} keyframes). " + + "Note: Missing keyframe fields default to 0 (time, value, inSlope, outSlope, inWeight, outWeight)."; + return true; + } + + /// + /// Validates Quaternion JSON format without parsing it. + /// Used by dry-run validation to provide early feedback on format errors. + /// + /// Validated formats: + /// + /// Euler array: [x, y, z] - 3 numeric elements + /// Raw quaternion: [x, y, z, w] - 4 numeric elements + /// Object: { "x": 0, "y": 0, "z": 0, "w": 1 } + /// Explicit euler: { "euler": [x, y, z] } + /// Null/empty: Valid (will set identity) + /// + /// + /// The JSON value to validate + /// Output message describing validation result or error + /// True if format is valid, false otherwise + public static bool ValidateQuaternionFormat(JToken valueToken, out string message) + { + message = null; + + if (valueToken == null || valueToken.Type == JTokenType.Null) + { + message = "Value format valid (will set identity quaternion)."; + return true; + } + + if (valueToken is JArray arr) + { + if (arr.Count == 3) + { + // Validate Euler angles [x, y, z] + for (int i = 0; i < 3; i++) + { + if (!ParamCoercion.IsNumericToken(arr[i])) + { + message = $"Euler angle at index {i} must be a number."; + return false; + } + } + message = "Value format valid (Quaternion from Euler angles [x, y, z])."; + return true; + } + else if (arr.Count == 4) + { + // Validate raw quaternion [x, y, z, w] + for (int i = 0; i < 4; i++) + { + if (!ParamCoercion.IsNumericToken(arr[i])) + { + message = $"Quaternion component at index {i} must be a number."; + return false; + } + } + message = "Value format valid (Quaternion from [x, y, z, w])."; + return true; + } + else + { + message = "Quaternion array must have 3 elements (Euler angles) or 4 elements (x, y, z, w)."; + return false; + } + } + else if (valueToken is JObject obj) + { + // Check for explicit euler property + if (obj["euler"] is JArray eulerArr) + { + if (eulerArr.Count != 3) + { + message = "Quaternion euler array must have exactly 3 elements [x, y, z]."; + return false; + } + for (int i = 0; i < 3; i++) + { + if (!ParamCoercion.IsNumericToken(eulerArr[i])) + { + message = $"Euler angle at index {i} must be a number."; + return false; + } + } + message = "Value format valid (Quaternion from { euler: [x, y, z] })."; + return true; + } + + // Object format { x, y, z, w } + if (obj["x"] != null && obj["y"] != null && obj["z"] != null && obj["w"] != null) + { + if (!ParamCoercion.IsNumericToken(obj["x"]) || !ParamCoercion.IsNumericToken(obj["y"]) || + !ParamCoercion.IsNumericToken(obj["z"]) || !ParamCoercion.IsNumericToken(obj["w"])) + { + message = "Quaternion { x, y, z, w } fields must all be numbers."; + return false; + } + message = "Value format valid (Quaternion from { x, y, z, w })."; + return true; + } + + message = "Quaternion object must have { x, y, z, w } or { euler: [x, y, z] }."; + return false; + } + else + { + message = "Quaternion requires array [x,y,z] (Euler), [x,y,z,w] (raw), or object { x, y, z, w }."; + return false; + } + } + + /// + /// Parses a JToken into a Rect. + /// Supports {x, y, width, height} format. + /// + public static Rect? ParseRect(JToken token) + { + if (token == null || token.Type == JTokenType.Null) + return null; + + try + { + if (token is JObject obj && + obj.ContainsKey("x") && obj.ContainsKey("y") && + obj.ContainsKey("width") && obj.ContainsKey("height")) + { + return new Rect( + obj["x"].ToObject(), + obj["y"].ToObject(), + obj["width"].ToObject(), + obj["height"].ToObject() + ); + } + + // Array format: [x, y, width, height] + if (token is JArray array && array.Count >= 4) + { + return new Rect( + array[0].ToObject(), + array[1].ToObject(), + array[2].ToObject(), + array[3].ToObject() + ); + } + } + catch (Exception ex) + { + McpLog.Warn($"[VectorParsing] Failed to parse Rect from '{token}': {ex.Message}"); + } + + return null; + } + + /// + /// Parses a JToken into a Bounds. + /// Supports {center: {x,y,z}, size: {x,y,z}} format. + /// + public static Bounds? ParseBounds(JToken token) + { + if (token == null || token.Type == JTokenType.Null) + return null; + + try + { + if (token is JObject obj && obj.ContainsKey("center") && obj.ContainsKey("size")) + { + var center = ParseVector3(obj["center"]) ?? Vector3.zero; + var size = ParseVector3(obj["size"]) ?? Vector3.zero; + return new Bounds(center, size); + } + } + catch (Exception ex) + { + McpLog.Warn($"[VectorParsing] Failed to parse Bounds from '{token}': {ex.Message}"); + } + + return null; + } + } +} + diff --git a/Packages/MCPForUnity/Editor/Helpers/VectorParsing.cs.meta b/Packages/MCPForUnity/Editor/Helpers/VectorParsing.cs.meta new file mode 100644 index 00000000..f9b8b5fa --- /dev/null +++ b/Packages/MCPForUnity/Editor/Helpers/VectorParsing.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ca2205caede3744aebda9f6da2fa2c22 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/MCPForUnity.Editor.asmdef b/Packages/MCPForUnity/Editor/MCPForUnity.Editor.asmdef new file mode 100644 index 00000000..96850293 --- /dev/null +++ b/Packages/MCPForUnity/Editor/MCPForUnity.Editor.asmdef @@ -0,0 +1,20 @@ +{ + "name": "MCPForUnity.Editor", + "rootNamespace": "MCPForUnity.Editor", + "references": [ + "MCPForUnity.Runtime", + "Newtonsoft.Json" + ], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "overrideReferences": false, + "precompiledReferences": [ + "Newtonsoft.Json.dll" + ], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Unity.XR.Interaction.Toolkit.Samples.DeviceSimulator.asmdef.meta b/Packages/MCPForUnity/Editor/MCPForUnity.Editor.asmdef.meta similarity index 76% rename from Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Unity.XR.Interaction.Toolkit.Samples.DeviceSimulator.asmdef.meta rename to Packages/MCPForUnity/Editor/MCPForUnity.Editor.asmdef.meta index ddef3314..b819bd4d 100644 --- a/Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator/Unity.XR.Interaction.Toolkit.Samples.DeviceSimulator.asmdef.meta +++ b/Packages/MCPForUnity/Editor/MCPForUnity.Editor.asmdef.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: a0c6cb4ff4b70b44e933543a342fb2b1 +guid: 98f702da6ca044be59a864a9419c4eab AssemblyDefinitionImporter: externalObjects: {} userData: diff --git a/Packages/MCPForUnity/Editor/McpCiBoot.cs b/Packages/MCPForUnity/Editor/McpCiBoot.cs new file mode 100644 index 00000000..c8e8c19e --- /dev/null +++ b/Packages/MCPForUnity/Editor/McpCiBoot.cs @@ -0,0 +1,21 @@ +using System; +using MCPForUnity.Editor.Constants; +using MCPForUnity.Editor.Services.Transport.Transports; +using UnityEditor; + +namespace MCPForUnity.Editor +{ + public static class McpCiBoot + { + public static void StartStdioForCi() + { + try + { + EditorPrefs.SetBool(EditorPrefKeys.UseHttpTransport, false); + } + catch { /* ignore */ } + + StdioBridgeHost.StartAutoConnect(); + } + } +} diff --git a/Packages/MCPForUnity/Editor/McpCiBoot.cs.meta b/Packages/MCPForUnity/Editor/McpCiBoot.cs.meta new file mode 100644 index 00000000..7614d93a --- /dev/null +++ b/Packages/MCPForUnity/Editor/McpCiBoot.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ef9dca277ab34ba1b136d8dcd45de948 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/MenuItems.meta b/Packages/MCPForUnity/Editor/MenuItems.meta new file mode 100644 index 00000000..ad5fb5e6 --- /dev/null +++ b/Packages/MCPForUnity/Editor/MenuItems.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9e7f37616736f4d3cbd8bdbc626f5ab9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/MenuItems/MCPForUnityMenu.cs b/Packages/MCPForUnity/Editor/MenuItems/MCPForUnityMenu.cs new file mode 100644 index 00000000..c280d955 --- /dev/null +++ b/Packages/MCPForUnity/Editor/MenuItems/MCPForUnityMenu.cs @@ -0,0 +1,36 @@ +using MCPForUnity.Editor.Setup; +using MCPForUnity.Editor.Windows; +using UnityEditor; +using UnityEngine; + +namespace MCPForUnity.Editor.MenuItems +{ + public static class MCPForUnityMenu + { + [MenuItem("Window/MCP For Unity/Toggle MCP Window %#m", priority = 1)] + public static void ToggleMCPWindow() + { + if (MCPForUnityEditorWindow.HasAnyOpenWindow()) + { + MCPForUnityEditorWindow.CloseAllOpenWindows(); + } + else + { + MCPForUnityEditorWindow.ShowWindow(); + } + } + + [MenuItem("Window/MCP For Unity/Local Setup Window", priority = 2)] + public static void ShowSetupWindow() + { + SetupWindowService.ShowSetupWindow(); + } + + + [MenuItem("Window/MCP For Unity/Edit EditorPrefs", priority = 3)] + public static void ShowEditorPrefsWindow() + { + EditorPrefsWindow.ShowWindow(); + } + } +} diff --git a/Packages/MCPForUnity/Editor/MenuItems/MCPForUnityMenu.cs.meta b/Packages/MCPForUnity/Editor/MenuItems/MCPForUnityMenu.cs.meta new file mode 100644 index 00000000..af82a270 --- /dev/null +++ b/Packages/MCPForUnity/Editor/MenuItems/MCPForUnityMenu.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 42b27c415aa084fe6a9cc6cf03979d36 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Migrations.meta b/Packages/MCPForUnity/Editor/Migrations.meta new file mode 100644 index 00000000..62d67f08 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Migrations.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8bb6a578d4df4e2daa0bd1aa1fa492d5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Migrations/LegacyServerSrcMigration.cs b/Packages/MCPForUnity/Editor/Migrations/LegacyServerSrcMigration.cs new file mode 100644 index 00000000..4fbeac85 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Migrations/LegacyServerSrcMigration.cs @@ -0,0 +1,80 @@ +using System; +using MCPForUnity.Editor.Constants; +using MCPForUnity.Editor.Helpers; +using MCPForUnity.Editor.Services; +using UnityEditor; +using UnityEngine; + +namespace MCPForUnity.Editor.Migrations +{ + /// + /// Detects legacy embedded-server preferences and migrates configs to the new uvx/stdio path once. + /// + [InitializeOnLoad] + internal static class LegacyServerSrcMigration + { + private const string ServerSrcKey = EditorPrefKeys.ServerSrc; + private const string UseEmbeddedKey = EditorPrefKeys.UseEmbeddedServer; + + static LegacyServerSrcMigration() + { + if (Application.isBatchMode) + return; + + EditorApplication.delayCall += RunMigrationIfNeeded; + } + + private static void RunMigrationIfNeeded() + { + EditorApplication.delayCall -= RunMigrationIfNeeded; + + bool hasServerSrc = EditorPrefs.HasKey(ServerSrcKey); + bool hasUseEmbedded = EditorPrefs.HasKey(UseEmbeddedKey); + + if (!hasServerSrc && !hasUseEmbedded) + { + return; + } + + try + { + McpLog.Info("Detected legacy embedded MCP server configuration. Updating all client configs..."); + + var summary = MCPServiceLocator.Client.ConfigureAllDetectedClients(); + + if (summary.FailureCount > 0) + { + McpLog.Warn($"Legacy configuration migration finished with errors ({summary.GetSummaryMessage()}). details:"); + if (summary.Messages != null) + { + foreach (var message in summary.Messages) + { + McpLog.Warn($" {message}"); + } + } + McpLog.Warn("Legacy keys will be removed to prevent migration loop. Please configure failing clients manually."); + } + else + { + McpLog.Info($"Legacy configuration migration complete ({summary.GetSummaryMessage()})"); + } + + if (hasServerSrc) + { + EditorPrefs.DeleteKey(ServerSrcKey); + McpLog.Info(" ✓ Removed legacy key: MCPForUnity.ServerSrc"); + } + + if (hasUseEmbedded) + { + EditorPrefs.DeleteKey(UseEmbeddedKey); + McpLog.Info(" ✓ Removed legacy key: MCPForUnity.UseEmbeddedServer"); + } + } + catch (Exception ex) + { + McpLog.Error($"Legacy MCP server migration failed: {ex.Message}"); + } + } + } +} diff --git a/Packages/MCPForUnity/Editor/Migrations/LegacyServerSrcMigration.cs.meta b/Packages/MCPForUnity/Editor/Migrations/LegacyServerSrcMigration.cs.meta new file mode 100644 index 00000000..ddc85c03 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Migrations/LegacyServerSrcMigration.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4436b2149abf4b0d8014f81cd29a2bd0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Migrations/StdIoVersionMigration.cs b/Packages/MCPForUnity/Editor/Migrations/StdIoVersionMigration.cs new file mode 100644 index 00000000..850e2733 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Migrations/StdIoVersionMigration.cs @@ -0,0 +1,148 @@ +using System; +using System.IO; +using System.Linq; +using MCPForUnity.Editor.Clients; +using MCPForUnity.Editor.Constants; +using MCPForUnity.Editor.Helpers; +using MCPForUnity.Editor.Models; +using MCPForUnity.Editor.Services; +using Newtonsoft.Json.Linq; +using UnityEditor; +using UnityEngine; + +namespace MCPForUnity.Editor.Migrations +{ + /// + /// Keeps stdio MCP clients in sync with the current package version by rewriting their configs when the package updates. + /// + [InitializeOnLoad] + internal static class StdIoVersionMigration + { + private const string LastUpgradeKey = EditorPrefKeys.LastStdIoUpgradeVersion; + + static StdIoVersionMigration() + { + if (Application.isBatchMode) + return; + + EditorApplication.delayCall += RunMigrationIfNeeded; + } + + private static void RunMigrationIfNeeded() + { + EditorApplication.delayCall -= RunMigrationIfNeeded; + + string currentVersion = AssetPathUtility.GetPackageVersion(); + if (string.IsNullOrEmpty(currentVersion) || string.Equals(currentVersion, "unknown", StringComparison.OrdinalIgnoreCase)) + { + return; + } + + string lastUpgradeVersion = string.Empty; + try { lastUpgradeVersion = EditorPrefs.GetString(LastUpgradeKey, string.Empty); } catch { } + + if (string.Equals(lastUpgradeVersion, currentVersion, StringComparison.OrdinalIgnoreCase)) + { + return; // Already refreshed for this package version + } + + bool hadFailures = false; + bool touchedAny = false; + + var configurators = McpClientRegistry.All.OfType().ToList(); + foreach (var configurator in configurators) + { + try + { + if (!configurator.SupportsAutoConfigure) + continue; + + // Handle CLI-based configurators (e.g., Claude Code CLI) + // CheckStatus with attemptAutoRewrite=true will auto-reregister if version mismatch + if (configurator is ClaudeCliMcpConfigurator cliConfigurator) + { + var previousStatus = configurator.Status; + configurator.CheckStatus(attemptAutoRewrite: true); + if (configurator.Status != previousStatus) + { + touchedAny = true; + } + continue; + } + + // Handle JSON file-based configurators + if (!ConfigUsesStdIo(configurator.Client)) + continue; + + MCPServiceLocator.Client.ConfigureClient(configurator); + touchedAny = true; + } + catch (Exception ex) + { + hadFailures = true; + McpLog.Warn($"Failed to refresh stdio config for {configurator.DisplayName}: {ex.Message}"); + } + } + + if (!touchedAny) + { + // Nothing needed refreshing; still record version so we don't rerun every launch + try { EditorPrefs.SetString(LastUpgradeKey, currentVersion); } catch { } + return; + } + + if (hadFailures) + { + McpLog.Warn("Stdio MCP upgrade encountered errors; will retry next session."); + return; + } + + try + { + EditorPrefs.SetString(LastUpgradeKey, currentVersion); + } + catch { } + + McpLog.Info($"Updated stdio MCP configs to package version {currentVersion}."); + } + + private static bool ConfigUsesStdIo(McpClient client) + { + return JsonConfigUsesStdIo(client); + } + + private static bool JsonConfigUsesStdIo(McpClient client) + { + string configPath = McpConfigurationHelper.GetClientConfigPath(client); + if (string.IsNullOrEmpty(configPath) || !File.Exists(configPath)) + { + return false; + } + + try + { + var root = JObject.Parse(File.ReadAllText(configPath)); + + JToken unityNode = null; + if (client.IsVsCodeLayout) + { + unityNode = root.SelectToken("servers.unityMCP") + ?? root.SelectToken("mcp.servers.unityMCP"); + } + else + { + unityNode = root.SelectToken("mcpServers.unityMCP"); + } + + if (unityNode == null) return false; + + return unityNode["command"] != null; + } + catch + { + return false; + } + } + + } +} diff --git a/Packages/MCPForUnity/Editor/Migrations/StdIoVersionMigration.cs.meta b/Packages/MCPForUnity/Editor/Migrations/StdIoVersionMigration.cs.meta new file mode 100644 index 00000000..872a3571 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Migrations/StdIoVersionMigration.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f1d589c8c8684e6f919ffb393c4b4db5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Models.meta b/Packages/MCPForUnity/Editor/Models.meta new file mode 100644 index 00000000..85404561 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Models.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 16d3ab36890b6c14f9afeabee30e03e3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Models/Command.cs b/Packages/MCPForUnity/Editor/Models/Command.cs new file mode 100644 index 00000000..02a89d88 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Models/Command.cs @@ -0,0 +1,21 @@ +using Newtonsoft.Json.Linq; + +namespace MCPForUnity.Editor.Models +{ + /// + /// Represents a command received from the MCP client + /// + public class Command + { + /// + /// The type of command to execute + /// + public string type { get; set; } + + /// + /// The parameters for the command + /// + public JObject @params { get; set; } + } +} + diff --git a/Packages/MCPForUnity/Editor/Models/Command.cs.meta b/Packages/MCPForUnity/Editor/Models/Command.cs.meta new file mode 100644 index 00000000..63618f53 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Models/Command.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6754c84e5deb74749bc3a19e0c9aa280 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Models/MCPConfigServer.cs b/Packages/MCPForUnity/Editor/Models/MCPConfigServer.cs new file mode 100644 index 00000000..25f1163d --- /dev/null +++ b/Packages/MCPForUnity/Editor/Models/MCPConfigServer.cs @@ -0,0 +1,23 @@ +using System; +using Newtonsoft.Json; + +namespace MCPForUnity.Editor.Models +{ + [Serializable] + public class McpConfigServer + { + [JsonProperty("command")] + public string command; + + [JsonProperty("args")] + public string[] args; + + // VSCode expects a transport type; include only when explicitly set + [JsonProperty("type", NullValueHandling = NullValueHandling.Ignore)] + public string type; + + // URL for HTTP transport mode + [JsonProperty("url", NullValueHandling = NullValueHandling.Ignore)] + public string url; + } +} diff --git a/Packages/MCPForUnity/Editor/Models/MCPConfigServer.cs.meta b/Packages/MCPForUnity/Editor/Models/MCPConfigServer.cs.meta new file mode 100644 index 00000000..0574c5a6 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Models/MCPConfigServer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5fae9d995f514e9498e9613e2cdbeca9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Models/MCPConfigServers.cs b/Packages/MCPForUnity/Editor/Models/MCPConfigServers.cs new file mode 100644 index 00000000..d5065a16 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Models/MCPConfigServers.cs @@ -0,0 +1,12 @@ +using System; +using Newtonsoft.Json; + +namespace MCPForUnity.Editor.Models +{ + [Serializable] + public class McpConfigServers + { + [JsonProperty("unityMCP")] + public McpConfigServer unityMCP; + } +} diff --git a/Packages/MCPForUnity/Editor/Models/MCPConfigServers.cs.meta b/Packages/MCPForUnity/Editor/Models/MCPConfigServers.cs.meta new file mode 100644 index 00000000..1fb5f0b2 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Models/MCPConfigServers.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bcb583553e8173b49be71a5c43bd9502 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Models/McpClient.cs b/Packages/MCPForUnity/Editor/Models/McpClient.cs new file mode 100644 index 00000000..832bb8a2 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Models/McpClient.cs @@ -0,0 +1,57 @@ +using System.Collections.Generic; + +namespace MCPForUnity.Editor.Models +{ + public class McpClient + { + public string name; + public string windowsConfigPath; + public string macConfigPath; + public string linuxConfigPath; + public string configStatus; + public McpStatus status = McpStatus.NotConfigured; + public ConfiguredTransport configuredTransport = ConfiguredTransport.Unknown; + + // Capability flags/config for JSON-based configurators + public bool IsVsCodeLayout; // Whether the config file follows VS Code layout (env object at root) + public bool SupportsHttpTransport = true; // Whether the MCP server supports HTTP transport + public bool EnsureEnvObject; // Whether to ensure the env object is present in the config + public bool StripEnvWhenNotRequired; // Whether to strip the env object when not required + public string HttpUrlProperty = "url"; // The property name for the HTTP URL in the config + public Dictionary DefaultUnityFields = new(); + + // Helper method to convert the enum to a display string + public string GetStatusDisplayString() + { + return status switch + { + McpStatus.NotConfigured => "Not Configured", + McpStatus.Configured => "Configured", + McpStatus.Running => "Running", + McpStatus.Connected => "Connected", + McpStatus.IncorrectPath => "Incorrect Path", + McpStatus.CommunicationError => "Communication Error", + McpStatus.NoResponse => "No Response", + McpStatus.UnsupportedOS => "Unsupported OS", + McpStatus.MissingConfig => "Missing MCPForUnity Config", + McpStatus.Error => configStatus?.StartsWith("Error:") == true ? configStatus : "Error", + _ => "Unknown", + }; + } + + // Helper method to set both status enum and string for backward compatibility + public void SetStatus(McpStatus newStatus, string errorDetails = null) + { + status = newStatus; + + if (newStatus == McpStatus.Error && !string.IsNullOrEmpty(errorDetails)) + { + configStatus = $"Error: {errorDetails}"; + } + else + { + configStatus = GetStatusDisplayString(); + } + } + } +} diff --git a/Packages/MCPForUnity/Editor/Models/McpClient.cs.meta b/Packages/MCPForUnity/Editor/Models/McpClient.cs.meta new file mode 100644 index 00000000..b08dcf3b --- /dev/null +++ b/Packages/MCPForUnity/Editor/Models/McpClient.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b1afa56984aec0d41808edcebf805e6a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Models/McpConfig.cs b/Packages/MCPForUnity/Editor/Models/McpConfig.cs new file mode 100644 index 00000000..9ddf9d09 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Models/McpConfig.cs @@ -0,0 +1,12 @@ +using System; +using Newtonsoft.Json; + +namespace MCPForUnity.Editor.Models +{ + [Serializable] + public class McpConfig + { + [JsonProperty("mcpServers")] + public McpConfigServers mcpServers; + } +} diff --git a/Packages/MCPForUnity/Editor/Models/McpConfig.cs.meta b/Packages/MCPForUnity/Editor/Models/McpConfig.cs.meta new file mode 100644 index 00000000..2a407c31 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Models/McpConfig.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c17c09908f0c1524daa8b6957ce1f7f5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Models/McpStatus.cs b/Packages/MCPForUnity/Editor/Models/McpStatus.cs new file mode 100644 index 00000000..c23bc819 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Models/McpStatus.cs @@ -0,0 +1,30 @@ +namespace MCPForUnity.Editor.Models +{ + // Enum representing the various status states for MCP clients + public enum McpStatus + { + NotConfigured, // Not set up yet + Configured, // Successfully configured + Running, // Service is running + Connected, // Successfully connected + IncorrectPath, // Configuration has incorrect paths + CommunicationError, // Connected but communication issues + NoResponse, // Connected but not responding + MissingConfig, // Config file exists but missing required elements + UnsupportedOS, // OS is not supported + Error, // General error state + } + + /// + /// Represents the transport type a client is configured to use. + /// Used to detect mismatches between server and client transport settings. + /// + public enum ConfiguredTransport + { + Unknown, // Could not determine transport type + Stdio, // Client configured for stdio transport + Http, // Client configured for HTTP local transport + HttpRemote // Client configured for HTTP remote-hosted transport + } +} + diff --git a/Packages/MCPForUnity/Editor/Models/McpStatus.cs.meta b/Packages/MCPForUnity/Editor/Models/McpStatus.cs.meta new file mode 100644 index 00000000..e8e930d3 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Models/McpStatus.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: aa63057c9e5282d4887352578bf49971 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Resources.meta b/Packages/MCPForUnity/Editor/Resources.meta new file mode 100644 index 00000000..8d921dfd --- /dev/null +++ b/Packages/MCPForUnity/Editor/Resources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a6f5bafffbb0f48c2a33ad9470bb1e2d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Resources/Editor.meta b/Packages/MCPForUnity/Editor/Resources/Editor.meta new file mode 100644 index 00000000..5c252d17 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Resources/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 266967ec2e1df44209bf46ec6037d61d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Resources/Editor/ActiveTool.cs b/Packages/MCPForUnity/Editor/Resources/Editor/ActiveTool.cs new file mode 100644 index 00000000..13a5564a --- /dev/null +++ b/Packages/MCPForUnity/Editor/Resources/Editor/ActiveTool.cs @@ -0,0 +1,64 @@ +using System; +using MCPForUnity.Editor.Helpers; +using Newtonsoft.Json.Linq; +using UnityEditor; + +namespace MCPForUnity.Editor.Resources.Editor +{ + /// + /// Provides information about the currently active editor tool. + /// + [McpForUnityResource("get_active_tool")] + public static class ActiveTool + { + public static object HandleCommand(JObject @params) + { + try + { + Tool currentTool = UnityEditor.Tools.current; + string toolName = currentTool.ToString(); + bool customToolActive = UnityEditor.Tools.current == Tool.Custom; + string activeToolName = customToolActive ? EditorTools.GetActiveToolName() : toolName; + + var toolInfo = new + { + activeTool = activeToolName, + isCustom = customToolActive, + pivotMode = UnityEditor.Tools.pivotMode.ToString(), + pivotRotation = UnityEditor.Tools.pivotRotation.ToString(), + handleRotation = new + { + x = UnityEditor.Tools.handleRotation.eulerAngles.x, + y = UnityEditor.Tools.handleRotation.eulerAngles.y, + z = UnityEditor.Tools.handleRotation.eulerAngles.z + }, + handlePosition = new + { + x = UnityEditor.Tools.handlePosition.x, + y = UnityEditor.Tools.handlePosition.y, + z = UnityEditor.Tools.handlePosition.z + } + }; + + return new SuccessResponse("Retrieved active tool information.", toolInfo); + } + catch (Exception e) + { + return new ErrorResponse($"Error getting active tool: {e.Message}"); + } + } + } + + // Helper class for custom tool names + internal static class EditorTools + { + public static string GetActiveToolName() + { + if (UnityEditor.Tools.current == Tool.Custom) + { + return "Unknown Custom Tool"; + } + return UnityEditor.Tools.current.ToString(); + } + } +} diff --git a/Packages/MCPForUnity/Editor/Resources/Editor/ActiveTool.cs.meta b/Packages/MCPForUnity/Editor/Resources/Editor/ActiveTool.cs.meta new file mode 100644 index 00000000..a2f03abd --- /dev/null +++ b/Packages/MCPForUnity/Editor/Resources/Editor/ActiveTool.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6e78b6227ab7742a8a4f679ee6a8a212 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Resources/Editor/EditorState.cs b/Packages/MCPForUnity/Editor/Resources/Editor/EditorState.cs new file mode 100644 index 00000000..b58c8880 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Resources/Editor/EditorState.cs @@ -0,0 +1,27 @@ +using System; +using MCPForUnity.Editor.Helpers; +using MCPForUnity.Editor.Services; +using Newtonsoft.Json.Linq; + +namespace MCPForUnity.Editor.Resources.Editor +{ + /// + /// Provides dynamic editor state information that changes frequently. + /// + [McpForUnityResource("get_editor_state")] + public static class EditorState + { + public static object HandleCommand(JObject @params) + { + try + { + var snapshot = EditorStateCache.GetSnapshot(); + return new SuccessResponse("Retrieved editor state.", snapshot); + } + catch (Exception e) + { + return new ErrorResponse($"Error getting editor state: {e.Message}"); + } + } + } +} diff --git a/Packages/MCPForUnity/Editor/Resources/Editor/EditorState.cs.meta b/Packages/MCPForUnity/Editor/Resources/Editor/EditorState.cs.meta new file mode 100644 index 00000000..c6c5efa1 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Resources/Editor/EditorState.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f7c6df54e014c44fdb0cd3f65a479e37 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Resources/Editor/Selection.cs b/Packages/MCPForUnity/Editor/Resources/Editor/Selection.cs new file mode 100644 index 00000000..022d9c48 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Resources/Editor/Selection.cs @@ -0,0 +1,52 @@ +using System; +using System.Linq; +using MCPForUnity.Editor.Helpers; +using Newtonsoft.Json.Linq; +using UnityEditor; + +namespace MCPForUnity.Editor.Resources.Editor +{ + /// + /// Provides detailed information about the current editor selection. + /// + [McpForUnityResource("get_selection")] + public static class Selection + { + public static object HandleCommand(JObject @params) + { + try + { + var selectionInfo = new + { + activeObject = UnityEditor.Selection.activeObject?.name, + activeGameObject = UnityEditor.Selection.activeGameObject?.name, + activeTransform = UnityEditor.Selection.activeTransform?.name, + activeInstanceID = UnityEditor.Selection.activeInstanceID, + count = UnityEditor.Selection.count, + objects = UnityEditor.Selection.objects + .Select(obj => new + { + name = obj?.name, + type = obj?.GetType().FullName, + instanceID = obj?.GetInstanceID() + }) + .ToList(), + gameObjects = UnityEditor.Selection.gameObjects + .Select(go => new + { + name = go?.name, + instanceID = go?.GetInstanceID() + }) + .ToList(), + assetGUIDs = UnityEditor.Selection.assetGUIDs + }; + + return new SuccessResponse("Retrieved current selection details.", selectionInfo); + } + catch (Exception e) + { + return new ErrorResponse($"Error getting selection: {e.Message}"); + } + } + } +} diff --git a/Packages/MCPForUnity/Editor/Resources/Editor/Selection.cs.meta b/Packages/MCPForUnity/Editor/Resources/Editor/Selection.cs.meta new file mode 100644 index 00000000..2066f11a --- /dev/null +++ b/Packages/MCPForUnity/Editor/Resources/Editor/Selection.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c7ea869623e094599a70be086ab4fc0e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Resources/Editor/Windows.cs b/Packages/MCPForUnity/Editor/Resources/Editor/Windows.cs new file mode 100644 index 00000000..b69a9d31 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Resources/Editor/Windows.cs @@ -0,0 +1,59 @@ +using System; +using System.Collections.Generic; +using MCPForUnity.Editor.Helpers; +using Newtonsoft.Json.Linq; +using UnityEditor; +using UnityEngine; + +namespace MCPForUnity.Editor.Resources.Editor +{ + /// + /// Provides list of all open editor windows. + /// + [McpForUnityResource("get_windows")] + public static class Windows + { + public static object HandleCommand(JObject @params) + { + try + { + EditorWindow[] allWindows = UnityEngine.Resources.FindObjectsOfTypeAll(); + var openWindows = new List(); + + foreach (EditorWindow window in allWindows) + { + if (window == null) + continue; + + try + { + openWindows.Add(new + { + title = window.titleContent.text, + typeName = window.GetType().FullName, + isFocused = EditorWindow.focusedWindow == window, + position = new + { + x = window.position.x, + y = window.position.y, + width = window.position.width, + height = window.position.height + }, + instanceID = window.GetInstanceID() + }); + } + catch (Exception ex) + { + McpLog.Warn($"Could not get info for window {window.GetType().Name}: {ex.Message}"); + } + } + + return new SuccessResponse("Retrieved list of open editor windows.", openWindows); + } + catch (Exception e) + { + return new ErrorResponse($"Error getting editor windows: {e.Message}"); + } + } + } +} diff --git a/Packages/MCPForUnity/Editor/Resources/Editor/Windows.cs.meta b/Packages/MCPForUnity/Editor/Resources/Editor/Windows.cs.meta new file mode 100644 index 00000000..57dd9edc --- /dev/null +++ b/Packages/MCPForUnity/Editor/Resources/Editor/Windows.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 58a341e64bea440b29deaf859aaea552 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Resources/McpForUnityResourceAttribute.cs b/Packages/MCPForUnity/Editor/Resources/McpForUnityResourceAttribute.cs new file mode 100644 index 00000000..f86cd5ff --- /dev/null +++ b/Packages/MCPForUnity/Editor/Resources/McpForUnityResourceAttribute.cs @@ -0,0 +1,42 @@ +using System; + +namespace MCPForUnity.Editor.Resources +{ + /// + /// Marks a class as an MCP resource handler for auto-discovery. + /// The class must have a public static HandleCommand(JObject) method. + /// + [AttributeUsage(AttributeTargets.Class, AllowMultiple = false)] + public class McpForUnityResourceAttribute : Attribute + { + /// + /// The resource name used to route requests to this resource. + /// If not specified, defaults to the PascalCase class name converted to snake_case. + /// + public string ResourceName { get; } + + /// + /// Human-readable description of what this resource provides. + /// + public string Description { get; set; } + + /// + /// Create an MCP resource attribute with auto-generated resource name. + /// The resource name will be derived from the class name (PascalCase → snake_case). + /// Example: ManageAsset → manage_asset + /// + public McpForUnityResourceAttribute() + { + ResourceName = null; // Will be auto-generated + } + + /// + /// Create an MCP resource attribute with explicit resource name. + /// + /// The resource name (e.g., "manage_asset") + public McpForUnityResourceAttribute(string resourceName) + { + ResourceName = resourceName; + } + } +} diff --git a/Packages/MCPForUnity/Editor/Resources/McpForUnityResourceAttribute.cs.meta b/Packages/MCPForUnity/Editor/Resources/McpForUnityResourceAttribute.cs.meta new file mode 100644 index 00000000..e887db08 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Resources/McpForUnityResourceAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4c2d60f570f3d4bd2a6a2c1293094be3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Resources/MenuItems.meta b/Packages/MCPForUnity/Editor/Resources/MenuItems.meta new file mode 100644 index 00000000..df20ed6c --- /dev/null +++ b/Packages/MCPForUnity/Editor/Resources/MenuItems.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bca79cd3ef8ed466f9e50e2dc7850e46 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Resources/MenuItems/GetMenuItems.cs b/Packages/MCPForUnity/Editor/Resources/MenuItems/GetMenuItems.cs new file mode 100644 index 00000000..f6a84282 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Resources/MenuItems/GetMenuItems.cs @@ -0,0 +1,71 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using MCPForUnity.Editor.Helpers; +using Newtonsoft.Json.Linq; +using UnityEditor; + +namespace MCPForUnity.Editor.Resources.MenuItems +{ + /// + /// Provides a simple read-only resource that returns Unity menu items. + /// + [McpForUnityResource("get_menu_items")] + public static class GetMenuItems + { + private static List _cached; + + [InitializeOnLoadMethod] + private static void BuildCache() => Refresh(); + + public static object HandleCommand(JObject @params) + { + bool forceRefresh = @params?["refresh"]?.ToObject() ?? false; + string search = @params?["search"]?.ToString(); + + var items = GetMenuItemsInternal(forceRefresh); + + if (!string.IsNullOrEmpty(search)) + { + items = items + .Where(item => item.IndexOf(search, StringComparison.OrdinalIgnoreCase) >= 0) + .ToList(); + } + + string message = $"Retrieved {items.Count} menu items"; + return new SuccessResponse(message, items); + } + + internal static List GetMenuItemsInternal(bool forceRefresh) + { + if (forceRefresh || _cached == null) + { + Refresh(); + } + + return (_cached ?? new List()).ToList(); + } + + private static void Refresh() + { + try + { + var methods = TypeCache.GetMethodsWithAttribute(); + _cached = methods + .SelectMany(m => m + .GetCustomAttributes(typeof(MenuItem), false) + .OfType() + .Select(attr => attr.menuItem)) + .Where(s => !string.IsNullOrEmpty(s)) + .Distinct(StringComparer.Ordinal) + .OrderBy(s => s, StringComparer.Ordinal) + .ToList(); + } + catch (Exception ex) + { + McpLog.Error($"[GetMenuItems] Failed to scan menu items: {ex}"); + _cached ??= new List(); + } + } + } +} diff --git a/Packages/MCPForUnity/Editor/Resources/MenuItems/GetMenuItems.cs.meta b/Packages/MCPForUnity/Editor/Resources/MenuItems/GetMenuItems.cs.meta new file mode 100644 index 00000000..fde7829b --- /dev/null +++ b/Packages/MCPForUnity/Editor/Resources/MenuItems/GetMenuItems.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 04eeea61eb5c24033a88013845d25f23 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Resources/Project.meta b/Packages/MCPForUnity/Editor/Resources/Project.meta new file mode 100644 index 00000000..1adf0443 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Resources/Project.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 538489f13d7914c4eba9a67e29001b43 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Resources/Project/Layers.cs b/Packages/MCPForUnity/Editor/Resources/Project/Layers.cs new file mode 100644 index 00000000..9e9ef7d5 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Resources/Project/Layers.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; +using MCPForUnity.Editor.Helpers; +using Newtonsoft.Json.Linq; +using UnityEngine; + +namespace MCPForUnity.Editor.Resources.Project +{ + /// + /// Provides dictionary of layer indices to layer names. + /// + [McpForUnityResource("get_layers")] + public static class Layers + { + private const int TotalLayerCount = 32; + + public static object HandleCommand(JObject @params) + { + try + { + var layers = new Dictionary(); + for (int i = 0; i < TotalLayerCount; i++) + { + string layerName = LayerMask.LayerToName(i); + if (!string.IsNullOrEmpty(layerName)) + { + layers.Add(i, layerName); + } + } + + return new SuccessResponse("Retrieved current named layers.", layers); + } + catch (Exception e) + { + return new ErrorResponse($"Failed to retrieve layers: {e.Message}"); + } + } + } +} diff --git a/Packages/MCPForUnity/Editor/Resources/Project/Layers.cs.meta b/Packages/MCPForUnity/Editor/Resources/Project/Layers.cs.meta new file mode 100644 index 00000000..427a7e92 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Resources/Project/Layers.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 959ee428299454ac19a636275208ca00 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Resources/Project/ProjectInfo.cs b/Packages/MCPForUnity/Editor/Resources/Project/ProjectInfo.cs new file mode 100644 index 00000000..6e6d12f9 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Resources/Project/ProjectInfo.cs @@ -0,0 +1,41 @@ +using System; +using System.IO; +using MCPForUnity.Editor.Helpers; +using Newtonsoft.Json.Linq; +using UnityEditor; +using UnityEngine; + +namespace MCPForUnity.Editor.Resources.Project +{ + /// + /// Provides static project configuration information. + /// + [McpForUnityResource("get_project_info")] + public static class ProjectInfo + { + public static object HandleCommand(JObject @params) + { + try + { + string assetsPath = Application.dataPath.Replace('\\', '/'); + string projectRoot = Directory.GetParent(assetsPath)?.FullName.Replace('\\', '/'); + string projectName = Path.GetFileName(projectRoot); + + var info = new + { + projectRoot = projectRoot ?? "", + projectName = projectName ?? "", + unityVersion = Application.unityVersion, + platform = EditorUserBuildSettings.activeBuildTarget.ToString(), + assetsPath = assetsPath + }; + + return new SuccessResponse("Retrieved project info.", info); + } + catch (Exception e) + { + return new ErrorResponse($"Error getting project info: {e.Message}"); + } + } + } +} diff --git a/Packages/MCPForUnity/Editor/Resources/Project/ProjectInfo.cs.meta b/Packages/MCPForUnity/Editor/Resources/Project/ProjectInfo.cs.meta new file mode 100644 index 00000000..a8eaf02a --- /dev/null +++ b/Packages/MCPForUnity/Editor/Resources/Project/ProjectInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 81b03415fcf93466e9ed667d19b58d43 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Resources/Project/Tags.cs b/Packages/MCPForUnity/Editor/Resources/Project/Tags.cs new file mode 100644 index 00000000..756f00d8 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Resources/Project/Tags.cs @@ -0,0 +1,27 @@ +using System; +using MCPForUnity.Editor.Helpers; +using Newtonsoft.Json.Linq; +using UnityEditorInternal; + +namespace MCPForUnity.Editor.Resources.Project +{ + /// + /// Provides list of all tags in the project. + /// + [McpForUnityResource("get_tags")] + public static class Tags + { + public static object HandleCommand(JObject @params) + { + try + { + string[] tags = InternalEditorUtility.tags; + return new SuccessResponse("Retrieved current tags.", tags); + } + catch (Exception e) + { + return new ErrorResponse($"Failed to retrieve tags: {e.Message}"); + } + } + } +} diff --git a/Packages/MCPForUnity/Editor/Resources/Project/Tags.cs.meta b/Packages/MCPForUnity/Editor/Resources/Project/Tags.cs.meta new file mode 100644 index 00000000..3529bea6 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Resources/Project/Tags.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2179ac5d98f264d1681e7d5c0d0ed341 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Resources/Scene.meta b/Packages/MCPForUnity/Editor/Resources/Scene.meta new file mode 100644 index 00000000..20d08dbf --- /dev/null +++ b/Packages/MCPForUnity/Editor/Resources/Scene.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 563f6050485b445449a1db200bfba51c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Resources/Scene/GameObjectResource.cs b/Packages/MCPForUnity/Editor/Resources/Scene/GameObjectResource.cs new file mode 100644 index 00000000..2588349f --- /dev/null +++ b/Packages/MCPForUnity/Editor/Resources/Scene/GameObjectResource.cs @@ -0,0 +1,284 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using MCPForUnity.Editor.Helpers; +using Newtonsoft.Json.Linq; +using UnityEditor; +using UnityEngine; + +namespace MCPForUnity.Editor.Resources.Scene +{ + /// + /// Resource handler for reading GameObject data. + /// Provides read-only access to GameObject information without component serialization. + /// + /// URI: unity://scene/gameobject/{instanceID} + /// + [McpForUnityResource("get_gameobject")] + public static class GameObjectResource + { + public static object HandleCommand(JObject @params) + { + if (@params == null) + { + return new ErrorResponse("Parameters cannot be null."); + } + + // Get instance ID from params + int? instanceID = null; + + var idToken = @params["instanceID"] ?? @params["instance_id"] ?? @params["id"]; + if (idToken != null) + { + instanceID = ParamCoercion.CoerceInt(idToken, -1); + if (instanceID == -1) + { + instanceID = null; + } + } + + if (!instanceID.HasValue) + { + return new ErrorResponse("'instanceID' parameter is required."); + } + + try + { + var go = EditorUtility.InstanceIDToObject(instanceID.Value) as GameObject; + if (go == null) + { + return new ErrorResponse($"GameObject with instance ID {instanceID} not found."); + } + + return new + { + success = true, + data = SerializeGameObject(go) + }; + } + catch (Exception e) + { + McpLog.Error($"[GameObjectResource] Error getting GameObject: {e}"); + return new ErrorResponse($"Error getting GameObject: {e.Message}"); + } + } + + /// + /// Serializes a GameObject without component details. + /// For component data, use GetComponents or GetComponent resources. + /// + public static object SerializeGameObject(GameObject go) + { + if (go == null) + return null; + + var transform = go.transform; + + // Get component type names (not full serialization) + var componentTypes = go.GetComponents() + .Where(c => c != null) + .Select(c => c.GetType().Name) + .ToList(); + + // Get children instance IDs (not full serialization) + var childrenIds = new List(); + foreach (Transform child in transform) + { + childrenIds.Add(child.gameObject.GetInstanceID()); + } + + return new + { + instanceID = go.GetInstanceID(), + name = go.name, + tag = go.tag, + layer = go.layer, + layerName = LayerMask.LayerToName(go.layer), + active = go.activeSelf, + activeInHierarchy = go.activeInHierarchy, + isStatic = go.isStatic, + transform = new + { + position = SerializeVector3(transform.position), + localPosition = SerializeVector3(transform.localPosition), + rotation = SerializeVector3(transform.eulerAngles), + localRotation = SerializeVector3(transform.localEulerAngles), + scale = SerializeVector3(transform.localScale), + lossyScale = SerializeVector3(transform.lossyScale) + }, + parent = transform.parent != null ? transform.parent.gameObject.GetInstanceID() : (int?)null, + children = childrenIds, + componentTypes = componentTypes, + path = GameObjectLookup.GetGameObjectPath(go) + }; + } + + private static object SerializeVector3(Vector3 v) + { + return new { x = v.x, y = v.y, z = v.z }; + } + } + + /// + /// Resource handler for reading all components on a GameObject. + /// + /// URI: unity://scene/gameobject/{instanceID}/components + /// + [McpForUnityResource("get_gameobject_components")] + public static class GameObjectComponentsResource + { + public static object HandleCommand(JObject @params) + { + if (@params == null) + { + return new ErrorResponse("Parameters cannot be null."); + } + + var idToken = @params["instanceID"] ?? @params["instance_id"] ?? @params["id"]; + int instanceID = ParamCoercion.CoerceInt(idToken, -1); + if (instanceID == -1) + { + return new ErrorResponse("'instanceID' parameter is required."); + } + + // Pagination parameters + int pageSize = ParamCoercion.CoerceInt(@params["pageSize"] ?? @params["page_size"], 25); + int cursor = ParamCoercion.CoerceInt(@params["cursor"], 0); + bool includeProperties = ParamCoercion.CoerceBool(@params["includeProperties"] ?? @params["include_properties"], true); + + pageSize = Mathf.Clamp(pageSize, 1, 100); + + try + { + var go = EditorUtility.InstanceIDToObject(instanceID) as GameObject; + if (go == null) + { + return new ErrorResponse($"GameObject with instance ID {instanceID} not found."); + } + + var allComponents = go.GetComponents().Where(c => c != null).ToList(); + int total = allComponents.Count; + + var pagedComponents = allComponents.Skip(cursor).Take(pageSize).ToList(); + + var componentData = new List(); + foreach (var component in pagedComponents) + { + if (includeProperties) + { + componentData.Add(GameObjectSerializer.GetComponentData(component)); + } + else + { + componentData.Add(new + { + typeName = component.GetType().FullName, + instanceID = component.GetInstanceID() + }); + } + } + + int? nextCursor = cursor + pagedComponents.Count < total ? cursor + pagedComponents.Count : (int?)null; + + return new + { + success = true, + data = new + { + gameObjectID = instanceID, + gameObjectName = go.name, + components = componentData, + cursor = cursor, + pageSize = pageSize, + nextCursor = nextCursor, + totalCount = total, + hasMore = nextCursor.HasValue, + includeProperties = includeProperties + } + }; + } + catch (Exception e) + { + McpLog.Error($"[GameObjectComponentsResource] Error getting components: {e}"); + return new ErrorResponse($"Error getting components: {e.Message}"); + } + } + } + + /// + /// Resource handler for reading a single component on a GameObject. + /// + /// URI: unity://scene/gameobject/{instanceID}/component/{componentName} + /// + [McpForUnityResource("get_gameobject_component")] + public static class GameObjectComponentResource + { + public static object HandleCommand(JObject @params) + { + if (@params == null) + { + return new ErrorResponse("Parameters cannot be null."); + } + + var idToken = @params["instanceID"] ?? @params["instance_id"] ?? @params["id"]; + int instanceID = ParamCoercion.CoerceInt(idToken, -1); + if (instanceID == -1) + { + return new ErrorResponse("'instanceID' parameter is required."); + } + + string componentName = ParamCoercion.CoerceString(@params["componentName"] ?? @params["component_name"] ?? @params["component"], null); + if (string.IsNullOrEmpty(componentName)) + { + return new ErrorResponse("'componentName' parameter is required."); + } + + try + { + var go = EditorUtility.InstanceIDToObject(instanceID) as GameObject; + if (go == null) + { + return new ErrorResponse($"GameObject with instance ID {instanceID} not found."); + } + + // Find the component by type name + Component targetComponent = null; + foreach (var component in go.GetComponents()) + { + if (component == null) continue; + + var typeName = component.GetType().Name; + var fullTypeName = component.GetType().FullName; + + if (string.Equals(typeName, componentName, StringComparison.OrdinalIgnoreCase) || + string.Equals(fullTypeName, componentName, StringComparison.OrdinalIgnoreCase)) + { + targetComponent = component; + break; + } + } + + if (targetComponent == null) + { + return new ErrorResponse($"Component '{componentName}' not found on GameObject '{go.name}'."); + } + + return new + { + success = true, + data = new + { + gameObjectID = instanceID, + gameObjectName = go.name, + component = GameObjectSerializer.GetComponentData(targetComponent) + } + }; + } + catch (Exception e) + { + McpLog.Error($"[GameObjectComponentResource] Error getting component: {e}"); + return new ErrorResponse($"Error getting component: {e.Message}"); + } + } + } +} diff --git a/Packages/MCPForUnity/Editor/Resources/Scene/GameObjectResource.cs.meta b/Packages/MCPForUnity/Editor/Resources/Scene/GameObjectResource.cs.meta new file mode 100644 index 00000000..5fb61f24 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Resources/Scene/GameObjectResource.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5ee79050d9f6d42798a0757cc7672517 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Resources/Tests.meta b/Packages/MCPForUnity/Editor/Resources/Tests.meta new file mode 100644 index 00000000..0aa0bf04 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Resources/Tests.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 412726d2e774048939b0d2bd4f11a503 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Resources/Tests/GetTests.cs b/Packages/MCPForUnity/Editor/Resources/Tests/GetTests.cs new file mode 100644 index 00000000..4fe48c72 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Resources/Tests/GetTests.cs @@ -0,0 +1,217 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using MCPForUnity.Editor.Helpers; +using MCPForUnity.Editor.Services; +using Newtonsoft.Json.Linq; +using UnityEditor.TestTools.TestRunner.Api; + +namespace MCPForUnity.Editor.Resources.Tests +{ + /// + /// Provides access to Unity tests from the Test Framework with pagination and filtering support. + /// This is a read-only resource that can be queried by MCP clients. + /// + /// Parameters: + /// - mode (optional): Filter by "EditMode" or "PlayMode" + /// - filter (optional): Filter test names by pattern (case-insensitive contains) + /// - page_size (optional): Number of tests per page (default: 50, max: 200) + /// - cursor (optional): 0-based cursor for pagination + /// - page_number (optional): 1-based page number (converted to cursor) + /// + [McpForUnityResource("get_tests")] + public static class GetTests + { + private const int DEFAULT_PAGE_SIZE = 50; + private const int MAX_PAGE_SIZE = 200; + + public static async Task HandleCommand(JObject @params) + { + // Parse mode filter + TestMode? modeFilter = null; + string modeStr = @params?["mode"]?.ToString(); + if (!string.IsNullOrEmpty(modeStr)) + { + if (!ModeParser.TryParse(modeStr, out modeFilter, out var parseError)) + { + return new ErrorResponse(parseError); + } + } + + // Parse name filter + string nameFilter = @params?["filter"]?.ToString(); + + McpLog.Info($"[GetTests] Retrieving tests (mode={modeFilter?.ToString() ?? "all"}, filter={nameFilter ?? "none"})"); + + IReadOnlyList> allTests; + try + { + allTests = await MCPServiceLocator.Tests.GetTestsAsync(modeFilter).ConfigureAwait(true); + } + catch (Exception ex) + { + McpLog.Error($"[GetTests] Error retrieving tests: {ex.Message}\n{ex.StackTrace}"); + return new ErrorResponse("Failed to retrieve tests"); + } + + // Apply name filter if provided and convert to List for pagination + List> filteredTests; + if (!string.IsNullOrEmpty(nameFilter)) + { + filteredTests = allTests + .Where(t => + (t.ContainsKey("name") && t["name"].IndexOf(nameFilter, StringComparison.OrdinalIgnoreCase) >= 0) || + (t.ContainsKey("full_name") && t["full_name"].IndexOf(nameFilter, StringComparison.OrdinalIgnoreCase) >= 0) + ) + .ToList(); + } + else + { + filteredTests = allTests.ToList(); + } + + // Clamp page_size before parsing pagination to ensure cursor is computed correctly + int requestedPageSize = ParamCoercion.CoerceInt( + @params?["page_size"] ?? @params?["pageSize"], + DEFAULT_PAGE_SIZE + ); + int clampedPageSize = System.Math.Min(requestedPageSize, MAX_PAGE_SIZE); + if (clampedPageSize <= 0) clampedPageSize = DEFAULT_PAGE_SIZE; + + // Create modified params with clamped page_size for cursor calculation + var paginationParams = new JObject(@params); + paginationParams["page_size"] = clampedPageSize; + + // Parse pagination with clamped page size + var pagination = PaginationRequest.FromParams(paginationParams, DEFAULT_PAGE_SIZE); + + // Create paginated response + var response = PaginationResponse>.Create(filteredTests, pagination); + + string message = !string.IsNullOrEmpty(nameFilter) + ? $"Retrieved {response.Items.Count} of {response.TotalCount} tests matching '{nameFilter}' (cursor {response.Cursor})" + : $"Retrieved {response.Items.Count} of {response.TotalCount} tests (cursor {response.Cursor})"; + + return new SuccessResponse(message, response); + } + } + + /// + /// DEPRECATED: Use get_tests with mode parameter instead. + /// Provides access to Unity tests for a specific mode (EditMode or PlayMode). + /// This is a read-only resource that can be queried by MCP clients. + /// + /// Parameters: + /// - mode (required): "EditMode" or "PlayMode" + /// - filter (optional): Filter test names by pattern (case-insensitive contains) + /// - page_size (optional): Number of tests per page (default: 50, max: 200) + /// - cursor (optional): 0-based cursor for pagination + /// + [McpForUnityResource("get_tests_for_mode")] + public static class GetTestsForMode + { + private const int DEFAULT_PAGE_SIZE = 50; + private const int MAX_PAGE_SIZE = 200; + + public static async Task HandleCommand(JObject @params) + { + string modeStr = @params?["mode"]?.ToString(); + if (string.IsNullOrEmpty(modeStr)) + { + return new ErrorResponse("'mode' parameter is required"); + } + + if (!ModeParser.TryParse(modeStr, out var parsedMode, out var parseError)) + { + return new ErrorResponse(parseError); + } + + // Parse name filter + string nameFilter = @params?["filter"]?.ToString(); + + McpLog.Info($"[GetTestsForMode] Retrieving tests for mode: {parsedMode.Value} (filter={nameFilter ?? "none"})"); + + IReadOnlyList> allTests; + try + { + allTests = await MCPServiceLocator.Tests.GetTestsAsync(parsedMode).ConfigureAwait(true); + } + catch (Exception ex) + { + McpLog.Error($"[GetTestsForMode] Error retrieving tests: {ex.Message}\n{ex.StackTrace}"); + return new ErrorResponse("Failed to retrieve tests"); + } + + // Apply name filter if provided and convert to List for pagination + List> filteredTests; + if (!string.IsNullOrEmpty(nameFilter)) + { + filteredTests = allTests + .Where(t => + (t.ContainsKey("name") && t["name"].IndexOf(nameFilter, StringComparison.OrdinalIgnoreCase) >= 0) || + (t.ContainsKey("full_name") && t["full_name"].IndexOf(nameFilter, StringComparison.OrdinalIgnoreCase) >= 0) + ) + .ToList(); + } + else + { + filteredTests = allTests.ToList(); + } + + // Clamp page_size before parsing pagination to ensure cursor is computed correctly + int requestedPageSize = ParamCoercion.CoerceInt( + @params?["page_size"] ?? @params?["pageSize"], + DEFAULT_PAGE_SIZE + ); + int clampedPageSize = System.Math.Min(requestedPageSize, MAX_PAGE_SIZE); + if (clampedPageSize <= 0) clampedPageSize = DEFAULT_PAGE_SIZE; + + // Create modified params with clamped page_size for cursor calculation + var paginationParams = new JObject(@params); + paginationParams["page_size"] = clampedPageSize; + + // Parse pagination with clamped page size + var pagination = PaginationRequest.FromParams(paginationParams, DEFAULT_PAGE_SIZE); + + // Create paginated response + var response = PaginationResponse>.Create(filteredTests, pagination); + + string message = nameFilter != null + ? $"Retrieved {response.Items.Count} of {response.TotalCount} {parsedMode.Value} tests matching '{nameFilter}'" + : $"Retrieved {response.Items.Count} of {response.TotalCount} {parsedMode.Value} tests"; + + return new SuccessResponse(message, response); + } + } + + internal static class ModeParser + { + internal static bool TryParse(string modeStr, out TestMode? mode, out string error) + { + error = null; + mode = null; + + if (string.IsNullOrWhiteSpace(modeStr)) + { + error = "'mode' parameter cannot be empty"; + return false; + } + + if (modeStr.Equals("EditMode", StringComparison.OrdinalIgnoreCase)) + { + mode = TestMode.EditMode; + return true; + } + + if (modeStr.Equals("PlayMode", StringComparison.OrdinalIgnoreCase)) + { + mode = TestMode.PlayMode; + return true; + } + + error = $"Unknown test mode: '{modeStr}'. Use 'EditMode' or 'PlayMode'"; + return false; + } + } +} diff --git a/Packages/MCPForUnity/Editor/Resources/Tests/GetTests.cs.meta b/Packages/MCPForUnity/Editor/Resources/Tests/GetTests.cs.meta new file mode 100644 index 00000000..aa419737 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Resources/Tests/GetTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 84183aaed077e4f25968269c952db2d7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services.meta b/Packages/MCPForUnity/Editor/Services.meta new file mode 100644 index 00000000..e800deae --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2ab6b1cc527214416b21e07b96164f24 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/BridgeControlService.cs b/Packages/MCPForUnity/Editor/Services/BridgeControlService.cs new file mode 100644 index 00000000..04583e7d --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/BridgeControlService.cs @@ -0,0 +1,157 @@ + +using System; +using System.Threading.Tasks; +using MCPForUnity.Editor.Constants; +using MCPForUnity.Editor.Helpers; +using MCPForUnity.Editor.Services.Transport; +using MCPForUnity.Editor.Services.Transport.Transports; +using UnityEditor; + +namespace MCPForUnity.Editor.Services +{ + /// + /// Bridges the editor UI to the active transport (HTTP with WebSocket push, or stdio). + /// + public class BridgeControlService : IBridgeControlService + { + private readonly TransportManager _transportManager; + private TransportMode _preferredMode = TransportMode.Http; + + public BridgeControlService() + { + _transportManager = MCPServiceLocator.TransportManager; + } + + private TransportMode ResolvePreferredMode() + { + bool useHttp = EditorConfigurationCache.Instance.UseHttpTransport; + _preferredMode = useHttp ? TransportMode.Http : TransportMode.Stdio; + return _preferredMode; + } + + private static BridgeVerificationResult BuildVerificationResult(TransportState state, TransportMode mode, bool pingSucceeded, string messageOverride = null, bool? handshakeOverride = null) + { + bool handshakeValid = handshakeOverride ?? (mode == TransportMode.Stdio ? state.IsConnected : true); + string transportLabel = string.IsNullOrWhiteSpace(state.TransportName) + ? mode.ToString().ToLowerInvariant() + : state.TransportName; + string detailSuffix = string.IsNullOrWhiteSpace(state.Details) ? string.Empty : $" [{state.Details}]"; + string message = messageOverride + ?? state.Error + ?? (state.IsConnected ? $"Transport '{transportLabel}' connected{detailSuffix}" : $"Transport '{transportLabel}' disconnected{detailSuffix}"); + + return new BridgeVerificationResult + { + Success = pingSucceeded && handshakeValid, + HandshakeValid = handshakeValid, + PingSucceeded = pingSucceeded, + Message = message + }; + } + + public bool IsRunning + { + get + { + var mode = ResolvePreferredMode(); + return _transportManager.IsRunning(mode); + } + } + + public int CurrentPort + { + get + { + var mode = ResolvePreferredMode(); + var state = _transportManager.GetState(mode); + if (state.Port.HasValue) + { + return state.Port.Value; + } + + // Legacy fallback while the stdio bridge is still in play + return StdioBridgeHost.GetCurrentPort(); + } + } + + public bool IsAutoConnectMode => StdioBridgeHost.IsAutoConnectMode(); + public TransportMode? ActiveMode => ResolvePreferredMode(); + + public async Task StartAsync() + { + var mode = ResolvePreferredMode(); + try + { + // Treat transports as mutually exclusive for user-driven session starts: + // stop the *other* transport first to avoid duplicated sessions (e.g. stdio lingering when switching to HTTP). + var otherMode = mode == TransportMode.Http ? TransportMode.Stdio : TransportMode.Http; + try + { + await _transportManager.StopAsync(otherMode); + } + catch (Exception ex) + { + McpLog.Warn($"Error stopping other transport ({otherMode}) before start: {ex.Message}"); + } + + // Legacy safety: stdio may have been started outside TransportManager state. + if (otherMode == TransportMode.Stdio) + { + try { StdioBridgeHost.Stop(); } catch { } + } + + bool started = await _transportManager.StartAsync(mode); + if (!started) + { + McpLog.Warn($"Failed to start MCP transport: {mode}"); + } + return started; + } + catch (Exception ex) + { + McpLog.Error($"Error starting MCP transport {mode}: {ex.Message}"); + return false; + } + } + + public async Task StopAsync() + { + try + { + var mode = ResolvePreferredMode(); + await _transportManager.StopAsync(mode); + } + catch (Exception ex) + { + McpLog.Warn($"Error stopping MCP transport: {ex.Message}"); + } + } + + public async Task VerifyAsync() + { + var mode = ResolvePreferredMode(); + bool pingSucceeded = await _transportManager.VerifyAsync(mode); + var state = _transportManager.GetState(mode); + return BuildVerificationResult(state, mode, pingSucceeded); + } + + public BridgeVerificationResult Verify(int port) + { + var mode = ResolvePreferredMode(); + bool pingSucceeded = _transportManager.VerifyAsync(mode).GetAwaiter().GetResult(); + var state = _transportManager.GetState(mode); + + if (mode == TransportMode.Stdio) + { + bool handshakeValid = state.IsConnected && port == CurrentPort; + string message = handshakeValid + ? $"STDIO transport listening on port {CurrentPort}" + : $"STDIO transport port mismatch (expected {CurrentPort}, got {port})"; + return BuildVerificationResult(state, mode, pingSucceeded && handshakeValid, message, handshakeValid); + } + + return BuildVerificationResult(state, mode, pingSucceeded); + } + + } +} diff --git a/Packages/MCPForUnity/Editor/Services/BridgeControlService.cs.meta b/Packages/MCPForUnity/Editor/Services/BridgeControlService.cs.meta new file mode 100644 index 00000000..93966a28 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/BridgeControlService.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ed4f9f69d84a945248dafc0f0b5a62dd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/ClientConfigurationService.cs b/Packages/MCPForUnity/Editor/Services/ClientConfigurationService.cs new file mode 100644 index 00000000..65f0e1d3 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/ClientConfigurationService.cs @@ -0,0 +1,73 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using MCPForUnity.Editor.Clients; +using MCPForUnity.Editor.Helpers; +using MCPForUnity.Editor.Models; + +namespace MCPForUnity.Editor.Services +{ + /// + /// Implementation of client configuration service + /// + public class ClientConfigurationService : IClientConfigurationService + { + private readonly List configurators; + + public ClientConfigurationService() + { + configurators = McpClientRegistry.All.ToList(); + } + + public IReadOnlyList GetAllClients() => configurators; + + public void ConfigureClient(IMcpClientConfigurator configurator) + { + // When using a local server path, clean stale build artifacts first. + // This prevents old deleted .py files from being picked up by Python's auto-discovery. + if (AssetPathUtility.IsLocalServerPath()) + { + AssetPathUtility.CleanLocalServerBuildArtifacts(); + } + + configurator.Configure(); + } + + public ClientConfigurationSummary ConfigureAllDetectedClients() + { + // When using a local server path, clean stale build artifacts once before configuring all clients. + if (AssetPathUtility.IsLocalServerPath()) + { + AssetPathUtility.CleanLocalServerBuildArtifacts(); + } + + var summary = new ClientConfigurationSummary(); + foreach (var configurator in configurators) + { + try + { + // Always re-run configuration so core fields stay current + configurator.CheckStatus(attemptAutoRewrite: false); + configurator.Configure(); + summary.SuccessCount++; + summary.Messages.Add($"✓ {configurator.DisplayName}: Configured successfully"); + } + catch (Exception ex) + { + summary.FailureCount++; + summary.Messages.Add($"⚠ {configurator.DisplayName}: {ex.Message}"); + } + } + + return summary; + } + + public bool CheckClientStatus(IMcpClientConfigurator configurator, bool attemptAutoRewrite = true) + { + var previous = configurator.Status; + var current = configurator.CheckStatus(attemptAutoRewrite); + return current != previous; + } + + } +} diff --git a/Packages/MCPForUnity/Editor/Services/ClientConfigurationService.cs.meta b/Packages/MCPForUnity/Editor/Services/ClientConfigurationService.cs.meta new file mode 100644 index 00000000..ce6ade0b --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/ClientConfigurationService.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 76cad34d10fd24aaa95c4583c1f88fdf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/EditorConfigurationCache.cs b/Packages/MCPForUnity/Editor/Services/EditorConfigurationCache.cs new file mode 100644 index 00000000..40dedd58 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/EditorConfigurationCache.cs @@ -0,0 +1,345 @@ +using System; +using MCPForUnity.Editor.Constants; +using UnityEditor; + +namespace MCPForUnity.Editor.Services +{ + /// + /// Centralized cache for frequently-read EditorPrefs values. + /// Reduces scattered EditorPrefs.Get* calls and provides change notification. + /// + /// Usage: + /// var config = EditorConfigurationCache.Instance; + /// if (config.UseHttpTransport) { ... } + /// config.OnConfigurationChanged += (key) => { /* refresh UI */ }; + /// + public class EditorConfigurationCache + { + private static EditorConfigurationCache _instance; + private static readonly object _lock = new object(); + + /// + /// Singleton instance. Thread-safe lazy initialization. + /// + public static EditorConfigurationCache Instance + { + get + { + if (_instance == null) + { + lock (_lock) + { + if (_instance == null) + { + _instance = new EditorConfigurationCache(); + } + } + } + return _instance; + } + } + + /// + /// Event fired when any cached configuration value changes. + /// The string parameter is the EditorPrefKeys constant name that changed. + /// + public event Action OnConfigurationChanged; + + // Cached values - most frequently read + private bool _useHttpTransport; + private bool _debugLogs; + private bool _useBetaServer; + private bool _devModeForceServerRefresh; + private string _uvxPathOverride; + private string _gitUrlOverride; + private string _httpBaseUrl; + private string _httpRemoteBaseUrl; + private string _claudeCliPathOverride; + private string _httpTransportScope; + private int _unitySocketPort; + + /// + /// Whether to use HTTP transport (true) or Stdio transport (false). + /// Default: true + /// + public bool UseHttpTransport => _useHttpTransport; + + /// + /// Whether debug logging is enabled. + /// Default: false + /// + public bool DebugLogs => _debugLogs; + + /// + /// Whether to use the beta server channel. + /// Default: true + /// + public bool UseBetaServer => _useBetaServer; + + /// + /// Whether to force server refresh in dev mode (--no-cache --refresh). + /// Default: false + /// + public bool DevModeForceServerRefresh => _devModeForceServerRefresh; + + /// + /// Custom path override for uvx executable. + /// Default: empty string (auto-detect) + /// + public string UvxPathOverride => _uvxPathOverride; + + /// + /// Custom Git URL override for server installation. + /// Default: empty string (use default) + /// + public string GitUrlOverride => _gitUrlOverride; + + /// + /// HTTP base URL for the local MCP server. + /// Default: empty string + /// + public string HttpBaseUrl => _httpBaseUrl; + + /// + /// HTTP base URL for the remote-hosted MCP server. + /// Default: empty string + /// + public string HttpRemoteBaseUrl => _httpRemoteBaseUrl; + + /// + /// Custom path override for Claude CLI executable. + /// Default: empty string (auto-detect) + /// + public string ClaudeCliPathOverride => _claudeCliPathOverride; + + /// + /// HTTP transport scope: "local" or "remote". + /// Default: empty string + /// + public string HttpTransportScope => _httpTransportScope; + + /// + /// Unity socket port for Stdio transport. + /// Default: 0 (auto-assign) + /// + public int UnitySocketPort => _unitySocketPort; + + private EditorConfigurationCache() + { + Refresh(); + } + + /// + /// Refresh all cached values from EditorPrefs. + /// Call this after bulk EditorPrefs changes or domain reload. + /// + public void Refresh() + { + _useHttpTransport = EditorPrefs.GetBool(EditorPrefKeys.UseHttpTransport, true); + _debugLogs = EditorPrefs.GetBool(EditorPrefKeys.DebugLogs, false); + _useBetaServer = EditorPrefs.GetBool(EditorPrefKeys.UseBetaServer, true); + _devModeForceServerRefresh = EditorPrefs.GetBool(EditorPrefKeys.DevModeForceServerRefresh, false); + _uvxPathOverride = EditorPrefs.GetString(EditorPrefKeys.UvxPathOverride, string.Empty); + _gitUrlOverride = EditorPrefs.GetString(EditorPrefKeys.GitUrlOverride, string.Empty); + _httpBaseUrl = EditorPrefs.GetString(EditorPrefKeys.HttpBaseUrl, string.Empty); + _httpRemoteBaseUrl = EditorPrefs.GetString(EditorPrefKeys.HttpRemoteBaseUrl, string.Empty); + _claudeCliPathOverride = EditorPrefs.GetString(EditorPrefKeys.ClaudeCliPathOverride, string.Empty); + _httpTransportScope = EditorPrefs.GetString(EditorPrefKeys.HttpTransportScope, string.Empty); + _unitySocketPort = EditorPrefs.GetInt(EditorPrefKeys.UnitySocketPort, 0); + } + + /// + /// Set UseHttpTransport and update cache + EditorPrefs atomically. + /// + public void SetUseHttpTransport(bool value) + { + if (_useHttpTransport != value) + { + _useHttpTransport = value; + EditorPrefs.SetBool(EditorPrefKeys.UseHttpTransport, value); + OnConfigurationChanged?.Invoke(nameof(UseHttpTransport)); + } + } + + /// + /// Set DebugLogs and update cache + EditorPrefs atomically. + /// + public void SetDebugLogs(bool value) + { + if (_debugLogs != value) + { + _debugLogs = value; + EditorPrefs.SetBool(EditorPrefKeys.DebugLogs, value); + OnConfigurationChanged?.Invoke(nameof(DebugLogs)); + } + } + + /// + /// Set UseBetaServer and update cache + EditorPrefs atomically. + /// + public void SetUseBetaServer(bool value) + { + if (_useBetaServer != value) + { + _useBetaServer = value; + EditorPrefs.SetBool(EditorPrefKeys.UseBetaServer, value); + OnConfigurationChanged?.Invoke(nameof(UseBetaServer)); + } + } + + /// + /// Set DevModeForceServerRefresh and update cache + EditorPrefs atomically. + /// + public void SetDevModeForceServerRefresh(bool value) + { + if (_devModeForceServerRefresh != value) + { + _devModeForceServerRefresh = value; + EditorPrefs.SetBool(EditorPrefKeys.DevModeForceServerRefresh, value); + OnConfigurationChanged?.Invoke(nameof(DevModeForceServerRefresh)); + } + } + + /// + /// Set UvxPathOverride and update cache + EditorPrefs atomically. + /// + public void SetUvxPathOverride(string value) + { + value = value ?? string.Empty; + if (_uvxPathOverride != value) + { + _uvxPathOverride = value; + EditorPrefs.SetString(EditorPrefKeys.UvxPathOverride, value); + OnConfigurationChanged?.Invoke(nameof(UvxPathOverride)); + } + } + + /// + /// Set GitUrlOverride and update cache + EditorPrefs atomically. + /// + public void SetGitUrlOverride(string value) + { + value = value ?? string.Empty; + if (_gitUrlOverride != value) + { + _gitUrlOverride = value; + EditorPrefs.SetString(EditorPrefKeys.GitUrlOverride, value); + OnConfigurationChanged?.Invoke(nameof(GitUrlOverride)); + } + } + + /// + /// Set HttpBaseUrl and update cache + EditorPrefs atomically. + /// + public void SetHttpBaseUrl(string value) + { + value = value ?? string.Empty; + if (_httpBaseUrl != value) + { + _httpBaseUrl = value; + EditorPrefs.SetString(EditorPrefKeys.HttpBaseUrl, value); + OnConfigurationChanged?.Invoke(nameof(HttpBaseUrl)); + } + } + + /// + /// Set HttpRemoteBaseUrl and update cache + EditorPrefs atomically. + /// + public void SetHttpRemoteBaseUrl(string value) + { + value = value ?? string.Empty; + if (_httpRemoteBaseUrl != value) + { + _httpRemoteBaseUrl = value; + EditorPrefs.SetString(EditorPrefKeys.HttpRemoteBaseUrl, value); + OnConfigurationChanged?.Invoke(nameof(HttpRemoteBaseUrl)); + } + } + + /// + /// Set ClaudeCliPathOverride and update cache + EditorPrefs atomically. + /// + public void SetClaudeCliPathOverride(string value) + { + value = value ?? string.Empty; + if (_claudeCliPathOverride != value) + { + _claudeCliPathOverride = value; + EditorPrefs.SetString(EditorPrefKeys.ClaudeCliPathOverride, value); + OnConfigurationChanged?.Invoke(nameof(ClaudeCliPathOverride)); + } + } + + /// + /// Set HttpTransportScope and update cache + EditorPrefs atomically. + /// + public void SetHttpTransportScope(string value) + { + value = value ?? string.Empty; + if (_httpTransportScope != value) + { + _httpTransportScope = value; + EditorPrefs.SetString(EditorPrefKeys.HttpTransportScope, value); + OnConfigurationChanged?.Invoke(nameof(HttpTransportScope)); + } + } + + /// + /// Set UnitySocketPort and update cache + EditorPrefs atomically. + /// + public void SetUnitySocketPort(int value) + { + if (_unitySocketPort != value) + { + _unitySocketPort = value; + EditorPrefs.SetInt(EditorPrefKeys.UnitySocketPort, value); + OnConfigurationChanged?.Invoke(nameof(UnitySocketPort)); + } + } + + /// + /// Force refresh of a single cached value from EditorPrefs. + /// Useful when external code modifies EditorPrefs directly. + /// + public void InvalidateKey(string keyName) + { + switch (keyName) + { + case nameof(UseHttpTransport): + _useHttpTransport = EditorPrefs.GetBool(EditorPrefKeys.UseHttpTransport, true); + break; + case nameof(DebugLogs): + _debugLogs = EditorPrefs.GetBool(EditorPrefKeys.DebugLogs, false); + break; + case nameof(UseBetaServer): + _useBetaServer = EditorPrefs.GetBool(EditorPrefKeys.UseBetaServer, true); + break; + case nameof(DevModeForceServerRefresh): + _devModeForceServerRefresh = EditorPrefs.GetBool(EditorPrefKeys.DevModeForceServerRefresh, false); + break; + case nameof(UvxPathOverride): + _uvxPathOverride = EditorPrefs.GetString(EditorPrefKeys.UvxPathOverride, string.Empty); + break; + case nameof(GitUrlOverride): + _gitUrlOverride = EditorPrefs.GetString(EditorPrefKeys.GitUrlOverride, string.Empty); + break; + case nameof(HttpBaseUrl): + _httpBaseUrl = EditorPrefs.GetString(EditorPrefKeys.HttpBaseUrl, string.Empty); + break; + case nameof(HttpRemoteBaseUrl): + _httpRemoteBaseUrl = EditorPrefs.GetString(EditorPrefKeys.HttpRemoteBaseUrl, string.Empty); + break; + case nameof(ClaudeCliPathOverride): + _claudeCliPathOverride = EditorPrefs.GetString(EditorPrefKeys.ClaudeCliPathOverride, string.Empty); + break; + case nameof(HttpTransportScope): + _httpTransportScope = EditorPrefs.GetString(EditorPrefKeys.HttpTransportScope, string.Empty); + break; + case nameof(UnitySocketPort): + _unitySocketPort = EditorPrefs.GetInt(EditorPrefKeys.UnitySocketPort, 0); + break; + } + OnConfigurationChanged?.Invoke(keyName); + } + } +} diff --git a/Packages/MCPForUnity/Editor/Services/EditorConfigurationCache.cs.meta b/Packages/MCPForUnity/Editor/Services/EditorConfigurationCache.cs.meta new file mode 100644 index 00000000..a6416b44 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/EditorConfigurationCache.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b4a183ac9b63c408886bce40ae58f462 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/EditorPrefsWindowService.cs b/Packages/MCPForUnity/Editor/Services/EditorPrefsWindowService.cs new file mode 100644 index 00000000..2511b03a --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/EditorPrefsWindowService.cs @@ -0,0 +1,54 @@ +using System; +using MCPForUnity.Editor.Windows; +using UnityEditor; + +namespace MCPForUnity.Editor.Services +{ + /// + /// Service for managing the EditorPrefs window + /// Follows the Class-level Singleton pattern + /// + public class EditorPrefsWindowService + { + private static EditorPrefsWindowService _instance; + + /// + /// Get the singleton instance + /// + public static EditorPrefsWindowService Instance + { + get + { + if (_instance == null) + { + throw new Exception("EditorPrefsWindowService not initialized"); + } + return _instance; + } + } + + /// + /// Initialize the service + /// + public static void Initialize() + { + if (_instance == null) + { + _instance = new EditorPrefsWindowService(); + } + } + + private EditorPrefsWindowService() + { + // Private constructor for singleton + } + + /// + /// Show the EditorPrefs window + /// + public void ShowWindow() + { + EditorPrefsWindow.ShowWindow(); + } + } +} diff --git a/Packages/MCPForUnity/Editor/Services/EditorPrefsWindowService.cs.meta b/Packages/MCPForUnity/Editor/Services/EditorPrefsWindowService.cs.meta new file mode 100644 index 00000000..2dc46b1a --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/EditorPrefsWindowService.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2a1c6e4725a484c0abf10f6eaa1d8d5d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/EditorStateCache.cs b/Packages/MCPForUnity/Editor/Services/EditorStateCache.cs new file mode 100644 index 00000000..24fec0f1 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/EditorStateCache.cs @@ -0,0 +1,546 @@ +using System; +using System.Reflection; +using MCPForUnity.Editor.Helpers; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using UnityEditor; +using UnityEditorInternal; +using UnityEditor.SceneManagement; +using UnityEngine; + +namespace MCPForUnity.Editor.Services +{ + /// + /// Maintains a cached readiness snapshot (v2) so status reads remain fast even when Unity is busy. + /// Updated on the main thread via Editor callbacks and periodic update ticks. + /// + [InitializeOnLoad] + internal static class EditorStateCache + { + private static readonly object LockObj = new(); + private static long _sequence; + private static long _observedUnixMs; + + private static bool _lastIsCompiling; + private static long? _lastCompileStartedUnixMs; + private static long? _lastCompileFinishedUnixMs; + + private static bool _domainReloadPending; + private static long? _domainReloadBeforeUnixMs; + private static long? _domainReloadAfterUnixMs; + + private static double _lastUpdateTimeSinceStartup; + private const double MinUpdateIntervalSeconds = 1.0; // Reduced frequency: 1s instead of 0.25s + + // State tracking to detect when snapshot actually changes (checked BEFORE building) + private static string _lastTrackedScenePath; + private static string _lastTrackedSceneName; + private static bool _lastTrackedIsFocused; + private static bool _lastTrackedIsPlaying; + private static bool _lastTrackedIsPaused; + private static bool _lastTrackedIsUpdating; + private static bool _lastTrackedTestsRunning; + private static string _lastTrackedActivityPhase; + + private static JObject _cached; + + private sealed class EditorStateSnapshot + { + [JsonProperty("schema_version")] + public string SchemaVersion { get; set; } + + [JsonProperty("observed_at_unix_ms")] + public long ObservedAtUnixMs { get; set; } + + [JsonProperty("sequence")] + public long Sequence { get; set; } + + [JsonProperty("unity")] + public EditorStateUnity Unity { get; set; } + + [JsonProperty("editor")] + public EditorStateEditor Editor { get; set; } + + [JsonProperty("activity")] + public EditorStateActivity Activity { get; set; } + + [JsonProperty("compilation")] + public EditorStateCompilation Compilation { get; set; } + + [JsonProperty("assets")] + public EditorStateAssets Assets { get; set; } + + [JsonProperty("tests")] + public EditorStateTests Tests { get; set; } + + [JsonProperty("transport")] + public EditorStateTransport Transport { get; set; } + } + + private sealed class EditorStateUnity + { + [JsonProperty("instance_id")] + public string InstanceId { get; set; } + + [JsonProperty("unity_version")] + public string UnityVersion { get; set; } + + [JsonProperty("project_id")] + public string ProjectId { get; set; } + + [JsonProperty("platform")] + public string Platform { get; set; } + + [JsonProperty("is_batch_mode")] + public bool? IsBatchMode { get; set; } + } + + private sealed class EditorStateEditor + { + [JsonProperty("is_focused")] + public bool? IsFocused { get; set; } + + [JsonProperty("play_mode")] + public EditorStatePlayMode PlayMode { get; set; } + + [JsonProperty("active_scene")] + public EditorStateActiveScene ActiveScene { get; set; } + } + + private sealed class EditorStatePlayMode + { + [JsonProperty("is_playing")] + public bool? IsPlaying { get; set; } + + [JsonProperty("is_paused")] + public bool? IsPaused { get; set; } + + [JsonProperty("is_changing")] + public bool? IsChanging { get; set; } + } + + private sealed class EditorStateActiveScene + { + [JsonProperty("path")] + public string Path { get; set; } + + [JsonProperty("guid")] + public string Guid { get; set; } + + [JsonProperty("name")] + public string Name { get; set; } + } + + private sealed class EditorStateActivity + { + [JsonProperty("phase")] + public string Phase { get; set; } + + [JsonProperty("since_unix_ms")] + public long SinceUnixMs { get; set; } + + [JsonProperty("reasons")] + public string[] Reasons { get; set; } + } + + private sealed class EditorStateCompilation + { + [JsonProperty("is_compiling")] + public bool? IsCompiling { get; set; } + + [JsonProperty("is_domain_reload_pending")] + public bool? IsDomainReloadPending { get; set; } + + [JsonProperty("last_compile_started_unix_ms")] + public long? LastCompileStartedUnixMs { get; set; } + + [JsonProperty("last_compile_finished_unix_ms")] + public long? LastCompileFinishedUnixMs { get; set; } + + [JsonProperty("last_domain_reload_before_unix_ms")] + public long? LastDomainReloadBeforeUnixMs { get; set; } + + [JsonProperty("last_domain_reload_after_unix_ms")] + public long? LastDomainReloadAfterUnixMs { get; set; } + } + + private sealed class EditorStateAssets + { + [JsonProperty("is_updating")] + public bool? IsUpdating { get; set; } + + [JsonProperty("external_changes_dirty")] + public bool? ExternalChangesDirty { get; set; } + + [JsonProperty("external_changes_last_seen_unix_ms")] + public long? ExternalChangesLastSeenUnixMs { get; set; } + + [JsonProperty("external_changes_dirty_since_unix_ms")] + public long? ExternalChangesDirtySinceUnixMs { get; set; } + + [JsonProperty("external_changes_last_cleared_unix_ms")] + public long? ExternalChangesLastClearedUnixMs { get; set; } + + [JsonProperty("refresh")] + public EditorStateRefresh Refresh { get; set; } + } + + private sealed class EditorStateRefresh + { + [JsonProperty("is_refresh_in_progress")] + public bool? IsRefreshInProgress { get; set; } + + [JsonProperty("last_refresh_requested_unix_ms")] + public long? LastRefreshRequestedUnixMs { get; set; } + + [JsonProperty("last_refresh_finished_unix_ms")] + public long? LastRefreshFinishedUnixMs { get; set; } + } + + private sealed class EditorStateTests + { + [JsonProperty("is_running")] + public bool? IsRunning { get; set; } + + [JsonProperty("mode")] + public string Mode { get; set; } + + [JsonProperty("current_job_id")] + public string CurrentJobId { get; set; } + + [JsonProperty("started_unix_ms")] + public long? StartedUnixMs { get; set; } + + [JsonProperty("started_by")] + public string StartedBy { get; set; } + + [JsonProperty("last_run")] + public EditorStateLastRun LastRun { get; set; } + } + + private sealed class EditorStateLastRun + { + [JsonProperty("finished_unix_ms")] + public long? FinishedUnixMs { get; set; } + + [JsonProperty("result")] + public string Result { get; set; } + + [JsonProperty("counts")] + public object Counts { get; set; } + } + + private sealed class EditorStateTransport + { + [JsonProperty("unity_bridge_connected")] + public bool? UnityBridgeConnected { get; set; } + + [JsonProperty("last_message_unix_ms")] + public long? LastMessageUnixMs { get; set; } + } + + static EditorStateCache() + { + try + { + _sequence = 0; + _observedUnixMs = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); + _cached = BuildSnapshot("init"); + + EditorApplication.update += OnUpdate; + EditorApplication.playModeStateChanged += _ => ForceUpdate("playmode"); + + AssemblyReloadEvents.beforeAssemblyReload += () => + { + _domainReloadPending = true; + _domainReloadBeforeUnixMs = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); + ForceUpdate("before_domain_reload"); + }; + AssemblyReloadEvents.afterAssemblyReload += () => + { + _domainReloadPending = false; + _domainReloadAfterUnixMs = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); + ForceUpdate("after_domain_reload"); + }; + } + catch (Exception ex) + { + McpLog.Error($"[EditorStateCache] Failed to initialise: {ex.Message}\n{ex.StackTrace}"); + } + } + + private static void OnUpdate() + { + // Throttle to reduce overhead while keeping the snapshot fresh enough for polling clients. + double now = EditorApplication.timeSinceStartup; + // Use GetActualIsCompiling() to avoid Play mode false positives (issue #582) + bool isCompiling = GetActualIsCompiling(); + + // Check for compilation edge transitions (always update on these) + bool compilationEdge = isCompiling != _lastIsCompiling; + + if (!compilationEdge && now - _lastUpdateTimeSinceStartup < MinUpdateIntervalSeconds) + { + return; + } + + // Fast state-change detection BEFORE building snapshot. + // This avoids the expensive BuildSnapshot() call entirely when nothing changed. + // These checks are much cheaper than building a full JSON snapshot. + var scene = EditorSceneManager.GetActiveScene(); + string scenePath = string.IsNullOrEmpty(scene.path) ? null : scene.path; + string sceneName = scene.name ?? string.Empty; + bool isFocused = InternalEditorUtility.isApplicationActive; + bool isPlaying = EditorApplication.isPlaying; + bool isPaused = EditorApplication.isPaused; + bool isUpdating = EditorApplication.isUpdating; + bool testsRunning = TestRunStatus.IsRunning; + + var activityPhase = "idle"; + if (testsRunning) + { + activityPhase = "running_tests"; + } + else if (isCompiling) + { + activityPhase = "compiling"; + } + else if (_domainReloadPending) + { + activityPhase = "domain_reload"; + } + else if (isUpdating) + { + activityPhase = "asset_import"; + } + else if (EditorApplication.isPlayingOrWillChangePlaymode) + { + activityPhase = "playmode_transition"; + } + + bool hasChanges = compilationEdge + || _lastTrackedScenePath != scenePath + || _lastTrackedSceneName != sceneName + || _lastTrackedIsFocused != isFocused + || _lastTrackedIsPlaying != isPlaying + || _lastTrackedIsPaused != isPaused + || _lastTrackedIsUpdating != isUpdating + || _lastTrackedTestsRunning != testsRunning + || _lastTrackedActivityPhase != activityPhase; + + if (!hasChanges) + { + // No state change - skip the expensive BuildSnapshot entirely. + // This is the key optimization that prevents the 28ms GC spikes. + return; + } + + // Update tracked state + _lastTrackedScenePath = scenePath; + _lastTrackedSceneName = sceneName; + _lastTrackedIsFocused = isFocused; + _lastTrackedIsPlaying = isPlaying; + _lastTrackedIsPaused = isPaused; + _lastTrackedIsUpdating = isUpdating; + _lastTrackedTestsRunning = testsRunning; + _lastTrackedActivityPhase = activityPhase; + + _lastUpdateTimeSinceStartup = now; + ForceUpdate("tick"); + } + + private static void ForceUpdate(string reason) + { + lock (LockObj) + { + _cached = BuildSnapshot(reason); + } + } + + private static JObject BuildSnapshot(string reason) + { + _sequence++; + _observedUnixMs = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); + + bool isCompiling = GetActualIsCompiling(); + if (isCompiling && !_lastIsCompiling) + { + _lastCompileStartedUnixMs = _observedUnixMs; + } + else if (!isCompiling && _lastIsCompiling) + { + _lastCompileFinishedUnixMs = _observedUnixMs; + } + _lastIsCompiling = isCompiling; + + var scene = EditorSceneManager.GetActiveScene(); + string scenePath = string.IsNullOrEmpty(scene.path) ? null : scene.path; + string sceneGuid = !string.IsNullOrEmpty(scenePath) ? AssetDatabase.AssetPathToGUID(scenePath) : null; + + bool testsRunning = TestRunStatus.IsRunning; + var testsMode = TestRunStatus.Mode?.ToString(); + string currentJobId = TestJobManager.CurrentJobId; + bool isFocused = InternalEditorUtility.isApplicationActive; + + var activityPhase = "idle"; + if (testsRunning) + { + activityPhase = "running_tests"; + } + else if (isCompiling) + { + activityPhase = "compiling"; + } + else if (_domainReloadPending) + { + activityPhase = "domain_reload"; + } + else if (EditorApplication.isUpdating) + { + activityPhase = "asset_import"; + } + else if (EditorApplication.isPlayingOrWillChangePlaymode) + { + activityPhase = "playmode_transition"; + } + + var snapshot = new EditorStateSnapshot + { + SchemaVersion = "unity-mcp/editor_state@2", + ObservedAtUnixMs = _observedUnixMs, + Sequence = _sequence, + Unity = new EditorStateUnity + { + InstanceId = null, + UnityVersion = Application.unityVersion, + ProjectId = null, + Platform = Application.platform.ToString(), + IsBatchMode = Application.isBatchMode + }, + Editor = new EditorStateEditor + { + IsFocused = isFocused, + PlayMode = new EditorStatePlayMode + { + IsPlaying = EditorApplication.isPlaying, + IsPaused = EditorApplication.isPaused, + IsChanging = EditorApplication.isPlayingOrWillChangePlaymode + }, + ActiveScene = new EditorStateActiveScene + { + Path = scenePath, + Guid = sceneGuid, + Name = scene.name ?? string.Empty + } + }, + Activity = new EditorStateActivity + { + Phase = activityPhase, + SinceUnixMs = _observedUnixMs, + Reasons = new[] { reason } + }, + Compilation = new EditorStateCompilation + { + IsCompiling = isCompiling, + IsDomainReloadPending = _domainReloadPending, + LastCompileStartedUnixMs = _lastCompileStartedUnixMs, + LastCompileFinishedUnixMs = _lastCompileFinishedUnixMs, + LastDomainReloadBeforeUnixMs = _domainReloadBeforeUnixMs, + LastDomainReloadAfterUnixMs = _domainReloadAfterUnixMs + }, + Assets = new EditorStateAssets + { + IsUpdating = EditorApplication.isUpdating, + ExternalChangesDirty = false, + ExternalChangesLastSeenUnixMs = null, + ExternalChangesDirtySinceUnixMs = null, + ExternalChangesLastClearedUnixMs = null, + Refresh = new EditorStateRefresh + { + IsRefreshInProgress = false, + LastRefreshRequestedUnixMs = null, + LastRefreshFinishedUnixMs = null + } + }, + Tests = new EditorStateTests + { + IsRunning = testsRunning, + Mode = testsMode, + CurrentJobId = string.IsNullOrEmpty(currentJobId) ? null : currentJobId, + StartedUnixMs = TestRunStatus.StartedUnixMs, + StartedBy = "unknown", + LastRun = TestRunStatus.FinishedUnixMs.HasValue + ? new EditorStateLastRun + { + FinishedUnixMs = TestRunStatus.FinishedUnixMs, + Result = "unknown", + Counts = null + } + : null + }, + Transport = new EditorStateTransport + { + UnityBridgeConnected = null, + LastMessageUnixMs = null + } + }; + + return JObject.FromObject(snapshot); + } + + public static JObject GetSnapshot() + { + lock (LockObj) + { + // Defensive: if something went wrong early, rebuild once. + if (_cached == null) + { + _cached = BuildSnapshot("rebuild"); + } + + // Always return a fresh clone to prevent mutation bugs. + // The main GC optimization comes from state-change detection (OnUpdate) + // which prevents unnecessary _cached rebuilds, not from caching the clone. + return (JObject)_cached.DeepClone(); + } + } + + /// + /// Returns the actual compilation state, working around a known Unity quirk where + /// EditorApplication.isCompiling can return false positives in Play mode. + /// See: https://github.com/CoplayDev/unity-mcp/issues/549 + /// + private static bool GetActualIsCompiling() + { + // If EditorApplication.isCompiling is false, Unity is definitely not compiling + if (!EditorApplication.isCompiling) + { + return false; + } + + // In Play mode, EditorApplication.isCompiling can have false positives. + // Double-check with CompilationPipeline.isCompiling via reflection. + if (EditorApplication.isPlaying) + { + try + { + Type pipeline = Type.GetType("UnityEditor.Compilation.CompilationPipeline, UnityEditor"); + var prop = pipeline?.GetProperty("isCompiling", BindingFlags.Public | BindingFlags.Static); + if (prop != null) + { + return (bool)prop.GetValue(null); + } + } + catch + { + // If reflection fails, fall back to EditorApplication.isCompiling + } + } + + // Outside Play mode or if reflection failed, trust EditorApplication.isCompiling + return true; + } + } +} + + diff --git a/Packages/MCPForUnity/Editor/Services/EditorStateCache.cs.meta b/Packages/MCPForUnity/Editor/Services/EditorStateCache.cs.meta new file mode 100644 index 00000000..21c5d014 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/EditorStateCache.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: aa7909967ce3c48c493181c978782a54 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/HttpBridgeReloadHandler.cs b/Packages/MCPForUnity/Editor/Services/HttpBridgeReloadHandler.cs new file mode 100644 index 00000000..b0ffd3ec --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/HttpBridgeReloadHandler.cs @@ -0,0 +1,145 @@ +using System; +using System.Threading.Tasks; +using MCPForUnity.Editor.Constants; +using MCPForUnity.Editor.Helpers; +using MCPForUnity.Editor.Services.Transport; +using MCPForUnity.Editor.Windows; +using UnityEditor; + +namespace MCPForUnity.Editor.Services +{ + /// + /// Ensures HTTP transports resume after domain reloads similar to the legacy stdio bridge. + /// + [InitializeOnLoad] + internal static class HttpBridgeReloadHandler + { + static HttpBridgeReloadHandler() + { + AssemblyReloadEvents.beforeAssemblyReload += OnBeforeAssemblyReload; + AssemblyReloadEvents.afterAssemblyReload += OnAfterAssemblyReload; + } + + private static void OnBeforeAssemblyReload() + { + try + { + var transport = MCPServiceLocator.TransportManager; + bool shouldResume = transport.IsRunning(TransportMode.Http); + + if (shouldResume) + { + EditorPrefs.SetBool(EditorPrefKeys.ResumeHttpAfterReload, true); + } + else + { + EditorPrefs.DeleteKey(EditorPrefKeys.ResumeHttpAfterReload); + } + + if (shouldResume) + { + var stopTask = transport.StopAsync(TransportMode.Http); + stopTask.ContinueWith(t => + { + if (t.IsFaulted && t.Exception != null) + { + McpLog.Warn($"Error stopping MCP bridge before reload: {t.Exception.GetBaseException().Message}"); + } + }, TaskScheduler.Default); + } + } + catch (Exception ex) + { + McpLog.Warn($"Failed to evaluate HTTP bridge reload state: {ex.Message}"); + } + } + + private static void OnAfterAssemblyReload() + { + bool resume = false; + try + { + // Only resume HTTP if it is still the selected transport. + bool useHttp = EditorConfigurationCache.Instance.UseHttpTransport; + resume = useHttp && EditorPrefs.GetBool(EditorPrefKeys.ResumeHttpAfterReload, false); + if (resume) + { + EditorPrefs.DeleteKey(EditorPrefKeys.ResumeHttpAfterReload); + } + } + catch (Exception ex) + { + McpLog.Warn($"Failed to read HTTP bridge reload flag: {ex.Message}"); + resume = false; + } + + if (!resume) + { + return; + } + + // If the editor is not compiling, attempt an immediate restart without relying on editor focus. + bool isCompiling = EditorApplication.isCompiling; + try + { + var pipeline = Type.GetType("UnityEditor.Compilation.CompilationPipeline, UnityEditor"); + var prop = pipeline?.GetProperty("isCompiling", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static); + if (prop != null) isCompiling |= (bool)prop.GetValue(null); + } + catch { } + + if (!isCompiling) + { + try + { + var startTask = MCPServiceLocator.TransportManager.StartAsync(TransportMode.Http); + startTask.ContinueWith(t => + { + if (t.IsFaulted) + { + var baseEx = t.Exception?.GetBaseException(); + McpLog.Warn($"Failed to resume HTTP MCP bridge after domain reload: {baseEx?.Message}"); + return; + } + bool started = t.Result; + if (!started) + { + McpLog.Warn("Failed to resume HTTP MCP bridge after domain reload"); + } + else + { + MCPForUnityEditorWindow.RequestHealthVerification(); + } + }, TaskScheduler.Default); + return; + } + catch (Exception ex) + { + McpLog.Error($"Error resuming HTTP MCP bridge: {ex.Message}"); + return; + } + } + + // Fallback when compiling: schedule on the editor loop + EditorApplication.delayCall += async () => + { + try + { + bool started = await MCPServiceLocator.TransportManager.StartAsync(TransportMode.Http); + if (!started) + { + McpLog.Warn("Failed to resume HTTP MCP bridge after domain reload"); + } + else + { + MCPForUnityEditorWindow.RequestHealthVerification(); + } + } + catch (Exception ex) + { + McpLog.Error($"Error resuming HTTP MCP bridge: {ex.Message}"); + } + }; + } + } +} diff --git a/Packages/MCPForUnity/Editor/Services/HttpBridgeReloadHandler.cs.meta b/Packages/MCPForUnity/Editor/Services/HttpBridgeReloadHandler.cs.meta new file mode 100644 index 00000000..ae5e9edd --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/HttpBridgeReloadHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4c0cf970a7b494a659be151dc0124296 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/IBridgeControlService.cs b/Packages/MCPForUnity/Editor/Services/IBridgeControlService.cs new file mode 100644 index 00000000..7cc593e0 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/IBridgeControlService.cs @@ -0,0 +1,82 @@ +using System.Threading.Tasks; +using MCPForUnity.Editor.Services.Transport; + +namespace MCPForUnity.Editor.Services +{ + /// + /// Service for controlling the MCP for Unity Bridge connection + /// + public interface IBridgeControlService + { + /// + /// Gets whether the bridge is currently running + /// + bool IsRunning { get; } + + /// + /// Gets the current port the bridge is listening on + /// + int CurrentPort { get; } + + /// + /// Gets whether the bridge is in auto-connect mode + /// + bool IsAutoConnectMode { get; } + + /// + /// Gets the currently active transport mode, if any + /// + TransportMode? ActiveMode { get; } + + /// + /// Starts the MCP for Unity Bridge asynchronously + /// + /// True if the bridge started successfully + Task StartAsync(); + + /// + /// Stops the MCP for Unity Bridge asynchronously + /// + Task StopAsync(); + + /// + /// Verifies the bridge connection by sending a ping and waiting for a pong response + /// + /// The port to verify + /// Verification result with detailed status + BridgeVerificationResult Verify(int port); + + /// + /// Verifies the connection asynchronously (works for both HTTP and stdio transports) + /// + /// Verification result with detailed status + Task VerifyAsync(); + + } + + /// + /// Result of a bridge verification attempt + /// + public class BridgeVerificationResult + { + /// + /// Whether the verification was successful + /// + public bool Success { get; set; } + + /// + /// Human-readable message about the verification result + /// + public string Message { get; set; } + + /// + /// Whether the handshake was valid (FRAMING=1 protocol) + /// + public bool HandshakeValid { get; set; } + + /// + /// Whether the ping/pong exchange succeeded + /// + public bool PingSucceeded { get; set; } + } +} diff --git a/Packages/MCPForUnity/Editor/Services/IBridgeControlService.cs.meta b/Packages/MCPForUnity/Editor/Services/IBridgeControlService.cs.meta new file mode 100644 index 00000000..ec50da3d --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/IBridgeControlService.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6b5d9f677f6f54fc59e6fe921b260c61 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/IClientConfigurationService.cs b/Packages/MCPForUnity/Editor/Services/IClientConfigurationService.cs new file mode 100644 index 00000000..6172e8fb --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/IClientConfigurationService.cs @@ -0,0 +1,69 @@ +using System.Collections.Generic; +using MCPForUnity.Editor.Clients; +using MCPForUnity.Editor.Models; + +namespace MCPForUnity.Editor.Services +{ + /// + /// Service for configuring MCP clients + /// + public interface IClientConfigurationService + { + /// + /// Configures a specific MCP client + /// + /// The client to configure + void ConfigureClient(IMcpClientConfigurator configurator); + + /// + /// Configures all detected/installed MCP clients (skips clients where CLI/tools not found) + /// + /// Summary of configuration results + ClientConfigurationSummary ConfigureAllDetectedClients(); + + /// + /// Checks the configuration status of a client + /// + /// The client to check + /// If true, attempts to auto-fix mismatched paths + /// True if status changed, false otherwise + bool CheckClientStatus(IMcpClientConfigurator configurator, bool attemptAutoRewrite = true); + + /// Gets the registry of discovered configurators. + IReadOnlyList GetAllClients(); + } + + /// + /// Summary of configuration results for multiple clients + /// + public class ClientConfigurationSummary + { + /// + /// Number of clients successfully configured + /// + public int SuccessCount { get; set; } + + /// + /// Number of clients that failed to configure + /// + public int FailureCount { get; set; } + + /// + /// Number of clients skipped (already configured or tool not found) + /// + public int SkippedCount { get; set; } + + /// + /// Detailed messages for each client + /// + public System.Collections.Generic.List Messages { get; set; } = new(); + + /// + /// Gets a human-readable summary message + /// + public string GetSummaryMessage() + { + return $"✓ {SuccessCount} configured, ⚠ {FailureCount} failed, ➜ {SkippedCount} skipped"; + } + } +} diff --git a/Packages/MCPForUnity/Editor/Services/IClientConfigurationService.cs.meta b/Packages/MCPForUnity/Editor/Services/IClientConfigurationService.cs.meta new file mode 100644 index 00000000..5110b69f --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/IClientConfigurationService.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: aae139cfae7ac4044ac52e2658005ea1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/IPackageDeploymentService.cs b/Packages/MCPForUnity/Editor/Services/IPackageDeploymentService.cs new file mode 100644 index 00000000..743834c0 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/IPackageDeploymentService.cs @@ -0,0 +1,29 @@ +using System; + +namespace MCPForUnity.Editor.Services +{ + public interface IPackageDeploymentService + { + string GetStoredSourcePath(); + void SetStoredSourcePath(string path); + void ClearStoredSourcePath(); + + string GetTargetPath(); + string GetTargetDisplayPath(); + + string GetLastBackupPath(); + bool HasBackup(); + + PackageDeploymentResult DeployFromStoredSource(); + PackageDeploymentResult RestoreLastBackup(); + } + + public class PackageDeploymentResult + { + public bool Success { get; set; } + public string Message { get; set; } + public string SourcePath { get; set; } + public string TargetPath { get; set; } + public string BackupPath { get; set; } + } +} diff --git a/Packages/MCPForUnity/Editor/Services/IPackageDeploymentService.cs.meta b/Packages/MCPForUnity/Editor/Services/IPackageDeploymentService.cs.meta new file mode 100644 index 00000000..d1bf12d2 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/IPackageDeploymentService.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9c7a6f1ce6cd4a8c8a3b5d58d4b760a2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/IPackageUpdateService.cs b/Packages/MCPForUnity/Editor/Services/IPackageUpdateService.cs new file mode 100644 index 00000000..9d4d2e48 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/IPackageUpdateService.cs @@ -0,0 +1,60 @@ +namespace MCPForUnity.Editor.Services +{ + /// + /// Service for checking package updates and version information + /// + public interface IPackageUpdateService + { + /// + /// Checks if a newer version of the package is available + /// + /// The current package version + /// Update check result containing availability and latest version info + UpdateCheckResult CheckForUpdate(string currentVersion); + + /// + /// Compares two version strings to determine if the first is newer than the second + /// + /// First version string + /// Second version string + /// True if version1 is newer than version2 + bool IsNewerVersion(string version1, string version2); + + /// + /// Determines if the package was installed via Git or Asset Store + /// + /// True if installed via Git, false if Asset Store or unknown + bool IsGitInstallation(); + + /// + /// Clears the cached update check data, forcing a fresh check on next request + /// + void ClearCache(); + } + + /// + /// Result of an update check operation + /// + public class UpdateCheckResult + { + /// + /// Whether an update is available + /// + public bool UpdateAvailable { get; set; } + + /// + /// The latest version available (null if check failed or no update) + /// + public string LatestVersion { get; set; } + + /// + /// Whether the check was successful (false if network error, etc.) + /// + public bool CheckSucceeded { get; set; } + + /// + /// Optional message about the check result + /// + public string Message { get; set; } + } +} diff --git a/Packages/MCPForUnity/Editor/Services/IPackageUpdateService.cs.meta b/Packages/MCPForUnity/Editor/Services/IPackageUpdateService.cs.meta new file mode 100644 index 00000000..d9e68455 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/IPackageUpdateService.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e94ae28f193184e4fb5068f62f4f00c6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/IPathResolverService.cs b/Packages/MCPForUnity/Editor/Services/IPathResolverService.cs new file mode 100644 index 00000000..d57581d8 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/IPathResolverService.cs @@ -0,0 +1,77 @@ +namespace MCPForUnity.Editor.Services +{ + /// + /// Service for resolving paths to required tools and supporting user overrides + /// + public interface IPathResolverService + { + /// + /// Gets the uvx package manager path (respects override if set) + /// + /// Path to the uvx executable, or null if not found + string GetUvxPath(); + + /// + /// Gets the Claude CLI path (respects override if set) + /// + /// Path to the claude executable, or null if not found + string GetClaudeCliPath(); + + /// + /// Checks if Python is detected on the system + /// + /// True if Python is found + bool IsPythonDetected(); + + /// + /// Checks if Claude CLI is detected on the system + /// + /// True if Claude CLI is found + bool IsClaudeCliDetected(); + + /// + /// Sets an override for the uvx path + /// + /// Path to override with + void SetUvxPathOverride(string path); + + /// + /// Sets an override for the Claude CLI path + /// + /// Path to override with + void SetClaudeCliPathOverride(string path); + + /// + /// Clears the uvx path override + /// + void ClearUvxPathOverride(); + + /// + /// Clears the Claude CLI path override + /// + void ClearClaudeCliPathOverride(); + + /// + /// Gets whether a uvx path override is active + /// + bool HasUvxPathOverride { get; } + + /// + /// Gets whether a Claude CLI path override is active + /// + bool HasClaudeCliPathOverride { get; } + + /// + /// Gets whether the uvx path used a fallback from override to system path + /// + bool HasUvxPathFallback { get; } + + /// + /// Validates the provided uv executable by running "--version" and parsing the output. + /// + /// Absolute or relative path to the uv/uvx executable. + /// Parsed version string if successful. + /// True when the executable runs and returns a uv version string. + bool TryValidateUvxExecutable(string uvPath, out string version); + } +} diff --git a/Packages/MCPForUnity/Editor/Services/IPathResolverService.cs.meta b/Packages/MCPForUnity/Editor/Services/IPathResolverService.cs.meta new file mode 100644 index 00000000..75634531 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/IPathResolverService.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1e8d388be507345aeb0eaf27fbd3c022 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/IPlatformService.cs b/Packages/MCPForUnity/Editor/Services/IPlatformService.cs new file mode 100644 index 00000000..ec686b24 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/IPlatformService.cs @@ -0,0 +1,20 @@ +namespace MCPForUnity.Editor.Services +{ + /// + /// Service for platform detection and platform-specific environment access + /// + public interface IPlatformService + { + /// + /// Checks if the current platform is Windows + /// + /// True if running on Windows + bool IsWindows(); + + /// + /// Gets the SystemRoot environment variable (Windows-specific) + /// + /// SystemRoot path, or null if not available + string GetSystemRoot(); + } +} diff --git a/Packages/MCPForUnity/Editor/Services/IPlatformService.cs.meta b/Packages/MCPForUnity/Editor/Services/IPlatformService.cs.meta new file mode 100644 index 00000000..e501f58a --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/IPlatformService.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1d90ff7f9a1e84c9bbbbedee2f7eda2a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/IResourceDiscoveryService.cs b/Packages/MCPForUnity/Editor/Services/IResourceDiscoveryService.cs new file mode 100644 index 00000000..6595fc8a --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/IResourceDiscoveryService.cs @@ -0,0 +1,53 @@ +using System.Collections.Generic; + +namespace MCPForUnity.Editor.Services +{ + /// + /// Metadata for a discovered resource + /// + public class ResourceMetadata + { + public string Name { get; set; } + public string Description { get; set; } + public string ClassName { get; set; } + public string Namespace { get; set; } + public string AssemblyName { get; set; } + public bool IsBuiltIn { get; set; } + } + + /// + /// Service for discovering MCP resources via reflection + /// + public interface IResourceDiscoveryService + { + /// + /// Discovers all resources marked with [McpForUnityResource] + /// + List DiscoverAllResources(); + + /// + /// Gets metadata for a specific resource + /// + ResourceMetadata GetResourceMetadata(string resourceName); + + /// + /// Returns only the resources currently enabled + /// + List GetEnabledResources(); + + /// + /// Checks whether a resource is currently enabled + /// + bool IsResourceEnabled(string resourceName); + + /// + /// Updates the enabled state for a resource + /// + void SetResourceEnabled(string resourceName, bool enabled); + + /// + /// Invalidates the resource discovery cache + /// + void InvalidateCache(); + } +} diff --git a/Packages/MCPForUnity/Editor/Services/IResourceDiscoveryService.cs.meta b/Packages/MCPForUnity/Editor/Services/IResourceDiscoveryService.cs.meta new file mode 100644 index 00000000..171d2b27 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/IResourceDiscoveryService.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7afb4739669224c74b4b4d706e6bbb49 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/IServerManagementService.cs b/Packages/MCPForUnity/Editor/Services/IServerManagementService.cs new file mode 100644 index 00000000..299fad51 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/IServerManagementService.cs @@ -0,0 +1,64 @@ +namespace MCPForUnity.Editor.Services +{ + /// + /// Interface for server management operations + /// + public interface IServerManagementService + { + /// + /// Clear the local uvx cache for the MCP server package + /// + /// True if successful, false otherwise + bool ClearUvxCache(); + + /// + /// Start the local HTTP server in a new terminal window. + /// Stops any existing server on the port and clears the uvx cache first. + /// + /// True if server was started successfully, false otherwise + bool StartLocalHttpServer(); + + /// + /// Stop the local HTTP server by finding the process listening on the configured port + /// + bool StopLocalHttpServer(); + + /// + /// Stop the Unity-managed local HTTP server if a handshake/pidfile exists, + /// even if the current transport selection has changed. + /// + bool StopManagedLocalHttpServer(); + + /// + /// Best-effort detection: returns true if a local MCP HTTP server appears to be running + /// on the configured local URL/port (used to drive UI state even if the session is not active). + /// + bool IsLocalHttpServerRunning(); + + /// + /// Fast reachability check: returns true if a local TCP listener is accepting connections + /// for the configured local URL/port (used for UI state without process inspection). + /// + bool IsLocalHttpServerReachable(); + + /// + /// Attempts to get the command that will be executed when starting the local HTTP server + /// + /// The command that will be executed when available + /// Reason why a command could not be produced + /// True if a command is available, false otherwise + bool TryGetLocalHttpServerCommand(out string command, out string error); + + /// + /// Check if the configured HTTP URL is a local address + /// + /// True if URL is local (localhost, 127.0.0.1, etc.) + bool IsLocalUrl(); + + /// + /// Check if the local HTTP server can be started + /// + /// True if HTTP transport is enabled and URL is local + bool CanStartLocalServer(); + } +} diff --git a/Packages/MCPForUnity/Editor/Services/IServerManagementService.cs.meta b/Packages/MCPForUnity/Editor/Services/IServerManagementService.cs.meta new file mode 100644 index 00000000..9f12dc3c --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/IServerManagementService.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d41bfc9780b774affa6afbffd081eb79 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/ITestRunnerService.cs b/Packages/MCPForUnity/Editor/Services/ITestRunnerService.cs new file mode 100644 index 00000000..c24d9e41 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/ITestRunnerService.cs @@ -0,0 +1,52 @@ +using System.Collections.Generic; +using System.Threading.Tasks; +using UnityEditor.TestTools.TestRunner.Api; + +namespace MCPForUnity.Editor.Services +{ + /// + /// Options for filtering which tests to run. + /// All properties are optional - null or empty arrays are ignored. + /// + public class TestFilterOptions + { + /// + /// Full names of specific tests to run (e.g., "MyNamespace.MyTests.TestMethod"). + /// + public string[] TestNames { get; set; } + + /// + /// Same as TestNames, except it allows for Regex. + /// + public string[] GroupNames { get; set; } + + /// + /// NUnit category names to filter by (tests marked with [Category] attribute). + /// + public string[] CategoryNames { get; set; } + + /// + /// Assembly names to filter tests by. + /// + public string[] AssemblyNames { get; set; } + } + + /// + /// Provides access to Unity Test Runner data and execution. + /// + public interface ITestRunnerService + { + /// + /// Retrieve the list of tests for the requested mode(s). + /// When is null, tests for both EditMode and PlayMode are returned. + /// + Task>> GetTestsAsync(TestMode? mode); + + /// + /// Execute tests for the supplied mode with optional filtering. + /// + /// The test mode (EditMode or PlayMode). + /// Optional filter options to run specific tests. Pass null to run all tests. + Task RunTestsAsync(TestMode mode, TestFilterOptions filterOptions = null); + } +} diff --git a/Packages/MCPForUnity/Editor/Services/ITestRunnerService.cs.meta b/Packages/MCPForUnity/Editor/Services/ITestRunnerService.cs.meta new file mode 100644 index 00000000..ea325e73 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/ITestRunnerService.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d23bf32361ff444beaf3510818c94bae +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/IToolDiscoveryService.cs b/Packages/MCPForUnity/Editor/Services/IToolDiscoveryService.cs new file mode 100644 index 00000000..ee2c616b --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/IToolDiscoveryService.cs @@ -0,0 +1,70 @@ +using System.Collections.Generic; + +namespace MCPForUnity.Editor.Services +{ + /// + /// Metadata for a discovered tool + /// + public class ToolMetadata + { + public string Name { get; set; } + public string Description { get; set; } + public bool StructuredOutput { get; set; } + public List Parameters { get; set; } + public string ClassName { get; set; } + public string Namespace { get; set; } + public string AssemblyName { get; set; } + public bool AutoRegister { get; set; } = true; + public bool RequiresPolling { get; set; } = false; + public string PollAction { get; set; } = "status"; + public bool IsBuiltIn { get; set; } + } + + /// + /// Metadata for a tool parameter + /// + public class ParameterMetadata + { + public string Name { get; set; } + public string Description { get; set; } + public string Type { get; set; } // "string", "int", "bool", "float", etc. + public bool Required { get; set; } + public string DefaultValue { get; set; } + } + + /// + /// Service for discovering MCP tools via reflection + /// + public interface IToolDiscoveryService + { + /// + /// Discovers all tools marked with [McpForUnityTool] + /// + List DiscoverAllTools(); + + /// + /// Gets metadata for a specific tool + /// + ToolMetadata GetToolMetadata(string toolName); + + /// + /// Returns only the tools currently enabled for registration + /// + List GetEnabledTools(); + + /// + /// Checks whether a tool is currently enabled for registration + /// + bool IsToolEnabled(string toolName); + + /// + /// Updates the enabled state for a tool + /// + void SetToolEnabled(string toolName, bool enabled); + + /// + /// Invalidates the tool discovery cache + /// + void InvalidateCache(); + } +} diff --git a/Packages/MCPForUnity/Editor/Services/IToolDiscoveryService.cs.meta b/Packages/MCPForUnity/Editor/Services/IToolDiscoveryService.cs.meta new file mode 100644 index 00000000..a25b7492 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/IToolDiscoveryService.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 497592a93fd994b2cb9803e7c8636ff7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/MCPServiceLocator.cs b/Packages/MCPForUnity/Editor/Services/MCPServiceLocator.cs new file mode 100644 index 00000000..c8ceb4d5 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/MCPServiceLocator.cs @@ -0,0 +1,98 @@ +using System; +using MCPForUnity.Editor.Helpers; +using MCPForUnity.Editor.Services.Transport; +using MCPForUnity.Editor.Services.Transport.Transports; + +namespace MCPForUnity.Editor.Services +{ + /// + /// Service locator for accessing MCP services without dependency injection + /// + public static class MCPServiceLocator + { + private static IBridgeControlService _bridgeService; + private static IClientConfigurationService _clientService; + private static IPathResolverService _pathService; + private static ITestRunnerService _testRunnerService; + private static IPackageUpdateService _packageUpdateService; + private static IPlatformService _platformService; + private static IToolDiscoveryService _toolDiscoveryService; + private static IResourceDiscoveryService _resourceDiscoveryService; + private static IServerManagementService _serverManagementService; + private static TransportManager _transportManager; + private static IPackageDeploymentService _packageDeploymentService; + + public static IBridgeControlService Bridge => _bridgeService ??= new BridgeControlService(); + public static IClientConfigurationService Client => _clientService ??= new ClientConfigurationService(); + public static IPathResolverService Paths => _pathService ??= new PathResolverService(); + public static ITestRunnerService Tests => _testRunnerService ??= new TestRunnerService(); + public static IPackageUpdateService Updates => _packageUpdateService ??= new PackageUpdateService(); + public static IPlatformService Platform => _platformService ??= new PlatformService(); + public static IToolDiscoveryService ToolDiscovery => _toolDiscoveryService ??= new ToolDiscoveryService(); + public static IResourceDiscoveryService ResourceDiscovery => _resourceDiscoveryService ??= new ResourceDiscoveryService(); + public static IServerManagementService Server => _serverManagementService ??= new ServerManagementService(); + public static TransportManager TransportManager => _transportManager ??= new TransportManager(); + public static IPackageDeploymentService Deployment => _packageDeploymentService ??= new PackageDeploymentService(); + + /// + /// Registers a custom implementation for a service (useful for testing) + /// + /// The service interface type + /// The implementation to register + public static void Register(T implementation) where T : class + { + if (implementation is IBridgeControlService b) + _bridgeService = b; + else if (implementation is IClientConfigurationService c) + _clientService = c; + else if (implementation is IPathResolverService p) + _pathService = p; + else if (implementation is ITestRunnerService t) + _testRunnerService = t; + else if (implementation is IPackageUpdateService pu) + _packageUpdateService = pu; + else if (implementation is IPlatformService ps) + _platformService = ps; + else if (implementation is IToolDiscoveryService td) + _toolDiscoveryService = td; + else if (implementation is IResourceDiscoveryService rd) + _resourceDiscoveryService = rd; + else if (implementation is IServerManagementService sm) + _serverManagementService = sm; + else if (implementation is IPackageDeploymentService pd) + _packageDeploymentService = pd; + else if (implementation is TransportManager tm) + _transportManager = tm; + } + + /// + /// Resets all services to their default implementations (useful for testing) + /// + public static void Reset() + { + (_bridgeService as IDisposable)?.Dispose(); + (_clientService as IDisposable)?.Dispose(); + (_pathService as IDisposable)?.Dispose(); + (_testRunnerService as IDisposable)?.Dispose(); + (_packageUpdateService as IDisposable)?.Dispose(); + (_platformService as IDisposable)?.Dispose(); + (_toolDiscoveryService as IDisposable)?.Dispose(); + (_resourceDiscoveryService as IDisposable)?.Dispose(); + (_serverManagementService as IDisposable)?.Dispose(); + (_transportManager as IDisposable)?.Dispose(); + (_packageDeploymentService as IDisposable)?.Dispose(); + + _bridgeService = null; + _clientService = null; + _pathService = null; + _testRunnerService = null; + _packageUpdateService = null; + _platformService = null; + _toolDiscoveryService = null; + _resourceDiscoveryService = null; + _serverManagementService = null; + _transportManager = null; + _packageDeploymentService = null; + } + } +} diff --git a/Packages/MCPForUnity/Editor/Services/MCPServiceLocator.cs.meta b/Packages/MCPForUnity/Editor/Services/MCPServiceLocator.cs.meta new file mode 100644 index 00000000..cd9b4021 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/MCPServiceLocator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 276d6a9f9a1714ead91573945de78992 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/McpEditorShutdownCleanup.cs b/Packages/MCPForUnity/Editor/Services/McpEditorShutdownCleanup.cs new file mode 100644 index 00000000..9b4bd614 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/McpEditorShutdownCleanup.cs @@ -0,0 +1,77 @@ +using System; +using System.Threading.Tasks; +using MCPForUnity.Editor.Constants; +using MCPForUnity.Editor.Helpers; +using MCPForUnity.Editor.Services.Transport; +using UnityEditor; + +namespace MCPForUnity.Editor.Services +{ + /// + /// Best-effort cleanup when the Unity Editor is quitting. + /// - Stops active transports so clients don't see a "hung" session longer than necessary. + /// - If HTTP Local is selected, attempts to stop the local HTTP server (guarded by PID heuristics). + /// + [InitializeOnLoad] + internal static class McpEditorShutdownCleanup + { + static McpEditorShutdownCleanup() + { + // Guard against duplicate subscriptions across domain reloads. + try { EditorApplication.quitting -= OnEditorQuitting; } catch { } + EditorApplication.quitting += OnEditorQuitting; + } + + private static void OnEditorQuitting() + { + // 1) Stop transports (best-effort, bounded wait). + try + { + var transport = MCPServiceLocator.TransportManager; + + Task stopHttp = transport.StopAsync(TransportMode.Http); + Task stopStdio = transport.StopAsync(TransportMode.Stdio); + + try { Task.WaitAll(new[] { stopHttp, stopStdio }, 750); } catch { } + } + catch (Exception ex) + { + // Avoid hard failures on quit. + McpLog.Warn($"Shutdown cleanup: failed to stop transports: {ex.Message}"); + } + + // 2) Stop local HTTP server if it was Unity-managed (best-effort). + try + { + bool useHttp = EditorConfigurationCache.Instance.UseHttpTransport; + string scope = string.Empty; + try { scope = EditorPrefs.GetString(EditorPrefKeys.HttpTransportScope, string.Empty); } catch { } + + bool stopped = false; + bool httpLocalSelected = + useHttp && + (string.Equals(scope, "local", StringComparison.OrdinalIgnoreCase) + || (string.IsNullOrEmpty(scope) && MCPServiceLocator.Server.IsLocalUrl())); + + if (httpLocalSelected) + { + // StopLocalHttpServer is already guarded to only terminate processes that look like mcp-for-unity. + // If it refuses to stop (e.g. URL was edited away from local), fall back to the Unity-managed stop. + stopped = MCPServiceLocator.Server.StopLocalHttpServer(); + } + + // Always attempt to stop a Unity-managed server if one exists. + // This covers cases where the user switched transports (e.g. to stdio) or StopLocalHttpServer refused. + if (!stopped) + { + MCPServiceLocator.Server.StopManagedLocalHttpServer(); + } + } + catch (Exception ex) + { + McpLog.Warn($"Shutdown cleanup: failed to stop local HTTP server: {ex.Message}"); + } + } + } +} + diff --git a/Packages/MCPForUnity/Editor/Services/McpEditorShutdownCleanup.cs.meta b/Packages/MCPForUnity/Editor/Services/McpEditorShutdownCleanup.cs.meta new file mode 100644 index 00000000..a94395c6 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/McpEditorShutdownCleanup.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4150c04e0907c45d7b332260911a0567 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/PackageDeploymentService.cs b/Packages/MCPForUnity/Editor/Services/PackageDeploymentService.cs new file mode 100644 index 00000000..7c0e27c6 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/PackageDeploymentService.cs @@ -0,0 +1,304 @@ +using System; +using System.IO; +using MCPForUnity.Editor.Constants; +using MCPForUnity.Editor.Helpers; +using UnityEditor; +using UnityEngine; +using PackageInfo = UnityEditor.PackageManager.PackageInfo; + +namespace MCPForUnity.Editor.Services +{ + /// + /// Handles copying a local MCPForUnity folder into the current project's package location with backup/restore support. + /// + public class PackageDeploymentService : IPackageDeploymentService + { + private const string BackupRootFolderName = "MCPForUnityDeployBackups"; + + public string GetStoredSourcePath() + { + return EditorPrefs.GetString(EditorPrefKeys.PackageDeploySourcePath, string.Empty); + } + + public void SetStoredSourcePath(string path) + { + ValidateSource(path); + EditorPrefs.SetString(EditorPrefKeys.PackageDeploySourcePath, Path.GetFullPath(path)); + } + + public void ClearStoredSourcePath() + { + EditorPrefs.DeleteKey(EditorPrefKeys.PackageDeploySourcePath); + } + + public string GetTargetPath() + { + // Prefer Package Manager resolved path for the installed package + var packageInfo = PackageInfo.FindForAssembly(typeof(PackageDeploymentService).Assembly); + if (packageInfo != null) + { + if (!string.IsNullOrEmpty(packageInfo.resolvedPath) && Directory.Exists(packageInfo.resolvedPath)) + { + return packageInfo.resolvedPath; + } + + if (!string.IsNullOrEmpty(packageInfo.assetPath)) + { + string absoluteFromAsset = MakeAbsolute(packageInfo.assetPath); + if (Directory.Exists(absoluteFromAsset)) + { + return absoluteFromAsset; + } + } + } + + // Fallback to computed package root + string packageRoot = AssetPathUtility.GetMcpPackageRootPath(); + if (!string.IsNullOrEmpty(packageRoot)) + { + string absolutePath = MakeAbsolute(packageRoot); + if (Directory.Exists(absolutePath)) + { + return absolutePath; + } + } + + return null; + } + + public string GetTargetDisplayPath() + { + string target = GetTargetPath(); + if (string.IsNullOrEmpty(target)) + return "Not found (check Packages/manifest.json)"; + // Use forward slashes to avoid backslash escape sequence issues in UI text + return target.Replace('\\', '/'); + } + + public string GetLastBackupPath() + { + return EditorPrefs.GetString(EditorPrefKeys.PackageDeployLastBackupPath, string.Empty); + } + + public bool HasBackup() + { + string path = GetLastBackupPath(); + return !string.IsNullOrEmpty(path) && Directory.Exists(path); + } + + public PackageDeploymentResult DeployFromStoredSource() + { + string sourcePath = GetStoredSourcePath(); + if (string.IsNullOrEmpty(sourcePath)) + { + return Fail("Select a MCPForUnity folder first."); + } + + string validationError = ValidateSource(sourcePath, throwOnError: false); + if (!string.IsNullOrEmpty(validationError)) + { + return Fail(validationError); + } + + string targetPath = GetTargetPath(); + if (string.IsNullOrEmpty(targetPath)) + { + return Fail("Could not locate the installed MCP package. Check Packages/manifest.json."); + } + + if (PathsEqual(sourcePath, targetPath)) + { + return Fail("Source and target are the same. Choose a different MCPForUnity folder."); + } + + try + { + EditorUtility.DisplayProgressBar("Deploy MCP for Unity", "Creating backup...", 0.25f); + string backupPath = CreateBackup(targetPath); + + EditorUtility.DisplayProgressBar("Deploy MCP for Unity", "Replacing package contents...", 0.7f); + CopyCoreFolders(sourcePath, targetPath); + + EditorPrefs.SetString(EditorPrefKeys.PackageDeployLastBackupPath, backupPath); + EditorPrefs.SetString(EditorPrefKeys.PackageDeployLastTargetPath, targetPath); + EditorPrefs.SetString(EditorPrefKeys.PackageDeployLastSourcePath, sourcePath); + + AssetDatabase.Refresh(ImportAssetOptions.ForceUpdate); + return Success("Deployment completed.", sourcePath, targetPath, backupPath); + } + catch (Exception ex) + { + McpLog.Error($"Deployment failed: {ex.Message}"); + return Fail($"Deployment failed: {ex.Message}"); + } + finally + { + EditorUtility.ClearProgressBar(); + } + } + + public PackageDeploymentResult RestoreLastBackup() + { + string backupPath = GetLastBackupPath(); + string targetPath = EditorPrefs.GetString(EditorPrefKeys.PackageDeployLastTargetPath, string.Empty); + + if (string.IsNullOrEmpty(backupPath) || !Directory.Exists(backupPath)) + { + return Fail("No backup available to restore."); + } + + if (string.IsNullOrEmpty(targetPath) || !Directory.Exists(targetPath)) + { + targetPath = GetTargetPath(); + } + + if (string.IsNullOrEmpty(targetPath) || !Directory.Exists(targetPath)) + { + return Fail("Could not locate target package path."); + } + + try + { + EditorUtility.DisplayProgressBar("Restore MCP for Unity", "Restoring backup...", 0.5f); + ReplaceDirectory(backupPath, targetPath); + + AssetDatabase.Refresh(ImportAssetOptions.ForceUpdate); + return Success("Restore completed.", null, targetPath, backupPath); + } + catch (Exception ex) + { + McpLog.Error($"Restore failed: {ex.Message}"); + return Fail($"Restore failed: {ex.Message}"); + } + finally + { + EditorUtility.ClearProgressBar(); + } + } + + private void CopyCoreFolders(string sourceRoot, string targetRoot) + { + string sourceEditor = Path.Combine(sourceRoot, "Editor"); + string sourceRuntime = Path.Combine(sourceRoot, "Runtime"); + + ReplaceDirectory(sourceEditor, Path.Combine(targetRoot, "Editor")); + ReplaceDirectory(sourceRuntime, Path.Combine(targetRoot, "Runtime")); + } + + private static void ReplaceDirectory(string source, string destination) + { + if (Directory.Exists(destination)) + { + FileUtil.DeleteFileOrDirectory(destination); + } + + FileUtil.CopyFileOrDirectory(source, destination); + } + + private string CreateBackup(string targetPath) + { + string backupRoot = Path.Combine(GetProjectRoot(), "Library", BackupRootFolderName); + Directory.CreateDirectory(backupRoot); + + string stamp = DateTime.Now.ToString("yyyyMMdd_HHmmss"); + string backupPath = Path.Combine(backupRoot, $"backup_{stamp}"); + + if (Directory.Exists(backupPath)) + { + FileUtil.DeleteFileOrDirectory(backupPath); + } + + FileUtil.CopyFileOrDirectory(targetPath, backupPath); + return backupPath; + } + + private static string ValidateSource(string sourcePath, bool throwOnError = true) + { + if (string.IsNullOrEmpty(sourcePath)) + { + if (throwOnError) + { + throw new ArgumentException("Source path cannot be empty."); + } + + return "Source path is empty."; + } + + if (!Directory.Exists(sourcePath)) + { + if (throwOnError) + { + throw new ArgumentException("Selected folder does not exist."); + } + + return "Selected folder does not exist."; + } + + bool hasEditor = Directory.Exists(Path.Combine(sourcePath, "Editor")); + bool hasRuntime = Directory.Exists(Path.Combine(sourcePath, "Runtime")); + + if (!hasEditor || !hasRuntime) + { + string message = "Folder must contain Editor and Runtime subfolders."; + if (throwOnError) + { + throw new ArgumentException(message); + } + + return message; + } + + return null; + } + + private static string MakeAbsolute(string assetPath) + { + assetPath = assetPath.Replace('\\', '/'); + + if (assetPath.StartsWith("Assets/", StringComparison.OrdinalIgnoreCase)) + { + return Path.GetFullPath(Path.Combine(Application.dataPath, "..", assetPath)); + } + + if (assetPath.StartsWith("Packages/", StringComparison.OrdinalIgnoreCase)) + { + return Path.GetFullPath(Path.Combine(Application.dataPath, "..", assetPath)); + } + + return Path.GetFullPath(assetPath); + } + + private static string GetProjectRoot() + { + return Path.GetFullPath(Path.Combine(Application.dataPath, "..")); + } + + private static bool PathsEqual(string a, string b) + { + string normA = Path.GetFullPath(a).TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar); + string normB = Path.GetFullPath(b).TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar); + return string.Equals(normA, normB, StringComparison.OrdinalIgnoreCase); + } + + private static PackageDeploymentResult Success(string message, string source, string target, string backup) + { + return new PackageDeploymentResult + { + Success = true, + Message = message, + SourcePath = source, + TargetPath = target, + BackupPath = backup + }; + } + + private static PackageDeploymentResult Fail(string message) + { + return new PackageDeploymentResult + { + Success = false, + Message = message + }; + } + } +} diff --git a/Packages/MCPForUnity/Editor/Services/PackageDeploymentService.cs.meta b/Packages/MCPForUnity/Editor/Services/PackageDeploymentService.cs.meta new file mode 100644 index 00000000..e43e0ccf --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/PackageDeploymentService.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0b1f45e4e5d24413a6f1c8c0d8c5f2f1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/PackageUpdateService.cs b/Packages/MCPForUnity/Editor/Services/PackageUpdateService.cs new file mode 100644 index 00000000..81c0161f --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/PackageUpdateService.cs @@ -0,0 +1,185 @@ +using System; +using System.Net; +using MCPForUnity.Editor.Constants; +using MCPForUnity.Editor.Helpers; +using Newtonsoft.Json.Linq; +using UnityEditor; + +namespace MCPForUnity.Editor.Services +{ + /// + /// Service for checking package updates from GitHub or Asset Store metadata + /// + public class PackageUpdateService : IPackageUpdateService + { + private const string LastCheckDateKey = EditorPrefKeys.LastUpdateCheck; + private const string CachedVersionKey = EditorPrefKeys.LatestKnownVersion; + private const string LastAssetStoreCheckDateKey = EditorPrefKeys.LastAssetStoreUpdateCheck; + private const string CachedAssetStoreVersionKey = EditorPrefKeys.LatestKnownAssetStoreVersion; + private const string PackageJsonUrl = "https://raw.githubusercontent.com/CoplayDev/unity-mcp/main/MCPForUnity/package.json"; + private const string AssetStoreVersionUrl = "https://gqoqjkkptwfbkwyssmnj.supabase.co/storage/v1/object/public/coplay-images/assetstoreversion.json"; + + /// + public UpdateCheckResult CheckForUpdate(string currentVersion) + { + bool isGitInstallation = IsGitInstallation(); + string lastCheckDate = EditorPrefs.GetString(isGitInstallation ? LastCheckDateKey : LastAssetStoreCheckDateKey, ""); + string cachedLatestVersion = EditorPrefs.GetString(isGitInstallation ? CachedVersionKey : CachedAssetStoreVersionKey, ""); + + if (lastCheckDate == DateTime.Now.ToString("yyyy-MM-dd") && !string.IsNullOrEmpty(cachedLatestVersion)) + { + return new UpdateCheckResult + { + CheckSucceeded = true, + LatestVersion = cachedLatestVersion, + UpdateAvailable = IsNewerVersion(cachedLatestVersion, currentVersion), + Message = "Using cached version check" + }; + } + + string latestVersion = isGitInstallation + ? FetchLatestVersionFromGitHub() + : FetchLatestVersionFromAssetStoreJson(); + + if (!string.IsNullOrEmpty(latestVersion)) + { + // Cache the result + EditorPrefs.SetString(isGitInstallation ? LastCheckDateKey : LastAssetStoreCheckDateKey, DateTime.Now.ToString("yyyy-MM-dd")); + EditorPrefs.SetString(isGitInstallation ? CachedVersionKey : CachedAssetStoreVersionKey, latestVersion); + + return new UpdateCheckResult + { + CheckSucceeded = true, + LatestVersion = latestVersion, + UpdateAvailable = IsNewerVersion(latestVersion, currentVersion), + Message = "Successfully checked for updates" + }; + } + + return new UpdateCheckResult + { + CheckSucceeded = false, + UpdateAvailable = false, + Message = isGitInstallation + ? "Failed to check for updates (network issue or offline)" + : "Failed to check for Asset Store updates (network issue or offline)" + }; + } + + /// + public bool IsNewerVersion(string version1, string version2) + { + try + { + // Remove any "v" prefix + version1 = version1.TrimStart('v', 'V'); + version2 = version2.TrimStart('v', 'V'); + + var version1Parts = version1.Split('.'); + var version2Parts = version2.Split('.'); + + for (int i = 0; i < Math.Min(version1Parts.Length, version2Parts.Length); i++) + { + if (int.TryParse(version1Parts[i], out int v1Num) && + int.TryParse(version2Parts[i], out int v2Num)) + { + if (v1Num > v2Num) return true; + if (v1Num < v2Num) return false; + } + } + return false; + } + catch + { + return false; + } + } + + /// + public virtual bool IsGitInstallation() + { + // Git packages are installed via Package Manager and have a package.json in Packages/ + // Asset Store packages are in Assets/ + string packageRoot = AssetPathUtility.GetMcpPackageRootPath(); + + if (string.IsNullOrEmpty(packageRoot)) + { + return false; + } + + // If the package is in Packages/ it's a PM install (likely Git) + // If it's in Assets/ it's an Asset Store install + return packageRoot.StartsWith("Packages/", StringComparison.OrdinalIgnoreCase); + } + + /// + public void ClearCache() + { + EditorPrefs.DeleteKey(LastCheckDateKey); + EditorPrefs.DeleteKey(CachedVersionKey); + EditorPrefs.DeleteKey(LastAssetStoreCheckDateKey); + EditorPrefs.DeleteKey(CachedAssetStoreVersionKey); + } + + /// + /// Fetches the latest version from GitHub's main branch package.json + /// + protected virtual string FetchLatestVersionFromGitHub() + { + try + { + // GitHub API endpoint (Option 1 - has rate limits): + // https://api.github.com/repos/CoplayDev/unity-mcp/releases/latest + // + // We use Option 2 (package.json directly) because: + // - No API rate limits (GitHub serves raw files freely) + // - Simpler - just parse JSON for version field + // - More reliable - doesn't require releases to be published + // - Direct source of truth from the main branch + + using (var client = new WebClient()) + { + client.Headers.Add("User-Agent", "Unity-MCPForUnity-UpdateChecker"); + string jsonContent = client.DownloadString(PackageJsonUrl); + + var packageJson = JObject.Parse(jsonContent); + string version = packageJson["version"]?.ToString(); + + return string.IsNullOrEmpty(version) ? null : version; + } + } + catch (Exception ex) + { + // Silent fail - don't interrupt the user if network is unavailable + McpLog.Info($"Update check failed (this is normal if offline): {ex.Message}"); + return null; + } + } + + /// + /// Fetches the latest Asset Store version from a hosted JSON file. + /// + protected virtual string FetchLatestVersionFromAssetStoreJson() + { + try + { + using (var client = new WebClient()) + { + client.Headers.Add("User-Agent", "Unity-MCPForUnity-AssetStoreUpdateChecker"); + string jsonContent = client.DownloadString(AssetStoreVersionUrl); + + var versionJson = JObject.Parse(jsonContent); + string version = versionJson["version"]?.ToString(); + + return string.IsNullOrEmpty(version) ? null : version; + } + } + catch (Exception ex) + { + // Silent fail - don't interrupt the user if network is unavailable + McpLog.Info($"Asset Store update check failed (this is normal if offline): {ex.Message}"); + return null; + } + } + } +} diff --git a/Packages/MCPForUnity/Editor/Services/PackageUpdateService.cs.meta b/Packages/MCPForUnity/Editor/Services/PackageUpdateService.cs.meta new file mode 100644 index 00000000..281cda95 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/PackageUpdateService.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7c3c2304b14e9485ca54182fad73b035 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/PathResolverService.cs b/Packages/MCPForUnity/Editor/Services/PathResolverService.cs new file mode 100644 index 00000000..4181cf4c --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/PathResolverService.cs @@ -0,0 +1,358 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices; +using MCPForUnity.Editor.Constants; +using MCPForUnity.Editor.Helpers; +using UnityEditor; +using UnityEngine; + +namespace MCPForUnity.Editor.Services +{ + /// + /// Implementation of path resolver service with override support + /// + public class PathResolverService : IPathResolverService + { + private bool _hasUvxPathFallback; + + public bool HasUvxPathOverride => !string.IsNullOrEmpty(EditorPrefs.GetString(EditorPrefKeys.UvxPathOverride, null)); + public bool HasClaudeCliPathOverride => !string.IsNullOrEmpty(EditorPrefs.GetString(EditorPrefKeys.ClaudeCliPathOverride, null)); + public bool HasUvxPathFallback => _hasUvxPathFallback; + + public string GetUvxPath() + { + // Reset fallback flag at the start of each resolution + _hasUvxPathFallback = false; + + // Check override first - only validate if explicitly set + if (HasUvxPathOverride) + { + string overridePath = EditorPrefs.GetString(EditorPrefKeys.UvxPathOverride, string.Empty); + // Validate the override - if invalid, fall back to system discovery + if (TryValidateUvxExecutable(overridePath, out string version)) + { + return overridePath; + } + // Override is set but invalid - fall back to system discovery + string fallbackPath = ResolveUvxFromSystem(); + if (!string.IsNullOrEmpty(fallbackPath)) + { + _hasUvxPathFallback = true; + return fallbackPath; + } + // Return null to indicate override is invalid and no system fallback found + return null; + } + + // No override set - try discovery (uvx first, then uv) + string discovered = ResolveUvxFromSystem(); + if (!string.IsNullOrEmpty(discovered)) + { + return discovered; + } + + // Fallback to bare command + return "uvx"; + } + + /// + /// Resolves uv/uvx from system by trying both commands. + /// Returns the full path if found, null otherwise. + /// + private static string ResolveUvxFromSystem() + { + try + { + // Try uvx first, then uv + string[] commandNames = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) + ? new[] { "uvx.exe", "uv.exe" } + : new[] { "uvx", "uv" }; + + foreach (string commandName in commandNames) + { + foreach (string candidate in EnumerateCommandCandidates(commandName)) + { + if (!string.IsNullOrEmpty(candidate) && File.Exists(candidate)) + { + return candidate; + } + } + } + } + catch (Exception ex) + { + McpLog.Debug($"PathResolver error: {ex.Message}"); + } + + return null; + } + + + + public string GetClaudeCliPath() + { + // Check override first - only validate if explicitly set + if (HasClaudeCliPathOverride) + { + string overridePath = EditorPrefs.GetString(EditorPrefKeys.ClaudeCliPathOverride, string.Empty); + // Validate the override - if invalid, don't fall back to discovery + if (File.Exists(overridePath)) + { + return overridePath; + } + // Override is set but invalid - return null (no fallback) + return null; + } + + // No override - use platform-specific discovery + if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + { + string[] candidates = new[] + { + Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Programs", "claude", "claude.exe"), + Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles), "claude", "claude.exe"), + "claude.exe" + }; + + foreach (var c in candidates) + { + if (File.Exists(c)) return c; + } + } + else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) + { + string[] candidates = new[] + { + "/opt/homebrew/bin/claude", + "/usr/local/bin/claude", + Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".local", "bin", "claude") + }; + + foreach (var c in candidates) + { + if (File.Exists(c)) return c; + } + } + else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) + { + string[] candidates = new[] + { + "/usr/bin/claude", + "/usr/local/bin/claude", + Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".local", "bin", "claude") + }; + + foreach (var c in candidates) + { + if (File.Exists(c)) return c; + } + } + + return null; + } + + public bool IsPythonDetected() + { + return ExecPath.TryRun( + RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? "python.exe" : "python3", + "--version", + null, + out _, + out _, + 2000); + } + + public bool IsClaudeCliDetected() + { + return !string.IsNullOrEmpty(GetClaudeCliPath()); + } + + public void SetUvxPathOverride(string path) + { + if (string.IsNullOrEmpty(path)) + { + ClearUvxPathOverride(); + return; + } + + if (!File.Exists(path)) + { + throw new ArgumentException("The selected uvx executable does not exist"); + } + + EditorPrefs.SetString(EditorPrefKeys.UvxPathOverride, path); + } + + public void SetClaudeCliPathOverride(string path) + { + if (string.IsNullOrEmpty(path)) + { + ClearClaudeCliPathOverride(); + return; + } + + if (!File.Exists(path)) + { + throw new ArgumentException("The selected Claude CLI executable does not exist"); + } + + EditorPrefs.SetString(EditorPrefKeys.ClaudeCliPathOverride, path); + } + + public void ClearUvxPathOverride() + { + EditorPrefs.DeleteKey(EditorPrefKeys.UvxPathOverride); + } + + public void ClearClaudeCliPathOverride() + { + EditorPrefs.DeleteKey(EditorPrefKeys.ClaudeCliPathOverride); + } + + /// + /// Validates the provided uv executable by running "--version" and parsing the output. + /// + /// Absolute or relative path to the uv/uvx executable. + /// Parsed version string if successful. + /// True when the executable runs and returns a uvx version string. + public bool TryValidateUvxExecutable(string uvxPath, out string version) + { + version = null; + + if (string.IsNullOrEmpty(uvxPath)) + return false; + + try + { + // Check if the path is just a command name (no directory separator) + bool isBareCommand = !uvxPath.Contains('/') && !uvxPath.Contains('\\'); + + if (isBareCommand) + { + // For bare commands like "uvx" or "uv", use EnumerateCommandCandidates to find full path first + string fullPath = FindUvxExecutableInPath(uvxPath); + if (string.IsNullOrEmpty(fullPath)) + return false; + uvxPath = fullPath; + } + + // Use ExecPath.TryRun which properly handles async output reading and timeouts + if (!ExecPath.TryRun(uvxPath, "--version", null, out string stdout, out string stderr, 5000)) + return false; + + // Check stdout first, then stderr (some tools output to stderr) + string versionOutput = !string.IsNullOrWhiteSpace(stdout) ? stdout.Trim() : stderr.Trim(); + + // uv/uvx outputs "uv x.y.z" or "uvx x.y.z", extract version number + if (versionOutput.StartsWith("uvx ") || versionOutput.StartsWith("uv ")) + { + // Extract version: "uv 0.9.18 (hash date)" -> "0.9.18" + int spaceIndex = versionOutput.IndexOf(' '); + if (spaceIndex >= 0) + { + string afterCommand = versionOutput.Substring(spaceIndex + 1).Trim(); + // Version is up to the first space or parenthesis + int nextSpace = afterCommand.IndexOf(' '); + int parenIndex = afterCommand.IndexOf('('); + int endIndex = Math.Min( + nextSpace >= 0 ? nextSpace : int.MaxValue, + parenIndex >= 0 ? parenIndex : int.MaxValue + ); + version = endIndex < int.MaxValue ? afterCommand.Substring(0, endIndex).Trim() : afterCommand; + return true; + } + } + } + catch + { + // Ignore validation errors + } + + return false; + } + + private string FindUvxExecutableInPath(string commandName) + { + try + { + // Generic search for any command in PATH and common locations + foreach (string candidate in EnumerateCommandCandidates(commandName)) + { + if (!string.IsNullOrEmpty(candidate) && File.Exists(candidate)) + { + return candidate; + } + } + } + catch + { + // Ignore errors + } + + return null; + } + + /// + /// Enumerates candidate paths for a generic command name. + /// Searches PATH and common locations. + /// + private static IEnumerable EnumerateCommandCandidates(string commandName) + { + string exeName = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) && !commandName.EndsWith(".exe") + ? commandName + ".exe" + : commandName; + + // Search PATH first + string pathEnv = Environment.GetEnvironmentVariable("PATH"); + if (!string.IsNullOrEmpty(pathEnv)) + { + foreach (string rawDir in pathEnv.Split(Path.PathSeparator)) + { + if (string.IsNullOrWhiteSpace(rawDir)) continue; + string dir = rawDir.Trim(); + yield return Path.Combine(dir, exeName); + } + } + + // User-local binary directories + string home = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile); + if (!string.IsNullOrEmpty(home)) + { + yield return Path.Combine(home, ".local", "bin", exeName); + yield return Path.Combine(home, ".cargo", "bin", exeName); + } + + // System directories (platform-specific) + if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) + { + yield return "/opt/homebrew/bin/" + exeName; + yield return "/usr/local/bin/" + exeName; + } + else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) + { + yield return "/usr/local/bin/" + exeName; + yield return "/usr/bin/" + exeName; + } + else if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + { + string localAppData = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); + string programFiles = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles); + + if (!string.IsNullOrEmpty(localAppData)) + { + yield return Path.Combine(localAppData, "Programs", "uv", exeName); + // WinGet creates shim files in this location + yield return Path.Combine(localAppData, "Microsoft", "WinGet", "Links", exeName); + } + + if (!string.IsNullOrEmpty(programFiles)) + { + yield return Path.Combine(programFiles, "uv", exeName); + } + } + } + } +} diff --git a/Packages/MCPForUnity/Editor/Services/PathResolverService.cs.meta b/Packages/MCPForUnity/Editor/Services/PathResolverService.cs.meta new file mode 100644 index 00000000..09dbc1ec --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/PathResolverService.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 00a6188fd15a847fa8cc7cb7a4ce3dce +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/PlatformService.cs b/Packages/MCPForUnity/Editor/Services/PlatformService.cs new file mode 100644 index 00000000..6e663717 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/PlatformService.cs @@ -0,0 +1,31 @@ +using System; + +namespace MCPForUnity.Editor.Services +{ + /// + /// Default implementation of platform detection service + /// + public class PlatformService : IPlatformService + { + /// + /// Checks if the current platform is Windows + /// + /// True if running on Windows + public bool IsWindows() + { + return Environment.OSVersion.Platform == PlatformID.Win32NT; + } + + /// + /// Gets the SystemRoot environment variable (Windows-specific) + /// + /// SystemRoot path, or "C:\\Windows" as fallback on Windows, null on other platforms + public string GetSystemRoot() + { + if (!IsWindows()) + return null; + + return Environment.GetEnvironmentVariable("SystemRoot") ?? "C:\\Windows"; + } + } +} diff --git a/Packages/MCPForUnity/Editor/Services/PlatformService.cs.meta b/Packages/MCPForUnity/Editor/Services/PlatformService.cs.meta new file mode 100644 index 00000000..172daf8f --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/PlatformService.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3b2d7f32a595c45dd8c01f141c69761c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/ResourceDiscoveryService.cs b/Packages/MCPForUnity/Editor/Services/ResourceDiscoveryService.cs new file mode 100644 index 00000000..d9642596 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/ResourceDiscoveryService.cs @@ -0,0 +1,167 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using MCPForUnity.Editor.Constants; +using MCPForUnity.Editor.Helpers; +using MCPForUnity.Editor.Resources; +using UnityEditor; + +namespace MCPForUnity.Editor.Services +{ + public class ResourceDiscoveryService : IResourceDiscoveryService + { + private Dictionary _cachedResources; + + public List DiscoverAllResources() + { + if (_cachedResources != null) + { + return _cachedResources.Values.ToList(); + } + + _cachedResources = new Dictionary(); + + var resourceTypes = TypeCache.GetTypesWithAttribute(); + foreach (var type in resourceTypes) + { + McpForUnityResourceAttribute resourceAttr; + try + { + resourceAttr = type.GetCustomAttribute(); + } + catch (Exception ex) + { + McpLog.Warn($"Failed to read [McpForUnityResource] for {type.FullName}: {ex.Message}"); + continue; + } + + if (resourceAttr == null) + { + continue; + } + + var metadata = ExtractResourceMetadata(type, resourceAttr); + if (metadata != null) + { + if (_cachedResources.ContainsKey(metadata.Name)) + { + McpLog.Warn($"Duplicate resource name '{metadata.Name}' from {type.FullName}; overwriting previous registration."); + } + _cachedResources[metadata.Name] = metadata; + EnsurePreferenceInitialized(metadata); + } + } + + McpLog.Info($"Discovered {_cachedResources.Count} MCP resources via reflection", false); + return _cachedResources.Values.ToList(); + } + + public ResourceMetadata GetResourceMetadata(string resourceName) + { + if (string.IsNullOrEmpty(resourceName)) + { + return null; + } + + if (_cachedResources == null) + { + DiscoverAllResources(); + } + + return _cachedResources.TryGetValue(resourceName, out var metadata) ? metadata : null; + } + + public List GetEnabledResources() + { + return DiscoverAllResources() + .Where(r => IsResourceEnabled(r.Name)) + .ToList(); + } + + public bool IsResourceEnabled(string resourceName) + { + if (string.IsNullOrEmpty(resourceName)) + { + return false; + } + + string key = GetResourcePreferenceKey(resourceName); + if (EditorPrefs.HasKey(key)) + { + return EditorPrefs.GetBool(key, true); + } + + // Default: all resources enabled + return true; + } + + public void SetResourceEnabled(string resourceName, bool enabled) + { + if (string.IsNullOrEmpty(resourceName)) + { + return; + } + + string key = GetResourcePreferenceKey(resourceName); + EditorPrefs.SetBool(key, enabled); + } + + public void InvalidateCache() + { + _cachedResources = null; + } + + private ResourceMetadata ExtractResourceMetadata(Type type, McpForUnityResourceAttribute resourceAttr) + { + try + { + string resourceName = resourceAttr.ResourceName; + if (string.IsNullOrEmpty(resourceName)) + { + resourceName = StringCaseUtility.ToSnakeCase(type.Name); + } + + string description = resourceAttr.Description ?? $"Resource: {resourceName}"; + + var metadata = new ResourceMetadata + { + Name = resourceName, + Description = description, + ClassName = type.Name, + Namespace = type.Namespace ?? "", + AssemblyName = type.Assembly.GetName().Name + }; + + metadata.IsBuiltIn = StringCaseUtility.IsBuiltInMcpType( + type, metadata.AssemblyName, "MCPForUnity.Editor.Resources"); + + return metadata; + } + catch (Exception ex) + { + McpLog.Error($"Failed to extract metadata for resource {type.Name}: {ex.Message}"); + return null; + } + } + + private void EnsurePreferenceInitialized(ResourceMetadata metadata) + { + if (metadata == null || string.IsNullOrEmpty(metadata.Name)) + { + return; + } + + string key = GetResourcePreferenceKey(metadata.Name); + if (!EditorPrefs.HasKey(key)) + { + EditorPrefs.SetBool(key, true); + } + } + + private static string GetResourcePreferenceKey(string resourceName) + { + return EditorPrefKeys.ResourceEnabledPrefix + resourceName; + } + } +} diff --git a/Packages/MCPForUnity/Editor/Services/ResourceDiscoveryService.cs.meta b/Packages/MCPForUnity/Editor/Services/ResourceDiscoveryService.cs.meta new file mode 100644 index 00000000..61a096cc --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/ResourceDiscoveryService.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 66ce49d2cc47a4bd3aa85ac9f099b757 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/Server.meta b/Packages/MCPForUnity/Editor/Services/Server.meta new file mode 100644 index 00000000..e1e1dd44 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/Server.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1bb072befc9fe4242a501f46dce3fea1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/Server/IPidFileManager.cs b/Packages/MCPForUnity/Editor/Services/Server/IPidFileManager.cs new file mode 100644 index 00000000..b9bd74be --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/Server/IPidFileManager.cs @@ -0,0 +1,94 @@ +namespace MCPForUnity.Editor.Services.Server +{ + /// + /// Interface for managing PID files and handshake state for the local HTTP server. + /// Handles persistence of server process information across Unity domain reloads. + /// + public interface IPidFileManager + { + /// + /// Gets the directory where PID files are stored. + /// + /// Path to the PID file directory + string GetPidDirectory(); + + /// + /// Gets the path to the PID file for a specific port. + /// + /// The port number + /// Full path to the PID file + string GetPidFilePath(int port); + + /// + /// Attempts to read the PID from a PID file. + /// + /// Path to the PID file + /// Output: the process ID if found + /// True if a valid PID was read + bool TryReadPid(string pidFilePath, out int pid); + + /// + /// Attempts to extract the port number from a PID file path. + /// + /// Path to the PID file + /// Output: the port number + /// True if the port was extracted successfully + bool TryGetPortFromPidFilePath(string pidFilePath, out int port); + + /// + /// Deletes a PID file. + /// + /// Path to the PID file to delete + void DeletePidFile(string pidFilePath); + + /// + /// Stores the handshake information (PID file path and instance token) in EditorPrefs. + /// + /// Path to the PID file + /// Unique instance token for the server + void StoreHandshake(string pidFilePath, string instanceToken); + + /// + /// Attempts to retrieve stored handshake information from EditorPrefs. + /// + /// Output: stored PID file path + /// Output: stored instance token + /// True if valid handshake information was found + bool TryGetHandshake(out string pidFilePath, out string instanceToken); + + /// + /// Stores PID tracking information in EditorPrefs. + /// + /// The process ID + /// The port number + /// Optional hash of the command arguments + void StoreTracking(int pid, int port, string argsHash = null); + + /// + /// Attempts to retrieve a stored PID for the expected port. + /// Validates that the stored information is still valid (within 6-hour window). + /// + /// The expected port number + /// Output: the stored process ID + /// True if a valid stored PID was found + bool TryGetStoredPid(int expectedPort, out int pid); + + /// + /// Gets the stored args hash for the tracked server. + /// + /// The stored args hash, or empty string if not found + string GetStoredArgsHash(); + + /// + /// Clears all PID tracking information from EditorPrefs. + /// + void ClearTracking(); + + /// + /// Computes a short hash of the input string for fingerprinting. + /// + /// The input string + /// A short hash string (16 hex characters) + string ComputeShortHash(string input); + } +} diff --git a/Packages/MCPForUnity/Editor/Services/Server/IPidFileManager.cs.meta b/Packages/MCPForUnity/Editor/Services/Server/IPidFileManager.cs.meta new file mode 100644 index 00000000..b70da866 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/Server/IPidFileManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f4a4c5d093da74ce79fb29a0670a58a7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/Server/IProcessDetector.cs b/Packages/MCPForUnity/Editor/Services/Server/IProcessDetector.cs new file mode 100644 index 00000000..886e29dc --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/Server/IProcessDetector.cs @@ -0,0 +1,55 @@ +using System.Collections.Generic; + +namespace MCPForUnity.Editor.Services.Server +{ + /// + /// Interface for platform-specific process inspection operations. + /// Provides methods to detect MCP server processes, query process command lines, + /// and find processes listening on specific ports. + /// + public interface IProcessDetector + { + /// + /// Determines if a process looks like an MCP server process based on its command line. + /// Checks for indicators like uvx, python, mcp-for-unity, uvicorn, etc. + /// + /// The process ID to check + /// True if the process appears to be an MCP server + bool LooksLikeMcpServerProcess(int pid); + + /// + /// Attempts to get the command line arguments for a Unix process. + /// + /// The process ID + /// Output: normalized (lowercase, whitespace removed) command line args + /// True if the command line was retrieved successfully + bool TryGetProcessCommandLine(int pid, out string argsLower); + + /// + /// Gets the process IDs of all processes listening on a specific TCP port. + /// + /// The port number to check + /// List of process IDs listening on the port + List GetListeningProcessIdsForPort(int port); + + /// + /// Gets the current Unity Editor process ID safely. + /// + /// The current process ID, or -1 if it cannot be determined + int GetCurrentProcessId(); + + /// + /// Checks if a process exists on Unix systems. + /// + /// The process ID to check + /// True if the process exists + bool ProcessExists(int pid); + + /// + /// Normalizes a string for matching by removing whitespace and converting to lowercase. + /// + /// The input string + /// Normalized string for matching + string NormalizeForMatch(string input); + } +} diff --git a/Packages/MCPForUnity/Editor/Services/Server/IProcessDetector.cs.meta b/Packages/MCPForUnity/Editor/Services/Server/IProcessDetector.cs.meta new file mode 100644 index 00000000..6524cd20 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/Server/IProcessDetector.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 25f32875fb87541b69ead19c08520836 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/Server/IProcessTerminator.cs b/Packages/MCPForUnity/Editor/Services/Server/IProcessTerminator.cs new file mode 100644 index 00000000..0f6e9f88 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/Server/IProcessTerminator.cs @@ -0,0 +1,18 @@ +namespace MCPForUnity.Editor.Services.Server +{ + /// + /// Interface for platform-specific process termination. + /// Provides methods to terminate processes gracefully or forcefully. + /// + public interface IProcessTerminator + { + /// + /// Terminates a process using platform-appropriate methods. + /// On Unix: Tries SIGTERM first with grace period, then SIGKILL. + /// On Windows: Tries taskkill, then taskkill /F. + /// + /// The process ID to terminate + /// True if the process was terminated successfully + bool Terminate(int pid); + } +} diff --git a/Packages/MCPForUnity/Editor/Services/Server/IProcessTerminator.cs.meta b/Packages/MCPForUnity/Editor/Services/Server/IProcessTerminator.cs.meta new file mode 100644 index 00000000..c3441e50 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/Server/IProcessTerminator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6a55c18e08b534afa85654410da8a463 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/Server/IServerCommandBuilder.cs b/Packages/MCPForUnity/Editor/Services/Server/IServerCommandBuilder.cs new file mode 100644 index 00000000..f32b1ebd --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/Server/IServerCommandBuilder.cs @@ -0,0 +1,39 @@ +namespace MCPForUnity.Editor.Services.Server +{ + /// + /// Interface for building uvx/server command strings. + /// Handles platform-specific command construction for starting the MCP HTTP server. + /// + public interface IServerCommandBuilder + { + /// + /// Attempts to build the command parts for starting the local HTTP server. + /// + /// Output: the executable file name (e.g., uvx path) + /// Output: the command arguments + /// Output: the full command string for display + /// Output: error message if the command cannot be built + /// True if the command was built successfully + bool TryBuildCommand(out string fileName, out string arguments, out string displayCommand, out string error); + + /// + /// Builds the uv path from the uvx path by replacing uvx with uv. + /// + /// Path to uvx executable + /// Path to uv executable + string BuildUvPathFromUvx(string uvxPath); + + /// + /// Gets the platform-specific PATH prepend string for finding uv/uvx. + /// + /// Paths to prepend to PATH environment variable + string GetPlatformSpecificPathPrepend(); + + /// + /// Quotes a string if it contains spaces. + /// + /// The input string + /// The string, wrapped in quotes if it contains spaces + string QuoteIfNeeded(string input); + } +} diff --git a/Packages/MCPForUnity/Editor/Services/Server/IServerCommandBuilder.cs.meta b/Packages/MCPForUnity/Editor/Services/Server/IServerCommandBuilder.cs.meta new file mode 100644 index 00000000..995c5842 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/Server/IServerCommandBuilder.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 12e80005e3f5b45239c48db981675ccf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/Server/ITerminalLauncher.cs b/Packages/MCPForUnity/Editor/Services/Server/ITerminalLauncher.cs new file mode 100644 index 00000000..3a896842 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/Server/ITerminalLauncher.cs @@ -0,0 +1,25 @@ +using System.Diagnostics; + +namespace MCPForUnity.Editor.Services.Server +{ + /// + /// Interface for launching commands in platform-specific terminal windows. + /// Supports macOS Terminal, Windows cmd, and Linux terminal emulators. + /// + public interface ITerminalLauncher + { + /// + /// Creates a ProcessStartInfo for opening a terminal window with the given command. + /// Works cross-platform: macOS, Windows, and Linux. + /// + /// The command to execute in the terminal + /// A configured ProcessStartInfo for launching the terminal + ProcessStartInfo CreateTerminalProcessStartInfo(string command); + + /// + /// Gets the project root path for storing terminal scripts. + /// + /// Path to the project root directory + string GetProjectRootPath(); + } +} diff --git a/Packages/MCPForUnity/Editor/Services/Server/ITerminalLauncher.cs.meta b/Packages/MCPForUnity/Editor/Services/Server/ITerminalLauncher.cs.meta new file mode 100644 index 00000000..dcb86ab6 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/Server/ITerminalLauncher.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a5990e868c0cd4999858ce1c1a2defed +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/Server/PidFileManager.cs b/Packages/MCPForUnity/Editor/Services/Server/PidFileManager.cs new file mode 100644 index 00000000..eca60ee2 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/Server/PidFileManager.cs @@ -0,0 +1,275 @@ +using System; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Security.Cryptography; +using System.Text; +using MCPForUnity.Editor.Constants; +using UnityEditor; +using UnityEngine; + +namespace MCPForUnity.Editor.Services.Server +{ + /// + /// Manages PID files and handshake state for the local HTTP server. + /// Handles persistence of server process information across Unity domain reloads. + /// + public class PidFileManager : IPidFileManager + { + /// + public string GetPidDirectory() + { + return Path.Combine(GetProjectRootPath(), "Library", "MCPForUnity", "RunState"); + } + + /// + public string GetPidFilePath(int port) + { + string dir = GetPidDirectory(); + Directory.CreateDirectory(dir); + return Path.Combine(dir, $"mcp_http_{port}.pid"); + } + + /// + public bool TryReadPid(string pidFilePath, out int pid) + { + pid = 0; + try + { + if (string.IsNullOrEmpty(pidFilePath) || !File.Exists(pidFilePath)) + { + return false; + } + + string text = File.ReadAllText(pidFilePath).Trim(); + if (int.TryParse(text, out pid)) + { + return pid > 0; + } + + // Best-effort: tolerate accidental extra whitespace/newlines. + var firstLine = text.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries).FirstOrDefault(); + if (int.TryParse(firstLine, out pid)) + { + return pid > 0; + } + + pid = 0; + return false; + } + catch + { + pid = 0; + return false; + } + } + + /// + public bool TryGetPortFromPidFilePath(string pidFilePath, out int port) + { + port = 0; + if (string.IsNullOrEmpty(pidFilePath)) + { + return false; + } + + try + { + string fileName = Path.GetFileNameWithoutExtension(pidFilePath); + if (string.IsNullOrEmpty(fileName)) + { + return false; + } + + const string prefix = "mcp_http_"; + if (!fileName.StartsWith(prefix, StringComparison.OrdinalIgnoreCase)) + { + return false; + } + + string portText = fileName.Substring(prefix.Length); + return int.TryParse(portText, out port) && port > 0; + } + catch + { + port = 0; + return false; + } + } + + /// + public void DeletePidFile(string pidFilePath) + { + try + { + if (!string.IsNullOrEmpty(pidFilePath) && File.Exists(pidFilePath)) + { + File.Delete(pidFilePath); + } + } + catch { } + } + + /// + public void StoreHandshake(string pidFilePath, string instanceToken) + { + try + { + if (!string.IsNullOrEmpty(pidFilePath)) + { + EditorPrefs.SetString(EditorPrefKeys.LastLocalHttpServerPidFilePath, pidFilePath); + } + } + catch { } + + try + { + if (!string.IsNullOrEmpty(instanceToken)) + { + EditorPrefs.SetString(EditorPrefKeys.LastLocalHttpServerInstanceToken, instanceToken); + } + } + catch { } + } + + /// + public bool TryGetHandshake(out string pidFilePath, out string instanceToken) + { + pidFilePath = null; + instanceToken = null; + try + { + pidFilePath = EditorPrefs.GetString(EditorPrefKeys.LastLocalHttpServerPidFilePath, string.Empty); + instanceToken = EditorPrefs.GetString(EditorPrefKeys.LastLocalHttpServerInstanceToken, string.Empty); + if (string.IsNullOrEmpty(pidFilePath) || string.IsNullOrEmpty(instanceToken)) + { + pidFilePath = null; + instanceToken = null; + return false; + } + return true; + } + catch + { + pidFilePath = null; + instanceToken = null; + return false; + } + } + + /// + public void StoreTracking(int pid, int port, string argsHash = null) + { + try { EditorPrefs.SetInt(EditorPrefKeys.LastLocalHttpServerPid, pid); } catch { } + try { EditorPrefs.SetInt(EditorPrefKeys.LastLocalHttpServerPort, port); } catch { } + try { EditorPrefs.SetString(EditorPrefKeys.LastLocalHttpServerStartedUtc, DateTime.UtcNow.ToString("O", CultureInfo.InvariantCulture)); } catch { } + try + { + if (!string.IsNullOrEmpty(argsHash)) + { + EditorPrefs.SetString(EditorPrefKeys.LastLocalHttpServerPidArgsHash, argsHash); + } + else + { + EditorPrefs.DeleteKey(EditorPrefKeys.LastLocalHttpServerPidArgsHash); + } + } + catch { } + } + + /// + public bool TryGetStoredPid(int expectedPort, out int pid) + { + pid = 0; + try + { + int storedPid = EditorPrefs.GetInt(EditorPrefKeys.LastLocalHttpServerPid, 0); + int storedPort = EditorPrefs.GetInt(EditorPrefKeys.LastLocalHttpServerPort, 0); + string storedUtc = EditorPrefs.GetString(EditorPrefKeys.LastLocalHttpServerStartedUtc, string.Empty); + + if (storedPid <= 0 || storedPort != expectedPort) + { + return false; + } + + // Only trust the stored PID for a short window to avoid PID reuse issues. + // (We still verify the PID is listening on the expected port before killing.) + if (!string.IsNullOrEmpty(storedUtc) + && DateTime.TryParse(storedUtc, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out var startedAt)) + { + if ((DateTime.UtcNow - startedAt) > TimeSpan.FromHours(6)) + { + return false; + } + } + + pid = storedPid; + return true; + } + catch + { + return false; + } + } + + /// + public string GetStoredArgsHash() + { + try + { + return EditorPrefs.GetString(EditorPrefKeys.LastLocalHttpServerPidArgsHash, string.Empty); + } + catch + { + return string.Empty; + } + } + + /// + public void ClearTracking() + { + try { EditorPrefs.DeleteKey(EditorPrefKeys.LastLocalHttpServerPid); } catch { } + try { EditorPrefs.DeleteKey(EditorPrefKeys.LastLocalHttpServerPort); } catch { } + try { EditorPrefs.DeleteKey(EditorPrefKeys.LastLocalHttpServerStartedUtc); } catch { } + try { EditorPrefs.DeleteKey(EditorPrefKeys.LastLocalHttpServerPidArgsHash); } catch { } + try { EditorPrefs.DeleteKey(EditorPrefKeys.LastLocalHttpServerPidFilePath); } catch { } + try { EditorPrefs.DeleteKey(EditorPrefKeys.LastLocalHttpServerInstanceToken); } catch { } + } + + /// + public string ComputeShortHash(string input) + { + if (string.IsNullOrEmpty(input)) return string.Empty; + try + { + using var sha = SHA256.Create(); + byte[] bytes = Encoding.UTF8.GetBytes(input); + byte[] hash = sha.ComputeHash(bytes); + // 8 bytes => 16 hex chars is plenty as a stable fingerprint for our purposes. + var sb = new StringBuilder(16); + for (int i = 0; i < 8 && i < hash.Length; i++) + { + sb.Append(hash[i].ToString("x2")); + } + return sb.ToString(); + } + catch + { + return string.Empty; + } + } + + private static string GetProjectRootPath() + { + try + { + // Application.dataPath is "...//Assets" + return Path.GetFullPath(Path.Combine(Application.dataPath, "..")); + } + catch + { + return Application.dataPath; + } + } + } +} diff --git a/Packages/MCPForUnity/Editor/Services/Server/PidFileManager.cs.meta b/Packages/MCPForUnity/Editor/Services/Server/PidFileManager.cs.meta new file mode 100644 index 00000000..d3610250 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/Server/PidFileManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 57875f281fda94a4ea17cb74d4b13378 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/Server/ProcessDetector.cs b/Packages/MCPForUnity/Editor/Services/Server/ProcessDetector.cs new file mode 100644 index 00000000..b553cb3c --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/Server/ProcessDetector.cs @@ -0,0 +1,268 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using MCPForUnity.Editor.Helpers; +using UnityEngine; + +namespace MCPForUnity.Editor.Services.Server +{ + /// + /// Platform-specific process inspection for detecting MCP server processes. + /// + public class ProcessDetector : IProcessDetector + { + /// + public string NormalizeForMatch(string input) + { + if (string.IsNullOrEmpty(input)) return string.Empty; + var sb = new StringBuilder(input.Length); + foreach (char c in input) + { + if (char.IsWhiteSpace(c)) continue; + sb.Append(char.ToLowerInvariant(c)); + } + return sb.ToString(); + } + + /// + public int GetCurrentProcessId() + { + try { return System.Diagnostics.Process.GetCurrentProcess().Id; } + catch { return -1; } + } + + /// + public bool ProcessExists(int pid) + { + try + { + if (Application.platform == RuntimePlatform.WindowsEditor) + { + // On Windows, use tasklist to check if process exists + bool ok = ExecPath.TryRun("tasklist", $"/FI \"PID eq {pid}\"", Application.dataPath, out var stdout, out var stderr, 5000); + string combined = ((stdout ?? string.Empty) + "\n" + (stderr ?? string.Empty)).ToLowerInvariant(); + return ok && combined.Contains(pid.ToString()); + } + + // Unix: ps exits non-zero when PID is not found. + string psPath = "/bin/ps"; + if (!File.Exists(psPath)) psPath = "ps"; + ExecPath.TryRun(psPath, $"-p {pid} -o pid=", Application.dataPath, out var psStdout, out var psStderr, 2000); + string combined2 = ((psStdout ?? string.Empty) + "\n" + (psStderr ?? string.Empty)).Trim(); + return !string.IsNullOrEmpty(combined2) && combined2.Any(char.IsDigit); + } + catch + { + return true; // Assume it exists if we cannot verify. + } + } + + /// + public bool TryGetProcessCommandLine(int pid, out string argsLower) + { + argsLower = string.Empty; + try + { + if (Application.platform == RuntimePlatform.WindowsEditor) + { + // Windows: use wmic to get command line + ExecPath.TryRun("cmd.exe", $"/c wmic process where \"ProcessId={pid}\" get CommandLine /value", Application.dataPath, out var wmicOut, out var wmicErr, 5000); + string wmicCombined = ((wmicOut ?? string.Empty) + "\n" + (wmicErr ?? string.Empty)); + if (!string.IsNullOrEmpty(wmicCombined) && wmicCombined.ToLowerInvariant().Contains("commandline=")) + { + argsLower = NormalizeForMatch(wmicOut ?? string.Empty); + return true; + } + return false; + } + + // Unix: ps -p pid -ww -o args= + string psPath = "/bin/ps"; + if (!File.Exists(psPath)) psPath = "ps"; + + bool ok = ExecPath.TryRun(psPath, $"-p {pid} -ww -o args=", Application.dataPath, out var stdout, out var stderr, 5000); + if (!ok && string.IsNullOrWhiteSpace(stdout)) + { + return false; + } + string combined = ((stdout ?? string.Empty) + "\n" + (stderr ?? string.Empty)).Trim(); + if (string.IsNullOrEmpty(combined)) return false; + // Normalize for matching to tolerate ps wrapping/newlines. + argsLower = NormalizeForMatch(combined); + return true; + } + catch + { + return false; + } + } + + /// + public List GetListeningProcessIdsForPort(int port) + { + var results = new List(); + try + { + string stdout, stderr; + bool success; + + if (Application.platform == RuntimePlatform.WindowsEditor) + { + // Run netstat -ano directly (without findstr) and filter in C#. + // Using findstr in a pipe causes the entire command to return exit code 1 when no matches are found, + // which ExecPath.TryRun interprets as failure. Running netstat alone gives us exit code 0 on success. + success = ExecPath.TryRun("netstat.exe", "-ano", Application.dataPath, out stdout, out stderr); + + // Process stdout regardless of success flag - netstat might still produce valid output + if (!string.IsNullOrEmpty(stdout)) + { + string portSuffix = $":{port}"; + var lines = stdout.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); + foreach (var line in lines) + { + // Windows netstat format: Proto Local Address Foreign Address State PID + // Example: TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 12345 + if (line.Contains("LISTENING") && line.Contains(portSuffix)) + { + var parts = line.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); + // Verify the local address column actually ends with :{port} + // parts[0] = Proto (TCP), parts[1] = Local Address, parts[2] = Foreign Address, parts[3] = State, parts[4] = PID + if (parts.Length >= 5) + { + string localAddr = parts[1]; + if (localAddr.EndsWith(portSuffix) && int.TryParse(parts[parts.Length - 1], out int parsedPid)) + { + results.Add(parsedPid); + } + } + } + } + } + } + else + { + // lsof: only return LISTENers (avoids capturing random clients) + // Use /usr/sbin/lsof directly as it might not be in PATH for Unity + string lsofPath = "/usr/sbin/lsof"; + if (!File.Exists(lsofPath)) lsofPath = "lsof"; // Fallback + + // -nP: avoid DNS/service name lookups; faster and less error-prone + success = ExecPath.TryRun(lsofPath, $"-nP -iTCP:{port} -sTCP:LISTEN -t", Application.dataPath, out stdout, out stderr); + if (success && !string.IsNullOrWhiteSpace(stdout)) + { + var pidStrings = stdout.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); + foreach (var pidString in pidStrings) + { + if (int.TryParse(pidString.Trim(), out int parsedPid)) + { + results.Add(parsedPid); + } + } + } + } + } + catch (Exception ex) + { + McpLog.Warn($"Error checking port {port}: {ex.Message}"); + } + return results.Distinct().ToList(); + } + + /// + public bool LooksLikeMcpServerProcess(int pid) + { + try + { + // Windows best-effort: First check process name with tasklist, then try to get command line with wmic + if (Application.platform == RuntimePlatform.WindowsEditor) + { + // Step 1: Check if process name matches known server executables + ExecPath.TryRun("cmd.exe", $"/c tasklist /FI \"PID eq {pid}\"", Application.dataPath, out var tasklistOut, out var tasklistErr, 5000); + string tasklistCombined = ((tasklistOut ?? string.Empty) + "\n" + (tasklistErr ?? string.Empty)).ToLowerInvariant(); + + // Check for common process names + bool isPythonOrUv = tasklistCombined.Contains("python") || tasklistCombined.Contains("uvx") || tasklistCombined.Contains("uv.exe"); + if (!isPythonOrUv) + { + return false; + } + + // Step 2: Try to get command line with wmic for better validation + ExecPath.TryRun("cmd.exe", $"/c wmic process where \"ProcessId={pid}\" get CommandLine /value", Application.dataPath, out var wmicOut, out var wmicErr, 5000); + string wmicCombined = ((wmicOut ?? string.Empty) + "\n" + (wmicErr ?? string.Empty)).ToLowerInvariant(); + string wmicCompact = NormalizeForMatch(wmicOut ?? string.Empty); + + // If we can see the command line, validate it's our server + if (!string.IsNullOrEmpty(wmicCombined) && wmicCombined.Contains("commandline=")) + { + bool mentionsMcp = wmicCompact.Contains("mcp-for-unity") + || wmicCompact.Contains("mcp_for_unity") + || wmicCompact.Contains("mcpforunity") + || wmicCompact.Contains("mcpforunityserver"); + bool mentionsTransport = wmicCompact.Contains("--transporthttp") || (wmicCompact.Contains("--transport") && wmicCompact.Contains("http")); + bool mentionsUvicorn = wmicCombined.Contains("uvicorn"); + + if (mentionsMcp || mentionsTransport || mentionsUvicorn) + { + return true; + } + } + + // Fall back to just checking for python/uv processes if wmic didn't give us details + // This is less precise but necessary for cases where wmic access is restricted + return isPythonOrUv; + } + + // macOS/Linux: ps -p pid -ww -o comm= -o args= + // Use -ww to avoid truncating long command lines (important for reliably spotting 'mcp-for-unity'). + // Use an absolute ps path to avoid relying on PATH inside the Unity Editor process. + string psPath = "/bin/ps"; + if (!File.Exists(psPath)) psPath = "ps"; + // Important: ExecPath.TryRun returns false when exit code != 0, but ps output can still be useful. + // Always parse stdout/stderr regardless of exit code to avoid false negatives. + ExecPath.TryRun(psPath, $"-p {pid} -ww -o comm= -o args=", Application.dataPath, out var psOut, out var psErr, 5000); + string raw = ((psOut ?? string.Empty) + "\n" + (psErr ?? string.Empty)).Trim(); + string s = raw.ToLowerInvariant(); + string sCompact = NormalizeForMatch(raw); + if (!string.IsNullOrEmpty(s)) + { + bool mentionsMcp = sCompact.Contains("mcp-for-unity") + || sCompact.Contains("mcp_for_unity") + || sCompact.Contains("mcpforunity"); + + // If it explicitly mentions the server package/entrypoint, that is sufficient. + // Note: Check before Unity exclusion since "mcp-for-unity" contains "unity". + if (mentionsMcp) + { + return true; + } + + // Explicitly never kill Unity / Unity Hub processes + // Note: explicit !mentionsMcp is defensive; we already return early for mentionsMcp above. + if (s.Contains("unityhub") || s.Contains("unity hub") || (s.Contains("unity") && !mentionsMcp)) + { + return false; + } + + // Positive indicators + bool mentionsUvx = s.Contains("uvx") || s.Contains(" uvx "); + bool mentionsUv = s.Contains("uv ") || s.Contains("/uv"); + bool mentionsPython = s.Contains("python"); + bool mentionsUvicorn = s.Contains("uvicorn"); + bool mentionsTransport = sCompact.Contains("--transporthttp") || (sCompact.Contains("--transport") && sCompact.Contains("http")); + + // Accept if it looks like uv/uvx/python launching our server package/entrypoint + if ((mentionsUvx || mentionsUv || mentionsPython || mentionsUvicorn) && mentionsTransport) + { + return true; + } + } + } + catch { } + + return false; + } + } +} diff --git a/Packages/MCPForUnity/Editor/Services/Server/ProcessDetector.cs.meta b/Packages/MCPForUnity/Editor/Services/Server/ProcessDetector.cs.meta new file mode 100644 index 00000000..6cd7c465 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/Server/ProcessDetector.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4df6fa24a35d74d1cb9b67e40e50b45d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/Server/ProcessTerminator.cs b/Packages/MCPForUnity/Editor/Services/Server/ProcessTerminator.cs new file mode 100644 index 00000000..7e803b11 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/Server/ProcessTerminator.cs @@ -0,0 +1,89 @@ +using System; +using System.IO; +using MCPForUnity.Editor.Helpers; +using UnityEngine; + +namespace MCPForUnity.Editor.Services.Server +{ + /// + /// Platform-specific process termination for stopping MCP server processes. + /// + public class ProcessTerminator : IProcessTerminator + { + private readonly IProcessDetector _processDetector; + + /// + /// Creates a new ProcessTerminator with the specified process detector. + /// + /// Process detector for checking process existence + public ProcessTerminator(IProcessDetector processDetector) + { + _processDetector = processDetector ?? throw new ArgumentNullException(nameof(processDetector)); + } + + /// + public bool Terminate(int pid) + { + // CRITICAL: Validate PID before any kill operation. + // On Unix, kill(-1) kills ALL processes the user can signal! + // On Unix, kill(0) signals all processes in the process group. + // PID 1 is init/launchd and must never be killed. + // Only positive PIDs > 1 are valid for targeted termination. + if (pid <= 1) + { + return false; + } + + // Never kill the current Unity process + int currentPid = _processDetector.GetCurrentProcessId(); + if (currentPid > 0 && pid == currentPid) + { + return false; + } + + try + { + string stdout, stderr; + if (Application.platform == RuntimePlatform.WindowsEditor) + { + // taskkill without /F first; fall back to /F if needed. + bool ok = ExecPath.TryRun("taskkill", $"/PID {pid} /T", Application.dataPath, out stdout, out stderr); + if (!ok) + { + ok = ExecPath.TryRun("taskkill", $"/F /PID {pid} /T", Application.dataPath, out stdout, out stderr); + } + return ok; + } + else + { + // Try a graceful termination first, then escalate if the process is still alive. + // Note: `kill -15` can succeed (exit 0) even if the process takes time to exit, + // so we verify and only escalate when needed. + string killPath = "/bin/kill"; + if (!File.Exists(killPath)) killPath = "kill"; + ExecPath.TryRun(killPath, $"-15 {pid}", Application.dataPath, out stdout, out stderr); + + // Wait briefly for graceful shutdown. + var deadline = DateTime.UtcNow + TimeSpan.FromSeconds(8); + while (DateTime.UtcNow < deadline) + { + if (!_processDetector.ProcessExists(pid)) + { + return true; + } + System.Threading.Thread.Sleep(100); + } + + // Escalate. + ExecPath.TryRun(killPath, $"-9 {pid}", Application.dataPath, out stdout, out stderr); + return !_processDetector.ProcessExists(pid); + } + } + catch (Exception ex) + { + McpLog.Error($"Error killing process {pid}: {ex.Message}"); + return false; + } + } + } +} diff --git a/Packages/MCPForUnity/Editor/Services/Server/ProcessTerminator.cs.meta b/Packages/MCPForUnity/Editor/Services/Server/ProcessTerminator.cs.meta new file mode 100644 index 00000000..7961fd89 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/Server/ProcessTerminator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 900df88b4d0844704af9cb47633d44a9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/Server/ServerCommandBuilder.cs b/Packages/MCPForUnity/Editor/Services/Server/ServerCommandBuilder.cs new file mode 100644 index 00000000..47b46755 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/Server/ServerCommandBuilder.cs @@ -0,0 +1,151 @@ +using System; +using System.IO; +using System.Linq; +using MCPForUnity.Editor.Constants; +using MCPForUnity.Editor.Helpers; +using MCPForUnity.Editor.Services; +using UnityEditor; +using UnityEngine; + +namespace MCPForUnity.Editor.Services.Server +{ + /// + /// Builds uvx/server command strings for starting the MCP HTTP server. + /// Handles platform-specific command construction. + /// + public class ServerCommandBuilder : IServerCommandBuilder + { + /// + public bool TryBuildCommand(out string fileName, out string arguments, out string displayCommand, out string error) + { + fileName = null; + arguments = null; + displayCommand = null; + error = null; + + bool useHttpTransport = EditorConfigurationCache.Instance.UseHttpTransport; + if (!useHttpTransport) + { + error = "HTTP transport is disabled. Enable it in the MCP For Unity window first."; + return false; + } + + string httpUrl = HttpEndpointUtility.GetLocalBaseUrl(); + if (!IsLocalUrl(httpUrl)) + { + error = $"The configured URL ({httpUrl}) is not a local address. Local server launch only works for localhost."; + return false; + } + + var (uvxPath, fromUrl, packageName) = AssetPathUtility.GetUvxCommandParts(); + if (string.IsNullOrEmpty(uvxPath)) + { + error = "uv is not installed or found in PATH. Install it or set an override in Advanced Settings."; + return false; + } + + // Use central helper that checks both DevModeForceServerRefresh AND local path detection. + // Note: --reinstall is not supported by uvx, use --no-cache --refresh instead + string devFlags = AssetPathUtility.ShouldForceUvxRefresh() ? "--no-cache --refresh " : string.Empty; + bool projectScopedTools = EditorPrefs.GetBool( + EditorPrefKeys.ProjectScopedToolsLocalHttp, + true + ); + string scopedFlag = projectScopedTools ? " --project-scoped-tools" : string.Empty; + + // Use centralized helper for beta server / prerelease args + string fromArgs = AssetPathUtility.GetBetaServerFromArgs(quoteFromPath: true); + + string args = string.IsNullOrEmpty(fromArgs) + ? $"{devFlags}{packageName} --transport http --http-url {httpUrl}{scopedFlag}" + : $"{devFlags}{fromArgs} {packageName} --transport http --http-url {httpUrl}{scopedFlag}"; + + fileName = uvxPath; + arguments = args; + displayCommand = $"{QuoteIfNeeded(uvxPath)} {args}"; + return true; + } + + /// + public string BuildUvPathFromUvx(string uvxPath) + { + if (string.IsNullOrWhiteSpace(uvxPath)) + { + return uvxPath; + } + + string directory = Path.GetDirectoryName(uvxPath); + string extension = Path.GetExtension(uvxPath); + string uvFileName = "uv" + extension; + + return string.IsNullOrEmpty(directory) + ? uvFileName + : Path.Combine(directory, uvFileName); + } + + /// + public string GetPlatformSpecificPathPrepend() + { + if (Application.platform == RuntimePlatform.OSXEditor) + { + return string.Join(Path.PathSeparator.ToString(), new[] + { + "/opt/homebrew/bin", + "/usr/local/bin", + "/usr/bin", + "/bin" + }); + } + + if (Application.platform == RuntimePlatform.LinuxEditor) + { + return string.Join(Path.PathSeparator.ToString(), new[] + { + "/usr/local/bin", + "/usr/bin", + "/bin" + }); + } + + if (Application.platform == RuntimePlatform.WindowsEditor) + { + string localAppData = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); + string programFiles = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles); + + return string.Join(Path.PathSeparator.ToString(), new[] + { + !string.IsNullOrEmpty(localAppData) ? Path.Combine(localAppData, "Programs", "uv") : null, + !string.IsNullOrEmpty(programFiles) ? Path.Combine(programFiles, "uv") : null + }.Where(p => !string.IsNullOrEmpty(p)).ToArray()); + } + + return null; + } + + /// + public string QuoteIfNeeded(string input) + { + if (string.IsNullOrEmpty(input)) return input; + return input.IndexOf(' ') >= 0 ? $"\"{input}\"" : input; + } + + /// + /// Check if a URL is local (localhost, 127.0.0.1, 0.0.0.0, ::1) + /// + private static bool IsLocalUrl(string url) + { + if (string.IsNullOrEmpty(url)) return false; + + try + { + var uri = new Uri(url); + string host = uri.Host.ToLower(); + return host == "localhost" || host == "127.0.0.1" || host == "0.0.0.0" || host == "::1"; + } + catch + { + return false; + } + } + } +} diff --git a/Packages/MCPForUnity/Editor/Services/Server/ServerCommandBuilder.cs.meta b/Packages/MCPForUnity/Editor/Services/Server/ServerCommandBuilder.cs.meta new file mode 100644 index 00000000..8a58c647 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/Server/ServerCommandBuilder.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: db917800a5c2948088ede8a5d230b56e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/Server/TerminalLauncher.cs b/Packages/MCPForUnity/Editor/Services/Server/TerminalLauncher.cs new file mode 100644 index 00000000..fd8bd5d3 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/Server/TerminalLauncher.cs @@ -0,0 +1,143 @@ +using System; +using System.IO; +using MCPForUnity.Editor.Helpers; +using UnityEngine; + +namespace MCPForUnity.Editor.Services.Server +{ + /// + /// Launches commands in platform-specific terminal windows. + /// Supports macOS Terminal, Windows cmd, and Linux terminal emulators. + /// + public class TerminalLauncher : ITerminalLauncher + { + /// + public string GetProjectRootPath() + { + try + { + // Application.dataPath is "...//Assets" + return Path.GetFullPath(Path.Combine(Application.dataPath, "..")); + } + catch + { + return Application.dataPath; + } + } + + /// + public System.Diagnostics.ProcessStartInfo CreateTerminalProcessStartInfo(string command) + { + if (string.IsNullOrWhiteSpace(command)) + throw new ArgumentException("Command cannot be empty", nameof(command)); + + command = command.Replace("\r", "").Replace("\n", ""); + +#if UNITY_EDITOR_OSX + // macOS: Avoid AppleScript (automation permission prompts). Use a .command script and open it. + string scriptsDir = Path.Combine(GetProjectRootPath(), "Library", "MCPForUnity", "TerminalScripts"); + Directory.CreateDirectory(scriptsDir); + string scriptPath = Path.Combine(scriptsDir, "mcp-terminal.command"); + File.WriteAllText( + scriptPath, + "#!/bin/bash\n" + + "set -e\n" + + "clear\n" + + $"{command}\n"); + ExecPath.TryRun("/bin/chmod", $"+x \"{scriptPath}\"", Application.dataPath, out _, out _, 3000); + return new System.Diagnostics.ProcessStartInfo + { + FileName = "/usr/bin/open", + Arguments = $"-a Terminal \"{scriptPath}\"", + UseShellExecute = false, + CreateNoWindow = true + }; +#elif UNITY_EDITOR_WIN + // Windows: Avoid brittle nested-quote escaping by writing a .cmd script and starting it in a new window. + string scriptsDir = Path.Combine(GetProjectRootPath(), "Library", "MCPForUnity", "TerminalScripts"); + Directory.CreateDirectory(scriptsDir); + string scriptPath = Path.Combine(scriptsDir, "mcp-terminal.cmd"); + File.WriteAllText( + scriptPath, + "@echo off\r\n" + + "cls\r\n" + + command + "\r\n"); + return new System.Diagnostics.ProcessStartInfo + { + FileName = "cmd.exe", + Arguments = $"/c start \"MCP Server\" cmd.exe /k \"{scriptPath}\"", + UseShellExecute = false, + CreateNoWindow = true + }; +#else + // Linux: Try common terminal emulators + // We use bash -c to execute the command, so we must properly quote/escape for bash + // Escape single quotes for the inner bash string + string escapedCommandLinux = command.Replace("'", "'\\''"); + // Wrap the command in single quotes for bash -c + string script = $"'{escapedCommandLinux}; exec bash'"; + // Escape double quotes for the outer Process argument string + string escapedScriptForArg = script.Replace("\"", "\\\""); + string bashCmdArgs = $"bash -c \"{escapedScriptForArg}\""; + + string[] terminals = { "gnome-terminal", "xterm", "konsole", "xfce4-terminal" }; + string terminalCmd = null; + + foreach (var term in terminals) + { + try + { + var which = System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo + { + FileName = "which", + Arguments = term, + UseShellExecute = false, + RedirectStandardOutput = true, + CreateNoWindow = true + }); + which.WaitForExit(5000); // Wait for up to 5 seconds, the command is typically instantaneous + if (which.ExitCode == 0) + { + terminalCmd = term; + break; + } + } + catch { } + } + + if (terminalCmd == null) + { + terminalCmd = "xterm"; // Fallback + } + + // Different terminals have different argument formats + string args; + if (terminalCmd == "gnome-terminal") + { + args = $"-- {bashCmdArgs}"; + } + else if (terminalCmd == "konsole") + { + args = $"-e {bashCmdArgs}"; + } + else if (terminalCmd == "xfce4-terminal") + { + // xfce4-terminal expects -e "command string" or -e command arg + args = $"--hold -e \"{bashCmdArgs.Replace("\"", "\\\"")}\""; + } + else // xterm and others + { + args = $"-hold -e {bashCmdArgs}"; + } + + return new System.Diagnostics.ProcessStartInfo + { + FileName = terminalCmd, + Arguments = args, + UseShellExecute = false, + CreateNoWindow = true + }; +#endif + } + } +} diff --git a/Packages/MCPForUnity/Editor/Services/Server/TerminalLauncher.cs.meta b/Packages/MCPForUnity/Editor/Services/Server/TerminalLauncher.cs.meta new file mode 100644 index 00000000..ec239f76 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/Server/TerminalLauncher.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d9693a18d706548b3aae28ea87f1ed08 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/ServerManagementService.cs b/Packages/MCPForUnity/Editor/Services/ServerManagementService.cs new file mode 100644 index 00000000..1df3384f --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/ServerManagementService.cs @@ -0,0 +1,876 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Net.Sockets; +using MCPForUnity.Editor.Constants; +using MCPForUnity.Editor.Helpers; +using MCPForUnity.Editor.Services.Server; +using UnityEditor; +using UnityEngine; + +namespace MCPForUnity.Editor.Services +{ + /// + /// Service for managing MCP server lifecycle + /// + public class ServerManagementService : IServerManagementService + { + private readonly IProcessDetector _processDetector; + private readonly IPidFileManager _pidFileManager; + private readonly IProcessTerminator _processTerminator; + private readonly IServerCommandBuilder _commandBuilder; + private readonly ITerminalLauncher _terminalLauncher; + + /// + /// Creates a new ServerManagementService with default dependencies. + /// + public ServerManagementService() : this(null, null, null, null, null) { } + + /// + /// Creates a new ServerManagementService with injected dependencies (for testing). + /// + /// Process detector implementation (null for default) + /// PID file manager implementation (null for default) + /// Process terminator implementation (null for default) + /// Server command builder implementation (null for default) + /// Terminal launcher implementation (null for default) + public ServerManagementService( + IProcessDetector processDetector, + IPidFileManager pidFileManager = null, + IProcessTerminator processTerminator = null, + IServerCommandBuilder commandBuilder = null, + ITerminalLauncher terminalLauncher = null) + { + _processDetector = processDetector ?? new ProcessDetector(); + _pidFileManager = pidFileManager ?? new PidFileManager(); + _processTerminator = processTerminator ?? new ProcessTerminator(_processDetector); + _commandBuilder = commandBuilder ?? new ServerCommandBuilder(); + _terminalLauncher = terminalLauncher ?? new TerminalLauncher(); + } + + private string QuoteIfNeeded(string s) + { + return _commandBuilder.QuoteIfNeeded(s); + } + + private string NormalizeForMatch(string s) + { + return _processDetector.NormalizeForMatch(s); + } + + private void ClearLocalServerPidTracking() + { + _pidFileManager.ClearTracking(); + } + + private void StoreLocalHttpServerHandshake(string pidFilePath, string instanceToken) + { + _pidFileManager.StoreHandshake(pidFilePath, instanceToken); + } + + private bool TryGetLocalHttpServerHandshake(out string pidFilePath, out string instanceToken) + { + return _pidFileManager.TryGetHandshake(out pidFilePath, out instanceToken); + } + + private string GetLocalHttpServerPidFilePath(int port) + { + return _pidFileManager.GetPidFilePath(port); + } + + private bool TryReadPidFromPidFile(string pidFilePath, out int pid) + { + return _pidFileManager.TryReadPid(pidFilePath, out pid); + } + + private bool TryProcessCommandLineContainsInstanceToken(int pid, string instanceToken, out bool containsToken) + { + containsToken = false; + if (pid <= 0 || string.IsNullOrEmpty(instanceToken)) + { + return false; + } + + try + { + string tokenNeedle = instanceToken.ToLowerInvariant(); + + if (Application.platform == RuntimePlatform.WindowsEditor) + { + // Query full command line so we can validate token (reduces PID reuse risk). + // Use CIM via PowerShell (wmic is deprecated). + string ps = $"(Get-CimInstance Win32_Process -Filter \\\"ProcessId={pid}\\\").CommandLine"; + bool ok = ExecPath.TryRun("powershell", $"-NoProfile -Command \"{ps}\"", Application.dataPath, out var stdout, out var stderr, 5000); + string combined = ((stdout ?? string.Empty) + "\n" + (stderr ?? string.Empty)).ToLowerInvariant(); + containsToken = combined.Contains(tokenNeedle); + return ok; + } + + if (TryGetUnixProcessArgs(pid, out var argsLowerNow)) + { + containsToken = argsLowerNow.Contains(NormalizeForMatch(tokenNeedle)); + return true; + } + } + catch { } + + return false; + } + + private string ComputeShortHash(string input) + { + return _pidFileManager.ComputeShortHash(input); + } + + private bool TryGetStoredLocalServerPid(int expectedPort, out int pid) + { + return _pidFileManager.TryGetStoredPid(expectedPort, out pid); + } + + private string GetStoredArgsHash() + { + return _pidFileManager.GetStoredArgsHash(); + } + + /// + /// Clear the local uvx cache for the MCP server package + /// + /// True if successful, false otherwise + public bool ClearUvxCache() + { + try + { + string uvxPath = MCPServiceLocator.Paths.GetUvxPath(); + string uvCommand = BuildUvPathFromUvx(uvxPath); + + // Get the package name + string packageName = "mcp-for-unity"; + + // Run uvx cache clean command + string args = $"cache clean {packageName}"; + + bool success; + string stdout; + string stderr; + + success = ExecuteUvCommand(uvCommand, args, out stdout, out stderr); + + if (success) + { + McpLog.Info($"uv cache cleared successfully: {stdout}"); + return true; + } + string combinedOutput = string.Join( + Environment.NewLine, + new[] { stderr, stdout }.Where(s => !string.IsNullOrWhiteSpace(s)).Select(s => s.Trim())); + + string lockHint = (!string.IsNullOrEmpty(combinedOutput) && + combinedOutput.IndexOf("currently in-use", StringComparison.OrdinalIgnoreCase) >= 0) + ? "Another uv process may be holding the cache lock; wait a moment and try again or clear with '--force' from a terminal." + : string.Empty; + + if (string.IsNullOrEmpty(combinedOutput)) + { + combinedOutput = "Command failed with no output. Ensure uv is installed, on PATH, or set an override in Advanced Settings."; + } + + McpLog.Error( + $"Failed to clear uv cache using '{uvCommand} {args}'. " + + $"Details: {combinedOutput}{(string.IsNullOrEmpty(lockHint) ? string.Empty : " Hint: " + lockHint)}"); + return false; + } + catch (Exception ex) + { + McpLog.Error($"Error clearing uv cache: {ex.Message}"); + return false; + } + } + + private bool ExecuteUvCommand(string uvCommand, string args, out string stdout, out string stderr) + { + stdout = null; + stderr = null; + + string uvxPath = MCPServiceLocator.Paths.GetUvxPath(); + string uvPath = BuildUvPathFromUvx(uvxPath); + + if (!string.Equals(uvCommand, uvPath, StringComparison.OrdinalIgnoreCase)) + { + return ExecPath.TryRun(uvCommand, args, Application.dataPath, out stdout, out stderr, 30000); + } + + string command = $"{uvPath} {args}"; + string extraPathPrepend = GetPlatformSpecificPathPrepend(); + + if (Application.platform == RuntimePlatform.WindowsEditor) + { + return ExecPath.TryRun("cmd.exe", $"/c {command}", Application.dataPath, out stdout, out stderr, 30000, extraPathPrepend); + } + + string shell = File.Exists("/bin/bash") ? "/bin/bash" : "/bin/sh"; + + if (!string.IsNullOrEmpty(shell) && File.Exists(shell)) + { + string escaped = command.Replace("\"", "\\\""); + return ExecPath.TryRun(shell, $"-lc \"{escaped}\"", Application.dataPath, out stdout, out stderr, 30000, extraPathPrepend); + } + + return ExecPath.TryRun(uvPath, args, Application.dataPath, out stdout, out stderr, 30000, extraPathPrepend); + } + + private string BuildUvPathFromUvx(string uvxPath) + { + return _commandBuilder.BuildUvPathFromUvx(uvxPath); + } + + private string GetPlatformSpecificPathPrepend() + { + return _commandBuilder.GetPlatformSpecificPathPrepend(); + } + + /// + /// Start the local HTTP server in a separate terminal window. + /// Stops any existing server on the port and clears the uvx cache first. + /// + public bool StartLocalHttpServer() + { + /// Clean stale Python build artifacts when using a local dev server path + AssetPathUtility.CleanLocalServerBuildArtifacts(); + + if (!TryGetLocalHttpServerCommandParts(out _, out _, out var displayCommand, out var error)) + { + EditorUtility.DisplayDialog( + "Cannot Start HTTP Server", + error ?? "The server command could not be constructed with the current settings.", + "OK"); + return false; + } + + // First, try to stop any existing server (quietly; we'll only warn if the port remains occupied). + StopLocalHttpServerInternal(quiet: true); + + // If the port is still occupied, don't start and explain why (avoid confusing "refusing to stop" warnings). + try + { + string httpUrl = HttpEndpointUtility.GetLocalBaseUrl(); + if (Uri.TryCreate(httpUrl, UriKind.Absolute, out var uri) && uri.Port > 0) + { + var remaining = GetListeningProcessIdsForPort(uri.Port); + if (remaining.Count > 0) + { + EditorUtility.DisplayDialog( + "Port In Use", + $"Cannot start the local HTTP server because port {uri.Port} is already in use by PID(s): " + + $"{string.Join(", ", remaining)}\n\n" + + "MCP For Unity will not terminate unrelated processes. Stop the owning process manually or change the HTTP URL.", + "OK"); + return false; + } + } + } + catch { } + + // Note: Dev mode cache-busting is handled by `uvx --no-cache --refresh` in the generated command. + + // Create a per-launch token + pidfile path so Stop can be deterministic without relying on port/PID heuristics. + string baseUrlForPid = HttpEndpointUtility.GetLocalBaseUrl(); + Uri.TryCreate(baseUrlForPid, UriKind.Absolute, out var uriForPid); + int portForPid = uriForPid?.Port ?? 0; + string instanceToken = Guid.NewGuid().ToString("N"); + string pidFilePath = portForPid > 0 ? GetLocalHttpServerPidFilePath(portForPid) : null; + + string launchCommand = displayCommand; + if (!string.IsNullOrEmpty(pidFilePath)) + { + launchCommand = $"{displayCommand} --pidfile {QuoteIfNeeded(pidFilePath)} --unity-instance-token {instanceToken}"; + } + + if (EditorUtility.DisplayDialog( + "Start Local HTTP Server", + $"This will start the MCP server in HTTP mode in a new terminal window:\n\n{launchCommand}\n\n" + + "Continue?", + "Start Server", + "Cancel")) + { + try + { + // Clear any stale handshake state from prior launches. + ClearLocalServerPidTracking(); + + // Best-effort: delete stale pidfile if it exists. + try + { + if (!string.IsNullOrEmpty(pidFilePath) && File.Exists(pidFilePath)) + { + DeletePidFile(pidFilePath); + } + } + catch { } + + // Launch the server in a new terminal window (keeps user-visible logs). + var startInfo = CreateTerminalProcessStartInfo(launchCommand); + System.Diagnostics.Process.Start(startInfo); + if (!string.IsNullOrEmpty(pidFilePath)) + { + StoreLocalHttpServerHandshake(pidFilePath, instanceToken); + } + McpLog.Info($"Started local HTTP server in terminal: {launchCommand}"); + return true; + } + catch (Exception ex) + { + McpLog.Error($"Failed to start server: {ex.Message}"); + EditorUtility.DisplayDialog( + "Error", + $"Failed to start server: {ex.Message}", + "OK"); + return false; + } + } + + return false; + } + + /// + /// Stop the local HTTP server by finding the process listening on the configured port + /// + public bool StopLocalHttpServer() + { + return StopLocalHttpServerInternal(quiet: false); + } + + public bool StopManagedLocalHttpServer() + { + if (!TryGetLocalHttpServerHandshake(out var pidFilePath, out _)) + { + return false; + } + + int port = 0; + if (!TryGetPortFromPidFilePath(pidFilePath, out port) || port <= 0) + { + string baseUrl = HttpEndpointUtility.GetLocalBaseUrl(); + if (IsLocalUrl(baseUrl) + && Uri.TryCreate(baseUrl, UriKind.Absolute, out var uri) + && uri.Port > 0) + { + port = uri.Port; + } + } + + if (port <= 0) + { + return false; + } + + return StopLocalHttpServerInternal(quiet: true, portOverride: port, allowNonLocalUrl: true); + } + + public bool IsLocalHttpServerRunning() + { + try + { + string httpUrl = HttpEndpointUtility.GetLocalBaseUrl(); + if (!IsLocalUrl(httpUrl)) + { + return false; + } + + if (!Uri.TryCreate(httpUrl, UriKind.Absolute, out var uri) || uri.Port <= 0) + { + return false; + } + + int port = uri.Port; + + // Handshake path: if we have a pidfile+token and the PID is still the listener, treat as running. + if (TryGetLocalHttpServerHandshake(out var pidFilePath, out var instanceToken) + && TryReadPidFromPidFile(pidFilePath, out var pidFromFile) + && pidFromFile > 0) + { + var pidsNow = GetListeningProcessIdsForPort(port); + if (pidsNow.Contains(pidFromFile)) + { + return true; + } + } + + var pids = GetListeningProcessIdsForPort(port); + if (pids.Count == 0) + { + return false; + } + + // Strong signal: stored PID is still the listener. + if (TryGetStoredLocalServerPid(port, out int storedPid) && storedPid > 0) + { + if (pids.Contains(storedPid)) + { + return true; + } + } + + // Best-effort: if anything listening looks like our server, treat as running. + foreach (var pid in pids) + { + if (pid <= 0) continue; + if (LooksLikeMcpServerProcess(pid)) + { + return true; + } + } + + return false; + } + catch + { + return false; + } + } + + public bool IsLocalHttpServerReachable() + { + try + { + string httpUrl = HttpEndpointUtility.GetLocalBaseUrl(); + if (!IsLocalUrl(httpUrl)) + { + return false; + } + + if (!Uri.TryCreate(httpUrl, UriKind.Absolute, out var uri) || uri.Port <= 0) + { + return false; + } + + return TryConnectToLocalPort(uri.Host, uri.Port, timeoutMs: 50); + } + catch + { + return false; + } + } + + private static bool TryConnectToLocalPort(string host, int port, int timeoutMs) + { + try + { + if (string.IsNullOrEmpty(host)) + { + host = "127.0.0.1"; + } + + var hosts = new HashSet(StringComparer.OrdinalIgnoreCase) { host }; + if (host == "localhost" || host == "0.0.0.0") + { + hosts.Add("127.0.0.1"); + } + if (host == "::" || host == "0:0:0:0:0:0:0:0") + { + hosts.Add("::1"); + } + + foreach (var target in hosts) + { + try + { + using (var client = new TcpClient()) + { + var connectTask = client.ConnectAsync(target, port); + if (connectTask.Wait(timeoutMs) && client.Connected) + { + return true; + } + } + } + catch + { + // Ignore per-host failures. + } + } + } + catch + { + // Ignore probe failures and treat as unreachable. + } + + return false; + } + + private bool StopLocalHttpServerInternal(bool quiet, int? portOverride = null, bool allowNonLocalUrl = false) + { + string httpUrl = HttpEndpointUtility.GetLocalBaseUrl(); + if (!allowNonLocalUrl && !IsLocalUrl(httpUrl)) + { + if (!quiet) + { + McpLog.Warn("Cannot stop server: URL is not local."); + } + return false; + } + + try + { + int port = 0; + if (portOverride.HasValue) + { + port = portOverride.Value; + } + else + { + var uri = new Uri(httpUrl); + port = uri.Port; + } + + if (port <= 0) + { + if (!quiet) + { + McpLog.Warn("Cannot stop server: Invalid port."); + } + return false; + } + + // Guardrails: + // - Never terminate the Unity Editor process. + // - Only terminate processes that look like the MCP server (uv/uvx/python running mcp-for-unity). + // This prevents accidental termination of unrelated services (including Unity itself). + int unityPid = GetCurrentProcessIdSafe(); + bool stoppedAny = false; + + // Preferred deterministic stop path: if we have a pidfile+token from a Unity-managed launch, + // validate and terminate exactly that PID. + if (TryGetLocalHttpServerHandshake(out var pidFilePath, out var instanceToken)) + { + // Prefer deterministic stop when Unity started the server (pidfile+token). + // If the pidfile isn't available yet (fast quit after start), we can optionally fall back + // to port-based heuristics when a port override was supplied (managed-stop path). + if (!TryReadPidFromPidFile(pidFilePath, out var pidFromFile) || pidFromFile <= 0) + { + if (!portOverride.HasValue) + { + if (!quiet) + { + McpLog.Warn( + $"Cannot stop local HTTP server on port {port}: pidfile not available yet at '{pidFilePath}'. " + + "If you just started the server, wait a moment and try again."); + } + return false; + } + + // Managed-stop fallback: proceed with port-based heuristics below. + // We intentionally do NOT clear handshake state here; it will be cleared if we successfully + // stop a server process and/or the port is freed. + } + else + { + // Never kill Unity/Hub. + if (unityPid > 0 && pidFromFile == unityPid) + { + if (!quiet) + { + McpLog.Warn($"Refusing to stop port {port}: pidfile PID {pidFromFile} is the Unity Editor process."); + } + } + else + { + var listeners = GetListeningProcessIdsForPort(port); + if (listeners.Count == 0) + { + // Nothing is listening anymore; clear stale handshake state. + try { DeletePidFile(pidFilePath); } catch { } + ClearLocalServerPidTracking(); + if (!quiet) + { + McpLog.Info($"No process found listening on port {port}"); + } + return false; + } + bool pidIsListener = listeners.Contains(pidFromFile); + bool tokenQueryOk = TryProcessCommandLineContainsInstanceToken(pidFromFile, instanceToken, out bool tokenMatches); + bool allowKill; + if (tokenQueryOk) + { + allowKill = tokenMatches; + } + else + { + // If token validation is unavailable (e.g. Windows CIM permission issues), + // fall back to a stricter heuristic: only allow stop if the PID still looks like our server. + allowKill = LooksLikeMcpServerProcess(pidFromFile); + } + + if (pidIsListener && allowKill) + { + if (TerminateProcess(pidFromFile)) + { + stoppedAny = true; + try { DeletePidFile(pidFilePath); } catch { } + ClearLocalServerPidTracking(); + if (!quiet) + { + McpLog.Info($"Stopped local HTTP server on port {port} (PID: {pidFromFile})"); + } + return true; + } + if (!quiet) + { + McpLog.Warn($"Failed to terminate local HTTP server on port {port} (PID: {pidFromFile})."); + } + return false; + } + if (!quiet) + { + McpLog.Warn( + $"Refusing to stop port {port}: pidfile PID {pidFromFile} failed validation " + + $"(listener={pidIsListener}, tokenMatch={tokenMatches}, tokenQueryOk={tokenQueryOk})."); + } + return false; + } + } + } + + var pids = GetListeningProcessIdsForPort(port); + if (pids.Count == 0) + { + if (stoppedAny) + { + // We stopped what Unity started; the port is now free. + if (!quiet) + { + McpLog.Info($"Stopped local HTTP server on port {port}"); + } + ClearLocalServerPidTracking(); + return true; + } + + if (!quiet) + { + McpLog.Info($"No process found listening on port {port}"); + } + ClearLocalServerPidTracking(); + return false; + } + + // Prefer killing the PID that we previously observed binding this port (if still valid). + if (TryGetStoredLocalServerPid(port, out int storedPid)) + { + if (pids.Contains(storedPid)) + { + string expectedHash = string.Empty; + expectedHash = GetStoredArgsHash(); + + // Prefer a fingerprint match (reduces PID reuse risk). If missing (older installs), + // fall back to a looser check to avoid leaving orphaned servers after domain reload. + if (TryGetUnixProcessArgs(storedPid, out var storedArgsLowerNow)) + { + // Never kill Unity/Hub. + // Note: "mcp-for-unity" includes "unity", so detect MCP indicators first. + bool storedMentionsMcp = storedArgsLowerNow.Contains("mcp-for-unity") + || storedArgsLowerNow.Contains("mcp_for_unity") + || storedArgsLowerNow.Contains("mcpforunity"); + if (storedArgsLowerNow.Contains("unityhub") + || storedArgsLowerNow.Contains("unity hub") + || (storedArgsLowerNow.Contains("unity") && !storedMentionsMcp)) + { + if (!quiet) + { + McpLog.Warn($"Refusing to stop port {port}: stored PID {storedPid} appears to be a Unity process."); + } + } + else + { + bool allowKill = false; + if (!string.IsNullOrEmpty(expectedHash)) + { + allowKill = string.Equals(expectedHash, ComputeShortHash(storedArgsLowerNow), StringComparison.OrdinalIgnoreCase); + } + else + { + // Older versions didn't store a fingerprint; accept common server indicators. + allowKill = storedArgsLowerNow.Contains("uvicorn") + || storedArgsLowerNow.Contains("fastmcp") + || storedArgsLowerNow.Contains("mcpforunity") + || storedArgsLowerNow.Contains("mcp-for-unity") + || storedArgsLowerNow.Contains("mcp_for_unity") + || storedArgsLowerNow.Contains("uvx") + || storedArgsLowerNow.Contains("python"); + } + + if (allowKill && TerminateProcess(storedPid)) + { + if (!quiet) + { + McpLog.Info($"Stopped local HTTP server on port {port} (PID: {storedPid})"); + } + stoppedAny = true; + ClearLocalServerPidTracking(); + // Refresh the PID list to avoid double-work. + pids = GetListeningProcessIdsForPort(port); + } + else if (!allowKill && !quiet) + { + McpLog.Warn($"Refusing to stop port {port}: stored PID {storedPid} did not match expected server fingerprint."); + } + } + } + } + else + { + // Stale PID (no longer listening). Clear. + ClearLocalServerPidTracking(); + } + } + + foreach (var pid in pids) + { + if (pid <= 0) continue; + if (unityPid > 0 && pid == unityPid) + { + if (!quiet) + { + McpLog.Warn($"Refusing to stop port {port}: owning PID appears to be the Unity Editor process (PID {pid})."); + } + continue; + } + + if (!LooksLikeMcpServerProcess(pid)) + { + if (!quiet) + { + McpLog.Warn($"Refusing to stop port {port}: owning PID {pid} does not look like mcp-for-unity."); + } + continue; + } + + if (TerminateProcess(pid)) + { + McpLog.Info($"Stopped local HTTP server on port {port} (PID: {pid})"); + stoppedAny = true; + } + else + { + if (!quiet) + { + McpLog.Warn($"Failed to stop process PID {pid} on port {port}"); + } + } + } + + if (stoppedAny) + { + ClearLocalServerPidTracking(); + } + return stoppedAny; + } + catch (Exception ex) + { + if (!quiet) + { + McpLog.Error($"Failed to stop server: {ex.Message}"); + } + return false; + } + } + + private bool TryGetUnixProcessArgs(int pid, out string argsLower) + { + return _processDetector.TryGetProcessCommandLine(pid, out argsLower); + } + + private bool TryGetPortFromPidFilePath(string pidFilePath, out int port) + { + return _pidFileManager.TryGetPortFromPidFilePath(pidFilePath, out port); + } + + private void DeletePidFile(string pidFilePath) + { + _pidFileManager.DeletePidFile(pidFilePath); + } + + private List GetListeningProcessIdsForPort(int port) + { + return _processDetector.GetListeningProcessIdsForPort(port); + } + + private int GetCurrentProcessIdSafe() + { + return _processDetector.GetCurrentProcessId(); + } + + private bool LooksLikeMcpServerProcess(int pid) + { + return _processDetector.LooksLikeMcpServerProcess(pid); + } + + private bool TerminateProcess(int pid) + { + return _processTerminator.Terminate(pid); + } + + /// + /// Attempts to build the command used for starting the local HTTP server + /// + public bool TryGetLocalHttpServerCommand(out string command, out string error) + { + command = null; + error = null; + if (!TryGetLocalHttpServerCommandParts(out var fileName, out var args, out var displayCommand, out error)) + { + return false; + } + + // Maintain existing behavior: return a single command string suitable for display/copy. + command = displayCommand; + return true; + } + + private bool TryGetLocalHttpServerCommandParts(out string fileName, out string arguments, out string displayCommand, out string error) + { + return _commandBuilder.TryBuildCommand(out fileName, out arguments, out displayCommand, out error); + } + + /// + /// Check if the configured HTTP URL is a local address + /// + public bool IsLocalUrl() + { + string httpUrl = HttpEndpointUtility.GetLocalBaseUrl(); + return IsLocalUrl(httpUrl); + } + + /// + /// Check if a URL is local (localhost, 127.0.0.1, 0.0.0.0) + /// + private static bool IsLocalUrl(string url) + { + if (string.IsNullOrEmpty(url)) return false; + + try + { + var uri = new Uri(url); + string host = uri.Host.ToLower(); + return host == "localhost" || host == "127.0.0.1" || host == "0.0.0.0" || host == "::1"; + } + catch + { + return false; + } + } + + /// + /// Check if the local HTTP server can be started + /// + public bool CanStartLocalServer() + { + bool useHttpTransport = EditorConfigurationCache.Instance.UseHttpTransport; + return useHttpTransport && IsLocalUrl(); + } + + private System.Diagnostics.ProcessStartInfo CreateTerminalProcessStartInfo(string command) + { + return _terminalLauncher.CreateTerminalProcessStartInfo(command); + } + } +} diff --git a/Packages/MCPForUnity/Editor/Services/ServerManagementService.cs.meta b/Packages/MCPForUnity/Editor/Services/ServerManagementService.cs.meta new file mode 100644 index 00000000..8b0fea06 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/ServerManagementService.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8e60df35c5a76462d8aaa8078da86d75 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/StdioBridgeReloadHandler.cs b/Packages/MCPForUnity/Editor/Services/StdioBridgeReloadHandler.cs new file mode 100644 index 00000000..a7c5f39d --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/StdioBridgeReloadHandler.cs @@ -0,0 +1,116 @@ +using System; +using MCPForUnity.Editor.Constants; +using MCPForUnity.Editor.Helpers; +using MCPForUnity.Editor.Services.Transport; +using MCPForUnity.Editor.Services.Transport.Transports; +using UnityEditor; + +namespace MCPForUnity.Editor.Services +{ + /// + /// Ensures the legacy stdio bridge resumes after domain reloads, mirroring the HTTP handler. + /// + [InitializeOnLoad] + internal static class StdioBridgeReloadHandler + { + static StdioBridgeReloadHandler() + { + AssemblyReloadEvents.beforeAssemblyReload += OnBeforeAssemblyReload; + AssemblyReloadEvents.afterAssemblyReload += OnAfterAssemblyReload; + } + + private static void OnBeforeAssemblyReload() + { + try + { + // Only persist resume intent when stdio is the active transport and the bridge is running. + bool useHttp = EditorConfigurationCache.Instance.UseHttpTransport; + // Check both TransportManager AND StdioBridgeHost directly, because CI starts via StdioBridgeHost + // bypassing TransportManager state. + bool tmRunning = MCPServiceLocator.TransportManager.IsRunning(TransportMode.Stdio); + bool hostRunning = StdioBridgeHost.IsRunning; + bool isRunning = tmRunning || hostRunning; + bool shouldResume = !useHttp && isRunning; + + if (shouldResume) + { + EditorPrefs.SetBool(EditorPrefKeys.ResumeStdioAfterReload, true); + + // Stop only the stdio bridge; leave HTTP untouched if it is running concurrently. + var stopTask = MCPServiceLocator.TransportManager.StopAsync(TransportMode.Stdio); + + // Wait for stop to complete (which deletes the status file) + try { stopTask.Wait(500); } catch { } + + // Write reloading status so clients don't think we vanished + StdioBridgeHost.WriteHeartbeat(true, "reloading"); + } + else + { + EditorPrefs.DeleteKey(EditorPrefKeys.ResumeStdioAfterReload); + } + } + catch (Exception ex) + { + McpLog.Warn($"Failed to persist stdio reload flag: {ex.Message}"); + } + } + + private static void OnAfterAssemblyReload() + { + bool resume = false; + try + { + bool resumeFlag = EditorPrefs.GetBool(EditorPrefKeys.ResumeStdioAfterReload, false); + bool useHttp = EditorConfigurationCache.Instance.UseHttpTransport; + resume = resumeFlag && !useHttp; + + // If we're not going to resume, clear the flag immediately to avoid stuck "Resuming..." state + if (!resume) + { + EditorPrefs.DeleteKey(EditorPrefKeys.ResumeStdioAfterReload); + } + } + catch (Exception ex) + { + McpLog.Warn($"Failed to read stdio reload flag: {ex.Message}"); + } + + if (!resume) + { + return; + } + + // Restart via TransportManager so state stays in sync; if it fails (port busy), rely on UI to retry. + TryStartBridgeImmediate(); + } + + private static void TryStartBridgeImmediate() + { + var startTask = MCPServiceLocator.TransportManager.StartAsync(TransportMode.Stdio); + startTask.ContinueWith(t => + { + // Clear the flag after attempting to start (success or failure). + // This prevents getting stuck in "Resuming..." state. + // We do this synchronously on the continuation thread - it's safe because + // EditorPrefs operations are thread-safe and any new reload will set the flag + // fresh in OnBeforeAssemblyReload before we get here. + try { EditorPrefs.DeleteKey(EditorPrefKeys.ResumeStdioAfterReload); } catch { } + + if (t.IsFaulted) + { + var baseEx = t.Exception?.GetBaseException(); + McpLog.Warn($"Failed to resume stdio bridge after reload: {baseEx?.Message}"); + return; + } + if (!t.Result) + { + McpLog.Warn("Failed to resume stdio bridge after domain reload"); + return; + } + + MCPForUnity.Editor.Windows.MCPForUnityEditorWindow.RequestHealthVerification(); + }, System.Threading.Tasks.TaskScheduler.Default); + } + } +} diff --git a/Packages/MCPForUnity/Editor/Services/StdioBridgeReloadHandler.cs.meta b/Packages/MCPForUnity/Editor/Services/StdioBridgeReloadHandler.cs.meta new file mode 100644 index 00000000..d4e43fa9 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/StdioBridgeReloadHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6e603c72a87974cf5b495cd683165fbf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/TestJobManager.cs b/Packages/MCPForUnity/Editor/Services/TestJobManager.cs new file mode 100644 index 00000000..bf2ffec4 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/TestJobManager.cs @@ -0,0 +1,673 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using MCPForUnity.Editor.Helpers; +using Newtonsoft.Json; +using UnityEditor; +using UnityEditorInternal; +using UnityEditor.TestTools.TestRunner.Api; + +namespace MCPForUnity.Editor.Services +{ + internal enum TestJobStatus + { + Running, + Succeeded, + Failed + } + + internal sealed class TestJobFailure + { + public string FullName { get; set; } + public string Message { get; set; } + } + + internal sealed class TestJob + { + public string JobId { get; set; } + public TestJobStatus Status { get; set; } + public string Mode { get; set; } + public long StartedUnixMs { get; set; } + public long? FinishedUnixMs { get; set; } + public long LastUpdateUnixMs { get; set; } + public int? TotalTests { get; set; } + public int CompletedTests { get; set; } + public string CurrentTestFullName { get; set; } + public long? CurrentTestStartedUnixMs { get; set; } + public string LastFinishedTestFullName { get; set; } + public long? LastFinishedUnixMs { get; set; } + public List FailuresSoFar { get; set; } + public string Error { get; set; } + public TestRunResult Result { get; set; } + } + + /// + /// Tracks async test jobs started via MCP tools. This is not intended to capture manual Test Runner UI runs. + /// + internal static class TestJobManager + { + // Keep this small to avoid ballooning payloads during polling. + private const int FailureCap = 25; + private const long StuckThresholdMs = 60_000; + private const long InitializationTimeoutMs = 15_000; // 15 seconds to call OnRunStarted, else fail + private const int MaxJobsToKeep = 10; + private const long MinPersistIntervalMs = 1000; // Throttle persistence to reduce overhead + + // SessionState survives domain reloads within the same Unity Editor session. + private const string SessionKeyJobs = "MCPForUnity.TestJobsV1"; + private const string SessionKeyCurrentJobId = "MCPForUnity.CurrentTestJobIdV1"; + + private static readonly object LockObj = new(); + private static readonly Dictionary Jobs = new(); + private static string _currentJobId; + private static long _lastPersistUnixMs; + + static TestJobManager() + { + // Restore after domain reloads (e.g., compilation while a job is running). + TryRestoreFromSessionState(); + } + + public static string CurrentJobId + { + get { lock (LockObj) return _currentJobId; } + } + + public static bool HasRunningJob + { + get + { + lock (LockObj) + { + return !string.IsNullOrEmpty(_currentJobId); + } + } + } + + /// + /// Force-clears any stuck or orphaned test job. Call this when tests get stuck due to + /// assembly reloads or other interruptions. + /// + /// True if a job was cleared, false if no running job exists. + public static bool ClearStuckJob() + { + bool cleared = false; + lock (LockObj) + { + if (string.IsNullOrEmpty(_currentJobId)) + { + return false; + } + + if (Jobs.TryGetValue(_currentJobId, out var job) && job.Status == TestJobStatus.Running) + { + long now = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); + job.Status = TestJobStatus.Failed; + job.Error = "Job cleared manually (stuck or orphaned)"; + job.FinishedUnixMs = now; + job.LastUpdateUnixMs = now; + McpLog.Warn($"[TestJobManager] Manually cleared stuck job {_currentJobId}"); + cleared = true; + } + + _currentJobId = null; + } + PersistToSessionState(force: true); + return cleared; + } + + private sealed class PersistedState + { + public string current_job_id { get; set; } + public List jobs { get; set; } + } + + private sealed class PersistedJob + { + public string job_id { get; set; } + public string status { get; set; } + public string mode { get; set; } + public long started_unix_ms { get; set; } + public long? finished_unix_ms { get; set; } + public long last_update_unix_ms { get; set; } + public int? total_tests { get; set; } + public int completed_tests { get; set; } + public string current_test_full_name { get; set; } + public long? current_test_started_unix_ms { get; set; } + public string last_finished_test_full_name { get; set; } + public long? last_finished_unix_ms { get; set; } + public List failures_so_far { get; set; } + public string error { get; set; } + } + + private static TestJobStatus ParseStatus(string status) + { + if (string.IsNullOrWhiteSpace(status)) + { + return TestJobStatus.Running; + } + + string s = status.Trim().ToLowerInvariant(); + return s switch + { + "succeeded" => TestJobStatus.Succeeded, + "failed" => TestJobStatus.Failed, + _ => TestJobStatus.Running + }; + } + + private static void TryRestoreFromSessionState() + { + try + { + string json = SessionState.GetString(SessionKeyJobs, string.Empty); + if (string.IsNullOrWhiteSpace(json)) + { + var legacy = SessionState.GetString(SessionKeyCurrentJobId, string.Empty); + _currentJobId = string.IsNullOrWhiteSpace(legacy) ? null : legacy; + return; + } + + var state = JsonConvert.DeserializeObject(json); + if (state?.jobs == null) + { + return; + } + + lock (LockObj) + { + Jobs.Clear(); + foreach (var pj in state.jobs) + { + if (pj == null || string.IsNullOrWhiteSpace(pj.job_id)) + { + continue; + } + + Jobs[pj.job_id] = new TestJob + { + JobId = pj.job_id, + Status = ParseStatus(pj.status), + Mode = pj.mode, + StartedUnixMs = pj.started_unix_ms, + FinishedUnixMs = pj.finished_unix_ms, + LastUpdateUnixMs = pj.last_update_unix_ms, + TotalTests = pj.total_tests, + CompletedTests = pj.completed_tests, + CurrentTestFullName = pj.current_test_full_name, + CurrentTestStartedUnixMs = pj.current_test_started_unix_ms, + LastFinishedTestFullName = pj.last_finished_test_full_name, + LastFinishedUnixMs = pj.last_finished_unix_ms, + FailuresSoFar = pj.failures_so_far ?? new List(), + Error = pj.error, + // Intentionally not persisted to avoid ballooning SessionState. + Result = null + }; + } + + _currentJobId = string.IsNullOrWhiteSpace(state.current_job_id) ? null : state.current_job_id; + if (!string.IsNullOrEmpty(_currentJobId) && !Jobs.ContainsKey(_currentJobId)) + { + _currentJobId = null; + } + + // Detect and clean up stale "running" jobs that were orphaned by domain reload. + // After a domain reload, TestRunStatus resets to not-running, but _currentJobId + // may still be set. If the job hasn't been updated recently, it's likely orphaned. + if (!string.IsNullOrEmpty(_currentJobId) && Jobs.TryGetValue(_currentJobId, out var currentJob)) + { + if (currentJob.Status == TestJobStatus.Running) + { + long now = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); + long staleCutoffMs = 5 * 60 * 1000; // 5 minutes + if (now - currentJob.LastUpdateUnixMs > staleCutoffMs) + { + McpLog.Warn($"[TestJobManager] Clearing stale job {_currentJobId} (last update {(now - currentJob.LastUpdateUnixMs) / 1000}s ago)"); + currentJob.Status = TestJobStatus.Failed; + currentJob.Error = "Job orphaned after domain reload"; + currentJob.FinishedUnixMs = now; + _currentJobId = null; + } + } + } + } + } + catch (Exception ex) + { + // Restoration is best-effort; never block editor load. + McpLog.Warn($"[TestJobManager] Failed to restore SessionState: {ex.Message}"); + } + } + + private static void PersistToSessionState(bool force = false) + { + long now = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); + + // Throttle non-critical updates to reduce overhead during large test runs + if (!force && (now - _lastPersistUnixMs) < MinPersistIntervalMs) + { + return; + } + + try + { + PersistedState snapshot; + lock (LockObj) + { + var jobs = Jobs.Values + .OrderByDescending(j => j.LastUpdateUnixMs) + .Take(MaxJobsToKeep) + .Select(j => new PersistedJob + { + job_id = j.JobId, + status = j.Status.ToString().ToLowerInvariant(), + mode = j.Mode, + started_unix_ms = j.StartedUnixMs, + finished_unix_ms = j.FinishedUnixMs, + last_update_unix_ms = j.LastUpdateUnixMs, + total_tests = j.TotalTests, + completed_tests = j.CompletedTests, + current_test_full_name = j.CurrentTestFullName, + current_test_started_unix_ms = j.CurrentTestStartedUnixMs, + last_finished_test_full_name = j.LastFinishedTestFullName, + last_finished_unix_ms = j.LastFinishedUnixMs, + failures_so_far = (j.FailuresSoFar ?? new List()).Take(FailureCap).ToList(), + error = j.Error + }) + .ToList(); + + snapshot = new PersistedState + { + current_job_id = _currentJobId, + jobs = jobs + }; + } + + SessionState.SetString(SessionKeyCurrentJobId, snapshot.current_job_id ?? string.Empty); + SessionState.SetString(SessionKeyJobs, JsonConvert.SerializeObject(snapshot)); + _lastPersistUnixMs = now; + } + catch (Exception ex) + { + McpLog.Warn($"[TestJobManager] Failed to persist SessionState: {ex.Message}"); + } + } + + public static string StartJob(TestMode mode, TestFilterOptions filterOptions = null) + { + string jobId = Guid.NewGuid().ToString("N"); + long started = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); + string modeStr = mode.ToString(); + + var job = new TestJob + { + JobId = jobId, + Status = TestJobStatus.Running, + Mode = modeStr, + StartedUnixMs = started, + FinishedUnixMs = null, + LastUpdateUnixMs = started, + TotalTests = null, + CompletedTests = 0, + CurrentTestFullName = null, + CurrentTestStartedUnixMs = null, + LastFinishedTestFullName = null, + LastFinishedUnixMs = null, + FailuresSoFar = new List(), + Error = null, + Result = null + }; + + // Single lock scope for check-and-set to avoid TOCTOU race + lock (LockObj) + { + if (!string.IsNullOrEmpty(_currentJobId)) + { + throw new InvalidOperationException("A Unity test run is already in progress."); + } + Jobs[jobId] = job; + _currentJobId = jobId; + } + PersistToSessionState(force: true); + + // Kick the run (must be called on main thread; our command handlers already run there). + Task task = MCPServiceLocator.Tests.RunTestsAsync(mode, filterOptions); + + void FinalizeJob(Action finalize) + { + // Ensure state mutation happens on main thread to avoid Unity API surprises. + EditorApplication.delayCall += () => + { + try { finalize(); } + catch (Exception ex) { McpLog.Error($"[TestJobManager] Finalize failed: {ex.Message}\n{ex.StackTrace}"); } + }; + } + + task.ContinueWith(t => + { + // NOTE: We now finalize jobs deterministically from the TestRunnerService RunFinished callback. + // This continuation is retained as a safety net in case RunFinished is not delivered. + FinalizeJob(() => FinalizeFromTask(jobId, t)); + }, TaskScheduler.Default); + + return jobId; + } + + public static void FinalizeCurrentJobFromRunFinished(TestRunResult resultPayload) + { + long now = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); + lock (LockObj) + { + if (string.IsNullOrEmpty(_currentJobId) || !Jobs.TryGetValue(_currentJobId, out var job)) + { + return; + } + + job.LastUpdateUnixMs = now; + job.FinishedUnixMs = now; + job.Status = resultPayload != null && resultPayload.Failed > 0 + ? TestJobStatus.Failed + : TestJobStatus.Succeeded; + job.Error = null; + job.Result = resultPayload; + job.CurrentTestFullName = null; + _currentJobId = null; + } + PersistToSessionState(force: true); + } + + public static void OnRunStarted(int? totalTests) + { + long now = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); + lock (LockObj) + { + if (string.IsNullOrEmpty(_currentJobId) || !Jobs.TryGetValue(_currentJobId, out var job)) + { + return; + } + + job.LastUpdateUnixMs = now; + job.TotalTests = totalTests; + job.CompletedTests = 0; + job.CurrentTestFullName = null; + job.CurrentTestStartedUnixMs = null; + job.LastFinishedTestFullName = null; + job.LastFinishedUnixMs = null; + job.FailuresSoFar ??= new List(); + job.FailuresSoFar.Clear(); + } + PersistToSessionState(force: true); + } + + public static void OnTestStarted(string testFullName) + { + if (string.IsNullOrWhiteSpace(testFullName)) + { + return; + } + + long now = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); + lock (LockObj) + { + if (string.IsNullOrEmpty(_currentJobId) || !Jobs.TryGetValue(_currentJobId, out var job)) + { + return; + } + + job.LastUpdateUnixMs = now; + job.CurrentTestFullName = testFullName; + job.CurrentTestStartedUnixMs = now; + } + PersistToSessionState(); + } + + public static void OnLeafTestFinished(string testFullName, bool isFailure, string message) + { + long now = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); + lock (LockObj) + { + if (string.IsNullOrEmpty(_currentJobId) || !Jobs.TryGetValue(_currentJobId, out var job)) + { + return; + } + + job.LastUpdateUnixMs = now; + job.CompletedTests = Math.Max(0, job.CompletedTests + 1); + job.LastFinishedTestFullName = testFullName; + job.LastFinishedUnixMs = now; + + if (isFailure) + { + job.FailuresSoFar ??= new List(); + if (job.FailuresSoFar.Count < FailureCap) + { + job.FailuresSoFar.Add(new TestJobFailure + { + FullName = testFullName, + Message = string.IsNullOrWhiteSpace(message) ? "Test failed" : message + }); + } + } + } + PersistToSessionState(); + } + + public static void OnRunFinished() + { + long now = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); + lock (LockObj) + { + if (string.IsNullOrEmpty(_currentJobId) || !Jobs.TryGetValue(_currentJobId, out var job)) + { + return; + } + + job.LastUpdateUnixMs = now; + job.CurrentTestFullName = null; + } + PersistToSessionState(force: true); + } + + internal static TestJob GetJob(string jobId) + { + if (string.IsNullOrWhiteSpace(jobId)) + { + return null; + } + + TestJob jobToReturn = null; + bool shouldPersist = false; + lock (LockObj) + { + if (!Jobs.TryGetValue(jobId, out var job)) + { + return null; + } + + // Check if job is stuck in "running" state without having called OnRunStarted (TotalTests still null). + // This happens when tests fail to initialize (e.g., unsaved scene, compilation issues). + // After 15 seconds without initialization, auto-fail the job to prevent hanging. + if (job.Status == TestJobStatus.Running && job.TotalTests == null) + { + long now = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); + if (!EditorApplication.isCompiling && !EditorApplication.isUpdating && now - job.StartedUnixMs > InitializationTimeoutMs) + { + McpLog.Warn($"[TestJobManager] Job {jobId} failed to initialize within {InitializationTimeoutMs}ms, auto-failing"); + job.Status = TestJobStatus.Failed; + job.Error = "Test job failed to initialize (tests did not start within timeout)"; + job.FinishedUnixMs = now; + job.LastUpdateUnixMs = now; + if (_currentJobId == jobId) + { + _currentJobId = null; + } + shouldPersist = true; + } + } + + jobToReturn = job; + } + + if (shouldPersist) + { + PersistToSessionState(force: true); + } + return jobToReturn; + } + + internal static object ToSerializable(TestJob job, bool includeDetails, bool includeFailedTests) + { + if (job == null) + { + return null; + } + + object resultPayload = null; + if (job.Status == TestJobStatus.Succeeded && job.Result != null) + { + resultPayload = job.Result.ToSerializable(job.Mode, includeDetails, includeFailedTests); + } + + return new + { + job_id = job.JobId, + status = job.Status.ToString().ToLowerInvariant(), + mode = job.Mode, + started_unix_ms = job.StartedUnixMs, + finished_unix_ms = job.FinishedUnixMs, + last_update_unix_ms = job.LastUpdateUnixMs, + progress = new + { + completed = job.CompletedTests, + total = job.TotalTests, + current_test_full_name = job.CurrentTestFullName, + current_test_started_unix_ms = job.CurrentTestStartedUnixMs, + last_finished_test_full_name = job.LastFinishedTestFullName, + last_finished_unix_ms = job.LastFinishedUnixMs, + stuck_suspected = IsStuck(job), + editor_is_focused = InternalEditorUtility.isApplicationActive, + blocked_reason = GetBlockedReason(job), + failures_so_far = BuildFailuresPayload(job.FailuresSoFar), + failures_capped = (job.FailuresSoFar != null && job.FailuresSoFar.Count >= FailureCap) + }, + error = job.Error, + result = resultPayload + }; + } + + private static string GetBlockedReason(TestJob job) + { + if (job == null || job.Status != TestJobStatus.Running) + { + return null; + } + + if (!IsStuck(job)) + { + return null; + } + + // This matches the real-world symptom you observed: background Unity can get heavily throttled by OS/Editor. + if (!InternalEditorUtility.isApplicationActive) + { + return "editor_unfocused"; + } + + if (EditorApplication.isCompiling) + { + return "compiling"; + } + + if (EditorApplication.isUpdating) + { + return "asset_import"; + } + + return "unknown"; + } + + private static bool IsStuck(TestJob job) + { + if (job == null || job.Status != TestJobStatus.Running) + { + return false; + } + + if (string.IsNullOrWhiteSpace(job.CurrentTestFullName) || !job.CurrentTestStartedUnixMs.HasValue) + { + return false; + } + + long now = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); + return (now - job.CurrentTestStartedUnixMs.Value) > StuckThresholdMs; + } + + private static object[] BuildFailuresPayload(List failures) + { + if (failures == null || failures.Count == 0) + { + return Array.Empty(); + } + + var list = new object[failures.Count]; + for (int i = 0; i < failures.Count; i++) + { + var f = failures[i]; + list[i] = new { full_name = f?.FullName, message = f?.Message }; + } + return list; + } + + private static void FinalizeFromTask(string jobId, Task task) + { + lock (LockObj) + { + if (!Jobs.TryGetValue(jobId, out var existing)) + { + if (_currentJobId == jobId) _currentJobId = null; + return; + } + + // If RunFinished already finalized the job, do nothing. + if (existing.Status != TestJobStatus.Running) + { + if (_currentJobId == jobId) _currentJobId = null; + return; + } + + existing.LastUpdateUnixMs = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); + existing.FinishedUnixMs = existing.LastUpdateUnixMs; + + if (task.IsFaulted) + { + existing.Status = TestJobStatus.Failed; + existing.Error = task.Exception?.GetBaseException()?.Message ?? "Unknown test job failure"; + existing.Result = null; + } + else if (task.IsCanceled) + { + existing.Status = TestJobStatus.Failed; + existing.Error = "Test job canceled"; + existing.Result = null; + } + else + { + var result = task.Result; + existing.Status = result != null && result.Failed > 0 + ? TestJobStatus.Failed + : TestJobStatus.Succeeded; + existing.Error = null; + existing.Result = result; + } + + if (_currentJobId == jobId) + { + _currentJobId = null; + } + } + PersistToSessionState(force: true); + } + } +} + diff --git a/Packages/MCPForUnity/Editor/Services/TestJobManager.cs.meta b/Packages/MCPForUnity/Editor/Services/TestJobManager.cs.meta new file mode 100644 index 00000000..00255997 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/TestJobManager.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 2d7a9b8c0e1f4a6b9c3d2e1f0a9b8c7d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: + + diff --git a/Packages/MCPForUnity/Editor/Services/TestRunStatus.cs b/Packages/MCPForUnity/Editor/Services/TestRunStatus.cs new file mode 100644 index 00000000..da3ae6c2 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/TestRunStatus.cs @@ -0,0 +1,62 @@ +using System; +using UnityEditor.TestTools.TestRunner.Api; + +namespace MCPForUnity.Editor.Services +{ + /// + /// Thread-safe, minimal shared status for Unity Test Runner execution. + /// Used by editor readiness snapshots so callers can avoid starting overlapping runs. + /// + internal static class TestRunStatus + { + private static readonly object LockObj = new(); + + private static bool _isRunning; + private static TestMode? _mode; + private static long? _startedUnixMs; + private static long? _finishedUnixMs; + + public static bool IsRunning + { + get { lock (LockObj) return _isRunning; } + } + + public static TestMode? Mode + { + get { lock (LockObj) return _mode; } + } + + public static long? StartedUnixMs + { + get { lock (LockObj) return _startedUnixMs; } + } + + public static long? FinishedUnixMs + { + get { lock (LockObj) return _finishedUnixMs; } + } + + public static void MarkStarted(TestMode mode) + { + lock (LockObj) + { + _isRunning = true; + _mode = mode; + _startedUnixMs = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); + _finishedUnixMs = null; + } + } + + public static void MarkFinished() + { + lock (LockObj) + { + _isRunning = false; + _finishedUnixMs = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); + _mode = null; + } + } + } +} + + diff --git a/Packages/MCPForUnity/Editor/Services/TestRunStatus.cs.meta b/Packages/MCPForUnity/Editor/Services/TestRunStatus.cs.meta new file mode 100644 index 00000000..8f499e04 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/TestRunStatus.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b3d140c288f6e4b6aa2b7e8181a09c1e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/TestRunnerNoThrottle.cs b/Packages/MCPForUnity/Editor/Services/TestRunnerNoThrottle.cs new file mode 100644 index 00000000..ddcfe870 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/TestRunnerNoThrottle.cs @@ -0,0 +1,150 @@ +// TestRunnerNoThrottle.cs +// Sets Unity Editor to "No Throttling" mode during test runs. +// This helps tests that don't trigger compilation run smoothly in the background. +// Note: Tests that trigger mid-run compilation may still stall due to OS-level throttling. + +using System; +using System.Reflection; +using MCPForUnity.Editor.Helpers; +using UnityEditor; +using UnityEditor.TestTools.TestRunner.Api; +using UnityEngine; + +namespace MCPForUnity.Editor.Services +{ + /// + /// Automatically sets the editor to "No Throttling" mode during test runs. + /// + /// This helps prevent background stalls for normal tests. However, tests that trigger + /// script compilation mid-run may still stall because: + /// - Internal Unity coroutine waits rely on editor ticks + /// - OS-level throttling affects the main thread when Unity is backgrounded + /// - No amount of internal nudging can overcome OS thread scheduling + /// + /// The MCP workflow is unaffected because socket messages provide external stimulus + /// that wakes Unity's main thread. + /// + [InitializeOnLoad] + public static class TestRunnerNoThrottle + { + private const string ApplicationIdleTimeKey = "ApplicationIdleTime"; + private const string InteractionModeKey = "InteractionMode"; + + // SessionState keys to persist across domain reload + private const string SessionKey_TestRunActive = "TestRunnerNoThrottle_TestRunActive"; + private const string SessionKey_PrevIdleTime = "TestRunnerNoThrottle_PrevIdleTime"; + private const string SessionKey_PrevInteractionMode = "TestRunnerNoThrottle_PrevInteractionMode"; + private const string SessionKey_SettingsCaptured = "TestRunnerNoThrottle_SettingsCaptured"; + + // Keep reference to avoid GC and set HideFlags to avoid serialization issues + private static TestRunnerApi _api; + + static TestRunnerNoThrottle() + { + try + { + _api = ScriptableObject.CreateInstance(); + _api.hideFlags = HideFlags.HideAndDontSave; + _api.RegisterCallbacks(new TestCallbacks()); + + // Check if recovering from domain reload during an active test run + if (IsTestRunActive()) + { + McpLog.Info("[TestRunnerNoThrottle] Recovered from domain reload - reapplying No Throttling."); + ApplyNoThrottling(); + } + } + catch (Exception e) + { + McpLog.Warn($"[TestRunnerNoThrottle] Failed to register callbacks: {e}"); + } + } + + #region State Persistence + + private static bool IsTestRunActive() => SessionState.GetBool(SessionKey_TestRunActive, false); + private static void SetTestRunActive(bool active) => SessionState.SetBool(SessionKey_TestRunActive, active); + private static bool AreSettingsCaptured() => SessionState.GetBool(SessionKey_SettingsCaptured, false); + private static void SetSettingsCaptured(bool captured) => SessionState.SetBool(SessionKey_SettingsCaptured, captured); + private static int GetPrevIdleTime() => SessionState.GetInt(SessionKey_PrevIdleTime, 4); + private static void SetPrevIdleTime(int value) => SessionState.SetInt(SessionKey_PrevIdleTime, value); + private static int GetPrevInteractionMode() => SessionState.GetInt(SessionKey_PrevInteractionMode, 0); + private static void SetPrevInteractionMode(int value) => SessionState.SetInt(SessionKey_PrevInteractionMode, value); + + #endregion + + /// + /// Apply no-throttling preemptively before tests start. + /// Call this before Execute() for PlayMode tests to ensure Unity isn't throttled + /// during the Play mode transition (before RunStarted fires). + /// + public static void ApplyNoThrottlingPreemptive() + { + SetTestRunActive(true); + ApplyNoThrottling(); + } + + private static void ApplyNoThrottling() + { + if (!AreSettingsCaptured()) + { + SetPrevIdleTime(EditorPrefs.GetInt(ApplicationIdleTimeKey, 4)); + SetPrevInteractionMode(EditorPrefs.GetInt(InteractionModeKey, 0)); + SetSettingsCaptured(true); + } + + // 0ms idle + InteractionMode=1 (No Throttling) + EditorPrefs.SetInt(ApplicationIdleTimeKey, 0); + EditorPrefs.SetInt(InteractionModeKey, 1); + + ForceEditorToApplyInteractionPrefs(); + McpLog.Info("[TestRunnerNoThrottle] Applied No Throttling for test run."); + } + + private static void RestoreThrottling() + { + if (!AreSettingsCaptured()) return; + + EditorPrefs.SetInt(ApplicationIdleTimeKey, GetPrevIdleTime()); + EditorPrefs.SetInt(InteractionModeKey, GetPrevInteractionMode()); + ForceEditorToApplyInteractionPrefs(); + + SetSettingsCaptured(false); + SetTestRunActive(false); + McpLog.Info("[TestRunnerNoThrottle] Restored Interaction Mode after test run."); + } + + private static void ForceEditorToApplyInteractionPrefs() + { + try + { + var method = typeof(EditorApplication).GetMethod( + "UpdateInteractionModeSettings", + BindingFlags.Static | BindingFlags.NonPublic + ); + method?.Invoke(null, null); + } + catch + { + // Ignore reflection errors + } + } + + private sealed class TestCallbacks : ICallbacks + { + public void RunStarted(ITestAdaptor testsToRun) + { + SetTestRunActive(true); + ApplyNoThrottling(); + } + + public void RunFinished(ITestResultAdaptor result) + { + RestoreThrottling(); + } + + public void TestStarted(ITestAdaptor test) { } + public void TestFinished(ITestResultAdaptor result) { } + } + } +} diff --git a/Packages/MCPForUnity/Editor/Services/TestRunnerNoThrottle.cs.meta b/Packages/MCPForUnity/Editor/Services/TestRunnerNoThrottle.cs.meta new file mode 100644 index 00000000..8e9a8d4d --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/TestRunnerNoThrottle.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 07a60b029782d464a9506fa520d2a8c8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/TestRunnerService.cs b/Packages/MCPForUnity/Editor/Services/TestRunnerService.cs new file mode 100644 index 00000000..374715b1 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/TestRunnerService.cs @@ -0,0 +1,619 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using MCPForUnity.Editor.Helpers; +using UnityEditor; +using UnityEditor.SceneManagement; +using UnityEditor.TestTools.TestRunner.Api; +using UnityEngine; +using UnityEngine.SceneManagement; + +namespace MCPForUnity.Editor.Services +{ + /// + /// Concrete implementation of . + /// Coordinates Unity Test Runner operations and produces structured results. + /// + internal sealed class TestRunnerService : ITestRunnerService, ICallbacks, IDisposable + { + private static readonly TestMode[] AllModes = { TestMode.EditMode, TestMode.PlayMode }; + + private readonly TestRunnerApi _testRunnerApi; + private readonly SemaphoreSlim _operationLock = new SemaphoreSlim(1, 1); + private readonly List _leafResults = new List(); + private TaskCompletionSource _runCompletionSource; + + public TestRunnerService() + { + _testRunnerApi = ScriptableObject.CreateInstance(); + _testRunnerApi.RegisterCallbacks(this); + } + + public async Task>> GetTestsAsync(TestMode? mode) + { + await _operationLock.WaitAsync().ConfigureAwait(true); + try + { + var modes = mode.HasValue ? new[] { mode.Value } : AllModes; + + var results = new List>(); + var seen = new HashSet(StringComparer.Ordinal); + + foreach (var m in modes) + { + var root = await RetrieveTestRootAsync(m).ConfigureAwait(true); + if (root != null) + { + CollectFromNode(root, m, results, seen, new List()); + } + } + + return results; + } + finally + { + _operationLock.Release(); + } + } + + public async Task RunTestsAsync(TestMode mode, TestFilterOptions filterOptions = null) + { + await _operationLock.WaitAsync().ConfigureAwait(true); + Task runTask; + bool adjustedPlayModeOptions = false; + bool originalEnterPlayModeOptionsEnabled = false; + EnterPlayModeOptions originalEnterPlayModeOptions = EnterPlayModeOptions.None; + try + { + if (_runCompletionSource != null && !_runCompletionSource.Task.IsCompleted) + { + throw new InvalidOperationException("A Unity test run is already in progress."); + } + + if (EditorApplication.isPlaying || EditorApplication.isPlayingOrWillChangePlaymode) + { + throw new InvalidOperationException("Cannot start a test run while the Editor is in or entering Play Mode. Stop Play Mode and try again."); + } + + if (mode == TestMode.PlayMode) + { + // PlayMode runs transition the editor into play across multiple update ticks. Unity's + // built-in pipeline schedules SaveModifiedSceneTask early, but that task uses + // EditorSceneManager.SaveCurrentModifiedScenesIfUserWantsTo which throws once play mode is + // active. To minimize that window we pre-save dirty scenes and disable domain reload (so the + // MCP bridge stays alive). We do NOT force runSynchronously here because that can freeze the + // editor in some projects. If the TestRunner still hits the save task after entering play, the + // run can fail; in that case, rerun from a clean Edit Mode state. + adjustedPlayModeOptions = EnsurePlayModeRunsWithoutDomainReload( + out originalEnterPlayModeOptionsEnabled, + out originalEnterPlayModeOptions); + } + + _leafResults.Clear(); + _runCompletionSource = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); + // Mark running immediately so readiness snapshots reflect the busy state even before callbacks fire. + TestRunStatus.MarkStarted(mode); + + var filter = new Filter + { + testMode = mode, + testNames = filterOptions?.TestNames, + groupNames = filterOptions?.GroupNames, + categoryNames = filterOptions?.CategoryNames, + assemblyNames = filterOptions?.AssemblyNames + }; + var settings = new ExecutionSettings(filter); + + // Save dirty scenes for all test modes to prevent modal dialogs blocking MCP + // (Issue #525: EditMode tests were blocked by save dialog) + SaveDirtyScenesIfNeeded(); + + // Apply no-throttling preemptively for PlayMode tests. This ensures Unity + // isn't throttled during the Play mode transition (which requires multiple + // editor frames). Without this, unfocused Unity may never reach RunStarted + // where throttling would normally be disabled. + if (mode == TestMode.PlayMode) + { + TestRunnerNoThrottle.ApplyNoThrottlingPreemptive(); + } + + _testRunnerApi.Execute(settings); + + runTask = _runCompletionSource.Task; + } + catch + { + // Ensure the status is cleared if we failed to start the run. + TestRunStatus.MarkFinished(); + if (adjustedPlayModeOptions) + { + RestoreEnterPlayModeOptions(originalEnterPlayModeOptionsEnabled, originalEnterPlayModeOptions); + } + + _operationLock.Release(); + throw; + } + + try + { + return await runTask.ConfigureAwait(true); + } + finally + { + if (adjustedPlayModeOptions) + { + RestoreEnterPlayModeOptions(originalEnterPlayModeOptionsEnabled, originalEnterPlayModeOptions); + } + + _operationLock.Release(); + } + } + + public void Dispose() + { + try + { + _testRunnerApi?.UnregisterCallbacks(this); + } + catch + { + // Ignore cleanup errors + } + + if (_testRunnerApi != null) + { + ScriptableObject.DestroyImmediate(_testRunnerApi); + } + + _operationLock.Dispose(); + } + + #region TestRunnerApi callbacks + + public void RunStarted(ITestAdaptor testsToRun) + { + _leafResults.Clear(); + try + { + // Best-effort progress info for async polling (avoid heavy payloads). + int? total = null; + if (testsToRun != null) + { + total = CountLeafTests(testsToRun); + } + TestJobManager.OnRunStarted(total); + } + catch + { + TestJobManager.OnRunStarted(null); + } + } + + public void RunFinished(ITestResultAdaptor result) + { + // Always create payload and clean up job state, even if _runCompletionSource is null. + // This handles domain reload scenarios (e.g., PlayMode tests) where the TestRunnerService + // is recreated and _runCompletionSource is lost, but TestJobManager state persists via + // SessionState and the Test Runner still delivers the RunFinished callback. + var payload = TestRunResult.Create(result, _leafResults); + + // Clean up state regardless of _runCompletionSource - these methods safely handle + // the case where no MCP job exists (e.g., manual test runs via Unity UI). + TestRunStatus.MarkFinished(); + TestJobManager.OnRunFinished(); + TestJobManager.FinalizeCurrentJobFromRunFinished(payload); + + // Report result to awaiting caller if we have a completion source + if (_runCompletionSource != null) + { + _runCompletionSource.TrySetResult(payload); + _runCompletionSource = null; + } + } + + public void TestStarted(ITestAdaptor test) + { + try + { + // Prefer FullName for uniqueness; fall back to Name. + string fullName = test?.FullName; + if (string.IsNullOrWhiteSpace(fullName)) + { + fullName = test?.Name; + } + TestJobManager.OnTestStarted(fullName); + } + catch + { + // ignore + } + } + + public void TestFinished(ITestResultAdaptor result) + { + if (result == null) + { + return; + } + + if (!result.HasChildren) + { + _leafResults.Add(result); + try + { + string fullName = result.Test?.FullName; + if (string.IsNullOrWhiteSpace(fullName)) + { + fullName = result.Test?.Name; + } + + bool isFailure = false; + string message = null; + try + { + // NUnit outcomes are strings in the adaptor; keep it simple. + string outcome = result.ResultState; + if (!string.IsNullOrWhiteSpace(outcome)) + { + var o = outcome.Trim().ToLowerInvariant(); + isFailure = o.Contains("failed") || o.Contains("error"); + } + message = result.Message; + } + catch + { + // ignore adaptor quirks + } + + TestJobManager.OnLeafTestFinished(fullName, isFailure, message); + } + catch + { + // ignore + } + } + } + + #endregion + + private static int CountLeafTests(ITestAdaptor node) + { + if (node == null) + { + return 0; + } + + if (!node.HasChildren) + { + return 1; + } + + int total = 0; + try + { + foreach (var child in node.Children) + { + total += CountLeafTests(child); + } + } + catch + { + // If Unity changes the adaptor behavior, treat it as "unknown total". + return 0; + } + + return total; + } + + private static bool EnsurePlayModeRunsWithoutDomainReload( + out bool originalEnterPlayModeOptionsEnabled, + out EnterPlayModeOptions originalEnterPlayModeOptions) + { + originalEnterPlayModeOptionsEnabled = EditorSettings.enterPlayModeOptionsEnabled; + originalEnterPlayModeOptions = EditorSettings.enterPlayModeOptions; + + // When Play Mode triggers a domain reload, the MCP connection is torn down and the pending + // test run response never makes it back to the caller. To keep the bridge alive for this + // invocation, temporarily enable Enter Play Mode Options with domain reload disabled. + bool domainReloadDisabled = (originalEnterPlayModeOptions & EnterPlayModeOptions.DisableDomainReload) != 0; + bool needsChange = !originalEnterPlayModeOptionsEnabled || !domainReloadDisabled; + if (!needsChange) + { + return false; + } + + var desired = originalEnterPlayModeOptions | EnterPlayModeOptions.DisableDomainReload; + EditorSettings.enterPlayModeOptionsEnabled = true; + EditorSettings.enterPlayModeOptions = desired; + return true; + } + + private static void RestoreEnterPlayModeOptions(bool originalEnabled, EnterPlayModeOptions originalOptions) + { + EditorSettings.enterPlayModeOptions = originalOptions; + EditorSettings.enterPlayModeOptionsEnabled = originalEnabled; + } + + private static void SaveDirtyScenesIfNeeded() + { + int sceneCount = SceneManager.sceneCount; + for (int i = 0; i < sceneCount; i++) + { + var scene = SceneManager.GetSceneAt(i); + if (scene.isDirty) + { + if (string.IsNullOrEmpty(scene.path)) + { + McpLog.Warn($"[TestRunnerService] Skipping unsaved scene '{scene.name}': save it manually before running tests."); + continue; + } + try + { + EditorSceneManager.SaveScene(scene); + } + catch (Exception ex) + { + McpLog.Warn($"[TestRunnerService] Failed to save dirty scene '{scene.name}': {ex.Message}"); + } + } + } + } + + #region Test list helpers + + private async Task RetrieveTestRootAsync(TestMode mode) + { + var tcs = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); + + _testRunnerApi.RetrieveTestList(mode, root => + { + tcs.TrySetResult(root); + }); + + // Ensure the editor pumps at least one additional update in case the window is unfocused. + EditorApplication.QueuePlayerLoopUpdate(); + + var completed = await Task.WhenAny(tcs.Task, Task.Delay(TimeSpan.FromSeconds(30))).ConfigureAwait(true); + if (completed != tcs.Task) + { + McpLog.Warn($"[TestRunnerService] Timeout waiting for test retrieval callback for {mode}"); + return null; + } + + try + { + return await tcs.Task.ConfigureAwait(true); + } + catch (Exception ex) + { + McpLog.Error($"[TestRunnerService] Error retrieving tests for {mode}: {ex.Message}\n{ex.StackTrace}"); + return null; + } + } + + private static void CollectFromNode( + ITestAdaptor node, + TestMode mode, + List> output, + HashSet seen, + List path) + { + if (node == null) + { + return; + } + + bool hasName = !string.IsNullOrEmpty(node.Name); + if (hasName) + { + path.Add(node.Name); + } + + bool hasChildren = node.HasChildren && node.Children != null; + + if (!hasChildren) + { + string fullName = string.IsNullOrEmpty(node.FullName) ? node.Name ?? string.Empty : node.FullName; + string key = $"{mode}:{fullName}"; + + if (!string.IsNullOrEmpty(fullName) && seen.Add(key)) + { + string computedPath = path.Count > 0 ? string.Join("/", path) : fullName; + output.Add(new Dictionary + { + ["name"] = node.Name ?? fullName, + ["full_name"] = fullName, + ["path"] = computedPath, + ["mode"] = mode.ToString(), + }); + } + } + else if (node.Children != null) + { + foreach (var child in node.Children) + { + CollectFromNode(child, mode, output, seen, path); + } + } + + if (hasName && path.Count > 0) + { + path.RemoveAt(path.Count - 1); + } + } + + #endregion + } + + /// + /// Summary of a Unity test run. + /// + public sealed class TestRunResult + { + internal TestRunResult(TestRunSummary summary, IReadOnlyList results) + { + Summary = summary; + Results = results; + } + + public TestRunSummary Summary { get; } + public IReadOnlyList Results { get; } + + public int Total => Summary.Total; + public int Passed => Summary.Passed; + public int Failed => Summary.Failed; + public int Skipped => Summary.Skipped; + + public object ToSerializable(string mode, bool includeDetails = false, bool includeFailedTests = false) + { + // Determine which results to include + IEnumerable resultsToSerialize; + if (includeDetails) + { + // Include all test results + resultsToSerialize = Results.Select(r => r.ToSerializable()); + } + else if (includeFailedTests) + { + // Include only failed and skipped tests + resultsToSerialize = Results + .Where(r => !string.Equals(r.State, "Passed", StringComparison.OrdinalIgnoreCase)) + .Select(r => r.ToSerializable()); + } + else + { + // No individual test results + resultsToSerialize = null; + } + + return new + { + mode, + summary = Summary.ToSerializable(), + results = resultsToSerialize?.ToList(), + }; + } + + internal static TestRunResult Create(ITestResultAdaptor summary, IReadOnlyList tests) + { + var materializedTests = tests.Select(TestRunTestResult.FromAdaptor).ToList(); + + int passed = summary?.PassCount + ?? materializedTests.Count(t => string.Equals(t.State, "Passed", StringComparison.OrdinalIgnoreCase)); + int failed = summary?.FailCount + ?? materializedTests.Count(t => string.Equals(t.State, "Failed", StringComparison.OrdinalIgnoreCase)); + int skipped = summary?.SkipCount + ?? materializedTests.Count(t => string.Equals(t.State, "Skipped", StringComparison.OrdinalIgnoreCase)); + + double duration = summary?.Duration + ?? materializedTests.Sum(t => t.DurationSeconds); + + int total = summary != null ? passed + failed + skipped : materializedTests.Count; + + var summaryPayload = new TestRunSummary( + total, + passed, + failed, + skipped, + duration, + summary?.ResultState ?? "Unknown"); + + return new TestRunResult(summaryPayload, materializedTests); + } + } + + public sealed class TestRunSummary + { + internal TestRunSummary(int total, int passed, int failed, int skipped, double durationSeconds, string resultState) + { + Total = total; + Passed = passed; + Failed = failed; + Skipped = skipped; + DurationSeconds = durationSeconds; + ResultState = resultState; + } + + public int Total { get; } + public int Passed { get; } + public int Failed { get; } + public int Skipped { get; } + public double DurationSeconds { get; } + public string ResultState { get; } + + internal object ToSerializable() + { + return new + { + total = Total, + passed = Passed, + failed = Failed, + skipped = Skipped, + durationSeconds = DurationSeconds, + resultState = ResultState, + }; + } + } + + public sealed class TestRunTestResult + { + internal TestRunTestResult( + string name, + string fullName, + string state, + double durationSeconds, + string message, + string stackTrace, + string output) + { + Name = name; + FullName = fullName; + State = state; + DurationSeconds = durationSeconds; + Message = message; + StackTrace = stackTrace; + Output = output; + } + + public string Name { get; } + public string FullName { get; } + public string State { get; } + public double DurationSeconds { get; } + public string Message { get; } + public string StackTrace { get; } + public string Output { get; } + + internal object ToSerializable() + { + return new + { + name = Name, + fullName = FullName, + state = State, + durationSeconds = DurationSeconds, + message = Message, + stackTrace = StackTrace, + output = Output, + }; + } + + internal static TestRunTestResult FromAdaptor(ITestResultAdaptor adaptor) + { + if (adaptor == null) + { + return new TestRunTestResult(string.Empty, string.Empty, "Unknown", 0.0, string.Empty, string.Empty, string.Empty); + } + + return new TestRunTestResult( + adaptor.Name, + adaptor.FullName, + adaptor.ResultState, + adaptor.Duration, + adaptor.Message, + adaptor.StackTrace, + adaptor.Output); + } + } +} diff --git a/Packages/MCPForUnity/Editor/Services/TestRunnerService.cs.meta b/Packages/MCPForUnity/Editor/Services/TestRunnerService.cs.meta new file mode 100644 index 00000000..20d0e402 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/TestRunnerService.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 18db1e25b13e14b0b9b186c751e397d0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/ToolDiscoveryService.cs b/Packages/MCPForUnity/Editor/Services/ToolDiscoveryService.cs new file mode 100644 index 00000000..b5b86c0a --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/ToolDiscoveryService.cs @@ -0,0 +1,248 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using MCPForUnity.Editor.Constants; +using MCPForUnity.Editor.Helpers; +using MCPForUnity.Editor.Tools; +using UnityEditor; + +namespace MCPForUnity.Editor.Services +{ + public class ToolDiscoveryService : IToolDiscoveryService + { + private Dictionary _cachedTools; + + + public List DiscoverAllTools() + { + if (_cachedTools != null) + { + return _cachedTools.Values.ToList(); + } + + _cachedTools = new Dictionary(); + + var toolTypes = TypeCache.GetTypesWithAttribute(); + foreach (var type in toolTypes) + { + McpForUnityToolAttribute toolAttr; + try + { + toolAttr = type.GetCustomAttribute(); + } + catch (Exception ex) + { + McpLog.Warn($"Failed to read [McpForUnityTool] for {type.FullName}: {ex.Message}"); + continue; + } + + if (toolAttr == null) + { + continue; + } + + var metadata = ExtractToolMetadata(type, toolAttr); + if (metadata != null) + { + if (_cachedTools.ContainsKey(metadata.Name)) + { + McpLog.Warn($"Duplicate tool name '{metadata.Name}' from {type.FullName}; overwriting previous registration."); + } + _cachedTools[metadata.Name] = metadata; + EnsurePreferenceInitialized(metadata); + } + } + + McpLog.Info($"Discovered {_cachedTools.Count} MCP tools via reflection", false); + return _cachedTools.Values.ToList(); + } + + public ToolMetadata GetToolMetadata(string toolName) + { + if (_cachedTools == null) + { + DiscoverAllTools(); + } + + return _cachedTools.TryGetValue(toolName, out var metadata) ? metadata : null; + } + + public List GetEnabledTools() + { + return DiscoverAllTools() + .Where(tool => IsToolEnabled(tool.Name)) + .ToList(); + } + + public bool IsToolEnabled(string toolName) + { + if (string.IsNullOrEmpty(toolName)) + { + return false; + } + + string key = GetToolPreferenceKey(toolName); + if (EditorPrefs.HasKey(key)) + { + return EditorPrefs.GetBool(key, true); + } + + var metadata = GetToolMetadata(toolName); + return metadata?.AutoRegister ?? false; + } + + public void SetToolEnabled(string toolName, bool enabled) + { + if (string.IsNullOrEmpty(toolName)) + { + return; + } + + string key = GetToolPreferenceKey(toolName); + EditorPrefs.SetBool(key, enabled); + } + + private ToolMetadata ExtractToolMetadata(Type type, McpForUnityToolAttribute toolAttr) + { + try + { + // Get tool name + string toolName = toolAttr.Name; + if (string.IsNullOrEmpty(toolName)) + { + // Derive from class name: CaptureScreenshotTool -> capture_screenshot + toolName = ConvertToSnakeCase(type.Name.Replace("Tool", "")); + } + + // Get description + string description = toolAttr.Description ?? $"Tool: {toolName}"; + + // Extract parameters + var parameters = ExtractParameters(type); + + var metadata = new ToolMetadata + { + Name = toolName, + Description = description, + StructuredOutput = toolAttr.StructuredOutput, + Parameters = parameters, + ClassName = type.Name, + Namespace = type.Namespace ?? "", + AssemblyName = type.Assembly.GetName().Name, + AutoRegister = toolAttr.AutoRegister, + RequiresPolling = toolAttr.RequiresPolling, + PollAction = string.IsNullOrEmpty(toolAttr.PollAction) ? "status" : toolAttr.PollAction + }; + + metadata.IsBuiltIn = StringCaseUtility.IsBuiltInMcpType( + type, metadata.AssemblyName, "MCPForUnity.Editor.Tools"); + + return metadata; + + } + catch (Exception ex) + { + McpLog.Error($"Failed to extract metadata for {type.Name}: {ex.Message}"); + return null; + } + } + + private List ExtractParameters(Type type) + { + var parameters = new List(); + + // Look for nested Parameters class + var parametersType = type.GetNestedType("Parameters"); + if (parametersType == null) + { + return parameters; + } + + // Get all properties with [ToolParameter] + var properties = parametersType.GetProperties(BindingFlags.Public | BindingFlags.Instance); + + foreach (var prop in properties) + { + var paramAttr = prop.GetCustomAttribute(); + if (paramAttr == null) + continue; + + string paramName = prop.Name; + string paramType = GetParameterType(prop.PropertyType); + + parameters.Add(new ParameterMetadata + { + Name = paramName, + Description = paramAttr.Description, + Type = paramType, + Required = paramAttr.Required, + DefaultValue = paramAttr.DefaultValue + }); + } + + return parameters; + } + + private string GetParameterType(Type type) + { + // Handle nullable types + if (Nullable.GetUnderlyingType(type) != null) + { + type = Nullable.GetUnderlyingType(type); + } + + // Map C# types to JSON schema types + if (type == typeof(string)) + return "string"; + if (type == typeof(int) || type == typeof(long)) + return "integer"; + if (type == typeof(float) || type == typeof(double)) + return "number"; + if (type == typeof(bool)) + return "boolean"; + if (type.IsArray || typeof(System.Collections.IEnumerable).IsAssignableFrom(type)) + return "array"; + + return "object"; + } + + private string ConvertToSnakeCase(string input) => StringCaseUtility.ToSnakeCase(input); + + public void InvalidateCache() + { + _cachedTools = null; + } + + private void EnsurePreferenceInitialized(ToolMetadata metadata) + { + if (metadata == null || string.IsNullOrEmpty(metadata.Name)) + { + return; + } + + string key = GetToolPreferenceKey(metadata.Name); + if (!EditorPrefs.HasKey(key)) + { + bool defaultValue = metadata.AutoRegister || metadata.IsBuiltIn; + EditorPrefs.SetBool(key, defaultValue); + return; + } + + if (metadata.IsBuiltIn && !metadata.AutoRegister) + { + bool currentValue = EditorPrefs.GetBool(key, metadata.AutoRegister); + if (currentValue == metadata.AutoRegister) + { + EditorPrefs.SetBool(key, true); + } + } + } + + private static string GetToolPreferenceKey(string toolName) + { + return EditorPrefKeys.ToolEnabledPrefix + toolName; + } + + } +} diff --git a/Packages/MCPForUnity/Editor/Services/ToolDiscoveryService.cs.meta b/Packages/MCPForUnity/Editor/Services/ToolDiscoveryService.cs.meta new file mode 100644 index 00000000..46b74032 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/ToolDiscoveryService.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ec81a561be4c14c9cb243855d3273a94 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/Transport.meta b/Packages/MCPForUnity/Editor/Services/Transport.meta new file mode 100644 index 00000000..58fe0d71 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/Transport.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8d189635a5d364f55a810203798c09ba +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/Transport/IMcpTransportClient.cs b/Packages/MCPForUnity/Editor/Services/Transport/IMcpTransportClient.cs new file mode 100644 index 00000000..3d8584fd --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/Transport/IMcpTransportClient.cs @@ -0,0 +1,18 @@ +using System.Threading.Tasks; + +namespace MCPForUnity.Editor.Services.Transport +{ + /// + /// Abstraction for MCP transport implementations (e.g. WebSocket push, stdio). + /// + public interface IMcpTransportClient + { + bool IsConnected { get; } + string TransportName { get; } + TransportState State { get; } + + Task StartAsync(); + Task StopAsync(); + Task VerifyAsync(); + } +} diff --git a/Packages/MCPForUnity/Editor/Services/Transport/IMcpTransportClient.cs.meta b/Packages/MCPForUnity/Editor/Services/Transport/IMcpTransportClient.cs.meta new file mode 100644 index 00000000..2bdf0951 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/Transport/IMcpTransportClient.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 042446a50a4744170bb294acf827376f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/Transport/TransportCommandDispatcher.cs b/Packages/MCPForUnity/Editor/Services/Transport/TransportCommandDispatcher.cs new file mode 100644 index 00000000..447db69b --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/Transport/TransportCommandDispatcher.cs @@ -0,0 +1,450 @@ +using System; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using MCPForUnity.Editor.Helpers; +using MCPForUnity.Editor.Models; +using MCPForUnity.Editor.Services; +using MCPForUnity.Editor.Tools; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using UnityEditor; + +namespace MCPForUnity.Editor.Services.Transport +{ + /// + /// Centralised command execution pipeline shared by all transport implementations. + /// Guarantees that MCP commands are executed on the Unity main thread while preserving + /// the legacy response format expected by the server. + /// + [InitializeOnLoad] + internal static class TransportCommandDispatcher + { + private static SynchronizationContext _mainThreadContext; + private static int _mainThreadId; + private static int _processingFlag; + + private sealed class PendingCommand + { + public PendingCommand( + string commandJson, + TaskCompletionSource completionSource, + CancellationToken cancellationToken, + CancellationTokenRegistration registration) + { + CommandJson = commandJson; + CompletionSource = completionSource; + CancellationToken = cancellationToken; + CancellationRegistration = registration; + QueuedAt = DateTime.UtcNow; + } + + public string CommandJson { get; } + public TaskCompletionSource CompletionSource { get; } + public CancellationToken CancellationToken { get; } + public CancellationTokenRegistration CancellationRegistration { get; } + public bool IsExecuting { get; set; } + public DateTime QueuedAt { get; } + + public void Dispose() + { + CancellationRegistration.Dispose(); + } + + public void TrySetResult(string payload) + { + CompletionSource.TrySetResult(payload); + } + + public void TrySetCanceled() + { + CompletionSource.TrySetCanceled(CancellationToken); + } + } + + private static readonly Dictionary Pending = new(); + private static readonly object PendingLock = new(); + private static bool updateHooked; + private static bool initialised; + + static TransportCommandDispatcher() + { + // Ensure this runs on the Unity main thread at editor load. + _mainThreadContext = SynchronizationContext.Current; + _mainThreadId = Thread.CurrentThread.ManagedThreadId; + + EnsureInitialised(); + + // Always keep the update hook installed so commands arriving from background + // websocket tasks don't depend on a background-thread event subscription. + if (!updateHooked) + { + updateHooked = true; + EditorApplication.update += ProcessQueue; + } + } + + /// + /// Schedule a command for execution on the Unity main thread and await its JSON response. + /// + public static Task ExecuteCommandJsonAsync(string commandJson, CancellationToken cancellationToken) + { + if (commandJson is null) + { + throw new ArgumentNullException(nameof(commandJson)); + } + + EnsureInitialised(); + + var id = Guid.NewGuid().ToString("N"); + var tcs = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); + + var registration = cancellationToken.CanBeCanceled + ? cancellationToken.Register(() => CancelPending(id, cancellationToken)) + : default; + + var pending = new PendingCommand(commandJson, tcs, cancellationToken, registration); + + lock (PendingLock) + { + Pending[id] = pending; + } + + // Proactively wake up the main thread execution loop. This improves responsiveness + // in scenarios where EditorApplication.update is throttled or temporarily not firing + // (e.g., Unity unfocused, compiling, or during domain reload transitions). + RequestMainThreadPump(); + + return tcs.Task; + } + + internal static Task RunOnMainThreadAsync(Func func, CancellationToken cancellationToken) + { + if (func is null) + { + throw new ArgumentNullException(nameof(func)); + } + + var tcs = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); + + var registration = cancellationToken.CanBeCanceled + ? cancellationToken.Register(() => tcs.TrySetCanceled(cancellationToken)) + : default; + + void Invoke() + { + try + { + if (tcs.Task.IsCompleted) + { + return; + } + + var result = func(); + tcs.TrySetResult(result); + } + catch (Exception ex) + { + tcs.TrySetException(ex); + } + finally + { + registration.Dispose(); + } + } + + // Best-effort nudge: if we're posting from a background thread (e.g., websocket receive), + // encourage Unity to run a loop iteration so the posted callback can execute even when unfocused. + try { EditorApplication.QueuePlayerLoopUpdate(); } catch { } + + if (_mainThreadContext != null && Thread.CurrentThread.ManagedThreadId != _mainThreadId) + { + _mainThreadContext.Post(_ => Invoke(), null); + return tcs.Task; + } + + Invoke(); + return tcs.Task; + } + + private static void RequestMainThreadPump() + { + void Pump() + { + try + { + // Hint Unity to run a loop iteration soon. + EditorApplication.QueuePlayerLoopUpdate(); + } + catch + { + // Best-effort only. + } + + ProcessQueue(); + } + + if (_mainThreadContext != null && Thread.CurrentThread.ManagedThreadId != _mainThreadId) + { + _mainThreadContext.Post(_ => Pump(), null); + return; + } + + Pump(); + } + + private static void EnsureInitialised() + { + if (initialised) + { + return; + } + + CommandRegistry.Initialize(); + initialised = true; + } + + private static void HookUpdate() + { + // Deprecated: we keep the update hook installed permanently (see static ctor). + if (updateHooked) return; + updateHooked = true; + EditorApplication.update += ProcessQueue; + } + + private static void UnhookUpdateIfIdle() + { + // Intentionally no-op: keep update hook installed so background commands always process. + // This avoids "must focus Unity to re-establish contact" edge cases. + return; + } + + private static void ProcessQueue() + { + if (Interlocked.Exchange(ref _processingFlag, 1) == 1) + { + return; + } + + try + { + List<(string id, PendingCommand pending)> ready; + + lock (PendingLock) + { + // Early exit inside lock to prevent per-frame List allocations (GitHub issue #577) + if (Pending.Count == 0) + { + return; + } + + ready = new List<(string, PendingCommand)>(Pending.Count); + foreach (var kvp in Pending) + { + if (kvp.Value.IsExecuting) + { + continue; + } + + kvp.Value.IsExecuting = true; + ready.Add((kvp.Key, kvp.Value)); + } + + if (ready.Count == 0) + { + UnhookUpdateIfIdle(); + return; + } + } + + foreach (var (id, pending) in ready) + { + ProcessCommand(id, pending); + } + } + finally + { + Interlocked.Exchange(ref _processingFlag, 0); + } + } + + private static void ProcessCommand(string id, PendingCommand pending) + { + if (pending.CancellationToken.IsCancellationRequested) + { + RemovePending(id, pending); + pending.TrySetCanceled(); + return; + } + + string commandText = pending.CommandJson?.Trim(); + if (string.IsNullOrEmpty(commandText)) + { + pending.TrySetResult(SerializeError("Empty command received")); + RemovePending(id, pending); + return; + } + + if (string.Equals(commandText, "ping", StringComparison.OrdinalIgnoreCase)) + { + var pingResponse = new + { + status = "success", + result = new { message = "pong" } + }; + pending.TrySetResult(JsonConvert.SerializeObject(pingResponse)); + RemovePending(id, pending); + return; + } + + if (!IsValidJson(commandText)) + { + var invalidJsonResponse = new + { + status = "error", + error = "Invalid JSON format", + receivedText = commandText.Length > 50 ? commandText[..50] + "..." : commandText + }; + pending.TrySetResult(JsonConvert.SerializeObject(invalidJsonResponse)); + RemovePending(id, pending); + return; + } + + try + { + var command = JsonConvert.DeserializeObject(commandText); + if (command == null) + { + pending.TrySetResult(SerializeError("Command deserialized to null", "Unknown", commandText)); + RemovePending(id, pending); + return; + } + + if (string.IsNullOrWhiteSpace(command.type)) + { + pending.TrySetResult(SerializeError("Command type cannot be empty")); + RemovePending(id, pending); + return; + } + + if (string.Equals(command.type, "ping", StringComparison.OrdinalIgnoreCase)) + { + var pingResponse = new + { + status = "success", + result = new { message = "pong" } + }; + pending.TrySetResult(JsonConvert.SerializeObject(pingResponse)); + RemovePending(id, pending); + return; + } + + var parameters = command.@params ?? new JObject(); + + // Block execution of disabled resources + var resourceMeta = MCPServiceLocator.ResourceDiscovery.GetResourceMetadata(command.type); + if (resourceMeta != null && !MCPServiceLocator.ResourceDiscovery.IsResourceEnabled(command.type)) + { + pending.TrySetResult(SerializeError( + $"Resource '{command.type}' is disabled in the Unity Editor.")); + RemovePending(id, pending); + return; + } + + // Block execution of disabled tools + var toolMeta = MCPServiceLocator.ToolDiscovery.GetToolMetadata(command.type); + if (toolMeta != null && !MCPServiceLocator.ToolDiscovery.IsToolEnabled(command.type)) + { + pending.TrySetResult(SerializeError( + $"Tool '{command.type}' is disabled in the Unity Editor.")); + RemovePending(id, pending); + return; + } + + var result = CommandRegistry.ExecuteCommand(command.type, parameters, pending.CompletionSource); + + if (result == null) + { + // Async command – cleanup after completion on next editor frame to preserve order. + pending.CompletionSource.Task.ContinueWith(_ => + { + EditorApplication.delayCall += () => RemovePending(id, pending); + }, TaskScheduler.Default); + return; + } + + var response = new { status = "success", result }; + pending.TrySetResult(JsonConvert.SerializeObject(response)); + RemovePending(id, pending); + } + catch (Exception ex) + { + McpLog.Error($"Error processing command: {ex.Message}\n{ex.StackTrace}"); + pending.TrySetResult(SerializeError(ex.Message, "Unknown (error during processing)", ex.StackTrace)); + RemovePending(id, pending); + } + } + + private static void CancelPending(string id, CancellationToken token) + { + PendingCommand pending = null; + lock (PendingLock) + { + if (Pending.Remove(id, out pending)) + { + UnhookUpdateIfIdle(); + } + } + + pending?.TrySetCanceled(); + pending?.Dispose(); + } + + private static void RemovePending(string id, PendingCommand pending) + { + lock (PendingLock) + { + Pending.Remove(id); + UnhookUpdateIfIdle(); + } + + pending.Dispose(); + } + + private static string SerializeError(string message, string commandType = null, string stackTrace = null) + { + var errorResponse = new + { + status = "error", + error = message, + command = commandType ?? "Unknown", + stackTrace + }; + return JsonConvert.SerializeObject(errorResponse); + } + + private static bool IsValidJson(string text) + { + if (string.IsNullOrWhiteSpace(text)) + { + return false; + } + + text = text.Trim(); + if ((text.StartsWith("{") && text.EndsWith("}")) || (text.StartsWith("[") && text.EndsWith("]"))) + { + try + { + JToken.Parse(text); + return true; + } + catch + { + return false; + } + } + + return false; + } + } +} diff --git a/Packages/MCPForUnity/Editor/Services/Transport/TransportCommandDispatcher.cs.meta b/Packages/MCPForUnity/Editor/Services/Transport/TransportCommandDispatcher.cs.meta new file mode 100644 index 00000000..494c010c --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/Transport/TransportCommandDispatcher.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 27407cc9c1ea0412d80b9f8964a5a29d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/Transport/TransportManager.cs b/Packages/MCPForUnity/Editor/Services/Transport/TransportManager.cs new file mode 100644 index 00000000..1204e701 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/Transport/TransportManager.cs @@ -0,0 +1,152 @@ +using System; +using System.Threading.Tasks; +using MCPForUnity.Editor.Helpers; +using MCPForUnity.Editor.Services.Transport.Transports; + +namespace MCPForUnity.Editor.Services.Transport +{ + /// + /// Coordinates the active transport client and exposes lifecycle helpers. + /// + public class TransportManager + { + private IMcpTransportClient _httpClient; + private IMcpTransportClient _stdioClient; + private TransportState _httpState = TransportState.Disconnected("http"); + private TransportState _stdioState = TransportState.Disconnected("stdio"); + private Func _webSocketFactory; + private Func _stdioFactory; + + public TransportManager() + { + Configure( + () => new WebSocketTransportClient(MCPServiceLocator.ToolDiscovery), + () => new StdioTransportClient()); + } + + public void Configure( + Func webSocketFactory, + Func stdioFactory) + { + _webSocketFactory = webSocketFactory ?? throw new ArgumentNullException(nameof(webSocketFactory)); + _stdioFactory = stdioFactory ?? throw new ArgumentNullException(nameof(stdioFactory)); + } + + private IMcpTransportClient GetOrCreateClient(TransportMode mode) + { + return mode switch + { + TransportMode.Http => _httpClient ??= _webSocketFactory(), + TransportMode.Stdio => _stdioClient ??= _stdioFactory(), + _ => throw new ArgumentOutOfRangeException(nameof(mode), mode, "Unsupported transport mode"), + }; + } + + private IMcpTransportClient GetClient(TransportMode mode) + { + return mode switch + { + TransportMode.Http => _httpClient, + TransportMode.Stdio => _stdioClient, + _ => throw new ArgumentOutOfRangeException(nameof(mode), mode, "Unsupported transport mode"), + }; + } + + public async Task StartAsync(TransportMode mode) + { + IMcpTransportClient client = GetOrCreateClient(mode); + + bool started = await client.StartAsync(); + if (!started) + { + try + { + await client.StopAsync(); + } + catch (Exception ex) + { + McpLog.Warn($"Error while stopping transport {client.TransportName}: {ex.Message}"); + } + UpdateState(mode, TransportState.Disconnected(client.TransportName, client.State?.Error ?? "Failed to start")); + return false; + } + + UpdateState(mode, client.State ?? TransportState.Connected(client.TransportName)); + return true; + } + + public async Task StopAsync(TransportMode? mode = null) + { + async Task StopClient(IMcpTransportClient client, TransportMode clientMode) + { + if (client == null) return; + try { await client.StopAsync(); } + catch (Exception ex) { McpLog.Warn($"Error while stopping transport {client.TransportName}: {ex.Message}"); } + finally { UpdateState(clientMode, TransportState.Disconnected(client.TransportName)); } + } + + if (mode == null) + { + await StopClient(_httpClient, TransportMode.Http); + await StopClient(_stdioClient, TransportMode.Stdio); + return; + } + + if (mode == TransportMode.Http) + { + await StopClient(_httpClient, TransportMode.Http); + } + else + { + await StopClient(_stdioClient, TransportMode.Stdio); + } + } + + public async Task VerifyAsync(TransportMode mode) + { + IMcpTransportClient client = GetClient(mode); + if (client == null) + { + return false; + } + + bool ok = await client.VerifyAsync(); + var state = client.State ?? TransportState.Disconnected(client.TransportName, "No state reported"); + UpdateState(mode, state); + return ok; + } + + public TransportState GetState(TransportMode mode) + { + return mode switch + { + TransportMode.Http => _httpState, + TransportMode.Stdio => _stdioState, + _ => throw new ArgumentOutOfRangeException(nameof(mode), mode, "Unsupported transport mode"), + }; + } + + public bool IsRunning(TransportMode mode) => GetState(mode).IsConnected; + + private void UpdateState(TransportMode mode, TransportState state) + { + switch (mode) + { + case TransportMode.Http: + _httpState = state; + break; + case TransportMode.Stdio: + _stdioState = state; + break; + default: + throw new ArgumentOutOfRangeException(nameof(mode), mode, "Unsupported transport mode"); + } + } + } + + public enum TransportMode + { + Http, + Stdio + } +} diff --git a/Packages/MCPForUnity/Editor/Services/Transport/TransportManager.cs.meta b/Packages/MCPForUnity/Editor/Services/Transport/TransportManager.cs.meta new file mode 100644 index 00000000..7adde46c --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/Transport/TransportManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 65fc8ff4c9efb4fc98a0910ba7ca8b02 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/Transport/TransportState.cs b/Packages/MCPForUnity/Editor/Services/Transport/TransportState.cs new file mode 100644 index 00000000..7fb6f20c --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/Transport/TransportState.cs @@ -0,0 +1,52 @@ +namespace MCPForUnity.Editor.Services.Transport +{ + /// + /// Lightweight snapshot of a transport's runtime status for editor UI and diagnostics. + /// + public sealed class TransportState + { + public bool IsConnected { get; } + public string TransportName { get; } + public int? Port { get; } + public string SessionId { get; } + public string Details { get; } + public string Error { get; } + + private TransportState( + bool isConnected, + string transportName, + int? port, + string sessionId, + string details, + string error) + { + IsConnected = isConnected; + TransportName = transportName; + Port = port; + SessionId = sessionId; + Details = details; + Error = error; + } + + public static TransportState Connected( + string transportName, + int? port = null, + string sessionId = null, + string details = null) + => new TransportState(true, transportName, port, sessionId, details, null); + + public static TransportState Disconnected( + string transportName, + string error = null, + int? port = null) + => new TransportState(false, transportName, port, null, null, error); + + public TransportState WithError(string error) => new TransportState( + IsConnected, + TransportName, + Port, + SessionId, + Details, + error); + } +} diff --git a/Packages/MCPForUnity/Editor/Services/Transport/TransportState.cs.meta b/Packages/MCPForUnity/Editor/Services/Transport/TransportState.cs.meta new file mode 100644 index 00000000..5c592ce6 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/Transport/TransportState.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 67ab8e43f6a804698bb5b216cdef0645 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/Transport/Transports.meta b/Packages/MCPForUnity/Editor/Services/Transport/Transports.meta new file mode 100644 index 00000000..878b705a --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/Transport/Transports.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3d467a63b6fad42fa975c731af4b83b3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/Transport/Transports/StdioBridgeHost.cs b/Packages/MCPForUnity/Editor/Services/Transport/Transports/StdioBridgeHost.cs new file mode 100644 index 00000000..ab3af5db --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/Transport/Transports/StdioBridgeHost.cs @@ -0,0 +1,1095 @@ +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Net; +using System.Net.Sockets; +using System.Threading; +using System.Threading.Tasks; +using MCPForUnity.Editor.Constants; +using MCPForUnity.Editor.Helpers; +using MCPForUnity.Editor.Models; +using MCPForUnity.Editor.Services; +using MCPForUnity.Editor.Services.Transport; +using MCPForUnity.Editor.Tools; +using MCPForUnity.Editor.Tools.Prefabs; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using UnityEditor; +using UnityEngine; + +namespace MCPForUnity.Editor.Services.Transport.Transports +{ + class Outbound + { + public byte[] Payload; + public string Tag; + public int? ReqId; + } + + class QueuedCommand + { + public string CommandJson; + public TaskCompletionSource Tcs; + public bool IsExecuting; + } + + [InitializeOnLoad] + public static class StdioBridgeHost + { + private static TcpListener listener; + private static bool isRunning = false; + private static readonly object lockObj = new(); + private static readonly object startStopLock = new(); + private static readonly object clientsLock = new(); + private static readonly HashSet activeClients = new(); + private static readonly BlockingCollection _outbox = new(new ConcurrentQueue()); + private static CancellationTokenSource cts; + private static Task listenerTask; + private static int processingCommands = 0; + private static bool initScheduled = false; + private static bool ensureUpdateHooked = false; + private static bool isStarting = false; + private static double nextStartAt = 0.0f; + private static double nextHeartbeatAt = 0.0f; + private static int heartbeatSeq = 0; + private static Dictionary commandQueue = new(); + private static int mainThreadId; + private static int currentUnityPort = 6400; + private static bool isAutoConnectMode = false; + private const ulong MaxFrameBytes = 64UL * 1024 * 1024; + private const int FrameIOTimeoutMs = 30000; + + private static long _ioSeq = 0; + private static void IoInfo(string s) { McpLog.Info(s, always: false); } + + private static bool IsDebugEnabled() + { + try { return EditorPrefs.GetBool(EditorPrefKeys.DebugLogs, false); } catch { return false; } + } + + private static void LogBreadcrumb(string stage) + { + if (IsDebugEnabled()) + { + McpLog.Info($"[{stage}]", always: false); + } + } + + public static bool IsRunning => isRunning; + public static int GetCurrentPort() => currentUnityPort; + public static bool IsAutoConnectMode() => isAutoConnectMode; + + public static void StartAutoConnect() + { + Stop(); + + try + { + currentUnityPort = PortManager.GetPortWithFallback(); + Start(); + isAutoConnectMode = true; + + TelemetryHelper.RecordBridgeStartup(); + } + catch (Exception ex) + { + McpLog.Error($"Auto-connect failed: {ex.Message}"); + TelemetryHelper.RecordBridgeConnection(false, ex.Message); + throw; + } + } + + public static bool FolderExists(string path) + { + if (string.IsNullOrEmpty(path)) + { + return false; + } + + if (path.Equals("Assets", StringComparison.OrdinalIgnoreCase)) + { + return true; + } + + string fullPath = Path.Combine( + Application.dataPath, + path.StartsWith("Assets/") ? path[7..] : path + ); + return Directory.Exists(fullPath); + } + + static StdioBridgeHost() + { + try { mainThreadId = Thread.CurrentThread.ManagedThreadId; } catch { mainThreadId = 0; } + try + { + var writerThread = new Thread(() => + { + foreach (var item in _outbox.GetConsumingEnumerable()) + { + try + { + long seq = Interlocked.Increment(ref _ioSeq); + IoInfo($"[IO] ➜ write start seq={seq} tag={item.Tag} len={(item.Payload?.Length ?? 0)} reqId={(item.ReqId?.ToString() ?? "?")}"); + var sw = System.Diagnostics.Stopwatch.StartNew(); + sw.Stop(); + IoInfo($"[IO] ✓ write end tag={item.Tag} len={(item.Payload?.Length ?? 0)} reqId={(item.ReqId?.ToString() ?? "?")} durMs={sw.Elapsed.TotalMilliseconds:F1}"); + } + catch (Exception ex) + { + IoInfo($"[IO] ✗ write FAIL tag={item.Tag} reqId={(item.ReqId?.ToString() ?? "?")} {ex.GetType().Name}: {ex.Message}"); + } + } + }) + { IsBackground = true, Name = "MCP-Writer" }; + writerThread.Start(); + } + catch { } + + if (Application.isBatchMode && string.IsNullOrWhiteSpace(Environment.GetEnvironmentVariable("UNITY_MCP_ALLOW_BATCH"))) + { + return; + } + if (ShouldAutoStartBridge()) + { + ScheduleInitRetry(); + if (!ensureUpdateHooked) + { + ensureUpdateHooked = true; + EditorApplication.update += EnsureStartedOnEditorIdle; + } + } + EditorApplication.quitting += Stop; + EditorApplication.playModeStateChanged += _ => + { + if (ShouldAutoStartBridge()) + { + ScheduleInitRetry(); + } + }; + } + + private static void InitializeAfterCompilation() + { + initScheduled = false; + + if (IsCompiling()) + { + ScheduleInitRetry(); + return; + } + + if (!isRunning) + { + Start(); + if (!isRunning) + { + ScheduleInitRetry(); + } + } + } + + private static void ScheduleInitRetry() + { + if (initScheduled) + { + return; + } + initScheduled = true; + nextStartAt = EditorApplication.timeSinceStartup + 0.20f; + if (!ensureUpdateHooked) + { + ensureUpdateHooked = true; + EditorApplication.update += EnsureStartedOnEditorIdle; + } + EditorApplication.delayCall += InitializeAfterCompilation; + } + + private static bool ShouldAutoStartBridge() + { + try + { + bool useHttpTransport = EditorConfigurationCache.Instance.UseHttpTransport; + return !useHttpTransport; + } + catch + { + return true; + } + } + + private static void EnsureStartedOnEditorIdle() + { + if (IsCompiling()) + { + return; + } + + if (isRunning) + { + EditorApplication.update -= EnsureStartedOnEditorIdle; + ensureUpdateHooked = false; + return; + } + + if (nextStartAt > 0 && EditorApplication.timeSinceStartup < nextStartAt) + { + return; + } + + if (isStarting) + { + return; + } + + isStarting = true; + try + { + Start(); + } + finally + { + isStarting = false; + } + if (isRunning) + { + EditorApplication.update -= EnsureStartedOnEditorIdle; + ensureUpdateHooked = false; + } + } + + private static bool IsCompiling() + { + if (EditorApplication.isCompiling) + { + return true; + } + try + { + Type pipeline = Type.GetType("UnityEditor.Compilation.CompilationPipeline, UnityEditor"); + var prop = pipeline?.GetProperty("isCompiling", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static); + if (prop != null) + { + return (bool)prop.GetValue(null); + } + } + catch { } + return false; + } + + public static void Start() + { + lock (startStopLock) + { + if (isRunning && listener != null) + { + if (IsDebugEnabled()) + { + McpLog.Info($"StdioBridgeHost already running on port {currentUnityPort}"); + } + return; + } + + Stop(); + + try + { + currentUnityPort = PortManager.GetPortWithFallback(); + + LogBreadcrumb("Start"); + + const int maxImmediateRetries = 3; + const int retrySleepMs = 75; + int attempt = 0; + for (; ; ) + { + try + { + listener = CreateConfiguredListener(currentUnityPort); + listener.Start(); + break; + } + catch (SocketException se) when (se.SocketErrorCode == SocketError.AddressAlreadyInUse && attempt < maxImmediateRetries) + { + attempt++; + Thread.Sleep(retrySleepMs); + continue; + } + catch (SocketException se) when (se.SocketErrorCode == SocketError.AddressAlreadyInUse && attempt >= maxImmediateRetries) + { + int oldPort = currentUnityPort; + + // Before switching ports, give the old one a brief chance to release if it looks like ours + try + { + if (PortManager.IsPortUsedByMCPForUnity(oldPort)) + { + const int waitStepMs = 100; + int waited = 0; + while (waited < 300 && !PortManager.IsPortAvailable(oldPort)) + { + Thread.Sleep(waitStepMs); + waited += waitStepMs; + } + } + } + catch { } + + currentUnityPort = PortManager.DiscoverNewPort(); + + // Persist the new port so next time we start on this port + try + { + EditorPrefs.SetInt(EditorPrefKeys.UnitySocketPort, currentUnityPort); + } + catch { } + + if (IsDebugEnabled()) + { + if (currentUnityPort == oldPort) + { + McpLog.Info($"Port {oldPort} became available, proceeding"); + } + else + { + McpLog.Info($"Port {oldPort} occupied, switching to port {currentUnityPort}"); + } + } + + listener = CreateConfiguredListener(currentUnityPort); + listener.Start(); + break; + } + } + + isRunning = true; + isAutoConnectMode = false; + string platform = Application.platform.ToString(); + string serverVer = AssetPathUtility.GetPackageVersion(); + McpLog.Info($"StdioBridgeHost started on port {currentUnityPort}. (OS={platform}, server={serverVer})"); + cts = new CancellationTokenSource(); + listenerTask = Task.Run(() => ListenerLoopAsync(cts.Token)); + CommandRegistry.Initialize(); + EditorApplication.update += ProcessCommands; + try { EditorApplication.quitting -= Stop; } catch { } + try { EditorApplication.quitting += Stop; } catch { } + heartbeatSeq++; + WriteHeartbeat(false, "ready"); + nextHeartbeatAt = EditorApplication.timeSinceStartup + 0.5f; + } + catch (SocketException ex) + { + McpLog.Error($"Failed to start TCP listener: {ex.Message}"); + } + } + } + + private static TcpListener CreateConfiguredListener(int port) + { + var newListener = new TcpListener(IPAddress.Loopback, port); +#if !UNITY_EDITOR_OSX + newListener.Server.SetSocketOption( + SocketOptionLevel.Socket, + SocketOptionName.ReuseAddress, + true + ); +#endif +#if UNITY_EDITOR_WIN + try + { + newListener.ExclusiveAddressUse = false; + } + catch { } +#endif + try + { + newListener.Server.LingerState = new LingerOption(true, 0); + } + catch (Exception) + { + } + return newListener; + } + + public static void Stop() + { + Task toWait = null; + lock (startStopLock) + { + if (!isRunning) + { + return; + } + + try + { + isRunning = false; + + var cancel = cts; + cts = null; + try { cancel?.Cancel(); } catch { } + + try { listener?.Stop(); } catch { } + listener = null; + + toWait = listenerTask; + listenerTask = null; + } + catch (Exception ex) + { + McpLog.Error($"Error stopping StdioBridgeHost: {ex.Message}"); + } + } + + TcpClient[] toClose; + lock (clientsLock) + { + toClose = activeClients.ToArray(); + activeClients.Clear(); + } + foreach (var c in toClose) + { + try { c.Close(); } catch { } + } + + if (toWait != null) + { + try { toWait.Wait(100); } catch { } + } + + try { EditorApplication.update -= ProcessCommands; } catch { } + try { EditorApplication.quitting -= Stop; } catch { } + + try + { + string dir = Environment.GetEnvironmentVariable("UNITY_MCP_STATUS_DIR"); + if (string.IsNullOrWhiteSpace(dir)) + { + dir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".unity-mcp"); + } + string statusFile = Path.Combine(dir, $"unity-mcp-status-{ComputeProjectHash(Application.dataPath)}.json"); + if (File.Exists(statusFile)) + { + File.Delete(statusFile); + if (IsDebugEnabled()) McpLog.Info($"Deleted status file: {statusFile}"); + } + } + catch (Exception ex) + { + if (IsDebugEnabled()) McpLog.Warn($"Failed to delete status file: {ex.Message}"); + } + + if (IsDebugEnabled()) McpLog.Info("StdioBridgeHost stopped."); + } + + private static async Task ListenerLoopAsync(CancellationToken token) + { + while (isRunning && !token.IsCancellationRequested) + { + try + { + TcpClient client = await listener.AcceptTcpClientAsync(); + client.Client.SetSocketOption( + SocketOptionLevel.Socket, + SocketOptionName.KeepAlive, + true + ); + + client.ReceiveTimeout = 60000; + + _ = Task.Run(() => HandleClientAsync(client, token), token); + } + catch (ObjectDisposedException) + { + if (!isRunning || token.IsCancellationRequested) + { + break; + } + } + catch (OperationCanceledException) + { + break; + } + catch (Exception ex) + { + if (isRunning && !token.IsCancellationRequested) + { + if (IsDebugEnabled()) McpLog.Error($"Listener error: {ex.Message}"); + } + } + } + } + + private static async Task HandleClientAsync(TcpClient client, CancellationToken token) + { + using (client) + using (NetworkStream stream = client.GetStream()) + { + lock (clientsLock) { activeClients.Add(client); } + try + { + try + { + if (IsDebugEnabled()) + { + var ep = client.Client?.RemoteEndPoint?.ToString() ?? "unknown"; + McpLog.Info($"Client connected {ep}"); + } + } + catch { } + try + { + client.NoDelay = true; + } + catch { } + try + { + string handshake = "WELCOME UNITY-MCP 1 FRAMING=1\n"; + byte[] handshakeBytes = System.Text.Encoding.ASCII.GetBytes(handshake); + using var cts = new CancellationTokenSource(FrameIOTimeoutMs); +#if NETSTANDARD2_1 || NET6_0_OR_GREATER + await stream.WriteAsync(handshakeBytes.AsMemory(0, handshakeBytes.Length), cts.Token).ConfigureAwait(false); +#else + await stream.WriteAsync(handshakeBytes, 0, handshakeBytes.Length, cts.Token).ConfigureAwait(false); +#endif + if (IsDebugEnabled()) McpLog.Info("Sent handshake FRAMING=1 (strict)", always: false); + } + catch (Exception ex) + { + if (IsDebugEnabled()) McpLog.Warn($"Handshake failed: {ex.Message}"); + return; + } + + while (isRunning && !token.IsCancellationRequested) + { + try + { + string commandText = await ReadFrameAsUtf8Async(stream, FrameIOTimeoutMs, token).ConfigureAwait(false); + + try + { + if (IsDebugEnabled()) + { + var preview = commandText.Length > 120 ? commandText.Substring(0, 120) + "…" : commandText; + McpLog.Info($"recv framed: {preview}", always: false); + } + } + catch { } + string commandId = Guid.NewGuid().ToString(); + var tcs = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); + + if (commandText.Trim() == "ping") + { + byte[] pingResponseBytes = System.Text.Encoding.UTF8.GetBytes( + "{\"status\":\"success\",\"result\":{\"message\":\"pong\"}}" + ); + await WriteFrameAsync(stream, pingResponseBytes); + continue; + } + + lock (lockObj) + { + commandQueue[commandId] = new QueuedCommand + { + CommandJson = commandText, + Tcs = tcs, + IsExecuting = false + }; + } + + string response; + try + { + using var respCts = new CancellationTokenSource(FrameIOTimeoutMs); + var completed = await Task.WhenAny(tcs.Task, Task.Delay(FrameIOTimeoutMs, respCts.Token)).ConfigureAwait(false); + if (completed == tcs.Task) + { + respCts.Cancel(); + response = tcs.Task.Result; + } + else + { + var timeoutResponse = new + { + status = "error", + error = $"Command processing timed out after {FrameIOTimeoutMs} ms", + }; + response = JsonConvert.SerializeObject(timeoutResponse); + } + } + catch (Exception ex) + { + var errorResponse = new + { + status = "error", + error = ex.Message, + }; + response = JsonConvert.SerializeObject(errorResponse); + } + + if (IsDebugEnabled()) + { + try { McpLog.Info("[MCP] sending framed response", always: false); } catch { } + } + long seq = Interlocked.Increment(ref _ioSeq); + byte[] responseBytes; + try + { + responseBytes = System.Text.Encoding.UTF8.GetBytes(response); + IoInfo($"[IO] ➜ write start seq={seq} tag=response len={responseBytes.Length} reqId=?"); + } + catch (Exception ex) + { + IoInfo($"[IO] ✗ serialize FAIL tag=response reqId=? {ex.GetType().Name}: {ex.Message}"); + throw; + } + + var swDirect = System.Diagnostics.Stopwatch.StartNew(); + try + { + await WriteFrameAsync(stream, responseBytes); + swDirect.Stop(); + IoInfo($"[IO] ✓ write end tag=response len={responseBytes.Length} reqId=? durMs={swDirect.Elapsed.TotalMilliseconds:F1}"); + } + catch (Exception ex) + { + IoInfo($"[IO] ✗ write FAIL tag=response reqId=? {ex.GetType().Name}: {ex.Message}"); + throw; + } + } + catch (Exception ex) + { + string msg = ex.Message ?? string.Empty; + bool isBenign = + msg.IndexOf("Connection closed before reading expected bytes", StringComparison.OrdinalIgnoreCase) >= 0 + || msg.IndexOf("Read timed out", StringComparison.OrdinalIgnoreCase) >= 0 + || ex is IOException; + if (isBenign) + { + if (IsDebugEnabled()) McpLog.Info($"Client handler: {msg}", always: false); + } + else + { + McpLog.Error($"Client handler error: {msg}"); + } + break; + } + } + } + finally + { + lock (clientsLock) { activeClients.Remove(client); } + } + } + } + + private static async Task ReadExactAsync(NetworkStream stream, int count, int timeoutMs, CancellationToken cancel = default) + { + byte[] buffer = new byte[count]; + int offset = 0; + var stopwatch = System.Diagnostics.Stopwatch.StartNew(); + + while (offset < count) + { + int remaining = count - offset; + int remainingTimeout = timeoutMs <= 0 + ? Timeout.Infinite + : timeoutMs - (int)stopwatch.ElapsedMilliseconds; + + if (remainingTimeout != Timeout.Infinite && remainingTimeout <= 0) + { + throw new IOException("Read timed out"); + } + + using var cts = CancellationTokenSource.CreateLinkedTokenSource(cancel); + if (remainingTimeout != Timeout.Infinite) + { + cts.CancelAfter(remainingTimeout); + } + + try + { +#if NETSTANDARD2_1 || NET6_0_OR_GREATER + int read = await stream.ReadAsync(buffer.AsMemory(offset, remaining), cts.Token).ConfigureAwait(false); +#else + int read = await stream.ReadAsync(buffer, offset, remaining, cts.Token).ConfigureAwait(false); +#endif + if (read == 0) + { + throw new IOException("Connection closed before reading expected bytes"); + } + offset += read; + } + catch (OperationCanceledException) when (!cancel.IsCancellationRequested) + { + throw new IOException("Read timed out"); + } + } + + return buffer; + } + + private static Task WriteFrameAsync(NetworkStream stream, byte[] payload) + { + using var cts = new CancellationTokenSource(FrameIOTimeoutMs); + return WriteFrameAsync(stream, payload, cts.Token); + } + + private static async Task WriteFrameAsync(NetworkStream stream, byte[] payload, CancellationToken cancel) + { + if (payload == null) + { + throw new ArgumentNullException(nameof(payload)); + } + if ((ulong)payload.LongLength > MaxFrameBytes) + { + throw new IOException($"Frame too large: {payload.LongLength}"); + } + byte[] header = new byte[8]; + WriteUInt64BigEndian(header, (ulong)payload.LongLength); +#if NETSTANDARD2_1 || NET6_0_OR_GREATER + await stream.WriteAsync(header.AsMemory(0, header.Length), cancel).ConfigureAwait(false); + await stream.WriteAsync(payload.AsMemory(0, payload.Length), cancel).ConfigureAwait(false); +#else + await stream.WriteAsync(header, 0, header.Length, cancel).ConfigureAwait(false); + await stream.WriteAsync(payload, 0, payload.Length, cancel).ConfigureAwait(false); +#endif + } + + private static async Task ReadFrameAsUtf8Async(NetworkStream stream, int timeoutMs, CancellationToken cancel) + { + byte[] header = await ReadExactAsync(stream, 8, timeoutMs, cancel).ConfigureAwait(false); + ulong payloadLen = ReadUInt64BigEndian(header); + if (payloadLen > MaxFrameBytes) + { + throw new IOException($"Invalid framed length: {payloadLen}"); + } + if (payloadLen == 0UL) + throw new IOException("Zero-length frames are not allowed"); + if (payloadLen > int.MaxValue) + { + throw new IOException("Frame too large for buffer"); + } + int count = (int)payloadLen; + byte[] payload = await ReadExactAsync(stream, count, timeoutMs, cancel).ConfigureAwait(false); + return System.Text.Encoding.UTF8.GetString(payload); + } + + private static ulong ReadUInt64BigEndian(byte[] buffer) + { + if (buffer == null || buffer.Length < 8) return 0UL; + return ((ulong)buffer[0] << 56) + | ((ulong)buffer[1] << 48) + | ((ulong)buffer[2] << 40) + | ((ulong)buffer[3] << 32) + | ((ulong)buffer[4] << 24) + | ((ulong)buffer[5] << 16) + | ((ulong)buffer[6] << 8) + | buffer[7]; + } + + private static void WriteUInt64BigEndian(byte[] dest, ulong value) + { + if (dest == null || dest.Length < 8) + { + throw new ArgumentException("Destination buffer too small for UInt64"); + } + dest[0] = (byte)(value >> 56); + dest[1] = (byte)(value >> 48); + dest[2] = (byte)(value >> 40); + dest[3] = (byte)(value >> 32); + dest[4] = (byte)(value >> 24); + dest[5] = (byte)(value >> 16); + dest[6] = (byte)(value >> 8); + dest[7] = (byte)(value); + } + + private static void ProcessCommands() + { + if (!isRunning) return; + if (Interlocked.Exchange(ref processingCommands, 1) == 1) return; + try + { + double now = EditorApplication.timeSinceStartup; + if (now >= nextHeartbeatAt) + { + WriteHeartbeat(false); + nextHeartbeatAt = now + 0.5f; + } + + List<(string id, QueuedCommand command)> work; + lock (lockObj) + { + // Early exit inside lock to prevent per-frame List allocations (GitHub issue #577) + if (commandQueue.Count == 0) + { + return; + } + + work = new List<(string, QueuedCommand)>(commandQueue.Count); + foreach (var kvp in commandQueue) + { + var queued = kvp.Value; + if (queued.IsExecuting) continue; + queued.IsExecuting = true; + work.Add((kvp.Key, queued)); + } + } + + foreach (var item in work) + { + string id = item.id; + QueuedCommand queuedCommand = item.command; + string commandText = queuedCommand.CommandJson; + TaskCompletionSource tcs = queuedCommand.Tcs; + + if (string.IsNullOrWhiteSpace(commandText)) + { + var emptyResponse = new + { + status = "error", + error = "Empty command received", + }; + tcs.SetResult(JsonConvert.SerializeObject(emptyResponse)); + lock (lockObj) { commandQueue.Remove(id); } + continue; + } + + commandText = commandText.Trim(); + if (commandText == "ping") + { + var pingResponse = new + { + status = "success", + result = new { message = "pong" }, + }; + tcs.SetResult(JsonConvert.SerializeObject(pingResponse)); + lock (lockObj) { commandQueue.Remove(id); } + continue; + } + + if (!IsValidJson(commandText)) + { + var invalidJsonResponse = new + { + status = "error", + error = "Invalid JSON format", + receivedText = commandText.Length > 50 + ? commandText[..50] + "..." + : commandText, + }; + tcs.SetResult(JsonConvert.SerializeObject(invalidJsonResponse)); + lock (lockObj) { commandQueue.Remove(id); } + continue; + } + + ExecuteQueuedCommand(id, commandText, tcs); + } + } + finally + { + Interlocked.Exchange(ref processingCommands, 0); + } + } + + private static void ExecuteQueuedCommand(string commandId, string payload, TaskCompletionSource completionSource) + { + async void Runner() + { + try + { + using var cts = new CancellationTokenSource(FrameIOTimeoutMs); + string response = await TransportCommandDispatcher.ExecuteCommandJsonAsync(payload, cts.Token).ConfigureAwait(true); + completionSource.TrySetResult(response); + } + catch (OperationCanceledException) + { + var timeoutResponse = new + { + status = "error", + error = $"Command processing timed out after {FrameIOTimeoutMs} ms", + }; + completionSource.TrySetResult(JsonConvert.SerializeObject(timeoutResponse)); + } + catch (Exception ex) + { + McpLog.Error($"Error processing command: {ex.Message}\n{ex.StackTrace}"); + var response = new + { + status = "error", + error = ex.Message, + receivedText = payload?.Length > 50 + ? payload[..50] + "..." + : payload, + }; + completionSource.TrySetResult(JsonConvert.SerializeObject(response)); + } + finally + { + lock (lockObj) + { + commandQueue.Remove(commandId); + } + } + } + + Runner(); + } + + private static object InvokeOnMainThreadWithTimeout(Func func, int timeoutMs) + { + if (func == null) return null; + try + { + if (mainThreadId == 0) + { + try { return func(); } + catch (Exception ex) { throw new InvalidOperationException($"Main thread handler error: {ex.Message}", ex); } + } + try + { + if (Thread.CurrentThread.ManagedThreadId == mainThreadId) + { + return func(); + } + } + catch { } + + object result = null; + Exception captured = null; + var tcs = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); + EditorApplication.delayCall += () => + { + try + { + result = func(); + } + catch (Exception ex) + { + captured = ex; + } + finally + { + try { tcs.TrySetResult(true); } catch { } + } + }; + + bool completed = tcs.Task.Wait(timeoutMs); + if (!completed) + { + return null; + } + if (captured != null) + { + throw new InvalidOperationException($"Main thread handler error: {captured.Message}", captured); + } + return result; + } + catch (Exception ex) + { + throw new InvalidOperationException($"Failed to invoke on main thread: {ex.Message}", ex); + } + } + + private static bool IsValidJson(string text) + { + if (string.IsNullOrWhiteSpace(text)) + { + return false; + } + + text = text.Trim(); + if ( + (text.StartsWith("{") && text.EndsWith("}")) + || + (text.StartsWith("[") && text.EndsWith("]")) + ) + { + try + { + JToken.Parse(text); + return true; + } + catch + { + return false; + } + } + + return false; + } + + + public static void WriteHeartbeat(bool reloading, string reason = null) + { + try + { + string dir = Environment.GetEnvironmentVariable("UNITY_MCP_STATUS_DIR"); + if (string.IsNullOrWhiteSpace(dir)) + { + dir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".unity-mcp"); + } + Directory.CreateDirectory(dir); + string filePath = Path.Combine(dir, $"unity-mcp-status-{ComputeProjectHash(Application.dataPath)}.json"); + + string projectName = "Unknown"; + try + { + string projectPath = Application.dataPath; + if (!string.IsNullOrEmpty(projectPath)) + { + projectPath = projectPath.TrimEnd('/', '\\'); + if (projectPath.EndsWith("Assets", StringComparison.OrdinalIgnoreCase)) + { + projectPath = projectPath.Substring(0, projectPath.Length - 6).TrimEnd('/', '\\'); + } + projectName = Path.GetFileName(projectPath); + if (string.IsNullOrEmpty(projectName)) + { + projectName = "Unknown"; + } + } + } + catch { } + + var payload = new + { + unity_port = currentUnityPort, + reloading, + reason = reason ?? (reloading ? "reloading" : "ready"), + seq = heartbeatSeq, + project_path = Application.dataPath, + project_name = projectName, + unity_version = Application.unityVersion, + last_heartbeat = DateTime.UtcNow.ToString("O") + }; + File.WriteAllText(filePath, JsonConvert.SerializeObject(payload), new System.Text.UTF8Encoding(false)); + } + catch (Exception) + { + } + } + + private static string ComputeProjectHash(string input) + { + try + { + using var sha1 = System.Security.Cryptography.SHA1.Create(); + byte[] bytes = System.Text.Encoding.UTF8.GetBytes(input ?? string.Empty); + byte[] hashBytes = sha1.ComputeHash(bytes); + var sb = new System.Text.StringBuilder(); + foreach (byte b in hashBytes) + { + sb.Append(b.ToString("x2")); + } + return sb.ToString()[..8]; + } + catch + { + return "default"; + } + } + } +} diff --git a/Packages/MCPForUnity/Editor/Services/Transport/Transports/StdioBridgeHost.cs.meta b/Packages/MCPForUnity/Editor/Services/Transport/Transports/StdioBridgeHost.cs.meta new file mode 100644 index 00000000..b8368564 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/Transport/Transports/StdioBridgeHost.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fd295cefe518e438693c12e9c7f37488 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/Transport/Transports/StdioTransportClient.cs b/Packages/MCPForUnity/Editor/Services/Transport/Transports/StdioTransportClient.cs new file mode 100644 index 00000000..ea3ed1a2 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/Transport/Transports/StdioTransportClient.cs @@ -0,0 +1,50 @@ +using System; +using System.Threading.Tasks; +using MCPForUnity.Editor.Helpers; + +namespace MCPForUnity.Editor.Services.Transport.Transports +{ + /// + /// Adapts the existing TCP bridge into the transport abstraction. + /// + public class StdioTransportClient : IMcpTransportClient + { + private TransportState _state = TransportState.Disconnected("stdio"); + + public bool IsConnected => StdioBridgeHost.IsRunning; + public string TransportName => "stdio"; + public TransportState State => _state; + + public Task StartAsync() + { + try + { + StdioBridgeHost.StartAutoConnect(); + _state = TransportState.Connected("stdio", port: StdioBridgeHost.GetCurrentPort()); + return Task.FromResult(true); + } + catch (Exception ex) + { + _state = TransportState.Disconnected("stdio", ex.Message); + return Task.FromResult(false); + } + } + + public Task StopAsync() + { + StdioBridgeHost.Stop(); + _state = TransportState.Disconnected("stdio"); + return Task.CompletedTask; + } + + public Task VerifyAsync() + { + bool running = StdioBridgeHost.IsRunning; + _state = running + ? TransportState.Connected("stdio", port: StdioBridgeHost.GetCurrentPort()) + : TransportState.Disconnected("stdio", "Bridge not running"); + return Task.FromResult(running); + } + + } +} diff --git a/Packages/MCPForUnity/Editor/Services/Transport/Transports/StdioTransportClient.cs.meta b/Packages/MCPForUnity/Editor/Services/Transport/Transports/StdioTransportClient.cs.meta new file mode 100644 index 00000000..f4ac1ab0 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/Transport/Transports/StdioTransportClient.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b2743f3468d5f433dbf2220f0838d8d1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Services/Transport/Transports/WebSocketTransportClient.cs b/Packages/MCPForUnity/Editor/Services/Transport/Transports/WebSocketTransportClient.cs new file mode 100644 index 00000000..b94c0836 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/Transport/Transports/WebSocketTransportClient.cs @@ -0,0 +1,741 @@ +using System; +using System.Buffers; +using System.Collections.Generic; +using System.IO; +using System.Net.WebSockets; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using MCPForUnity.Editor.Constants; +using MCPForUnity.Editor.Helpers; +using MCPForUnity.Editor.Services; +using MCPForUnity.Editor.Services.Transport; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using UnityEditor; +using UnityEngine; + +namespace MCPForUnity.Editor.Services.Transport.Transports +{ + /// + /// Maintains a persistent WebSocket connection to the MCP server plugin hub. + /// Handles registration, keep-alives, and command dispatch back into Unity via + /// . + /// + public class WebSocketTransportClient : IMcpTransportClient, IDisposable + { + private const string TransportDisplayName = "websocket"; + private static readonly TimeSpan[] ReconnectSchedule = + { + TimeSpan.Zero, + TimeSpan.FromSeconds(1), + TimeSpan.FromSeconds(3), + TimeSpan.FromSeconds(5), + TimeSpan.FromSeconds(10), + TimeSpan.FromSeconds(30) + }; + + private static readonly TimeSpan DefaultKeepAliveInterval = TimeSpan.FromSeconds(15); + private static readonly TimeSpan DefaultCommandTimeout = TimeSpan.FromSeconds(30); + + private readonly IToolDiscoveryService _toolDiscoveryService; + private ClientWebSocket _socket; + private CancellationTokenSource _lifecycleCts; + private CancellationTokenSource _connectionCts; + private Task _receiveTask; + private Task _keepAliveTask; + private readonly SemaphoreSlim _sendLock = new(1, 1); + + private Uri _endpointUri; + private string _sessionId; + private string _projectHash; + private string _projectName; + private string _projectPath; + private string _unityVersion; + private TimeSpan _keepAliveInterval = DefaultKeepAliveInterval; + private TimeSpan _socketKeepAliveInterval = DefaultKeepAliveInterval; + private volatile bool _isConnected; + private int _isReconnectingFlag; + private TransportState _state = TransportState.Disconnected(TransportDisplayName, "Transport not started"); + private string _apiKey; + private bool _disposed; + + public WebSocketTransportClient(IToolDiscoveryService toolDiscoveryService = null) + { + _toolDiscoveryService = toolDiscoveryService; + } + + public bool IsConnected => _isConnected; + public string TransportName => TransportDisplayName; + public TransportState State => _state; + + private Task> GetEnabledToolsOnMainThreadAsync(CancellationToken token) + { + return TransportCommandDispatcher.RunOnMainThreadAsync( + () => _toolDiscoveryService?.GetEnabledTools() ?? new List(), + token); + } + + public async Task StartAsync() + { + // Capture identity values on the main thread before any async context switching + _projectName = ProjectIdentityUtility.GetProjectName(); + _projectHash = ProjectIdentityUtility.GetProjectHash(); + _unityVersion = Application.unityVersion; + _apiKey = HttpEndpointUtility.IsRemoteScope() + ? EditorPrefs.GetString(EditorPrefKeys.ApiKey, string.Empty) + : string.Empty; + + // Get project root path (strip /Assets from dataPath) for focus nudging + string dataPath = Application.dataPath; + if (!string.IsNullOrEmpty(dataPath)) + { + string normalized = dataPath.TrimEnd('/', '\\'); + if (string.Equals(System.IO.Path.GetFileName(normalized), "Assets", StringComparison.Ordinal)) + { + _projectPath = System.IO.Path.GetDirectoryName(normalized) ?? normalized; + } + else + { + _projectPath = normalized; // Fallback if path doesn't end with Assets + } + } + + await StopAsync(); + + _lifecycleCts = new CancellationTokenSource(); + _endpointUri = BuildWebSocketUri(HttpEndpointUtility.GetBaseUrl()); + _sessionId = null; + + if (!await EstablishConnectionAsync(_lifecycleCts.Token)) + { + await StopAsync(); + return false; + } + + // State is connected but session ID might be pending until 'registered' message + _state = TransportState.Connected(TransportDisplayName, sessionId: "pending", details: _endpointUri.ToString()); + _isConnected = true; + return true; + } + + public async Task StopAsync() + { + if (_lifecycleCts == null) + { + return; + } + + try + { + _lifecycleCts.Cancel(); + } + catch { } + + await StopConnectionLoopsAsync().ConfigureAwait(false); + + if (_socket != null) + { + try + { + if (_socket.State == WebSocketState.Open || _socket.State == WebSocketState.CloseReceived) + { + await _socket.CloseAsync(WebSocketCloseStatus.NormalClosure, "Shutdown", CancellationToken.None).ConfigureAwait(false); + } + } + catch { } + finally + { + _socket.Dispose(); + _socket = null; + } + } + + _isConnected = false; + _state = TransportState.Disconnected(TransportDisplayName); + + _lifecycleCts.Dispose(); + _lifecycleCts = null; + } + + public async Task VerifyAsync() + { + if (_socket == null || _socket.State != WebSocketState.Open) + { + return false; + } + + if (_lifecycleCts == null) + { + return false; + } + + try + { + using var timeoutCts = CancellationTokenSource.CreateLinkedTokenSource(_lifecycleCts.Token); + timeoutCts.CancelAfter(TimeSpan.FromSeconds(5)); + await SendPongAsync(timeoutCts.Token).ConfigureAwait(false); + return true; + } + catch (Exception ex) + { + McpLog.Warn($"[WebSocket] Verify ping failed: {ex.Message}"); + return false; + } + } + + public void Dispose() + { + if (_disposed) + { + return; + } + + try + { + // Ensure background loops are stopped before disposing shared resources + StopAsync().GetAwaiter().GetResult(); + } + catch (Exception ex) + { + McpLog.Warn($"[WebSocket] Dispose failed to stop cleanly: {ex.Message}"); + } + + _sendLock?.Dispose(); + _socket?.Dispose(); + _lifecycleCts?.Dispose(); + _disposed = true; + } + + private async Task EstablishConnectionAsync(CancellationToken token) + { + await StopConnectionLoopsAsync().ConfigureAwait(false); + + _connectionCts?.Dispose(); + _connectionCts = CancellationTokenSource.CreateLinkedTokenSource(token); + CancellationToken connectionToken = _connectionCts.Token; + + _socket?.Dispose(); + _socket = new ClientWebSocket(); + _socket.Options.KeepAliveInterval = _socketKeepAliveInterval; + + // Add API key header if configured (for remote-hosted mode) + if (!string.IsNullOrEmpty(_apiKey)) + { + _socket.Options.SetRequestHeader(AuthConstants.ApiKeyHeader, _apiKey); + } + + try + { + await _socket.ConnectAsync(_endpointUri, connectionToken).ConfigureAwait(false); + } + catch (Exception ex) + { + string errorMsg = "Connection failed. Check that the server URL is correct, the server is running, and your API key (if required) is valid."; + McpLog.Error($"[WebSocket] {errorMsg} (Detail: {ex.Message})"); + _state = TransportState.Disconnected(TransportDisplayName, errorMsg); + return false; + } + + StartBackgroundLoops(connectionToken); + + try + { + await SendRegisterAsync(connectionToken).ConfigureAwait(false); + } + catch (Exception ex) + { + string regMsg = $"Registration with server failed: {ex.Message}"; + McpLog.Error($"[WebSocket] {regMsg}"); + _state = TransportState.Disconnected(TransportDisplayName, regMsg); + return false; + } + + return true; + } + + /// + /// Stops the connection loops and disposes of the connection CTS. + /// Particularly useful when reconnecting, we want to ensure that background loops are cancelled correctly before starting new oens + /// + /// Whether to await the receive and keep alive tasks before disposing. + private async Task StopConnectionLoopsAsync(bool awaitTasks = true) + { + if (_connectionCts != null && !_connectionCts.IsCancellationRequested) + { + try { _connectionCts.Cancel(); } catch { } + } + + if (_receiveTask != null) + { + if (awaitTasks) + { + try { await _receiveTask.ConfigureAwait(false); } catch { } + _receiveTask = null; + } + else if (_receiveTask.IsCompleted) + { + _receiveTask = null; + } + } + + if (_keepAliveTask != null) + { + if (awaitTasks) + { + try { await _keepAliveTask.ConfigureAwait(false); } catch { } + _keepAliveTask = null; + } + else if (_keepAliveTask.IsCompleted) + { + _keepAliveTask = null; + } + } + + if (_connectionCts != null) + { + _connectionCts.Dispose(); + _connectionCts = null; + } + } + + private void StartBackgroundLoops(CancellationToken token) + { + if ((_receiveTask != null && !_receiveTask.IsCompleted) || (_keepAliveTask != null && !_keepAliveTask.IsCompleted)) + { + return; + } + + _receiveTask = Task.Run(() => ReceiveLoopAsync(token), CancellationToken.None); + _keepAliveTask = Task.Run(() => KeepAliveLoopAsync(token), CancellationToken.None); + } + + private async Task ReceiveLoopAsync(CancellationToken token) + { + while (!token.IsCancellationRequested) + { + try + { + string message = await ReceiveMessageAsync(token).ConfigureAwait(false); + if (message == null) + { + continue; + } + await HandleMessageAsync(message, token).ConfigureAwait(false); + } + catch (OperationCanceledException) + { + break; + } + catch (WebSocketException wse) + { + McpLog.Warn($"[WebSocket] Receive loop error: {wse.Message}"); + await HandleSocketClosureAsync(wse.Message).ConfigureAwait(false); + break; + } + catch (Exception ex) + { + McpLog.Warn($"[WebSocket] Unexpected receive error: {ex.Message}"); + await HandleSocketClosureAsync(ex.Message).ConfigureAwait(false); + break; + } + } + } + + private async Task ReceiveMessageAsync(CancellationToken token) + { + if (_socket == null) + { + return null; + } + + byte[] rentedBuffer = System.Buffers.ArrayPool.Shared.Rent(8192); + var buffer = new ArraySegment(rentedBuffer); + using var ms = new MemoryStream(8192); + + try + { + while (!token.IsCancellationRequested) + { + WebSocketReceiveResult result = await _socket.ReceiveAsync(buffer, token).ConfigureAwait(false); + + if (result.MessageType == WebSocketMessageType.Close) + { + await HandleSocketClosureAsync(result.CloseStatusDescription ?? "Server closed connection").ConfigureAwait(false); + return null; + } + + if (result.Count > 0) + { + ms.Write(buffer.Array!, buffer.Offset, result.Count); + } + + if (result.EndOfMessage) + { + break; + } + } + + if (ms.Length == 0) + { + return null; + } + + return Encoding.UTF8.GetString(ms.ToArray()); + } + finally + { + System.Buffers.ArrayPool.Shared.Return(rentedBuffer); + } + } + + private async Task HandleMessageAsync(string message, CancellationToken token) + { + JObject payload; + try + { + payload = JObject.Parse(message); + } + catch (Exception ex) + { + McpLog.Warn($"[WebSocket] Invalid JSON payload: {ex.Message}"); + return; + } + + string messageType = payload.Value("type") ?? string.Empty; + + switch (messageType) + { + case "welcome": + ApplyWelcome(payload); + break; + case "registered": + await HandleRegisteredAsync(payload, token).ConfigureAwait(false); + break; + case "execute": + await HandleExecuteAsync(payload, token).ConfigureAwait(false); + break; + case "ping": + await SendPongAsync(token).ConfigureAwait(false); + break; + default: + // No-op for unrecognised types (keep-alives, telemetry, etc.) + break; + } + } + + private void ApplyWelcome(JObject payload) + { + int? keepAliveSeconds = payload.Value("keepAliveInterval"); + if (keepAliveSeconds.HasValue && keepAliveSeconds.Value > 0) + { + _keepAliveInterval = TimeSpan.FromSeconds(keepAliveSeconds.Value); + _socketKeepAliveInterval = _keepAliveInterval; + } + + int? serverTimeoutSeconds = payload.Value("serverTimeout"); + if (serverTimeoutSeconds.HasValue) + { + int sourceSeconds = keepAliveSeconds ?? serverTimeoutSeconds.Value; + int safeSeconds = Math.Max(5, Math.Min(serverTimeoutSeconds.Value, sourceSeconds)); + _socketKeepAliveInterval = TimeSpan.FromSeconds(safeSeconds); + } + } + + private async Task HandleRegisteredAsync(JObject payload, CancellationToken token) + { + string newSessionId = payload.Value("session_id"); + if (!string.IsNullOrEmpty(newSessionId)) + { + _sessionId = newSessionId; + ProjectIdentityUtility.SetSessionId(_sessionId); + _state = TransportState.Connected(TransportDisplayName, sessionId: _sessionId, details: _endpointUri.ToString()); + McpLog.Info($"[WebSocket] Registered with session ID: {_sessionId}", false); + + await SendRegisterToolsAsync(token).ConfigureAwait(false); + } + } + + private async Task SendRegisterToolsAsync(CancellationToken token) + { + if (_toolDiscoveryService == null) return; + + token.ThrowIfCancellationRequested(); + var tools = await GetEnabledToolsOnMainThreadAsync(token).ConfigureAwait(false); + token.ThrowIfCancellationRequested(); + McpLog.Info($"[WebSocket] Preparing to register {tools.Count} tool(s) with the bridge.", false); + var toolsArray = new JArray(); + + foreach (var tool in tools) + { + var toolObj = new JObject + { + ["name"] = tool.Name, + ["description"] = tool.Description, + ["structured_output"] = tool.StructuredOutput, + ["requires_polling"] = tool.RequiresPolling, + ["poll_action"] = tool.PollAction + }; + + var paramsArray = new JArray(); + if (tool.Parameters != null) + { + foreach (var p in tool.Parameters) + { + paramsArray.Add(new JObject + { + ["name"] = p.Name, + ["description"] = p.Description, + ["type"] = p.Type, + ["required"] = p.Required, + ["default_value"] = p.DefaultValue + }); + } + } + toolObj["parameters"] = paramsArray; + toolsArray.Add(toolObj); + } + + var payload = new JObject + { + ["type"] = "register_tools", + ["tools"] = toolsArray + }; + + await SendJsonAsync(payload, token).ConfigureAwait(false); + McpLog.Info($"[WebSocket] Sent {tools.Count} tools registration", false); + } + + private async Task HandleExecuteAsync(JObject payload, CancellationToken token) + { + string commandId = payload.Value("id"); + string commandName = payload.Value("name"); + JObject parameters = payload.Value("params") ?? new JObject(); + int timeoutSeconds = payload.Value("timeout") ?? (int)DefaultCommandTimeout.TotalSeconds; + + if (string.IsNullOrEmpty(commandId) || string.IsNullOrEmpty(commandName)) + { + McpLog.Warn("[WebSocket] Invalid execute payload (missing id or name)"); + return; + } + + var commandEnvelope = new JObject + { + ["type"] = commandName, + ["params"] = parameters + }; + + string responseJson; + try + { + using var timeoutCts = CancellationTokenSource.CreateLinkedTokenSource(token); + timeoutCts.CancelAfter(TimeSpan.FromSeconds(Math.Max(1, timeoutSeconds))); + responseJson = await TransportCommandDispatcher.ExecuteCommandJsonAsync(commandEnvelope.ToString(Formatting.None), timeoutCts.Token).ConfigureAwait(false); + } + catch (OperationCanceledException) + { + responseJson = JsonConvert.SerializeObject(new + { + status = "error", + error = $"Command '{commandName}' timed out after {timeoutSeconds} seconds" + }); + } + catch (Exception ex) + { + responseJson = JsonConvert.SerializeObject(new + { + status = "error", + error = ex.Message + }); + } + + JToken resultToken; + try + { + resultToken = JToken.Parse(responseJson); + } + catch + { + resultToken = new JObject + { + ["status"] = "error", + ["error"] = "Invalid response payload" + }; + } + + var responsePayload = new JObject + { + ["type"] = "command_result", + ["id"] = commandId, + ["result"] = resultToken + }; + + await SendJsonAsync(responsePayload, token).ConfigureAwait(false); + } + + private async Task KeepAliveLoopAsync(CancellationToken token) + { + while (!token.IsCancellationRequested) + { + try + { + await Task.Delay(_keepAliveInterval, token).ConfigureAwait(false); + if (_socket == null || _socket.State != WebSocketState.Open) + { + break; + } + await SendPongAsync(token).ConfigureAwait(false); + } + catch (OperationCanceledException) + { + break; + } + catch (Exception ex) + { + McpLog.Warn($"[WebSocket] Keep-alive failed: {ex.Message}"); + await HandleSocketClosureAsync(ex.Message).ConfigureAwait(false); + break; + } + } + } + + private async Task SendRegisterAsync(CancellationToken token) + { + var registerPayload = new JObject + { + ["type"] = "register", + // session_id is now server-authoritative; omitted here or sent as null + ["project_name"] = _projectName, + ["project_hash"] = _projectHash, + ["unity_version"] = _unityVersion, + ["project_path"] = _projectPath + }; + + await SendJsonAsync(registerPayload, token).ConfigureAwait(false); + } + + private Task SendPongAsync(CancellationToken token) + { + var payload = new JObject + { + ["type"] = "pong", + ["session_id"] = _sessionId // Include session ID for server-side tracking + }; + return SendJsonAsync(payload, token); + } + + private async Task SendJsonAsync(JObject payload, CancellationToken token) + { + if (_socket == null) + { + throw new InvalidOperationException("WebSocket is not initialised"); + } + + string json = payload.ToString(Formatting.None); + byte[] bytes = Encoding.UTF8.GetBytes(json); + var buffer = new ArraySegment(bytes); + + await _sendLock.WaitAsync(token).ConfigureAwait(false); + try + { + if (_socket.State != WebSocketState.Open) + { + throw new InvalidOperationException("WebSocket is not open"); + } + + await _socket.SendAsync(buffer, WebSocketMessageType.Text, true, token).ConfigureAwait(false); + } + finally + { + _sendLock.Release(); + } + } + + private async Task HandleSocketClosureAsync(string reason) + { + // Capture stack trace for debugging disconnection triggers + var stackTrace = new System.Diagnostics.StackTrace(true); + McpLog.Debug($"[WebSocket] HandleSocketClosureAsync called. Reason: {reason}\nStack trace:\n{stackTrace}"); + + if (_lifecycleCts == null || _lifecycleCts.IsCancellationRequested) + { + return; + } + + if (Interlocked.CompareExchange(ref _isReconnectingFlag, 1, 0) != 0) + { + return; + } + + _isConnected = false; + _state = _state.WithError(reason ?? "Connection closed"); + McpLog.Warn($"[WebSocket] Connection closed: {reason}"); + + await StopConnectionLoopsAsync(awaitTasks: false).ConfigureAwait(false); + + _ = Task.Run(() => AttemptReconnectAsync(_lifecycleCts.Token), CancellationToken.None); + } + + private async Task AttemptReconnectAsync(CancellationToken token) + { + try + { + await StopConnectionLoopsAsync().ConfigureAwait(false); + + foreach (TimeSpan delay in ReconnectSchedule) + { + if (token.IsCancellationRequested) + { + return; + } + + if (delay > TimeSpan.Zero) + { + try { await Task.Delay(delay, token).ConfigureAwait(false); } + catch (OperationCanceledException) { return; } + } + + if (await EstablishConnectionAsync(token).ConfigureAwait(false)) + { + _state = TransportState.Connected(TransportDisplayName, sessionId: _sessionId, details: _endpointUri.ToString()); + _isConnected = true; + McpLog.Info("[WebSocket] Reconnected to MCP server", false); + return; + } + } + } + finally + { + Interlocked.Exchange(ref _isReconnectingFlag, 0); + } + + _state = TransportState.Disconnected(TransportDisplayName, "Failed to reconnect"); + } + + private static Uri BuildWebSocketUri(string baseUrl) + { + if (!Uri.TryCreate(baseUrl, UriKind.Absolute, out var httpUri)) + { + throw new InvalidOperationException($"Invalid MCP base URL: {baseUrl}"); + } + + // Replace bind-only addresses with localhost for client connections + // 0.0.0.0 and :: are only valid for server binding, not client connections + string host = httpUri.Host; + if (host == "0.0.0.0" || host == "::") + { + McpLog.Warn($"[WebSocket] Base URL host '{host}' is bind-only; using 'localhost' for client connection."); + host = "localhost"; + } + + var builder = new UriBuilder(httpUri) + { + Scheme = httpUri.Scheme.Equals("https", StringComparison.OrdinalIgnoreCase) ? "wss" : "ws", + Host = host, + Path = httpUri.AbsolutePath.TrimEnd('/') + "/hub/plugin" + }; + + return builder.Uri; + } + } +} diff --git a/Packages/MCPForUnity/Editor/Services/Transport/Transports/WebSocketTransportClient.cs.meta b/Packages/MCPForUnity/Editor/Services/Transport/Transports/WebSocketTransportClient.cs.meta new file mode 100644 index 00000000..91b98e00 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Services/Transport/Transports/WebSocketTransportClient.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 044c8f7beb4af4a77a14d677190c21dc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Setup.meta b/Packages/MCPForUnity/Editor/Setup.meta new file mode 100644 index 00000000..1157b1e9 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Setup.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 600c9cb20c329d761bfa799158a87bac +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Setup/SetupWindowService.cs b/Packages/MCPForUnity/Editor/Setup/SetupWindowService.cs new file mode 100644 index 00000000..cdc766c1 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Setup/SetupWindowService.cs @@ -0,0 +1,110 @@ +using System; +using MCPForUnity.Editor.Constants; +using MCPForUnity.Editor.Dependencies; +using MCPForUnity.Editor.Dependencies.Models; +using MCPForUnity.Editor.Helpers; +using MCPForUnity.Editor.Windows; +using UnityEditor; +using UnityEngine; + +namespace MCPForUnity.Editor.Setup +{ + /// + /// Handles automatic triggering of the MCP setup window and exposes menu entry points + /// + [InitializeOnLoad] + public static class SetupWindowService + { + private const string SETUP_COMPLETED_KEY = EditorPrefKeys.SetupCompleted; + private const string SETUP_DISMISSED_KEY = EditorPrefKeys.SetupDismissed; + + // Use SessionState to persist "checked this editor session" across domain reloads. + // SessionState survives assembly reloads within the same Editor session, which prevents + // the setup window from reappearing after code reloads / playmode transitions. + private const string SessionCheckedKey = "MCPForUnity.SetupWindowCheckedThisEditorSession"; + + static SetupWindowService() + { + // Skip in batch mode + if (Application.isBatchMode) + return; + + // Show Setup Window on package import + EditorApplication.delayCall += CheckSetupNeeded; + } + + /// + /// Check if Setup Window should be shown + /// + private static void CheckSetupNeeded() + { + // Ensure we only run once per Editor session (survives domain reloads). + // This avoids showing the setup dialog repeatedly when scripts recompile or Play mode toggles. + if (SessionState.GetBool(SessionCheckedKey, false)) + return; + + SessionState.SetBool(SessionCheckedKey, true); + + try + { + // Check if setup was already completed or dismissed in previous sessions + bool setupCompleted = EditorPrefs.GetBool(SETUP_COMPLETED_KEY, false); + bool setupDismissed = EditorPrefs.GetBool(SETUP_DISMISSED_KEY, false); + + // Only show Setup Window if it hasn't been completed or dismissed before + if (!(setupCompleted || setupDismissed)) + { + McpLog.Info("Package imported - showing Setup Window", always: false); + + var dependencyResult = DependencyManager.CheckAllDependencies(); + EditorApplication.delayCall += () => ShowSetupWindow(dependencyResult); + } + else + { + McpLog.Info( + "Setup Window skipped - previously completed or dismissed", + always: false + ); + } + } + catch (Exception ex) + { + McpLog.Error($"Error checking setup status: {ex.Message}"); + } + } + + /// + /// Show the setup window + /// + public static void ShowSetupWindow(DependencyCheckResult dependencyResult = null) + { + try + { + dependencyResult ??= DependencyManager.CheckAllDependencies(); + MCPSetupWindow.ShowWindow(dependencyResult); + } + catch (Exception ex) + { + McpLog.Error($"Error showing setup window: {ex.Message}"); + } + } + + /// + /// Mark setup as completed + /// + public static void MarkSetupCompleted() + { + EditorPrefs.SetBool(SETUP_COMPLETED_KEY, true); + McpLog.Info("Setup marked as completed"); + } + + /// + /// Mark setup as dismissed + /// + public static void MarkSetupDismissed() + { + EditorPrefs.SetBool(SETUP_DISMISSED_KEY, true); + McpLog.Info("Setup marked as dismissed"); + } + } +} diff --git a/Packages/MCPForUnity/Editor/Setup/SetupWindowService.cs.meta b/Packages/MCPForUnity/Editor/Setup/SetupWindowService.cs.meta new file mode 100644 index 00000000..ab1d46ab --- /dev/null +++ b/Packages/MCPForUnity/Editor/Setup/SetupWindowService.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d1bf468667bb649989e3ef53dafddea6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Tools.meta b/Packages/MCPForUnity/Editor/Tools.meta new file mode 100644 index 00000000..2bc55f08 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c97b83a6ac92a704b864eef27c3d285b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Tools/BatchExecute.cs b/Packages/MCPForUnity/Editor/Tools/BatchExecute.cs new file mode 100644 index 00000000..d9df336d --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/BatchExecute.cs @@ -0,0 +1,221 @@ +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using MCPForUnity.Editor.Helpers; +using Newtonsoft.Json.Linq; + +namespace MCPForUnity.Editor.Tools +{ + /// + /// Executes multiple MCP commands within a single Unity-side handler. Commands are executed sequentially + /// on the main thread to preserve determinism and Unity API safety. + /// + [McpForUnityTool("batch_execute", AutoRegister = false)] + public static class BatchExecute + { + private const int MaxCommandsPerBatch = 25; + + public static async Task HandleCommand(JObject @params) + { + if (@params == null) + { + return new ErrorResponse("'commands' payload is required."); + } + + var commandsToken = @params["commands"] as JArray; + if (commandsToken == null || commandsToken.Count == 0) + { + return new ErrorResponse("Provide at least one command entry in 'commands'."); + } + + if (commandsToken.Count > MaxCommandsPerBatch) + { + return new ErrorResponse($"A maximum of {MaxCommandsPerBatch} commands are allowed per batch."); + } + + bool failFast = @params.Value("failFast") ?? false; + bool parallelRequested = @params.Value("parallel") ?? false; + int? maxParallel = @params.Value("maxParallelism"); + + if (parallelRequested) + { + McpLog.Warn("batch_execute parallel mode requested, but commands will run sequentially on the main thread for safety."); + } + + var commandResults = new List(commandsToken.Count); + int invocationSuccessCount = 0; + int invocationFailureCount = 0; + bool anyCommandFailed = false; + + foreach (var token in commandsToken) + { + if (token is not JObject commandObj) + { + invocationFailureCount++; + anyCommandFailed = true; + commandResults.Add(new + { + tool = (string)null, + callSucceeded = false, + error = "Command entries must be JSON objects." + }); + if (failFast) + { + break; + } + continue; + } + + string toolName = commandObj["tool"]?.ToString(); + var rawParams = commandObj["params"] as JObject ?? new JObject(); + var commandParams = NormalizeParameterKeys(rawParams); + + if (string.IsNullOrWhiteSpace(toolName)) + { + invocationFailureCount++; + anyCommandFailed = true; + commandResults.Add(new + { + tool = toolName, + callSucceeded = false, + error = "Each command must include a non-empty 'tool' field." + }); + if (failFast) + { + break; + } + continue; + } + + try + { + var result = await CommandRegistry.InvokeCommandAsync(toolName, commandParams).ConfigureAwait(true); + bool callSucceeded = DetermineCallSucceeded(result); + if (callSucceeded) + { + invocationSuccessCount++; + } + else + { + invocationFailureCount++; + anyCommandFailed = true; + } + + commandResults.Add(new + { + tool = toolName, + callSucceeded, + result + }); + + if (!callSucceeded && failFast) + { + break; + } + } + catch (Exception ex) + { + invocationFailureCount++; + anyCommandFailed = true; + commandResults.Add(new + { + tool = toolName, + callSucceeded = false, + error = ex.Message + }); + + if (failFast) + { + break; + } + } + } + + bool overallSuccess = !anyCommandFailed; + var data = new + { + results = commandResults, + callSuccessCount = invocationSuccessCount, + callFailureCount = invocationFailureCount, + parallelRequested, + parallelApplied = false, + maxParallelism = maxParallel + }; + + return overallSuccess + ? new SuccessResponse("Batch execution completed.", data) + : new ErrorResponse("One or more commands failed.", data); + } + + private static bool DetermineCallSucceeded(object result) + { + if (result == null) + { + return true; + } + + if (result is IMcpResponse response) + { + return response.Success; + } + + if (result is JObject obj) + { + var successToken = obj["success"]; + if (successToken != null && successToken.Type == JTokenType.Boolean) + { + return successToken.Value(); + } + } + + if (result is JToken token) + { + var successToken = token["success"]; + if (successToken != null && successToken.Type == JTokenType.Boolean) + { + return successToken.Value(); + } + } + + return true; + } + + private static JObject NormalizeParameterKeys(JObject source) + { + if (source == null) + { + return new JObject(); + } + + var normalized = new JObject(); + foreach (var property in source.Properties()) + { + string normalizedName = ToCamelCase(property.Name); + normalized[normalizedName] = NormalizeToken(property.Value); + } + return normalized; + } + + private static JArray NormalizeArray(JArray source) + { + var normalized = new JArray(); + foreach (var token in source) + { + normalized.Add(NormalizeToken(token)); + } + return normalized; + } + + private static JToken NormalizeToken(JToken token) + { + return token switch + { + JObject obj => NormalizeParameterKeys(obj), + JArray arr => NormalizeArray(arr), + _ => token.DeepClone() + }; + } + + private static string ToCamelCase(string key) => StringCaseUtility.ToCamelCase(key); + } +} diff --git a/Packages/MCPForUnity/Editor/Tools/BatchExecute.cs.meta b/Packages/MCPForUnity/Editor/Tools/BatchExecute.cs.meta new file mode 100644 index 00000000..491cc79a --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/BatchExecute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4e1e2d8f3a454a37b18d06a7a7b6c3fb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Tools/CommandRegistry.cs b/Packages/MCPForUnity/Editor/Tools/CommandRegistry.cs new file mode 100644 index 00000000..ca39ea51 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/CommandRegistry.cs @@ -0,0 +1,426 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Threading.Tasks; +using MCPForUnity.Editor.Helpers; +using MCPForUnity.Editor.Resources; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; + +namespace MCPForUnity.Editor.Tools +{ + /// + /// Holds information about a registered command handler. + /// + class HandlerInfo + { + public string CommandName { get; } + public Func SyncHandler { get; } + public Func> AsyncHandler { get; } + + public bool IsAsync => AsyncHandler != null; + + public HandlerInfo(string commandName, Func syncHandler, Func> asyncHandler) + { + CommandName = commandName; + SyncHandler = syncHandler; + AsyncHandler = asyncHandler; + } + } + + /// + /// Registry for all MCP command handlers via reflection. + /// Handles both MCP tools and resources. + /// + public static class CommandRegistry + { + private static readonly Dictionary _handlers = new(); + private static bool _initialized = false; + + /// + /// Initialize and auto-discover all tools and resources marked with + /// [McpForUnityTool] or [McpForUnityResource] + /// + public static void Initialize() + { + if (_initialized) return; + + AutoDiscoverCommands(); + _initialized = true; + } + + private static string ToSnakeCase(string name) => StringCaseUtility.ToSnakeCase(name); + + /// + /// Auto-discover all types with [McpForUnityTool] or [McpForUnityResource] attributes + /// + private static void AutoDiscoverCommands() + { + try + { + var allTypes = AppDomain.CurrentDomain.GetAssemblies() + .Where(a => !a.IsDynamic) + .SelectMany(a => + { + try { return a.GetTypes(); } + catch { return new Type[0]; } + }) + .ToList(); + + // Discover tools + var toolTypes = allTypes.Where(t => t.GetCustomAttribute() != null); + int toolCount = 0; + foreach (var type in toolTypes) + { + if (RegisterCommandType(type, isResource: false)) + toolCount++; + } + + // Discover resources + var resourceTypes = allTypes.Where(t => t.GetCustomAttribute() != null); + int resourceCount = 0; + foreach (var type in resourceTypes) + { + if (RegisterCommandType(type, isResource: true)) + resourceCount++; + } + + McpLog.Info($"Auto-discovered {toolCount} tools and {resourceCount} resources ({_handlers.Count} total handlers)", false); + } + catch (Exception ex) + { + McpLog.Error($"Failed to auto-discover MCP commands: {ex.Message}"); + } + } + + /// + /// Register a command type (tool or resource) with the registry. + /// Returns true if successfully registered, false otherwise. + /// + private static bool RegisterCommandType(Type type, bool isResource) + { + string commandName; + string typeLabel = isResource ? "resource" : "tool"; + + // Get command name from appropriate attribute + if (isResource) + { + var resourceAttr = type.GetCustomAttribute(); + commandName = resourceAttr.ResourceName; + } + else + { + var toolAttr = type.GetCustomAttribute(); + commandName = toolAttr.CommandName; + } + + // Auto-generate command name if not explicitly provided + if (string.IsNullOrEmpty(commandName)) + { + commandName = ToSnakeCase(type.Name); + } + + // Check for duplicate command names + if (_handlers.ContainsKey(commandName)) + { + McpLog.Warn( + $"Duplicate command name '{commandName}' detected. " + + $"{typeLabel} {type.Name} will override previously registered handler." + ); + } + + // Find HandleCommand method + var method = type.GetMethod( + "HandleCommand", + BindingFlags.Public | BindingFlags.Static, + null, + new[] { typeof(JObject) }, + null + ); + + if (method == null) + { + McpLog.Warn( + $"MCP {typeLabel} {type.Name} is marked with [McpForUnity{(isResource ? "Resource" : "Tool")}] " + + $"but has no public static HandleCommand(JObject) method" + ); + return false; + } + + try + { + HandlerInfo handlerInfo; + + if (typeof(Task).IsAssignableFrom(method.ReturnType)) + { + var asyncHandler = CreateAsyncHandlerDelegate(method, commandName); + handlerInfo = new HandlerInfo(commandName, null, asyncHandler); + } + else + { + var handler = (Func)Delegate.CreateDelegate( + typeof(Func), + method + ); + handlerInfo = new HandlerInfo(commandName, handler, null); + } + + _handlers[commandName] = handlerInfo; + return true; + } + catch (Exception ex) + { + McpLog.Error($"Failed to register {typeLabel} {type.Name}: {ex.Message}"); + return false; + } + } + + /// + /// Get a command handler by name + /// + private static HandlerInfo GetHandlerInfo(string commandName) + { + if (!_handlers.TryGetValue(commandName, out var handler)) + { + throw new InvalidOperationException( + $"Unknown or unsupported command type: {commandName}" + ); + } + return handler; + } + + /// + /// Get a synchronous command handler by name. + /// Throws if the command is asynchronous. + /// + /// + /// + /// + public static Func GetHandler(string commandName) + { + var handlerInfo = GetHandlerInfo(commandName); + if (handlerInfo.IsAsync) + { + throw new InvalidOperationException( + $"Command '{commandName}' is asynchronous and must be executed via ExecuteCommand" + ); + } + + return handlerInfo.SyncHandler; + } + + /// + /// Execute a command handler, supporting both synchronous and asynchronous (coroutine) handlers. + /// If the handler returns an IEnumerator, it will be executed as a coroutine. + /// + /// The command name to execute + /// Command parameters + /// TaskCompletionSource to complete when async operation finishes + /// The result for synchronous commands, or null for async commands (TCS will be completed later) + public static object ExecuteCommand(string commandName, JObject @params, TaskCompletionSource tcs) + { + var handlerInfo = GetHandlerInfo(commandName); + + if (handlerInfo.IsAsync) + { + ExecuteAsyncHandler(handlerInfo, @params, commandName, tcs); + return null; + } + + if (handlerInfo.SyncHandler == null) + { + throw new InvalidOperationException($"Handler for '{commandName}' does not provide a synchronous implementation"); + } + + return handlerInfo.SyncHandler(@params); + } + + /// + /// Execute a command handler and return its raw result, regardless of sync or async implementation. + /// Used internally for features like batch execution where commands need to be composed. + /// + /// The registered command to execute. + /// Parameters to pass to the command (optional). + public static Task InvokeCommandAsync(string commandName, JObject @params) + { + var handlerInfo = GetHandlerInfo(commandName); + var payload = @params ?? new JObject(); + + if (handlerInfo.IsAsync) + { + if (handlerInfo.AsyncHandler == null) + { + throw new InvalidOperationException($"Async handler for '{commandName}' is not configured correctly"); + } + + return handlerInfo.AsyncHandler(payload); + } + + if (handlerInfo.SyncHandler == null) + { + throw new InvalidOperationException($"Handler for '{commandName}' does not provide a synchronous implementation"); + } + + object result = handlerInfo.SyncHandler(payload); + return Task.FromResult(result); + } + + /// + /// Create a delegate for an async handler method that returns Task or Task. + /// The delegate will invoke the method and await its completion, returning the result. + /// + /// + /// + /// + /// + private static Func> CreateAsyncHandlerDelegate(MethodInfo method, string commandName) + { + return async (JObject parameters) => + { + object rawResult; + + try + { + rawResult = method.Invoke(null, new object[] { parameters }); + } + catch (TargetInvocationException ex) + { + throw ex.InnerException ?? ex; + } + + if (rawResult == null) + { + return null; + } + + if (rawResult is not Task task) + { + throw new InvalidOperationException( + $"Async handler '{commandName}' returned an object that is not a Task" + ); + } + + await task.ConfigureAwait(true); + + var taskType = task.GetType(); + if (taskType.IsGenericType) + { + var resultProperty = taskType.GetProperty("Result"); + if (resultProperty != null) + { + return resultProperty.GetValue(task); + } + } + + return null; + }; + } + + private static void ExecuteAsyncHandler( + HandlerInfo handlerInfo, + JObject parameters, + string commandName, + TaskCompletionSource tcs) + { + if (handlerInfo.AsyncHandler == null) + { + throw new InvalidOperationException($"Async handler for '{commandName}' is not configured correctly"); + } + + Task handlerTask; + + try + { + handlerTask = handlerInfo.AsyncHandler(parameters); + } + catch (Exception ex) + { + ReportAsyncFailure(commandName, tcs, ex); + return; + } + + if (handlerTask == null) + { + CompleteAsyncCommand(commandName, tcs, null); + return; + } + + async void AwaitHandler() + { + try + { + var finalResult = await handlerTask.ConfigureAwait(true); + CompleteAsyncCommand(commandName, tcs, finalResult); + } + catch (Exception ex) + { + ReportAsyncFailure(commandName, tcs, ex); + } + } + + AwaitHandler(); + } + + /// + /// Complete the TaskCompletionSource for an async command with a success result. + /// + /// + /// + /// + private static void CompleteAsyncCommand(string commandName, TaskCompletionSource tcs, object result) + { + try + { + var response = new { status = "success", result }; + string json = JsonConvert.SerializeObject(response); + + if (!tcs.TrySetResult(json)) + { + McpLog.Warn($"TCS for async command '{commandName}' was already completed"); + } + } + catch (Exception ex) + { + McpLog.Error($"Error completing async command '{commandName}': {ex.Message}\n{ex.StackTrace}"); + ReportAsyncFailure(commandName, tcs, ex); + } + } + + /// + /// Report an error that occurred during async command execution. + /// Completes the TaskCompletionSource with an error response. + /// + /// + /// + /// + private static void ReportAsyncFailure(string commandName, TaskCompletionSource tcs, Exception ex) + { + McpLog.Error($"Error in async command '{commandName}': {ex.Message}\n{ex.StackTrace}"); + + var errorResponse = new + { + status = "error", + error = ex.Message, + command = commandName, + stackTrace = ex.StackTrace + }; + + string json; + try + { + json = JsonConvert.SerializeObject(errorResponse); + } + catch (Exception serializationEx) + { + McpLog.Error($"Failed to serialize error response for '{commandName}': {serializationEx.Message}"); + json = "{\"status\":\"error\",\"error\":\"Failed to complete command\"}"; + } + + if (!tcs.TrySetResult(json)) + { + McpLog.Warn($"TCS for async command '{commandName}' was already completed when trying to report error"); + } + } + } +} diff --git a/Packages/MCPForUnity/Editor/Tools/CommandRegistry.cs.meta b/Packages/MCPForUnity/Editor/Tools/CommandRegistry.cs.meta new file mode 100644 index 00000000..15ec884b --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/CommandRegistry.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5b61b5a84813b5749a5c64422694a0fa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Tools/ExecuteMenuItem.cs b/Packages/MCPForUnity/Editor/Tools/ExecuteMenuItem.cs new file mode 100644 index 00000000..f606f774 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/ExecuteMenuItem.cs @@ -0,0 +1,53 @@ +using System; +using System.Collections.Generic; +using MCPForUnity.Editor.Helpers; +using Newtonsoft.Json.Linq; +using UnityEditor; + +namespace MCPForUnity.Editor.Tools +{ + [McpForUnityTool("execute_menu_item", AutoRegister = false)] + /// + /// Tool to execute a Unity Editor menu item by its path. + /// + public static class ExecuteMenuItem + { + // Basic blacklist to prevent execution of disruptive menu items. + private static readonly HashSet _menuPathBlacklist = new HashSet( + StringComparer.OrdinalIgnoreCase) + { + "File/Quit", + }; + + public static object HandleCommand(JObject @params) + { + McpLog.Info("[ExecuteMenuItem] Handling menu item command"); + string menuPath = @params["menu_path"]?.ToString() ?? @params["menuPath"]?.ToString(); + if (string.IsNullOrWhiteSpace(menuPath)) + { + return new ErrorResponse("Required parameter 'menu_path' or 'menuPath' is missing or empty."); + } + + if (_menuPathBlacklist.Contains(menuPath)) + { + return new ErrorResponse($"Execution of menu item '{menuPath}' is blocked for safety reasons."); + } + + try + { + bool executed = EditorApplication.ExecuteMenuItem(menuPath); + if (!executed) + { + McpLog.Error($"[MenuItemExecutor] Failed to execute menu item '{menuPath}'. It might be invalid, disabled, or context-dependent."); + return new ErrorResponse($"Failed to execute menu item '{menuPath}'. It might be invalid, disabled, or context-dependent."); + } + return new SuccessResponse($"Attempted to execute menu item: '{menuPath}'. Check Unity logs for confirmation or errors."); + } + catch (Exception e) + { + McpLog.Error($"[MenuItemExecutor] Failed to setup execution for '{menuPath}': {e}"); + return new ErrorResponse($"Error setting up execution for menu item '{menuPath}': {e.Message}"); + } + } + } +} diff --git a/Packages/MCPForUnity/Editor/Tools/ExecuteMenuItem.cs.meta b/Packages/MCPForUnity/Editor/Tools/ExecuteMenuItem.cs.meta new file mode 100644 index 00000000..1caedb7f --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/ExecuteMenuItem.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 269232350d16a464091aea9e9fcc9b55 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Tools/FindGameObjects.cs b/Packages/MCPForUnity/Editor/Tools/FindGameObjects.cs new file mode 100644 index 00000000..d04f0942 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/FindGameObjects.cs @@ -0,0 +1,81 @@ +using System.Collections.Generic; +using System.Linq; +using MCPForUnity.Editor.Helpers; +using Newtonsoft.Json.Linq; +using UnityEngine; + +namespace MCPForUnity.Editor.Tools +{ + /// + /// Tool for searching GameObjects in the scene. + /// Returns only instance IDs with pagination support. + /// + /// This is a focused search tool that returns lightweight results (IDs only). + /// For detailed GameObject data, use the unity://scene/gameobject/{id} resource. + /// + [McpForUnityTool("find_gameobjects")] + public static class FindGameObjects + { + /// + /// Handles the find_gameobjects command. + /// + /// Command parameters + /// Paginated list of instance IDs + public static object HandleCommand(JObject @params) + { + if (@params == null) + { + return new ErrorResponse("Parameters cannot be null."); + } + + var p = new ToolParams(@params); + + // Parse search parameters + string searchMethod = p.Get("searchMethod", "by_name"); + + // Try searchTerm, search_term, or target (for backwards compatibility) + string searchTerm = p.Get("searchTerm"); + if (string.IsNullOrEmpty(searchTerm)) + { + searchTerm = p.Get("target"); + } + + if (string.IsNullOrEmpty(searchTerm)) + { + return new ErrorResponse("'searchTerm' or 'target' parameter is required."); + } + + // Pagination parameters using standard PaginationRequest + var pagination = PaginationRequest.FromParams(@params, defaultPageSize: 50); + pagination.PageSize = Mathf.Clamp(pagination.PageSize, 1, 500); + + // Search options (supports multiple parameter name variants) + bool includeInactive = p.GetBool("includeInactive", false) || + p.GetBool("searchInactive", false); + + try + { + // Get all matching instance IDs + var allIds = GameObjectLookup.SearchGameObjects(searchMethod, searchTerm, includeInactive, 0); + + // Use standard pagination response + var paginatedResult = PaginationResponse.Create(allIds, pagination); + + return new SuccessResponse("Found GameObjects", new + { + instanceIDs = paginatedResult.Items, + pageSize = paginatedResult.PageSize, + cursor = paginatedResult.Cursor, + nextCursor = paginatedResult.NextCursor, + totalCount = paginatedResult.TotalCount, + hasMore = paginatedResult.HasMore + }); + } + catch (System.Exception ex) + { + McpLog.Error($"[FindGameObjects] Error searching GameObjects: {ex.Message}"); + return new ErrorResponse($"Error searching GameObjects: {ex.Message}"); + } + } + } +} diff --git a/Packages/MCPForUnity/Editor/Tools/FindGameObjects.cs.meta b/Packages/MCPForUnity/Editor/Tools/FindGameObjects.cs.meta new file mode 100644 index 00000000..8d6f2b12 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/FindGameObjects.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4511082b395b14922b34e90f7a23027e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Tools/GameObjects.meta b/Packages/MCPForUnity/Editor/Tools/GameObjects.meta new file mode 100644 index 00000000..a1ba389e --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/GameObjects.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b61d0e8082ed14c1fb500648007bba7a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Tools/GameObjects/ComponentResolver.cs b/Packages/MCPForUnity/Editor/Tools/GameObjects/ComponentResolver.cs new file mode 100644 index 00000000..589374a1 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/GameObjects/ComponentResolver.cs @@ -0,0 +1,142 @@ +#nullable disable +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using MCPForUnity.Editor.Helpers; +using UnityEngine; + +namespace MCPForUnity.Editor.Tools +{ + /// + /// Component resolver that delegates to UnityTypeResolver. + /// Kept for backwards compatibility. + /// + internal static class ComponentResolver + { + /// + /// Resolve a Component/MonoBehaviour type by short or fully-qualified name. + /// Delegates to UnityTypeResolver.TryResolve with Component constraint. + /// + public static bool TryResolve(string nameOrFullName, out Type type, out string error) + { + return UnityTypeResolver.TryResolve(nameOrFullName, out type, out error, typeof(Component)); + } + + /// + /// Gets all accessible property and field names from a component type. + /// + public static List GetAllComponentProperties(Type componentType) + { + if (componentType == null) return new List(); + + var properties = componentType.GetProperties(BindingFlags.Public | BindingFlags.Instance) + .Where(p => p.CanRead && p.CanWrite) + .Select(p => p.Name); + + var fields = componentType.GetFields(BindingFlags.Public | BindingFlags.Instance) + .Where(f => !f.IsInitOnly && !f.IsLiteral) + .Select(f => f.Name); + + // Also include SerializeField private fields (common in Unity) + var serializeFields = componentType.GetFields(BindingFlags.NonPublic | BindingFlags.Instance) + .Where(f => f.GetCustomAttribute() != null) + .Select(f => f.Name); + + return properties.Concat(fields).Concat(serializeFields).Distinct().OrderBy(x => x).ToList(); + } + + /// + /// Suggests the most likely property matches for a user's input using fuzzy matching. + /// Uses Levenshtein distance, substring matching, and common naming pattern heuristics. + /// + public static List GetFuzzyPropertySuggestions(string userInput, List availableProperties) + { + if (string.IsNullOrWhiteSpace(userInput) || !availableProperties.Any()) + return new List(); + + var cacheKey = $"{userInput.ToLowerInvariant()}:{string.Join(",", availableProperties)}"; + if (PropertySuggestionCache.TryGetValue(cacheKey, out var cached)) + return cached; + + try + { + var suggestions = GetRuleBasedSuggestions(userInput, availableProperties); + PropertySuggestionCache[cacheKey] = suggestions; + return suggestions; + } + catch (Exception ex) + { + McpLog.Warn($"[Property Matching] Error getting suggestions for '{userInput}': {ex.Message}"); + return new List(); + } + } + + private static readonly Dictionary> PropertySuggestionCache = new(); + + /// + /// Rule-based suggestions that mimic AI behavior for property matching. + /// This provides immediate value while we could add real AI integration later. + /// + private static List GetRuleBasedSuggestions(string userInput, List availableProperties) + { + var suggestions = new List(); + var cleanedInput = userInput.ToLowerInvariant().Replace(" ", "").Replace("-", "").Replace("_", ""); + + foreach (var property in availableProperties) + { + var cleanedProperty = property.ToLowerInvariant().Replace(" ", "").Replace("-", "").Replace("_", ""); + + if (cleanedProperty == cleanedInput) + { + suggestions.Add(property); + continue; + } + + var inputWords = userInput.ToLowerInvariant().Split(new[] { ' ', '-', '_' }, StringSplitOptions.RemoveEmptyEntries); + if (inputWords.All(word => cleanedProperty.Contains(word.ToLowerInvariant()))) + { + suggestions.Add(property); + continue; + } + + if (LevenshteinDistance(cleanedInput, cleanedProperty) <= Math.Max(2, cleanedInput.Length / 4)) + { + suggestions.Add(property); + } + } + + return suggestions.OrderBy(s => LevenshteinDistance(cleanedInput, s.ToLowerInvariant().Replace(" ", ""))) + .Take(3) + .ToList(); + } + + /// + /// Calculates Levenshtein distance between two strings for similarity matching. + /// + private static int LevenshteinDistance(string s1, string s2) + { + if (string.IsNullOrEmpty(s1)) return s2?.Length ?? 0; + if (string.IsNullOrEmpty(s2)) return s1.Length; + + var matrix = new int[s1.Length + 1, s2.Length + 1]; + + for (int i = 0; i <= s1.Length; i++) matrix[i, 0] = i; + for (int j = 0; j <= s2.Length; j++) matrix[0, j] = j; + + for (int i = 1; i <= s1.Length; i++) + { + for (int j = 1; j <= s2.Length; j++) + { + int cost = (s2[j - 1] == s1[i - 1]) ? 0 : 1; + matrix[i, j] = Math.Min(Math.Min( + matrix[i - 1, j] + 1, + matrix[i, j - 1] + 1), + matrix[i - 1, j - 1] + cost); + } + } + + return matrix[s1.Length, s2.Length]; + } + } +} diff --git a/Packages/MCPForUnity/Editor/Tools/GameObjects/ComponentResolver.cs.meta b/Packages/MCPForUnity/Editor/Tools/GameObjects/ComponentResolver.cs.meta new file mode 100644 index 00000000..6738443d --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/GameObjects/ComponentResolver.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f5e5a46bdebc040c68897fa4b5e689c7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Tools/GameObjects/GameObjectComponentHelpers.cs b/Packages/MCPForUnity/Editor/Tools/GameObjects/GameObjectComponentHelpers.cs new file mode 100644 index 00000000..e37d70a6 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/GameObjects/GameObjectComponentHelpers.cs @@ -0,0 +1,410 @@ +#nullable disable +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using MCPForUnity.Editor.Helpers; +using MCPForUnity.Editor.Tools; +using MCPForUnity.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using UnityEditor; +using UnityEngine; + +namespace MCPForUnity.Editor.Tools.GameObjects +{ + internal static class GameObjectComponentHelpers + { + internal static object AddComponentInternal(GameObject targetGo, string typeName, JObject properties) + { + Type componentType = FindType(typeName); + if (componentType == null) + { + return new ErrorResponse($"Component type '{typeName}' not found or is not a valid Component."); + } + if (!typeof(Component).IsAssignableFrom(componentType)) + { + return new ErrorResponse($"Type '{typeName}' is not a Component."); + } + + if (componentType == typeof(Transform)) + { + return new ErrorResponse("Cannot add another Transform component."); + } + + bool isAdding2DPhysics = typeof(Rigidbody2D).IsAssignableFrom(componentType) || typeof(Collider2D).IsAssignableFrom(componentType); + bool isAdding3DPhysics = typeof(Rigidbody).IsAssignableFrom(componentType) || typeof(Collider).IsAssignableFrom(componentType); + + if (isAdding2DPhysics) + { + if (targetGo.GetComponent() != null || targetGo.GetComponent() != null) + { + return new ErrorResponse($"Cannot add 2D physics component '{typeName}' because the GameObject '{targetGo.name}' already has a 3D Rigidbody or Collider."); + } + } + else if (isAdding3DPhysics) + { + if (targetGo.GetComponent() != null || targetGo.GetComponent() != null) + { + return new ErrorResponse($"Cannot add 3D physics component '{typeName}' because the GameObject '{targetGo.name}' already has a 2D Rigidbody or Collider."); + } + } + + try + { + Component newComponent = Undo.AddComponent(targetGo, componentType); + if (newComponent == null) + { + return new ErrorResponse($"Failed to add component '{typeName}' to '{targetGo.name}'. It might be disallowed (e.g., adding script twice)." + ); + } + + if (newComponent is Light light) + { + light.type = LightType.Directional; + } + + if (properties != null) + { + var setResult = SetComponentPropertiesInternal(targetGo, typeName, properties, newComponent); + if (setResult != null) + { + Undo.DestroyObjectImmediate(newComponent); + return setResult; + } + } + + return null; + } + catch (Exception e) + { + return new ErrorResponse($"Error adding component '{typeName}' to '{targetGo.name}': {e.Message}"); + } + } + + internal static object RemoveComponentInternal(GameObject targetGo, string typeName) + { + if (targetGo == null) + { + return new ErrorResponse("Target GameObject is null."); + } + + Type componentType = FindType(typeName); + if (componentType == null) + { + return new ErrorResponse($"Component type '{typeName}' not found for removal."); + } + + if (componentType == typeof(Transform)) + { + return new ErrorResponse("Cannot remove the Transform component."); + } + + Component componentToRemove = targetGo.GetComponent(componentType); + if (componentToRemove == null) + { + return new ErrorResponse($"Component '{typeName}' not found on '{targetGo.name}' to remove."); + } + + try + { + Undo.DestroyObjectImmediate(componentToRemove); + return null; + } + catch (Exception e) + { + return new ErrorResponse($"Error removing component '{typeName}' from '{targetGo.name}': {e.Message}"); + } + } + + internal static object SetComponentPropertiesInternal(GameObject targetGo, string componentTypeName, JObject properties, Component targetComponentInstance = null) + { + Component targetComponent = targetComponentInstance; + if (targetComponent == null) + { + if (ComponentResolver.TryResolve(componentTypeName, out var compType, out var compError)) + { + targetComponent = targetGo.GetComponent(compType); + } + else + { + targetComponent = targetGo.GetComponent(componentTypeName); + } + } + if (targetComponent == null) + { + return new ErrorResponse($"Component '{componentTypeName}' not found on '{targetGo.name}' to set properties."); + } + + Undo.RecordObject(targetComponent, "Set Component Properties"); + + var failures = new List(); + foreach (var prop in properties.Properties()) + { + string propName = prop.Name; + JToken propValue = prop.Value; + + try + { + bool setResult = SetProperty(targetComponent, propName, propValue); + if (!setResult) + { + var availableProperties = ComponentResolver.GetAllComponentProperties(targetComponent.GetType()); + var suggestions = ComponentResolver.GetFuzzyPropertySuggestions(propName, availableProperties); + var msg = suggestions.Any() + ? $"Property '{propName}' not found. Did you mean: {string.Join(", ", suggestions)}? Available: [{string.Join(", ", availableProperties)}]" + : $"Property '{propName}' not found. Available: [{string.Join(", ", availableProperties)}]"; + McpLog.Warn($"[ManageGameObject] {msg}"); + failures.Add(msg); + } + } + catch (Exception e) + { + McpLog.Error($"[ManageGameObject] Error setting property '{propName}' on '{componentTypeName}': {e.Message}"); + failures.Add($"Error setting '{propName}': {e.Message}"); + } + } + + EditorUtility.SetDirty(targetComponent); + return failures.Count == 0 + ? null + : new ErrorResponse($"One or more properties failed on '{componentTypeName}'.", new { errors = failures }); + } + + private static JsonSerializer InputSerializer => UnityJsonSerializer.Instance; + + private static bool SetProperty(object target, string memberName, JToken value) + { + Type type = target.GetType(); + BindingFlags flags = BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase; + + string normalizedName = Helpers.ParamCoercion.NormalizePropertyName(memberName); + var inputSerializer = InputSerializer; + + try + { + if (memberName.Contains('.') || memberName.Contains('[')) + { + return SetNestedProperty(target, memberName, value, inputSerializer); + } + + PropertyInfo propInfo = type.GetProperty(memberName, flags) ?? type.GetProperty(normalizedName, flags); + if (propInfo != null && propInfo.CanWrite) + { + object convertedValue = ConvertJTokenToType(value, propInfo.PropertyType, inputSerializer); + if (convertedValue != null || value.Type == JTokenType.Null) + { + propInfo.SetValue(target, convertedValue); + return true; + } + } + else + { + FieldInfo fieldInfo = type.GetField(memberName, flags) ?? type.GetField(normalizedName, flags); + if (fieldInfo != null) + { + object convertedValue = ConvertJTokenToType(value, fieldInfo.FieldType, inputSerializer); + if (convertedValue != null || value.Type == JTokenType.Null) + { + fieldInfo.SetValue(target, convertedValue); + return true; + } + } + else + { + var npField = type.GetField(memberName, BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.IgnoreCase) + ?? type.GetField(normalizedName, BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.IgnoreCase); + if (npField != null && npField.GetCustomAttribute() != null) + { + object convertedValue = ConvertJTokenToType(value, npField.FieldType, inputSerializer); + if (convertedValue != null || value.Type == JTokenType.Null) + { + npField.SetValue(target, convertedValue); + return true; + } + } + } + } + } + catch (Exception ex) + { + McpLog.Error($"[SetProperty] Failed to set '{memberName}' on {type.Name}: {ex.Message}\nToken: {value.ToString(Formatting.None)}"); + } + return false; + } + + private static bool SetNestedProperty(object target, string path, JToken value, JsonSerializer inputSerializer) + { + try + { + string[] pathParts = SplitPropertyPath(path); + if (pathParts.Length == 0) + return false; + + object currentObject = target; + Type currentType = currentObject.GetType(); + BindingFlags flags = BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase; + + for (int i = 0; i < pathParts.Length - 1; i++) + { + string part = pathParts[i]; + bool isArray = false; + int arrayIndex = -1; + + if (part.Contains("[")) + { + int startBracket = part.IndexOf('['); + int endBracket = part.IndexOf(']'); + if (startBracket > 0 && endBracket > startBracket) + { + string indexStr = part.Substring(startBracket + 1, endBracket - startBracket - 1); + if (int.TryParse(indexStr, out arrayIndex)) + { + isArray = true; + part = part.Substring(0, startBracket); + } + } + } + + PropertyInfo propInfo = currentType.GetProperty(part, flags); + FieldInfo fieldInfo = null; + if (propInfo == null) + { + fieldInfo = currentType.GetField(part, flags); + if (fieldInfo == null) + { + McpLog.Warn($"[SetNestedProperty] Could not find property or field '{part}' on type '{currentType.Name}'"); + return false; + } + } + + currentObject = propInfo != null ? propInfo.GetValue(currentObject) : fieldInfo.GetValue(currentObject); + if (currentObject == null) + { + McpLog.Warn($"[SetNestedProperty] Property '{part}' is null, cannot access nested properties."); + return false; + } + + if (isArray) + { + if (currentObject is Material[]) + { + var materials = currentObject as Material[]; + if (arrayIndex < 0 || arrayIndex >= materials.Length) + { + McpLog.Warn($"[SetNestedProperty] Material index {arrayIndex} out of range (0-{materials.Length - 1})"); + return false; + } + currentObject = materials[arrayIndex]; + } + else if (currentObject is System.Collections.IList) + { + var list = currentObject as System.Collections.IList; + if (arrayIndex < 0 || arrayIndex >= list.Count) + { + McpLog.Warn($"[SetNestedProperty] Index {arrayIndex} out of range (0-{list.Count - 1})"); + return false; + } + currentObject = list[arrayIndex]; + } + else + { + McpLog.Warn($"[SetNestedProperty] Property '{part}' is not an array or list, cannot access by index."); + return false; + } + } + + currentType = currentObject.GetType(); + } + + string finalPart = pathParts[pathParts.Length - 1]; + + if (currentObject is Material material && finalPart.StartsWith("_")) + { + return MaterialOps.TrySetShaderProperty(material, finalPart, value, inputSerializer); + } + + PropertyInfo finalPropInfo = currentType.GetProperty(finalPart, flags); + if (finalPropInfo != null && finalPropInfo.CanWrite) + { + object convertedValue = ConvertJTokenToType(value, finalPropInfo.PropertyType, inputSerializer); + if (convertedValue != null || value.Type == JTokenType.Null) + { + finalPropInfo.SetValue(currentObject, convertedValue); + return true; + } + } + else + { + FieldInfo finalFieldInfo = currentType.GetField(finalPart, flags); + if (finalFieldInfo != null) + { + object convertedValue = ConvertJTokenToType(value, finalFieldInfo.FieldType, inputSerializer); + if (convertedValue != null || value.Type == JTokenType.Null) + { + finalFieldInfo.SetValue(currentObject, convertedValue); + return true; + } + } + } + } + catch (Exception ex) + { + McpLog.Error($"[SetNestedProperty] Error setting nested property '{path}': {ex.Message}\nToken: {value.ToString(Formatting.None)}"); + } + + return false; + } + + private static string[] SplitPropertyPath(string path) + { + List parts = new List(); + int startIndex = 0; + bool inBrackets = false; + + for (int i = 0; i < path.Length; i++) + { + char c = path[i]; + + if (c == '[') + { + inBrackets = true; + } + else if (c == ']') + { + inBrackets = false; + } + else if (c == '.' && !inBrackets) + { + parts.Add(path.Substring(startIndex, i - startIndex)); + startIndex = i + 1; + } + } + if (startIndex < path.Length) + { + parts.Add(path.Substring(startIndex)); + } + return parts.ToArray(); + } + + private static object ConvertJTokenToType(JToken token, Type targetType, JsonSerializer inputSerializer) + { + return PropertyConversion.ConvertToType(token, targetType); + } + + private static Type FindType(string typeName) + { + if (ComponentResolver.TryResolve(typeName, out Type resolvedType, out string error)) + { + return resolvedType; + } + + if (!string.IsNullOrEmpty(error)) + { + McpLog.Warn($"[FindType] {error}"); + } + + return null; + } + } +} diff --git a/Packages/MCPForUnity/Editor/Tools/GameObjects/GameObjectComponentHelpers.cs.meta b/Packages/MCPForUnity/Editor/Tools/GameObjects/GameObjectComponentHelpers.cs.meta new file mode 100644 index 00000000..b22c165d --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/GameObjects/GameObjectComponentHelpers.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b580af06e2d3a4788960f3f779edac54 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Tools/GameObjects/GameObjectCreate.cs b/Packages/MCPForUnity/Editor/Tools/GameObjects/GameObjectCreate.cs new file mode 100644 index 00000000..6954a26b --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/GameObjects/GameObjectCreate.cs @@ -0,0 +1,338 @@ +#nullable disable +using System; +using System.Linq; +using MCPForUnity.Editor.Helpers; +using Newtonsoft.Json.Linq; +using UnityEditor; +using UnityEditor.SceneManagement; +using UnityEditorInternal; +using UnityEngine; + +namespace MCPForUnity.Editor.Tools.GameObjects +{ + internal static class GameObjectCreate + { + internal static object Handle(JObject @params) + { + string name = @params["name"]?.ToString(); + if (string.IsNullOrEmpty(name)) + { + return new ErrorResponse("'name' parameter is required for 'create' action."); + } + + // Get prefab creation parameters + bool saveAsPrefab = @params["saveAsPrefab"]?.ToObject() ?? false; + string prefabPath = @params["prefabPath"]?.ToString(); + string tag = @params["tag"]?.ToString(); + string primitiveType = @params["primitiveType"]?.ToString(); + GameObject newGo = null; + + // --- Try Instantiating Prefab First --- + string originalPrefabPath = prefabPath; + if (!saveAsPrefab && !string.IsNullOrEmpty(prefabPath)) + { + string extension = System.IO.Path.GetExtension(prefabPath); + + if (!prefabPath.Contains("/") && (string.IsNullOrEmpty(extension) || extension.Equals(".prefab", StringComparison.OrdinalIgnoreCase))) + { + string prefabNameOnly = prefabPath; + McpLog.Info($"[ManageGameObject.Create] Searching for prefab named: '{prefabNameOnly}'"); + string[] guids = AssetDatabase.FindAssets($"t:Prefab {prefabNameOnly}"); + if (guids.Length == 0) + { + return new ErrorResponse($"Prefab named '{prefabNameOnly}' not found anywhere in the project."); + } + else if (guids.Length > 1) + { + string foundPaths = string.Join(", ", guids.Select(g => AssetDatabase.GUIDToAssetPath(g))); + return new ErrorResponse($"Multiple prefabs found matching name '{prefabNameOnly}': {foundPaths}. Please provide a more specific path."); + } + else + { + prefabPath = AssetDatabase.GUIDToAssetPath(guids[0]); + McpLog.Info($"[ManageGameObject.Create] Found unique prefab at path: '{prefabPath}'"); + } + } + else if (prefabPath.Contains("/") && string.IsNullOrEmpty(extension)) + { + McpLog.Warn($"[ManageGameObject.Create] Provided prefabPath '{prefabPath}' has no extension. Assuming it's a prefab and appending .prefab."); + prefabPath += ".prefab"; + } + else if (!prefabPath.Contains("/") && !string.IsNullOrEmpty(extension) && !extension.Equals(".prefab", StringComparison.OrdinalIgnoreCase)) + { + string fileName = prefabPath; + string fileNameWithoutExtension = System.IO.Path.GetFileNameWithoutExtension(fileName); + McpLog.Info($"[ManageGameObject.Create] Searching for asset file named: '{fileName}'"); + + string[] guids = AssetDatabase.FindAssets(fileNameWithoutExtension); + var matches = guids + .Select(g => AssetDatabase.GUIDToAssetPath(g)) + .Where(p => p.EndsWith("/" + fileName, StringComparison.OrdinalIgnoreCase) || p.Equals(fileName, StringComparison.OrdinalIgnoreCase)) + .ToArray(); + + if (matches.Length == 0) + { + return new ErrorResponse($"Asset file '{fileName}' not found anywhere in the project."); + } + else if (matches.Length > 1) + { + string foundPaths = string.Join(", ", matches); + return new ErrorResponse($"Multiple assets found matching file name '{fileName}': {foundPaths}. Please provide a more specific path."); + } + else + { + prefabPath = matches[0]; + McpLog.Info($"[ManageGameObject.Create] Found unique asset at path: '{prefabPath}'"); + } + } + + GameObject prefabAsset = AssetDatabase.LoadAssetAtPath(prefabPath); + if (prefabAsset != null) + { + try + { + newGo = PrefabUtility.InstantiatePrefab(prefabAsset) as GameObject; + + if (newGo == null) + { + McpLog.Error($"[ManageGameObject.Create] Failed to instantiate prefab at '{prefabPath}', asset might be corrupted or not a GameObject."); + return new ErrorResponse($"Failed to instantiate prefab at '{prefabPath}'."); + } + if (!string.IsNullOrEmpty(name)) + { + newGo.name = name; + } + Undo.RegisterCreatedObjectUndo(newGo, $"Instantiate Prefab '{prefabAsset.name}' as '{newGo.name}'"); + McpLog.Info($"[ManageGameObject.Create] Instantiated prefab '{prefabAsset.name}' from path '{prefabPath}' as '{newGo.name}'."); + } + catch (Exception e) + { + return new ErrorResponse($"Error instantiating prefab '{prefabPath}': {e.Message}"); + } + } + else + { + return new ErrorResponse($"Asset not found or not a GameObject at path: '{prefabPath}'."); + } + } + + // --- Fallback: Create Primitive or Empty GameObject --- + bool createdNewObject = false; + if (newGo == null) + { + if (!string.IsNullOrEmpty(primitiveType)) + { + try + { + PrimitiveType type = (PrimitiveType)Enum.Parse(typeof(PrimitiveType), primitiveType, true); + newGo = GameObject.CreatePrimitive(type); + if (!string.IsNullOrEmpty(name)) + { + newGo.name = name; + } + else + { + UnityEngine.Object.DestroyImmediate(newGo); + return new ErrorResponse("'name' parameter is required when creating a primitive."); + } + createdNewObject = true; + } + catch (ArgumentException) + { + return new ErrorResponse($"Invalid primitive type: '{primitiveType}'. Valid types: {string.Join(", ", Enum.GetNames(typeof(PrimitiveType)))}"); + } + catch (Exception e) + { + return new ErrorResponse($"Failed to create primitive '{primitiveType}': {e.Message}"); + } + } + else + { + if (string.IsNullOrEmpty(name)) + { + return new ErrorResponse("'name' parameter is required for 'create' action when not instantiating a prefab or creating a primitive."); + } + newGo = new GameObject(name); + createdNewObject = true; + } + + if (createdNewObject) + { + Undo.RegisterCreatedObjectUndo(newGo, $"Create GameObject '{newGo.name}'"); + } + } + + if (newGo == null) + { + return new ErrorResponse("Failed to create or instantiate the GameObject."); + } + + Undo.RecordObject(newGo.transform, "Set GameObject Transform"); + Undo.RecordObject(newGo, "Set GameObject Properties"); + + // Set Parent + JToken parentToken = @params["parent"]; + if (parentToken != null) + { + GameObject parentGo = ManageGameObjectCommon.FindObjectInternal(parentToken, "by_id_or_name_or_path"); + if (parentGo == null) + { + UnityEngine.Object.DestroyImmediate(newGo); + return new ErrorResponse($"Parent specified ('{parentToken}') but not found."); + } + newGo.transform.SetParent(parentGo.transform, true); + } + + // Set Transform + Vector3? position = VectorParsing.ParseVector3(@params["position"]); + Vector3? rotation = VectorParsing.ParseVector3(@params["rotation"]); + Vector3? scale = VectorParsing.ParseVector3(@params["scale"]); + + if (position.HasValue) newGo.transform.localPosition = position.Value; + if (rotation.HasValue) newGo.transform.localEulerAngles = rotation.Value; + if (scale.HasValue) newGo.transform.localScale = scale.Value; + + // Set Tag + if (!string.IsNullOrEmpty(tag)) + { + if (tag != "Untagged" && !System.Linq.Enumerable.Contains(InternalEditorUtility.tags, tag)) + { + McpLog.Info($"[ManageGameObject.Create] Tag '{tag}' not found. Creating it."); + try + { + InternalEditorUtility.AddTag(tag); + } + catch (Exception ex) + { + UnityEngine.Object.DestroyImmediate(newGo); + return new ErrorResponse($"Failed to create tag '{tag}': {ex.Message}."); + } + } + + try + { + newGo.tag = tag; + } + catch (Exception ex) + { + UnityEngine.Object.DestroyImmediate(newGo); + return new ErrorResponse($"Failed to set tag to '{tag}' during creation: {ex.Message}."); + } + } + + // Set Layer + string layerName = @params["layer"]?.ToString(); + if (!string.IsNullOrEmpty(layerName)) + { + int layerId = LayerMask.NameToLayer(layerName); + if (layerId != -1) + { + newGo.layer = layerId; + } + else + { + McpLog.Warn($"[ManageGameObject.Create] Layer '{layerName}' not found. Using default layer."); + } + } + + // Add Components + if (@params["componentsToAdd"] is JArray componentsToAddArray) + { + foreach (var compToken in componentsToAddArray) + { + string typeName = null; + JObject properties = null; + + if (compToken.Type == JTokenType.String) + { + typeName = compToken.ToString(); + } + else if (compToken is JObject compObj) + { + typeName = compObj["typeName"]?.ToString(); + properties = compObj["properties"] as JObject; + } + + if (!string.IsNullOrEmpty(typeName)) + { + var addResult = GameObjectComponentHelpers.AddComponentInternal(newGo, typeName, properties); + if (addResult != null) + { + UnityEngine.Object.DestroyImmediate(newGo); + return addResult; + } + } + else + { + McpLog.Warn($"[ManageGameObject] Invalid component format in componentsToAdd: {compToken}"); + } + } + } + + // Save as Prefab ONLY if we *created* a new object AND saveAsPrefab is true + GameObject finalInstance = newGo; + if (createdNewObject && saveAsPrefab) + { + string finalPrefabPath = prefabPath; + if (string.IsNullOrEmpty(finalPrefabPath)) + { + UnityEngine.Object.DestroyImmediate(newGo); + return new ErrorResponse("'prefabPath' is required when 'saveAsPrefab' is true and creating a new object."); + } + if (!finalPrefabPath.EndsWith(".prefab", StringComparison.OrdinalIgnoreCase)) + { + McpLog.Info($"[ManageGameObject.Create] Appending .prefab extension to save path: '{finalPrefabPath}' -> '{finalPrefabPath}.prefab'"); + finalPrefabPath += ".prefab"; + } + + try + { + string directoryPath = System.IO.Path.GetDirectoryName(finalPrefabPath); + if (!string.IsNullOrEmpty(directoryPath) && !System.IO.Directory.Exists(directoryPath)) + { + System.IO.Directory.CreateDirectory(directoryPath); + AssetDatabase.Refresh(ImportAssetOptions.ForceSynchronousImport); + McpLog.Info($"[ManageGameObject.Create] Created directory for prefab: {directoryPath}"); + } + + finalInstance = PrefabUtility.SaveAsPrefabAssetAndConnect(newGo, finalPrefabPath, InteractionMode.UserAction); + + if (finalInstance == null) + { + UnityEngine.Object.DestroyImmediate(newGo); + return new ErrorResponse($"Failed to save GameObject '{name}' as prefab at '{finalPrefabPath}'. Check path and permissions."); + } + McpLog.Info($"[ManageGameObject.Create] GameObject '{name}' saved as prefab to '{finalPrefabPath}' and instance connected."); + } + catch (Exception e) + { + UnityEngine.Object.DestroyImmediate(newGo); + return new ErrorResponse($"Error saving prefab '{finalPrefabPath}': {e.Message}"); + } + } + + Selection.activeGameObject = finalInstance; + + string messagePrefabPath = + finalInstance == null + ? originalPrefabPath + : AssetDatabase.GetAssetPath(PrefabUtility.GetCorrespondingObjectFromSource(finalInstance) ?? (UnityEngine.Object)finalInstance); + + string successMessage; + if (!createdNewObject && !string.IsNullOrEmpty(messagePrefabPath)) + { + successMessage = $"Prefab '{messagePrefabPath}' instantiated successfully as '{finalInstance.name}'."; + } + else if (createdNewObject && saveAsPrefab && !string.IsNullOrEmpty(messagePrefabPath)) + { + successMessage = $"GameObject '{finalInstance.name}' created and saved as prefab to '{messagePrefabPath}'."; + } + else + { + successMessage = $"GameObject '{finalInstance.name}' created successfully in scene."; + } + + return new SuccessResponse(successMessage, Helpers.GameObjectSerializer.GetGameObjectData(finalInstance)); + } + } +} diff --git a/Packages/MCPForUnity/Editor/Tools/GameObjects/GameObjectCreate.cs.meta b/Packages/MCPForUnity/Editor/Tools/GameObjects/GameObjectCreate.cs.meta new file mode 100644 index 00000000..7c6589b6 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/GameObjects/GameObjectCreate.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0931774a07e4b4626b4261dd8d0974c2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Tools/GameObjects/GameObjectDelete.cs b/Packages/MCPForUnity/Editor/Tools/GameObjects/GameObjectDelete.cs new file mode 100644 index 00000000..f5681858 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/GameObjects/GameObjectDelete.cs @@ -0,0 +1,48 @@ +#nullable disable +using System.Collections.Generic; +using MCPForUnity.Editor.Helpers; +using Newtonsoft.Json.Linq; +using UnityEditor; +using UnityEngine; + +namespace MCPForUnity.Editor.Tools.GameObjects +{ + internal static class GameObjectDelete + { + internal static object Handle(JToken targetToken, string searchMethod) + { + List targets = ManageGameObjectCommon.FindObjectsInternal(targetToken, searchMethod, true); + + if (targets.Count == 0) + { + return new ErrorResponse($"Target GameObject(s) ('{targetToken}') not found using method '{searchMethod ?? "default"}'."); + } + + List deletedObjects = new List(); + foreach (var targetGo in targets) + { + if (targetGo != null) + { + string goName = targetGo.name; + int goId = targetGo.GetInstanceID(); + // Note: Undo.DestroyObjectImmediate doesn't work reliably in test context, + // so we use Object.DestroyImmediate. This means delete isn't undoable. + // TODO: Investigate Undo.DestroyObjectImmediate behavior in Unity 2022+ + Object.DestroyImmediate(targetGo); + deletedObjects.Add(new { name = goName, instanceID = goId }); + } + } + + if (deletedObjects.Count > 0) + { + string message = + targets.Count == 1 + ? $"GameObject '{((dynamic)deletedObjects[0]).name}' deleted successfully." + : $"{deletedObjects.Count} GameObjects deleted successfully."; + return new SuccessResponse(message, deletedObjects); + } + + return new ErrorResponse("Failed to delete target GameObject(s)."); + } + } +} diff --git a/Packages/MCPForUnity/Editor/Tools/GameObjects/GameObjectDelete.cs.meta b/Packages/MCPForUnity/Editor/Tools/GameObjects/GameObjectDelete.cs.meta new file mode 100644 index 00000000..7d95eabd --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/GameObjects/GameObjectDelete.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 505a482aaf60b415abd794737a630b10 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Tools/GameObjects/GameObjectDuplicate.cs b/Packages/MCPForUnity/Editor/Tools/GameObjects/GameObjectDuplicate.cs new file mode 100644 index 00000000..6faeb2ad --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/GameObjects/GameObjectDuplicate.cs @@ -0,0 +1,86 @@ +#nullable disable +using MCPForUnity.Editor.Helpers; +using Newtonsoft.Json.Linq; +using UnityEditor; +using UnityEditor.SceneManagement; +using UnityEngine; + +namespace MCPForUnity.Editor.Tools.GameObjects +{ + internal static class GameObjectDuplicate + { + internal static object Handle(JObject @params, JToken targetToken, string searchMethod) + { + GameObject sourceGo = ManageGameObjectCommon.FindObjectInternal(targetToken, searchMethod); + if (sourceGo == null) + { + return new ErrorResponse($"Target GameObject ('{targetToken}') not found using method '{searchMethod ?? "default"}'."); + } + + string newName = @params["new_name"]?.ToString(); + Vector3? position = VectorParsing.ParseVector3(@params["position"]); + Vector3? offset = VectorParsing.ParseVector3(@params["offset"]); + JToken parentToken = @params["parent"]; + + GameObject duplicatedGo = UnityEngine.Object.Instantiate(sourceGo); + Undo.RegisterCreatedObjectUndo(duplicatedGo, $"Duplicate {sourceGo.name}"); + + if (!string.IsNullOrEmpty(newName)) + { + duplicatedGo.name = newName; + } + else + { + duplicatedGo.name = sourceGo.name.Replace("(Clone)", "").Trim() + "_Copy"; + } + + if (position.HasValue) + { + duplicatedGo.transform.position = position.Value; + } + else if (offset.HasValue) + { + duplicatedGo.transform.position = sourceGo.transform.position + offset.Value; + } + + if (parentToken != null) + { + if (parentToken.Type == JTokenType.Null || (parentToken.Type == JTokenType.String && string.IsNullOrEmpty(parentToken.ToString()))) + { + duplicatedGo.transform.SetParent(null); + } + else + { + GameObject newParent = ManageGameObjectCommon.FindObjectInternal(parentToken, "by_id_or_name_or_path"); + if (newParent != null) + { + duplicatedGo.transform.SetParent(newParent.transform, true); + } + else + { + McpLog.Warn($"[ManageGameObject.Duplicate] Parent '{parentToken}' not found. Object will remain at root level."); + } + } + } + else + { + duplicatedGo.transform.SetParent(sourceGo.transform.parent, true); + } + + EditorUtility.SetDirty(duplicatedGo); + EditorSceneManager.MarkSceneDirty(EditorSceneManager.GetActiveScene()); + + Selection.activeGameObject = duplicatedGo; + + return new SuccessResponse( + $"Duplicated '{sourceGo.name}' as '{duplicatedGo.name}'.", + new + { + originalName = sourceGo.name, + originalId = sourceGo.GetInstanceID(), + duplicatedObject = Helpers.GameObjectSerializer.GetGameObjectData(duplicatedGo) + } + ); + } + } +} diff --git a/Packages/MCPForUnity/Editor/Tools/GameObjects/GameObjectDuplicate.cs.meta b/Packages/MCPForUnity/Editor/Tools/GameObjects/GameObjectDuplicate.cs.meta new file mode 100644 index 00000000..95811e90 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/GameObjects/GameObjectDuplicate.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 698728d56425a47af92a45377031a48b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Tools/GameObjects/GameObjectHandlers.cs b/Packages/MCPForUnity/Editor/Tools/GameObjects/GameObjectHandlers.cs new file mode 100644 index 00000000..bca36879 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/GameObjects/GameObjectHandlers.cs @@ -0,0 +1,22 @@ +#nullable disable +using Newtonsoft.Json.Linq; + +namespace MCPForUnity.Editor.Tools.GameObjects +{ + internal static class GameObjectHandlers + { + internal static object Create(JObject @params) => GameObjectCreate.Handle(@params); + + internal static object Modify(JObject @params, JToken targetToken, string searchMethod) + => GameObjectModify.Handle(@params, targetToken, searchMethod); + + internal static object Delete(JToken targetToken, string searchMethod) + => GameObjectDelete.Handle(targetToken, searchMethod); + + internal static object Duplicate(JObject @params, JToken targetToken, string searchMethod) + => GameObjectDuplicate.Handle(@params, targetToken, searchMethod); + + internal static object MoveRelative(JObject @params, JToken targetToken, string searchMethod) + => GameObjectMoveRelative.Handle(@params, targetToken, searchMethod); + } +} diff --git a/Packages/MCPForUnity/Editor/Tools/GameObjects/GameObjectHandlers.cs.meta b/Packages/MCPForUnity/Editor/Tools/GameObjects/GameObjectHandlers.cs.meta new file mode 100644 index 00000000..90df456d --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/GameObjects/GameObjectHandlers.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f3cf2313460d44a09b258d2ee04c5ef0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Tools/GameObjects/GameObjectModify.cs b/Packages/MCPForUnity/Editor/Tools/GameObjects/GameObjectModify.cs new file mode 100644 index 00000000..44511e91 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/GameObjects/GameObjectModify.cs @@ -0,0 +1,297 @@ +#nullable disable +using System; +using System.Collections.Generic; +using System.Linq; +using MCPForUnity.Editor.Helpers; +using Newtonsoft.Json.Linq; +using UnityEditor; +using UnityEditor.SceneManagement; +using UnityEditorInternal; +using UnityEngine; + +namespace MCPForUnity.Editor.Tools.GameObjects +{ + internal static class GameObjectModify + { + internal static object Handle(JObject @params, JToken targetToken, string searchMethod) + { + // When setActive=true is specified, we need to search for inactive objects + // otherwise we can't find an inactive object to activate it + JObject findParams = null; + if (@params["setActive"]?.ToObject() == true) + { + findParams = new JObject { ["searchInactive"] = true }; + } + + GameObject targetGo = ManageGameObjectCommon.FindObjectInternal(targetToken, searchMethod, findParams); + if (targetGo == null) + { + return new ErrorResponse($"Target GameObject ('{targetToken}') not found using method '{searchMethod ?? "default"}'."); + } + + Undo.RecordObject(targetGo.transform, "Modify GameObject Transform"); + Undo.RecordObject(targetGo, "Modify GameObject Properties"); + + bool modified = false; + + string name = @params["name"]?.ToString(); + if (!string.IsNullOrEmpty(name) && targetGo.name != name) + { + // Check if we're renaming the root object of an open prefab stage + var prefabStageForRename = PrefabStageUtility.GetCurrentPrefabStage(); + bool isRenamingPrefabRoot = prefabStageForRename != null && + prefabStageForRename.prefabContentsRoot == targetGo; + + if (isRenamingPrefabRoot) + { + // Rename the prefab asset file to match the new name (avoids Unity dialog) + string assetPath = prefabStageForRename.assetPath; + string directory = System.IO.Path.GetDirectoryName(assetPath); + string newAssetPath = AssetPathUtility.NormalizeSeparators(System.IO.Path.Combine(directory, name + ".prefab")); + + // Only rename if the path actually changes + if (newAssetPath != assetPath) + { + // Check for collision using GUID comparison + string currentGuid = AssetDatabase.AssetPathToGUID(assetPath); + string existingGuid = AssetDatabase.AssetPathToGUID(newAssetPath); + + // Collision only if there's a different asset at the new path + if (!string.IsNullOrEmpty(existingGuid) && existingGuid != currentGuid) + { + return new ErrorResponse($"Cannot rename prefab root to '{name}': a prefab already exists at '{newAssetPath}'."); + } + + // Rename the asset file + string renameError = AssetDatabase.RenameAsset(assetPath, name); + if (!string.IsNullOrEmpty(renameError)) + { + return new ErrorResponse($"Failed to rename prefab asset: {renameError}"); + } + + McpLog.Info($"[GameObjectModify] Renamed prefab asset from '{assetPath}' to '{newAssetPath}'"); + } + } + + targetGo.name = name; + modified = true; + } + + JToken parentToken = @params["parent"]; + if (parentToken != null) + { + GameObject newParentGo = ManageGameObjectCommon.FindObjectInternal(parentToken, "by_id_or_name_or_path"); + if ( + newParentGo == null + && !(parentToken.Type == JTokenType.Null + || (parentToken.Type == JTokenType.String && string.IsNullOrEmpty(parentToken.ToString()))) + ) + { + return new ErrorResponse($"New parent ('{parentToken}') not found."); + } + if (newParentGo != null && newParentGo.transform.IsChildOf(targetGo.transform)) + { + return new ErrorResponse($"Cannot parent '{targetGo.name}' to '{newParentGo.name}', as it would create a hierarchy loop."); + } + if (targetGo.transform.parent != (newParentGo?.transform)) + { + targetGo.transform.SetParent(newParentGo?.transform, true); + modified = true; + } + } + + bool? setActive = @params["setActive"]?.ToObject(); + if (setActive.HasValue && targetGo.activeSelf != setActive.Value) + { + targetGo.SetActive(setActive.Value); + modified = true; + } + + string tag = @params["tag"]?.ToString(); + if (tag != null && targetGo.tag != tag) + { + string tagToSet = string.IsNullOrEmpty(tag) ? "Untagged" : tag; + + if (tagToSet != "Untagged" && !System.Linq.Enumerable.Contains(InternalEditorUtility.tags, tagToSet)) + { + McpLog.Info($"[ManageGameObject] Tag '{tagToSet}' not found. Creating it."); + try + { + InternalEditorUtility.AddTag(tagToSet); + } + catch (Exception ex) + { + return new ErrorResponse($"Failed to create tag '{tagToSet}': {ex.Message}."); + } + } + + try + { + targetGo.tag = tagToSet; + modified = true; + } + catch (Exception ex) + { + return new ErrorResponse($"Failed to set tag to '{tagToSet}': {ex.Message}."); + } + } + + string layerName = @params["layer"]?.ToString(); + if (!string.IsNullOrEmpty(layerName)) + { + int layerId = LayerMask.NameToLayer(layerName); + if (layerId == -1) + { + return new ErrorResponse($"Invalid layer specified: '{layerName}'. Use a valid layer name."); + } + if (layerId != -1 && targetGo.layer != layerId) + { + targetGo.layer = layerId; + modified = true; + } + } + + Vector3? position = VectorParsing.ParseVector3(@params["position"]); + Vector3? rotation = VectorParsing.ParseVector3(@params["rotation"]); + Vector3? scale = VectorParsing.ParseVector3(@params["scale"]); + + if (position.HasValue && targetGo.transform.localPosition != position.Value) + { + targetGo.transform.localPosition = position.Value; + modified = true; + } + if (rotation.HasValue && targetGo.transform.localEulerAngles != rotation.Value) + { + targetGo.transform.localEulerAngles = rotation.Value; + modified = true; + } + if (scale.HasValue && targetGo.transform.localScale != scale.Value) + { + targetGo.transform.localScale = scale.Value; + modified = true; + } + + if (@params["componentsToRemove"] is JArray componentsToRemoveArray) + { + foreach (var compToken in componentsToRemoveArray) + { + string typeName = compToken.ToString(); + if (!string.IsNullOrEmpty(typeName)) + { + var removeResult = GameObjectComponentHelpers.RemoveComponentInternal(targetGo, typeName); + if (removeResult != null) + return removeResult; + modified = true; + } + } + } + + if (@params["componentsToAdd"] is JArray componentsToAddArrayModify) + { + foreach (var compToken in componentsToAddArrayModify) + { + string typeName = null; + JObject properties = null; + if (compToken.Type == JTokenType.String) + typeName = compToken.ToString(); + else if (compToken is JObject compObj) + { + typeName = compObj["typeName"]?.ToString(); + properties = compObj["properties"] as JObject; + } + + if (!string.IsNullOrEmpty(typeName)) + { + var addResult = GameObjectComponentHelpers.AddComponentInternal(targetGo, typeName, properties); + if (addResult != null) + return addResult; + modified = true; + } + } + } + + var componentErrors = new List(); + if (@params["componentProperties"] is JObject componentPropertiesObj) + { + foreach (var prop in componentPropertiesObj.Properties()) + { + string compName = prop.Name; + JObject propertiesToSet = prop.Value as JObject; + if (propertiesToSet != null) + { + var setResult = GameObjectComponentHelpers.SetComponentPropertiesInternal(targetGo, compName, propertiesToSet); + if (setResult != null) + { + componentErrors.Add(setResult); + } + else + { + modified = true; + } + } + } + } + + if (componentErrors.Count > 0) + { + var aggregatedErrors = new List(); + foreach (var errorObj in componentErrors) + { + try + { + var dataProp = errorObj?.GetType().GetProperty("data"); + var dataVal = dataProp?.GetValue(errorObj); + if (dataVal != null) + { + var errorsProp = dataVal.GetType().GetProperty("errors"); + var errorsEnum = errorsProp?.GetValue(dataVal) as System.Collections.IEnumerable; + if (errorsEnum != null) + { + foreach (var item in errorsEnum) + { + var s = item?.ToString(); + if (!string.IsNullOrEmpty(s)) aggregatedErrors.Add(s); + } + } + } + } + catch (Exception ex) + { + McpLog.Warn($"[GameObjectModify] Error aggregating component errors: {ex.Message}"); + } + } + + return new ErrorResponse( + $"One or more component property operations failed on '{targetGo.name}'.", + new { componentErrors = componentErrors, errors = aggregatedErrors } + ); + } + + if (!modified) + { + return new SuccessResponse( + $"No modifications applied to GameObject '{targetGo.name}'.", + Helpers.GameObjectSerializer.GetGameObjectData(targetGo) + ); + } + + EditorUtility.SetDirty(targetGo); + + // Mark the appropriate scene as dirty (handles both regular scenes and prefab stages) + var prefabStage = PrefabStageUtility.GetCurrentPrefabStage(); + if (prefabStage != null) + { + EditorSceneManager.MarkSceneDirty(prefabStage.scene); + } + else + { + EditorSceneManager.MarkSceneDirty(EditorSceneManager.GetActiveScene()); + } + + return new SuccessResponse( + $"GameObject '{targetGo.name}' modified successfully.", + Helpers.GameObjectSerializer.GetGameObjectData(targetGo) + ); + } + } +} diff --git a/Packages/MCPForUnity/Editor/Tools/GameObjects/GameObjectModify.cs.meta b/Packages/MCPForUnity/Editor/Tools/GameObjects/GameObjectModify.cs.meta new file mode 100644 index 00000000..3249f3e8 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/GameObjects/GameObjectModify.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ec5e33513bd094257a26ef6f75ea4574 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Tools/GameObjects/GameObjectMoveRelative.cs b/Packages/MCPForUnity/Editor/Tools/GameObjects/GameObjectMoveRelative.cs new file mode 100644 index 00000000..3335d287 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/GameObjects/GameObjectMoveRelative.cs @@ -0,0 +1,119 @@ +#nullable disable +using MCPForUnity.Editor.Helpers; +using Newtonsoft.Json.Linq; +using UnityEditor; +using UnityEditor.SceneManagement; +using UnityEngine; + +namespace MCPForUnity.Editor.Tools.GameObjects +{ + internal static class GameObjectMoveRelative + { + internal static object Handle(JObject @params, JToken targetToken, string searchMethod) + { + GameObject targetGo = ManageGameObjectCommon.FindObjectInternal(targetToken, searchMethod); + if (targetGo == null) + { + return new ErrorResponse($"Target GameObject ('{targetToken}') not found using method '{searchMethod ?? "default"}'."); + } + + JToken referenceToken = @params["reference_object"]; + if (referenceToken == null) + { + return new ErrorResponse("'reference_object' parameter is required for 'move_relative' action."); + } + + GameObject referenceGo = ManageGameObjectCommon.FindObjectInternal(referenceToken, "by_id_or_name_or_path"); + if (referenceGo == null) + { + return new ErrorResponse($"Reference object '{referenceToken}' not found."); + } + + string direction = @params["direction"]?.ToString()?.ToLower(); + float distance = @params["distance"]?.ToObject() ?? 1f; + Vector3? customOffset = VectorParsing.ParseVector3(@params["offset"]); + bool useWorldSpace = @params["world_space"]?.ToObject() ?? true; + + Undo.RecordObject(targetGo.transform, $"Move {targetGo.name} relative to {referenceGo.name}"); + + Vector3 newPosition; + + if (customOffset.HasValue) + { + if (useWorldSpace) + { + newPosition = referenceGo.transform.position + customOffset.Value; + } + else + { + newPosition = referenceGo.transform.TransformPoint(customOffset.Value); + } + } + else if (!string.IsNullOrEmpty(direction)) + { + Vector3 directionVector = GetDirectionVector(direction, referenceGo.transform, useWorldSpace); + newPosition = referenceGo.transform.position + directionVector * distance; + } + else + { + return new ErrorResponse("Either 'direction' or 'offset' parameter is required for 'move_relative' action."); + } + + targetGo.transform.position = newPosition; + + EditorUtility.SetDirty(targetGo); + EditorSceneManager.MarkSceneDirty(EditorSceneManager.GetActiveScene()); + + return new SuccessResponse( + $"Moved '{targetGo.name}' relative to '{referenceGo.name}'.", + new + { + movedObject = targetGo.name, + referenceObject = referenceGo.name, + newPosition = new[] { targetGo.transform.position.x, targetGo.transform.position.y, targetGo.transform.position.z }, + direction = direction, + distance = distance, + gameObject = Helpers.GameObjectSerializer.GetGameObjectData(targetGo) + } + ); + } + + private static Vector3 GetDirectionVector(string direction, Transform referenceTransform, bool useWorldSpace) + { + if (useWorldSpace) + { + switch (direction) + { + case "right": return Vector3.right; + case "left": return Vector3.left; + case "up": return Vector3.up; + case "down": return Vector3.down; + case "forward": + case "front": return Vector3.forward; + case "back": + case "backward": + case "behind": return Vector3.back; + default: + McpLog.Warn($"[ManageGameObject.MoveRelative] Unknown direction '{direction}', defaulting to forward."); + return Vector3.forward; + } + } + + switch (direction) + { + case "right": return referenceTransform.right; + case "left": return -referenceTransform.right; + case "up": return referenceTransform.up; + case "down": return -referenceTransform.up; + case "forward": + case "front": return referenceTransform.forward; + case "back": + case "backward": + case "behind": return -referenceTransform.forward; + default: + McpLog.Warn($"[ManageGameObject.MoveRelative] Unknown direction '{direction}', defaulting to forward."); + return referenceTransform.forward; + } + } + } +} diff --git a/Packages/MCPForUnity/Editor/Tools/GameObjects/GameObjectMoveRelative.cs.meta b/Packages/MCPForUnity/Editor/Tools/GameObjects/GameObjectMoveRelative.cs.meta new file mode 100644 index 00000000..3f29f708 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/GameObjects/GameObjectMoveRelative.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8b19997a165de45c2af3ada79a6d3f08 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Tools/GameObjects/ManageGameObject.cs b/Packages/MCPForUnity/Editor/Tools/GameObjects/ManageGameObject.cs new file mode 100644 index 00000000..6900234e --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/GameObjects/ManageGameObject.cs @@ -0,0 +1,115 @@ +#nullable disable +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using MCPForUnity.Editor.Helpers; // For Response class +using Newtonsoft.Json.Linq; +using UnityEngine; +using UnityEngine.SceneManagement; + +namespace MCPForUnity.Editor.Tools.GameObjects +{ + /// + /// Handles GameObject manipulation within the current scene (CRUD, find, components). + /// + [McpForUnityTool("manage_gameobject", AutoRegister = false)] + public static class ManageGameObject + { + // --- Main Handler --- + + public static object HandleCommand(JObject @params) + { + if (@params == null) + { + return new ErrorResponse("Parameters cannot be null."); + } + + string action = @params["action"]?.ToString().ToLower(); + if (string.IsNullOrEmpty(action)) + { + return new ErrorResponse("Action parameter is required."); + } + + // Parameters used by various actions + JToken targetToken = @params["target"]; // Can be string (name/path) or int (instanceID) + string name = @params["name"]?.ToString(); + + // --- Usability Improvement: Alias 'name' to 'target' for modification actions --- + // If 'target' is missing but 'name' is provided, and we aren't creating a new object, + // assume the user meant "find object by name". + if (targetToken == null && !string.IsNullOrEmpty(name) && action != "create") + { + targetToken = name; + // We don't update @params["target"] because we use targetToken locally mostly, + // but some downstream methods might parse @params directly. Let's update @params too for safety. + @params["target"] = name; + } + // ------------------------------------------------------------------------------- + + string searchMethod = @params["searchMethod"]?.ToString().ToLower(); + string tag = @params["tag"]?.ToString(); + string layer = @params["layer"]?.ToString(); + JToken parentToken = @params["parent"]; + + // Coerce string JSON to JObject for 'componentProperties' if provided as a JSON string + var componentPropsToken = @params["componentProperties"]; + if (componentPropsToken != null && componentPropsToken.Type == JTokenType.String) + { + try + { + var parsed = JObject.Parse(componentPropsToken.ToString()); + @params["componentProperties"] = parsed; + } + catch (Exception e) + { + McpLog.Warn($"[ManageGameObject] Could not parse 'componentProperties' JSON string: {e.Message}"); + } + } + + // --- Prefab Asset Check --- + // Prefab assets require different tools. Only 'create' (instantiation) is valid here. + string targetPath = + targetToken?.Type == JTokenType.String ? targetToken.ToString() : null; + if ( + !string.IsNullOrEmpty(targetPath) + && targetPath.EndsWith(".prefab", StringComparison.OrdinalIgnoreCase) + && action != "create" // Allow prefab instantiation + ) + { + return new ErrorResponse( + $"Target '{targetPath}' is a prefab asset. " + + $"Use 'manage_asset' with action='modify' for prefab asset modifications, " + + $"or 'manage_prefabs' with action='open_stage' to edit the prefab in isolation mode." + ); + } + // --- End Prefab Asset Check --- + + try + { + switch (action) + { + // --- Primary lifecycle actions (kept in manage_gameobject) --- + case "create": + return GameObjectCreate.Handle(@params); + case "modify": + return GameObjectModify.Handle(@params, targetToken, searchMethod); + case "delete": + return GameObjectDelete.Handle(targetToken, searchMethod); + case "duplicate": + return GameObjectDuplicate.Handle(@params, targetToken, searchMethod); + case "move_relative": + return GameObjectMoveRelative.Handle(@params, targetToken, searchMethod); + + default: + return new ErrorResponse($"Unknown action: '{action}'."); + } + } + catch (Exception e) + { + McpLog.Error($"[ManageGameObject] Action '{action}' failed: {e}"); + return new ErrorResponse($"Internal error processing action '{action}': {e.Message}"); + } + } + } +} diff --git a/Packages/MCPForUnity/Editor/Tools/GameObjects/ManageGameObject.cs.meta b/Packages/MCPForUnity/Editor/Tools/GameObjects/ManageGameObject.cs.meta new file mode 100644 index 00000000..5093c861 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/GameObjects/ManageGameObject.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7641d7388f0f6634b9d83d34de87b2ee +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Tools/GameObjects/ManageGameObjectCommon.cs b/Packages/MCPForUnity/Editor/Tools/GameObjects/ManageGameObjectCommon.cs new file mode 100644 index 00000000..8d8a36ea --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/GameObjects/ManageGameObjectCommon.cs @@ -0,0 +1,238 @@ +#nullable disable +using System; +using System.Collections.Generic; +using System.Linq; +using MCPForUnity.Editor.Helpers; +using MCPForUnity.Editor.Tools; +using Newtonsoft.Json.Linq; +using UnityEditor.SceneManagement; +using UnityEngine; +using UnityEngine.SceneManagement; + +namespace MCPForUnity.Editor.Tools.GameObjects +{ + internal static class ManageGameObjectCommon + { + internal static GameObject FindObjectInternal(JToken targetToken, string searchMethod, JObject findParams = null) + { + bool findAll = findParams?["findAll"]?.ToObject() ?? false; + + if ( + targetToken?.Type == JTokenType.Integer + || (searchMethod == "by_id" && int.TryParse(targetToken?.ToString(), out _)) + ) + { + findAll = false; + } + + List results = FindObjectsInternal(targetToken, searchMethod, findAll, findParams); + return results.Count > 0 ? results[0] : null; + } + + internal static List FindObjectsInternal( + JToken targetToken, + string searchMethod, + bool findAll, + JObject findParams = null + ) + { + List results = new List(); + string searchTerm = findParams?["searchTerm"]?.ToString() ?? targetToken?.ToString(); + bool searchInChildren = findParams?["searchInChildren"]?.ToObject() ?? false; + bool searchInactive = findParams?["searchInactive"]?.ToObject() ?? false; + + if (string.IsNullOrEmpty(searchMethod)) + { + if (targetToken?.Type == JTokenType.Integer) + searchMethod = "by_id"; + else if (!string.IsNullOrEmpty(searchTerm) && searchTerm.Contains('/')) + searchMethod = "by_path"; + else + searchMethod = "by_name"; + } + + GameObject rootSearchObject = null; + if (searchInChildren && targetToken != null) + { + rootSearchObject = FindObjectInternal(targetToken, "by_id_or_name_or_path"); + if (rootSearchObject == null) + { + McpLog.Warn($"[ManageGameObject.Find] Root object '{targetToken}' for child search not found."); + return results; + } + } + + switch (searchMethod) + { + case "by_id": + if (int.TryParse(searchTerm, out int instanceId)) + { + var allObjects = GetAllSceneObjects(searchInactive); + GameObject obj = allObjects.FirstOrDefault(go => go.GetInstanceID() == instanceId); + if (obj != null) + results.Add(obj); + } + break; + + case "by_name": + var searchPoolName = rootSearchObject + ? rootSearchObject + .GetComponentsInChildren(searchInactive) + .Select(t => t.gameObject) + : GetAllSceneObjects(searchInactive); + results.AddRange(searchPoolName.Where(go => go.name == searchTerm)); + break; + + case "by_path": + if (rootSearchObject != null) + { + Transform foundTransform = rootSearchObject.transform.Find(searchTerm); + if (foundTransform != null) + results.Add(foundTransform.gameObject); + } + else + { + var prefabStage = PrefabStageUtility.GetCurrentPrefabStage(); + if (prefabStage != null || searchInactive) + { + // In Prefab Stage, GameObject.Find() doesn't work, need to search manually + var allObjects = GetAllSceneObjects(searchInactive); + foreach (var go in allObjects) + { + if (GameObjectLookup.MatchesPath(go, searchTerm)) + { + results.Add(go); + } + } + } + else + { + var found = GameObject.Find(searchTerm); + if (found != null) + results.Add(found); + } + } + break; + + case "by_tag": + var searchPoolTag = rootSearchObject + ? rootSearchObject + .GetComponentsInChildren(searchInactive) + .Select(t => t.gameObject) + : GetAllSceneObjects(searchInactive); + results.AddRange(searchPoolTag.Where(go => go.CompareTag(searchTerm))); + break; + + case "by_layer": + var searchPoolLayer = rootSearchObject + ? rootSearchObject + .GetComponentsInChildren(searchInactive) + .Select(t => t.gameObject) + : GetAllSceneObjects(searchInactive); + if (int.TryParse(searchTerm, out int layerIndex)) + { + results.AddRange(searchPoolLayer.Where(go => go.layer == layerIndex)); + } + else + { + int namedLayer = LayerMask.NameToLayer(searchTerm); + if (namedLayer != -1) + results.AddRange(searchPoolLayer.Where(go => go.layer == namedLayer)); + } + break; + + case "by_component": + Type componentType = FindType(searchTerm); + if (componentType != null) + { + IEnumerable searchPoolComp; + if (rootSearchObject) + { + searchPoolComp = rootSearchObject + .GetComponentsInChildren(componentType, searchInactive) + .Select(c => (c as Component).gameObject); + } + else + { +#if UNITY_2023_1_OR_NEWER + var inactive = searchInactive ? FindObjectsInactive.Include : FindObjectsInactive.Exclude; + searchPoolComp = UnityEngine.Object.FindObjectsByType(componentType, inactive, FindObjectsSortMode.None) + .Cast() + .Select(c => c.gameObject); +#else + searchPoolComp = UnityEngine.Object.FindObjectsOfType(componentType, searchInactive) + .Cast() + .Select(c => c.gameObject); +#endif + } + results.AddRange(searchPoolComp.Where(go => go != null)); + } + else + { + McpLog.Warn($"[ManageGameObject.Find] Component type not found: {searchTerm}"); + } + break; + + case "by_id_or_name_or_path": + if (int.TryParse(searchTerm, out int id)) + { + var allObjectsId = GetAllSceneObjects(true); + GameObject objById = allObjectsId.FirstOrDefault(go => go.GetInstanceID() == id); + if (objById != null) + { + results.Add(objById); + break; + } + } + + // Try path search - in Prefab Stage, GameObject.Find() doesn't work + var allObjectsForPath = GetAllSceneObjects(true); + GameObject objByPath = allObjectsForPath.FirstOrDefault(go => + { + return GameObjectLookup.MatchesPath(go, searchTerm); + }); + if (objByPath != null) + { + results.Add(objByPath); + break; + } + + var allObjectsName = GetAllSceneObjects(true); + results.AddRange(allObjectsName.Where(go => go.name == searchTerm)); + break; + + default: + McpLog.Warn($"[ManageGameObject.Find] Unknown search method: {searchMethod}"); + break; + } + + if (!findAll && results.Count > 1) + { + return new List { results[0] }; + } + + return results.Distinct().ToList(); + } + + private static IEnumerable GetAllSceneObjects(bool includeInactive) + { + // Delegate to GameObjectLookup to avoid code duplication and ensure consistent behavior + return GameObjectLookup.GetAllSceneObjects(includeInactive); + } + + private static Type FindType(string typeName) + { + if (ComponentResolver.TryResolve(typeName, out Type resolvedType, out string error)) + { + return resolvedType; + } + + if (!string.IsNullOrEmpty(error)) + { + McpLog.Warn($"[FindType] {error}"); + } + + return null; + } + } +} diff --git a/Packages/MCPForUnity/Editor/Tools/GameObjects/ManageGameObjectCommon.cs.meta b/Packages/MCPForUnity/Editor/Tools/GameObjects/ManageGameObjectCommon.cs.meta new file mode 100644 index 00000000..51c64c80 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/GameObjects/ManageGameObjectCommon.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6bf0edf3cd2af46729294682cee3bee4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Tools/GetTestJob.cs b/Packages/MCPForUnity/Editor/Tools/GetTestJob.cs new file mode 100644 index 00000000..30c4fbf8 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/GetTestJob.cs @@ -0,0 +1,35 @@ +using System; +using MCPForUnity.Editor.Helpers; +using MCPForUnity.Editor.Services; +using Newtonsoft.Json.Linq; + +namespace MCPForUnity.Editor.Tools +{ + /// + /// Poll a previously started async test job by job_id. + /// + [McpForUnityTool("get_test_job", AutoRegister = false)] + public static class GetTestJob + { + public static object HandleCommand(JObject @params) + { + string jobId = @params?["job_id"]?.ToString() ?? @params?["jobId"]?.ToString(); + if (string.IsNullOrWhiteSpace(jobId)) + { + return new ErrorResponse("Missing required parameter 'job_id'."); + } + + bool includeDetails = ParamCoercion.CoerceBool(@params?["includeDetails"], false); + bool includeFailedTests = ParamCoercion.CoerceBool(@params?["includeFailedTests"], false); + + var job = TestJobManager.GetJob(jobId); + if (job == null) + { + return new ErrorResponse("Unknown job_id."); + } + + var payload = TestJobManager.ToSerializable(job, includeDetails, includeFailedTests); + return new SuccessResponse("Test job status retrieved.", payload); + } + } +} diff --git a/Packages/MCPForUnity/Editor/Tools/GetTestJob.cs.meta b/Packages/MCPForUnity/Editor/Tools/GetTestJob.cs.meta new file mode 100644 index 00000000..d0b52eb6 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/GetTestJob.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 7f92c2b67a2c4b5c9d1a3c0e6f9b2d10 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: + + diff --git a/Packages/MCPForUnity/Editor/Tools/JsonUtil.cs b/Packages/MCPForUnity/Editor/Tools/JsonUtil.cs new file mode 100644 index 00000000..74b745d5 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/JsonUtil.cs @@ -0,0 +1,31 @@ +using MCPForUnity.Editor.Helpers; +using Newtonsoft.Json.Linq; +using UnityEngine; + +namespace MCPForUnity.Editor.Tools +{ + internal static class JsonUtil + { + /// + /// If @params[paramName] is a JSON string, parse it to a JObject in-place. + /// Logs a warning on parse failure and leaves the original value. + /// + internal static void CoerceJsonStringParameter(JObject @params, string paramName) + { + if (@params == null || string.IsNullOrEmpty(paramName)) return; + var token = @params[paramName]; + if (token != null && token.Type == JTokenType.String) + { + try + { + var parsed = JObject.Parse(token.ToString()); + @params[paramName] = parsed; + } + catch (Newtonsoft.Json.JsonReaderException e) + { + McpLog.Warn($"[MCP] Could not parse '{paramName}' JSON string: {e.Message}"); + } + } + } + } +} diff --git a/Packages/MCPForUnity/Editor/Tools/JsonUtil.cs.meta b/Packages/MCPForUnity/Editor/Tools/JsonUtil.cs.meta new file mode 100644 index 00000000..b6e26827 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/JsonUtil.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d4b3b6009d53e4b8f97fe7ab57888c65 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Tools/ManageAsset.cs b/Packages/MCPForUnity/Editor/Tools/ManageAsset.cs new file mode 100644 index 00000000..ed6e6c98 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/ManageAsset.cs @@ -0,0 +1,1120 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.Linq; +using Newtonsoft.Json.Linq; +using UnityEditor; +using UnityEngine; +using MCPForUnity.Editor.Helpers; // For Response class +using MCPForUnity.Editor.Tools; + +#if UNITY_6000_0_OR_NEWER +using PhysicsMaterialType = UnityEngine.PhysicsMaterial; +using PhysicsMaterialCombine = UnityEngine.PhysicsMaterialCombine; +#else +using PhysicsMaterialType = UnityEngine.PhysicMaterial; +using PhysicsMaterialCombine = UnityEngine.PhysicMaterialCombine; +#endif + +namespace MCPForUnity.Editor.Tools +{ + /// + /// Handles asset management operations within the Unity project. + /// + [McpForUnityTool("manage_asset", AutoRegister = false)] + public static class ManageAsset + { + // --- Main Handler --- + + // Define the list of valid actions + private static readonly List ValidActions = new List + { + "import", + "create", + "modify", + "delete", + "duplicate", + "move", + "rename", + "search", + "get_info", + "create_folder", + "get_components", + }; + + public static object HandleCommand(JObject @params) + { + string action = @params["action"]?.ToString()?.ToLowerInvariant(); + if (string.IsNullOrEmpty(action)) + { + return new ErrorResponse("Action parameter is required."); + } + + // Check if the action is valid before switching + if (!ValidActions.Contains(action)) + { + string validActionsList = string.Join(", ", ValidActions); + return new ErrorResponse( + $"Unknown action: '{action}'. Valid actions are: {validActionsList}" + ); + } + + // Common parameters + string path = @params["path"]?.ToString(); + + // Coerce string JSON to JObject for 'properties' if provided as a JSON string + var propertiesToken = @params["properties"]; + if (propertiesToken != null && propertiesToken.Type == JTokenType.String) + { + try + { + var parsed = JObject.Parse(propertiesToken.ToString()); + @params["properties"] = parsed; + } + catch (Exception e) + { + McpLog.Warn($"[ManageAsset] Could not parse 'properties' JSON string: {e.Message}"); + } + } + + try + { + switch (action) + { + case "import": + // Note: Unity typically auto-imports. This might re-import or configure import settings. + return ReimportAsset(path, @params["properties"] as JObject); + case "create": + return CreateAsset(@params); + case "modify": + var properties = @params["properties"] as JObject; + return ModifyAsset(path, properties); + case "delete": + return DeleteAsset(path); + case "duplicate": + return DuplicateAsset(path, @params["destination"]?.ToString()); + case "move": // Often same as rename if within Assets/ + case "rename": + return MoveOrRenameAsset(path, @params["destination"]?.ToString()); + case "search": + return SearchAssets(@params); + case "get_info": + return GetAssetInfo( + path, + @params["generatePreview"]?.ToObject() ?? false + ); + case "create_folder": // Added specific action for clarity + return CreateFolder(path); + case "get_components": + return GetComponentsFromAsset(path); + + default: + // This error message is less likely to be hit now, but kept here as a fallback or for potential future modifications. + string validActionsListDefault = string.Join(", ", ValidActions); + return new ErrorResponse( + $"Unknown action: '{action}'. Valid actions are: {validActionsListDefault}" + ); + } + } + catch (Exception e) + { + McpLog.Error($"[ManageAsset] Action '{action}' failed for path '{path}': {e}"); + return new ErrorResponse( + $"Internal error processing action '{action}' on '{path}': {e.Message}" + ); + } + } + + // --- Action Implementations --- + + private static object ReimportAsset(string path, JObject properties) + { + if (string.IsNullOrEmpty(path)) + return new ErrorResponse("'path' is required for reimport."); + string fullPath = AssetPathUtility.SanitizeAssetPath(path); + if (!AssetExists(fullPath)) + return new ErrorResponse($"Asset not found at path: {fullPath}"); + + try + { + // TODO: Apply importer properties before reimporting? + // This is complex as it requires getting the AssetImporter, casting it, + // applying properties via reflection or specific methods, saving, then reimporting. + if (properties != null && properties.HasValues) + { + McpLog.Warn( + "[ManageAsset.Reimport] Modifying importer properties before reimport is not fully implemented yet." + ); + // AssetImporter importer = AssetImporter.GetAtPath(fullPath); + // if (importer != null) { /* Apply properties */ AssetDatabase.WriteImportSettingsIfDirty(fullPath); } + } + + AssetDatabase.ImportAsset(fullPath, ImportAssetOptions.ForceUpdate); + // AssetDatabase.Refresh(); // Usually ImportAsset handles refresh + return new SuccessResponse($"Asset '{fullPath}' reimported.", GetAssetData(fullPath)); + } + catch (Exception e) + { + return new ErrorResponse($"Failed to reimport asset '{fullPath}': {e.Message}"); + } + } + + private static object CreateAsset(JObject @params) + { + string path = @params["path"]?.ToString(); + string assetType = + @params["assetType"]?.ToString() + ?? @params["asset_type"]?.ToString(); // tolerate snake_case payloads from batched commands + JObject properties = @params["properties"] as JObject; + + if (string.IsNullOrEmpty(path)) + return new ErrorResponse("'path' is required for create."); + if (string.IsNullOrEmpty(assetType)) + return new ErrorResponse("'assetType' is required for create."); + + string fullPath = AssetPathUtility.SanitizeAssetPath(path); + string directory = Path.GetDirectoryName(fullPath); + + // Ensure directory exists + if (!Directory.Exists(Path.Combine(Directory.GetCurrentDirectory(), directory))) + { + Directory.CreateDirectory(Path.Combine(Directory.GetCurrentDirectory(), directory)); + AssetDatabase.Refresh(ImportAssetOptions.ForceSynchronousImport); // Make sure Unity knows about the new folder + } + + if (AssetExists(fullPath)) + return new ErrorResponse($"Asset already exists at path: {fullPath}"); + + try + { + UnityEngine.Object newAsset = null; + string lowerAssetType = assetType.ToLowerInvariant(); + + // Handle common asset types + if (lowerAssetType == "folder") + { + return CreateFolder(path); // Use dedicated method + } + else if (lowerAssetType == "material") + { + var requested = properties?["shader"]?.ToString(); + Shader shader = RenderPipelineUtility.ResolveShader(requested); + if (shader == null) + return new ErrorResponse($"Could not find a project-compatible shader (requested: '{requested ?? "none"}'). Consider installing URP/HDRP or provide an explicit shader path."); + + var mat = new Material(shader); + if (properties != null) + { + JObject propertiesForApply = properties; + if (propertiesForApply["shader"] != null) + { + propertiesForApply = (JObject)properties.DeepClone(); + propertiesForApply.Remove("shader"); + } + + if (propertiesForApply.HasValues) + { + MaterialOps.ApplyProperties(mat, propertiesForApply, UnityJsonSerializer.Instance); + } + } + AssetDatabase.CreateAsset(mat, fullPath); + newAsset = mat; + } + else if (lowerAssetType == "physicsmaterial") + { + PhysicsMaterialType pmat = new PhysicsMaterialType(); + if (properties != null) + ApplyPhysicsMaterialProperties(pmat, properties); + AssetDatabase.CreateAsset(pmat, fullPath); + newAsset = pmat; + } + else if (lowerAssetType == "prefab") + { + // Creating prefabs usually involves saving an existing GameObject hierarchy. + // A common pattern is to create an empty GameObject, configure it, and then save it. + return new ErrorResponse( + "Creating prefabs programmatically usually requires a source GameObject. Use manage_gameobject to create/configure, then save as prefab via a separate mechanism or future enhancement." + ); + // Example (conceptual): + // GameObject source = GameObject.Find(properties["sourceGameObject"].ToString()); + // if(source != null) PrefabUtility.SaveAsPrefabAsset(source, fullPath); + } + // TODO: Add more asset types (Animation Controller, Scene, etc.) + else + { + // Generic creation attempt (might fail or create empty files) + // For some types, just creating the file might be enough if Unity imports it. + // File.Create(Path.Combine(Directory.GetCurrentDirectory(), fullPath)).Close(); + // AssetDatabase.ImportAsset(fullPath); // Let Unity try to import it + // newAsset = AssetDatabase.LoadAssetAtPath(fullPath); + return new ErrorResponse( + $"Creation for asset type '{assetType}' is not explicitly supported yet. Supported: Folder, Material, PhysicsMaterial." + ); + } + + if ( + newAsset == null + && !Directory.Exists(Path.Combine(Directory.GetCurrentDirectory(), fullPath)) + ) // Check if it wasn't a folder and asset wasn't created + { + return new ErrorResponse( + $"Failed to create asset '{assetType}' at '{fullPath}'. See logs for details." + ); + } + + AssetDatabase.SaveAssets(); + // AssetDatabase.Refresh(); // CreateAsset often handles refresh + return new SuccessResponse( + $"Asset '{fullPath}' created successfully.", + GetAssetData(fullPath) + ); + } + catch (Exception e) + { + return new ErrorResponse($"Failed to create asset at '{fullPath}': {e.Message}"); + } + } + + private static object CreateFolder(string path) + { + if (string.IsNullOrEmpty(path)) + return new ErrorResponse("'path' is required for create_folder."); + string fullPath = AssetPathUtility.SanitizeAssetPath(path); + string parentDir = Path.GetDirectoryName(fullPath); + string folderName = Path.GetFileName(fullPath); + + if (AssetExists(fullPath)) + { + // Check if it's actually a folder already + if (AssetDatabase.IsValidFolder(fullPath)) + { + return new SuccessResponse( + $"Folder already exists at path: {fullPath}", + GetAssetData(fullPath) + ); + } + else + { + return new ErrorResponse( + $"An asset (not a folder) already exists at path: {fullPath}" + ); + } + } + + try + { + // Ensure parent exists + if (!string.IsNullOrEmpty(parentDir) && !AssetDatabase.IsValidFolder(parentDir)) + { + // Recursively create parent folders if needed (AssetDatabase handles this internally) + // Or we can do it manually: Directory.CreateDirectory(Path.Combine(Directory.GetCurrentDirectory(), parentDir)); AssetDatabase.Refresh(); + } + + string guid = AssetDatabase.CreateFolder(parentDir, folderName); + if (string.IsNullOrEmpty(guid)) + { + return new ErrorResponse( + $"Failed to create folder '{fullPath}'. Check logs and permissions." + ); + } + + // AssetDatabase.Refresh(); // CreateFolder usually handles refresh + return new SuccessResponse( + $"Folder '{fullPath}' created successfully.", + GetAssetData(fullPath) + ); + } + catch (Exception e) + { + return new ErrorResponse($"Failed to create folder '{fullPath}': {e.Message}"); + } + } + + private static object ModifyAsset(string path, JObject properties) + { + if (string.IsNullOrEmpty(path)) + return new ErrorResponse("'path' is required for modify."); + if (properties == null || !properties.HasValues) + return new ErrorResponse("'properties' are required for modify."); + + string fullPath = AssetPathUtility.SanitizeAssetPath(path); + if (!AssetExists(fullPath)) + return new ErrorResponse($"Asset not found at path: {fullPath}"); + + try + { + UnityEngine.Object asset = AssetDatabase.LoadAssetAtPath( + fullPath + ); + if (asset == null) + return new ErrorResponse($"Failed to load asset at path: {fullPath}"); + + bool modified = false; // Flag to track if any changes were made + + // --- NEW: Handle GameObject / Prefab Component Modification --- + if (asset is GameObject gameObject) + { + // Iterate through the properties JSON: keys are component names, values are properties objects for that component + foreach (var prop in properties.Properties()) + { + string componentName = prop.Name; // e.g., "Collectible" + // Check if the value associated with the component name is actually an object containing properties + if ( + prop.Value is JObject componentProperties + && componentProperties.HasValues + ) // e.g., {"bobSpeed": 2.0} + { + // Resolve component type via ComponentResolver, then fetch by Type + Component targetComponent = null; + bool resolved = ComponentResolver.TryResolve(componentName, out var compType, out var compError); + if (resolved) + { + targetComponent = gameObject.GetComponent(compType); + } + + // Only warn about resolution failure if component also not found + if (targetComponent == null && !resolved) + { + McpLog.Warn( + $"[ManageAsset.ModifyAsset] Failed to resolve component '{componentName}' on '{gameObject.name}': {compError}" + ); + } + + if (targetComponent != null) + { + // Apply the nested properties (e.g., bobSpeed) to the found component instance + // Use |= to ensure 'modified' becomes true if any component is successfully modified + modified |= ApplyObjectProperties( + targetComponent, + componentProperties + ); + } + else + { + // Log a warning if a specified component couldn't be found + McpLog.Warn( + $"[ManageAsset.ModifyAsset] Component '{componentName}' not found on GameObject '{gameObject.name}' in asset '{fullPath}'. Skipping modification for this component." + ); + } + } + else + { + // Log a warning if the structure isn't {"ComponentName": {"prop": value}} + // We could potentially try to apply this property directly to the GameObject here if needed, + // but the primary goal is component modification. + McpLog.Warn( + $"[ManageAsset.ModifyAsset] Property '{prop.Name}' for GameObject modification should have a JSON object value containing component properties. Value was: {prop.Value.Type}. Skipping." + ); + } + } + // Note: 'modified' is now true if ANY component property was successfully changed. + } + // --- End NEW --- + + // --- Existing logic for other asset types (now as else-if) --- + // Example: Modifying a Material + else if (asset is Material material) + { + // Apply properties directly to the material. If this modifies, it sets modified=true. + // Use |= in case the asset was already marked modified by previous logic (though unlikely here) + modified |= MaterialOps.ApplyProperties(material, properties, UnityJsonSerializer.Instance); + } + // Example: Modifying a ScriptableObject (Use manage_scriptable_object instead!) + else if (asset is ScriptableObject so) + { + // Deprecated: Prefer manage_scriptable_object for robust patching. + // Kept for simple property setting fallback on existing assets if manage_scriptable_object isn't used. + modified |= ApplyObjectProperties(so, properties); + } + // Example: Modifying TextureImporter settings + else if (asset is Texture) + { + AssetImporter importer = AssetImporter.GetAtPath(fullPath); + if (importer is TextureImporter textureImporter) + { + bool importerModified = ApplyObjectProperties(textureImporter, properties); + if (importerModified) + { + // Importer settings need saving and reimporting + AssetDatabase.WriteImportSettingsIfDirty(fullPath); + AssetDatabase.ImportAsset(fullPath, ImportAssetOptions.ForceUpdate); // Reimport to apply changes + modified = true; // Mark overall operation as modified + } + } + else + { + McpLog.Warn($"Could not get TextureImporter for {fullPath}."); + } + } + // TODO: Add modification logic for other common asset types (Models, AudioClips importers, etc.) + else // Fallback for other asset types OR direct properties on non-GameObject assets + { + // This block handles non-GameObject/Material/ScriptableObject/Texture assets. + // Attempts to apply properties directly to the asset itself. + McpLog.Warn( + $"[ManageAsset.ModifyAsset] Asset type '{asset.GetType().Name}' at '{fullPath}' is not explicitly handled for component modification. Attempting generic property setting on the asset itself." + ); + modified |= ApplyObjectProperties(asset, properties); + } + // --- End Existing Logic --- + + // Check if any modification happened (either component or direct asset modification) + if (modified) + { + // Mark the asset as dirty (important for prefabs/SOs) so Unity knows to save it. + EditorUtility.SetDirty(asset); + // Save all modified assets to disk. + AssetDatabase.SaveAssets(); + // Refresh might be needed in some edge cases, but SaveAssets usually covers it. + // AssetDatabase.Refresh(); + return new SuccessResponse( + $"Asset '{fullPath}' modified successfully.", + GetAssetData(fullPath) + ); + } + else + { + // If no changes were made (e.g., component not found, property names incorrect, value unchanged), return a success message indicating nothing changed. + return new SuccessResponse( + $"No applicable or modifiable properties found for asset '{fullPath}'. Check component names, property names, and values.", + GetAssetData(fullPath) + ); + // Previous message: return new SuccessResponse($"No applicable properties found to modify for asset '{fullPath}'.", GetAssetData(fullPath)); + } + } + catch (Exception e) + { + // Log the detailed error internally + McpLog.Error($"[ManageAsset] Action 'modify' failed for path '{path}': {e}"); + // Return a user-friendly error message + return new ErrorResponse($"Failed to modify asset '{fullPath}': {e.Message}"); + } + } + + private static object DeleteAsset(string path) + { + if (string.IsNullOrEmpty(path)) + return new ErrorResponse("'path' is required for delete."); + string fullPath = AssetPathUtility.SanitizeAssetPath(path); + if (!AssetExists(fullPath)) + return new ErrorResponse($"Asset not found at path: {fullPath}"); + + try + { + bool success = AssetDatabase.DeleteAsset(fullPath); + if (success) + { + // AssetDatabase.Refresh(); // DeleteAsset usually handles refresh + return new SuccessResponse($"Asset '{fullPath}' deleted successfully."); + } + else + { + // This might happen if the file couldn't be deleted (e.g., locked) + return new ErrorResponse( + $"Failed to delete asset '{fullPath}'. Check logs or if the file is locked." + ); + } + } + catch (Exception e) + { + return new ErrorResponse($"Error deleting asset '{fullPath}': {e.Message}"); + } + } + + private static object DuplicateAsset(string path, string destinationPath) + { + if (string.IsNullOrEmpty(path)) + return new ErrorResponse("'path' is required for duplicate."); + + string sourcePath = AssetPathUtility.SanitizeAssetPath(path); + if (!AssetExists(sourcePath)) + return new ErrorResponse($"Source asset not found at path: {sourcePath}"); + + string destPath; + if (string.IsNullOrEmpty(destinationPath)) + { + // Generate a unique path if destination is not provided + destPath = AssetDatabase.GenerateUniqueAssetPath(sourcePath); + } + else + { + destPath = AssetPathUtility.SanitizeAssetPath(destinationPath); + if (AssetExists(destPath)) + return new ErrorResponse($"Asset already exists at destination path: {destPath}"); + // Ensure destination directory exists + EnsureDirectoryExists(Path.GetDirectoryName(destPath)); + } + + try + { + bool success = AssetDatabase.CopyAsset(sourcePath, destPath); + if (success) + { + // AssetDatabase.Refresh(); + return new SuccessResponse( + $"Asset '{sourcePath}' duplicated to '{destPath}'.", + GetAssetData(destPath) + ); + } + else + { + return new ErrorResponse( + $"Failed to duplicate asset from '{sourcePath}' to '{destPath}'." + ); + } + } + catch (Exception e) + { + return new ErrorResponse($"Error duplicating asset '{sourcePath}': {e.Message}"); + } + } + + private static object MoveOrRenameAsset(string path, string destinationPath) + { + if (string.IsNullOrEmpty(path)) + return new ErrorResponse("'path' is required for move/rename."); + if (string.IsNullOrEmpty(destinationPath)) + return new ErrorResponse("'destination' path is required for move/rename."); + + string sourcePath = AssetPathUtility.SanitizeAssetPath(path); + string destPath = AssetPathUtility.SanitizeAssetPath(destinationPath); + + if (!AssetExists(sourcePath)) + return new ErrorResponse($"Source asset not found at path: {sourcePath}"); + if (AssetExists(destPath)) + return new ErrorResponse( + $"An asset already exists at the destination path: {destPath}" + ); + + // Ensure destination directory exists + EnsureDirectoryExists(Path.GetDirectoryName(destPath)); + + try + { + // Validate will return an error string if failed, null if successful + string error = AssetDatabase.ValidateMoveAsset(sourcePath, destPath); + if (!string.IsNullOrEmpty(error)) + { + return new ErrorResponse( + $"Failed to move/rename asset from '{sourcePath}' to '{destPath}': {error}" + ); + } + + string guid = AssetDatabase.MoveAsset(sourcePath, destPath); + if (!string.IsNullOrEmpty(guid)) // MoveAsset returns the new GUID on success + { + // AssetDatabase.Refresh(); // MoveAsset usually handles refresh + return new SuccessResponse( + $"Asset moved/renamed from '{sourcePath}' to '{destPath}'.", + GetAssetData(destPath) + ); + } + else + { + // This case might not be reachable if ValidateMoveAsset passes, but good to have + return new ErrorResponse( + $"MoveAsset call failed unexpectedly for '{sourcePath}' to '{destPath}'." + ); + } + } + catch (Exception e) + { + return new ErrorResponse($"Error moving/renaming asset '{sourcePath}': {e.Message}"); + } + } + + private static object SearchAssets(JObject @params) + { + string searchPattern = @params["searchPattern"]?.ToString(); + string filterType = @params["filterType"]?.ToString(); + string pathScope = @params["path"]?.ToString(); // Use path as folder scope + string filterDateAfterStr = @params["filterDateAfter"]?.ToString(); + int pageSize = @params["pageSize"]?.ToObject() ?? 50; // Default page size + int pageNumber = @params["pageNumber"]?.ToObject() ?? 1; // Default page number (1-based) + bool generatePreview = @params["generatePreview"]?.ToObject() ?? false; + + List searchFilters = new List(); + if (!string.IsNullOrEmpty(searchPattern)) + searchFilters.Add(searchPattern); + if (!string.IsNullOrEmpty(filterType)) + searchFilters.Add($"t:{filterType}"); + + string[] folderScope = null; + if (!string.IsNullOrEmpty(pathScope)) + { + folderScope = new string[] { AssetPathUtility.SanitizeAssetPath(pathScope) }; + if (!AssetDatabase.IsValidFolder(folderScope[0])) + { + // Maybe the user provided a file path instead of a folder? + // We could search in the containing folder, or return an error. + McpLog.Warn( + $"Search path '{folderScope[0]}' is not a valid folder. Searching entire project." + ); + folderScope = null; // Search everywhere if path isn't a folder + } + } + + DateTime? filterDateAfter = null; + if (!string.IsNullOrEmpty(filterDateAfterStr)) + { + if ( + DateTime.TryParse( + filterDateAfterStr, + CultureInfo.InvariantCulture, + DateTimeStyles.AssumeUniversal | DateTimeStyles.AdjustToUniversal, + out DateTime parsedDate + ) + ) + { + filterDateAfter = parsedDate; + } + else + { + McpLog.Warn( + $"Could not parse filterDateAfter: '{filterDateAfterStr}'. Expected ISO 8601 format." + ); + } + } + + try + { + string[] guids = AssetDatabase.FindAssets( + string.Join(" ", searchFilters), + folderScope + ); + List results = new List(); + int totalFound = 0; + + foreach (string guid in guids) + { + string assetPath = AssetDatabase.GUIDToAssetPath(guid); + if (string.IsNullOrEmpty(assetPath)) + continue; + + // Apply date filter if present + if (filterDateAfter.HasValue) + { + DateTime lastWriteTime = File.GetLastWriteTimeUtc( + Path.Combine(Directory.GetCurrentDirectory(), assetPath) + ); + if (lastWriteTime <= filterDateAfter.Value) + { + continue; // Skip assets older than or equal to the filter date + } + } + + totalFound++; // Count matching assets before pagination + results.Add(GetAssetData(assetPath, generatePreview)); + } + + // Apply pagination + int startIndex = (pageNumber - 1) * pageSize; + var pagedResults = results.Skip(startIndex).Take(pageSize).ToList(); + + return new SuccessResponse( + $"Found {totalFound} asset(s). Returning page {pageNumber} ({pagedResults.Count} assets).", + new + { + totalAssets = totalFound, + pageSize = pageSize, + pageNumber = pageNumber, + assets = pagedResults, + } + ); + } + catch (Exception e) + { + return new ErrorResponse($"Error searching assets: {e.Message}"); + } + } + + private static object GetAssetInfo(string path, bool generatePreview) + { + if (string.IsNullOrEmpty(path)) + return new ErrorResponse("'path' is required for get_info."); + string fullPath = AssetPathUtility.SanitizeAssetPath(path); + if (!AssetExists(fullPath)) + return new ErrorResponse($"Asset not found at path: {fullPath}"); + + try + { + return new SuccessResponse( + "Asset info retrieved.", + GetAssetData(fullPath, generatePreview) + ); + } + catch (Exception e) + { + return new ErrorResponse($"Error getting info for asset '{fullPath}': {e.Message}"); + } + } + + /// + /// Retrieves components attached to a GameObject asset (like a Prefab). + /// + /// The asset path of the GameObject or Prefab. + /// A response object containing a list of component type names or an error. + private static object GetComponentsFromAsset(string path) + { + // 1. Validate input path + if (string.IsNullOrEmpty(path)) + return new ErrorResponse("'path' is required for get_components."); + + // 2. Sanitize and check existence + string fullPath = AssetPathUtility.SanitizeAssetPath(path); + if (!AssetExists(fullPath)) + return new ErrorResponse($"Asset not found at path: {fullPath}"); + + try + { + // 3. Load the asset + UnityEngine.Object asset = AssetDatabase.LoadAssetAtPath( + fullPath + ); + if (asset == null) + return new ErrorResponse($"Failed to load asset at path: {fullPath}"); + + // 4. Check if it's a GameObject (Prefabs load as GameObjects) + GameObject gameObject = asset as GameObject; + if (gameObject == null) + { + // Also check if it's *directly* a Component type (less common for primary assets) + Component componentAsset = asset as Component; + if (componentAsset != null) + { + // If the asset itself *is* a component, maybe return just its info? + // This is an edge case. Let's stick to GameObjects for now. + return new ErrorResponse( + $"Asset at '{fullPath}' is a Component ({asset.GetType().FullName}), not a GameObject. Components are typically retrieved *from* a GameObject." + ); + } + return new ErrorResponse( + $"Asset at '{fullPath}' is not a GameObject (Type: {asset.GetType().FullName}). Cannot get components from this asset type." + ); + } + + // 5. Get components + Component[] components = gameObject.GetComponents(); + + // 6. Format component data + List componentList = components + .Select(comp => new + { + typeName = comp.GetType().FullName, + instanceID = comp.GetInstanceID(), + // TODO: Add more component-specific details here if needed in the future? + // Requires reflection or specific handling per component type. + }) + .ToList(); // Explicit cast for clarity if needed + + // 7. Return success response + return new SuccessResponse( + $"Found {componentList.Count} component(s) on asset '{fullPath}'.", + componentList + ); + } + catch (Exception e) + { + McpLog.Error( + $"[ManageAsset.GetComponentsFromAsset] Error getting components for '{fullPath}': {e}" + ); + return new ErrorResponse( + $"Error getting components for asset '{fullPath}': {e.Message}" + ); + } + } + + // --- Internal Helpers --- + + /// + /// Ensures the asset path starts with "Assets/". + /// + /// + /// Checks if an asset exists at the given path (file or folder). + /// + private static bool AssetExists(string sanitizedPath) + { + // AssetDatabase APIs are generally preferred over raw File/Directory checks for assets. + // Check if it's a known asset GUID. + if (!string.IsNullOrEmpty(AssetDatabase.AssetPathToGUID(sanitizedPath))) + { + return true; + } + // AssetPathToGUID might not work for newly created folders not yet refreshed. + // Check directory explicitly for folders. + if (Directory.Exists(Path.Combine(Directory.GetCurrentDirectory(), sanitizedPath))) + { + // Check if it's considered a *valid* folder by Unity + return AssetDatabase.IsValidFolder(sanitizedPath); + } + // Check file existence for non-folder assets. + if (File.Exists(Path.Combine(Directory.GetCurrentDirectory(), sanitizedPath))) + { + return true; // Assume if file exists, it's an asset or will be imported + } + + return false; + // Alternative: return !string.IsNullOrEmpty(AssetDatabase.AssetPathToGUID(sanitizedPath)); + } + + /// + /// Ensures the directory for a given asset path exists, creating it if necessary. + /// + private static void EnsureDirectoryExists(string directoryPath) + { + if (string.IsNullOrEmpty(directoryPath)) + return; + string fullDirPath = Path.Combine(Directory.GetCurrentDirectory(), directoryPath); + if (!Directory.Exists(fullDirPath)) + { + Directory.CreateDirectory(fullDirPath); + AssetDatabase.Refresh(ImportAssetOptions.ForceSynchronousImport); // Let Unity know about the new folder + } + } + + + + /// + /// Applies properties from JObject to a PhysicsMaterial. + /// + private static bool ApplyPhysicsMaterialProperties(PhysicsMaterialType pmat, JObject properties) + { + if (pmat == null || properties == null) + return false; + bool modified = false; + + // Example: Set dynamic friction + if (properties["dynamicFriction"]?.Type == JTokenType.Float) + { + float dynamicFriction = properties["dynamicFriction"].ToObject(); + pmat.dynamicFriction = dynamicFriction; + modified = true; + } + + // Example: Set static friction + if (properties["staticFriction"]?.Type == JTokenType.Float) + { + float staticFriction = properties["staticFriction"].ToObject(); + pmat.staticFriction = staticFriction; + modified = true; + } + + // Example: Set bounciness + if (properties["bounciness"]?.Type == JTokenType.Float) + { + float bounciness = properties["bounciness"].ToObject(); + pmat.bounciness = bounciness; + modified = true; + } + + List averageList = new List { "ave", "Ave", "average", "Average" }; + List multiplyList = new List { "mul", "Mul", "mult", "Mult", "multiply", "Multiply" }; + List minimumList = new List { "min", "Min", "minimum", "Minimum" }; + List maximumList = new List { "max", "Max", "maximum", "Maximum" }; + + // Example: Set friction combine + if (properties["frictionCombine"]?.Type == JTokenType.String) + { + string frictionCombine = properties["frictionCombine"].ToString(); + if (averageList.Contains(frictionCombine)) + pmat.frictionCombine = PhysicsMaterialCombine.Average; + else if (multiplyList.Contains(frictionCombine)) + pmat.frictionCombine = PhysicsMaterialCombine.Multiply; + else if (minimumList.Contains(frictionCombine)) + pmat.frictionCombine = PhysicsMaterialCombine.Minimum; + else if (maximumList.Contains(frictionCombine)) + pmat.frictionCombine = PhysicsMaterialCombine.Maximum; + modified = true; + } + + // Example: Set bounce combine + if (properties["bounceCombine"]?.Type == JTokenType.String) + { + string bounceCombine = properties["bounceCombine"].ToString(); + if (averageList.Contains(bounceCombine)) + pmat.bounceCombine = PhysicsMaterialCombine.Average; + else if (multiplyList.Contains(bounceCombine)) + pmat.bounceCombine = PhysicsMaterialCombine.Multiply; + else if (minimumList.Contains(bounceCombine)) + pmat.bounceCombine = PhysicsMaterialCombine.Minimum; + else if (maximumList.Contains(bounceCombine)) + pmat.bounceCombine = PhysicsMaterialCombine.Maximum; + modified = true; + } + + return modified; + } + + /// + /// Generic helper to set properties on any UnityEngine.Object using reflection. + /// + private static bool ApplyObjectProperties(UnityEngine.Object target, JObject properties) + { + if (target == null || properties == null) + return false; + bool modified = false; + Type type = target.GetType(); + + foreach (var prop in properties.Properties()) + { + string propName = prop.Name; + JToken propValue = prop.Value; + if (SetPropertyOrField(target, propName, propValue, type)) + { + modified = true; + } + } + return modified; + } + + /// + /// Helper to set a property or field via reflection, handling basic types and Unity objects. + /// + private static bool SetPropertyOrField( + object target, + string memberName, + JToken value, + Type type = null + ) + { + type = type ?? target.GetType(); + System.Reflection.BindingFlags flags = + System.Reflection.BindingFlags.Public + | System.Reflection.BindingFlags.Instance + | System.Reflection.BindingFlags.IgnoreCase; + + try + { + System.Reflection.PropertyInfo propInfo = type.GetProperty(memberName, flags); + if (propInfo != null && propInfo.CanWrite) + { + object convertedValue = Helpers.PropertyConversion.TryConvertToType(value, propInfo.PropertyType); + if ( + convertedValue != null + && !object.Equals(propInfo.GetValue(target), convertedValue) + ) + { + propInfo.SetValue(target, convertedValue); + return true; + } + } + else + { + System.Reflection.FieldInfo fieldInfo = type.GetField(memberName, flags); + if (fieldInfo != null) + { + object convertedValue = Helpers.PropertyConversion.TryConvertToType(value, fieldInfo.FieldType); + if ( + convertedValue != null + && !object.Equals(fieldInfo.GetValue(target), convertedValue) + ) + { + fieldInfo.SetValue(target, convertedValue); + return true; + } + } + } + } + catch (Exception ex) + { + McpLog.Warn( + $"[SetPropertyOrField] Failed to set '{memberName}' on {type.Name}: {ex.Message}" + ); + } + return false; + } + + // --- Data Serialization --- + + /// + /// Creates a serializable representation of an asset. + /// + private static object GetAssetData(string path, bool generatePreview = false) + { + if (string.IsNullOrEmpty(path) || !AssetExists(path)) + return null; + + string guid = AssetDatabase.AssetPathToGUID(path); + Type assetType = AssetDatabase.GetMainAssetTypeAtPath(path); + UnityEngine.Object asset = AssetDatabase.LoadAssetAtPath(path); + string previewBase64 = null; + int previewWidth = 0; + int previewHeight = 0; + + if (generatePreview && asset != null) + { + Texture2D preview = AssetPreview.GetAssetPreview(asset); + + if (preview != null) + { + try + { + // Ensure texture is readable for EncodeToPNG + // Creating a temporary readable copy is safer + RenderTexture rt = null; + Texture2D readablePreview = null; + RenderTexture previous = RenderTexture.active; + try + { + rt = RenderTexture.GetTemporary(preview.width, preview.height); + Graphics.Blit(preview, rt); + RenderTexture.active = rt; + readablePreview = new Texture2D(preview.width, preview.height, TextureFormat.RGB24, false); + readablePreview.ReadPixels(new Rect(0, 0, rt.width, rt.height), 0, 0); + readablePreview.Apply(); + + var pngData = readablePreview.EncodeToPNG(); + if (pngData != null && pngData.Length > 0) + { + previewBase64 = Convert.ToBase64String(pngData); + previewWidth = readablePreview.width; + previewHeight = readablePreview.height; + } + } + finally + { + RenderTexture.active = previous; + if (rt != null) RenderTexture.ReleaseTemporary(rt); + if (readablePreview != null) UnityEngine.Object.DestroyImmediate(readablePreview); + } + } + catch (Exception ex) + { + McpLog.Warn( + $"Failed to generate readable preview for '{path}': {ex.Message}. Preview might not be readable." + ); + // Fallback: Try getting static preview if available? + // Texture2D staticPreview = AssetPreview.GetMiniThumbnail(asset); + } + } + else + { + McpLog.Warn( + $"Could not get asset preview for {path} (Type: {assetType?.Name}). Is it supported?" + ); + } + } + + return new + { + path = path, + guid = guid, + assetType = assetType?.FullName ?? "Unknown", + name = Path.GetFileNameWithoutExtension(path), + fileName = Path.GetFileName(path), + isFolder = AssetDatabase.IsValidFolder(path), + instanceID = asset?.GetInstanceID() ?? 0, + lastWriteTimeUtc = File.GetLastWriteTimeUtc( + Path.Combine(Directory.GetCurrentDirectory(), path) + ) + .ToString("o"), // ISO 8601 + // --- Preview Data --- + previewBase64 = previewBase64, // PNG data as Base64 string + previewWidth = previewWidth, + previewHeight = previewHeight, + // TODO: Add more metadata? Importer settings? Dependencies? + }; + } + } +} diff --git a/Packages/MCPForUnity/Editor/Tools/ManageAsset.cs.meta b/Packages/MCPForUnity/Editor/Tools/ManageAsset.cs.meta new file mode 100644 index 00000000..3dbc2e2f --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/ManageAsset.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: de90a1d9743a2874cb235cf0b83444b1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Tools/ManageComponents.cs b/Packages/MCPForUnity/Editor/Tools/ManageComponents.cs new file mode 100644 index 00000000..596e5b86 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/ManageComponents.cs @@ -0,0 +1,351 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using MCPForUnity.Editor.Helpers; +using Newtonsoft.Json.Linq; +using UnityEditor; +using UnityEditor.SceneManagement; +using UnityEngine; + +namespace MCPForUnity.Editor.Tools +{ + /// + /// Tool for managing components on GameObjects. + /// Actions: add, remove, set_property + /// + /// This is a focused tool for component lifecycle operations. + /// For reading component data, use the unity://scene/gameobject/{id}/components resource. + /// + [McpForUnityTool("manage_components")] + public static class ManageComponents + { + /// + /// Handles the manage_components command. + /// + /// Command parameters + /// Result of the component operation + public static object HandleCommand(JObject @params) + { + if (@params == null) + { + return new ErrorResponse("Parameters cannot be null."); + } + + string action = ParamCoercion.CoerceString(@params["action"], null)?.ToLowerInvariant(); + if (string.IsNullOrEmpty(action)) + { + return new ErrorResponse("'action' parameter is required (add, remove, set_property)."); + } + + // Target resolution + JToken targetToken = @params["target"]; + string searchMethod = ParamCoercion.CoerceString(@params["searchMethod"] ?? @params["search_method"], null); + + if (targetToken == null) + { + return new ErrorResponse("'target' parameter is required."); + } + + try + { + return action switch + { + "add" => AddComponent(@params, targetToken, searchMethod), + "remove" => RemoveComponent(@params, targetToken, searchMethod), + "set_property" => SetProperty(@params, targetToken, searchMethod), + _ => new ErrorResponse($"Unknown action: '{action}'. Supported actions: add, remove, set_property") + }; + } + catch (Exception e) + { + McpLog.Error($"[ManageComponents] Action '{action}' failed: {e}"); + return new ErrorResponse($"Internal error processing action '{action}': {e.Message}"); + } + } + + #region Action Implementations + + private static object AddComponent(JObject @params, JToken targetToken, string searchMethod) + { + GameObject targetGo = FindTarget(targetToken, searchMethod); + if (targetGo == null) + { + return new ErrorResponse($"Target GameObject ('{targetToken}') not found using method '{searchMethod ?? "default"}'."); + } + + string componentTypeName = ParamCoercion.CoerceString(@params["componentType"] ?? @params["component_type"], null); + if (string.IsNullOrEmpty(componentTypeName)) + { + return new ErrorResponse("'componentType' parameter is required for 'add' action."); + } + + // Resolve component type using unified type resolver + Type type = UnityTypeResolver.ResolveComponent(componentTypeName); + if (type == null) + { + return new ErrorResponse($"Component type '{componentTypeName}' not found. Use a fully-qualified name if needed."); + } + + // Use ComponentOps for the actual operation + Component newComponent = ComponentOps.AddComponent(targetGo, type, out string error); + if (newComponent == null) + { + return new ErrorResponse(error ?? $"Failed to add component '{componentTypeName}'."); + } + + // Set properties if provided + JObject properties = @params["properties"] as JObject ?? @params["componentProperties"] as JObject; + if (properties != null && properties.HasValues) + { + // Record for undo before modifying properties + Undo.RecordObject(newComponent, "Modify Component Properties"); + SetPropertiesOnComponent(newComponent, properties); + } + + EditorUtility.SetDirty(targetGo); + MarkOwningSceneDirty(targetGo); + + return new + { + success = true, + message = $"Component '{componentTypeName}' added to '{targetGo.name}'.", + data = new + { + instanceID = targetGo.GetInstanceID(), + componentType = type.FullName, + componentInstanceID = newComponent.GetInstanceID() + } + }; + } + + private static object RemoveComponent(JObject @params, JToken targetToken, string searchMethod) + { + GameObject targetGo = FindTarget(targetToken, searchMethod); + if (targetGo == null) + { + return new ErrorResponse($"Target GameObject ('{targetToken}') not found using method '{searchMethod ?? "default"}'."); + } + + string componentTypeName = ParamCoercion.CoerceString(@params["componentType"] ?? @params["component_type"], null); + if (string.IsNullOrEmpty(componentTypeName)) + { + return new ErrorResponse("'componentType' parameter is required for 'remove' action."); + } + + // Resolve component type using unified type resolver + Type type = UnityTypeResolver.ResolveComponent(componentTypeName); + if (type == null) + { + return new ErrorResponse($"Component type '{componentTypeName}' not found."); + } + + // Use ComponentOps for the actual operation + bool removed = ComponentOps.RemoveComponent(targetGo, type, out string error); + if (!removed) + { + return new ErrorResponse(error ?? $"Failed to remove component '{componentTypeName}'."); + } + + EditorUtility.SetDirty(targetGo); + MarkOwningSceneDirty(targetGo); + + return new + { + success = true, + message = $"Component '{componentTypeName}' removed from '{targetGo.name}'.", + data = new + { + instanceID = targetGo.GetInstanceID() + } + }; + } + + private static object SetProperty(JObject @params, JToken targetToken, string searchMethod) + { + GameObject targetGo = FindTarget(targetToken, searchMethod); + if (targetGo == null) + { + return new ErrorResponse($"Target GameObject ('{targetToken}') not found using method '{searchMethod ?? "default"}'."); + } + + string componentType = ParamCoercion.CoerceString(@params["componentType"] ?? @params["component_type"], null); + if (string.IsNullOrEmpty(componentType)) + { + return new ErrorResponse("'componentType' parameter is required for 'set_property' action."); + } + + // Resolve component type using unified type resolver + Type type = UnityTypeResolver.ResolveComponent(componentType); + if (type == null) + { + return new ErrorResponse($"Component type '{componentType}' not found."); + } + + Component component = targetGo.GetComponent(type); + if (component == null) + { + return new ErrorResponse($"Component '{componentType}' not found on '{targetGo.name}'."); + } + + // Get property and value + string propertyName = ParamCoercion.CoerceString(@params["property"], null); + JToken valueToken = @params["value"]; + + // Support both single property or properties object + JObject properties = @params["properties"] as JObject; + + if (string.IsNullOrEmpty(propertyName) && (properties == null || !properties.HasValues)) + { + return new ErrorResponse("Either 'property'+'value' or 'properties' object is required for 'set_property' action."); + } + + var errors = new List(); + + try + { + Undo.RecordObject(component, $"Set property on {componentType}"); + + if (!string.IsNullOrEmpty(propertyName) && valueToken != null) + { + // Single property mode + var error = TrySetProperty(component, propertyName, valueToken); + if (error != null) + { + errors.Add(error); + } + } + + if (properties != null && properties.HasValues) + { + // Multiple properties mode + foreach (var prop in properties.Properties()) + { + var error = TrySetProperty(component, prop.Name, prop.Value); + if (error != null) + { + errors.Add(error); + } + } + } + + EditorUtility.SetDirty(component); + MarkOwningSceneDirty(targetGo); + + if (errors.Count > 0) + { + return new + { + success = false, + message = $"Some properties failed to set on '{componentType}'.", + data = new + { + instanceID = targetGo.GetInstanceID(), + errors = errors + } + }; + } + + return new + { + success = true, + message = $"Properties set on component '{componentType}' on '{targetGo.name}'.", + data = new + { + instanceID = targetGo.GetInstanceID() + } + }; + } + catch (Exception e) + { + return new ErrorResponse($"Error setting properties on component '{componentType}': {e.Message}"); + } + } + + #endregion + + #region Helpers + + /// + /// Marks the appropriate scene as dirty for the given GameObject. + /// Handles both regular scenes and prefab stages. + /// + private static void MarkOwningSceneDirty(GameObject targetGo) + { + var prefabStage = PrefabStageUtility.GetCurrentPrefabStage(); + if (prefabStage != null) + { + EditorSceneManager.MarkSceneDirty(prefabStage.scene); + } + else + { + EditorSceneManager.MarkSceneDirty(targetGo.scene); + } + } + + private static GameObject FindTarget(JToken targetToken, string searchMethod) + { + if (targetToken == null) + return null; + + // Try instance ID first + if (targetToken.Type == JTokenType.Integer) + { + int instanceId = targetToken.Value(); + return GameObjectLookup.FindById(instanceId); + } + + string targetStr = targetToken.ToString(); + + // Try parsing as instance ID + if (int.TryParse(targetStr, out int parsedId)) + { + var byId = GameObjectLookup.FindById(parsedId); + if (byId != null) + return byId; + } + + // Use GameObjectLookup for search + return GameObjectLookup.FindByTarget(targetToken, searchMethod ?? "by_name", true); + } + + private static void SetPropertiesOnComponent(Component component, JObject properties) + { + if (component == null || properties == null) + return; + + var errors = new List(); + foreach (var prop in properties.Properties()) + { + var error = TrySetProperty(component, prop.Name, prop.Value); + if (error != null) + errors.Add(error); + } + + if (errors.Count > 0) + { + McpLog.Warn($"[ManageComponents] Some properties failed to set on {component.GetType().Name}: {string.Join(", ", errors)}"); + } + } + + /// + /// Attempts to set a property or field on a component. + /// Delegates to ComponentOps.SetProperty for unified implementation. + /// + private static string TrySetProperty(Component component, string propertyName, JToken value) + { + if (component == null || string.IsNullOrEmpty(propertyName)) + return "Invalid component or property name"; + + if (ComponentOps.SetProperty(component, propertyName, value, out string error)) + { + return null; // Success + } + + McpLog.Warn($"[ManageComponents] {error}"); + return error; + } + + #endregion + } +} diff --git a/Packages/MCPForUnity/Editor/Tools/ManageComponents.cs.meta b/Packages/MCPForUnity/Editor/Tools/ManageComponents.cs.meta new file mode 100644 index 00000000..8ed3f745 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/ManageComponents.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c6f476359563842c79eda2c180566c98 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Tools/ManageEditor.cs b/Packages/MCPForUnity/Editor/Tools/ManageEditor.cs new file mode 100644 index 00000000..27048031 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/ManageEditor.cs @@ -0,0 +1,393 @@ +using System; +using MCPForUnity.Editor.Helpers; +using Newtonsoft.Json.Linq; +using UnityEditor; +using UnityEditorInternal; // Required for tag management + +namespace MCPForUnity.Editor.Tools +{ + /// + /// Handles editor control actions including play mode control, tool selection, + /// and tag/layer management. For reading editor state, use MCP resources instead. + /// + [McpForUnityTool("manage_editor", AutoRegister = false)] + public static class ManageEditor + { + // Constant for starting user layer index + private const int FirstUserLayerIndex = 8; + + // Constant for total layer count + private const int TotalLayerCount = 32; + + /// + /// Main handler for editor management actions. + /// + public static object HandleCommand(JObject @params) + { + // Step 1: Null parameter guard (consistent across all tools) + if (@params == null) + { + return new ErrorResponse("Parameters cannot be null."); + } + + // Step 2: Wrap parameters + var p = new ToolParams(@params); + + // Step 3: Extract and validate required parameters + var actionResult = p.GetRequired("action"); + if (!actionResult.IsSuccess) + { + return new ErrorResponse(actionResult.ErrorMessage); + } + string action = actionResult.Value.ToLowerInvariant(); + + // Parameters for specific actions + string tagName = p.Get("tagName"); + string layerName = p.Get("layerName"); + bool waitForCompletion = p.GetBool("waitForCompletion", false); + + // Route action + switch (action) + { + // Play Mode Control + case "play": + try + { + if (!EditorApplication.isPlaying) + { + EditorApplication.isPlaying = true; + return new SuccessResponse("Entered play mode."); + } + return new SuccessResponse("Already in play mode."); + } + catch (Exception e) + { + return new ErrorResponse($"Error entering play mode: {e.Message}"); + } + case "pause": + try + { + if (EditorApplication.isPlaying) + { + EditorApplication.isPaused = !EditorApplication.isPaused; + return new SuccessResponse( + EditorApplication.isPaused ? "Game paused." : "Game resumed." + ); + } + return new ErrorResponse("Cannot pause/resume: Not in play mode."); + } + catch (Exception e) + { + return new ErrorResponse($"Error pausing/resuming game: {e.Message}"); + } + case "stop": + try + { + if (EditorApplication.isPlaying) + { + EditorApplication.isPlaying = false; + return new SuccessResponse("Exited play mode."); + } + return new SuccessResponse("Already stopped (not in play mode)."); + } + catch (Exception e) + { + return new ErrorResponse($"Error stopping play mode: {e.Message}"); + } + + // Tool Control + case "set_active_tool": + var toolNameResult = p.GetRequired("toolName", "'toolName' parameter required for set_active_tool."); + if (!toolNameResult.IsSuccess) + return new ErrorResponse(toolNameResult.ErrorMessage); + return SetActiveTool(toolNameResult.Value); + + // Tag Management + case "add_tag": + var addTagResult = p.GetRequired("tagName", "'tagName' parameter required for add_tag."); + if (!addTagResult.IsSuccess) + return new ErrorResponse(addTagResult.ErrorMessage); + return AddTag(addTagResult.Value); + case "remove_tag": + var removeTagResult = p.GetRequired("tagName", "'tagName' parameter required for remove_tag."); + if (!removeTagResult.IsSuccess) + return new ErrorResponse(removeTagResult.ErrorMessage); + return RemoveTag(removeTagResult.Value); + // Layer Management + case "add_layer": + var addLayerResult = p.GetRequired("layerName", "'layerName' parameter required for add_layer."); + if (!addLayerResult.IsSuccess) + return new ErrorResponse(addLayerResult.ErrorMessage); + return AddLayer(addLayerResult.Value); + case "remove_layer": + var removeLayerResult = p.GetRequired("layerName", "'layerName' parameter required for remove_layer."); + if (!removeLayerResult.IsSuccess) + return new ErrorResponse(removeLayerResult.ErrorMessage); + return RemoveLayer(removeLayerResult.Value); + // --- Settings (Example) --- + // case "set_resolution": + // int? width = @params["width"]?.ToObject(); + // int? height = @params["height"]?.ToObject(); + // if (!width.HasValue || !height.HasValue) return new ErrorResponse("'width' and 'height' parameters required."); + // return SetGameViewResolution(width.Value, height.Value); + // case "set_quality": + // // Handle string name or int index + // return SetQualityLevel(@params["qualityLevel"]); + + default: + return new ErrorResponse( + $"Unknown action: '{action}'. Supported actions: play, pause, stop, set_active_tool, add_tag, remove_tag, add_layer, remove_layer. Use MCP resources for reading editor state, project info, tags, layers, selection, windows, prefab stage, and active tool." + ); + } + } + + // --- Tool Control Methods --- + + private static object SetActiveTool(string toolName) + { + try + { + Tool targetTool; + if (Enum.TryParse(toolName, true, out targetTool)) // Case-insensitive parse + { + // Check if it's a valid built-in tool + if (targetTool != Tool.None && targetTool <= Tool.Custom) // Tool.Custom is the last standard tool + { + UnityEditor.Tools.current = targetTool; + return new SuccessResponse($"Set active tool to '{targetTool}'."); + } + else + { + return new ErrorResponse( + $"Cannot directly set tool to '{toolName}'. It might be None, Custom, or invalid." + ); + } + } + else + { + // Potentially try activating a custom tool by name here if needed + // This often requires specific editor scripting knowledge for that tool. + return new ErrorResponse( + $"Could not parse '{toolName}' as a standard Unity Tool (View, Move, Rotate, Scale, Rect, Transform, Custom)." + ); + } + } + catch (Exception e) + { + return new ErrorResponse($"Error setting active tool: {e.Message}"); + } + } + + // --- Tag Management Methods --- + + private static object AddTag(string tagName) + { + if (string.IsNullOrWhiteSpace(tagName)) + return new ErrorResponse("Tag name cannot be empty or whitespace."); + + // Check if tag already exists + if (System.Linq.Enumerable.Contains(InternalEditorUtility.tags, tagName)) + { + return new ErrorResponse($"Tag '{tagName}' already exists."); + } + + try + { + // Add the tag using the internal utility + InternalEditorUtility.AddTag(tagName); + // Force save assets to ensure the change persists in the TagManager asset + AssetDatabase.SaveAssets(); + return new SuccessResponse($"Tag '{tagName}' added successfully."); + } + catch (Exception e) + { + return new ErrorResponse($"Failed to add tag '{tagName}': {e.Message}"); + } + } + + private static object RemoveTag(string tagName) + { + if (string.IsNullOrWhiteSpace(tagName)) + return new ErrorResponse("Tag name cannot be empty or whitespace."); + if (tagName.Equals("Untagged", StringComparison.OrdinalIgnoreCase)) + return new ErrorResponse("Cannot remove the built-in 'Untagged' tag."); + + // Check if tag exists before attempting removal + if (!System.Linq.Enumerable.Contains(InternalEditorUtility.tags, tagName)) + { + return new ErrorResponse($"Tag '{tagName}' does not exist."); + } + + try + { + // Remove the tag using the internal utility + InternalEditorUtility.RemoveTag(tagName); + // Force save assets + AssetDatabase.SaveAssets(); + return new SuccessResponse($"Tag '{tagName}' removed successfully."); + } + catch (Exception e) + { + // Catch potential issues if the tag is somehow in use or removal fails + return new ErrorResponse($"Failed to remove tag '{tagName}': {e.Message}"); + } + } + + // --- Layer Management Methods --- + + private static object AddLayer(string layerName) + { + if (string.IsNullOrWhiteSpace(layerName)) + return new ErrorResponse("Layer name cannot be empty or whitespace."); + + // Access the TagManager asset + SerializedObject tagManager = GetTagManager(); + if (tagManager == null) + return new ErrorResponse("Could not access TagManager asset."); + + SerializedProperty layersProp = tagManager.FindProperty("layers"); + if (layersProp == null || !layersProp.isArray) + return new ErrorResponse("Could not find 'layers' property in TagManager."); + + // Check if layer name already exists (case-insensitive check recommended) + for (int i = 0; i < TotalLayerCount; i++) + { + SerializedProperty layerSP = layersProp.GetArrayElementAtIndex(i); + if ( + layerSP != null + && layerName.Equals(layerSP.stringValue, StringComparison.OrdinalIgnoreCase) + ) + { + return new ErrorResponse($"Layer '{layerName}' already exists at index {i}."); + } + } + + // Find the first empty user layer slot (indices 8 to 31) + int firstEmptyUserLayer = -1; + for (int i = FirstUserLayerIndex; i < TotalLayerCount; i++) + { + SerializedProperty layerSP = layersProp.GetArrayElementAtIndex(i); + if (layerSP != null && string.IsNullOrEmpty(layerSP.stringValue)) + { + firstEmptyUserLayer = i; + break; + } + } + + if (firstEmptyUserLayer == -1) + { + return new ErrorResponse("No empty User Layer slots available (8-31 are full)."); + } + + // Assign the name to the found slot + try + { + SerializedProperty targetLayerSP = layersProp.GetArrayElementAtIndex( + firstEmptyUserLayer + ); + targetLayerSP.stringValue = layerName; + // Apply the changes to the TagManager asset + tagManager.ApplyModifiedProperties(); + // Save assets to make sure it's written to disk + AssetDatabase.SaveAssets(); + return new SuccessResponse( + $"Layer '{layerName}' added successfully to slot {firstEmptyUserLayer}." + ); + } + catch (Exception e) + { + return new ErrorResponse($"Failed to add layer '{layerName}': {e.Message}"); + } + } + + private static object RemoveLayer(string layerName) + { + if (string.IsNullOrWhiteSpace(layerName)) + return new ErrorResponse("Layer name cannot be empty or whitespace."); + + // Access the TagManager asset + SerializedObject tagManager = GetTagManager(); + if (tagManager == null) + return new ErrorResponse("Could not access TagManager asset."); + + SerializedProperty layersProp = tagManager.FindProperty("layers"); + if (layersProp == null || !layersProp.isArray) + return new ErrorResponse("Could not find 'layers' property in TagManager."); + + // Find the layer by name (must be user layer) + int layerIndexToRemove = -1; + for (int i = FirstUserLayerIndex; i < TotalLayerCount; i++) // Start from user layers + { + SerializedProperty layerSP = layersProp.GetArrayElementAtIndex(i); + // Case-insensitive comparison is safer + if ( + layerSP != null + && layerName.Equals(layerSP.stringValue, StringComparison.OrdinalIgnoreCase) + ) + { + layerIndexToRemove = i; + break; + } + } + + if (layerIndexToRemove == -1) + { + return new ErrorResponse($"User layer '{layerName}' not found."); + } + + // Clear the name for that index + try + { + SerializedProperty targetLayerSP = layersProp.GetArrayElementAtIndex( + layerIndexToRemove + ); + targetLayerSP.stringValue = string.Empty; // Set to empty string to remove + // Apply the changes + tagManager.ApplyModifiedProperties(); + // Save assets + AssetDatabase.SaveAssets(); + return new SuccessResponse( + $"Layer '{layerName}' (slot {layerIndexToRemove}) removed successfully." + ); + } + catch (Exception e) + { + return new ErrorResponse($"Failed to remove layer '{layerName}': {e.Message}"); + } + } + + // --- Helper Methods --- + + /// + /// Gets the SerializedObject for the TagManager asset. + /// + private static SerializedObject GetTagManager() + { + try + { + // Load the TagManager asset from the ProjectSettings folder + UnityEngine.Object[] tagManagerAssets = AssetDatabase.LoadAllAssetsAtPath( + "ProjectSettings/TagManager.asset" + ); + if (tagManagerAssets == null || tagManagerAssets.Length == 0) + { + McpLog.Error("[ManageEditor] TagManager.asset not found in ProjectSettings."); + return null; + } + // The first object in the asset file should be the TagManager + return new SerializedObject(tagManagerAssets[0]); + } + catch (Exception e) + { + McpLog.Error($"[ManageEditor] Error accessing TagManager.asset: {e.Message}"); + return null; + } + } + + // --- Example Implementations for Settings --- + /* + private static object SetGameViewResolution(int width, int height) { ... } + private static object SetQualityLevel(JToken qualityLevelToken) { ... } + */ + } +} diff --git a/Packages/MCPForUnity/Editor/Tools/ManageEditor.cs.meta b/Packages/MCPForUnity/Editor/Tools/ManageEditor.cs.meta new file mode 100644 index 00000000..8b55fb87 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/ManageEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 43ac60aa36b361b4dbe4a038ae9f35c8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Tools/ManageMaterial.cs b/Packages/MCPForUnity/Editor/Tools/ManageMaterial.cs new file mode 100644 index 00000000..e6d7cd22 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/ManageMaterial.cs @@ -0,0 +1,596 @@ +using System; +using System.Collections.Generic; +using MCPForUnity.Editor.Helpers; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using UnityEditor; +using UnityEngine; + +namespace MCPForUnity.Editor.Tools +{ + [McpForUnityTool("manage_material", AutoRegister = false)] + public static class ManageMaterial + { + public static object HandleCommand(JObject @params) + { + string action = @params["action"]?.ToString()?.ToLowerInvariant(); + if (string.IsNullOrEmpty(action)) + { + return new ErrorResponse("Action is required"); + } + + try + { + switch (action) + { + case "ping": + return new SuccessResponse("pong", new { tool = "manage_material" }); + + case "create": + return CreateMaterial(@params); + + case "set_material_shader_property": + return SetMaterialShaderProperty(@params); + + case "set_material_color": + return SetMaterialColor(@params); + + case "assign_material_to_renderer": + return AssignMaterialToRenderer(@params); + + case "set_renderer_color": + return SetRendererColor(@params); + + case "get_material_info": + return GetMaterialInfo(@params); + + default: + return new ErrorResponse($"Unknown action: {action}"); + } + } + catch (Exception ex) + { + return new ErrorResponse(ex.Message, new { stackTrace = ex.StackTrace }); + } + } + + private static string NormalizePath(string path) + { + if (string.IsNullOrEmpty(path)) return path; + + // Normalize separators and ensure Assets/ root + path = AssetPathUtility.SanitizeAssetPath(path); + + // Ensure .mat extension + if (!path.EndsWith(".mat", StringComparison.OrdinalIgnoreCase)) + { + path += ".mat"; + } + + return path; + } + + private static object SetMaterialShaderProperty(JObject @params) + { + string materialPath = NormalizePath(@params["materialPath"]?.ToString()); + string property = @params["property"]?.ToString(); + JToken value = @params["value"]; + + if (string.IsNullOrEmpty(materialPath) || string.IsNullOrEmpty(property) || value == null) + { + return new ErrorResponse("materialPath, property, and value are required"); + } + + // Find material + var findInstruction = new JObject { ["find"] = materialPath }; + Material mat = ObjectResolver.Resolve(findInstruction, typeof(Material)) as Material; + + if (mat == null) + { + return new ErrorResponse($"Could not find material at path: {materialPath}"); + } + + Undo.RecordObject(mat, "Set Material Property"); + + // Normalize alias/casing once for all code paths + property = MaterialOps.ResolvePropertyName(mat, property); + + // 1. Try handling Texture instruction explicitly (ManageMaterial special feature) + if (value.Type == JTokenType.Object) + { + // Check if it looks like an instruction + if (value is JObject obj && (obj.ContainsKey("find") || obj.ContainsKey("method"))) + { + Texture tex = ObjectResolver.Resolve(obj, typeof(Texture)) as Texture; + if (tex != null && mat.HasProperty(property)) + { + mat.SetTexture(property, tex); + EditorUtility.SetDirty(mat); + return new SuccessResponse($"Set texture property {property} on {mat.name}"); + } + } + } + + // 2. Fallback to standard logic via MaterialOps (handles Colors, Floats, Strings->Path) + bool success = MaterialOps.TrySetShaderProperty(mat, property, value, UnityJsonSerializer.Instance); + + if (success) + { + EditorUtility.SetDirty(mat); + return new SuccessResponse($"Set property {property} on {mat.name}"); + } + else + { + return new ErrorResponse($"Failed to set property {property}. Value format might be unsupported or texture not found."); + } + } + + private static object SetMaterialColor(JObject @params) + { + string materialPath = NormalizePath(@params["materialPath"]?.ToString()); + JToken colorToken = @params["color"]; + string property = @params["property"]?.ToString(); + + if (string.IsNullOrEmpty(materialPath) || colorToken == null) + { + return new ErrorResponse("materialPath and color are required"); + } + + var findInstruction = new JObject { ["find"] = materialPath }; + Material mat = ObjectResolver.Resolve(findInstruction, typeof(Material)) as Material; + + if (mat == null) + { + return new ErrorResponse($"Could not find material at path: {materialPath}"); + } + + Color color; + try + { + color = MaterialOps.ParseColor(colorToken, UnityJsonSerializer.Instance); + } + catch (Exception e) + { + return new ErrorResponse($"Invalid color format: {e.Message}"); + } + + Undo.RecordObject(mat, "Set Material Color"); + + bool foundProp = false; + if (!string.IsNullOrEmpty(property)) + { + if (mat.HasProperty(property)) + { + mat.SetColor(property, color); + foundProp = true; + } + } + else + { + // Fallback logic: _BaseColor (URP/HDRP) then _Color (Built-in) + if (mat.HasProperty("_BaseColor")) + { + mat.SetColor("_BaseColor", color); + foundProp = true; + property = "_BaseColor"; + } + else if (mat.HasProperty("_Color")) + { + mat.SetColor("_Color", color); + foundProp = true; + property = "_Color"; + } + } + + if (foundProp) + { + EditorUtility.SetDirty(mat); + return new SuccessResponse($"Set color on {property}"); + } + else + { + return new ErrorResponse("Could not find suitable color property (_BaseColor or _Color) or specified property does not exist."); + } + } + + private static object AssignMaterialToRenderer(JObject @params) + { + string target = @params["target"]?.ToString(); + string searchMethod = @params["searchMethod"]?.ToString(); + string materialPath = NormalizePath(@params["materialPath"]?.ToString()); + int slot = @params["slot"]?.ToObject() ?? 0; + + if (string.IsNullOrEmpty(target) || string.IsNullOrEmpty(materialPath)) + { + return new ErrorResponse("target and materialPath are required"); + } + + var goInstruction = new JObject { ["find"] = target }; + if (!string.IsNullOrEmpty(searchMethod)) goInstruction["method"] = searchMethod; + + GameObject go = ObjectResolver.Resolve(goInstruction, typeof(GameObject)) as GameObject; + if (go == null) + { + return new ErrorResponse($"Could not find target GameObject: {target}"); + } + + Renderer renderer = go.GetComponent(); + if (renderer == null) + { + return new ErrorResponse($"GameObject {go.name} has no Renderer component"); + } + + var matInstruction = new JObject { ["find"] = materialPath }; + Material mat = ObjectResolver.Resolve(matInstruction, typeof(Material)) as Material; + if (mat == null) + { + return new ErrorResponse($"Could not find material: {materialPath}"); + } + + Undo.RecordObject(renderer, "Assign Material"); + + Material[] sharedMats = renderer.sharedMaterials; + if (slot < 0 || slot >= sharedMats.Length) + { + return new ErrorResponse($"Slot {slot} out of bounds (count: {sharedMats.Length})"); + } + + sharedMats[slot] = mat; + renderer.sharedMaterials = sharedMats; + + EditorUtility.SetDirty(renderer); + return new SuccessResponse($"Assigned material {mat.name} to {go.name} slot {slot}"); + } + + private static object SetRendererColor(JObject @params) + { + string target = @params["target"]?.ToString(); + string searchMethod = @params["searchMethod"]?.ToString(); + JToken colorToken = @params["color"]; + int slot = @params["slot"]?.ToObject() ?? 0; + string mode = @params["mode"]?.ToString() ?? "property_block"; + + if (string.IsNullOrEmpty(target) || colorToken == null) + { + return new ErrorResponse("target and color are required"); + } + + Color color; + try + { + color = MaterialOps.ParseColor(colorToken, UnityJsonSerializer.Instance); + } + catch (Exception e) + { + return new ErrorResponse($"Invalid color format: {e.Message}"); + } + + var goInstruction = new JObject { ["find"] = target }; + if (!string.IsNullOrEmpty(searchMethod)) goInstruction["method"] = searchMethod; + + GameObject go = ObjectResolver.Resolve(goInstruction, typeof(GameObject)) as GameObject; + if (go == null) + { + return new ErrorResponse($"Could not find target GameObject: {target}"); + } + + Renderer renderer = go.GetComponent(); + if (renderer == null) + { + return new ErrorResponse($"GameObject {go.name} has no Renderer component"); + } + + if (mode == "property_block") + { + if (slot < 0 || slot >= renderer.sharedMaterials.Length) + { + return new ErrorResponse($"Slot {slot} out of bounds (count: {renderer.sharedMaterials.Length})"); + } + + MaterialPropertyBlock block = new MaterialPropertyBlock(); + renderer.GetPropertyBlock(block, slot); + + if (renderer.sharedMaterials[slot] != null) + { + Material mat = renderer.sharedMaterials[slot]; + if (mat.HasProperty("_BaseColor")) block.SetColor("_BaseColor", color); + else if (mat.HasProperty("_Color")) block.SetColor("_Color", color); + else block.SetColor("_Color", color); + } + else + { + block.SetColor("_Color", color); + } + + renderer.SetPropertyBlock(block, slot); + EditorUtility.SetDirty(renderer); + return new SuccessResponse($"Set renderer color (PropertyBlock) on slot {slot}"); + } + else if (mode == "shared") + { + if (slot >= 0 && slot < renderer.sharedMaterials.Length) + { + Material mat = renderer.sharedMaterials[slot]; + if (mat == null) + { + return new ErrorResponse($"No material in slot {slot}"); + } + Undo.RecordObject(mat, "Set Material Color"); + if (mat.HasProperty("_BaseColor")) mat.SetColor("_BaseColor", color); + else mat.SetColor("_Color", color); + EditorUtility.SetDirty(mat); + return new SuccessResponse("Set shared material color"); + } + return new ErrorResponse("Invalid slot"); + } + else if (mode == "instance") + { + if (slot >= 0 && slot < renderer.materials.Length) + { + Material mat = renderer.materials[slot]; + if (mat == null) + { + return new ErrorResponse($"No material in slot {slot}"); + } + // Note: Undo cannot fully revert material instantiation + Undo.RecordObject(mat, "Set Instance Material Color"); + if (mat.HasProperty("_BaseColor")) mat.SetColor("_BaseColor", color); + else mat.SetColor("_Color", color); + return new SuccessResponse("Set instance material color", new { warning = "Material instance created; Undo cannot fully revert instantiation." }); + } + return new ErrorResponse("Invalid slot"); + } + + return new ErrorResponse($"Unknown mode: {mode}"); + } + + private static object GetMaterialInfo(JObject @params) + { + string materialPath = NormalizePath(@params["materialPath"]?.ToString()); + if (string.IsNullOrEmpty(materialPath)) + { + return new ErrorResponse("materialPath is required"); + } + + var findInstruction = new JObject { ["find"] = materialPath }; + Material mat = ObjectResolver.Resolve(findInstruction, typeof(Material)) as Material; + + if (mat == null) + { + return new ErrorResponse($"Could not find material at path: {materialPath}"); + } + + Shader shader = mat.shader; + var properties = new List(); + +#if UNITY_6000_0_OR_NEWER + int propertyCount = shader.GetPropertyCount(); + for (int i = 0; i < propertyCount; i++) + { + string name = shader.GetPropertyName(i); + var type = shader.GetPropertyType(i); + string description = shader.GetPropertyDescription(i); + + object currentValue = null; + try + { + if (mat.HasProperty(name)) + { + switch (type) + { + case UnityEngine.Rendering.ShaderPropertyType.Color: + var c = mat.GetColor(name); + currentValue = new { r = c.r, g = c.g, b = c.b, a = c.a }; + break; + case UnityEngine.Rendering.ShaderPropertyType.Vector: + var v = mat.GetVector(name); + currentValue = new { x = v.x, y = v.y, z = v.z, w = v.w }; + break; + case UnityEngine.Rendering.ShaderPropertyType.Float: + case UnityEngine.Rendering.ShaderPropertyType.Range: + currentValue = mat.GetFloat(name); + break; + case UnityEngine.Rendering.ShaderPropertyType.Texture: + currentValue = mat.GetTexture(name)?.name ?? "null"; + break; + } + } + } + catch (Exception ex) + { + currentValue = $""; + } + + properties.Add(new + { + name = name, + type = type.ToString(), + description = description, + value = currentValue + }); + } +#else + int propertyCount = ShaderUtil.GetPropertyCount(shader); + for (int i = 0; i < propertyCount; i++) + { + string name = ShaderUtil.GetPropertyName(shader, i); + ShaderUtil.ShaderPropertyType type = ShaderUtil.GetPropertyType(shader, i); + string description = ShaderUtil.GetPropertyDescription(shader, i); + + object currentValue = null; + try + { + if (mat.HasProperty(name)) + { + switch (type) + { + case ShaderUtil.ShaderPropertyType.Color: + var c = mat.GetColor(name); + currentValue = new { r = c.r, g = c.g, b = c.b, a = c.a }; + break; + case ShaderUtil.ShaderPropertyType.Vector: + var v = mat.GetVector(name); + currentValue = new { x = v.x, y = v.y, z = v.z, w = v.w }; + break; + case ShaderUtil.ShaderPropertyType.Float: currentValue = mat.GetFloat(name); break; + case ShaderUtil.ShaderPropertyType.Range: currentValue = mat.GetFloat(name); break; + case ShaderUtil.ShaderPropertyType.TexEnv: currentValue = mat.GetTexture(name)?.name ?? "null"; break; + } + } + } + catch (Exception ex) + { + currentValue = $""; + } + + properties.Add(new + { + name = name, + type = type.ToString(), + description = description, + value = currentValue + }); + } +#endif + + return new SuccessResponse($"Retrieved material info for {mat.name}", new + { + material = mat.name, + shader = shader.name, + properties = properties + }); + } + + private static object CreateMaterial(JObject @params) + { + string materialPath = NormalizePath(@params["materialPath"]?.ToString()); + string shaderName = @params["shader"]?.ToString() ?? "Standard"; + JToken colorToken = @params["color"]; + string colorProperty = @params["property"]?.ToString(); + + JObject properties = null; + JToken propsToken = @params["properties"]; + if (propsToken != null) + { + if (propsToken.Type == JTokenType.String) + { + try { properties = JObject.Parse(propsToken.ToString()); } + catch (Exception ex) { return new ErrorResponse($"Invalid JSON in properties: {ex.Message}"); } + } + else if (propsToken is JObject obj) + { + properties = obj; + } + } + + if (string.IsNullOrEmpty(materialPath)) + { + return new ErrorResponse("materialPath is required"); + } + + // Safety check: SanitizeAssetPath should guarantee Assets/ prefix + // This check catches edge cases where normalization might fail + if (!materialPath.StartsWith("Assets/")) + { + return new ErrorResponse($"Invalid path '{materialPath}'. Path must be within Assets/ folder."); + } + + Shader shader = RenderPipelineUtility.ResolveShader(shaderName); + if (shader == null) + { + return new ErrorResponse($"Could not find shader: {shaderName}"); + } + + // Check for existing asset to avoid silent overwrite + if (AssetDatabase.LoadAssetAtPath(materialPath) != null) + { + return new ErrorResponse($"Material already exists at {materialPath}"); + } + + Material material = null; + var shouldDestroyMaterial = true; + try + { + material = new Material(shader); + + // Apply color param during creation (keeps Python tool signature and C# implementation consistent). + // If "properties" already contains a color property, let properties win. + bool shouldApplyColor = false; + if (colorToken != null) + { + if (properties == null) + { + shouldApplyColor = true; + } + else if (!string.IsNullOrEmpty(colorProperty)) + { + // If colorProperty is specified, only check that specific property. + shouldApplyColor = !properties.ContainsKey(colorProperty); + } + else + { + // If colorProperty is not specified, check fallback properties. + shouldApplyColor = !properties.ContainsKey("_BaseColor") && !properties.ContainsKey("_Color"); + } + } + + if (shouldApplyColor) + { + Color color; + try + { + color = MaterialOps.ParseColor(colorToken, UnityJsonSerializer.Instance); + } + catch (Exception e) + { + return new ErrorResponse($"Invalid color format: {e.Message}"); + } + + if (!string.IsNullOrEmpty(colorProperty)) + { + if (material.HasProperty(colorProperty)) + { + material.SetColor(colorProperty, color); + } + else + { + return new ErrorResponse($"Specified color property '{colorProperty}' does not exist on this material."); + } + } + else if (material.HasProperty("_BaseColor")) + { + material.SetColor("_BaseColor", color); + } + else if (material.HasProperty("_Color")) + { + material.SetColor("_Color", color); + } + else + { + return new ErrorResponse("Could not find suitable color property (_BaseColor or _Color) on this material's shader."); + } + } + + AssetDatabase.CreateAsset(material, materialPath); + shouldDestroyMaterial = false; // material is now owned by the AssetDatabase + + if (properties != null) + { + MaterialOps.ApplyProperties(material, properties, UnityJsonSerializer.Instance); + } + + EditorUtility.SetDirty(material); + AssetDatabase.SaveAssets(); + + return new SuccessResponse($"Created material at {materialPath} with shader {shaderName}"); + } + finally + { + if (shouldDestroyMaterial && material != null) + { + UnityEngine.Object.DestroyImmediate(material); + } + } + } + } +} diff --git a/Packages/MCPForUnity/Editor/Tools/ManageMaterial.cs.meta b/Packages/MCPForUnity/Editor/Tools/ManageMaterial.cs.meta new file mode 100644 index 00000000..a4ba8ed2 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/ManageMaterial.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e55741e2b00794a049a0ed5e63278a56 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Tools/ManageScene.cs b/Packages/MCPForUnity/Editor/Tools/ManageScene.cs new file mode 100644 index 00000000..2ceecd9a --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/ManageScene.cs @@ -0,0 +1,838 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using MCPForUnity.Editor.Helpers; // For Response class +using MCPForUnity.Runtime.Helpers; // For ScreenshotUtility +using Newtonsoft.Json.Linq; +using UnityEditor; +using UnityEditor.SceneManagement; +using UnityEngine; +using UnityEngine.SceneManagement; + +namespace MCPForUnity.Editor.Tools +{ + /// + /// Handles scene management operations like loading, saving, creating, and querying hierarchy. + /// + [McpForUnityTool("manage_scene", AutoRegister = false)] + public static class ManageScene + { + private sealed class SceneCommand + { + public string action { get; set; } = string.Empty; + public string name { get; set; } = string.Empty; + public string path { get; set; } = string.Empty; + public int? buildIndex { get; set; } + public string fileName { get; set; } = string.Empty; + public int? superSize { get; set; } + + // get_hierarchy paging + safety (summary-first) + public JToken parent { get; set; } + public int? pageSize { get; set; } + public int? cursor { get; set; } + public int? maxNodes { get; set; } + public int? maxDepth { get; set; } + public int? maxChildrenPerNode { get; set; } + public bool? includeTransform { get; set; } + } + + private static SceneCommand ToSceneCommand(JObject p) + { + if (p == null) return new SceneCommand(); + return new SceneCommand + { + action = (p["action"]?.ToString() ?? string.Empty).Trim().ToLowerInvariant(), + name = p["name"]?.ToString() ?? string.Empty, + path = p["path"]?.ToString() ?? string.Empty, + buildIndex = ParamCoercion.CoerceIntNullable(p["buildIndex"] ?? p["build_index"]), + fileName = (p["fileName"] ?? p["filename"])?.ToString() ?? string.Empty, + superSize = ParamCoercion.CoerceIntNullable(p["superSize"] ?? p["super_size"] ?? p["supersize"]), + + // get_hierarchy paging + safety + parent = p["parent"], + pageSize = ParamCoercion.CoerceIntNullable(p["pageSize"] ?? p["page_size"]), + cursor = ParamCoercion.CoerceIntNullable(p["cursor"]), + maxNodes = ParamCoercion.CoerceIntNullable(p["maxNodes"] ?? p["max_nodes"]), + maxDepth = ParamCoercion.CoerceIntNullable(p["maxDepth"] ?? p["max_depth"]), + maxChildrenPerNode = ParamCoercion.CoerceIntNullable(p["maxChildrenPerNode"] ?? p["max_children_per_node"]), + includeTransform = ParamCoercion.CoerceBoolNullable(p["includeTransform"] ?? p["include_transform"]), + }; + } + + /// + /// Main handler for scene management actions. + /// + public static object HandleCommand(JObject @params) + { + try { McpLog.Info("[ManageScene] HandleCommand: start", always: false); } catch { } + var cmd = ToSceneCommand(@params); + string action = cmd.action; + string name = string.IsNullOrEmpty(cmd.name) ? null : cmd.name; + string path = string.IsNullOrEmpty(cmd.path) ? null : cmd.path; // Relative to Assets/ + int? buildIndex = cmd.buildIndex; + // bool loadAdditive = @params["loadAdditive"]?.ToObject() ?? false; // Example for future extension + + // Ensure path is relative to Assets/, removing any leading "Assets/" + string relativeDir = path ?? string.Empty; + if (!string.IsNullOrEmpty(relativeDir)) + { + relativeDir = AssetPathUtility.NormalizeSeparators(relativeDir).Trim('/'); + if (relativeDir.StartsWith("Assets/", StringComparison.OrdinalIgnoreCase)) + { + relativeDir = relativeDir.Substring("Assets/".Length).TrimStart('/'); + } + } + + // Apply default *after* sanitizing, using the original path variable for the check + if (string.IsNullOrEmpty(path) && action == "create") // Check original path for emptiness + { + relativeDir = "Scenes"; // Default relative directory + } + + if (string.IsNullOrEmpty(action)) + { + return new ErrorResponse("Action parameter is required."); + } + + string sceneFileName = string.IsNullOrEmpty(name) ? null : $"{name}.unity"; + // Construct full system path correctly: ProjectRoot/Assets/relativeDir/sceneFileName + string fullPathDir = Path.Combine(Application.dataPath, relativeDir); // Combine with Assets path (Application.dataPath ends in Assets) + string fullPath = string.IsNullOrEmpty(sceneFileName) + ? null + : Path.Combine(fullPathDir, sceneFileName); + // Ensure relativePath always starts with "Assets/" and uses forward slashes + string relativePath = string.IsNullOrEmpty(sceneFileName) + ? null + : AssetPathUtility.NormalizeSeparators(Path.Combine("Assets", relativeDir, sceneFileName)); + + // Ensure directory exists for 'create' + if (action == "create" && !string.IsNullOrEmpty(fullPathDir)) + { + try + { + Directory.CreateDirectory(fullPathDir); + } + catch (Exception e) + { + return new ErrorResponse( + $"Could not create directory '{fullPathDir}': {e.Message}" + ); + } + } + + // Route action + try { McpLog.Info($"[ManageScene] Route action='{action}' name='{name}' path='{path}' buildIndex={(buildIndex.HasValue ? buildIndex.Value.ToString() : "null")}", always: false); } catch { } + switch (action) + { + case "create": + if (string.IsNullOrEmpty(name) || string.IsNullOrEmpty(relativePath)) + return new ErrorResponse( + "'name' and 'path' parameters are required for 'create' action." + ); + return CreateScene(fullPath, relativePath); + case "load": + // Loading can be done by path/name or build index + if (!string.IsNullOrEmpty(relativePath)) + return LoadScene(relativePath); + else if (buildIndex.HasValue) + return LoadScene(buildIndex.Value); + else + return new ErrorResponse( + "Either 'name'/'path' or 'buildIndex' must be provided for 'load' action." + ); + case "save": + // Save current scene, optionally to a new path + return SaveScene(fullPath, relativePath); + case "get_hierarchy": + try { McpLog.Info("[ManageScene] get_hierarchy: entering", always: false); } catch { } + var gh = GetSceneHierarchyPaged(cmd); + try { McpLog.Info("[ManageScene] get_hierarchy: exiting", always: false); } catch { } + return gh; + case "get_active": + try { McpLog.Info("[ManageScene] get_active: entering", always: false); } catch { } + var ga = GetActiveSceneInfo(); + try { McpLog.Info("[ManageScene] get_active: exiting", always: false); } catch { } + return ga; + case "get_build_settings": + return GetBuildSettingsScenes(); + case "screenshot": + return CaptureScreenshot(cmd.fileName, cmd.superSize); + // Add cases for modifying build settings, additive loading, unloading etc. + default: + return new ErrorResponse( + $"Unknown action: '{action}'. Valid actions: create, load, save, get_hierarchy, get_active, get_build_settings, screenshot." + ); + } + } + + /// + /// Captures a screenshot to Assets/Screenshots and returns a response payload. + /// Public so the tools UI can reuse the same logic without duplicating parameters. + /// Available in both Edit Mode and Play Mode. + /// + public static object ExecuteScreenshot(string fileName = null, int? superSize = null) + { + return CaptureScreenshot(fileName, superSize); + } + + private static object CreateScene(string fullPath, string relativePath) + { + if (File.Exists(fullPath)) + { + return new ErrorResponse($"Scene already exists at '{relativePath}'."); + } + + try + { + // Create a new empty scene + Scene newScene = EditorSceneManager.NewScene( + NewSceneSetup.EmptyScene, + NewSceneMode.Single + ); + // Save it to the specified path + bool saved = EditorSceneManager.SaveScene(newScene, relativePath); + + if (saved) + { + AssetDatabase.Refresh(ImportAssetOptions.ForceSynchronousImport); // Ensure Unity sees the new scene file + return new SuccessResponse( + $"Scene '{Path.GetFileName(relativePath)}' created successfully at '{relativePath}'.", + new { path = relativePath } + ); + } + else + { + // If SaveScene fails, it might leave an untitled scene open. + // Optionally try to close it, but be cautious. + return new ErrorResponse($"Failed to save new scene to '{relativePath}'."); + } + } + catch (Exception e) + { + return new ErrorResponse($"Error creating scene '{relativePath}': {e.Message}"); + } + } + + private static object LoadScene(string relativePath) + { + if ( + !File.Exists( + Path.Combine( + Application.dataPath.Substring( + 0, + Application.dataPath.Length - "Assets".Length + ), + relativePath + ) + ) + ) + { + return new ErrorResponse($"Scene file not found at '{relativePath}'."); + } + + // Check for unsaved changes in the current scene + if (EditorSceneManager.GetActiveScene().isDirty) + { + // Optionally prompt the user or save automatically before loading + return new ErrorResponse( + "Current scene has unsaved changes. Please save or discard changes before loading a new scene." + ); + // Example: bool saveOK = EditorSceneManager.SaveCurrentModifiedScenesIfUserWantsTo(); + // if (!saveOK) return new ErrorResponse("Load cancelled by user."); + } + + try + { + EditorSceneManager.OpenScene(relativePath, OpenSceneMode.Single); + return new SuccessResponse( + $"Scene '{relativePath}' loaded successfully.", + new + { + path = relativePath, + name = Path.GetFileNameWithoutExtension(relativePath), + } + ); + } + catch (Exception e) + { + return new ErrorResponse($"Error loading scene '{relativePath}': {e.Message}"); + } + } + + private static object LoadScene(int buildIndex) + { + if (buildIndex < 0 || buildIndex >= SceneManager.sceneCountInBuildSettings) + { + return new ErrorResponse( + $"Invalid build index: {buildIndex}. Must be between 0 and {SceneManager.sceneCountInBuildSettings - 1}." + ); + } + + // Check for unsaved changes + if (EditorSceneManager.GetActiveScene().isDirty) + { + return new ErrorResponse( + "Current scene has unsaved changes. Please save or discard changes before loading a new scene." + ); + } + + try + { + string scenePath = SceneUtility.GetScenePathByBuildIndex(buildIndex); + EditorSceneManager.OpenScene(scenePath, OpenSceneMode.Single); + return new SuccessResponse( + $"Scene at build index {buildIndex} ('{scenePath}') loaded successfully.", + new + { + path = scenePath, + name = Path.GetFileNameWithoutExtension(scenePath), + buildIndex = buildIndex, + } + ); + } + catch (Exception e) + { + return new ErrorResponse( + $"Error loading scene with build index {buildIndex}: {e.Message}" + ); + } + } + + private static object SaveScene(string fullPath, string relativePath) + { + try + { + Scene currentScene = EditorSceneManager.GetActiveScene(); + if (!currentScene.IsValid()) + { + return new ErrorResponse("No valid scene is currently active to save."); + } + + bool saved; + string finalPath = currentScene.path; // Path where it was last saved or will be saved + + if (!string.IsNullOrEmpty(relativePath) && currentScene.path != relativePath) + { + // Save As... + // Ensure directory exists + string dir = Path.GetDirectoryName(fullPath); + if (!Directory.Exists(dir)) + Directory.CreateDirectory(dir); + + saved = EditorSceneManager.SaveScene(currentScene, relativePath); + finalPath = relativePath; + } + else + { + // Save (overwrite existing or save untitled) + if (string.IsNullOrEmpty(currentScene.path)) + { + // Scene is untitled, needs a path + return new ErrorResponse( + "Cannot save an untitled scene without providing a 'name' and 'path'. Use Save As functionality." + ); + } + saved = EditorSceneManager.SaveScene(currentScene); + } + + if (saved) + { + AssetDatabase.Refresh(ImportAssetOptions.ForceSynchronousImport); + return new SuccessResponse( + $"Scene '{currentScene.name}' saved successfully to '{finalPath}'.", + new { path = finalPath, name = currentScene.name } + ); + } + else + { + return new ErrorResponse($"Failed to save scene '{currentScene.name}'."); + } + } + catch (Exception e) + { + return new ErrorResponse($"Error saving scene: {e.Message}"); + } + } + + private static object CaptureScreenshot(string fileName, int? superSize) + { + try + { + int resolvedSuperSize = (superSize.HasValue && superSize.Value > 0) ? superSize.Value : 1; + + // Batch mode warning + if (Application.isBatchMode) + { + McpLog.Warn("[ManageScene] Screenshot capture in batch mode uses camera-based fallback. Results may vary."); + } + + // Check Screen Capture module availability and warn if not available + bool screenCaptureAvailable = ScreenshotUtility.IsScreenCaptureModuleAvailable; + bool hasCameraFallback = Camera.main != null || UnityEngine.Object.FindObjectsOfType().Length > 0; + +#if UNITY_2022_1_OR_NEWER + if (!screenCaptureAvailable && !hasCameraFallback) + { + return new ErrorResponse( + "Cannot capture screenshot. The Screen Capture module is not enabled and no Camera was found in the scene. " + + "Please either: (1) Enable the Screen Capture module: Window > Package Manager > Built-in > Screen Capture > Enable, " + + "or (2) Add a Camera to your scene for camera-based fallback capture." + ); + } + + if (!screenCaptureAvailable) + { + McpLog.Warn("[ManageScene] Screen Capture module not enabled. Using camera-based fallback. " + + "For best results, enable it: Window > Package Manager > Built-in > Screen Capture > Enable."); + } +#else + if (!hasCameraFallback) + { + return new ErrorResponse( + "No camera found in the scene. Screenshot capture on Unity versions before 2022.1 requires a Camera in the scene. " + + "Please add a Camera to your scene or upgrade to Unity 2022.1+ for ScreenCapture API support." + ); + } +#endif + + // Best-effort: ensure Game View exists and repaints before capture. + if (!Application.isBatchMode) + { + EnsureGameView(); + } + + ScreenshotCaptureResult result = ScreenshotUtility.CaptureToAssetsFolder(fileName, resolvedSuperSize, ensureUniqueFileName: true); + + // ScreenCapture.CaptureScreenshot is async. Import after the file actually hits disk. + if (result.IsAsync) + { + ScheduleAssetImportWhenFileExists(result.AssetsRelativePath, result.FullPath, timeoutSeconds: 30.0); + } + else + { + AssetDatabase.ImportAsset(result.AssetsRelativePath, ImportAssetOptions.ForceSynchronousImport); + } + + string verb = result.IsAsync ? "Screenshot requested" : "Screenshot captured"; + string message = $"{verb} to '{result.AssetsRelativePath}' (full: {result.FullPath})."; + + return new SuccessResponse( + message, + new + { + path = result.AssetsRelativePath, + fullPath = result.FullPath, + superSize = result.SuperSize, + isAsync = result.IsAsync, + } + ); + } + catch (Exception e) + { + return new ErrorResponse($"Error capturing screenshot: {e.Message}"); + } + } + + private static void EnsureGameView() + { + try + { + // Ensure a Game View exists and has a chance to repaint before capture. + try + { + if (!EditorApplication.ExecuteMenuItem("Window/General/Game")) + { + // Some Unity versions expose hotkey suffixes in menu paths. + EditorApplication.ExecuteMenuItem("Window/General/Game %2"); + } + } + catch (Exception e) + { + try { McpLog.Debug($"[ManageScene] screenshot: failed to open Game View via menu item: {e.Message}"); } catch { } + } + + try + { + var gameViewType = Type.GetType("UnityEditor.GameView,UnityEditor"); + if (gameViewType != null) + { + var window = EditorWindow.GetWindow(gameViewType); + window?.Repaint(); + } + } + catch (Exception e) + { + try { McpLog.Debug($"[ManageScene] screenshot: failed to repaint Game View: {e.Message}"); } catch { } + } + + try { SceneView.RepaintAll(); } + catch (Exception e) + { + try { McpLog.Debug($"[ManageScene] screenshot: failed to repaint Scene View: {e.Message}"); } catch { } + } + + try { EditorApplication.QueuePlayerLoopUpdate(); } + catch (Exception e) + { + try { McpLog.Debug($"[ManageScene] screenshot: failed to queue player loop update: {e.Message}"); } catch { } + } + } + catch (Exception e) + { + try { McpLog.Debug($"[ManageScene] screenshot: EnsureGameView failed: {e.Message}"); } catch { } + } + } + + private static void ScheduleAssetImportWhenFileExists(string assetsRelativePath, string fullPath, double timeoutSeconds) + { + if (string.IsNullOrWhiteSpace(assetsRelativePath) || string.IsNullOrWhiteSpace(fullPath)) + { + McpLog.Warn("[ManageScene] ScheduleAssetImportWhenFileExists: invalid paths provided, skipping import scheduling."); + return; + } + + double start = EditorApplication.timeSinceStartup; + int failureCount = 0; + bool hasSeenFile = false; + const int maxLoggedFailures = 3; + EditorApplication.CallbackFunction tick = null; + tick = () => + { + try + { + if (File.Exists(fullPath)) + { + hasSeenFile = true; + + AssetDatabase.ImportAsset(assetsRelativePath, ImportAssetOptions.ForceSynchronousImport); + McpLog.Debug($"[ManageScene] Imported asset at '{assetsRelativePath}'."); + EditorApplication.update -= tick; + return; + } + } + catch (Exception e) + { + failureCount++; + + if (failureCount <= maxLoggedFailures) + { + McpLog.Warn($"[ManageScene] Exception while importing asset '{assetsRelativePath}' from '{fullPath}' (attempt {failureCount}): {e}"); + } + } + + if (EditorApplication.timeSinceStartup - start > timeoutSeconds) + { + if (!hasSeenFile) + { + McpLog.Warn($"[ManageScene] Timed out waiting for file '{fullPath}' (asset: '{assetsRelativePath}') after {timeoutSeconds:F1} seconds. The asset was not imported."); + } + else + { + McpLog.Warn($"[ManageScene] Timed out importing asset '{assetsRelativePath}' from '{fullPath}' after {timeoutSeconds:F1} seconds. The file existed but the asset was not imported."); + } + + EditorApplication.update -= tick; + } + }; + + EditorApplication.update += tick; + } + + private static object GetActiveSceneInfo() + { + try + { + try { McpLog.Info("[ManageScene] get_active: querying EditorSceneManager.GetActiveScene", always: false); } catch { } + Scene activeScene = EditorSceneManager.GetActiveScene(); + try { McpLog.Info($"[ManageScene] get_active: got scene valid={activeScene.IsValid()} loaded={activeScene.isLoaded} name='{activeScene.name}'", always: false); } catch { } + if (!activeScene.IsValid()) + { + return new ErrorResponse("No active scene found."); + } + + var sceneInfo = new + { + name = activeScene.name, + path = activeScene.path, + buildIndex = activeScene.buildIndex, // -1 if not in build settings + isDirty = activeScene.isDirty, + isLoaded = activeScene.isLoaded, + rootCount = activeScene.rootCount, + }; + + return new SuccessResponse("Retrieved active scene information.", sceneInfo); + } + catch (Exception e) + { + try { McpLog.Error($"[ManageScene] get_active: exception {e.Message}"); } catch { } + return new ErrorResponse($"Error getting active scene info: {e.Message}"); + } + } + + private static object GetBuildSettingsScenes() + { + try + { + var scenes = new List(); + for (int i = 0; i < EditorBuildSettings.scenes.Length; i++) + { + var scene = EditorBuildSettings.scenes[i]; + scenes.Add( + new + { + path = scene.path, + guid = scene.guid.ToString(), + enabled = scene.enabled, + buildIndex = i, // Actual build index considering only enabled scenes might differ + } + ); + } + return new SuccessResponse("Retrieved scenes from Build Settings.", scenes); + } + catch (Exception e) + { + return new ErrorResponse($"Error getting scenes from Build Settings: {e.Message}"); + } + } + + private static object GetSceneHierarchyPaged(SceneCommand cmd) + { + try + { + // Check Prefab Stage first + var prefabStage = PrefabStageUtility.GetCurrentPrefabStage(); + Scene activeScene; + + if (prefabStage != null) + { + activeScene = prefabStage.scene; + try { McpLog.Info("[ManageScene] get_hierarchy: using Prefab Stage scene", always: false); } catch { } + } + else + { + try { McpLog.Info("[ManageScene] get_hierarchy: querying EditorSceneManager.GetActiveScene", always: false); } catch { } + activeScene = EditorSceneManager.GetActiveScene(); + } + + try { McpLog.Info($"[ManageScene] get_hierarchy: got scene valid={activeScene.IsValid()} loaded={activeScene.isLoaded} name='{activeScene.name}'", always: false); } catch { } + if (!activeScene.IsValid() || !activeScene.isLoaded) + { + return new ErrorResponse( + "No valid and loaded scene is active to get hierarchy from." + ); + } + + // Defaults tuned for safety; callers can override but we clamp to sane maxes. + // NOTE: pageSize is "items per page", not "number of pages". + // Keep this conservative to reduce peak response sizes when callers omit page_size. + int resolvedPageSize = Mathf.Clamp(cmd.pageSize ?? 50, 1, 500); + int resolvedCursor = Mathf.Max(0, cmd.cursor ?? 0); + int resolvedMaxNodes = Mathf.Clamp(cmd.maxNodes ?? 1000, 1, 5000); + int effectiveTake = Mathf.Min(resolvedPageSize, resolvedMaxNodes); + int resolvedMaxChildrenPerNode = Mathf.Clamp(cmd.maxChildrenPerNode ?? 200, 0, 2000); + bool includeTransform = cmd.includeTransform ?? false; + + // NOTE: maxDepth is accepted for forward-compatibility, but current paging mode + // returns a single level (roots or direct children). This keeps payloads bounded. + + List nodes; + string scope; + + GameObject parentGo = ResolveGameObject(cmd.parent, activeScene); + if (cmd.parent == null || cmd.parent.Type == JTokenType.Null) + { + try { McpLog.Info("[ManageScene] get_hierarchy: listing root objects (paged summary)", always: false); } catch { } + nodes = activeScene.GetRootGameObjects().Where(go => go != null).ToList(); + scope = "roots"; + } + else + { + if (parentGo == null) + { + return new ErrorResponse($"Parent GameObject ('{cmd.parent}') not found."); + } + try { McpLog.Info($"[ManageScene] get_hierarchy: listing children of '{parentGo.name}' (paged summary)", always: false); } catch { } + nodes = new List(parentGo.transform.childCount); + foreach (Transform child in parentGo.transform) + { + if (child != null) nodes.Add(child.gameObject); + } + scope = "children"; + } + + int total = nodes.Count; + if (resolvedCursor > total) resolvedCursor = total; + int end = Mathf.Min(total, resolvedCursor + effectiveTake); + + var items = new List(Mathf.Max(0, end - resolvedCursor)); + for (int i = resolvedCursor; i < end; i++) + { + var go = nodes[i]; + if (go == null) continue; + items.Add(BuildGameObjectSummary(go, includeTransform, resolvedMaxChildrenPerNode)); + } + + bool truncated = end < total; + string nextCursor = truncated ? end.ToString() : null; + + var payload = new + { + scope = scope, + cursor = resolvedCursor, + pageSize = effectiveTake, + next_cursor = nextCursor, + truncated = truncated, + total = total, + items = items, + }; + + var resp = new SuccessResponse($"Retrieved hierarchy page for scene '{activeScene.name}'.", payload); + try { McpLog.Info("[ManageScene] get_hierarchy: success", always: false); } catch { } + return resp; + } + catch (Exception e) + { + try { McpLog.Error($"[ManageScene] get_hierarchy: exception {e.Message}"); } catch { } + return new ErrorResponse($"Error getting scene hierarchy: {e.Message}"); + } + } + + private static GameObject ResolveGameObject(JToken targetToken, Scene activeScene) + { + if (targetToken == null || targetToken.Type == JTokenType.Null) return null; + + try + { + if (targetToken.Type == JTokenType.Integer || int.TryParse(targetToken.ToString(), out _)) + { + if (int.TryParse(targetToken.ToString(), out int id)) + { + var obj = EditorUtility.InstanceIDToObject(id); + if (obj is GameObject go) return go; + if (obj is Component c) return c.gameObject; + } + } + } + catch { } + + string s = targetToken.ToString(); + if (string.IsNullOrEmpty(s)) return null; + + // Path-based find (e.g., "Root/Child/GrandChild") + if (s.Contains("/")) + { + try + { + var ids = GameObjectLookup.SearchGameObjects("by_path", s, includeInactive: true, maxResults: 1); + if (ids.Count > 0) + { + var byPath = GameObjectLookup.FindById(ids[0]); + if (byPath != null) return byPath; + } + } + catch { } + } + + // Name-based find (first match, includes inactive) + try + { + var all = activeScene.GetRootGameObjects(); + foreach (var root in all) + { + if (root == null) continue; + if (root.name == s) return root; + var trs = root.GetComponentsInChildren(includeInactive: true); + foreach (var t in trs) + { + if (t != null && t.gameObject != null && t.gameObject.name == s) return t.gameObject; + } + } + } + catch { } + + return null; + } + + private static object BuildGameObjectSummary(GameObject go, bool includeTransform, int maxChildrenPerNode) + { + if (go == null) return null; + + int childCount = 0; + try { childCount = go.transform != null ? go.transform.childCount : 0; } catch { } + bool childrenTruncated = childCount > 0; // We do not inline children in summary mode. + + // Get component type names (lightweight - no full serialization) + var componentTypes = new List(); + try + { + var components = go.GetComponents(); + if (components != null) + { + foreach (var c in components) + { + if (c != null) + { + componentTypes.Add(c.GetType().Name); + } + } + } + } + catch (Exception ex) + { + McpLog.Debug($"[ManageScene] Failed to enumerate components for '{go.name}': {ex.Message}"); + } + + var d = new Dictionary + { + { "name", go.name }, + { "instanceID", go.GetInstanceID() }, + { "activeSelf", go.activeSelf }, + { "activeInHierarchy", go.activeInHierarchy }, + { "tag", go.tag }, + { "layer", go.layer }, + { "isStatic", go.isStatic }, + { "path", GetGameObjectPath(go) }, + { "childCount", childCount }, + { "childrenTruncated", childrenTruncated }, + { "childrenCursor", childCount > 0 ? "0" : null }, + { "childrenPageSizeDefault", maxChildrenPerNode }, + { "componentTypes", componentTypes }, + }; + + if (includeTransform && go.transform != null) + { + var t = go.transform; + d["transform"] = new + { + position = new[] { t.localPosition.x, t.localPosition.y, t.localPosition.z }, + rotation = new[] { t.localRotation.eulerAngles.x, t.localRotation.eulerAngles.y, t.localRotation.eulerAngles.z }, + scale = new[] { t.localScale.x, t.localScale.y, t.localScale.z }, + }; + } + + return d; + } + + private static string GetGameObjectPath(GameObject go) + { + if (go == null) return string.Empty; + try + { + var names = new Stack(); + Transform t = go.transform; + while (t != null) + { + names.Push(t.name); + t = t.parent; + } + return string.Join("/", names); + } + catch + { + return go.name; + } + } + + } +} diff --git a/Packages/MCPForUnity/Editor/Tools/ManageScene.cs.meta b/Packages/MCPForUnity/Editor/Tools/ManageScene.cs.meta new file mode 100644 index 00000000..532618aa --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/ManageScene.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b6ddda47f4077e74fbb5092388cefcc2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Tools/ManageScript.cs b/Packages/MCPForUnity/Editor/Tools/ManageScript.cs new file mode 100644 index 00000000..3e98172d --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/ManageScript.cs @@ -0,0 +1,2672 @@ +using System; +using System.IO; +using System.Linq; +using System.Collections.Generic; +using System.Text.RegularExpressions; +using Newtonsoft.Json.Linq; +using UnityEditor; +using UnityEngine; +using MCPForUnity.Editor.Constants; +using MCPForUnity.Editor.Helpers; +using System.Threading; +using System.Security.Cryptography; + +#if USE_ROSLYN +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CSharp; +using Microsoft.CodeAnalysis.Formatting; +#endif + +#if UNITY_EDITOR +using UnityEditor.Compilation; +#endif + + +namespace MCPForUnity.Editor.Tools +{ + /// + /// Handles CRUD operations for C# scripts within the Unity project. + /// + /// + /// ROSLYN INSTALLATION GUIDE: + /// To enable advanced syntax validation with Roslyn compiler services: + /// + /// 1. Install Microsoft.CodeAnalysis.CSharp NuGet package: + /// - Open Package Manager in Unity + /// - Follow the instruction on https://github.com/GlitchEnzo/NuGetForUnity + /// + /// 2. Open NuGet Package Manager and Install Microsoft.CodeAnalysis.CSharp: + /// + /// 3. Alternative: Manual DLL installation: + /// - Download Microsoft.CodeAnalysis.CSharp.dll and dependencies + /// - Place in Assets/Plugins/ folder + /// - Ensure .NET compatibility settings are correct + /// + /// 4. Define USE_ROSLYN symbol: + /// - Go to Player Settings > Scripting Define Symbols + /// - Add "USE_ROSLYN" to enable Roslyn-based validation + /// + /// 5. Restart Unity after installation + /// + /// Note: Without Roslyn, the system falls back to basic structural validation. + /// Roslyn provides full C# compiler diagnostics with line numbers and detailed error messages. + /// + [McpForUnityTool("manage_script", AutoRegister = false)] + public static class ManageScript + { + /// + /// Resolves a directory under Assets/, preventing traversal and escaping. + /// Returns fullPathDir on disk and canonical 'Assets/...' relative path. + /// + private static bool TryResolveUnderAssets(string relDir, out string fullPathDir, out string relPathSafe) + { + string assets = AssetPathUtility.NormalizeSeparators(Application.dataPath); + + // Normalize caller path: allow both "Scripts/..." and "Assets/Scripts/..." + string rel = AssetPathUtility.NormalizeSeparators(relDir ?? "Scripts").Trim(); + if (string.IsNullOrEmpty(rel)) rel = "Scripts"; + + // Handle both "Assets" and "Assets/" prefixes + if (rel.Equals("Assets", StringComparison.OrdinalIgnoreCase)) + { + rel = string.Empty; + } + else if (rel.StartsWith("Assets/", StringComparison.OrdinalIgnoreCase)) + { + rel = rel.Substring(7); + } + + rel = rel.TrimStart('/'); + + string targetDir = AssetPathUtility.NormalizeSeparators(Path.Combine(assets, rel)); + string full = AssetPathUtility.NormalizeSeparators(Path.GetFullPath(targetDir)); + + bool underAssets = full.StartsWith(assets + "/", StringComparison.OrdinalIgnoreCase) + || string.Equals(full, assets, StringComparison.OrdinalIgnoreCase); + if (!underAssets) + { + fullPathDir = null; + relPathSafe = null; + return false; + } + + // Best-effort symlink guard: if the directory OR ANY ANCESTOR (up to Assets/) is a reparse point/symlink, reject + try + { + var di = new DirectoryInfo(full); + while (di != null) + { + if (di.Exists && (di.Attributes & FileAttributes.ReparsePoint) != 0) + { + fullPathDir = null; + relPathSafe = null; + return false; + } + var atAssets = string.Equals( + di.FullName.Replace('\\', '/'), + assets, + StringComparison.OrdinalIgnoreCase + ); + if (atAssets) break; + di = di.Parent; + } + } + catch { /* best effort; proceed */ } + + fullPathDir = full; + string tail = full.Length > assets.Length ? full.Substring(assets.Length).TrimStart('/') : string.Empty; + relPathSafe = ("Assets/" + tail).TrimEnd('/'); + return true; + } + /// + /// Main handler for script management actions. + /// + public static object HandleCommand(JObject @params) + { + // Handle null parameters + if (@params == null) + { + return new ErrorResponse("invalid_params", "Parameters cannot be null."); + } + + var p = new ToolParams(@params); + + // Extract and validate required parameters + var actionResult = p.GetRequired("action"); + if (!actionResult.IsSuccess) + { + return new ErrorResponse(actionResult.ErrorMessage); + } + string action = actionResult.Value.ToLowerInvariant(); + + var nameResult = p.GetRequired("name"); + if (!nameResult.IsSuccess) + { + return new ErrorResponse(nameResult.ErrorMessage); + } + string name = nameResult.Value; + + // Optional parameters + string path = p.Get("path"); // Relative to Assets/ + string contents = null; + + // Check if we have base64 encoded contents + bool contentsEncoded = p.GetBool("contentsEncoded", false); + if (contentsEncoded && p.Has("encodedContents")) + { + try + { + contents = DecodeBase64(p.Get("encodedContents")); + } + catch (Exception e) + { + return new ErrorResponse($"Failed to decode script contents: {e.Message}"); + } + } + else + { + contents = p.Get("contents"); + } + + string scriptType = p.Get("scriptType"); // For templates/validation + string namespaceName = p.Get("namespace"); // For organizing code + // Basic name validation (alphanumeric, underscores, cannot start with number) + if (!Regex.IsMatch(name, @"^[a-zA-Z_][a-zA-Z0-9_]*$", RegexOptions.CultureInvariant, TimeSpan.FromSeconds(2))) + { + return new ErrorResponse( + $"Invalid script name: '{name}'. Use only letters, numbers, underscores, and don't start with a number." + ); + } + + // Resolve and harden target directory under Assets/ + if (!TryResolveUnderAssets(path, out string fullPathDir, out string relPathSafeDir)) + { + return new ErrorResponse($"Invalid path. Target directory must be within 'Assets/'. Provided: '{(path ?? "(null)")}'"); + } + + // Construct file paths + string scriptFileName = $"{name}.cs"; + string fullPath = Path.Combine(fullPathDir, scriptFileName); + string relativePath = AssetPathUtility.NormalizeSeparators(Path.Combine(relPathSafeDir, scriptFileName)); + + // Ensure the target directory exists for create/update + if (action == "create" || action == "update") + { + try + { + Directory.CreateDirectory(fullPathDir); + } + catch (Exception e) + { + return new ErrorResponse( + $"Could not create directory '{fullPathDir}': {e.Message}" + ); + } + } + + // Route to specific action handlers + switch (action) + { + case "create": + return CreateScript( + fullPath, + relativePath, + name, + contents, + scriptType, + namespaceName + ); + case "read": + McpLog.Warn("manage_script.read is deprecated; prefer resources/read. Serving read for backward compatibility."); + return ReadScript(fullPath, relativePath); + case "update": + McpLog.Warn("manage_script.update is deprecated; prefer apply_text_edits. Serving update for backward compatibility."); + return UpdateScript(fullPath, relativePath, name, contents); + case "delete": + return DeleteScript(fullPath, relativePath); + case "apply_text_edits": + { + var textEdits = p.GetRaw("edits") as JArray; + string precondition = p.Get("precondition_sha256"); + // Respect optional options (guard type before indexing) + var optionsObj = p.GetRaw("options") as JObject; + string refreshOpt = optionsObj?["refresh"]?.ToString()?.ToLowerInvariant(); + string validateOpt = optionsObj?["validate"]?.ToString()?.ToLowerInvariant(); + return ApplyTextEdits(fullPath, relativePath, name, textEdits, precondition, refreshOpt, validateOpt); + } + case "validate": + { + string level = p.Get("level", "standard").ToLowerInvariant(); + var chosen = level switch + { + "basic" => ValidationLevel.Basic, + "standard" => ValidationLevel.Standard, + "strict" => ValidationLevel.Strict, + "comprehensive" => ValidationLevel.Comprehensive, + _ => ValidationLevel.Standard + }; + string fileText; + try { fileText = File.ReadAllText(fullPath); } + catch (Exception ex) { return new ErrorResponse($"Failed to read script: {ex.Message}"); } + + bool ok = ValidateScriptSyntax(fileText, chosen, out string[] diagsRaw); + var diags = (diagsRaw ?? Array.Empty()).Select(s => + { + var m = Regex.Match( + s, + @"^(ERROR|WARNING|INFO): (.*?)(?: \(Line (\d+)\))?$", + RegexOptions.CultureInvariant | RegexOptions.Multiline, + TimeSpan.FromMilliseconds(250) + ); + string severity = m.Success ? m.Groups[1].Value.ToLowerInvariant() : "info"; + string message = m.Success ? m.Groups[2].Value : s; + int lineNum = m.Success && int.TryParse(m.Groups[3].Value, out var l) ? l : 0; + return new { line = lineNum, col = 0, severity, message }; + }).ToArray(); + + var result = new { diagnostics = diags }; + return ok ? new SuccessResponse("Validation completed.", result) + : new ErrorResponse("Validation failed.", result); + } + case "edit": + McpLog.Warn("manage_script.edit is deprecated; prefer apply_text_edits. Serving structured edit for backward compatibility."); + var structEdits = @params["edits"] as JArray; + var options = @params["options"] as JObject; + return EditScript(fullPath, relativePath, name, structEdits, options); + case "get_sha": + { + try + { + if (!File.Exists(fullPath)) + return new ErrorResponse($"Script not found at '{relativePath}'."); + + string text = File.ReadAllText(fullPath); + string sha = ComputeSha256(text); + var fi = new FileInfo(fullPath); + long lengthBytes; + try { lengthBytes = new System.Text.UTF8Encoding(encoderShouldEmitUTF8Identifier: false).GetByteCount(text); } + catch { lengthBytes = fi.Exists ? fi.Length : 0; } + var data = new + { + uri = $"mcpforunity://path/{relativePath}", + path = relativePath, + sha256 = sha, + lengthBytes, + lastModifiedUtc = fi.Exists ? fi.LastWriteTimeUtc.ToString("o") : string.Empty + }; + return new SuccessResponse($"SHA computed for '{relativePath}'.", data); + } + catch (Exception ex) + { + return new ErrorResponse($"Failed to compute SHA: {ex.Message}"); + } + } + default: + return new ErrorResponse( + $"Unknown action: '{action}'. Valid actions are: create, delete, apply_text_edits, validate, read (deprecated), update (deprecated), edit (deprecated)." + ); + } + } + + /// + /// Decode base64 string to normal text + /// + private static string DecodeBase64(string encoded) + { + byte[] data = Convert.FromBase64String(encoded); + return System.Text.Encoding.UTF8.GetString(data); + } + + /// + /// Encode text to base64 string + /// + private static string EncodeBase64(string text) + { + byte[] data = System.Text.Encoding.UTF8.GetBytes(text); + return Convert.ToBase64String(data); + } + + private static object CreateScript( + string fullPath, + string relativePath, + string name, + string contents, + string scriptType, + string namespaceName + ) + { + // Check if script already exists + if (File.Exists(fullPath)) + { + return new ErrorResponse( + $"Script already exists at '{relativePath}'. Use 'update' action to modify." + ); + } + + // Generate default content if none provided + if (string.IsNullOrEmpty(contents)) + { + contents = GenerateDefaultScriptContent(name, scriptType, namespaceName); + } + + // Validate syntax with detailed error reporting using GUI setting + ValidationLevel validationLevel = GetValidationLevelFromGUI(); + bool isValid = ValidateScriptSyntax(contents, validationLevel, out string[] validationErrors); + if (!isValid) + { + return new ErrorResponse("validation_failed", new { status = "validation_failed", diagnostics = validationErrors ?? Array.Empty() }); + } + else if (validationErrors != null && validationErrors.Length > 0) + { + // Log warnings but don't block creation + McpLog.Warn($"Script validation warnings for {name}:\n" + string.Join("\n", validationErrors)); + } + + try + { + // Atomic create without BOM; schedule refresh after reply + var enc = new System.Text.UTF8Encoding(encoderShouldEmitUTF8Identifier: false); + var tmp = fullPath + ".tmp"; + File.WriteAllText(tmp, contents, enc); + try + { + File.Move(tmp, fullPath); + } + catch (IOException) + { + File.Copy(tmp, fullPath, overwrite: true); + try { File.Delete(tmp); } catch { } + } + + var uri = $"mcpforunity://path/{relativePath}"; + var ok = new SuccessResponse( + $"Script '{name}.cs' created successfully at '{relativePath}'.", + new { uri, scheduledRefresh = false } + ); + + ManageScriptRefreshHelpers.ImportAndRequestCompile(relativePath); + + return ok; + } + catch (Exception e) + { + return new ErrorResponse($"Failed to create script '{relativePath}': {e.Message}"); + } + } + + private static object ReadScript(string fullPath, string relativePath) + { + if (!File.Exists(fullPath)) + { + return new ErrorResponse($"Script not found at '{relativePath}'."); + } + + try + { + string contents = File.ReadAllText(fullPath); + + // Return both normal and encoded contents for larger files + bool isLarge = contents.Length > 10000; // If content is large, include encoded version + var uri = $"mcpforunity://path/{relativePath}"; + var responseData = new + { + uri, + path = relativePath, + contents = contents, + // For large files, also include base64-encoded version + encodedContents = isLarge ? EncodeBase64(contents) : null, + contentsEncoded = isLarge, + }; + + return new SuccessResponse( + $"Script '{Path.GetFileName(relativePath)}' read successfully.", + responseData + ); + } + catch (Exception e) + { + return new ErrorResponse($"Failed to read script '{relativePath}': {e.Message}"); + } + } + + private static object UpdateScript( + string fullPath, + string relativePath, + string name, + string contents + ) + { + if (!File.Exists(fullPath)) + { + return new ErrorResponse( + $"Script not found at '{relativePath}'. Use 'create' action to add a new script." + ); + } + if (string.IsNullOrEmpty(contents)) + { + return new ErrorResponse("Content is required for the 'update' action."); + } + + // Validate syntax with detailed error reporting using GUI setting + ValidationLevel validationLevel = GetValidationLevelFromGUI(); + bool isValid = ValidateScriptSyntax(contents, validationLevel, out string[] validationErrors); + if (!isValid) + { + return new ErrorResponse("validation_failed", new { status = "validation_failed", diagnostics = validationErrors ?? Array.Empty() }); + } + else if (validationErrors != null && validationErrors.Length > 0) + { + // Log warnings but don't block update + McpLog.Warn($"Script validation warnings for {name}:\n" + string.Join("\n", validationErrors)); + } + + try + { + // Safe write with atomic replace when available, without BOM + var encoding = new System.Text.UTF8Encoding(encoderShouldEmitUTF8Identifier: false); + string tempPath = fullPath + ".tmp"; + File.WriteAllText(tempPath, contents, encoding); + + string backupPath = fullPath + ".bak"; + try + { + File.Replace(tempPath, fullPath, backupPath); + try { if (File.Exists(backupPath)) File.Delete(backupPath); } catch { } + } + catch (PlatformNotSupportedException) + { + File.Copy(tempPath, fullPath, true); + try { File.Delete(tempPath); } catch { } + try { if (File.Exists(backupPath)) File.Delete(backupPath); } catch { } + } + catch (IOException) + { + File.Copy(tempPath, fullPath, true); + try { File.Delete(tempPath); } catch { } + try { if (File.Exists(backupPath)) File.Delete(backupPath); } catch { } + } + + // Prepare success response BEFORE any operation that can trigger a domain reload + var uri = $"mcpforunity://path/{relativePath}"; + var ok = new SuccessResponse( + $"Script '{name}.cs' updated successfully at '{relativePath}'.", + new { uri, path = relativePath, scheduledRefresh = true } + ); + + // Schedule a debounced import/compile on next editor tick to avoid stalling the reply + ManageScriptRefreshHelpers.ScheduleScriptRefresh(relativePath); + + return ok; + } + catch (Exception e) + { + return new ErrorResponse($"Failed to update script '{relativePath}': {e.Message}"); + } + } + + /// + /// Apply simple text edits specified by line/column ranges. Applies transactionally and validates result. + /// + private const int MaxEditPayloadBytes = 64 * 1024; + + private static object ApplyTextEdits( + string fullPath, + string relativePath, + string name, + JArray edits, + string preconditionSha256, + string refreshModeFromCaller = null, + string validateMode = null) + { + if (!File.Exists(fullPath)) + return new ErrorResponse($"Script not found at '{relativePath}'."); + // Refuse edits if the target or any ancestor is a symlink + try + { + var di = new DirectoryInfo(Path.GetDirectoryName(fullPath) ?? ""); + while (di != null && !string.Equals(di.FullName.Replace('\\', '/'), Application.dataPath.Replace('\\', '/'), StringComparison.OrdinalIgnoreCase)) + { + if (di.Exists && (di.Attributes & FileAttributes.ReparsePoint) != 0) + return new ErrorResponse("Refusing to edit a symlinked script path."); + di = di.Parent; + } + } + catch + { + // If checking attributes fails, proceed without the symlink guard + } + if (edits == null || edits.Count == 0) + return new ErrorResponse("No edits provided."); + + string original; + try { original = File.ReadAllText(fullPath); } + catch (Exception ex) { return new ErrorResponse($"Failed to read script: {ex.Message}"); } + + // Require precondition to avoid drift on large files + string currentSha = ComputeSha256(original); + if (string.IsNullOrEmpty(preconditionSha256)) + return new ErrorResponse("precondition_required", new { status = "precondition_required", current_sha256 = currentSha }); + if (!preconditionSha256.Equals(currentSha, StringComparison.OrdinalIgnoreCase)) + return new ErrorResponse("stale_file", new { status = "stale_file", expected_sha256 = preconditionSha256, current_sha256 = currentSha }); + + // Convert edits to absolute index ranges + var spans = new List<(int start, int end, string text)>(); + long totalBytes = 0; + foreach (var e in edits) + { + try + { + int sl = Math.Max(1, e.Value("startLine")); + int sc = Math.Max(1, e.Value("startCol")); + int el = Math.Max(1, e.Value("endLine")); + int ec = Math.Max(1, e.Value("endCol")); + string newText = e.Value("newText") ?? string.Empty; + + if (!TryIndexFromLineCol(original, sl, sc, out int sidx)) + return new ErrorResponse($"apply_text_edits: start out of range (line {sl}, col {sc})"); + if (!TryIndexFromLineCol(original, el, ec, out int eidx)) + return new ErrorResponse($"apply_text_edits: end out of range (line {el}, col {ec})"); + if (eidx < sidx) (sidx, eidx) = (eidx, sidx); + + spans.Add((sidx, eidx, newText)); + checked + { + totalBytes += System.Text.Encoding.UTF8.GetByteCount(newText); + } + } + catch (Exception ex) + { + return new ErrorResponse($"Invalid edit payload: {ex.Message}"); + } + } + + // Header guard: refuse edits that touch before the first 'using ' directive (after optional BOM) to prevent file corruption + int headerBoundary = (original.Length > 0 && original[0] == '\uFEFF') ? 1 : 0; // skip BOM once if present + // Find first top-level using (supports alias, static, and dotted namespaces) + var mUsing = System.Text.RegularExpressions.Regex.Match( + original, + @"(?m)^\s*using\s+(?:static\s+)?(?:[A-Za-z_]\w*\s*=\s*)?[A-Za-z_]\w*(?:\.[A-Za-z_]\w*)*\s*;", + System.Text.RegularExpressions.RegexOptions.CultureInvariant, + TimeSpan.FromSeconds(2) + ); + if (mUsing.Success) + { + headerBoundary = Math.Min(Math.Max(headerBoundary, mUsing.Index), original.Length); + } + foreach (var sp in spans) + { + if (sp.start < headerBoundary) + { + return new ErrorResponse("using_guard", new { status = "using_guard", hint = "Refusing to edit before the first 'using'. Use anchor_insert near a method or a structured edit." }); + } + } + + // Attempt auto-upgrade: if a single edit targets a method header/body, re-route as structured replace_method + if (spans.Count == 1) + { + var sp = spans[0]; + // Heuristic: around the start of the edit, try to match a method header in original + int searchStart = Math.Max(0, sp.start - 200); + int searchEnd = Math.Min(original.Length, sp.start + 200); + string slice = original.Substring(searchStart, searchEnd - searchStart); + var rx = new System.Text.RegularExpressions.Regex(@"(?m)^[\t ]*(?:\[[^\]]+\][\t ]*)*[\t ]*(?:public|private|protected|internal|static|virtual|override|sealed|async|extern|unsafe|new|partial)[\s\S]*?\b([A-Za-z_][A-Za-z0-9_]*)\s*\("); + var mh = rx.Match(slice); + if (mh.Success) + { + string methodName = mh.Groups[1].Value; + // Find class span containing the edit + if (TryComputeClassSpan(original, name, null, out var clsStart, out var clsLen, out _)) + { + if (TryComputeMethodSpan(original, clsStart, clsLen, methodName, null, null, null, out var mStart, out var mLen, out _)) + { + // If the edit overlaps the method span significantly, treat as replace_method + if (sp.start <= mStart + 2 && sp.end >= mStart + 1) + { + var structEdits = new JArray(); + + // Apply the edit to get a candidate string, then recompute method span on the edited text + string candidate = original.Remove(sp.start, sp.end - sp.start).Insert(sp.start, sp.text ?? string.Empty); + string replacementText; + if (TryComputeClassSpan(candidate, name, null, out var cls2Start, out var cls2Len, out _) + && TryComputeMethodSpan(candidate, cls2Start, cls2Len, methodName, null, null, null, out var m2Start, out var m2Len, out _)) + { + replacementText = candidate.Substring(m2Start, m2Len); + } + else + { + // Fallback: adjust method start by the net delta if the edit was before the method + int delta = (sp.text?.Length ?? 0) - (sp.end - sp.start); + int adjustedStart = mStart + (sp.start <= mStart ? delta : 0); + adjustedStart = Math.Max(0, Math.Min(adjustedStart, candidate.Length)); + + // If the edit was within the original method span, adjust the length by the delta within-method + int withinMethodDelta = 0; + if (sp.start >= mStart && sp.start <= mStart + mLen) + { + withinMethodDelta = delta; + } + int adjustedLen = mLen + withinMethodDelta; + adjustedLen = Math.Max(0, Math.Min(candidate.Length - adjustedStart, adjustedLen)); + replacementText = candidate.Substring(adjustedStart, adjustedLen); + } + + var op = new JObject + { + ["mode"] = "replace_method", + ["className"] = name, + ["methodName"] = methodName, + ["replacement"] = replacementText + }; + structEdits.Add(op); + // Reuse structured path + return EditScript(fullPath, relativePath, name, structEdits, new JObject { ["refresh"] = "immediate", ["validate"] = "standard" }); + } + } + } + } + } + + if (totalBytes > MaxEditPayloadBytes) + { + return new ErrorResponse("too_large", new { status = "too_large", limitBytes = MaxEditPayloadBytes, hint = "split into smaller edits" }); + } + + // Ensure non-overlap and apply from back to front + spans = spans.OrderByDescending(t => t.start).ToList(); + for (int i = 1; i < spans.Count; i++) + { + if (spans[i].end > spans[i - 1].start) + { + var conflict = new[] { new { startA = spans[i].start, endA = spans[i].end, startB = spans[i - 1].start, endB = spans[i - 1].end } }; + return new ErrorResponse("overlap", new { status = "overlap", conflicts = conflict, hint = "Sort ranges descending by start and compute from the same snapshot." }); + } + } + + string working = original; + bool relaxed = string.Equals(validateMode, "relaxed", StringComparison.OrdinalIgnoreCase); + bool syntaxOnly = string.Equals(validateMode, "syntax", StringComparison.OrdinalIgnoreCase); + foreach (var sp in spans) + { + string next = working.Remove(sp.start, sp.end - sp.start).Insert(sp.start, sp.text ?? string.Empty); + if (relaxed) + { + // Scoped balance check: validate just around the changed region to avoid false positives + int originalLength = sp.end - sp.start; + int newLength = sp.text?.Length ?? 0; + int endPos = sp.start + newLength; + if (!CheckScopedBalance(next, Math.Max(0, sp.start - 500), Math.Min(next.Length, endPos + 500))) + { + return new ErrorResponse("unbalanced_braces", new { status = "unbalanced_braces", line = 0, expected = "{}()[] (scoped)", hint = "Use standard validation or shrink the edit range." }); + } + } + working = next; + } + + // No-op guard: if resulting text is identical, avoid writes and return explicit no-op + if (string.Equals(working, original, StringComparison.Ordinal)) + { + string noChangeSha = ComputeSha256(original); + return new SuccessResponse( + $"No-op: contents unchanged for '{relativePath}'.", + new + { + uri = $"mcpforunity://path/{relativePath}", + path = relativePath, + editsApplied = 0, + no_op = true, + sha256 = noChangeSha, + evidence = new { reason = "identical_content" } + } + ); + } + + // Always check final structural balance regardless of relaxed mode + if (!CheckBalancedDelimiters(working, out int line, out char expected)) + { + int startLine = Math.Max(1, line - 5); + int endLine = line + 5; + string hint = $"unbalanced_braces at line {line}. Call resources/read for lines {startLine}-{endLine} and resend a smaller apply_text_edits that restores balance."; + return new ErrorResponse(hint, new { status = "unbalanced_braces", line, expected = expected.ToString(), evidenceWindow = new { startLine, endLine } }); + } + +#if USE_ROSLYN + if (!syntaxOnly) + { + var tree = CSharpSyntaxTree.ParseText(working); + var diagnostics = tree.GetDiagnostics().Where(d => d.Severity == DiagnosticSeverity.Error).Take(3) + .Select(d => new { + line = d.Location.GetLineSpan().StartLinePosition.Line + 1, + col = d.Location.GetLineSpan().StartLinePosition.Character + 1, + code = d.Id, + message = d.GetMessage() + }).ToArray(); + if (diagnostics.Length > 0) + { + int firstLine = diagnostics[0].line; + int startLineRos = Math.Max(1, firstLine - 5); + int endLineRos = firstLine + 5; + return new ErrorResponse("syntax_error", new { status = "syntax_error", diagnostics, evidenceWindow = new { startLine = startLineRos, endLine = endLineRos } }); + } + + // Optional formatting + try + { + var root = tree.GetRoot(); + var workspace = new AdhocWorkspace(); + root = Microsoft.CodeAnalysis.Formatting.Formatter.Format(root, workspace); + working = root.ToFullString(); + } + catch { } + } +#endif + + string newSha = ComputeSha256(working); + + // Atomic write and schedule refresh + try + { + var enc = new System.Text.UTF8Encoding(encoderShouldEmitUTF8Identifier: false); + var tmp = fullPath + ".tmp"; + File.WriteAllText(tmp, working, enc); + string backup = fullPath + ".bak"; + try + { + File.Replace(tmp, fullPath, backup); + try { if (File.Exists(backup)) File.Delete(backup); } catch { /* ignore */ } + } + catch (PlatformNotSupportedException) + { + File.Copy(tmp, fullPath, true); + try { File.Delete(tmp); } catch { } + try { if (File.Exists(backup)) File.Delete(backup); } catch { } + } + catch (IOException) + { + File.Copy(tmp, fullPath, true); + try { File.Delete(tmp); } catch { } + try { if (File.Exists(backup)) File.Delete(backup); } catch { } + } + + // Respect refresh mode: immediate vs debounced + bool immediate = string.Equals(refreshModeFromCaller, "immediate", StringComparison.OrdinalIgnoreCase) || + string.Equals(refreshModeFromCaller, "sync", StringComparison.OrdinalIgnoreCase); + if (immediate) + { + McpLog.Info($"[ManageScript] ApplyTextEdits: immediate refresh for '{relativePath}'"); + AssetDatabase.ImportAsset( + relativePath, + ImportAssetOptions.ForceSynchronousImport | ImportAssetOptions.ForceUpdate + ); +#if UNITY_EDITOR + UnityEditor.Compilation.CompilationPipeline.RequestScriptCompilation(); +#endif + } + else + { + McpLog.Info($"[ManageScript] ApplyTextEdits: debounced refresh scheduled for '{relativePath}'"); + ManageScriptRefreshHelpers.ScheduleScriptRefresh(relativePath); + } + + return new SuccessResponse( + $"Applied {spans.Count} text edit(s) to '{relativePath}'.", + new + { + uri = $"mcpforunity://path/{relativePath}", + path = relativePath, + editsApplied = spans.Count, + sha256 = newSha, + scheduledRefresh = !immediate + } + ); + } + catch (Exception ex) + { + return new ErrorResponse($"Failed to write edits: {ex.Message}"); + } + } + + private static bool TryIndexFromLineCol(string text, int line1, int col1, out int index) + { + // 1-based line/col to absolute index (0-based), col positions are counted in code points + int line = 1, col = 1; + for (int i = 0; i <= text.Length; i++) + { + if (line == line1 && col == col1) + { + index = i; + return true; + } + if (i == text.Length) break; + char c = text[i]; + if (c == '\r') + { + // Treat CRLF as a single newline; skip the LF if present + if (i + 1 < text.Length && text[i + 1] == '\n') + i++; + line++; + col = 1; + } + else if (c == '\n') + { + line++; + col = 1; + } + else + { + col++; + } + } + index = -1; + return false; + } + + private static string ComputeSha256(string contents) + { + using (var sha = SHA256.Create()) + { + var bytes = System.Text.Encoding.UTF8.GetBytes(contents); + var hash = sha.ComputeHash(bytes); + return BitConverter.ToString(hash).Replace("-", string.Empty).ToLowerInvariant(); + } + } + + private static bool CheckBalancedDelimiters(string text, out int line, out char expected) + { + var braceStack = new Stack(); + var parenStack = new Stack(); + var bracketStack = new Stack(); + bool inString = false, inChar = false, inSingle = false, inMulti = false, escape = false; + line = 1; expected = '\0'; + + for (int i = 0; i < text.Length; i++) + { + char c = text[i]; + char next = i + 1 < text.Length ? text[i + 1] : '\0'; + + if (c == '\n') { line++; if (inSingle) inSingle = false; } + + if (escape) { escape = false; continue; } + + if (inString) + { + if (c == '\\') { escape = true; } + else if (c == '"') inString = false; + continue; + } + if (inChar) + { + if (c == '\\') { escape = true; } + else if (c == '\'') inChar = false; + continue; + } + if (inSingle) continue; + if (inMulti) + { + if (c == '*' && next == '/') { inMulti = false; i++; } + continue; + } + + if (c == '"') { inString = true; continue; } + if (c == '\'') { inChar = true; continue; } + if (c == '/' && next == '/') { inSingle = true; i++; continue; } + if (c == '/' && next == '*') { inMulti = true; i++; continue; } + + switch (c) + { + case '{': braceStack.Push(line); break; + case '}': + if (braceStack.Count == 0) { expected = '{'; return false; } + braceStack.Pop(); + break; + case '(': parenStack.Push(line); break; + case ')': + if (parenStack.Count == 0) { expected = '('; return false; } + parenStack.Pop(); + break; + case '[': bracketStack.Push(line); break; + case ']': + if (bracketStack.Count == 0) { expected = '['; return false; } + bracketStack.Pop(); + break; + } + } + + if (braceStack.Count > 0) { line = braceStack.Peek(); expected = '}'; return false; } + if (parenStack.Count > 0) { line = parenStack.Peek(); expected = ')'; return false; } + if (bracketStack.Count > 0) { line = bracketStack.Peek(); expected = ']'; return false; } + + return true; + } + + // Lightweight scoped balance: checks delimiters within a substring, ignoring outer context + private static bool CheckScopedBalance(string text, int start, int end) + { + start = Math.Max(0, Math.Min(text.Length, start)); + end = Math.Max(start, Math.Min(text.Length, end)); + int brace = 0, paren = 0, bracket = 0; + bool inStr = false, inChr = false, esc = false; + for (int i = start; i < end; i++) + { + char c = text[i]; + char n = (i + 1 < end) ? text[i + 1] : '\0'; + if (inStr) + { + if (!esc && c == '"') inStr = false; esc = (!esc && c == '\\'); continue; + } + if (inChr) + { + if (!esc && c == '\'') inChr = false; esc = (!esc && c == '\\'); continue; + } + if (c == '"') { inStr = true; esc = false; continue; } + if (c == '\'') { inChr = true; esc = false; continue; } + if (c == '/' && n == '/') { while (i < end && text[i] != '\n') i++; continue; } + if (c == '/' && n == '*') { i += 2; while (i + 1 < end && !(text[i] == '*' && text[i + 1] == '/')) i++; i++; continue; } + if (c == '{') brace++; + else if (c == '}') brace--; + else if (c == '(') paren++; + else if (c == ')') paren--; + else if (c == '[') bracket++; else if (c == ']') bracket--; + // Allow temporary negative balance - will check tolerance at end + } + return brace >= -3 && paren >= -3 && bracket >= -3; // tolerate more context from outside region + } + + private static object DeleteScript(string fullPath, string relativePath) + { + if (!File.Exists(fullPath)) + { + return new ErrorResponse($"Script not found at '{relativePath}'. Cannot delete."); + } + + try + { + // Use AssetDatabase.MoveAssetToTrash for safer deletion (allows undo) + bool deleted = AssetDatabase.MoveAssetToTrash(relativePath); + if (deleted) + { + AssetDatabase.Refresh(ImportAssetOptions.ForceSynchronousImport); + return new SuccessResponse( + $"Script '{Path.GetFileName(relativePath)}' moved to trash successfully.", + new { deleted = true } + ); + } + else + { + // Fallback or error if MoveAssetToTrash fails + return new ErrorResponse( + $"Failed to move script '{relativePath}' to trash. It might be locked or in use." + ); + } + } + catch (Exception e) + { + return new ErrorResponse($"Error deleting script '{relativePath}': {e.Message}"); + } + } + + /// + /// Structured edits (AST-backed where available) on existing scripts. + /// Supports class-level replace/delete with Roslyn span computation if USE_ROSLYN is defined, + /// otherwise falls back to a conservative balanced-brace scan. + /// + private static object EditScript( + string fullPath, + string relativePath, + string name, + JArray edits, + JObject options) + { + if (!File.Exists(fullPath)) + return new ErrorResponse($"Script not found at '{relativePath}'."); + // Refuse edits if the target is a symlink + try + { + var attrs = File.GetAttributes(fullPath); + if ((attrs & FileAttributes.ReparsePoint) != 0) + return new ErrorResponse("Refusing to edit a symlinked script path."); + } + catch + { + // ignore failures checking attributes and proceed + } + if (edits == null || edits.Count == 0) + return new ErrorResponse("No edits provided."); + + string original; + try { original = File.ReadAllText(fullPath); } + catch (Exception ex) { return new ErrorResponse($"Failed to read script: {ex.Message}"); } + + string working = original; + + try + { + var replacements = new List<(int start, int length, string text)>(); + int appliedCount = 0; + + // Apply mode: atomic (default) computes all spans against original and applies together. + // Sequential applies each edit immediately to the current working text (useful for dependent edits). + string applyMode = options?["applyMode"]?.ToString()?.ToLowerInvariant(); + bool applySequentially = applyMode == "sequential"; + + foreach (var e in edits) + { + var op = (JObject)e; + var mode = (op.Value("mode") ?? op.Value("op") ?? string.Empty).ToLowerInvariant(); + + switch (mode) + { + case "replace_class": + { + string className = op.Value("className"); + string ns = op.Value("namespace"); + string replacement = ExtractReplacement(op); + + if (string.IsNullOrWhiteSpace(className)) + return new ErrorResponse("replace_class requires 'className'."); + if (replacement == null) + return new ErrorResponse("replace_class requires 'replacement' (inline or base64)."); + + if (!TryComputeClassSpan(working, className, ns, out var spanStart, out var spanLength, out var why)) + return new ErrorResponse($"replace_class failed: {why}"); + + if (!ValidateClassSnippet(replacement, className, out var vErr)) + return new ErrorResponse($"Replacement snippet invalid: {vErr}"); + + if (applySequentially) + { + working = working.Remove(spanStart, spanLength).Insert(spanStart, NormalizeNewlines(replacement)); + appliedCount++; + } + else + { + replacements.Add((spanStart, spanLength, NormalizeNewlines(replacement))); + } + break; + } + + case "delete_class": + { + string className = op.Value("className"); + string ns = op.Value("namespace"); + if (string.IsNullOrWhiteSpace(className)) + return new ErrorResponse("delete_class requires 'className'."); + + if (!TryComputeClassSpan(working, className, ns, out var s, out var l, out var why)) + return new ErrorResponse($"delete_class failed: {why}"); + + if (applySequentially) + { + working = working.Remove(s, l); + appliedCount++; + } + else + { + replacements.Add((s, l, string.Empty)); + } + break; + } + + case "replace_method": + { + string className = op.Value("className"); + string ns = op.Value("namespace"); + string methodName = op.Value("methodName"); + string replacement = ExtractReplacement(op); + string returnType = op.Value("returnType"); + string parametersSignature = op.Value("parametersSignature"); + string attributesContains = op.Value("attributesContains"); + + if (string.IsNullOrWhiteSpace(className)) return new ErrorResponse("replace_method requires 'className'."); + if (string.IsNullOrWhiteSpace(methodName)) return new ErrorResponse("replace_method requires 'methodName'."); + if (replacement == null) return new ErrorResponse("replace_method requires 'replacement' (inline or base64)."); + + if (!TryComputeClassSpan(working, className, ns, out var clsStart, out var clsLen, out var whyClass)) + return new ErrorResponse($"replace_method failed to locate class: {whyClass}"); + + if (!TryComputeMethodSpan(working, clsStart, clsLen, methodName, returnType, parametersSignature, attributesContains, out var mStart, out var mLen, out var whyMethod)) + { + bool hasDependentInsert = edits.Any(j => j is JObject jo && + string.Equals(jo.Value("className"), className, StringComparison.Ordinal) && + string.Equals(jo.Value("methodName"), methodName, StringComparison.Ordinal) && + ((jo.Value("mode") ?? jo.Value("op") ?? string.Empty).ToLowerInvariant() == "insert_method")); + string hint = hasDependentInsert && !applySequentially ? " Hint: This batch inserts this method. Use options.applyMode='sequential' or split into separate calls." : string.Empty; + return new ErrorResponse($"replace_method failed: {whyMethod}.{hint}"); + } + + if (applySequentially) + { + working = working.Remove(mStart, mLen).Insert(mStart, NormalizeNewlines(replacement)); + appliedCount++; + } + else + { + replacements.Add((mStart, mLen, NormalizeNewlines(replacement))); + } + break; + } + + case "delete_method": + { + string className = op.Value("className"); + string ns = op.Value("namespace"); + string methodName = op.Value("methodName"); + string returnType = op.Value("returnType"); + string parametersSignature = op.Value("parametersSignature"); + string attributesContains = op.Value("attributesContains"); + + if (string.IsNullOrWhiteSpace(className)) return new ErrorResponse("delete_method requires 'className'."); + if (string.IsNullOrWhiteSpace(methodName)) return new ErrorResponse("delete_method requires 'methodName'."); + + if (!TryComputeClassSpan(working, className, ns, out var clsStart, out var clsLen, out var whyClass)) + return new ErrorResponse($"delete_method failed to locate class: {whyClass}"); + + if (!TryComputeMethodSpan(working, clsStart, clsLen, methodName, returnType, parametersSignature, attributesContains, out var mStart, out var mLen, out var whyMethod)) + { + bool hasDependentInsert = edits.Any(j => j is JObject jo && + string.Equals(jo.Value("className"), className, StringComparison.Ordinal) && + string.Equals(jo.Value("methodName"), methodName, StringComparison.Ordinal) && + ((jo.Value("mode") ?? jo.Value("op") ?? string.Empty).ToLowerInvariant() == "insert_method")); + string hint = hasDependentInsert && !applySequentially ? " Hint: This batch inserts this method. Use options.applyMode='sequential' or split into separate calls." : string.Empty; + return new ErrorResponse($"delete_method failed: {whyMethod}.{hint}"); + } + + if (applySequentially) + { + working = working.Remove(mStart, mLen); + appliedCount++; + } + else + { + replacements.Add((mStart, mLen, string.Empty)); + } + break; + } + + case "insert_method": + { + string className = op.Value("className"); + string ns = op.Value("namespace"); + string position = (op.Value("position") ?? "end").ToLowerInvariant(); + string afterMethodName = op.Value("afterMethodName"); + string afterReturnType = op.Value("afterReturnType"); + string afterParameters = op.Value("afterParametersSignature"); + string afterAttributesContains = op.Value("afterAttributesContains"); + string snippet = ExtractReplacement(op); + // Harden: refuse empty replacement for inserts + if (snippet == null || snippet.Trim().Length == 0) + return new ErrorResponse("insert_method requires a non-empty 'replacement' text."); + + if (string.IsNullOrWhiteSpace(className)) return new ErrorResponse("insert_method requires 'className'."); + if (snippet == null) return new ErrorResponse("insert_method requires 'replacement' (inline or base64) containing a full method declaration."); + + if (!TryComputeClassSpan(working, className, ns, out var clsStart, out var clsLen, out var whyClass)) + return new ErrorResponse($"insert_method failed to locate class: {whyClass}"); + + if (position == "after") + { + if (string.IsNullOrEmpty(afterMethodName)) return new ErrorResponse("insert_method with position='after' requires 'afterMethodName'."); + if (!TryComputeMethodSpan(working, clsStart, clsLen, afterMethodName, afterReturnType, afterParameters, afterAttributesContains, out var aStart, out var aLen, out var whyAfter)) + return new ErrorResponse($"insert_method(after) failed to locate anchor method: {whyAfter}"); + int insAt = aStart + aLen; + string text = NormalizeNewlines("\n\n" + snippet.TrimEnd() + "\n"); + if (applySequentially) + { + working = working.Insert(insAt, text); + appliedCount++; + } + else + { + replacements.Add((insAt, 0, text)); + } + } + else if (!TryFindClassInsertionPoint(working, clsStart, clsLen, position, out var insAt, out var whyIns)) + return new ErrorResponse($"insert_method failed: {whyIns}"); + else + { + string text = NormalizeNewlines("\n\n" + snippet.TrimEnd() + "\n"); + if (applySequentially) + { + working = working.Insert(insAt, text); + appliedCount++; + } + else + { + replacements.Add((insAt, 0, text)); + } + } + break; + } + + case "anchor_insert": + { + string anchor = op.Value("anchor"); + string position = (op.Value("position") ?? "before").ToLowerInvariant(); + string text = op.Value("text") ?? ExtractReplacement(op); + if (string.IsNullOrWhiteSpace(anchor)) return new ErrorResponse("anchor_insert requires 'anchor' (regex)."); + if (string.IsNullOrEmpty(text)) return new ErrorResponse("anchor_insert requires non-empty 'text'."); + + try + { + var rx = new Regex(anchor, RegexOptions.Multiline, TimeSpan.FromSeconds(2)); + var m = rx.Match(working); + if (!m.Success) return new ErrorResponse($"anchor_insert: anchor not found: {anchor}"); + int insAt = position == "after" ? m.Index + m.Length : m.Index; + string norm = NormalizeNewlines(text); + if (!norm.EndsWith("\n")) + { + norm += "\n"; + } + + // Duplicate guard: if identical snippet already exists within this class, skip insert + if (TryComputeClassSpan(working, name, null, out var clsStartDG, out var clsLenDG, out _)) + { + string classSlice = working.Substring(clsStartDG, Math.Min(clsLenDG, working.Length - clsStartDG)); + if (classSlice.IndexOf(norm, StringComparison.Ordinal) >= 0) + { + // Do not insert duplicate; treat as no-op + break; + } + } + if (applySequentially) + { + working = working.Insert(insAt, norm); + appliedCount++; + } + else + { + replacements.Add((insAt, 0, norm)); + } + } + catch (Exception ex) + { + return new ErrorResponse($"anchor_insert failed: {ex.Message}"); + } + break; + } + + case "anchor_delete": + { + string anchor = op.Value("anchor"); + if (string.IsNullOrWhiteSpace(anchor)) return new ErrorResponse("anchor_delete requires 'anchor' (regex)."); + try + { + var rx = new Regex(anchor, RegexOptions.Multiline, TimeSpan.FromSeconds(2)); + var m = rx.Match(working); + if (!m.Success) return new ErrorResponse($"anchor_delete: anchor not found: {anchor}"); + int delAt = m.Index; + int delLen = m.Length; + if (applySequentially) + { + working = working.Remove(delAt, delLen); + appliedCount++; + } + else + { + replacements.Add((delAt, delLen, string.Empty)); + } + } + catch (Exception ex) + { + return new ErrorResponse($"anchor_delete failed: {ex.Message}"); + } + break; + } + + case "anchor_replace": + { + string anchor = op.Value("anchor"); + string replacement = op.Value("text") ?? op.Value("replacement") ?? ExtractReplacement(op) ?? string.Empty; + if (string.IsNullOrWhiteSpace(anchor)) return new ErrorResponse("anchor_replace requires 'anchor' (regex)."); + try + { + var rx = new Regex(anchor, RegexOptions.Multiline, TimeSpan.FromSeconds(2)); + var m = rx.Match(working); + if (!m.Success) return new ErrorResponse($"anchor_replace: anchor not found: {anchor}"); + int at = m.Index; + int len = m.Length; + string norm = NormalizeNewlines(replacement); + if (applySequentially) + { + working = working.Remove(at, len).Insert(at, norm); + appliedCount++; + } + else + { + replacements.Add((at, len, norm)); + } + } + catch (Exception ex) + { + return new ErrorResponse($"anchor_replace failed: {ex.Message}"); + } + break; + } + + default: + return new ErrorResponse($"Unknown edit mode: '{mode}'. Allowed: replace_class, delete_class, replace_method, delete_method, insert_method, anchor_insert, anchor_delete, anchor_replace."); + } + } + + if (!applySequentially) + { + if (HasOverlaps(replacements)) + { + var ordered = replacements.OrderByDescending(r => r.start).ToList(); + for (int i = 1; i < ordered.Count; i++) + { + if (ordered[i].start + ordered[i].length > ordered[i - 1].start) + { + var conflict = new[] { new { startA = ordered[i].start, endA = ordered[i].start + ordered[i].length, startB = ordered[i - 1].start, endB = ordered[i - 1].start + ordered[i - 1].length } }; + return new ErrorResponse("overlap", new { status = "overlap", conflicts = conflict, hint = "Sort ranges descending by start and compute from the same snapshot." }); + } + } + return new ErrorResponse("overlap", new { status = "overlap" }); + } + + foreach (var r in replacements.OrderByDescending(r => r.start)) + working = working.Remove(r.start, r.length).Insert(r.start, r.text); + appliedCount = replacements.Count; + } + + // Guard against structural imbalance before validation + if (!CheckBalancedDelimiters(working, out int lineBal, out char expectedBal)) + return new ErrorResponse("unbalanced_braces", new { status = "unbalanced_braces", line = lineBal, expected = expectedBal.ToString() }); + + // No-op guard for structured edits: if text unchanged, return explicit no-op + if (string.Equals(working, original, StringComparison.Ordinal)) + { + var sameSha = ComputeSha256(original); + return new SuccessResponse( + $"No-op: contents unchanged for '{relativePath}'.", + new + { + path = relativePath, + uri = $"mcpforunity://path/{relativePath}", + editsApplied = 0, + no_op = true, + sha256 = sameSha, + evidence = new { reason = "identical_content" } + } + ); + } + + // Validate result using override from options if provided; otherwise GUI strictness + var level = GetValidationLevelFromGUI(); + try + { + var validateOpt = options?["validate"]?.ToString()?.ToLowerInvariant(); + if (!string.IsNullOrEmpty(validateOpt)) + { + level = validateOpt switch + { + "basic" => ValidationLevel.Basic, + "standard" => ValidationLevel.Standard, + "comprehensive" => ValidationLevel.Comprehensive, + "strict" => ValidationLevel.Strict, + _ => level + }; + } + } + catch { /* ignore option parsing issues */ } + if (!ValidateScriptSyntax(working, level, out var errors)) + return new ErrorResponse("validation_failed", new { status = "validation_failed", diagnostics = errors ?? Array.Empty() }); + else if (errors != null && errors.Length > 0) + McpLog.Warn($"Script validation warnings for {name}:\n" + string.Join("\n", errors)); + + // Atomic write with backup; schedule refresh + // Decide refresh behavior + string refreshMode = options?["refresh"]?.ToString()?.ToLowerInvariant(); + bool immediate = refreshMode == "immediate" || refreshMode == "sync"; + + // Persist changes atomically (no BOM), then compute/return new file SHA + var enc = new System.Text.UTF8Encoding(encoderShouldEmitUTF8Identifier: false); + var tmp = fullPath + ".tmp"; + File.WriteAllText(tmp, working, enc); + var backup = fullPath + ".bak"; + try + { + File.Replace(tmp, fullPath, backup); + try { if (File.Exists(backup)) File.Delete(backup); } catch { } + } + catch (PlatformNotSupportedException) + { + File.Copy(tmp, fullPath, true); + try { File.Delete(tmp); } catch { } + try { if (File.Exists(backup)) File.Delete(backup); } catch { } + } + catch (IOException) + { + File.Copy(tmp, fullPath, true); + try { File.Delete(tmp); } catch { } + try { if (File.Exists(backup)) File.Delete(backup); } catch { } + } + + var newSha = ComputeSha256(working); + var ok = new SuccessResponse( + $"Applied {appliedCount} structured edit(s) to '{relativePath}'.", + new + { + path = relativePath, + uri = $"mcpforunity://path/{relativePath}", + editsApplied = appliedCount, + scheduledRefresh = !immediate, + sha256 = newSha + } + ); + + if (immediate) + { + McpLog.Info($"[ManageScript] EditScript: immediate refresh for '{relativePath}'", always: false); + ManageScriptRefreshHelpers.ImportAndRequestCompile(relativePath); + } + else + { + ManageScriptRefreshHelpers.ScheduleScriptRefresh(relativePath); + } + return ok; + } + catch (Exception ex) + { + return new ErrorResponse($"Edit failed: {ex.Message}"); + } + } + + private static bool HasOverlaps(IEnumerable<(int start, int length, string text)> list) + { + var arr = list.OrderBy(x => x.start).ToArray(); + for (int i = 1; i < arr.Length; i++) + { + if (arr[i - 1].start + arr[i - 1].length > arr[i].start) + return true; + } + return false; + } + + private static string ExtractReplacement(JObject op) + { + var inline = op.Value("replacement"); + if (!string.IsNullOrEmpty(inline)) return inline; + + var b64 = op.Value("replacementBase64"); + if (!string.IsNullOrEmpty(b64)) + { + try { return System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(b64)); } + catch { return null; } + } + return null; + } + + private static string NormalizeNewlines(string t) + { + if (string.IsNullOrEmpty(t)) return t; + return t.Replace("\r\n", "\n").Replace("\r", "\n"); + } + + private static bool ValidateClassSnippet(string snippet, string expectedName, out string err) + { +#if USE_ROSLYN + try + { + var tree = CSharpSyntaxTree.ParseText(snippet); + var root = tree.GetRoot(); + var classes = root.DescendantNodes().OfType().ToList(); + if (classes.Count != 1) { err = "snippet must contain exactly one class declaration"; return false; } + // Optional: enforce expected name + // if (classes[0].Identifier.ValueText != expectedName) { err = $"snippet declares '{classes[0].Identifier.ValueText}', expected '{expectedName}'"; return false; } + err = null; return true; + } + catch (Exception ex) { err = ex.Message; return false; } +#else + if (string.IsNullOrWhiteSpace(snippet) || !snippet.Contains("class ")) { err = "no 'class' keyword found in snippet"; return false; } + err = null; return true; +#endif + } + + private static bool TryComputeClassSpan(string source, string className, string ns, out int start, out int length, out string why) + { +#if USE_ROSLYN + try + { + var tree = CSharpSyntaxTree.ParseText(source); + var root = tree.GetRoot(); + var classes = root.DescendantNodes() + .OfType() + .Where(c => c.Identifier.ValueText == className); + + if (!string.IsNullOrEmpty(ns)) + { + classes = classes.Where(c => + (c.FirstAncestorOrSelf()?.Name?.ToString() ?? "") == ns + || (c.FirstAncestorOrSelf()?.Name?.ToString() ?? "") == ns); + } + + var list = classes.ToList(); + if (list.Count == 0) { start = length = 0; why = $"class '{className}' not found" + (ns != null ? $" in namespace '{ns}'" : ""); return false; } + if (list.Count > 1) { start = length = 0; why = $"class '{className}' matched {list.Count} declarations (partial/nested?). Disambiguate."; return false; } + + var cls = list[0]; + var span = cls.FullSpan; // includes attributes & leading trivia + start = span.Start; length = span.Length; why = null; return true; + } + catch + { + // fall back below + } +#endif + return TryComputeClassSpanBalanced(source, className, ns, out start, out length, out why); + } + + private static bool TryComputeClassSpanBalanced(string source, string className, string ns, out int start, out int length, out string why) + { + start = length = 0; why = null; + var idx = IndexOfClassToken(source, className); + if (idx < 0) { why = $"class '{className}' not found (balanced scan)"; return false; } + + if (!string.IsNullOrEmpty(ns) && !AppearsWithinNamespaceHeader(source, idx, ns)) + { why = $"class '{className}' not under namespace '{ns}' (balanced scan)"; return false; } + + // Include modifiers/attributes on the same line: back up to the start of line + int lineStart = idx; + while (lineStart > 0 && source[lineStart - 1] != '\n' && source[lineStart - 1] != '\r') lineStart--; + + int i = idx; + while (i < source.Length && source[i] != '{') i++; + if (i >= source.Length) { why = "no opening brace after class header"; return false; } + + int depth = 0; bool inStr = false, inChar = false, inSL = false, inML = false, esc = false; + int startSpan = lineStart; + for (; i < source.Length; i++) + { + char c = source[i]; + char n = i + 1 < source.Length ? source[i + 1] : '\0'; + + if (inSL) { if (c == '\n') inSL = false; continue; } + if (inML) { if (c == '*' && n == '/') { inML = false; i++; } continue; } + if (inStr) { if (!esc && c == '"') inStr = false; esc = (!esc && c == '\\'); continue; } + if (inChar) { if (!esc && c == '\'') inChar = false; esc = (!esc && c == '\\'); continue; } + + if (c == '/' && n == '/') { inSL = true; i++; continue; } + if (c == '/' && n == '*') { inML = true; i++; continue; } + if (c == '"') { inStr = true; continue; } + if (c == '\'') { inChar = true; continue; } + + if (c == '{') { depth++; } + else if (c == '}') + { + depth--; + if (depth == 0) { start = startSpan; length = (i - startSpan) + 1; return true; } + if (depth < 0) { why = "brace underflow"; return false; } + } + } + why = "unterminated class block"; return false; + } + + private static bool TryComputeMethodSpan( + string source, + int classStart, + int classLength, + string methodName, + string returnType, + string parametersSignature, + string attributesContains, + out int start, + out int length, + out string why) + { + start = length = 0; why = null; + int searchStart = classStart; + int searchEnd = Math.Min(source.Length, classStart + classLength); + + // 1) Find the method header using a stricter regex (allows optional attributes above) + string rtPattern = string.IsNullOrEmpty(returnType) ? @"[^\s]+" : Regex.Escape(returnType).Replace("\\ ", "\\s+"); + string namePattern = Regex.Escape(methodName); + // If a parametersSignature is provided, it may include surrounding parentheses. Strip them so + // we can safely embed the signature inside our own parenthesis group without duplicating. + string paramsPattern; + if (string.IsNullOrEmpty(parametersSignature)) + { + paramsPattern = @"[\s\S]*?"; // permissive when not specified + } + else + { + string ps = parametersSignature.Trim(); + if (ps.StartsWith("(") && ps.EndsWith(")") && ps.Length >= 2) + { + ps = ps.Substring(1, ps.Length - 2); + } + // Escape literal text of the signature + paramsPattern = Regex.Escape(ps); + } + string pattern = + @"(?m)^[\t ]*(?:\[[^\]]+\][\t ]*)*[\t ]*" + + @"(?:(?:public|private|protected|internal|static|virtual|override|sealed|async|extern|unsafe|new|partial|readonly|volatile|event|abstract|ref|in|out)\s+)*" + + rtPattern + @"[\t ]+" + namePattern + @"\s*(?:<[^>]+>)?\s*\(" + paramsPattern + @"\)"; + + string slice = source.Substring(searchStart, searchEnd - searchStart); + var headerMatch = Regex.Match(slice, pattern, RegexOptions.Multiline, TimeSpan.FromSeconds(2)); + if (!headerMatch.Success) + { + why = $"method '{methodName}' header not found in class"; return false; + } + int headerIndex = searchStart + headerMatch.Index; + + // Optional attributes filter: look upward from headerIndex for contiguous attribute lines + if (!string.IsNullOrEmpty(attributesContains)) + { + int attrScanStart = headerIndex; + while (attrScanStart > searchStart) + { + int prevNl = source.LastIndexOf('\n', attrScanStart - 1); + if (prevNl < 0 || prevNl < searchStart) break; + string prevLine = source.Substring(prevNl + 1, attrScanStart - (prevNl + 1)); + if (prevLine.TrimStart().StartsWith("[")) { attrScanStart = prevNl; continue; } + break; + } + string attrBlock = source.Substring(attrScanStart, headerIndex - attrScanStart); + if (attrBlock.IndexOf(attributesContains, StringComparison.Ordinal) < 0) + { + why = $"method '{methodName}' found but attributes filter did not match"; return false; + } + } + + // backtrack to the very start of header/attributes to include in span + int lineStart = headerIndex; + while (lineStart > searchStart && source[lineStart - 1] != '\n' && source[lineStart - 1] != '\r') lineStart--; + // If previous lines are attributes, include them + int attrStart = lineStart; + int probe = lineStart - 1; + while (probe > searchStart) + { + int prevNl = source.LastIndexOf('\n', probe); + if (prevNl < 0 || prevNl < searchStart) break; + string prev = source.Substring(prevNl + 1, attrStart - (prevNl + 1)); + if (prev.TrimStart().StartsWith("[")) { attrStart = prevNl + 1; probe = prevNl - 1; } + else break; + } + + // 2) Walk from the end of signature to detect body style ('{' or '=> ...;') and compute end + // Find the '(' that belongs to the method signature, not attributes + int nameTokenIdx = IndexOfTokenWithin(source, methodName, headerIndex, searchEnd); + if (nameTokenIdx < 0) { why = $"method '{methodName}' token not found after header"; return false; } + int sigOpenParen = IndexOfTokenWithin(source, "(", nameTokenIdx, searchEnd); + if (sigOpenParen < 0) { why = "method parameter list '(' not found"; return false; } + + int i = sigOpenParen; + int parenDepth = 0; bool inStr = false, inChar = false, inSL = false, inML = false, esc = false; + for (; i < searchEnd; i++) + { + char c = source[i]; + char n = i + 1 < searchEnd ? source[i + 1] : '\0'; + if (inSL) { if (c == '\n') inSL = false; continue; } + if (inML) { if (c == '*' && n == '/') { inML = false; i++; } continue; } + if (inStr) { if (!esc && c == '"') inStr = false; esc = (!esc && c == '\\'); continue; } + if (inChar) { if (!esc && c == '\'') inChar = false; esc = (!esc && c == '\\'); continue; } + + if (c == '/' && n == '/') { inSL = true; i++; continue; } + if (c == '/' && n == '*') { inML = true; i++; continue; } + if (c == '"') { inStr = true; continue; } + if (c == '\'') { inChar = true; continue; } + + if (c == '(') parenDepth++; + if (c == ')') { parenDepth--; if (parenDepth == 0) { i++; break; } } + } + + // After params: detect expression-bodied or block-bodied + // Skip whitespace/comments + for (; i < searchEnd; i++) + { + char c = source[i]; + char n = i + 1 < searchEnd ? source[i + 1] : '\0'; + if (char.IsWhiteSpace(c)) continue; + if (c == '/' && n == '/') { while (i < searchEnd && source[i] != '\n') i++; continue; } + if (c == '/' && n == '*') { i += 2; while (i + 1 < searchEnd && !(source[i] == '*' && source[i + 1] == '/')) i++; i++; continue; } + break; + } + + // Tolerate generic constraints between params and body: multiple 'where T : ...' + for (; ; ) + { + // Skip whitespace/comments before checking for 'where' + for (; i < searchEnd; i++) + { + char c = source[i]; + char n = i + 1 < searchEnd ? source[i + 1] : '\0'; + if (char.IsWhiteSpace(c)) continue; + if (c == '/' && n == '/') { while (i < searchEnd && source[i] != '\n') i++; continue; } + if (c == '/' && n == '*') { i += 2; while (i + 1 < searchEnd && !(source[i] == '*' && source[i + 1] == '/')) i++; i++; continue; } + break; + } + + // Check word-boundary 'where' + bool hasWhere = false; + if (i + 5 <= searchEnd) + { + hasWhere = source[i] == 'w' && source[i + 1] == 'h' && source[i + 2] == 'e' && source[i + 3] == 'r' && source[i + 4] == 'e'; + if (hasWhere) + { + // Left boundary + if (i - 1 >= 0) + { + char lb = source[i - 1]; + if (char.IsLetterOrDigit(lb) || lb == '_') hasWhere = false; + } + // Right boundary + if (hasWhere && i + 5 < searchEnd) + { + char rb = source[i + 5]; + if (char.IsLetterOrDigit(rb) || rb == '_') hasWhere = false; + } + } + } + if (!hasWhere) break; + + // Advance past the entire where-constraint clause until we hit '{' or '=>' or ';' + i += 5; // past 'where' + while (i < searchEnd) + { + char c = source[i]; + char n = i + 1 < searchEnd ? source[i + 1] : '\0'; + if (c == '{' || c == ';' || (c == '=' && n == '>')) break; + // Skip comments inline + if (c == '/' && n == '/') { while (i < searchEnd && source[i] != '\n') i++; continue; } + if (c == '/' && n == '*') { i += 2; while (i + 1 < searchEnd && !(source[i] == '*' && source[i + 1] == '/')) i++; i++; continue; } + i++; + } + } + + // Re-check for expression-bodied after constraints + if (i < searchEnd - 1 && source[i] == '=' && source[i + 1] == '>') + { + // expression-bodied method: seek to terminating semicolon + int j = i; + bool done = false; + while (j < searchEnd) + { + char c = source[j]; + if (c == ';') { done = true; break; } + j++; + } + if (!done) { why = "unterminated expression-bodied method"; return false; } + start = attrStart; length = (j - attrStart) + 1; return true; + } + + if (i >= searchEnd || source[i] != '{') { why = "no opening brace after method signature"; return false; } + + int depth = 0; inStr = false; inChar = false; inSL = false; inML = false; esc = false; + int startSpan = attrStart; + for (; i < searchEnd; i++) + { + char c = source[i]; + char n = i + 1 < searchEnd ? source[i + 1] : '\0'; + if (inSL) { if (c == '\n') inSL = false; continue; } + if (inML) { if (c == '*' && n == '/') { inML = false; i++; } continue; } + if (inStr) { if (!esc && c == '"') inStr = false; esc = (!esc && c == '\\'); continue; } + if (inChar) { if (!esc && c == '\'') inChar = false; esc = (!esc && c == '\\'); continue; } + + if (c == '/' && n == '/') { inSL = true; i++; continue; } + if (c == '/' && n == '*') { inML = true; i++; continue; } + if (c == '"') { inStr = true; continue; } + if (c == '\'') { inChar = true; continue; } + + if (c == '{') depth++; + else if (c == '}') + { + depth--; + if (depth == 0) { start = startSpan; length = (i - startSpan) + 1; return true; } + if (depth < 0) { why = "brace underflow in method"; return false; } + } + } + why = "unterminated method block"; return false; + } + + private static int IndexOfTokenWithin(string s, string token, int start, int end) + { + int idx = s.IndexOf(token, start, StringComparison.Ordinal); + return (idx >= 0 && idx < end) ? idx : -1; + } + + private static bool TryFindClassInsertionPoint(string source, int classStart, int classLength, string position, out int insertAt, out string why) + { + insertAt = 0; why = null; + int searchStart = classStart; + int searchEnd = Math.Min(source.Length, classStart + classLength); + + if (position == "start") + { + // find first '{' after class header, insert just after with a newline + int i = IndexOfTokenWithin(source, "{", searchStart, searchEnd); + if (i < 0) { why = "could not find class opening brace"; return false; } + insertAt = i + 1; return true; + } + else // end + { + // walk to matching closing brace of class and insert just before it + int i = IndexOfTokenWithin(source, "{", searchStart, searchEnd); + if (i < 0) { why = "could not find class opening brace"; return false; } + int depth = 0; bool inStr = false, inChar = false, inSL = false, inML = false, esc = false; + for (; i < searchEnd; i++) + { + char c = source[i]; + char n = i + 1 < searchEnd ? source[i + 1] : '\0'; + if (inSL) { if (c == '\n') inSL = false; continue; } + if (inML) { if (c == '*' && n == '/') { inML = false; i++; } continue; } + if (inStr) { if (!esc && c == '"') inStr = false; esc = (!esc && c == '\\'); continue; } + if (inChar) { if (!esc && c == '\'') inChar = false; esc = (!esc && c == '\\'); continue; } + + if (c == '/' && n == '/') { inSL = true; i++; continue; } + if (c == '/' && n == '*') { inML = true; i++; continue; } + if (c == '"') { inStr = true; continue; } + if (c == '\'') { inChar = true; continue; } + + if (c == '{') depth++; + else if (c == '}') + { + depth--; + if (depth == 0) { insertAt = i; return true; } + if (depth < 0) { why = "brace underflow while scanning class"; return false; } + } + } + why = "could not find class closing brace"; return false; + } + } + + private static int IndexOfClassToken(string s, string className) + { + // simple token search; could be tightened with Regex for word boundaries + var pattern = "class " + className; + return s.IndexOf(pattern, StringComparison.Ordinal); + } + + private static bool AppearsWithinNamespaceHeader(string s, int pos, string ns) + { + int from = Math.Max(0, pos - 2000); + var slice = s.Substring(from, pos - from); + return slice.Contains("namespace " + ns); + } + + /// + /// Generates basic C# script content based on name and type. + /// + private static string GenerateDefaultScriptContent( + string name, + string scriptType, + string namespaceName + ) + { + string usingStatements = "using UnityEngine;\nusing System.Collections;\n"; + string classDeclaration; + string body = + "\n // Use this for initialization\n void Start() {\n\n }\n\n // Update is called once per frame\n void Update() {\n\n }\n"; + + string baseClass = ""; + if (!string.IsNullOrEmpty(scriptType)) + { + if (scriptType.Equals("MonoBehaviour", StringComparison.OrdinalIgnoreCase)) + baseClass = " : MonoBehaviour"; + else if (scriptType.Equals("ScriptableObject", StringComparison.OrdinalIgnoreCase)) + { + baseClass = " : ScriptableObject"; + body = ""; // ScriptableObjects don't usually need Start/Update + } + else if ( + scriptType.Equals("Editor", StringComparison.OrdinalIgnoreCase) + || scriptType.Equals("EditorWindow", StringComparison.OrdinalIgnoreCase) + ) + { + usingStatements += "using UnityEditor;\n"; + if (scriptType.Equals("Editor", StringComparison.OrdinalIgnoreCase)) + baseClass = " : Editor"; + else + baseClass = " : EditorWindow"; + body = ""; // Editor scripts have different structures + } + // Add more types as needed + } + + classDeclaration = $"public class {name}{baseClass}"; + + string fullContent = $"{usingStatements}\n"; + bool useNamespace = !string.IsNullOrEmpty(namespaceName); + + if (useNamespace) + { + fullContent += $"namespace {namespaceName}\n{{\n"; + // Indent class and body if using namespace + classDeclaration = " " + classDeclaration; + body = string.Join("\n", body.Split('\n').Select(line => " " + line)); + } + + fullContent += $"{classDeclaration}\n{{\n{body}\n}}"; + + if (useNamespace) + { + fullContent += "\n}"; // Close namespace + } + + return fullContent.Trim() + "\n"; // Ensure a trailing newline + } + + /// + /// Gets the validation level from the GUI settings + /// + private static ValidationLevel GetValidationLevelFromGUI() + { + int savedLevel = EditorPrefs.GetInt(EditorPrefKeys.ValidationLevel, (int)ValidationLevel.Standard); + return (ValidationLevel)Mathf.Clamp(savedLevel, 0, 3); + } + + /// + /// Validates C# script syntax using multiple validation layers. + /// + private static bool ValidateScriptSyntax(string contents) + { + return ValidateScriptSyntax(contents, ValidationLevel.Standard, out _); + } + + /// + /// Advanced syntax validation with detailed diagnostics and configurable strictness. + /// + private static bool ValidateScriptSyntax(string contents, ValidationLevel level, out string[] errors) + { + var errorList = new System.Collections.Generic.List(); + errors = null; + + if (string.IsNullOrEmpty(contents)) + { + return true; // Empty content is valid + } + + // Basic structural validation + if (!ValidateBasicStructure(contents, errorList)) + { + errors = errorList.ToArray(); + return false; + } + +#if USE_ROSLYN + // Advanced Roslyn-based validation: only run for Standard+; fail on Roslyn errors + if (level >= ValidationLevel.Standard) + { + if (!ValidateScriptSyntaxRoslyn(contents, level, errorList)) + { + errors = errorList.ToArray(); + return false; + } + } +#endif + + // Unity-specific validation + if (level >= ValidationLevel.Standard) + { + ValidateScriptSyntaxUnity(contents, errorList); + } + + // Semantic analysis for common issues + if (level >= ValidationLevel.Comprehensive) + { + ValidateSemanticRules(contents, errorList); + } + +#if USE_ROSLYN + // Full semantic compilation validation for Strict level + if (level == ValidationLevel.Strict) + { + if (!ValidateScriptSemantics(contents, errorList)) + { + errors = errorList.ToArray(); + return false; // Strict level fails on any semantic errors + } + } +#endif + + errors = errorList.ToArray(); + return errorList.Count == 0 || (level != ValidationLevel.Strict && !errorList.Any(e => e.StartsWith("ERROR:"))); + } + + /// + /// Validation strictness levels + /// + private enum ValidationLevel + { + Basic, // Only syntax errors + Standard, // Syntax + Unity best practices + Comprehensive, // All checks + semantic analysis + Strict // Treat all issues as errors + } + + /// + /// Validates basic code structure (braces, quotes, comments) + /// + private static bool ValidateBasicStructure(string contents, System.Collections.Generic.List errors) + { + bool isValid = true; + int braceBalance = 0; + int parenBalance = 0; + int bracketBalance = 0; + bool inStringLiteral = false; + bool inCharLiteral = false; + bool inSingleLineComment = false; + bool inMultiLineComment = false; + bool escaped = false; + + for (int i = 0; i < contents.Length; i++) + { + char c = contents[i]; + char next = i + 1 < contents.Length ? contents[i + 1] : '\0'; + + // Handle escape sequences + if (escaped) + { + escaped = false; + continue; + } + + if (c == '\\' && (inStringLiteral || inCharLiteral)) + { + escaped = true; + continue; + } + + // Handle comments + if (!inStringLiteral && !inCharLiteral) + { + if (c == '/' && next == '/' && !inMultiLineComment) + { + inSingleLineComment = true; + continue; + } + if (c == '/' && next == '*' && !inSingleLineComment) + { + inMultiLineComment = true; + i++; // Skip next character + continue; + } + if (c == '*' && next == '/' && inMultiLineComment) + { + inMultiLineComment = false; + i++; // Skip next character + continue; + } + } + + if (c == '\n') + { + inSingleLineComment = false; + continue; + } + + if (inSingleLineComment || inMultiLineComment) + continue; + + // Handle string and character literals + if (c == '"' && !inCharLiteral) + { + inStringLiteral = !inStringLiteral; + continue; + } + if (c == '\'' && !inStringLiteral) + { + inCharLiteral = !inCharLiteral; + continue; + } + + if (inStringLiteral || inCharLiteral) + continue; + + // Count brackets and braces + switch (c) + { + case '{': braceBalance++; break; + case '}': braceBalance--; break; + case '(': parenBalance++; break; + case ')': parenBalance--; break; + case '[': bracketBalance++; break; + case ']': bracketBalance--; break; + } + + // Check for negative balances (closing without opening) + if (braceBalance < 0) + { + errors.Add("ERROR: Unmatched closing brace '}'"); + isValid = false; + } + if (parenBalance < 0) + { + errors.Add("ERROR: Unmatched closing parenthesis ')'"); + isValid = false; + } + if (bracketBalance < 0) + { + errors.Add("ERROR: Unmatched closing bracket ']'"); + isValid = false; + } + } + + // Check final balances + if (braceBalance != 0) + { + errors.Add($"ERROR: Unbalanced braces (difference: {braceBalance})"); + isValid = false; + } + if (parenBalance != 0) + { + errors.Add($"ERROR: Unbalanced parentheses (difference: {parenBalance})"); + isValid = false; + } + if (bracketBalance != 0) + { + errors.Add($"ERROR: Unbalanced brackets (difference: {bracketBalance})"); + isValid = false; + } + if (inStringLiteral) + { + errors.Add("ERROR: Unterminated string literal"); + isValid = false; + } + if (inCharLiteral) + { + errors.Add("ERROR: Unterminated character literal"); + isValid = false; + } + if (inMultiLineComment) + { + errors.Add("WARNING: Unterminated multi-line comment"); + } + + return isValid; + } + +#if USE_ROSLYN + /// + /// Cached compilation references for performance + /// + private static System.Collections.Generic.List _cachedReferences = null; + private static DateTime _cacheTime = DateTime.MinValue; + private static readonly TimeSpan CacheExpiry = TimeSpan.FromMinutes(5); + + /// + /// Validates syntax using Roslyn compiler services + /// + private static bool ValidateScriptSyntaxRoslyn(string contents, ValidationLevel level, System.Collections.Generic.List errors) + { + try + { + var syntaxTree = CSharpSyntaxTree.ParseText(contents); + var diagnostics = syntaxTree.GetDiagnostics(); + + bool hasErrors = false; + foreach (var diagnostic in diagnostics) + { + string severity = diagnostic.Severity.ToString().ToUpper(); + string message = $"{severity}: {diagnostic.GetMessage()}"; + + if (diagnostic.Severity == DiagnosticSeverity.Error) + { + hasErrors = true; + } + + // Include warnings in comprehensive mode + if (level >= ValidationLevel.Standard || diagnostic.Severity == DiagnosticSeverity.Error) //Also use Standard for now + { + var location = diagnostic.Location.GetLineSpan(); + if (location.IsValid) + { + message += $" (Line {location.StartLinePosition.Line + 1})"; + } + errors.Add(message); + } + } + + return !hasErrors; + } + catch (Exception ex) + { + errors.Add($"ERROR: Roslyn validation failed: {ex.Message}"); + return false; + } + } + + /// + /// Validates script semantics using full compilation context to catch namespace, type, and method resolution errors + /// + private static bool ValidateScriptSemantics(string contents, System.Collections.Generic.List errors) + { + try + { + // Get compilation references with caching + var references = GetCompilationReferences(); + if (references == null || references.Count == 0) + { + errors.Add("WARNING: Could not load compilation references for semantic validation"); + return true; // Don't fail if we can't get references + } + + // Create syntax tree + var syntaxTree = CSharpSyntaxTree.ParseText(contents); + + // Create compilation with full context + var compilation = CSharpCompilation.Create( + "TempValidation", + new[] { syntaxTree }, + references, + new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary) + ); + + // Get semantic diagnostics - this catches all the issues you mentioned! + var diagnostics = compilation.GetDiagnostics(); + + bool hasErrors = false; + foreach (var diagnostic in diagnostics) + { + if (diagnostic.Severity == DiagnosticSeverity.Error) + { + hasErrors = true; + var location = diagnostic.Location.GetLineSpan(); + string locationInfo = location.IsValid ? + $" (Line {location.StartLinePosition.Line + 1}, Column {location.StartLinePosition.Character + 1})" : ""; + + // Include diagnostic ID for better error identification + string diagnosticId = !string.IsNullOrEmpty(diagnostic.Id) ? $" [{diagnostic.Id}]" : ""; + errors.Add($"ERROR: {diagnostic.GetMessage()}{diagnosticId}{locationInfo}"); + } + else if (diagnostic.Severity == DiagnosticSeverity.Warning) + { + var location = diagnostic.Location.GetLineSpan(); + string locationInfo = location.IsValid ? + $" (Line {location.StartLinePosition.Line + 1}, Column {location.StartLinePosition.Character + 1})" : ""; + + string diagnosticId = !string.IsNullOrEmpty(diagnostic.Id) ? $" [{diagnostic.Id}]" : ""; + errors.Add($"WARNING: {diagnostic.GetMessage()}{diagnosticId}{locationInfo}"); + } + } + + return !hasErrors; + } + catch (Exception ex) + { + errors.Add($"ERROR: Semantic validation failed: {ex.Message}"); + return false; + } + } + + /// + /// Gets compilation references with caching for performance + /// + private static System.Collections.Generic.List GetCompilationReferences() + { + // Check cache validity + if (_cachedReferences != null && DateTime.Now - _cacheTime < CacheExpiry) + { + return _cachedReferences; + } + + try + { + var references = new System.Collections.Generic.List(); + + // Core .NET assemblies + references.Add(MetadataReference.CreateFromFile(typeof(object).Assembly.Location)); // mscorlib/System.Private.CoreLib + references.Add(MetadataReference.CreateFromFile(typeof(System.Linq.Enumerable).Assembly.Location)); // System.Linq + references.Add(MetadataReference.CreateFromFile(typeof(System.Collections.Generic.List<>).Assembly.Location)); // System.Collections + + // Unity assemblies + try + { + references.Add(MetadataReference.CreateFromFile(typeof(UnityEngine.Debug).Assembly.Location)); // UnityEngine + } + catch (Exception ex) + { + McpLog.Warn($"Could not load UnityEngine assembly: {ex.Message}"); + } + +#if UNITY_EDITOR + try + { + references.Add(MetadataReference.CreateFromFile(typeof(UnityEditor.Editor).Assembly.Location)); // UnityEditor + } + catch (Exception ex) + { + McpLog.Warn($"Could not load UnityEditor assembly: {ex.Message}"); + } + + // Get Unity project assemblies + try + { + var assemblies = CompilationPipeline.GetAssemblies(); + foreach (var assembly in assemblies) + { + if (File.Exists(assembly.outputPath)) + { + references.Add(MetadataReference.CreateFromFile(assembly.outputPath)); + } + } + } + catch (Exception ex) + { + McpLog.Warn($"Could not load Unity project assemblies: {ex.Message}"); + } +#endif + + // Cache the results + _cachedReferences = references; + _cacheTime = DateTime.Now; + + return references; + } + catch (Exception ex) + { + McpLog.Error($"Failed to get compilation references: {ex.Message}"); + return new System.Collections.Generic.List(); + } + } +#else + private static bool ValidateScriptSyntaxRoslyn(string contents, ValidationLevel level, System.Collections.Generic.List errors) + { + // Fallback when Roslyn is not available + return true; + } +#endif + + /// + /// Validates Unity-specific coding rules and best practices + /// //TODO: Naive Unity Checks and not really yield any results, need to be improved + /// + private static void ValidateScriptSyntaxUnity(string contents, System.Collections.Generic.List errors) + { + // Check for common Unity anti-patterns + if (contents.Contains("FindObjectOfType") && contents.Contains("Update()")) + { + errors.Add("WARNING: FindObjectOfType in Update() can cause performance issues"); + } + + if (contents.Contains("GameObject.Find") && contents.Contains("Update()")) + { + errors.Add("WARNING: GameObject.Find in Update() can cause performance issues"); + } + + // Check for proper MonoBehaviour usage + if (contents.Contains(": MonoBehaviour") && !contents.Contains("using UnityEngine")) + { + errors.Add("WARNING: MonoBehaviour requires 'using UnityEngine;'"); + } + + // Check for SerializeField usage + if (contents.Contains("[SerializeField]") && !contents.Contains("using UnityEngine")) + { + errors.Add("WARNING: SerializeField requires 'using UnityEngine;'"); + } + + // Check for proper coroutine usage + if (contents.Contains("StartCoroutine") && !contents.Contains("IEnumerator")) + { + errors.Add("WARNING: StartCoroutine typically requires IEnumerator methods"); + } + + // Check for Update without FixedUpdate for physics + if (contents.Contains("Rigidbody") && contents.Contains("Update()") && !contents.Contains("FixedUpdate()")) + { + errors.Add("WARNING: Consider using FixedUpdate() for Rigidbody operations"); + } + + // Check for missing null checks on Unity objects + if (contents.Contains("GetComponent<") && !contents.Contains("!= null")) + { + errors.Add("WARNING: Consider null checking GetComponent results"); + } + + // Check for proper event function signatures + if (contents.Contains("void Start(") && !contents.Contains("void Start()")) + { + errors.Add("WARNING: Start() should not have parameters"); + } + + if (contents.Contains("void Update(") && !contents.Contains("void Update()")) + { + errors.Add("WARNING: Update() should not have parameters"); + } + + // Check for inefficient string operations + if (contents.Contains("Update()") && contents.Contains("\"") && contents.Contains("+")) + { + errors.Add("WARNING: String concatenation in Update() can cause garbage collection issues"); + } + } + + /// + /// Validates semantic rules and common coding issues + /// + private static void ValidateSemanticRules(string contents, System.Collections.Generic.List errors) + { + // Check for potential memory leaks + if (contents.Contains("new ") && contents.Contains("Update()")) + { + errors.Add("WARNING: Creating objects in Update() may cause memory issues"); + } + + // Check for magic numbers + var magicNumberPattern = new Regex(@"\b\d+\.?\d*f?\b(?!\s*[;})\]])", RegexOptions.CultureInvariant, TimeSpan.FromSeconds(2)); + var matches = magicNumberPattern.Matches(contents); + if (matches.Count > 5) + { + errors.Add("WARNING: Consider using named constants instead of magic numbers"); + } + + // Check for long methods (simple line count check) + var methodPattern = new Regex(@"(public|private|protected|internal)?\s*(static)?\s*\w+\s+\w+\s*\([^)]*\)\s*{", RegexOptions.CultureInvariant, TimeSpan.FromSeconds(2)); + var methodMatches = methodPattern.Matches(contents); + foreach (Match match in methodMatches) + { + int startIndex = match.Index; + int braceCount = 0; + int lineCount = 0; + bool inMethod = false; + + for (int i = startIndex; i < contents.Length; i++) + { + if (contents[i] == '{') + { + braceCount++; + inMethod = true; + } + else if (contents[i] == '}') + { + braceCount--; + if (braceCount == 0 && inMethod) + break; + } + else if (contents[i] == '\n' && inMethod) + { + lineCount++; + } + } + + if (lineCount > 50) + { + errors.Add("WARNING: Method is very long, consider breaking it into smaller methods"); + break; // Only report once + } + } + + // Check for proper exception handling + if (contents.Contains("catch") && contents.Contains("catch()")) + { + errors.Add("WARNING: Empty catch blocks should be avoided"); + } + + // Check for proper async/await usage + if (contents.Contains("async ") && !contents.Contains("await")) + { + errors.Add("WARNING: Async method should contain await or return Task"); + } + + // Check for hardcoded tags and layers + if (contents.Contains("\"Player\"") || contents.Contains("\"Enemy\"")) + { + errors.Add("WARNING: Consider using constants for tags instead of hardcoded strings"); + } + } + + //TODO: A easier way for users to update incorrect scripts (now duplicated with the updateScript method and need to also update server side, put aside for now) + /// + /// Public method to validate script syntax with configurable validation level + /// Returns detailed validation results including errors and warnings + /// + // public static object ValidateScript(JObject @params) + // { + // string contents = @params["contents"]?.ToString(); + // string validationLevel = @params["validationLevel"]?.ToString() ?? "standard"; + + // if (string.IsNullOrEmpty(contents)) + // { + // return new ErrorResponse("Contents parameter is required for validation."); + // } + + // // Parse validation level + // ValidationLevel level = ValidationLevel.Standard; + // switch (validationLevel.ToLower()) + // { + // case "basic": level = ValidationLevel.Basic; break; + // case "standard": level = ValidationLevel.Standard; break; + // case "comprehensive": level = ValidationLevel.Comprehensive; break; + // case "strict": level = ValidationLevel.Strict; break; + // default: + // return new ErrorResponse($"Invalid validation level: '{validationLevel}'. Valid levels are: basic, standard, comprehensive, strict."); + // } + + // // Perform validation + // bool isValid = ValidateScriptSyntax(contents, level, out string[] validationErrors); + + // var errors = validationErrors?.Where(e => e.StartsWith("ERROR:")).ToArray() ?? new string[0]; + // var warnings = validationErrors?.Where(e => e.StartsWith("WARNING:")).ToArray() ?? new string[0]; + + // var result = new + // { + // isValid = isValid, + // validationLevel = validationLevel, + // errorCount = errors.Length, + // warningCount = warnings.Length, + // errors = errors, + // warnings = warnings, + // summary = isValid + // ? (warnings.Length > 0 ? $"Validation passed with {warnings.Length} warnings" : "Validation passed with no issues") + // : $"Validation failed with {errors.Length} errors and {warnings.Length} warnings" + // }; + + // if (isValid) + // { + // return new SuccessResponse("Script validation completed successfully.", result); + // } + // else + // { + // return new ErrorResponse("Script validation failed.", result); + // } + // } + } + + // Debounced refresh/compile scheduler to coalesce bursts of edits + static class RefreshDebounce + { + private static int _pending; + private static readonly object _lock = new object(); + private static readonly HashSet _paths = new HashSet(StringComparer.OrdinalIgnoreCase); + + // The timestamp of the most recent schedule request. + private static DateTime _lastRequest; + + // Guard to ensure we only have a single ticking callback running. + private static bool _scheduled; + + public static void Schedule(string relPath, TimeSpan window) + { + // Record that work is pending and track the path in a threadsafe way. + Interlocked.Exchange(ref _pending, 1); + lock (_lock) + { + _paths.Add(relPath); + _lastRequest = DateTime.UtcNow; + + // If a debounce timer is already scheduled it will pick up the new request. + if (_scheduled) + return; + + _scheduled = true; + } + + // Kick off a ticking callback that waits until the window has elapsed + // from the last request before performing the refresh. + EditorApplication.delayCall += () => Tick(window); + // Nudge the editor loop so ticks run even if the window is unfocused + EditorApplication.QueuePlayerLoopUpdate(); + } + + private static void Tick(TimeSpan window) + { + bool ready; + lock (_lock) + { + // Only proceed once the debounce window has fully elapsed. + ready = (DateTime.UtcNow - _lastRequest) >= window; + if (ready) + { + _scheduled = false; + } + } + + if (!ready) + { + // Window has not yet elapsed; check again on the next editor tick. + EditorApplication.delayCall += () => Tick(window); + return; + } + + if (Interlocked.Exchange(ref _pending, 0) == 1) + { + string[] toImport; + lock (_lock) { toImport = _paths.ToArray(); _paths.Clear(); } + foreach (var p in toImport) + { + var sp = ManageScriptRefreshHelpers.SanitizeAssetsPath(p); + AssetDatabase.ImportAsset(sp, ImportAssetOptions.ForceUpdate | ImportAssetOptions.ForceSynchronousImport); + } +#if UNITY_EDITOR + UnityEditor.Compilation.CompilationPipeline.RequestScriptCompilation(); +#endif + // Fallback if needed: + // AssetDatabase.Refresh(); + } + } + } + + static class ManageScriptRefreshHelpers + { + public static string SanitizeAssetsPath(string p) + { + if (string.IsNullOrEmpty(p)) return p; + p = AssetPathUtility.NormalizeSeparators(p).Trim(); + if (p.StartsWith("mcpforunity://path/", StringComparison.OrdinalIgnoreCase)) + p = p.Substring("mcpforunity://path/".Length); + while (p.StartsWith("Assets/Assets/", StringComparison.OrdinalIgnoreCase)) + p = p.Substring("Assets/".Length); + if (!p.StartsWith("Assets/", StringComparison.OrdinalIgnoreCase)) + p = "Assets/" + p.TrimStart('/'); + return p; + } + + public static void ScheduleScriptRefresh(string relPath) + { + var sp = SanitizeAssetsPath(relPath); + RefreshDebounce.Schedule(sp, TimeSpan.FromMilliseconds(200)); + } + + public static void ImportAndRequestCompile(string relPath, bool synchronous = true) + { + var sp = SanitizeAssetsPath(relPath); + var opts = ImportAssetOptions.ForceUpdate; + if (synchronous) opts |= ImportAssetOptions.ForceSynchronousImport; + AssetDatabase.ImportAsset(sp, opts); +#if UNITY_EDITOR + UnityEditor.Compilation.CompilationPipeline.RequestScriptCompilation(); +#endif + } + } +} diff --git a/Packages/MCPForUnity/Editor/Tools/ManageScript.cs.meta b/Packages/MCPForUnity/Editor/Tools/ManageScript.cs.meta new file mode 100644 index 00000000..091cfe1c --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/ManageScript.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 626d2d44668019a45ae52e9ee066b7ec +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Tools/ManageScriptableObject.cs b/Packages/MCPForUnity/Editor/Tools/ManageScriptableObject.cs new file mode 100644 index 00000000..62d1c19a --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/ManageScriptableObject.cs @@ -0,0 +1,1522 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text.RegularExpressions; +using MCPForUnity.Editor.Helpers; +using Newtonsoft.Json.Linq; +using UnityEditor; +using UnityEngine; + +namespace MCPForUnity.Editor.Tools +{ + /// + /// Single tool for ScriptableObject workflows: + /// - action=create: create a ScriptableObject asset (and optionally apply patches) + /// - action=modify: apply serialized property patches to an existing asset + /// + /// Patching is performed via SerializedObject/SerializedProperty paths (Unity-native), not reflection. + /// + [McpForUnityTool("manage_scriptable_object", AutoRegister = false)] + public static class ManageScriptableObject + { + private const string CodeCompilingOrReloading = "compiling_or_reloading"; + private const string CodeInvalidParams = "invalid_params"; + private const string CodeTypeNotFound = "type_not_found"; + private const string CodeInvalidFolderPath = "invalid_folder_path"; + private const string CodeTargetNotFound = "target_not_found"; + private const string CodeAssetCreateFailed = "asset_create_failed"; + + private static readonly HashSet ValidActions = new(StringComparer.OrdinalIgnoreCase) + { + // NOTE: Action strings are normalized by NormalizeAction() (lowercased, '_'/'-' removed), + // so we only need the canonical normalized forms here. + "create", + "createso", + "modify", + "modifyso", + }; + + public static object HandleCommand(JObject @params) + { + if (@params == null) + { + return new ErrorResponse(CodeInvalidParams); + } + + if (EditorApplication.isCompiling || EditorApplication.isUpdating) + { + // Unity is transient; treat as retryable on the client side. + return new ErrorResponse(CodeCompilingOrReloading, new { hint = "retry" }); + } + + // Allow JSON-string parameters for objects/arrays. + JsonUtil.CoerceJsonStringParameter(@params, "target"); + CoerceJsonStringArrayParameter(@params, "patches"); + + string actionRaw = @params["action"]?.ToString(); + if (string.IsNullOrWhiteSpace(actionRaw)) + { + return new ErrorResponse(CodeInvalidParams, new { message = "'action' is required.", validActions = ValidActions.ToArray() }); + } + + string action = NormalizeAction(actionRaw); + if (!ValidActions.Contains(action)) + { + return new ErrorResponse(CodeInvalidParams, new { message = $"Unknown action: '{actionRaw}'.", validActions = ValidActions.ToArray() }); + } + + if (IsCreateAction(action)) + { + return HandleCreate(@params); + } + + return HandleModify(@params); + } + + private static object HandleCreate(JObject @params) + { + string typeName = @params["typeName"]?.ToString() ?? @params["type_name"]?.ToString(); + string folderPath = @params["folderPath"]?.ToString() ?? @params["folder_path"]?.ToString(); + string assetName = @params["assetName"]?.ToString() ?? @params["asset_name"]?.ToString(); + bool overwrite = @params["overwrite"]?.ToObject() ?? false; + + if (string.IsNullOrWhiteSpace(typeName)) + { + return new ErrorResponse(CodeInvalidParams, new { message = "'typeName' is required." }); + } + + if (string.IsNullOrWhiteSpace(folderPath)) + { + return new ErrorResponse(CodeInvalidParams, new { message = "'folderPath' is required." }); + } + + if (string.IsNullOrWhiteSpace(assetName)) + { + return new ErrorResponse(CodeInvalidParams, new { message = "'assetName' is required." }); + } + + if (assetName.Contains("/") || assetName.Contains("\\")) + { + return new ErrorResponse(CodeInvalidParams, new { message = "'assetName' must not contain path separators." }); + } + + if (!TryNormalizeFolderPath(folderPath, out var normalizedFolder, out var folderNormalizeError)) + { + return new ErrorResponse(CodeInvalidFolderPath, new { message = folderNormalizeError, folderPath }); + } + + if (!EnsureFolderExists(normalizedFolder, out var folderError)) + { + return new ErrorResponse(CodeInvalidFolderPath, new { message = folderError, folderPath = normalizedFolder }); + } + + var resolvedType = ResolveType(typeName); + if (resolvedType == null || !typeof(ScriptableObject).IsAssignableFrom(resolvedType)) + { + return new ErrorResponse(CodeTypeNotFound, new { message = $"ScriptableObject type not found: '{typeName}'", typeName }); + } + + string fileName = assetName.EndsWith(".asset", StringComparison.OrdinalIgnoreCase) + ? assetName + : assetName + ".asset"; + string desiredPath = $"{normalizedFolder.TrimEnd('/')}/{fileName}"; + string finalPath = overwrite ? desiredPath : AssetDatabase.GenerateUniqueAssetPath(desiredPath); + + ScriptableObject instance; + try + { + instance = ScriptableObject.CreateInstance(resolvedType); + if (instance == null) + { + return new ErrorResponse(CodeAssetCreateFailed, new { message = "CreateInstance returned null.", typeName = resolvedType.FullName }); + } + } + catch (Exception ex) + { + return new ErrorResponse(CodeAssetCreateFailed, new { message = ex.Message, typeName = resolvedType.FullName }); + } + + // GUID-preserving overwrite logic + bool isNewAsset = true; + try + { + if (overwrite) + { + var existingAsset = AssetDatabase.LoadAssetAtPath(finalPath); + if (existingAsset != null && existingAsset.GetType() == resolvedType) + { + // Preserve GUID by overwriting existing asset data in-place + EditorUtility.CopySerialized(instance, existingAsset); + + // Fix for "Main Object Name does not match filename" warning: + // CopySerialized overwrites the name with the (empty) name of the new instance. + // We must restore the correct name to match the filename. + existingAsset.name = Path.GetFileNameWithoutExtension(finalPath); + + UnityEngine.Object.DestroyImmediate(instance); // Destroy temporary instance + instance = existingAsset; // Proceed with patching the existing asset + isNewAsset = false; + + // Mark dirty to ensure changes are picked up + EditorUtility.SetDirty(instance); + } + else if (existingAsset != null) + { + // Type mismatch or not a ScriptableObject - must delete and recreate to change type, losing GUID + // (Or we could warn, but overwrite usually implies replacing) + AssetDatabase.DeleteAsset(finalPath); + } + } + + if (isNewAsset) + { + // Ensure the new instance has the correct name before creating asset to avoid warnings + instance.name = Path.GetFileNameWithoutExtension(finalPath); + AssetDatabase.CreateAsset(instance, finalPath); + } + } + catch (Exception ex) + { + return new ErrorResponse(CodeAssetCreateFailed, new { message = ex.Message, path = finalPath }); + } + + string guid = AssetDatabase.AssetPathToGUID(finalPath); + var patchesToken = @params["patches"]; + object patchResults = null; + var warnings = new List(); + + if (patchesToken is JArray patches && patches.Count > 0) + { + var patchApply = ApplyPatches(instance, patches); + patchResults = patchApply.results; + warnings.AddRange(patchApply.warnings); + } + + EditorUtility.SetDirty(instance); + AssetDatabase.SaveAssets(); + + return new SuccessResponse( + "ScriptableObject created.", + new + { + guid, + path = finalPath, + typeNameResolved = resolvedType.FullName, + patchResults, + warnings = warnings.Count > 0 ? warnings : null + } + ); + } + + private static object HandleModify(JObject @params) + { + if (!TryResolveTarget(@params["target"], out var target, out var targetPath, out var targetGuid, out var err)) + { + return err; + } + + var patchesToken = @params["patches"]; + if (patchesToken == null || patchesToken.Type == JTokenType.Null) + { + return new ErrorResponse(CodeInvalidParams, new { message = "'patches' is required.", targetPath, targetGuid }); + } + + if (patchesToken is not JArray patches) + { + return new ErrorResponse(CodeInvalidParams, new { message = "'patches' must be an array.", targetPath, targetGuid }); + } + + // Phase 5: Dry-run mode - validate patches without applying + bool dryRun = @params["dryRun"]?.ToObject() ?? @params["dry_run"]?.ToObject() ?? false; + + if (dryRun) + { + var validationResults = ValidatePatches(target, patches); + return new SuccessResponse( + "Dry-run validation complete.", + new + { + targetGuid, + targetPath, + targetTypeName = target.GetType().FullName, + dryRun = true, + valid = validationResults.All(r => (bool)r.GetType().GetProperty("ok")?.GetValue(r)), + validationResults + } + ); + } + + var (results, warnings) = ApplyPatches(target, patches); + + return new SuccessResponse( + "Serialized properties patched.", + new + { + targetGuid, + targetPath, + targetTypeName = target.GetType().FullName, + results, + warnings = warnings.Count > 0 ? warnings : null + } + ); + } + + /// + /// Validates patches without applying them (for dry-run mode). + /// Checks that property paths exist and that value types are compatible. + /// + private static List ValidatePatches(UnityEngine.Object target, JArray patches) + { + var results = new List(patches.Count); + var so = new SerializedObject(target); + so.Update(); + + for (int i = 0; i < patches.Count; i++) + { + if (patches[i] is not JObject patchObj) + { + results.Add(new { index = i, propertyPath = "", op = "", ok = false, message = $"Patch at index {i} must be an object." }); + continue; + } + + string propertyPath = patchObj["propertyPath"]?.ToString() + ?? patchObj["property_path"]?.ToString() + ?? patchObj["path"]?.ToString(); + string op = (patchObj["op"]?.ToString() ?? "set").Trim(); + + if (string.IsNullOrWhiteSpace(propertyPath)) + { + results.Add(new { index = i, propertyPath = propertyPath ?? "", op, ok = false, message = "Missing required field: propertyPath" }); + continue; + } + + // Normalize the path + string normalizedPath = NormalizePropertyPath(propertyPath); + string normalizedOp = op.ToLowerInvariant(); + + // For array_resize, check if the array exists + if (normalizedOp == "array_resize") + { + var valueToken = patchObj["value"]; + if (valueToken == null || valueToken.Type == JTokenType.Null) + { + results.Add(new { index = i, propertyPath = normalizedPath, op, ok = false, message = "array_resize requires integer 'value'." }); + continue; + } + + int size = ParamCoercion.CoerceInt(valueToken, -1); + if (size < 0) + { + results.Add(new { index = i, propertyPath = normalizedPath, op, ok = false, message = "array_resize requires non-negative integer 'value'." }); + continue; + } + + // Check if the array path exists + string arrayPath = normalizedPath; + if (arrayPath.EndsWith(".Array.size", StringComparison.Ordinal)) + { + arrayPath = arrayPath.Substring(0, arrayPath.Length - ".Array.size".Length); + } + + var arrayProp = so.FindProperty(arrayPath); + if (arrayProp == null) + { + results.Add(new { index = i, propertyPath = normalizedPath, op, ok = false, message = $"Array not found: {arrayPath}" }); + continue; + } + + if (!arrayProp.isArray) + { + results.Add(new { index = i, propertyPath = normalizedPath, op, ok = false, message = $"Property is not an array: {arrayPath}" }); + continue; + } + + results.Add(new { index = i, propertyPath = normalizedPath, op, ok = true, message = $"Will resize to {size}.", currentSize = arrayProp.arraySize }); + continue; + } + + // For set operations, check if the property exists (or can be auto-grown) + var prop = so.FindProperty(normalizedPath); + + // Check if it's an auto-growable array element path + bool isAutoGrowable = false; + if (prop == null) + { + var match = Regex.Match(normalizedPath, @"^(.+?)\.Array\.data\[(\d+)\]"); + if (match.Success) + { + string arrayPath = match.Groups[1].Value; + var arrayProp = so.FindProperty(arrayPath); + if (arrayProp != null && arrayProp.isArray) + { + isAutoGrowable = true; + // Get the element type info from existing elements or report as growable + int targetIndex = int.Parse(match.Groups[2].Value); + if (arrayProp.arraySize > 0) + { + var sampleElement = arrayProp.GetArrayElementAtIndex(0); + results.Add(new { + index = i, + propertyPath = normalizedPath, + op, + ok = true, + message = $"Will auto-grow array from {arrayProp.arraySize} to {targetIndex + 1}.", + elementType = sampleElement?.propertyType.ToString() ?? "unknown" + }); + } + else + { + results.Add(new { + index = i, + propertyPath = normalizedPath, + op, + ok = true, + message = $"Will auto-grow empty array to size {targetIndex + 1}." + }); + } + continue; + } + } + } + + if (prop == null && !isAutoGrowable) + { + results.Add(new { index = i, propertyPath = normalizedPath, op, ok = false, message = $"Property not found: {normalizedPath}" }); + continue; + } + + if (prop != null) + { + // Property exists - validate value format for supported complex types + var valueToken = patchObj["value"]; + string valueValidationMsg = null; + bool valueFormatOk = true; + + // Enhanced dry-run: validate value format for AnimationCurve and Quaternion + // Uses shared validators from VectorParsing + if (valueToken != null && valueToken.Type != JTokenType.Null) + { + switch (prop.propertyType) + { + case SerializedPropertyType.AnimationCurve: + valueFormatOk = VectorParsing.ValidateAnimationCurveFormat(valueToken, out valueValidationMsg); + break; + case SerializedPropertyType.Quaternion: + valueFormatOk = VectorParsing.ValidateQuaternionFormat(valueToken, out valueValidationMsg); + break; + } + } + + if (valueFormatOk) + { + results.Add(new { + index = i, + propertyPath = normalizedPath, + op, + ok = true, + message = valueValidationMsg ?? "Property found.", + propertyType = prop.propertyType.ToString(), + isArray = prop.isArray + }); + } + else + { + results.Add(new { + index = i, + propertyPath = normalizedPath, + op, + ok = false, + message = valueValidationMsg, + propertyType = prop.propertyType.ToString(), + isArray = prop.isArray + }); + } + } + } + + return results; + } + + private static (List results, List warnings) ApplyPatches(UnityEngine.Object target, JArray patches) + { + var warnings = new List(); + var results = new List(patches.Count); + bool anyChanged = false; + + var so = new SerializedObject(target); + so.Update(); + + for (int i = 0; i < patches.Count; i++) + { + if (patches[i] is not JObject patchObj) + { + results.Add(new { propertyPath = "", op = "", ok = false, message = $"Patch at index {i} must be an object." }); + continue; + } + + string propertyPath = patchObj["propertyPath"]?.ToString() + ?? patchObj["property_path"]?.ToString() + ?? patchObj["path"]?.ToString(); + string op = (patchObj["op"]?.ToString() ?? "set").Trim(); + if (string.IsNullOrWhiteSpace(propertyPath)) + { + results.Add(new { propertyPath = propertyPath ?? "", op, ok = false, message = "Missing required field: propertyPath" }); + continue; + } + + if (string.IsNullOrWhiteSpace(op)) + { + op = "set"; + } + + var patchResult = ApplyPatch(so, propertyPath, op, patchObj, out bool changed); + anyChanged |= changed; + results.Add(patchResult); + + // Array resize should be applied immediately so later paths resolve. + if (string.Equals(op, "array_resize", StringComparison.OrdinalIgnoreCase) && changed) + { + so.ApplyModifiedProperties(); + so.Update(); + } + } + + if (anyChanged) + { + so.ApplyModifiedProperties(); + EditorUtility.SetDirty(target); + AssetDatabase.SaveAssets(); + } + + return (results, warnings); + } + + private static object ApplyPatch(SerializedObject so, string propertyPath, string op, JObject patchObj, out bool changed) + { + changed = false; + try + { + // Phase 1.1: Normalize friendly path syntax (e.g., myList[5] → myList.Array.data[5]) + string normalizedPath = NormalizePropertyPath(propertyPath); + string normalizedOp = op.Trim().ToLowerInvariant(); + + switch (normalizedOp) + { + case "array_resize": + return ApplyArrayResize(so, normalizedPath, patchObj, out changed); + case "set": + default: + return ApplySet(so, normalizedPath, patchObj, out changed); + } + } + catch (Exception ex) + { + return new { propertyPath, op, ok = false, message = ex.Message }; + } + } + + /// + /// Normalizes friendly property path syntax to Unity's internal format. + /// Converts bracket notation (e.g., myList[5]) to Unity's Array.data format (myList.Array.data[5]). + /// + private static string NormalizePropertyPath(string path) + { + if (string.IsNullOrEmpty(path)) + return path; + + // Pattern: word[number] where it's not already in .Array.data[number] format + // We need to handle cases like: myList[5], nested.list[0].field, etc. + // But NOT: myList.Array.data[5] (already in Unity format) + + // Replace fieldName[index] with fieldName.Array.data[index] + // But only if it's not already in Array.data format + return Regex.Replace(path, @"(\w+)\[(\d+)\]", m => + { + string fieldName = m.Groups[1].Value; + string index = m.Groups[2].Value; + + // Check if this match is already part of .Array.data[index] pattern + // by checking if the text immediately before the field name is ".Array." + // and the field name is "data" + int matchStart = m.Index; + if (fieldName == "data" && matchStart >= 7) // Length of ".Array." + { + string preceding = path.Substring(matchStart - 7, 7); + if (preceding == ".Array.") + { + // Already in Unity format (e.g., myList.Array.data[0]), return as-is + return m.Value; + } + } + + return $"{fieldName}.Array.data[{index}]"; + }); + } + + /// + /// Ensures an array has sufficient capacity for the given index. + /// Automatically resizes the array if the target index is beyond current bounds. + /// + /// The SerializedObject containing the array + /// The normalized property path (must be in Array.data format) + /// True if the array was resized + /// True if the path is valid for setting, false if it cannot be resolved + private static bool EnsureArrayCapacity(SerializedObject so, string path, out bool resized) + { + resized = false; + + // Match pattern: something.Array.data[N] + var match = Regex.Match(path, @"^(.+?)\.Array\.data\[(\d+)\]"); + if (!match.Success) + { + // Not an array element path, nothing to do + return true; + } + + string arrayPath = match.Groups[1].Value; + if (!int.TryParse(match.Groups[2].Value, out int targetIndex)) + { + return false; + } + + var arrayProp = so.FindProperty(arrayPath); + if (arrayProp == null || !arrayProp.isArray) + { + // Array property not found or not an array + return false; + } + + if (arrayProp.arraySize <= targetIndex) + { + // Need to grow the array + arrayProp.arraySize = targetIndex + 1; + so.ApplyModifiedProperties(); + so.Update(); + resized = true; + } + + return true; + } + + private static object ApplyArrayResize(SerializedObject so, string propertyPath, JObject patchObj, out bool changed) + { + changed = false; + + // Use ParamCoercion for robust int parsing + var valueToken = patchObj["value"]; + if (valueToken == null || valueToken.Type == JTokenType.Null) + { + return new { propertyPath, op = "array_resize", ok = false, message = "array_resize requires integer 'value'." }; + } + + int newSize = ParamCoercion.CoerceInt(valueToken, -1); + if (newSize < 0) + { + return new { propertyPath, op = "array_resize", ok = false, message = "array_resize requires integer 'value'." }; + } + + newSize = Math.Max(0, newSize); + + // Unity supports resizing either: + // - the array/list property itself (prop.isArray -> prop.arraySize) + // - the synthetic leaf property ".Array.size" (prop.intValue) + // + // Different Unity versions/serialization edge cases can fail to resolve the synthetic leaf via FindProperty + // (or can return different property types), so we keep a "best-effort" fallback: + // - Prefer acting on the requested path if it resolves. + // - If the requested path doesn't resolve, try to resolve the *array property* and set arraySize directly. + SerializedProperty prop = so.FindProperty(propertyPath); + SerializedProperty arrayProp = null; + if (propertyPath.EndsWith(".Array.size", StringComparison.Ordinal)) + { + // Caller explicitly targeted the synthetic leaf. Resolve the parent array property as a fallback + // (Unity sometimes fails to resolve the synthetic leaf in certain serialization contexts). + var arrayPath = propertyPath.Substring(0, propertyPath.Length - ".Array.size".Length); + arrayProp = so.FindProperty(arrayPath); + } + else + { + // Caller targeted either the array property itself (e.g., "items") or some other property. + // If it's already an array, we can resize it directly. Otherwise, we attempt to resolve + // a synthetic ".Array.size" leaf as a convenience, which some clients may pass. + arrayProp = prop != null && prop.isArray ? prop : so.FindProperty(propertyPath + ".Array.size"); + } + + if (prop == null) + { + // If we failed to find the direct property but we *can* find the array property, use that. + if (arrayProp != null && arrayProp.isArray) + { + if (arrayProp.arraySize != newSize) + { + arrayProp.arraySize = newSize; + changed = true; + } + return new + { + propertyPath, + op = "array_resize", + ok = true, + resolvedPropertyType = "Array", + message = $"Set array size to {newSize}." + }; + } + + return new { propertyPath, op = "array_resize", ok = false, message = $"Property not found: {propertyPath}" }; + } + + // Unity may represent ".Array.size" as either Integer or ArraySize depending on version. + if ((prop.propertyType == SerializedPropertyType.Integer || prop.propertyType == SerializedPropertyType.ArraySize) + && propertyPath.EndsWith(".Array.size", StringComparison.Ordinal)) + { + // We successfully resolved the synthetic leaf; write the size through its intValue. + if (prop.intValue != newSize) + { + prop.intValue = newSize; + changed = true; + } + return new { propertyPath, op = "array_resize", ok = true, resolvedPropertyType = prop.propertyType.ToString(), message = $"Set array size to {newSize}." }; + } + + if (prop.isArray) + { + // We resolved the array property itself; write through arraySize. + if (prop.arraySize != newSize) + { + prop.arraySize = newSize; + changed = true; + } + return new { propertyPath, op = "array_resize", ok = true, resolvedPropertyType = "Array", message = $"Set array size to {newSize}." }; + } + + return new { propertyPath, op = "array_resize", ok = false, resolvedPropertyType = prop.propertyType.ToString(), message = $"Property is not an array or array-size field: {propertyPath}" }; + } + + private static object ApplySet(SerializedObject so, string propertyPath, JObject patchObj, out bool changed) + { + changed = false; + + // Phase 1.2: Auto-resize arrays if targeting an index beyond current bounds + if (!EnsureArrayCapacity(so, propertyPath, out bool arrayResized)) + { + // Could not resolve the array path - try to find the property anyway for a better error message + var checkProp = so.FindProperty(propertyPath); + if (checkProp == null) + { + // Try to provide helpful context about what went wrong + var arrayMatch = Regex.Match(propertyPath, @"^(.+?)\.Array\.data\[(\d+)\]"); + if (arrayMatch.Success) + { + string arrayPath = arrayMatch.Groups[1].Value; + var arrayProp = so.FindProperty(arrayPath); + if (arrayProp == null) + { + return new { propertyPath, op = "set", ok = false, message = $"Array property not found: {arrayPath}" }; + } + if (!arrayProp.isArray) + { + return new { propertyPath, op = "set", ok = false, message = $"Property is not an array: {arrayPath}" }; + } + } + return new { propertyPath, op = "set", ok = false, message = $"Property not found: {propertyPath}" }; + } + } + + var prop = so.FindProperty(propertyPath); + if (prop == null) + { + return new { propertyPath, op = "set", ok = false, message = $"Property not found: {propertyPath}" }; + } + + // Track if we resized - this counts as a change + if (arrayResized) + { + changed = true; + } + + if (prop.propertyType == SerializedPropertyType.ObjectReference) + { + var refObj = patchObj["ref"] as JObject; + var objRefValue = patchObj["value"]; + UnityEngine.Object newRef = null; + string refGuid = refObj?["guid"]?.ToString(); + string refPath = refObj?["path"]?.ToString(); + string resolveMethod = "explicit"; + + if (refObj == null && objRefValue?.Type == JTokenType.Null) + { + // Explicit null - clear the reference + newRef = null; + resolveMethod = "cleared"; + } + else if (!string.IsNullOrEmpty(refGuid) || !string.IsNullOrEmpty(refPath)) + { + // Traditional ref object with guid or path + string resolvedPath = !string.IsNullOrEmpty(refGuid) + ? AssetDatabase.GUIDToAssetPath(refGuid) + : AssetPathUtility.SanitizeAssetPath(refPath); + + if (!string.IsNullOrEmpty(resolvedPath)) + { + newRef = AssetDatabase.LoadAssetAtPath(resolvedPath); + } + resolveMethod = !string.IsNullOrEmpty(refGuid) ? "ref.guid" : "ref.path"; + } + else if (objRefValue?.Type == JTokenType.String) + { + // Phase 4: GUID shorthand - allow plain string value + string strVal = objRefValue.ToString(); + + // Check if it's a GUID (32 hex characters, no dashes) + if (Regex.IsMatch(strVal, @"^[0-9a-fA-F]{32}$")) + { + string guidPath = AssetDatabase.GUIDToAssetPath(strVal); + if (!string.IsNullOrEmpty(guidPath)) + { + newRef = AssetDatabase.LoadAssetAtPath(guidPath); + resolveMethod = "guid-shorthand"; + } + } + // Check if it looks like an asset path + else if (strVal.StartsWith("Assets/", StringComparison.OrdinalIgnoreCase) || + strVal.Contains("/")) + { + string sanitizedPath = AssetPathUtility.SanitizeAssetPath(strVal); + newRef = AssetDatabase.LoadAssetAtPath(sanitizedPath); + resolveMethod = "path-shorthand"; + } + } + + if (prop.objectReferenceValue != newRef) + { + prop.objectReferenceValue = newRef; + changed = true; + } + + string refMessage = newRef == null ? "Cleared reference." : $"Set reference ({resolveMethod})."; + return new { propertyPath, op = "set", ok = true, resolvedPropertyType = prop.propertyType.ToString(), message = refMessage }; + } + + var valueToken = patchObj["value"]; + if (valueToken == null) + { + return new { propertyPath, op = "set", ok = false, resolvedPropertyType = prop.propertyType.ToString(), message = "Missing required field: value" }; + } + + bool ok = TrySetValue(prop, valueToken, out string message); + changed = ok; + return new { propertyPath, op = "set", ok, resolvedPropertyType = prop.propertyType.ToString(), message }; + } + + private static bool TrySetValue(SerializedProperty prop, JToken valueToken, out string message) + { + return TrySetValueRecursive(prop, valueToken, out message, 0); + } + + /// + /// Recursively sets values on SerializedProperties, supporting bulk array and object mapping. + /// + /// The property to set + /// The JSON value + /// Output message describing the result + /// Current recursion depth (for safety limits) + private static bool TrySetValueRecursive(SerializedProperty prop, JToken valueToken, out string message, int depth) + { + message = null; + const int MaxRecursionDepth = 20; + + if (depth > MaxRecursionDepth) + { + message = $"Maximum recursion depth ({MaxRecursionDepth}) exceeded. Check for circular references."; + return false; + } + + try + { + // Phase 3.1: Handle bulk array mapping - JArray value for array/list properties + if (prop.isArray && prop.propertyType != SerializedPropertyType.String && valueToken is JArray jArray) + { + // Resize the array to match the JSON array + prop.arraySize = jArray.Count; + + // Get the SerializedObject and apply so we can access elements + var so = prop.serializedObject; + so.ApplyModifiedProperties(); + so.Update(); + + int successCount = 0; + var errors = new List(); + + for (int i = 0; i < jArray.Count; i++) + { + var elementProp = prop.GetArrayElementAtIndex(i); + if (elementProp == null) + { + errors.Add($"Could not get element at index {i}"); + continue; + } + + if (TrySetValueRecursive(elementProp, jArray[i], out string elemMessage, depth + 1)) + { + successCount++; + } + else + { + errors.Add($"[{i}]: {elemMessage}"); + } + } + + so.ApplyModifiedProperties(); + + if (errors.Count > 0) + { + message = $"Set {successCount}/{jArray.Count} elements. Errors: {string.Join("; ", errors)}"; + return successCount > 0; // Partial success + } + + message = $"Set array with {jArray.Count} elements."; + return true; + } + + // Phase 3.2: Handle bulk object mapping - JObject value for Generic (struct/class) properties + if (prop.propertyType == SerializedPropertyType.Generic && !prop.isArray && valueToken is JObject jObj) + { + int successCount = 0; + var errors = new List(); + var so = prop.serializedObject; + + foreach (var kvp in jObj) + { + string childPath = prop.propertyPath + "." + kvp.Key; + var childProp = so.FindProperty(childPath); + + if (childProp == null) + { + errors.Add($"Property not found: {kvp.Key}"); + continue; + } + + if (TrySetValueRecursive(childProp, kvp.Value, out string childMessage, depth + 1)) + { + successCount++; + } + else + { + errors.Add($"{kvp.Key}: {childMessage}"); + } + } + + so.ApplyModifiedProperties(); + + if (errors.Count > 0) + { + message = $"Set {successCount}/{jObj.Count} fields. Errors: {string.Join("; ", errors)}"; + return successCount > 0; // Partial success + } + + message = $"Set struct/class with {jObj.Count} fields."; + return true; + } + + // Supported Types: Integer, Boolean, Float, String, Enum, Vector2, Vector3, Vector4, Color + // Using shared helpers from ParamCoercion and VectorParsing + switch (prop.propertyType) + { + case SerializedPropertyType.Integer: + // Use ParamCoercion for robust int parsing + int intVal = ParamCoercion.CoerceInt(valueToken, int.MinValue); + if (intVal == int.MinValue && valueToken?.Type != JTokenType.Integer) + { + // Double-check: if it's actually int.MinValue or failed to parse + if (valueToken == null || valueToken.Type == JTokenType.Null || + (valueToken.Type == JTokenType.String && !int.TryParse(valueToken.ToString(), out _))) + { + message = "Expected integer value."; + return false; + } + } + prop.intValue = intVal; + message = "Set int."; + return true; + + case SerializedPropertyType.Boolean: + // Use ParamCoercion for robust bool parsing (handles "true", "1", "yes", etc.) + if (valueToken == null || valueToken.Type == JTokenType.Null) + { + message = "Expected boolean value."; + return false; + } + bool boolVal = ParamCoercion.CoerceBool(valueToken, false); + // Verify it actually looked like a bool + if (valueToken.Type != JTokenType.Boolean) + { + string strVal = valueToken.ToString().Trim().ToLowerInvariant(); + if (strVal != "true" && strVal != "false" && strVal != "1" && strVal != "0" && + strVal != "yes" && strVal != "no" && strVal != "on" && strVal != "off") + { + message = "Expected boolean value."; + return false; + } + } + prop.boolValue = boolVal; + message = "Set bool."; + return true; + + case SerializedPropertyType.Float: + // Use ParamCoercion for robust float parsing + float floatVal = ParamCoercion.CoerceFloat(valueToken, float.NaN); + if (float.IsNaN(floatVal)) + { + message = "Expected float value."; + return false; + } + prop.floatValue = floatVal; + message = "Set float."; + return true; + + case SerializedPropertyType.String: + prop.stringValue = valueToken.Type == JTokenType.Null ? null : valueToken.ToString(); + message = "Set string."; + return true; + + case SerializedPropertyType.Enum: + return TrySetEnum(prop, valueToken, out message); + + case SerializedPropertyType.Vector2: + // Use VectorParsing for Vector2 + var v2 = VectorParsing.ParseVector2(valueToken); + if (v2 == null) + { + message = "Expected Vector2 (array or object)."; + return false; + } + prop.vector2Value = v2.Value; + message = "Set Vector2."; + return true; + + case SerializedPropertyType.Vector3: + // Use VectorParsing for Vector3 + var v3 = VectorParsing.ParseVector3(valueToken); + if (v3 == null) + { + message = "Expected Vector3 (array or object)."; + return false; + } + prop.vector3Value = v3.Value; + message = "Set Vector3."; + return true; + + case SerializedPropertyType.Vector4: + // Use VectorParsing for Vector4 + var v4 = VectorParsing.ParseVector4(valueToken); + if (v4 == null) + { + message = "Expected Vector4 (array or object)."; + return false; + } + prop.vector4Value = v4.Value; + message = "Set Vector4."; + return true; + + case SerializedPropertyType.Color: + // Use VectorParsing for Color + var col = VectorParsing.ParseColor(valueToken); + if (col == null) + { + message = "Expected Color (array or object)."; + return false; + } + prop.colorValue = col.Value; + message = "Set Color."; + return true; + + case SerializedPropertyType.AnimationCurve: + return TrySetAnimationCurve(prop, valueToken, out message); + + case SerializedPropertyType.Quaternion: + return TrySetQuaternion(prop, valueToken, out message); + + case SerializedPropertyType.Generic: + // Generic properties (structs/classes) should be handled above with JObject mapping + // If we get here, the value wasn't a JObject + if (prop.isArray) + { + message = $"Expected array (JArray) for array property, got {valueToken?.Type.ToString() ?? "null"}."; + } + else + { + message = $"Expected object (JObject) for struct/class property, got {valueToken?.Type.ToString() ?? "null"}."; + } + return false; + + default: + message = $"Unsupported SerializedPropertyType: {prop.propertyType}. " + + "This type cannot be set via MCP patches. Consider editing the .asset file directly " + + "or using Unity's Inspector. For complex types, check if there's a supported alternative format."; + return false; + } + } + catch (Exception ex) + { + message = ex.Message; + return false; + } + } + + private static bool TrySetEnum(SerializedProperty prop, JToken valueToken, out string message) + { + message = null; + var names = prop.enumNames; + if (names == null || names.Length == 0) { message = "Enum has no names."; return false; } + + if (valueToken.Type == JTokenType.Integer) + { + int idx = valueToken.Value(); + if (idx < 0 || idx >= names.Length) { message = $"Enum index out of range: {idx}"; return false; } + prop.enumValueIndex = idx; message = "Set enum."; return true; + } + + string s = valueToken.ToString(); + for (int i = 0; i < names.Length; i++) + { + if (string.Equals(names[i], s, StringComparison.OrdinalIgnoreCase)) + { + prop.enumValueIndex = i; message = "Set enum."; return true; + } + } + message = $"Unknown enum name '{s}'."; + return false; + } + + /// + /// Sets an AnimationCurve property from a JSON structure. + /// + /// Supported formats: + /// + /// Wrapped: { "keys": [ { "time": 0, "value": 1.0 }, ... ] } + /// Direct array: [ { "time": 0, "value": 1.0 }, ... ] + /// Null/empty: Sets an empty AnimationCurve + /// + /// + /// Keyframe fields: + /// + /// time (float): Keyframe time position. Default: 0 + /// value (float): Keyframe value. Default: 0 + /// inSlope or inTangent (float): Incoming tangent slope. Default: 0 + /// outSlope or outTangent (float): Outgoing tangent slope. Default: 0 + /// weightedMode (int): Weighted mode enum (0=None, 1=In, 2=Out, 3=Both). Default: 0 (None) + /// inWeight (float): Incoming tangent weight. Default: 0 + /// outWeight (float): Outgoing tangent weight. Default: 0 + /// + /// + /// Note: All keyframe fields are optional. Missing fields gracefully default to 0, + /// which produces linear interpolation when both tangents are 0. + /// + /// The SerializedProperty of type AnimationCurve to set + /// JSON token containing the curve data + /// Output message describing the result + /// True if successful, false if the format is invalid + private static bool TrySetAnimationCurve(SerializedProperty prop, JToken valueToken, out string message) + { + message = null; + + if (valueToken == null || valueToken.Type == JTokenType.Null) + { + // Set to empty curve + prop.animationCurveValue = new AnimationCurve(); + message = "Set AnimationCurve to empty."; + return true; + } + + JArray keysArray = null; + + // Accept either { "keys": [...] } or just [...] + if (valueToken is JObject curveObj) + { + keysArray = curveObj["keys"] as JArray; + if (keysArray == null) + { + message = "AnimationCurve object requires 'keys' array. Expected: { \"keys\": [ { \"time\": 0, \"value\": 0 }, ... ] }"; + return false; + } + } + else if (valueToken is JArray directArray) + { + keysArray = directArray; + } + else + { + message = "AnimationCurve requires object with 'keys' or array of keyframes. " + + "Expected: { \"keys\": [ { \"time\": 0, \"value\": 0, \"inSlope\": 0, \"outSlope\": 0 }, ... ] }"; + return false; + } + + try + { + var curve = new AnimationCurve(); + foreach (var keyToken in keysArray) + { + if (keyToken is not JObject keyObj) + { + message = "Each keyframe must be an object with 'time' and 'value'."; + return false; + } + + float time = keyObj["time"]?.Value() ?? 0f; + float value = keyObj["value"]?.Value() ?? 0f; + float inSlope = keyObj["inSlope"]?.Value() ?? keyObj["inTangent"]?.Value() ?? 0f; + float outSlope = keyObj["outSlope"]?.Value() ?? keyObj["outTangent"]?.Value() ?? 0f; + + var keyframe = new Keyframe(time, value, inSlope, outSlope); + + // Optional: weighted tangent mode (Unity 2018.1+) + if (keyObj["weightedMode"] != null) + { + int weightedMode = keyObj["weightedMode"].Value(); + keyframe.weightedMode = (WeightedMode)weightedMode; + } + if (keyObj["inWeight"] != null) + { + keyframe.inWeight = keyObj["inWeight"].Value(); + } + if (keyObj["outWeight"] != null) + { + keyframe.outWeight = keyObj["outWeight"].Value(); + } + + curve.AddKey(keyframe); + } + + prop.animationCurveValue = curve; + message = $"Set AnimationCurve with {keysArray.Count} keyframes."; + return true; + } + catch (Exception ex) + { + message = $"Failed to parse AnimationCurve: {ex.Message}"; + return false; + } + } + + /// + /// Sets a Quaternion property from JSON. + /// + /// Supported formats: + /// + /// Euler array: [x, y, z] - Euler angles in degrees + /// Raw quaternion array: [x, y, z, w] - Direct quaternion components + /// Object format: { "x": 0, "y": 0, "z": 0, "w": 1 } - Direct components + /// Explicit euler: { "euler": [x, y, z] } - Euler angles in degrees + /// Null/empty: Sets Quaternion.identity (no rotation) + /// + /// + /// Format detection: + /// + /// 3-element array → Interpreted as Euler angles (degrees) + /// 4-element array → Interpreted as raw quaternion [x, y, z, w] + /// Object with euler → Uses euler array for rotation + /// Object with x, y, z, w → Uses raw quaternion components + /// + /// + /// The SerializedProperty of type Quaternion to set + /// JSON token containing the quaternion data + /// Output message describing the result + /// True if successful, false if the format is invalid + private static bool TrySetQuaternion(SerializedProperty prop, JToken valueToken, out string message) + { + message = null; + + if (valueToken == null || valueToken.Type == JTokenType.Null) + { + prop.quaternionValue = Quaternion.identity; + message = "Set Quaternion to identity."; + return true; + } + + try + { + if (valueToken is JArray arr) + { + if (arr.Count == 3) + { + // Euler angles [x, y, z] + var euler = new Vector3( + arr[0].Value(), + arr[1].Value(), + arr[2].Value() + ); + prop.quaternionValue = Quaternion.Euler(euler); + message = $"Set Quaternion from Euler({euler.x}, {euler.y}, {euler.z})."; + return true; + } + else if (arr.Count == 4) + { + // Raw quaternion [x, y, z, w] + prop.quaternionValue = new Quaternion( + arr[0].Value(), + arr[1].Value(), + arr[2].Value(), + arr[3].Value() + ); + message = "Set Quaternion from [x, y, z, w]."; + return true; + } + else + { + message = "Quaternion array must have 3 elements (Euler) or 4 elements (x, y, z, w)."; + return false; + } + } + else if (valueToken is JObject obj) + { + // Check for explicit euler property + if (obj["euler"] is JArray eulerArr && eulerArr.Count == 3) + { + var euler = new Vector3( + eulerArr[0].Value(), + eulerArr[1].Value(), + eulerArr[2].Value() + ); + prop.quaternionValue = Quaternion.Euler(euler); + message = $"Set Quaternion from euler: ({euler.x}, {euler.y}, {euler.z})."; + return true; + } + + // Object format { x, y, z, w } + if (obj["x"] != null && obj["y"] != null && obj["z"] != null && obj["w"] != null) + { + prop.quaternionValue = new Quaternion( + obj["x"].Value(), + obj["y"].Value(), + obj["z"].Value(), + obj["w"].Value() + ); + message = "Set Quaternion from { x, y, z, w }."; + return true; + } + + message = "Quaternion object must have { x, y, z, w } or { euler: [x, y, z] }."; + return false; + } + else + { + message = "Quaternion requires array [x,y,z] (Euler), [x,y,z,w] (raw), or object { x, y, z, w }."; + return false; + } + } + catch (Exception ex) + { + message = $"Failed to parse Quaternion: {ex.Message}"; + return false; + } + } + + private static bool TryResolveTarget(JToken targetToken, out UnityEngine.Object target, out string targetPath, out string targetGuid, out object error) + { + target = null; + targetPath = null; + targetGuid = null; + error = null; + + if (targetToken is not JObject targetObj) + { + error = new ErrorResponse(CodeInvalidParams, new { message = "'target' must be an object with {guid|path}." }); + return false; + } + + string guid = targetObj["guid"]?.ToString(); + string path = targetObj["path"]?.ToString(); + + if (string.IsNullOrWhiteSpace(guid) && string.IsNullOrWhiteSpace(path)) + { + error = new ErrorResponse(CodeInvalidParams, new { message = "'target' must include 'guid' or 'path'." }); + return false; + } + + string resolvedPath = !string.IsNullOrWhiteSpace(guid) + ? AssetDatabase.GUIDToAssetPath(guid) + : AssetPathUtility.SanitizeAssetPath(path); + + if (string.IsNullOrWhiteSpace(resolvedPath)) + { + error = new ErrorResponse(CodeTargetNotFound, new { message = "Could not resolve target path.", guid, path }); + return false; + } + + var obj = AssetDatabase.LoadAssetAtPath(resolvedPath); + if (obj == null) + { + error = new ErrorResponse(CodeTargetNotFound, new { message = "Target asset not found.", targetPath = resolvedPath, targetGuid = guid }); + return false; + } + + target = obj; + targetPath = resolvedPath; + targetGuid = string.IsNullOrWhiteSpace(guid) ? AssetDatabase.AssetPathToGUID(resolvedPath) : guid; + return true; + } + + private static void CoerceJsonStringArrayParameter(JObject @params, string paramName) + { + var token = @params?[paramName]; + if (token != null && token.Type == JTokenType.String) + { + try + { + var parsed = JToken.Parse(token.ToString()); + if (parsed is JArray arr) + { + @params[paramName] = arr; + } + } + catch (Exception e) + { + McpLog.Warn($"[MCP] Could not parse '{paramName}' JSON string: {e.Message}"); + } + } + } + + private static bool EnsureFolderExists(string folderPath, out string error) + { + error = null; + if (string.IsNullOrWhiteSpace(folderPath)) + { + error = "Folder path is empty."; + return false; + } + + // Expect normalized input here (Assets/... or Assets). + string sanitized = SanitizeSlashes(folderPath); + + if (!sanitized.StartsWith("Assets/", StringComparison.OrdinalIgnoreCase) + && !string.Equals(sanitized, "Assets", StringComparison.OrdinalIgnoreCase)) + { + error = "Folder path must be under Assets/."; + return false; + } + + if (string.Equals(sanitized, "Assets", StringComparison.OrdinalIgnoreCase)) + { + return true; + } + + sanitized = sanitized.TrimEnd('/'); + if (AssetDatabase.IsValidFolder(sanitized)) + { + return true; + } + + // Create recursively from Assets/ + var parts = sanitized.Split(new[] { '/' }, StringSplitOptions.RemoveEmptyEntries); + if (parts.Length == 0 || !string.Equals(parts[0], "Assets", StringComparison.OrdinalIgnoreCase)) + { + error = "Folder path must start with Assets/"; + return false; + } + + string current = "Assets"; + for (int i = 1; i < parts.Length; i++) + { + string next = current + "/" + parts[i]; + if (!AssetDatabase.IsValidFolder(next)) + { + string guid = AssetDatabase.CreateFolder(current, parts[i]); + if (string.IsNullOrEmpty(guid)) + { + error = $"Failed to create folder: {next}"; + return false; + } + } + current = next; + } + + return AssetDatabase.IsValidFolder(sanitized); + } + + private static string SanitizeSlashes(string path) + { + if (string.IsNullOrWhiteSpace(path)) + { + return path; + } + + var s = AssetPathUtility.NormalizeSeparators(path); + while (s.IndexOf("//", StringComparison.Ordinal) >= 0) + { + s = s.Replace("//", "/", StringComparison.Ordinal); + } + return s; + } + + private static bool TryNormalizeFolderPath(string folderPath, out string normalized, out string error) + { + normalized = null; + error = null; + + if (string.IsNullOrWhiteSpace(folderPath)) + { + error = "Folder path is empty."; + return false; + } + + var s = SanitizeSlashes(folderPath.Trim()); + + // Reject obvious non-project/invalid roots. We only support Assets/ (and relative paths that will be rooted under Assets/). + if (s.StartsWith("/", StringComparison.Ordinal) + || s.StartsWith("file:", StringComparison.OrdinalIgnoreCase) + || Regex.IsMatch(s, @"^[a-zA-Z]:")) + { + error = "Folder path must be a project-relative path under Assets/."; + return false; + } + + if (s.StartsWith("Packages/", StringComparison.OrdinalIgnoreCase) + || s.StartsWith("ProjectSettings/", StringComparison.OrdinalIgnoreCase) + || s.StartsWith("Library/", StringComparison.OrdinalIgnoreCase)) + { + error = "Folder path must be under Assets/."; + return false; + } + + if (string.Equals(s, "Assets", StringComparison.OrdinalIgnoreCase)) + { + normalized = "Assets"; + return true; + } + + if (s.StartsWith("Assets/", StringComparison.OrdinalIgnoreCase)) + { + normalized = s.TrimEnd('/'); + return true; + } + + // Allow relative paths like "Temp/MyFolder" and root them under Assets/. + normalized = ("Assets/" + s.TrimStart('/')).TrimEnd('/'); + return true; + } + + // NOTE: Local TryGet* helpers have been removed. + // Using shared helpers instead: ParamCoercion (for int/float/bool) and VectorParsing (for Vector2/3/4, Color) + + private static string NormalizeAction(string raw) + { + var s = raw.Trim(); + s = s.Replace("-", "").Replace("_", ""); + return s.ToLowerInvariant(); + } + + private static bool IsCreateAction(string normalized) + { + return normalized == "create" || normalized == "createso"; + } + + /// + /// Resolves a type by name. Delegates to UnityTypeResolver.ResolveAny(). + /// + private static Type ResolveType(string typeName) + { + return Helpers.UnityTypeResolver.ResolveAny(typeName); + } + } +} diff --git a/Packages/MCPForUnity/Editor/Tools/ManageScriptableObject.cs.meta b/Packages/MCPForUnity/Editor/Tools/ManageScriptableObject.cs.meta new file mode 100644 index 00000000..fa17b473 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/ManageScriptableObject.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 9e0bb5a8c1b24b7ea8bce09ce0a1f234 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: + + + diff --git a/Packages/MCPForUnity/Editor/Tools/ManageShader.cs b/Packages/MCPForUnity/Editor/Tools/ManageShader.cs new file mode 100644 index 00000000..87b86fed --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/ManageShader.cs @@ -0,0 +1,344 @@ +using System; +using System.IO; +using System.Linq; +using System.Text.RegularExpressions; +using MCPForUnity.Editor.Helpers; +using Newtonsoft.Json.Linq; +using UnityEditor; +using UnityEngine; + +namespace MCPForUnity.Editor.Tools +{ + /// + /// Handles CRUD operations for shader files within the Unity project. + /// + [McpForUnityTool("manage_shader", AutoRegister = false)] + public static class ManageShader + { + /// + /// Main handler for shader management actions. + /// + public static object HandleCommand(JObject @params) + { + // Extract parameters + string action = @params["action"]?.ToString()?.ToLowerInvariant(); + string name = @params["name"]?.ToString(); + string path = @params["path"]?.ToString(); // Relative to Assets/ + string contents = null; + + // Check if we have base64 encoded contents + bool contentsEncoded = @params["contentsEncoded"]?.ToObject() ?? false; + if (contentsEncoded && @params["encodedContents"] != null) + { + try + { + contents = DecodeBase64(@params["encodedContents"].ToString()); + } + catch (Exception e) + { + return new ErrorResponse($"Failed to decode shader contents: {e.Message}"); + } + } + else + { + contents = @params["contents"]?.ToString(); + } + + // Validate required parameters + if (string.IsNullOrEmpty(action)) + { + return new ErrorResponse("Action parameter is required."); + } + if (string.IsNullOrEmpty(name)) + { + return new ErrorResponse("Name parameter is required."); + } + // Basic name validation (alphanumeric, underscores, cannot start with number) + if (!Regex.IsMatch(name, @"^[a-zA-Z_][a-zA-Z0-9_]*$")) + { + return new ErrorResponse( + $"Invalid shader name: '{name}'. Use only letters, numbers, underscores, and don't start with a number." + ); + } + + // Ensure path is relative to Assets/, removing any leading "Assets/" + // Set default directory to "Shaders" if path is not provided + string relativeDir = path ?? "Shaders"; // Default to "Shaders" if path is null + if (!string.IsNullOrEmpty(relativeDir)) + { + relativeDir = AssetPathUtility.NormalizeSeparators(relativeDir).Trim('/'); + if (relativeDir.StartsWith("Assets/", StringComparison.OrdinalIgnoreCase)) + { + relativeDir = relativeDir.Substring("Assets/".Length).TrimStart('/'); + } + } + // Handle empty string case explicitly after processing + if (string.IsNullOrEmpty(relativeDir)) + { + relativeDir = "Shaders"; // Ensure default if path was provided as "" or only "/" or "Assets/" + } + + // Construct paths + string shaderFileName = $"{name}.shader"; + string fullPathDir = Path.Combine(Application.dataPath, relativeDir); + string fullPath = Path.Combine(fullPathDir, shaderFileName); + string relativePath = AssetPathUtility.NormalizeSeparators( + Path.Combine("Assets", relativeDir, shaderFileName) + ); // Ensure "Assets/" prefix and forward slashes + + // Ensure the target directory exists for create/update + if (action == "create" || action == "update") + { + try + { + if (!Directory.Exists(fullPathDir)) + { + Directory.CreateDirectory(fullPathDir); + // Refresh AssetDatabase to recognize new folders + AssetDatabase.Refresh(ImportAssetOptions.ForceSynchronousImport); + } + } + catch (Exception e) + { + return new ErrorResponse( + $"Could not create directory '{fullPathDir}': {e.Message}" + ); + } + } + + // Route to specific action handlers + switch (action) + { + case "create": + return CreateShader(fullPath, relativePath, name, contents); + case "read": + return ReadShader(fullPath, relativePath); + case "update": + return UpdateShader(fullPath, relativePath, name, contents); + case "delete": + return DeleteShader(fullPath, relativePath); + default: + return new ErrorResponse( + $"Unknown action: '{action}'. Valid actions are: create, read, update, delete." + ); + } + } + + /// + /// Decode base64 string to normal text + /// + private static string DecodeBase64(string encoded) + { + byte[] data = Convert.FromBase64String(encoded); + return System.Text.Encoding.UTF8.GetString(data); + } + + /// + /// Encode text to base64 string + /// + private static string EncodeBase64(string text) + { + byte[] data = System.Text.Encoding.UTF8.GetBytes(text); + return Convert.ToBase64String(data); + } + + private static object CreateShader( + string fullPath, + string relativePath, + string name, + string contents + ) + { + // Check if shader already exists + if (File.Exists(fullPath)) + { + return new ErrorResponse( + $"Shader already exists at '{relativePath}'. Use 'update' action to modify." + ); + } + + // Add validation for shader name conflicts in Unity + if (Shader.Find(name) != null) + { + return new ErrorResponse( + $"A shader with name '{name}' already exists in the project. Choose a different name." + ); + } + + // Generate default content if none provided + if (string.IsNullOrEmpty(contents)) + { + contents = GenerateDefaultShaderContent(name); + } + + try + { + File.WriteAllText(fullPath, contents, new System.Text.UTF8Encoding(false)); + AssetDatabase.ImportAsset(relativePath); + AssetDatabase.Refresh(ImportAssetOptions.ForceSynchronousImport); // Ensure Unity recognizes the new shader + return new SuccessResponse( + $"Shader '{name}.shader' created successfully at '{relativePath}'.", + new { path = relativePath } + ); + } + catch (Exception e) + { + return new ErrorResponse($"Failed to create shader '{relativePath}': {e.Message}"); + } + } + + private static object ReadShader(string fullPath, string relativePath) + { + if (!File.Exists(fullPath)) + { + return new ErrorResponse($"Shader not found at '{relativePath}'."); + } + + try + { + string contents = File.ReadAllText(fullPath); + + // Return both normal and encoded contents for larger files + //TODO: Consider a threshold for large files + bool isLarge = contents.Length > 10000; // If content is large, include encoded version + var responseData = new + { + path = relativePath, + contents = contents, + // For large files, also include base64-encoded version + encodedContents = isLarge ? EncodeBase64(contents) : null, + contentsEncoded = isLarge, + }; + + return new SuccessResponse( + $"Shader '{Path.GetFileName(relativePath)}' read successfully.", + responseData + ); + } + catch (Exception e) + { + return new ErrorResponse($"Failed to read shader '{relativePath}': {e.Message}"); + } + } + + private static object UpdateShader( + string fullPath, + string relativePath, + string name, + string contents + ) + { + if (!File.Exists(fullPath)) + { + return new ErrorResponse( + $"Shader not found at '{relativePath}'. Use 'create' action to add a new shader." + ); + } + if (string.IsNullOrEmpty(contents)) + { + return new ErrorResponse("Content is required for the 'update' action."); + } + + try + { + File.WriteAllText(fullPath, contents, new System.Text.UTF8Encoding(false)); + AssetDatabase.ImportAsset(relativePath); + AssetDatabase.Refresh(ImportAssetOptions.ForceSynchronousImport); + return new SuccessResponse( + $"Shader '{Path.GetFileName(relativePath)}' updated successfully.", + new { path = relativePath } + ); + } + catch (Exception e) + { + return new ErrorResponse($"Failed to update shader '{relativePath}': {e.Message}"); + } + } + + private static object DeleteShader(string fullPath, string relativePath) + { + if (!File.Exists(fullPath)) + { + return new ErrorResponse($"Shader not found at '{relativePath}'."); + } + + try + { + // Delete the asset through Unity's AssetDatabase first + bool success = AssetDatabase.DeleteAsset(relativePath); + if (!success) + { + return new ErrorResponse($"Failed to delete shader through Unity's AssetDatabase: '{relativePath}'"); + } + + // If the file still exists (rare case), try direct deletion + if (File.Exists(fullPath)) + { + File.Delete(fullPath); + } + + return new SuccessResponse($"Shader '{Path.GetFileName(relativePath)}' deleted successfully."); + } + catch (Exception e) + { + return new ErrorResponse($"Failed to delete shader '{relativePath}': {e.Message}"); + } + } + + //This is a CGProgram template + //TODO: making a HLSL template as well? + private static string GenerateDefaultShaderContent(string name) + { + return @"Shader """ + name + @""" + { + Properties + { + _MainTex (""Texture"", 2D) = ""white"" {} + } + SubShader + { + Tags { ""RenderType""=""Opaque"" } + LOD 100 + + Pass + { + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #include ""UnityCG.cginc"" + + struct appdata + { + float4 vertex : POSITION; + float2 uv : TEXCOORD0; + }; + + struct v2f + { + float2 uv : TEXCOORD0; + float4 vertex : SV_POSITION; + }; + + sampler2D _MainTex; + float4 _MainTex_ST; + + v2f vert (appdata v) + { + v2f o; + o.vertex = UnityObjectToClipPos(v.vertex); + o.uv = TRANSFORM_TEX(v.uv, _MainTex); + return o; + } + + fixed4 frag (v2f i) : SV_Target + { + fixed4 col = tex2D(_MainTex, i.uv); + return col; + } + ENDCG + } + } + }"; + } + } +} diff --git a/Packages/MCPForUnity/Editor/Tools/ManageShader.cs.meta b/Packages/MCPForUnity/Editor/Tools/ManageShader.cs.meta new file mode 100644 index 00000000..89d10cdd --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/ManageShader.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bcf4f1f3110494344b2af9324cf5c571 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Tools/ManageTexture.cs b/Packages/MCPForUnity/Editor/Tools/ManageTexture.cs new file mode 100644 index 00000000..86e42904 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/ManageTexture.cs @@ -0,0 +1,1025 @@ +using System; +using System.Collections.Generic; +using System.IO; +using Newtonsoft.Json.Linq; +using UnityEditor; +using UnityEngine; +using MCPForUnity.Editor.Helpers; + +namespace MCPForUnity.Editor.Tools +{ + /// + /// Handles procedural texture generation operations. + /// Supports patterns (checkerboard, stripes, dots, grid, brick), + /// gradients, noise, and direct pixel manipulation. + /// + [McpForUnityTool("manage_texture", AutoRegister = false)] + public static class ManageTexture + { + private const int MaxTextureDimension = 1024; + private const int MaxTexturePixels = 1024 * 1024; + private const int MaxNoiseWork = 4000000; + private static readonly List ValidActions = new List + { + "create", + "modify", + "delete", + "create_sprite", + "apply_pattern", + "apply_gradient", + "apply_noise" + }; + + private static ErrorResponse ValidateDimensions(int width, int height, List warnings) + { + if (width <= 0 || height <= 0) + return new ErrorResponse($"Invalid dimensions: {width}x{height}. Must be positive."); + if (width > MaxTextureDimension || height > MaxTextureDimension) + warnings.Add($"Dimensions exceed recommended max {MaxTextureDimension} per side (got {width}x{height})."); + long totalPixels = (long)width * height; + if (totalPixels > MaxTexturePixels) + warnings.Add($"Total pixels exceed recommended max {MaxTexturePixels} (got {width}x{height})."); + return null; + } + + + public static object HandleCommand(JObject @params) + { + string action = @params["action"]?.ToString()?.ToLowerInvariant(); + if (string.IsNullOrEmpty(action)) + { + return new ErrorResponse("Action parameter is required."); + } + + if (!ValidActions.Contains(action)) + { + string validActionsList = string.Join(", ", ValidActions); + return new ErrorResponse( + $"Unknown action: '{action}'. Valid actions are: {validActionsList}" + ); + } + + string path = @params["path"]?.ToString(); + + try + { + switch (action) + { + case "create": + case "create_sprite": + return CreateTexture(@params, action == "create_sprite"); + case "modify": + return ModifyTexture(@params); + case "delete": + return DeleteTexture(path); + case "apply_pattern": + return ApplyPattern(@params); + case "apply_gradient": + return ApplyGradient(@params); + case "apply_noise": + return ApplyNoise(@params); + default: + return new ErrorResponse($"Unknown action: '{action}'"); + } + } + catch (Exception e) + { + McpLog.Error($"[ManageTexture] Action '{action}' failed: {e}"); + return new ErrorResponse($"Internal error processing action '{action}': {e.Message}"); + } + } + + // --- Action Implementations --- + + private static object CreateTexture(JObject @params, bool asSprite) + { + string path = @params["path"]?.ToString(); + if (string.IsNullOrEmpty(path)) + return new ErrorResponse("'path' is required for create."); + + string imagePath = @params["imagePath"]?.ToString(); + bool hasImage = !string.IsNullOrEmpty(imagePath); + + int width = @params["width"]?.ToObject() ?? 64; + int height = @params["height"]?.ToObject() ?? 64; + List warnings = new List(); + + // Validate dimensions + if (!hasImage) + { + var dimensionError = ValidateDimensions(width, height, warnings); + if (dimensionError != null) + return dimensionError; + } + + string fullPath = AssetPathUtility.SanitizeAssetPath(path); + EnsureDirectoryExists(fullPath); + + try + { + var fillColorToken = @params["fillColor"]; + var patternToken = @params["pattern"]; + var pixelsToken = @params["pixels"]; + + if (hasImage && (fillColorToken != null || patternToken != null || pixelsToken != null)) + { + return new ErrorResponse("imagePath cannot be combined with fillColor, pattern, or pixels."); + } + + int patternSize = 8; + if (!hasImage && patternToken != null) + { + patternSize = @params["patternSize"]?.ToObject() ?? 8; + if (patternSize <= 0) + return new ErrorResponse("patternSize must be greater than 0."); + } + + Texture2D texture; + if (hasImage) + { + string resolvedImagePath = ResolveImagePath(imagePath); + if (!File.Exists(resolvedImagePath)) + return new ErrorResponse($"Image file not found at '{imagePath}'."); + + byte[] imageBytes = File.ReadAllBytes(resolvedImagePath); + texture = new Texture2D(2, 2, TextureFormat.RGBA32, false); + if (!texture.LoadImage(imageBytes)) + { + UnityEngine.Object.DestroyImmediate(texture); + return new ErrorResponse($"Failed to load image from '{imagePath}'."); + } + + width = texture.width; + height = texture.height; + var imageDimensionError = ValidateDimensions(width, height, warnings); + if (imageDimensionError != null) + { + UnityEngine.Object.DestroyImmediate(texture); + return imageDimensionError; + } + } + else + { + texture = new Texture2D(width, height, TextureFormat.RGBA32, false); + + // Check for fill color + if (fillColorToken != null && fillColorToken.Type == JTokenType.Array) + { + Color32 fillColor = TextureOps.ParseColor32(fillColorToken as JArray); + TextureOps.FillTexture(texture, fillColor); + } + + // Check for pattern + if (patternToken != null) + { + string pattern = patternToken.ToString(); + var palette = TextureOps.ParsePalette(@params["palette"] as JArray); + ApplyPatternToTexture(texture, pattern, palette, patternSize); + } + + // Check for direct pixel data + if (pixelsToken != null) + { + TextureOps.ApplyPixelData(texture, pixelsToken, width, height); + } + + // If nothing specified, create transparent texture + if (fillColorToken == null && patternToken == null && pixelsToken == null) + { + TextureOps.FillTexture(texture, new Color32(0, 0, 0, 0)); + } + } + + texture.Apply(); + + // Save to disk + byte[] imageData = TextureOps.EncodeTexture(texture, fullPath); + if (imageData == null || imageData.Length == 0) + { + UnityEngine.Object.DestroyImmediate(texture); + return new ErrorResponse($"Failed to encode texture for '{fullPath}'"); + } + File.WriteAllBytes(GetAbsolutePath(fullPath), imageData); + + AssetDatabase.ImportAsset(fullPath, ImportAssetOptions.ForceUpdate); + + // Configure texture importer settings if provided + JToken importSettingsToken = @params["importSettings"]; + JToken spriteSettingsToken = @params["spriteSettings"]; + + if (importSettingsToken != null) + { + ConfigureTextureImporter(fullPath, importSettingsToken); + } + else if (asSprite || spriteSettingsToken != null) + { + // Legacy sprite configuration + ConfigureAsSprite(fullPath, spriteSettingsToken); + } + + // Clean up memory + UnityEngine.Object.DestroyImmediate(texture); + foreach (var warning in warnings) + { + McpLog.Warn($"[ManageTexture] {warning}"); + } + + return new SuccessResponse( + $"Texture created at '{fullPath}' ({width}x{height})" + (asSprite ? " as sprite" : ""), + new + { + path = fullPath, + width, + height, + asSprite = asSprite || spriteSettingsToken != null || (importSettingsToken?["textureType"]?.ToString() == "Sprite"), + warnings = warnings.Count > 0 ? warnings : null + } + ); + } + catch (Exception e) + { + return new ErrorResponse($"Failed to create texture: {e.Message}"); + } + } + + private static object ModifyTexture(JObject @params) + { + string path = @params["path"]?.ToString(); + if (string.IsNullOrEmpty(path)) + return new ErrorResponse("'path' is required for modify."); + + string fullPath = AssetPathUtility.SanitizeAssetPath(path); + if (!AssetExists(fullPath)) + return new ErrorResponse($"Texture not found at path: {fullPath}"); + + try + { + Texture2D texture = AssetDatabase.LoadAssetAtPath(fullPath); + if (texture == null) + return new ErrorResponse($"Failed to load texture at path: {fullPath}"); + + // Make the texture readable + string absolutePath = GetAbsolutePath(fullPath); + byte[] fileData = File.ReadAllBytes(absolutePath); + Texture2D editableTexture = new Texture2D(texture.width, texture.height, TextureFormat.RGBA32, false); + editableTexture.LoadImage(fileData); + + // Apply modifications + var setPixelsToken = @params["setPixels"] as JObject; + if (setPixelsToken != null) + { + int x = setPixelsToken["x"]?.ToObject() ?? 0; + int y = setPixelsToken["y"]?.ToObject() ?? 0; + int w = setPixelsToken["width"]?.ToObject() ?? 1; + int h = setPixelsToken["height"]?.ToObject() ?? 1; + + if (w <= 0 || h <= 0) + { + UnityEngine.Object.DestroyImmediate(editableTexture); + return new ErrorResponse("setPixels width and height must be positive."); + } + + var pixelsToken = setPixelsToken["pixels"]; + var colorToken = setPixelsToken["color"]; + + if (pixelsToken != null) + { + TextureOps.ApplyPixelDataToRegion(editableTexture, pixelsToken, x, y, w, h); + } + else if (colorToken != null) + { + Color32 color = TextureOps.ParseColor32(colorToken as JArray); + int startX = Mathf.Max(0, x); + int startY = Mathf.Max(0, y); + int endX = Mathf.Min(x + w, editableTexture.width); + int endY = Mathf.Min(y + h, editableTexture.height); + + for (int py = startY; py < endY; py++) + { + for (int px = startX; px < endX; px++) + { + editableTexture.SetPixel(px, py, color); + } + } + } + else + { + UnityEngine.Object.DestroyImmediate(editableTexture); + return new ErrorResponse("setPixels requires 'color' or 'pixels'."); + } + } + + editableTexture.Apply(); + + // Save back to disk + byte[] imageData = TextureOps.EncodeTexture(editableTexture, fullPath); + if (imageData == null || imageData.Length == 0) + { + UnityEngine.Object.DestroyImmediate(editableTexture); + return new ErrorResponse($"Failed to encode texture for '{fullPath}'"); + } + File.WriteAllBytes(absolutePath, imageData); + + AssetDatabase.ImportAsset(fullPath, ImportAssetOptions.ForceUpdate); + + UnityEngine.Object.DestroyImmediate(editableTexture); + + return new SuccessResponse($"Texture modified: {fullPath}"); + } + catch (Exception e) + { + return new ErrorResponse($"Failed to modify texture: {e.Message}"); + } + } + + private static object DeleteTexture(string path) + { + if (string.IsNullOrEmpty(path)) + return new ErrorResponse("'path' is required for delete."); + + string fullPath = AssetPathUtility.SanitizeAssetPath(path); + if (!AssetExists(fullPath)) + return new ErrorResponse($"Texture not found at path: {fullPath}"); + + try + { + bool success = AssetDatabase.DeleteAsset(fullPath); + if (success) + return new SuccessResponse($"Texture deleted: {fullPath}"); + else + return new ErrorResponse($"Failed to delete texture: {fullPath}"); + } + catch (Exception e) + { + return new ErrorResponse($"Error deleting texture: {e.Message}"); + } + } + + private static object ApplyPattern(JObject @params) + { + // Reuse CreateTexture with pattern + return CreateTexture(@params, false); + } + + private static object ApplyGradient(JObject @params) + { + string path = @params["path"]?.ToString(); + if (string.IsNullOrEmpty(path)) + return new ErrorResponse("'path' is required for apply_gradient."); + + int width = @params["width"]?.ToObject() ?? 64; + int height = @params["height"]?.ToObject() ?? 64; + List warnings = new List(); + var dimensionError = ValidateDimensions(width, height, warnings); + if (dimensionError != null) + return dimensionError; + string gradientType = @params["gradientType"]?.ToString() ?? "linear"; + float angle = @params["gradientAngle"]?.ToObject() ?? 0f; + + var palette = TextureOps.ParsePalette(@params["palette"] as JArray); + if (palette == null || palette.Count < 2) + { + // Default gradient palette + palette = new List { new Color32(0, 0, 0, 255), new Color32(255, 255, 255, 255) }; + } + + string fullPath = AssetPathUtility.SanitizeAssetPath(path); + EnsureDirectoryExists(fullPath); + + Texture2D texture = null; + try + { + texture = new Texture2D(width, height, TextureFormat.RGBA32, false); + + if (gradientType == "radial") + { + ApplyRadialGradient(texture, palette); + } + else + { + ApplyLinearGradient(texture, palette, angle); + } + + texture.Apply(); + + byte[] imageData = TextureOps.EncodeTexture(texture, fullPath); + if (imageData == null || imageData.Length == 0) + { + return new ErrorResponse($"Failed to encode texture for '{fullPath}'"); + } + File.WriteAllBytes(GetAbsolutePath(fullPath), imageData); + + AssetDatabase.ImportAsset(fullPath, ImportAssetOptions.ForceUpdate); + + // Configure as sprite if requested + JToken spriteSettingsToken = @params["spriteSettings"]; + if (spriteSettingsToken != null) + { + ConfigureAsSprite(fullPath, spriteSettingsToken); + } + + foreach (var warning in warnings) + { + McpLog.Warn($"[ManageTexture] {warning}"); + } + + return new SuccessResponse( + $"Gradient texture created at '{fullPath}' ({width}x{height})", + new + { + path = fullPath, + width, + height, + gradientType, + warnings = warnings.Count > 0 ? warnings : null + } + ); + } + catch (Exception e) + { + return new ErrorResponse($"Failed to create gradient texture: {e.Message}"); + } + finally + { + if (texture != null) + UnityEngine.Object.DestroyImmediate(texture); + } + } + + private static object ApplyNoise(JObject @params) + { + string path = @params["path"]?.ToString(); + if (string.IsNullOrEmpty(path)) + return new ErrorResponse("'path' is required for apply_noise."); + + int width = @params["width"]?.ToObject() ?? 64; + int height = @params["height"]?.ToObject() ?? 64; + List warnings = new List(); + var dimensionError = ValidateDimensions(width, height, warnings); + if (dimensionError != null) + return dimensionError; + float scale = @params["noiseScale"]?.ToObject() ?? 0.1f; + int octaves = @params["octaves"]?.ToObject() ?? 1; + if (octaves <= 0) + return new ErrorResponse("octaves must be greater than 0."); + long noiseWork = (long)width * height * octaves; + if (noiseWork > MaxNoiseWork) + warnings.Add($"Noise workload exceeds recommended max {MaxNoiseWork} (got {width}x{height}x{octaves})."); + + var palette = TextureOps.ParsePalette(@params["palette"] as JArray); + if (palette == null || palette.Count < 2) + { + palette = new List { new Color32(0, 0, 0, 255), new Color32(255, 255, 255, 255) }; + } + + string fullPath = AssetPathUtility.SanitizeAssetPath(path); + EnsureDirectoryExists(fullPath); + + Texture2D texture = new Texture2D(width, height, TextureFormat.RGBA32, false); + try + { + ApplyPerlinNoise(texture, palette, scale, octaves); + + texture.Apply(); + + byte[] imageData = TextureOps.EncodeTexture(texture, fullPath); + if (imageData == null || imageData.Length == 0) + { + return new ErrorResponse($"Failed to encode texture for '{fullPath}'"); + } + File.WriteAllBytes(GetAbsolutePath(fullPath), imageData); + + AssetDatabase.ImportAsset(fullPath, ImportAssetOptions.ForceUpdate); + + // Configure as sprite if requested + JToken spriteSettingsToken = @params["spriteSettings"]; + if (spriteSettingsToken != null) + { + ConfigureAsSprite(fullPath, spriteSettingsToken); + } + + foreach (var warning in warnings) + { + McpLog.Warn($"[ManageTexture] {warning}"); + } + + return new SuccessResponse( + $"Noise texture created at '{fullPath}' ({width}x{height})", + new + { + path = fullPath, + width, + height, + noiseScale = scale, + octaves, + warnings = warnings.Count > 0 ? warnings : null + } + ); + } + catch (Exception e) + { + return new ErrorResponse($"Failed to create noise texture: {e.Message}"); + } + finally + { + if (texture != null) + UnityEngine.Object.DestroyImmediate(texture); + } + } + + // --- Pattern Helpers --- + + private static void ApplyPatternToTexture(Texture2D texture, string pattern, List palette, int patternSize) + { + if (palette == null || palette.Count == 0) + { + palette = new List { new Color32(255, 255, 255, 255), new Color32(0, 0, 0, 255) }; + } + + int width = texture.width; + int height = texture.height; + + for (int y = 0; y < height; y++) + { + for (int x = 0; x < width; x++) + { + Color32 color = GetPatternColor(x, y, pattern, palette, patternSize, width, height); + texture.SetPixel(x, y, color); + } + } + } + + private static Color32 GetPatternColor(int x, int y, string pattern, List palette, int size, int width, int height) + { + int colorIndex = 0; + + switch (pattern.ToLower()) + { + case "checkerboard": + colorIndex = ((x / size) + (y / size)) % 2; + break; + + case "stripes": + case "stripes_v": + colorIndex = (x / size) % palette.Count; + break; + + case "stripes_h": + colorIndex = (y / size) % palette.Count; + break; + + case "stripes_diag": + colorIndex = ((x + y) / size) % palette.Count; + break; + + case "dots": + int cx = (x % (size * 2)) - size; + int cy = (y % (size * 2)) - size; + bool inDot = (cx * cx + cy * cy) < (size * size / 4); + colorIndex = inDot ? 1 : 0; + break; + + case "grid": + bool onGridLine = (x % size == 0) || (y % size == 0); + colorIndex = onGridLine ? 1 : 0; + break; + + case "brick": + int row = y / size; + int offset = (row % 2) * (size / 2); + bool onBorder = ((x + offset) % size == 0) || (y % size == 0); + colorIndex = onBorder ? 1 : 0; + break; + + default: + colorIndex = 0; + break; + } + + return palette[Mathf.Clamp(colorIndex, 0, palette.Count - 1)]; + } + + // --- Gradient Helpers --- + + private static void ApplyLinearGradient(Texture2D texture, List palette, float angle) + { + int width = texture.width; + int height = texture.height; + float radians = angle * Mathf.Deg2Rad; + Vector2 dir = new Vector2(Mathf.Cos(radians), Mathf.Sin(radians)); + float denomX = Mathf.Max(1, width - 1); + float denomY = Mathf.Max(1, height - 1); + + for (int y = 0; y < height; y++) + { + for (int x = 0; x < width; x++) + { + float nx = x / denomX; + float ny = y / denomY; + float t = Vector2.Dot(new Vector2(nx, ny), dir); + t = Mathf.Clamp01((t + 1f) / 2f); + + Color32 color = LerpPalette(palette, t); + texture.SetPixel(x, y, color); + } + } + } + + private static void ApplyRadialGradient(Texture2D texture, List palette) + { + int width = texture.width; + int height = texture.height; + float cx = width / 2f; + float cy = height / 2f; + float maxDist = Mathf.Sqrt(cx * cx + cy * cy); + + for (int y = 0; y < height; y++) + { + for (int x = 0; x < width; x++) + { + float dx = x - cx; + float dy = y - cy; + float dist = Mathf.Sqrt(dx * dx + dy * dy); + float t = Mathf.Clamp01(dist / maxDist); + + Color32 color = LerpPalette(palette, t); + texture.SetPixel(x, y, color); + } + } + } + + private static Color32 LerpPalette(List palette, float t) + { + if (palette.Count == 1) return palette[0]; + if (t <= 0) return palette[0]; + if (t >= 1) return palette[palette.Count - 1]; + + float scaledT = t * (palette.Count - 1); + int index = Mathf.FloorToInt(scaledT); + float localT = scaledT - index; + + if (index >= palette.Count - 1) + return palette[palette.Count - 1]; + + Color c1 = palette[index]; + Color c2 = palette[index + 1]; + return Color.Lerp(c1, c2, localT); + } + + // --- Noise Helpers --- + + private static void ApplyPerlinNoise(Texture2D texture, List palette, float scale, int octaves) + { + int width = texture.width; + int height = texture.height; + + // Random offset to ensure different patterns + float offsetX = UnityEngine.Random.Range(0f, 1000f); + float offsetY = UnityEngine.Random.Range(0f, 1000f); + + for (int y = 0; y < height; y++) + { + for (int x = 0; x < width; x++) + { + float noiseValue = 0f; + float amplitude = 1f; + float frequency = 1f; + float maxValue = 0f; + + for (int o = 0; o < octaves; o++) + { + float sampleX = (x + offsetX) * scale * frequency; + float sampleY = (y + offsetY) * scale * frequency; + noiseValue += Mathf.PerlinNoise(sampleX, sampleY) * amplitude; + maxValue += amplitude; + amplitude *= 0.5f; + frequency *= 2f; + } + + float t = Mathf.Clamp01(noiseValue / maxValue); + Color32 color = LerpPalette(palette, t); + texture.SetPixel(x, y, color); + } + } + } + + private static void ConfigureAsSprite(string path, JToken spriteSettings) + { + TextureImporter importer = AssetImporter.GetAtPath(path) as TextureImporter; + if (importer == null) + { + McpLog.Warn($"[ManageTexture] Could not get TextureImporter for {path}"); + return; + } + + importer.textureType = TextureImporterType.Sprite; + importer.spriteImportMode = SpriteImportMode.Single; + + if (spriteSettings != null && spriteSettings.Type == JTokenType.Object) + { + var settings = spriteSettings as JObject; + + // Pivot + var pivotToken = settings["pivot"]; + if (pivotToken is JArray pivotArray && pivotArray.Count >= 2) + { + importer.spritePivot = new Vector2( + pivotArray[0].ToObject(), + pivotArray[1].ToObject() + ); + } + + // Pixels per unit + var ppuToken = settings["pixelsPerUnit"]; + if (ppuToken != null) + { + importer.spritePixelsPerUnit = ppuToken.ToObject(); + } + } + + importer.SaveAndReimport(); + } + + private static void ConfigureTextureImporter(string path, JToken importSettings) + { + TextureImporter importer = AssetImporter.GetAtPath(path) as TextureImporter; + if (importer == null) + { + McpLog.Warn($"[ManageTexture] Could not get TextureImporter for {path}"); + return; + } + + if (importSettings == null || importSettings.Type != JTokenType.Object) + { + return; + } + + var settings = importSettings as JObject; + + // Texture Type + var textureTypeToken = settings["textureType"]; + if (textureTypeToken != null) + { + string typeStr = textureTypeToken.ToString(); + if (TryParseEnum(typeStr, out var textureType)) + { + importer.textureType = textureType; + } + } + + // Texture Shape + var textureShapeToken = settings["textureShape"]; + if (textureShapeToken != null) + { + string shapeStr = textureShapeToken.ToString(); + if (TryParseEnum(shapeStr, out var textureShape)) + { + importer.textureShape = textureShape; + } + } + + // sRGB + var srgbToken = settings["sRGBTexture"]; + if (srgbToken != null) + { + importer.sRGBTexture = srgbToken.ToObject(); + } + + // Alpha Source + var alphaSourceToken = settings["alphaSource"]; + if (alphaSourceToken != null) + { + string alphaStr = alphaSourceToken.ToString(); + if (TryParseEnum(alphaStr, out var alphaSource)) + { + importer.alphaSource = alphaSource; + } + } + + // Alpha Is Transparency + var alphaTransToken = settings["alphaIsTransparency"]; + if (alphaTransToken != null) + { + importer.alphaIsTransparency = alphaTransToken.ToObject(); + } + + // Readable + var readableToken = settings["isReadable"]; + if (readableToken != null) + { + importer.isReadable = readableToken.ToObject(); + } + + // Mipmaps + var mipmapToken = settings["mipmapEnabled"]; + if (mipmapToken != null) + { + importer.mipmapEnabled = mipmapToken.ToObject(); + } + + // Mipmap Filter + var mipmapFilterToken = settings["mipmapFilter"]; + if (mipmapFilterToken != null) + { + string filterStr = mipmapFilterToken.ToString(); + if (TryParseEnum(filterStr, out var mipmapFilter)) + { + importer.mipmapFilter = mipmapFilter; + } + } + + // Wrap Mode + var wrapModeToken = settings["wrapMode"]; + if (wrapModeToken != null) + { + string wrapStr = wrapModeToken.ToString(); + if (TryParseEnum(wrapStr, out var wrapMode)) + { + importer.wrapMode = wrapMode; + } + } + + // Wrap Mode U + var wrapModeUToken = settings["wrapModeU"]; + if (wrapModeUToken != null) + { + string wrapStr = wrapModeUToken.ToString(); + if (TryParseEnum(wrapStr, out var wrapMode)) + { + importer.wrapModeU = wrapMode; + } + } + + // Wrap Mode V + var wrapModeVToken = settings["wrapModeV"]; + if (wrapModeVToken != null) + { + string wrapStr = wrapModeVToken.ToString(); + if (TryParseEnum(wrapStr, out var wrapMode)) + { + importer.wrapModeV = wrapMode; + } + } + + // Filter Mode + var filterModeToken = settings["filterMode"]; + if (filterModeToken != null) + { + string filterStr = filterModeToken.ToString(); + if (TryParseEnum(filterStr, out var filterMode)) + { + importer.filterMode = filterMode; + } + } + + // Aniso Level + var anisoToken = settings["anisoLevel"]; + if (anisoToken != null) + { + importer.anisoLevel = anisoToken.ToObject(); + } + + // Max Texture Size + var maxSizeToken = settings["maxTextureSize"]; + if (maxSizeToken != null) + { + importer.maxTextureSize = maxSizeToken.ToObject(); + } + + // Compression + var compressionToken = settings["textureCompression"]; + if (compressionToken != null) + { + string compStr = compressionToken.ToString(); + if (TryParseEnum(compStr, out var compression)) + { + importer.textureCompression = compression; + } + } + + // Crunched Compression + var crunchedToken = settings["crunchedCompression"]; + if (crunchedToken != null) + { + importer.crunchedCompression = crunchedToken.ToObject(); + } + + // Compression Quality + var qualityToken = settings["compressionQuality"]; + if (qualityToken != null) + { + importer.compressionQuality = qualityToken.ToObject(); + } + + // --- Sprite-specific settings --- + + // Sprite Import Mode + var spriteModeToken = settings["spriteImportMode"]; + if (spriteModeToken != null) + { + string modeStr = spriteModeToken.ToString(); + if (TryParseEnum(modeStr, out var spriteMode)) + { + importer.spriteImportMode = spriteMode; + } + } + + // Sprite Pixels Per Unit + var ppuToken = settings["spritePixelsPerUnit"]; + if (ppuToken != null) + { + importer.spritePixelsPerUnit = ppuToken.ToObject(); + } + + // Sprite Pivot + var pivotToken = settings["spritePivot"]; + if (pivotToken is JArray pivotArray && pivotArray.Count >= 2) + { + importer.spritePivot = new Vector2( + pivotArray[0].ToObject(), + pivotArray[1].ToObject() + ); + } + + // Apply sprite settings using TextureImporterSettings helper + TextureImporterSettings importerSettings = new TextureImporterSettings(); + importer.ReadTextureSettings(importerSettings); + + bool settingsChanged = false; + + // Sprite Mesh Type + var meshTypeToken = settings["spriteMeshType"]; + if (meshTypeToken != null) + { + string meshStr = meshTypeToken.ToString(); + if (TryParseEnum(meshStr, out var meshType)) + { + importerSettings.spriteMeshType = meshType; + settingsChanged = true; + } + } + + // Sprite Extrude + var extrudeToken = settings["spriteExtrude"]; + if (extrudeToken != null) + { + importerSettings.spriteExtrude = (uint)extrudeToken.ToObject(); + settingsChanged = true; + } + + if (settingsChanged) + { + importer.SetTextureSettings(importerSettings); + } + + importer.SaveAndReimport(); + } + + private static bool TryParseEnum(string value, out T result) where T : struct + { + // Try exact match first + if (Enum.TryParse(value, true, out result)) + { + return true; + } + + // Try without common prefixes/suffixes + string cleanValue = value.Replace("_", "").Replace("-", ""); + if (Enum.TryParse(cleanValue, true, out result)) + { + return true; + } + + result = default; + return false; + } + + private static bool AssetExists(string path) + { + return !string.IsNullOrEmpty(AssetDatabase.AssetPathToGUID(path)); + } + + private static void EnsureDirectoryExists(string assetPath) + { + string directory = Path.GetDirectoryName(assetPath); + if (!string.IsNullOrEmpty(directory) && !Directory.Exists(GetAbsolutePath(directory))) + { + Directory.CreateDirectory(GetAbsolutePath(directory)); + AssetDatabase.Refresh(ImportAssetOptions.ForceSynchronousImport); + } + } + + private static string GetAbsolutePath(string assetPath) + { + return Path.Combine(Directory.GetCurrentDirectory(), assetPath); + } + + private static string ResolveImagePath(string imagePath) + { + if (Path.IsPathRooted(imagePath)) + return imagePath; + + return Path.Combine(Directory.GetCurrentDirectory(), imagePath); + } + } +} diff --git a/Packages/MCPForUnity/Editor/Tools/ManageTexture.cs.meta b/Packages/MCPForUnity/Editor/Tools/ManageTexture.cs.meta new file mode 100644 index 00000000..2dc1b884 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/ManageTexture.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8028b64102744ea5aad53a762d48079a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Tools/McpForUnityToolAttribute.cs b/Packages/MCPForUnity/Editor/Tools/McpForUnityToolAttribute.cs new file mode 100644 index 00000000..e4db3a4c --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/McpForUnityToolAttribute.cs @@ -0,0 +1,107 @@ +using System; + +namespace MCPForUnity.Editor.Tools +{ + /// + /// Marks a class as an MCP tool handler + /// + [AttributeUsage(AttributeTargets.Class, AllowMultiple = false)] + public class McpForUnityToolAttribute : Attribute + { + /// + /// Tool name (if null, derived from class name) + /// + public string Name { get; set; } + + /// + /// Tool description for LLM + /// + public string Description { get; set; } + + /// + /// Whether this tool returns structured output + /// + public bool StructuredOutput { get; set; } = true; + + /// + /// Controls whether this tool is automatically registered with FastMCP. + /// Defaults to true so most tools opt-in automatically. Set to false + /// for legacy/built-in tools that already exist server-side. + /// + public bool AutoRegister { get; set; } = true; + + /// + /// Enables the polling middleware for long-running tools. When true, Unity + /// should return a PendingResponse and the Python side will poll using + /// until completion. + /// + public bool RequiresPolling { get; set; } = false; + + /// + /// The action name to use when polling for status. Defaults to "status". + /// + public string PollAction { get; set; } = "status"; + + /// + /// The command name used to route requests to this tool. + /// If not specified, defaults to the PascalCase class name converted to snake_case. + /// Kept for backward compatibility. + /// + public string CommandName + { + get => Name; + set => Name = value; + } + + /// + /// Create an MCP tool attribute with auto-generated command name. + /// The command name will be derived from the class name (PascalCase → snake_case). + /// Example: ManageAsset → manage_asset + /// + public McpForUnityToolAttribute() + { + Name = null; // Will be auto-generated + } + + /// + /// Create an MCP tool attribute with explicit command name. + /// + /// The command name (e.g., "manage_asset") + public McpForUnityToolAttribute(string name = null) + { + Name = name; + } + } + + /// + /// Describes a tool parameter + /// + [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = false)] + public class ToolParameterAttribute : Attribute + { + /// + /// Parameter name (if null, derived from property/field name) + /// + public string Name { get; } + + /// + /// Parameter description for LLM + /// + public string Description { get; set; } + + /// + /// Whether this parameter is required + /// + public bool Required { get; set; } = true; + + /// + /// Default value (as string) + /// + public string DefaultValue { get; set; } + + public ToolParameterAttribute(string description) + { + Description = description; + } + } +} diff --git a/Packages/MCPForUnity/Editor/Tools/McpForUnityToolAttribute.cs.meta b/Packages/MCPForUnity/Editor/Tools/McpForUnityToolAttribute.cs.meta new file mode 100644 index 00000000..57242c17 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/McpForUnityToolAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 804d07b886f4e4eb39316bbef34687c7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Tools/Prefabs.meta b/Packages/MCPForUnity/Editor/Tools/Prefabs.meta new file mode 100644 index 00000000..4fb95c50 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/Prefabs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1bd48a1b7555c46bba168078ce0291cc +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Tools/Prefabs/ManagePrefabs.cs b/Packages/MCPForUnity/Editor/Tools/Prefabs/ManagePrefabs.cs new file mode 100644 index 00000000..6df9d47b --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/Prefabs/ManagePrefabs.cs @@ -0,0 +1,982 @@ +using System; +using System.Collections.Generic; +using System.IO; +using MCPForUnity.Editor.Helpers; +using Newtonsoft.Json.Linq; +using UnityEditor; +using UnityEditor.SceneManagement; +using UnityEngine; +using UnityEngine.SceneManagement; + +namespace MCPForUnity.Editor.Tools.Prefabs +{ + [McpForUnityTool("manage_prefabs", AutoRegister = false)] + /// + /// Tool to manage Unity Prefabs: create, inspect, and modify prefab assets. + /// Uses headless editing (no UI, no dialogs) for reliable automated workflows. + /// + public static class ManagePrefabs + { + // Action constants + private const string ACTION_CREATE_FROM_GAMEOBJECT = "create_from_gameobject"; + private const string ACTION_GET_INFO = "get_info"; + private const string ACTION_GET_HIERARCHY = "get_hierarchy"; + private const string ACTION_MODIFY_CONTENTS = "modify_contents"; + private const string SupportedActions = ACTION_CREATE_FROM_GAMEOBJECT + ", " + ACTION_GET_INFO + ", " + ACTION_GET_HIERARCHY + ", " + ACTION_MODIFY_CONTENTS; + + public static object HandleCommand(JObject @params) + { + if (@params == null) + { + return new ErrorResponse("Parameters cannot be null."); + } + + string action = @params["action"]?.ToString()?.ToLowerInvariant(); + if (string.IsNullOrEmpty(action)) + { + return new ErrorResponse($"Action parameter is required. Valid actions are: {SupportedActions}."); + } + + try + { + switch (action) + { + case ACTION_CREATE_FROM_GAMEOBJECT: + return CreatePrefabFromGameObject(@params); + case ACTION_GET_INFO: + return GetInfo(@params); + case ACTION_GET_HIERARCHY: + return GetHierarchy(@params); + case ACTION_MODIFY_CONTENTS: + return ModifyContents(@params); + default: + return new ErrorResponse($"Unknown action: '{action}'. Valid actions are: {SupportedActions}."); + } + } + catch (Exception e) + { + McpLog.Error($"[ManagePrefabs] Action '{action}' failed: {e}"); + return new ErrorResponse($"Internal error: {e.Message}"); + } + } + + #region Create Prefab from GameObject + + /// + /// Creates a prefab asset from a GameObject in the scene. + /// + private static object CreatePrefabFromGameObject(JObject @params) + { + // 1. Validate and parse parameters + var validation = ValidateCreatePrefabParams(@params); + if (!validation.isValid) + { + return new ErrorResponse(validation.errorMessage); + } + + string targetName = validation.targetName; + string finalPath = validation.finalPath; + bool includeInactive = validation.includeInactive; + bool replaceExisting = validation.replaceExisting; + bool unlinkIfInstance = validation.unlinkIfInstance; + + // 2. Find the source object + GameObject sourceObject = FindSceneObjectByName(targetName, includeInactive); + if (sourceObject == null) + { + return new ErrorResponse($"GameObject '{targetName}' not found in the active scene or prefab stage{(includeInactive ? " (including inactive objects)" : "")}."); + } + + // 3. Validate source object state + var objectValidation = ValidateSourceObjectForPrefab(sourceObject, unlinkIfInstance); + if (!objectValidation.isValid) + { + return new ErrorResponse(objectValidation.errorMessage); + } + + // 4. Check for path conflicts and track if file will be replaced + bool fileExistedAtPath = AssetDatabase.LoadAssetAtPath(finalPath) != null; + + if (!replaceExisting && fileExistedAtPath) + { + finalPath = AssetDatabase.GenerateUniqueAssetPath(finalPath); + McpLog.Info($"[ManagePrefabs] Generated unique path: {finalPath}"); + } + + // 5. Ensure directory exists + EnsureAssetDirectoryExists(finalPath); + + // 6. Unlink from existing prefab if needed + if (unlinkIfInstance && objectValidation.shouldUnlink) + { + try + { + // UnpackPrefabInstance requires the prefab instance root, not a child object + GameObject rootToUnlink = PrefabUtility.GetOutermostPrefabInstanceRoot(sourceObject); + if (rootToUnlink != null) + { + PrefabUtility.UnpackPrefabInstance(rootToUnlink, PrefabUnpackMode.Completely, InteractionMode.AutomatedAction); + McpLog.Info($"[ManagePrefabs] Unpacked prefab instance '{rootToUnlink.name}' before creating new prefab."); + } + } + catch (Exception e) + { + return new ErrorResponse($"Failed to unlink prefab instance: {e.Message}"); + } + } + + // 7. Create the prefab + try + { + GameObject result = CreatePrefabAsset(sourceObject, finalPath, replaceExisting); + + if (result == null) + { + return new ErrorResponse($"Failed to create prefab asset at '{finalPath}'."); + } + + // 8. Select the newly created instance + Selection.activeGameObject = result; + + return new SuccessResponse( + $"Prefab created at '{finalPath}' and instance linked.", + new + { + prefabPath = finalPath, + instanceId = result.GetInstanceID(), + instanceName = result.name, + wasUnlinked = unlinkIfInstance && objectValidation.shouldUnlink, + wasReplaced = replaceExisting && fileExistedAtPath, + componentCount = result.GetComponents().Length, + childCount = result.transform.childCount + } + ); + } + catch (Exception e) + { + McpLog.Error($"[ManagePrefabs] Error creating prefab at '{finalPath}': {e}"); + return new ErrorResponse($"Error saving prefab asset: {e.Message}"); + } + } + + /// + /// Validates parameters for creating a prefab from GameObject. + /// + private static (bool isValid, string errorMessage, string targetName, string finalPath, bool includeInactive, bool replaceExisting, bool unlinkIfInstance) + ValidateCreatePrefabParams(JObject @params) + { + string targetName = @params["target"]?.ToString() ?? @params["name"]?.ToString(); + if (string.IsNullOrEmpty(targetName)) + { + return (false, "'target' parameter is required for create_from_gameobject.", null, null, false, false, false); + } + + string requestedPath = @params["prefabPath"]?.ToString(); + if (string.IsNullOrWhiteSpace(requestedPath)) + { + return (false, "'prefabPath' parameter is required for create_from_gameobject.", targetName, null, false, false, false); + } + + string sanitizedPath = AssetPathUtility.SanitizeAssetPath(requestedPath); + if (sanitizedPath == null) + { + return (false, $"Invalid prefab path (path traversal detected): '{requestedPath}'", targetName, null, false, false, false); + } + if (string.IsNullOrEmpty(sanitizedPath)) + { + return (false, $"Invalid prefab path '{requestedPath}'. Path cannot be empty.", targetName, null, false, false, false); + } + if (!sanitizedPath.EndsWith(".prefab", StringComparison.OrdinalIgnoreCase)) + { + sanitizedPath += ".prefab"; + } + + // Validate path is within Assets folder + if (!sanitizedPath.StartsWith("Assets/", StringComparison.OrdinalIgnoreCase)) + { + return (false, $"Prefab path must be within the Assets folder. Got: '{sanitizedPath}'", targetName, null, false, false, false); + } + + bool includeInactive = @params["searchInactive"]?.ToObject() ?? false; + bool replaceExisting = @params["allowOverwrite"]?.ToObject() ?? false; + bool unlinkIfInstance = @params["unlinkIfInstance"]?.ToObject() ?? false; + + return (true, null, targetName, sanitizedPath, includeInactive, replaceExisting, unlinkIfInstance); + } + + /// + /// Validates source object can be converted to prefab. + /// + private static (bool isValid, string errorMessage, bool shouldUnlink, string existingPrefabPath) + ValidateSourceObjectForPrefab(GameObject sourceObject, bool unlinkIfInstance) + { + // Check if this is a Prefab Asset (the .prefab file itself in the editor) + if (PrefabUtility.IsPartOfPrefabAsset(sourceObject)) + { + return (false, + $"GameObject '{sourceObject.name}' is part of a prefab asset. " + + "Open the prefab stage to save changes instead.", + false, null); + } + + // Check if this is already a Prefab Instance + PrefabInstanceStatus status = PrefabUtility.GetPrefabInstanceStatus(sourceObject); + if (status != PrefabInstanceStatus.NotAPrefab) + { + string existingPath = PrefabUtility.GetPrefabAssetPathOfNearestInstanceRoot(sourceObject); + + if (!unlinkIfInstance) + { + return (false, + $"GameObject '{sourceObject.name}' is already linked to prefab '{existingPath}'. " + + "Set 'unlinkIfInstance' to true to unlink it first, or modify the existing prefab instead.", + false, existingPath); + } + + // Needs to be unlinked + return (true, null, true, existingPath); + } + + return (true, null, false, null); + } + + /// + /// Creates a prefab asset from a GameObject. + /// + private static GameObject CreatePrefabAsset(GameObject sourceObject, string path, bool replaceExisting) + { + GameObject result = PrefabUtility.SaveAsPrefabAssetAndConnect( + sourceObject, + path, + InteractionMode.AutomatedAction + ); + + string action = replaceExisting ? "Replaced existing" : "Created new"; + McpLog.Info($"[ManagePrefabs] {action} prefab at '{path}'."); + + if (result != null) + { + AssetDatabase.SaveAssets(); + AssetDatabase.Refresh(); + } + + return result; + } + + #endregion + + /// + /// Ensures the directory for an asset path exists, creating it if necessary. + /// + private static void EnsureAssetDirectoryExists(string assetPath) + { + string directory = Path.GetDirectoryName(assetPath); + if (string.IsNullOrEmpty(directory)) + { + return; + } + + // Use Application.dataPath for more reliable path resolution + // Application.dataPath points to the Assets folder (e.g., ".../ProjectName/Assets") + string assetsPath = Application.dataPath; + string projectRoot = Path.GetDirectoryName(assetsPath); + string fullDirectory = Path.Combine(projectRoot, directory); + + if (!Directory.Exists(fullDirectory)) + { + Directory.CreateDirectory(fullDirectory); + AssetDatabase.Refresh(ImportAssetOptions.ForceSynchronousImport); + McpLog.Info($"[ManagePrefabs] Created directory: {directory}"); + } + } + + /// + /// Finds a GameObject by name in the active scene or current prefab stage. + /// + private static GameObject FindSceneObjectByName(string name, bool includeInactive) + { + // First check if we're in Prefab Stage + PrefabStage stage = PrefabStageUtility.GetCurrentPrefabStage(); + if (stage?.prefabContentsRoot != null) + { + foreach (Transform transform in stage.prefabContentsRoot.GetComponentsInChildren(includeInactive)) + { + if (transform.name == name && (includeInactive || transform.gameObject.activeSelf)) + { + return transform.gameObject; + } + } + } + + // Search in the active scene + Scene activeScene = SceneManager.GetActiveScene(); + foreach (GameObject root in activeScene.GetRootGameObjects()) + { + // Check the root object itself + if (root.name == name && (includeInactive || root.activeSelf)) + { + return root; + } + + // Check children + foreach (Transform transform in root.GetComponentsInChildren(includeInactive)) + { + if (transform.name == name && (includeInactive || transform.gameObject.activeSelf)) + { + return transform.gameObject; + } + } + } + + return null; + } + + #region Read Operations + + /// + /// Gets basic metadata information about a prefab asset. + /// + private static object GetInfo(JObject @params) + { + string prefabPath = @params["prefabPath"]?.ToString() ?? @params["path"]?.ToString(); + if (string.IsNullOrEmpty(prefabPath)) + { + return new ErrorResponse("'prefabPath' parameter is required for get_info."); + } + + string sanitizedPath = AssetPathUtility.SanitizeAssetPath(prefabPath); + if (string.IsNullOrEmpty(sanitizedPath)) + { + return new ErrorResponse($"Invalid prefab path: '{prefabPath}'."); + } + GameObject prefabAsset = AssetDatabase.LoadAssetAtPath(sanitizedPath); + if (prefabAsset == null) + { + return new ErrorResponse($"No prefab asset found at path '{sanitizedPath}'."); + } + + string guid = PrefabUtilityHelper.GetPrefabGUID(sanitizedPath); + PrefabAssetType assetType = PrefabUtility.GetPrefabAssetType(prefabAsset); + string prefabTypeString = assetType.ToString(); + var componentTypes = PrefabUtilityHelper.GetComponentTypeNames(prefabAsset); + int childCount = PrefabUtilityHelper.CountChildrenRecursive(prefabAsset.transform); + var (isVariant, parentPrefab, _) = PrefabUtilityHelper.GetVariantInfo(prefabAsset); + + return new SuccessResponse( + $"Successfully retrieved prefab info.", + new + { + assetPath = sanitizedPath, + guid = guid, + prefabType = prefabTypeString, + rootObjectName = prefabAsset.name, + rootComponentTypes = componentTypes, + childCount = childCount, + isVariant = isVariant, + parentPrefab = parentPrefab + } + ); + } + + /// + /// Gets the hierarchical structure of a prefab asset. + /// Returns all objects in the prefab for full client-side filtering and search. + /// + private static object GetHierarchy(JObject @params) + { + string prefabPath = @params["prefabPath"]?.ToString() ?? @params["path"]?.ToString(); + if (string.IsNullOrEmpty(prefabPath)) + { + return new ErrorResponse("'prefabPath' parameter is required for get_hierarchy."); + } + + string sanitizedPath = AssetPathUtility.SanitizeAssetPath(prefabPath); + if (string.IsNullOrEmpty(sanitizedPath)) + { + return new ErrorResponse($"Invalid prefab path '{prefabPath}'. Path traversal sequences are not allowed."); + } + + // Load prefab contents in background (without opening stage UI) + GameObject prefabContents = PrefabUtility.LoadPrefabContents(sanitizedPath); + if (prefabContents == null) + { + return new ErrorResponse($"Failed to load prefab contents from '{sanitizedPath}'."); + } + + try + { + // Build complete hierarchy items (no pagination) + var allItems = BuildHierarchyItems(prefabContents.transform, sanitizedPath); + + return new SuccessResponse( + $"Successfully retrieved prefab hierarchy. Found {allItems.Count} objects.", + new + { + prefabPath = sanitizedPath, + total = allItems.Count, + items = allItems + } + ); + } + finally + { + // Always unload prefab contents to free memory + PrefabUtility.UnloadPrefabContents(prefabContents); + } + } + + #endregion + + #region Headless Prefab Editing + + /// + /// Modifies a prefab's contents directly without opening the prefab stage. + /// This is ideal for automated/agentic workflows as it avoids UI, dirty flags, and dialogs. + /// + private static object ModifyContents(JObject @params) + { + string prefabPath = @params["prefabPath"]?.ToString() ?? @params["path"]?.ToString(); + if (string.IsNullOrEmpty(prefabPath)) + { + return new ErrorResponse("'prefabPath' parameter is required for modify_contents."); + } + + string sanitizedPath = AssetPathUtility.SanitizeAssetPath(prefabPath); + if (string.IsNullOrEmpty(sanitizedPath)) + { + return new ErrorResponse($"Invalid prefab path '{prefabPath}'. Path traversal sequences are not allowed."); + } + + // Load prefab contents in isolated context (no UI) + GameObject prefabContents = PrefabUtility.LoadPrefabContents(sanitizedPath); + if (prefabContents == null) + { + return new ErrorResponse($"Failed to load prefab contents from '{sanitizedPath}'."); + } + + try + { + // Find target object within the prefab (defaults to root) + string targetName = @params["target"]?.ToString(); + GameObject targetGo = FindInPrefabContents(prefabContents, targetName); + + if (targetGo == null) + { + string searchedFor = string.IsNullOrEmpty(targetName) ? "root" : $"'{targetName}'"; + return new ErrorResponse($"Target {searchedFor} not found in prefab '{sanitizedPath}'."); + } + + // Apply modifications + var modifyResult = ApplyModificationsToPrefabObject(targetGo, @params, prefabContents); + if (modifyResult.error != null) + { + return modifyResult.error; + } + + // Skip saving when no modifications were made to avoid unnecessary asset writes + if (!modifyResult.modified) + { + return new SuccessResponse( + $"Prefab '{sanitizedPath}' is already up to date; no changes were applied.", + new + { + prefabPath = sanitizedPath, + targetName = targetGo.name, + modified = false + } + ); + } + + // Save the prefab + bool success; + PrefabUtility.SaveAsPrefabAsset(prefabContents, sanitizedPath, out success); + + if (!success) + { + return new ErrorResponse($"Failed to save prefab asset at '{sanitizedPath}'."); + } + + AssetDatabase.Refresh(); + + McpLog.Info($"[ManagePrefabs] Successfully modified and saved prefab '{sanitizedPath}' (headless)."); + + return new SuccessResponse( + $"Prefab '{sanitizedPath}' modified and saved successfully.", + new + { + prefabPath = sanitizedPath, + targetName = targetGo.name, + modified = modifyResult.modified, + transform = new + { + position = new { x = targetGo.transform.localPosition.x, y = targetGo.transform.localPosition.y, z = targetGo.transform.localPosition.z }, + rotation = new { x = targetGo.transform.localEulerAngles.x, y = targetGo.transform.localEulerAngles.y, z = targetGo.transform.localEulerAngles.z }, + scale = new { x = targetGo.transform.localScale.x, y = targetGo.transform.localScale.y, z = targetGo.transform.localScale.z } + }, + componentTypes = PrefabUtilityHelper.GetComponentTypeNames(targetGo) + } + ); + } + finally + { + // Always unload prefab contents to free memory + PrefabUtility.UnloadPrefabContents(prefabContents); + } + } + + /// + /// Finds a GameObject within loaded prefab contents by name or path. + /// + private static GameObject FindInPrefabContents(GameObject prefabContents, string target) + { + if (string.IsNullOrEmpty(target)) + { + // Return root if no target specified + return prefabContents; + } + + // Try to find by path first (e.g., "Parent/Child/Target") + if (target.Contains("/")) + { + Transform found = prefabContents.transform.Find(target); + if (found != null) + { + return found.gameObject; + } + + // If path starts with root name, try without it + if (target.StartsWith(prefabContents.name + "/")) + { + string relativePath = target.Substring(prefabContents.name.Length + 1); + found = prefabContents.transform.Find(relativePath); + if (found != null) + { + return found.gameObject; + } + } + } + + // Check if target matches root name + if (prefabContents.name == target) + { + return prefabContents; + } + + // Search by name in hierarchy + foreach (Transform t in prefabContents.GetComponentsInChildren(true)) + { + if (t.gameObject.name == target) + { + return t.gameObject; + } + } + + return null; + } + + /// + /// Applies modifications to a GameObject within loaded prefab contents. + /// Returns (modified: bool, error: ErrorResponse or null). + /// + private static (bool modified, ErrorResponse error) ApplyModificationsToPrefabObject(GameObject targetGo, JObject @params, GameObject prefabRoot) + { + bool modified = false; + + // Name change + string newName = @params["name"]?.ToString(); + if (!string.IsNullOrEmpty(newName) && targetGo.name != newName) + { + // If renaming the root, this will affect the prefab asset name on save + targetGo.name = newName; + modified = true; + } + + // Active state + bool? setActive = @params["setActive"]?.ToObject(); + if (setActive.HasValue && targetGo.activeSelf != setActive.Value) + { + targetGo.SetActive(setActive.Value); + modified = true; + } + + // Tag + string tag = @params["tag"]?.ToString(); + if (tag != null && targetGo.tag != tag) + { + string tagToSet = string.IsNullOrEmpty(tag) ? "Untagged" : tag; + try + { + targetGo.tag = tagToSet; + modified = true; + } + catch (Exception ex) + { + return (false, new ErrorResponse($"Failed to set tag to '{tagToSet}': {ex.Message}")); + } + } + + // Layer + string layerName = @params["layer"]?.ToString(); + if (!string.IsNullOrEmpty(layerName)) + { + int layerId = LayerMask.NameToLayer(layerName); + if (layerId == -1) + { + return (false, new ErrorResponse($"Invalid layer specified: '{layerName}'. Use a valid layer name.")); + } + if (targetGo.layer != layerId) + { + targetGo.layer = layerId; + modified = true; + } + } + + // Transform: position, rotation, scale + Vector3? position = VectorParsing.ParseVector3(@params["position"]); + Vector3? rotation = VectorParsing.ParseVector3(@params["rotation"]); + Vector3? scale = VectorParsing.ParseVector3(@params["scale"]); + + if (position.HasValue && targetGo.transform.localPosition != position.Value) + { + targetGo.transform.localPosition = position.Value; + modified = true; + } + if (rotation.HasValue && targetGo.transform.localEulerAngles != rotation.Value) + { + targetGo.transform.localEulerAngles = rotation.Value; + modified = true; + } + if (scale.HasValue && targetGo.transform.localScale != scale.Value) + { + targetGo.transform.localScale = scale.Value; + modified = true; + } + + // Parent change (within prefab hierarchy) + JToken parentToken = @params["parent"]; + if (parentToken != null) + { + string parentTarget = parentToken.ToString(); + Transform newParent = null; + + if (!string.IsNullOrEmpty(parentTarget)) + { + GameObject parentGo = FindInPrefabContents(prefabRoot, parentTarget); + if (parentGo == null) + { + return (false, new ErrorResponse($"Parent '{parentTarget}' not found in prefab.")); + } + if (parentGo.transform.IsChildOf(targetGo.transform)) + { + return (false, new ErrorResponse($"Cannot parent '{targetGo.name}' to '{parentGo.name}' as it would create a hierarchy loop.")); + } + newParent = parentGo.transform; + } + + if (targetGo.transform.parent != newParent) + { + targetGo.transform.SetParent(newParent, true); + modified = true; + } + } + + // Components to add + if (@params["componentsToAdd"] is JArray componentsToAdd) + { + foreach (var compToken in componentsToAdd) + { + string typeName = compToken.Type == JTokenType.String + ? compToken.ToString() + : (compToken as JObject)?["typeName"]?.ToString(); + + if (!string.IsNullOrEmpty(typeName)) + { + if (!ComponentResolver.TryResolve(typeName, out Type componentType, out string error)) + { + return (false, new ErrorResponse($"Component type '{typeName}' not found: {error}")); + } + targetGo.AddComponent(componentType); + modified = true; + } + } + } + + // Components to remove + if (@params["componentsToRemove"] is JArray componentsToRemove) + { + foreach (var compToken in componentsToRemove) + { + string typeName = compToken.ToString(); + if (!string.IsNullOrEmpty(typeName)) + { + if (!ComponentResolver.TryResolve(typeName, out Type componentType, out string error)) + { + return (false, new ErrorResponse($"Component type '{typeName}' not found: {error}")); + } + Component comp = targetGo.GetComponent(componentType); + if (comp != null) + { + UnityEngine.Object.DestroyImmediate(comp); + modified = true; + } + } + } + } + + // Create child GameObjects (supports single object or array) + JToken createChildToken = @params["createChild"] ?? @params["create_child"]; + if (createChildToken != null) + { + // Handle array of children + if (createChildToken is JArray childArray) + { + foreach (var childToken in childArray) + { + var childResult = CreateSingleChildInPrefab(childToken, targetGo, prefabRoot); + if (childResult.error != null) + { + return (false, childResult.error); + } + if (childResult.created) + { + modified = true; + } + } + } + else + { + // Handle single child object + var childResult = CreateSingleChildInPrefab(createChildToken, targetGo, prefabRoot); + if (childResult.error != null) + { + return (false, childResult.error); + } + if (childResult.created) + { + modified = true; + } + } + } + + return (modified, null); + } + + /// + /// Creates a single child GameObject within the prefab contents. + /// + private static (bool created, ErrorResponse error) CreateSingleChildInPrefab(JToken createChildToken, GameObject defaultParent, GameObject prefabRoot) + { + JObject childParams; + if (createChildToken is JObject obj) + { + childParams = obj; + } + else + { + return (false, new ErrorResponse("'create_child' must be an object with child properties.")); + } + + // Required: name + string childName = childParams["name"]?.ToString(); + if (string.IsNullOrEmpty(childName)) + { + return (false, new ErrorResponse("'create_child.name' is required.")); + } + + // Optional: parent (defaults to the target object) + string parentName = childParams["parent"]?.ToString(); + Transform parentTransform = defaultParent.transform; + if (!string.IsNullOrEmpty(parentName)) + { + GameObject parentGo = FindInPrefabContents(prefabRoot, parentName); + if (parentGo == null) + { + return (false, new ErrorResponse($"Parent '{parentName}' not found in prefab for create_child.")); + } + parentTransform = parentGo.transform; + } + + // Create the GameObject + GameObject newChild; + string primitiveType = childParams["primitiveType"]?.ToString() ?? childParams["primitive_type"]?.ToString(); + if (!string.IsNullOrEmpty(primitiveType)) + { + try + { + PrimitiveType type = (PrimitiveType)Enum.Parse(typeof(PrimitiveType), primitiveType, true); + newChild = GameObject.CreatePrimitive(type); + newChild.name = childName; + } + catch (ArgumentException) + { + return (false, new ErrorResponse($"Invalid primitive type: '{primitiveType}'. Valid types: {string.Join(", ", Enum.GetNames(typeof(PrimitiveType)))}")); + } + } + else + { + newChild = new GameObject(childName); + } + + // Set parent + newChild.transform.SetParent(parentTransform, false); + + // Apply transform properties + Vector3? position = VectorParsing.ParseVector3(childParams["position"]); + Vector3? rotation = VectorParsing.ParseVector3(childParams["rotation"]); + Vector3? scale = VectorParsing.ParseVector3(childParams["scale"]); + + if (position.HasValue) + { + newChild.transform.localPosition = position.Value; + } + if (rotation.HasValue) + { + newChild.transform.localEulerAngles = rotation.Value; + } + if (scale.HasValue) + { + newChild.transform.localScale = scale.Value; + } + + // Add components + JArray componentsToAdd = childParams["componentsToAdd"] as JArray ?? childParams["components_to_add"] as JArray; + if (componentsToAdd != null) + { + for (int i = 0; i < componentsToAdd.Count; i++) + { + var compToken = componentsToAdd[i]; + string typeName = compToken.Type == JTokenType.String + ? compToken.ToString() + : (compToken as JObject)?["typeName"]?.ToString(); + + if (string.IsNullOrEmpty(typeName)) + { + // Clean up partially created child + UnityEngine.Object.DestroyImmediate(newChild); + return (false, new ErrorResponse($"create_child.components_to_add[{i}] must be a string or object with 'typeName' field, got {compToken.Type}")); + } + + if (!ComponentResolver.TryResolve(typeName, out Type componentType, out string error)) + { + // Clean up partially created child + UnityEngine.Object.DestroyImmediate(newChild); + return (false, new ErrorResponse($"Component type '{typeName}' not found for create_child: {error}")); + } + newChild.AddComponent(componentType); + } + } + + // Set tag if specified + string tag = childParams["tag"]?.ToString(); + if (!string.IsNullOrEmpty(tag)) + { + try + { + newChild.tag = tag; + } + catch (Exception ex) + { + UnityEngine.Object.DestroyImmediate(newChild); + return (false, new ErrorResponse($"Failed to set tag '{tag}' on child '{childName}': {ex.Message}")); + } + } + + // Set layer if specified + string layerName = childParams["layer"]?.ToString(); + if (!string.IsNullOrEmpty(layerName)) + { + int layerId = LayerMask.NameToLayer(layerName); + if (layerId == -1) + { + UnityEngine.Object.DestroyImmediate(newChild); + return (false, new ErrorResponse($"Invalid layer '{layerName}' for child '{childName}'. Use a valid layer name.")); + } + newChild.layer = layerId; + } + + // Set active state + bool? setActive = childParams["setActive"]?.ToObject() ?? childParams["set_active"]?.ToObject(); + if (setActive.HasValue) + { + newChild.SetActive(setActive.Value); + } + + McpLog.Info($"[ManagePrefabs] Created child '{childName}' under '{parentTransform.name}' in prefab."); + return (true, null); + } + + #endregion + + #region Hierarchy Builder + + /// + /// Builds a flat list of hierarchy items from a transform root. + /// + /// The root transform of the prefab. + /// Asset path of the main prefab. + /// List of hierarchy items with prefab information. + private static List BuildHierarchyItems(Transform root, string mainPrefabPath) + { + var items = new List(); + BuildHierarchyItemsRecursive(root, root, mainPrefabPath, "", items); + return items; + } + + /// + /// Recursively builds hierarchy items. + /// + /// Current transform being processed. + /// Root transform of the main prefab asset. + /// Asset path of the main prefab. + /// Parent path for building full hierarchy path. + /// List to accumulate hierarchy items. + private static void BuildHierarchyItemsRecursive(Transform transform, Transform mainPrefabRoot, string mainPrefabPath, string parentPath, List items) + { + if (transform == null) return; + + string name = transform.gameObject.name; + string path = string.IsNullOrEmpty(parentPath) ? name : $"{parentPath}/{name}"; + int instanceId = transform.gameObject.GetInstanceID(); + bool activeSelf = transform.gameObject.activeSelf; + int childCount = transform.childCount; + var componentTypes = PrefabUtilityHelper.GetComponentTypeNames(transform.gameObject); + + // Prefab information + bool isNestedPrefab = PrefabUtility.IsAnyPrefabInstanceRoot(transform.gameObject); + bool isPrefabRoot = transform == mainPrefabRoot; + int nestingDepth = isPrefabRoot ? 0 : PrefabUtilityHelper.GetPrefabNestingDepth(transform.gameObject, mainPrefabRoot); + string parentPrefabPath = isNestedPrefab && !isPrefabRoot + ? PrefabUtilityHelper.GetParentPrefabPath(transform.gameObject, mainPrefabRoot) + : null; + string nestedPrefabPath = isNestedPrefab ? PrefabUtilityHelper.GetNestedPrefabPath(transform.gameObject) : null; + + var item = new + { + name = name, + instanceId = instanceId, + path = path, + activeSelf = activeSelf, + childCount = childCount, + componentTypes = componentTypes, + prefab = new + { + isRoot = isPrefabRoot, + isNestedRoot = isNestedPrefab, + nestingDepth = nestingDepth, + assetPath = isNestedPrefab ? nestedPrefabPath : mainPrefabPath, + parentPath = parentPrefabPath + } + }; + + items.Add(item); + + // Recursively process children + foreach (Transform child in transform) + { + BuildHierarchyItemsRecursive(child, mainPrefabRoot, mainPrefabPath, path, items); + } + } + + #endregion + } +} diff --git a/Packages/MCPForUnity/Editor/Tools/Prefabs/ManagePrefabs.cs.meta b/Packages/MCPForUnity/Editor/Tools/Prefabs/ManagePrefabs.cs.meta new file mode 100644 index 00000000..27182e77 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/Prefabs/ManagePrefabs.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c14e76b2aa7bb4570a88903b061e946e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Tools/ReadConsole.cs b/Packages/MCPForUnity/Editor/Tools/ReadConsole.cs new file mode 100644 index 00000000..342f7b1f --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/ReadConsole.cs @@ -0,0 +1,641 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using MCPForUnity.Editor.Helpers; // For Response class +using Newtonsoft.Json.Linq; +using UnityEditor; +using UnityEditorInternal; +using UnityEngine; + +namespace MCPForUnity.Editor.Tools +{ + /// + /// Handles reading and clearing Unity Editor console log entries. + /// Uses reflection to access internal LogEntry methods/properties. + /// + [McpForUnityTool("read_console", AutoRegister = false)] + public static class ReadConsole + { + // (Calibration removed) + + // Reflection members for accessing internal LogEntry data + // private static MethodInfo _getEntriesMethod; // Removed as it's unused and fails reflection + private static MethodInfo _startGettingEntriesMethod; + private static MethodInfo _endGettingEntriesMethod; // Renamed from _stopGettingEntriesMethod, trying End... + private static MethodInfo _clearMethod; + private static MethodInfo _getCountMethod; + private static MethodInfo _getEntryMethod; + private static FieldInfo _modeField; + private static FieldInfo _messageField; + private static FieldInfo _fileField; + private static FieldInfo _lineField; + private static FieldInfo _instanceIdField; + + // Note: Timestamp is not directly available in LogEntry; need to parse message or find alternative? + + // Static constructor for reflection setup + static ReadConsole() + { + try + { + Type logEntriesType = typeof(EditorApplication).Assembly.GetType( + "UnityEditor.LogEntries" + ); + if (logEntriesType == null) + throw new Exception("Could not find internal type UnityEditor.LogEntries"); + + + + // Include NonPublic binding flags as internal APIs might change accessibility + BindingFlags staticFlags = + BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic; + BindingFlags instanceFlags = + BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic; + + _startGettingEntriesMethod = logEntriesType.GetMethod( + "StartGettingEntries", + staticFlags + ); + if (_startGettingEntriesMethod == null) + throw new Exception("Failed to reflect LogEntries.StartGettingEntries"); + + // Try reflecting EndGettingEntries based on warning message + _endGettingEntriesMethod = logEntriesType.GetMethod( + "EndGettingEntries", + staticFlags + ); + if (_endGettingEntriesMethod == null) + throw new Exception("Failed to reflect LogEntries.EndGettingEntries"); + + _clearMethod = logEntriesType.GetMethod("Clear", staticFlags); + if (_clearMethod == null) + throw new Exception("Failed to reflect LogEntries.Clear"); + + _getCountMethod = logEntriesType.GetMethod("GetCount", staticFlags); + if (_getCountMethod == null) + throw new Exception("Failed to reflect LogEntries.GetCount"); + + _getEntryMethod = logEntriesType.GetMethod("GetEntryInternal", staticFlags); + if (_getEntryMethod == null) + throw new Exception("Failed to reflect LogEntries.GetEntryInternal"); + + Type logEntryType = typeof(EditorApplication).Assembly.GetType( + "UnityEditor.LogEntry" + ); + if (logEntryType == null) + throw new Exception("Could not find internal type UnityEditor.LogEntry"); + + _modeField = logEntryType.GetField("mode", instanceFlags); + if (_modeField == null) + throw new Exception("Failed to reflect LogEntry.mode"); + + _messageField = logEntryType.GetField("message", instanceFlags); + if (_messageField == null) + throw new Exception("Failed to reflect LogEntry.message"); + + _fileField = logEntryType.GetField("file", instanceFlags); + if (_fileField == null) + throw new Exception("Failed to reflect LogEntry.file"); + + _lineField = logEntryType.GetField("line", instanceFlags); + if (_lineField == null) + throw new Exception("Failed to reflect LogEntry.line"); + + _instanceIdField = logEntryType.GetField("instanceID", instanceFlags); + if (_instanceIdField == null) + throw new Exception("Failed to reflect LogEntry.instanceID"); + + // (Calibration removed) + + } + catch (Exception e) + { + McpLog.Error( + $"[ReadConsole] Static Initialization Failed: Could not setup reflection for LogEntries/LogEntry. Console reading/clearing will likely fail. Specific Error: {e.Message}" + ); + // Set members to null to prevent NullReferenceExceptions later, HandleCommand should check this. + _startGettingEntriesMethod = + _endGettingEntriesMethod = + _clearMethod = + _getCountMethod = + _getEntryMethod = + null; + _modeField = _messageField = _fileField = _lineField = _instanceIdField = null; + } + } + + // --- Main Handler --- + + public static object HandleCommand(JObject @params) + { + // Check if ALL required reflection members were successfully initialized. + if ( + _startGettingEntriesMethod == null + || _endGettingEntriesMethod == null + || _clearMethod == null + || _getCountMethod == null + || _getEntryMethod == null + || _modeField == null + || _messageField == null + || _fileField == null + || _lineField == null + || _instanceIdField == null + ) + { + // Log the error here as well for easier debugging in Unity Console + McpLog.Error( + "[ReadConsole] HandleCommand called but reflection members are not initialized. Static constructor might have failed silently or there's an issue." + ); + return new ErrorResponse( + "ReadConsole handler failed to initialize due to reflection errors. Cannot access console logs." + ); + } + + if (@params == null) + { + return new ErrorResponse("Parameters cannot be null."); + } + + var p = new ToolParams(@params); + string action = p.Get("action", "get").ToLower(); + + try + { + if (action == "clear") + { + return ClearConsole(); + } + else if (action == "get") + { + // Extract parameters for 'get' + var types = + (p.GetRaw("types") as JArray)?.Select(t => t.ToString().ToLower()).ToList() + ?? new List { "error", "warning" }; + int? count = p.GetInt("count"); + int? pageSize = p.GetInt("pageSize"); + int? cursor = p.GetInt("cursor"); + string filterText = p.Get("filterText"); + string sinceTimestampStr = p.Get("sinceTimestamp"); // TODO: Implement timestamp filtering + string format = p.Get("format", "plain").ToLower(); + bool includeStacktrace = p.GetBool("includeStacktrace", false); + + if (types.Contains("all")) + { + types = new List { "error", "warning", "log" }; // Expand 'all' + } + + if (!string.IsNullOrEmpty(sinceTimestampStr)) + { + McpLog.Warn( + "[ReadConsole] Filtering by 'since_timestamp' is not currently implemented." + ); + // Need a way to get timestamp per log entry. + } + + return GetConsoleEntries( + types, + count, + pageSize, + cursor, + filterText, + format, + includeStacktrace + ); + } + else + { + return new ErrorResponse( + $"Unknown action: '{action}'. Valid actions are 'get' or 'clear'." + ); + } + } + catch (Exception e) + { + McpLog.Error($"[ReadConsole] Action '{action}' failed: {e}"); + return new ErrorResponse($"Internal error processing action '{action}': {e.Message}"); + } + } + + // --- Action Implementations --- + + private static object ClearConsole() + { + try + { + _clearMethod.Invoke(null, null); // Static method, no instance, no parameters + return new SuccessResponse("Console cleared successfully."); + } + catch (Exception e) + { + McpLog.Error($"[ReadConsole] Failed to clear console: {e}"); + return new ErrorResponse($"Failed to clear console: {e.Message}"); + } + } + + /// + /// Retrieves console log entries with optional filtering and paging. + /// + /// Log types to include (e.g., "error", "warning", "log"). + /// Maximum entries to return in non-paging mode. Ignored when paging is active. + /// Number of entries per page. Defaults to 50 when omitted. + /// Starting index for paging (0-based). Defaults to 0. + /// Optional text filter (case-insensitive substring match). + /// Output format: "plain", "detailed", or "json". + /// Whether to include stack traces in the output. + /// A success response with entries, or an error response. + private static object GetConsoleEntries( + List types, + int? count, + int? pageSize, + int? cursor, + string filterText, + string format, + bool includeStacktrace + ) + { + List formattedEntries = new List(); + int retrievedCount = 0; + int totalMatches = 0; + bool usePaging = pageSize.HasValue || cursor.HasValue; + // pageSize defaults to 50 when omitted; count is the overall non-paging limit only + int resolvedPageSize = Mathf.Clamp(pageSize ?? 50, 1, 500); + int resolvedCursor = Mathf.Max(0, cursor ?? 0); + int pageEndExclusive = resolvedCursor + resolvedPageSize; + + try + { + // LogEntries requires calling Start/Stop around GetEntries/GetEntryInternal + _startGettingEntriesMethod.Invoke(null, null); + + int totalEntries = (int)_getCountMethod.Invoke(null, null); + // Create instance to pass to GetEntryInternal - Ensure the type is correct + Type logEntryType = typeof(EditorApplication).Assembly.GetType( + "UnityEditor.LogEntry" + ); + if (logEntryType == null) + throw new Exception( + "Could not find internal type UnityEditor.LogEntry during GetConsoleEntries." + ); + object logEntryInstance = Activator.CreateInstance(logEntryType); + + for (int i = 0; i < totalEntries; i++) + { + // Get the entry data into our instance using reflection + _getEntryMethod.Invoke(null, new object[] { i, logEntryInstance }); + + // Extract data using reflection + int mode = (int)_modeField.GetValue(logEntryInstance); + string message = (string)_messageField.GetValue(logEntryInstance); + string file = (string)_fileField.GetValue(logEntryInstance); + + int line = (int)_lineField.GetValue(logEntryInstance); + // int instanceId = (int)_instanceIdField.GetValue(logEntryInstance); + + if (string.IsNullOrEmpty(message)) + { + continue; // Skip empty messages + } + + // (Calibration removed) + + // --- Filtering --- + // Prefer classifying severity from message/stacktrace; fallback to mode bits if needed + LogType unityType = InferTypeFromMessage(message); + bool isExplicitDebug = IsExplicitDebugLog(message); + if (!isExplicitDebug && unityType == LogType.Log) + { + unityType = GetLogTypeFromMode(mode); + } + + bool want; + // Treat Exception/Assert as errors for filtering convenience + if (unityType == LogType.Exception) + { + want = types.Contains("error") || types.Contains("exception"); + } + else if (unityType == LogType.Assert) + { + want = types.Contains("error") || types.Contains("assert"); + } + else + { + want = types.Contains(unityType.ToString().ToLowerInvariant()); + } + + if (!want) continue; + + // Filter by text (case-insensitive) + if ( + !string.IsNullOrEmpty(filterText) + && message.IndexOf(filterText, StringComparison.OrdinalIgnoreCase) < 0 + ) + { + continue; + } + + // TODO: Filter by timestamp (requires timestamp data) + + // --- Formatting --- + string stackTrace = includeStacktrace ? ExtractStackTrace(message) : null; + // Always get first line for the message, use full message only if no stack trace exists + string[] messageLines = message.Split( + new[] { '\n', '\r' }, + StringSplitOptions.RemoveEmptyEntries + ); + string messageOnly = messageLines.Length > 0 ? messageLines[0] : message; + + // If not including stacktrace, ensure we only show the first line + if (!includeStacktrace) + { + stackTrace = null; + } + + object formattedEntry = null; + switch (format) + { + case "plain": + formattedEntry = messageOnly; + break; + case "json": + case "detailed": // Treat detailed as json for structured return + default: + formattedEntry = new + { + type = unityType.ToString(), + message = messageOnly, + file = file, + line = line, + // timestamp = "", // TODO + stackTrace = stackTrace, // Will be null if includeStacktrace is false or no stack found + }; + break; + } + + totalMatches++; + + if (usePaging) + { + if (totalMatches > resolvedCursor && totalMatches <= pageEndExclusive) + { + formattedEntries.Add(formattedEntry); + retrievedCount++; + } + // Early exit: we've filled the page and only need to check if more exist + else if (totalMatches > pageEndExclusive) + { + // We've passed the page; totalMatches now indicates truncation + break; + } + } + else + { + formattedEntries.Add(formattedEntry); + retrievedCount++; + + // Apply count limit (after filtering) + if (count.HasValue && retrievedCount >= count.Value) + { + break; + } + } + } + } + catch (Exception e) + { + McpLog.Error($"[ReadConsole] Error while retrieving log entries: {e}"); + // EndGettingEntries will be called in the finally block + return new ErrorResponse($"Error retrieving log entries: {e.Message}"); + } + finally + { + // Ensure we always call EndGettingEntries + try + { + _endGettingEntriesMethod.Invoke(null, null); + } + catch (Exception e) + { + McpLog.Error($"[ReadConsole] Failed to call EndGettingEntries: {e}"); + // Don't return error here as we might have valid data, but log it. + } + } + + if (usePaging) + { + bool truncated = totalMatches > pageEndExclusive; + string nextCursor = truncated ? pageEndExclusive.ToString() : null; + var payload = new + { + cursor = resolvedCursor, + pageSize = resolvedPageSize, + nextCursor = nextCursor, + truncated = truncated, + total = totalMatches, + items = formattedEntries, + }; + + return new SuccessResponse( + $"Retrieved {formattedEntries.Count} log entries.", + payload + ); + } + + // Return the filtered and formatted list (might be empty) + return new SuccessResponse( + $"Retrieved {formattedEntries.Count} log entries.", + formattedEntries + ); + } + + // --- Internal Helpers --- + + // Mapping bits from LogEntry.mode. These may vary by Unity version. + private const int ModeBitError = 1 << 0; + private const int ModeBitAssert = 1 << 1; + private const int ModeBitWarning = 1 << 2; + private const int ModeBitLog = 1 << 3; + private const int ModeBitException = 1 << 4; // often combined with Error bits + private const int ModeBitScriptingError = 1 << 9; + private const int ModeBitScriptingWarning = 1 << 10; + private const int ModeBitScriptingLog = 1 << 11; + private const int ModeBitScriptingException = 1 << 18; + private const int ModeBitScriptingAssertion = 1 << 22; + + private static LogType GetLogTypeFromMode(int mode) + { + // Preserve Unity's real type (no remapping); bits may vary by version + if ((mode & (ModeBitException | ModeBitScriptingException)) != 0) return LogType.Exception; + if ((mode & (ModeBitError | ModeBitScriptingError)) != 0) return LogType.Error; + if ((mode & (ModeBitAssert | ModeBitScriptingAssertion)) != 0) return LogType.Assert; + if ((mode & (ModeBitWarning | ModeBitScriptingWarning)) != 0) return LogType.Warning; + return LogType.Log; + } + + // (Calibration helpers removed) + + /// + /// Classifies severity using message/stacktrace content. Works across Unity versions. + /// + private static LogType InferTypeFromMessage(string fullMessage) + { + if (string.IsNullOrEmpty(fullMessage)) return LogType.Log; + + // Fast path: look for explicit Debug API names in the appended stack trace + // e.g., "UnityEngine.Debug:LogError (object)" or "LogWarning" + if (fullMessage.IndexOf("LogError", StringComparison.OrdinalIgnoreCase) >= 0) + return LogType.Error; + if (fullMessage.IndexOf("LogWarning", StringComparison.OrdinalIgnoreCase) >= 0) + return LogType.Warning; + + // Compiler diagnostics (C#): "warning CSxxxx" / "error CSxxxx" + if (fullMessage.IndexOf(" warning CS", StringComparison.OrdinalIgnoreCase) >= 0 + || fullMessage.IndexOf(": warning CS", StringComparison.OrdinalIgnoreCase) >= 0) + return LogType.Warning; + if (fullMessage.IndexOf(" error CS", StringComparison.OrdinalIgnoreCase) >= 0 + || fullMessage.IndexOf(": error CS", StringComparison.OrdinalIgnoreCase) >= 0) + return LogType.Error; + + // Exceptions (avoid misclassifying compiler diagnostics) + if (fullMessage.IndexOf("Exception", StringComparison.OrdinalIgnoreCase) >= 0) + return LogType.Exception; + + // Unity assertions + if (fullMessage.IndexOf("Assertion", StringComparison.OrdinalIgnoreCase) >= 0) + return LogType.Assert; + + return LogType.Log; + } + + private static bool IsExplicitDebugLog(string fullMessage) + { + if (string.IsNullOrEmpty(fullMessage)) return false; + if (fullMessage.IndexOf("Debug:Log (", StringComparison.OrdinalIgnoreCase) >= 0) return true; + if (fullMessage.IndexOf("UnityEngine.Debug:Log (", StringComparison.OrdinalIgnoreCase) >= 0) return true; + return false; + } + + /// + /// Applies the "one level lower" remapping for filtering, like the old version. + /// This ensures compatibility with the filtering logic that expects remapped types. + /// + private static LogType GetRemappedTypeForFiltering(LogType unityType) + { + switch (unityType) + { + case LogType.Error: + return LogType.Warning; // Error becomes Warning + case LogType.Warning: + return LogType.Log; // Warning becomes Log + case LogType.Assert: + return LogType.Assert; // Assert remains Assert + case LogType.Log: + return LogType.Log; // Log remains Log + case LogType.Exception: + return LogType.Warning; // Exception becomes Warning + default: + return LogType.Log; // Default fallback + } + } + + /// + /// Attempts to extract the stack trace part from a log message. + /// Unity log messages often have the stack trace appended after the main message, + /// starting on a new line and typically indented or beginning with "at ". + /// + /// The complete log message including potential stack trace. + /// The extracted stack trace string, or null if none is found. + private static string ExtractStackTrace(string fullMessage) + { + if (string.IsNullOrEmpty(fullMessage)) + return null; + + // Split into lines, removing empty ones to handle different line endings gracefully. + // Using StringSplitOptions.None might be better if empty lines matter within stack trace, but RemoveEmptyEntries is usually safer here. + string[] lines = fullMessage.Split( + new[] { '\r', '\n' }, + StringSplitOptions.RemoveEmptyEntries + ); + + // If there's only one line or less, there's no separate stack trace. + if (lines.Length <= 1) + return null; + + int stackStartIndex = -1; + + // Start checking from the second line onwards. + for (int i = 1; i < lines.Length; ++i) + { + // Performance: TrimStart creates a new string. Consider using IsWhiteSpace check if performance critical. + string trimmedLine = lines[i].TrimStart(); + + // Check for common stack trace patterns. + if ( + trimmedLine.StartsWith("at ") + || trimmedLine.StartsWith("UnityEngine.") + || trimmedLine.StartsWith("UnityEditor.") + || trimmedLine.Contains("(at ") + || // Covers "(at Assets/..." pattern + // Heuristic: Check if line starts with likely namespace/class pattern (Uppercase.Something) + ( + trimmedLine.Length > 0 + && char.IsUpper(trimmedLine[0]) + && trimmedLine.Contains('.') + ) + ) + { + stackStartIndex = i; + break; // Found the likely start of the stack trace + } + } + + // If a potential start index was found... + if (stackStartIndex > 0) + { + // Join the lines from the stack start index onwards using standard newline characters. + // This reconstructs the stack trace part of the message. + return string.Join("\n", lines.Skip(stackStartIndex)); + } + + // No clear stack trace found based on the patterns. + return null; + } + + /* LogEntry.mode bits exploration (based on Unity decompilation/observation): + May change between versions. + + Basic Types: + kError = 1 << 0 (1) + kAssert = 1 << 1 (2) + kWarning = 1 << 2 (4) + kLog = 1 << 3 (8) + kFatal = 1 << 4 (16) - Often treated as Exception/Error + + Modifiers/Context: + kAssetImportError = 1 << 7 (128) + kAssetImportWarning = 1 << 8 (256) + kScriptingError = 1 << 9 (512) + kScriptingWarning = 1 << 10 (1024) + kScriptingLog = 1 << 11 (2048) + kScriptCompileError = 1 << 12 (4096) + kScriptCompileWarning = 1 << 13 (8192) + kStickyError = 1 << 14 (16384) - Stays visible even after Clear On Play + kMayIgnoreLineNumber = 1 << 15 (32768) + kReportBug = 1 << 16 (65536) - Shows the "Report Bug" button + kDisplayPreviousErrorInStatusBar = 1 << 17 (131072) + kScriptingException = 1 << 18 (262144) + kDontExtractStacktrace = 1 << 19 (524288) - Hint to the console UI + kShouldClearOnPlay = 1 << 20 (1048576) - Default behavior + kGraphCompileError = 1 << 21 (2097152) + kScriptingAssertion = 1 << 22 (4194304) + kVisualScriptingError = 1 << 23 (8388608) + + Example observed values: + Log: 2048 (ScriptingLog) or 8 (Log) + Warning: 1028 (ScriptingWarning | Warning) or 4 (Warning) + Error: 513 (ScriptingError | Error) or 1 (Error) + Exception: 262161 (ScriptingException | Error | kFatal?) - Complex combination + Assertion: 4194306 (ScriptingAssertion | Assert) or 2 (Assert) + */ + } +} diff --git a/Packages/MCPForUnity/Editor/Tools/ReadConsole.cs.meta b/Packages/MCPForUnity/Editor/Tools/ReadConsole.cs.meta new file mode 100644 index 00000000..039895f8 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/ReadConsole.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 46c4f3614ed61f547ba823f0b2790267 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Tools/RefreshUnity.cs b/Packages/MCPForUnity/Editor/Tools/RefreshUnity.cs new file mode 100644 index 00000000..537472ac --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/RefreshUnity.cs @@ -0,0 +1,171 @@ +using System; +using System.Threading; +using System.Threading.Tasks; +using MCPForUnity.Editor.Helpers; +using MCPForUnity.Editor.Services; +using Newtonsoft.Json.Linq; +using UnityEditor; +using UnityEditor.Compilation; + +namespace MCPForUnity.Editor.Tools +{ + /// + /// Explicitly refreshes Unity's asset database and optionally requests a script compilation. + /// This is side-effectful and should be treated as a tool. + /// + [McpForUnityTool("refresh_unity", AutoRegister = false)] + public static class RefreshUnity + { + private const int DefaultWaitTimeoutSeconds = 60; + + public static async Task HandleCommand(JObject @params) + { + string mode = @params?["mode"]?.ToString() ?? "if_dirty"; + string scope = @params?["scope"]?.ToString() ?? "all"; + string compile = @params?["compile"]?.ToString() ?? "none"; + bool waitForReady = ParamCoercion.CoerceBool(@params?["wait_for_ready"], false); + + if (TestRunStatus.IsRunning) + { + return new ErrorResponse("tests_running", new + { + reason = "tests_running", + retry_after_ms = 5000 + }); + } + + bool refreshTriggered = false; + bool compileRequested = false; + + try + { + // Best-effort semantics: if_dirty currently behaves like force unless future dirty signals are added. + bool shouldRefresh = string.Equals(mode, "force", StringComparison.OrdinalIgnoreCase) + || string.Equals(mode, "if_dirty", StringComparison.OrdinalIgnoreCase); + + if (shouldRefresh) + { + if (string.Equals(scope, "scripts", StringComparison.OrdinalIgnoreCase)) + { + // For scripts, requesting compilation is usually the meaningful action. + // We avoid a heavyweight full refresh by default. + } + else + { + AssetDatabase.Refresh(ImportAssetOptions.ForceUpdate | ImportAssetOptions.ForceSynchronousImport); + refreshTriggered = true; + } + } + + if (string.Equals(compile, "request", StringComparison.OrdinalIgnoreCase)) + { + CompilationPipeline.RequestScriptCompilation(); + compileRequested = true; + } + + if (string.Equals(scope, "all", StringComparison.OrdinalIgnoreCase) && !refreshTriggered) + { + // If the caller asked for "all" and we skipped refresh above (e.g., scripts-only path), + // do a lightweight refresh now. Use ForceSynchronousImport to ensure the refresh + // completes before returning, preventing stalls when Unity is backgrounded. + AssetDatabase.Refresh(ImportAssetOptions.ForceSynchronousImport); + refreshTriggered = true; + } + } + catch (Exception ex) + { + return new ErrorResponse($"refresh_failed: {ex.Message}"); + } + + // Unity 6+ fix: Skip wait_for_ready when compile was requested. + // The EditorApplication.update polling in WaitForUnityReadyAsync doesn't survive + // domain reloads properly in Unity 6+, causing infinite compilation loops. + // When compilation is requested, return immediately and let client poll editor_state. + // Earlier Unity versions retain the original behavior. +#if UNITY_6000_0_OR_NEWER + bool shouldWaitForReady = waitForReady && !compileRequested; +#else + bool shouldWaitForReady = waitForReady; +#endif + if (shouldWaitForReady) + { + try + { + await WaitForUnityReadyAsync( + TimeSpan.FromSeconds(DefaultWaitTimeoutSeconds)).ConfigureAwait(true); + } + catch (TimeoutException) + { + return new ErrorResponse("refresh_timeout_waiting_for_ready", new + { + refresh_triggered = refreshTriggered, + compile_requested = compileRequested, + resulting_state = "unknown", + }); + } + catch (Exception ex) + { + return new ErrorResponse($"refresh_wait_failed: {ex.Message}"); + } + } + + string resultingState = EditorApplication.isCompiling + ? "compiling" + : (EditorApplication.isUpdating ? "asset_import" : "idle"); + + return new SuccessResponse("Refresh requested.", new + { + refresh_triggered = refreshTriggered, + compile_requested = compileRequested, + resulting_state = resultingState, + hint = shouldWaitForReady + ? "Unity refresh completed; editor should be ready." + : "If Unity enters compilation/domain reload, poll editor_state until ready_for_tools is true." + }); + } + + private static Task WaitForUnityReadyAsync(TimeSpan timeout) + { + var tcs = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); + var start = DateTime.UtcNow; + + void Tick() + { + try + { + if (tcs.Task.IsCompleted) + { + EditorApplication.update -= Tick; + return; + } + + if ((DateTime.UtcNow - start) > timeout) + { + EditorApplication.update -= Tick; + tcs.TrySetException(new TimeoutException()); + return; + } + + if (!EditorApplication.isCompiling + && !EditorApplication.isUpdating + && !TestRunStatus.IsRunning + && !EditorApplication.isPlayingOrWillChangePlaymode) + { + EditorApplication.update -= Tick; + tcs.TrySetResult(true); + } + } + catch (Exception ex) + { + EditorApplication.update -= Tick; + tcs.TrySetException(ex); + } + } + + EditorApplication.update += Tick; + // Nudge Unity to pump once in case update is throttled. + try { EditorApplication.QueuePlayerLoopUpdate(); } catch { } + return tcs.Task; + } + } +} diff --git a/Packages/MCPForUnity/Editor/Tools/RefreshUnity.cs.meta b/Packages/MCPForUnity/Editor/Tools/RefreshUnity.cs.meta new file mode 100644 index 00000000..a2e38466 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/RefreshUnity.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c2c02170faca940d09c813706493ecb3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Tools/RunTests.cs b/Packages/MCPForUnity/Editor/Tools/RunTests.cs new file mode 100644 index 00000000..e9b55f2d --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/RunTests.cs @@ -0,0 +1,118 @@ +using System; +using System.Linq; +using System.Threading.Tasks; +using MCPForUnity.Editor.Helpers; +using MCPForUnity.Editor.Resources.Tests; +using MCPForUnity.Editor.Services; +using Newtonsoft.Json.Linq; +using UnityEditor.TestTools.TestRunner.Api; + +namespace MCPForUnity.Editor.Tools +{ + /// + /// Starts a Unity Test Runner run asynchronously and returns a job id immediately. + /// Use get_test_job(job_id) to poll status/results. + /// + [McpForUnityTool("run_tests", AutoRegister = false)] + public static class RunTests + { + public static Task HandleCommand(JObject @params) + { + try + { + // Check for clear_stuck action first + if (ParamCoercion.CoerceBool(@params?["clear_stuck"], false)) + { + bool wasCleared = TestJobManager.ClearStuckJob(); + return Task.FromResult(new SuccessResponse( + wasCleared ? "Stuck job cleared." : "No running job to clear.", + new { cleared = wasCleared } + )); + } + + string modeStr = @params?["mode"]?.ToString(); + if (string.IsNullOrWhiteSpace(modeStr)) + { + modeStr = "EditMode"; + } + + if (!ModeParser.TryParse(modeStr, out var parsedMode, out var parseError)) + { + return Task.FromResult(new ErrorResponse(parseError)); + } + + bool includeDetails = ParamCoercion.CoerceBool(@params?["includeDetails"], false); + bool includeFailedTests = ParamCoercion.CoerceBool(@params?["includeFailedTests"], false); + + var filterOptions = GetFilterOptions(@params); + string jobId = TestJobManager.StartJob(parsedMode.Value, filterOptions); + + return Task.FromResult(new SuccessResponse("Test job started.", new + { + job_id = jobId, + status = "running", + mode = parsedMode.Value.ToString(), + include_details = includeDetails, + include_failed_tests = includeFailedTests + })); + } + catch (Exception ex) + { + // Normalize the already-running case to a stable error token. + if (ex.Message != null && ex.Message.IndexOf("already in progress", StringComparison.OrdinalIgnoreCase) >= 0) + { + return Task.FromResult(new ErrorResponse("tests_running", new { reason = "tests_running", retry_after_ms = 5000 })); + } + return Task.FromResult(new ErrorResponse($"Failed to start test job: {ex.Message}")); + } + } + + private static TestFilterOptions GetFilterOptions(JObject @params) + { + if (@params == null) + { + return null; + } + + string[] ParseStringArray(string key) + { + var token = @params[key]; + if (token == null) return null; + if (token.Type == JTokenType.String) + { + var value = token.ToString(); + return string.IsNullOrWhiteSpace(value) ? null : new[] { value }; + } + if (token.Type == JTokenType.Array) + { + var array = token as JArray; + if (array == null || array.Count == 0) return null; + var values = array + .Values() + .Where(s => !string.IsNullOrWhiteSpace(s)) + .ToArray(); + return values.Length > 0 ? values : null; + } + return null; + } + + var testNames = ParseStringArray("testNames"); + var groupNames = ParseStringArray("groupNames"); + var categoryNames = ParseStringArray("categoryNames"); + var assemblyNames = ParseStringArray("assemblyNames"); + + if (testNames == null && groupNames == null && categoryNames == null && assemblyNames == null) + { + return null; + } + + return new TestFilterOptions + { + TestNames = testNames, + GroupNames = groupNames, + CategoryNames = categoryNames, + AssemblyNames = assemblyNames + }; + } + } +} diff --git a/Packages/MCPForUnity/Editor/Tools/RunTests.cs.meta b/Packages/MCPForUnity/Editor/Tools/RunTests.cs.meta new file mode 100644 index 00000000..fea1fdf6 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/RunTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5cc0c41b1a8b4e0e9d0f1f8b1d7d2a9c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Tools/Vfx.meta b/Packages/MCPForUnity/Editor/Tools/Vfx.meta new file mode 100644 index 00000000..b128ae39 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/Vfx.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1805768600c6a4228bae31231f2a4a9f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Tools/Vfx/LineCreate.cs b/Packages/MCPForUnity/Editor/Tools/Vfx/LineCreate.cs new file mode 100644 index 00000000..fcaf55b5 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/Vfx/LineCreate.cs @@ -0,0 +1,220 @@ +using Newtonsoft.Json.Linq; +using UnityEditor; +using UnityEngine; +using MCPForUnity.Editor.Helpers; + +namespace MCPForUnity.Editor.Tools.Vfx +{ + internal static class LineCreate + { + public static object CreateLine(JObject @params) + { + LineRenderer lr = LineRead.FindLineRenderer(@params); + if (lr == null) return new { success = false, message = "LineRenderer not found" }; + + Vector3 start = ManageVfxCommon.ParseVector3(@params["start"]); + Vector3 end = ManageVfxCommon.ParseVector3(@params["end"]); + + Undo.RecordObject(lr, "Create Line"); + lr.positionCount = 2; + lr.SetPosition(0, start); + lr.SetPosition(1, end); + + RendererHelpers.EnsureMaterial(lr); + + // Apply optional width + if (@params["width"] != null) + { + float w = @params["width"].ToObject(); + lr.startWidth = w; + lr.endWidth = w; + } + if (@params["startWidth"] != null) lr.startWidth = @params["startWidth"].ToObject(); + if (@params["endWidth"] != null) lr.endWidth = @params["endWidth"].ToObject(); + + // Apply optional color + if (@params["color"] != null) + { + Color c = ManageVfxCommon.ParseColor(@params["color"]); + lr.startColor = c; + lr.endColor = c; + } + if (@params["startColor"] != null) lr.startColor = ManageVfxCommon.ParseColor(@params["startColor"]); + if (@params["endColor"] != null) lr.endColor = ManageVfxCommon.ParseColor(@params["endColor"]); + + EditorUtility.SetDirty(lr); + + return new { success = true, message = "Created line" }; + } + + public static object CreateCircle(JObject @params) + { + LineRenderer lr = LineRead.FindLineRenderer(@params); + if (lr == null) return new { success = false, message = "LineRenderer not found" }; + + Vector3 center = ManageVfxCommon.ParseVector3(@params["center"]); + float radius = @params["radius"]?.ToObject() ?? 1f; + int segments = @params["segments"]?.ToObject() ?? 32; + Vector3 normal = @params["normal"] != null ? ManageVfxCommon.ParseVector3(@params["normal"]).normalized : Vector3.up; + + Vector3 right = Vector3.Cross(normal, Vector3.forward); + if (right.sqrMagnitude < 0.001f) right = Vector3.Cross(normal, Vector3.up); + right = right.normalized; + Vector3 forward = Vector3.Cross(right, normal).normalized; + + Undo.RecordObject(lr, "Create Circle"); + lr.positionCount = segments; + lr.loop = true; + + for (int i = 0; i < segments; i++) + { + float angle = (float)i / segments * Mathf.PI * 2f; + Vector3 point = center + (right * Mathf.Cos(angle) + forward * Mathf.Sin(angle)) * radius; + lr.SetPosition(i, point); + } + + RendererHelpers.EnsureMaterial(lr); + + // Apply optional width + if (@params["width"] != null) + { + float w = @params["width"].ToObject(); + lr.startWidth = w; + lr.endWidth = w; + } + if (@params["startWidth"] != null) lr.startWidth = @params["startWidth"].ToObject(); + if (@params["endWidth"] != null) lr.endWidth = @params["endWidth"].ToObject(); + + // Apply optional color + if (@params["color"] != null) + { + Color c = ManageVfxCommon.ParseColor(@params["color"]); + lr.startColor = c; + lr.endColor = c; + } + if (@params["startColor"] != null) lr.startColor = ManageVfxCommon.ParseColor(@params["startColor"]); + if (@params["endColor"] != null) lr.endColor = ManageVfxCommon.ParseColor(@params["endColor"]); + + EditorUtility.SetDirty(lr); + return new { success = true, message = $"Created circle with {segments} segments" }; + } + + public static object CreateArc(JObject @params) + { + LineRenderer lr = LineRead.FindLineRenderer(@params); + if (lr == null) return new { success = false, message = "LineRenderer not found" }; + + Vector3 center = ManageVfxCommon.ParseVector3(@params["center"]); + float radius = @params["radius"]?.ToObject() ?? 1f; + float startAngle = (@params["startAngle"]?.ToObject() ?? 0f) * Mathf.Deg2Rad; + float endAngle = (@params["endAngle"]?.ToObject() ?? 180f) * Mathf.Deg2Rad; + int segments = @params["segments"]?.ToObject() ?? 16; + Vector3 normal = @params["normal"] != null ? ManageVfxCommon.ParseVector3(@params["normal"]).normalized : Vector3.up; + + Vector3 right = Vector3.Cross(normal, Vector3.forward); + if (right.sqrMagnitude < 0.001f) right = Vector3.Cross(normal, Vector3.up); + right = right.normalized; + Vector3 forward = Vector3.Cross(right, normal).normalized; + + Undo.RecordObject(lr, "Create Arc"); + lr.positionCount = segments + 1; + lr.loop = false; + + for (int i = 0; i <= segments; i++) + { + float t = (float)i / segments; + float angle = Mathf.Lerp(startAngle, endAngle, t); + Vector3 point = center + (right * Mathf.Cos(angle) + forward * Mathf.Sin(angle)) * radius; + lr.SetPosition(i, point); + } + + RendererHelpers.EnsureMaterial(lr); + + // Apply optional width + if (@params["width"] != null) + { + float w = @params["width"].ToObject(); + lr.startWidth = w; + lr.endWidth = w; + } + if (@params["startWidth"] != null) lr.startWidth = @params["startWidth"].ToObject(); + if (@params["endWidth"] != null) lr.endWidth = @params["endWidth"].ToObject(); + + // Apply optional color + if (@params["color"] != null) + { + Color c = ManageVfxCommon.ParseColor(@params["color"]); + lr.startColor = c; + lr.endColor = c; + } + if (@params["startColor"] != null) lr.startColor = ManageVfxCommon.ParseColor(@params["startColor"]); + if (@params["endColor"] != null) lr.endColor = ManageVfxCommon.ParseColor(@params["endColor"]); + + EditorUtility.SetDirty(lr); + return new { success = true, message = $"Created arc with {segments} segments" }; + } + + public static object CreateBezier(JObject @params) + { + LineRenderer lr = LineRead.FindLineRenderer(@params); + if (lr == null) return new { success = false, message = "LineRenderer not found" }; + + Vector3 start = ManageVfxCommon.ParseVector3(@params["start"]); + Vector3 end = ManageVfxCommon.ParseVector3(@params["end"]); + Vector3 cp1 = ManageVfxCommon.ParseVector3(@params["controlPoint1"] ?? @params["control1"]); + Vector3 cp2 = @params["controlPoint2"] != null || @params["control2"] != null + ? ManageVfxCommon.ParseVector3(@params["controlPoint2"] ?? @params["control2"]) + : cp1; + int segments = @params["segments"]?.ToObject() ?? 32; + bool isQuadratic = @params["controlPoint2"] == null && @params["control2"] == null; + + Undo.RecordObject(lr, "Create Bezier"); + lr.positionCount = segments + 1; + lr.loop = false; + + for (int i = 0; i <= segments; i++) + { + float t = (float)i / segments; + Vector3 point; + + if (isQuadratic) + { + float u = 1 - t; + point = u * u * start + 2 * u * t * cp1 + t * t * end; + } + else + { + float u = 1 - t; + point = u * u * u * start + 3 * u * u * t * cp1 + 3 * u * t * t * cp2 + t * t * t * end; + } + + lr.SetPosition(i, point); + } + + RendererHelpers.EnsureMaterial(lr); + + // Apply optional width + if (@params["width"] != null) + { + float w = @params["width"].ToObject(); + lr.startWidth = w; + lr.endWidth = w; + } + if (@params["startWidth"] != null) lr.startWidth = @params["startWidth"].ToObject(); + if (@params["endWidth"] != null) lr.endWidth = @params["endWidth"].ToObject(); + + // Apply optional color + if (@params["color"] != null) + { + Color c = ManageVfxCommon.ParseColor(@params["color"]); + lr.startColor = c; + lr.endColor = c; + } + if (@params["startColor"] != null) lr.startColor = ManageVfxCommon.ParseColor(@params["startColor"]); + if (@params["endColor"] != null) lr.endColor = ManageVfxCommon.ParseColor(@params["endColor"]); + + EditorUtility.SetDirty(lr); + return new { success = true, message = $"Created {(isQuadratic ? "quadratic" : "cubic")} Bezier" }; + } + } +} diff --git a/Packages/MCPForUnity/Editor/Tools/Vfx/LineCreate.cs.meta b/Packages/MCPForUnity/Editor/Tools/Vfx/LineCreate.cs.meta new file mode 100644 index 00000000..bf0e133b --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/Vfx/LineCreate.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6d553d3837ecc4d999225bc9b3160a26 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Tools/Vfx/LineRead.cs b/Packages/MCPForUnity/Editor/Tools/Vfx/LineRead.cs new file mode 100644 index 00000000..3dd0c06f --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/Vfx/LineRead.cs @@ -0,0 +1,52 @@ +using System.Linq; +using Newtonsoft.Json.Linq; +using UnityEngine; + +namespace MCPForUnity.Editor.Tools.Vfx +{ + internal static class LineRead + { + public static LineRenderer FindLineRenderer(JObject @params) + { + GameObject go = ManageVfxCommon.FindTargetGameObject(@params); + return go?.GetComponent(); + } + + public static object GetInfo(JObject @params) + { + LineRenderer lr = FindLineRenderer(@params); + if (lr == null) return new { success = false, message = "LineRenderer not found" }; + + var positions = new Vector3[lr.positionCount]; + lr.GetPositions(positions); + + return new + { + success = true, + data = new + { + gameObject = lr.gameObject.name, + positionCount = lr.positionCount, + positions = positions.Select(p => new { x = p.x, y = p.y, z = p.z }).ToArray(), + startWidth = lr.startWidth, + endWidth = lr.endWidth, + loop = lr.loop, + useWorldSpace = lr.useWorldSpace, + alignment = lr.alignment.ToString(), + textureMode = lr.textureMode.ToString(), + numCornerVertices = lr.numCornerVertices, + numCapVertices = lr.numCapVertices, + generateLightingData = lr.generateLightingData, + material = lr.sharedMaterial?.name, + shadowCastingMode = lr.shadowCastingMode.ToString(), + receiveShadows = lr.receiveShadows, + lightProbeUsage = lr.lightProbeUsage.ToString(), + reflectionProbeUsage = lr.reflectionProbeUsage.ToString(), + sortingOrder = lr.sortingOrder, + sortingLayerName = lr.sortingLayerName, + renderingLayerMask = lr.renderingLayerMask + } + }; + } + } +} diff --git a/Packages/MCPForUnity/Editor/Tools/Vfx/LineRead.cs.meta b/Packages/MCPForUnity/Editor/Tools/Vfx/LineRead.cs.meta new file mode 100644 index 00000000..efeccc41 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/Vfx/LineRead.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: df77cf0ca14344b0cb2f1b84c5eb15e7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Tools/Vfx/LineWrite.cs b/Packages/MCPForUnity/Editor/Tools/Vfx/LineWrite.cs new file mode 100644 index 00000000..339e9c8f --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/Vfx/LineWrite.cs @@ -0,0 +1,189 @@ +using System.Collections.Generic; +using MCPForUnity.Editor.Helpers; +using Newtonsoft.Json.Linq; +using UnityEditor; +using UnityEngine; + +namespace MCPForUnity.Editor.Tools.Vfx +{ + internal static class LineWrite + { + public static object SetPositions(JObject @params) + { + LineRenderer lr = LineRead.FindLineRenderer(@params); + if (lr == null) return new { success = false, message = "LineRenderer not found" }; + + RendererHelpers.EnsureMaterial(lr); + + JArray posArr = @params["positions"] as JArray; + if (posArr == null) return new { success = false, message = "Positions array required" }; + + var positions = new Vector3[posArr.Count]; + for (int i = 0; i < posArr.Count; i++) + { + positions[i] = ManageVfxCommon.ParseVector3(posArr[i]); + } + + Undo.RecordObject(lr, "Set Line Positions"); + lr.positionCount = positions.Length; + lr.SetPositions(positions); + EditorUtility.SetDirty(lr); + + return new { success = true, message = $"Set {positions.Length} positions" }; + } + + public static object AddPosition(JObject @params) + { + LineRenderer lr = LineRead.FindLineRenderer(@params); + if (lr == null) return new { success = false, message = "LineRenderer not found" }; + + RendererHelpers.EnsureMaterial(lr); + + Vector3 pos = ManageVfxCommon.ParseVector3(@params["position"]); + + Undo.RecordObject(lr, "Add Line Position"); + int idx = lr.positionCount; + lr.positionCount = idx + 1; + lr.SetPosition(idx, pos); + EditorUtility.SetDirty(lr); + + return new { success = true, message = $"Added position at index {idx}", index = idx }; + } + + public static object SetPosition(JObject @params) + { + LineRenderer lr = LineRead.FindLineRenderer(@params); + if (lr == null) return new { success = false, message = "LineRenderer not found" }; + + RendererHelpers.EnsureMaterial(lr); + + int index = @params["index"]?.ToObject() ?? -1; + if (index < 0 || index >= lr.positionCount) return new { success = false, message = $"Invalid index {index}" }; + + Vector3 pos = ManageVfxCommon.ParseVector3(@params["position"]); + + Undo.RecordObject(lr, "Set Line Position"); + lr.SetPosition(index, pos); + EditorUtility.SetDirty(lr); + + return new { success = true, message = $"Set position at index {index}" }; + } + + public static object SetWidth(JObject @params) + { + LineRenderer lr = LineRead.FindLineRenderer(@params); + if (lr == null) return new { success = false, message = "LineRenderer not found" }; + + RendererHelpers.EnsureMaterial(lr); + + Undo.RecordObject(lr, "Set Line Width"); + var changes = new List(); + + RendererHelpers.ApplyWidthProperties(@params, changes, + v => lr.startWidth = v, v => lr.endWidth = v, + v => lr.widthCurve = v, v => lr.widthMultiplier = v, + ManageVfxCommon.ParseAnimationCurve); + + EditorUtility.SetDirty(lr); + return new { success = true, message = $"Updated: {string.Join(", ", changes)}" }; + } + + public static object SetColor(JObject @params) + { + LineRenderer lr = LineRead.FindLineRenderer(@params); + if (lr == null) return new { success = false, message = "LineRenderer not found" }; + + RendererHelpers.EnsureMaterial(lr); + + Undo.RecordObject(lr, "Set Line Color"); + var changes = new List(); + + RendererHelpers.ApplyColorProperties(@params, changes, + v => lr.startColor = v, v => lr.endColor = v, + v => lr.colorGradient = v, + ManageVfxCommon.ParseColor, ManageVfxCommon.ParseGradient, fadeEndAlpha: false); + + EditorUtility.SetDirty(lr); + return new { success = true, message = $"Updated: {string.Join(", ", changes)}" }; + } + + public static object SetMaterial(JObject @params) + { + LineRenderer lr = LineRead.FindLineRenderer(@params); + return RendererHelpers.SetRendererMaterial(lr, @params, "Set Line Material", ManageVfxCommon.FindMaterialByPath); + } + + public static object SetProperties(JObject @params) + { + LineRenderer lr = LineRead.FindLineRenderer(@params); + if (lr == null) return new { success = false, message = "LineRenderer not found" }; + + RendererHelpers.EnsureMaterial(lr); + + Undo.RecordObject(lr, "Set Line Properties"); + var changes = new List(); + + // Handle material if provided + if (@params["materialPath"] != null) + { + Material mat = ManageVfxCommon.FindMaterialByPath(@params["materialPath"].ToString()); + if (mat != null) + { + lr.sharedMaterial = mat; + changes.Add($"material={mat.name}"); + } + else + { + McpLog.Warn($"Material not found: {@params["materialPath"]}"); + } + } + + // Handle positions if provided + if (@params["positions"] != null) + { + JArray posArr = @params["positions"] as JArray; + if (posArr != null && posArr.Count > 0) + { + var positions = new Vector3[posArr.Count]; + for (int i = 0; i < posArr.Count; i++) + { + positions[i] = ManageVfxCommon.ParseVector3(posArr[i]); + } + lr.positionCount = positions.Length; + lr.SetPositions(positions); + changes.Add($"positions({positions.Length})"); + } + } + else if (@params["positionCount"] != null) + { + int count = @params["positionCount"].ToObject(); + lr.positionCount = count; + changes.Add("positionCount"); + } + + RendererHelpers.ApplyLineTrailProperties(@params, changes, + v => lr.loop = v, v => lr.useWorldSpace = v, + v => lr.numCornerVertices = v, v => lr.numCapVertices = v, + v => lr.alignment = v, v => lr.textureMode = v, + v => lr.generateLightingData = v); + + RendererHelpers.ApplyCommonRendererProperties(lr, @params, changes); + + EditorUtility.SetDirty(lr); + return new { success = true, message = $"Updated: {string.Join(", ", changes)}" }; + } + + public static object Clear(JObject @params) + { + LineRenderer lr = LineRead.FindLineRenderer(@params); + if (lr == null) return new { success = false, message = "LineRenderer not found" }; + + int count = lr.positionCount; + Undo.RecordObject(lr, "Clear Line"); + lr.positionCount = 0; + EditorUtility.SetDirty(lr); + + return new { success = true, message = $"Cleared {count} positions" }; + } + } +} diff --git a/Packages/MCPForUnity/Editor/Tools/Vfx/LineWrite.cs.meta b/Packages/MCPForUnity/Editor/Tools/Vfx/LineWrite.cs.meta new file mode 100644 index 00000000..08e2637f --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/Vfx/LineWrite.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3911acc5a6a6a494cb88a647e0426d67 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Tools/Vfx/ManageVFX.cs b/Packages/MCPForUnity/Editor/Tools/Vfx/ManageVFX.cs new file mode 100644 index 00000000..55e7b389 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/Vfx/ManageVFX.cs @@ -0,0 +1,412 @@ +using System; +using System.Collections.Generic; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using MCPForUnity.Editor.Helpers; +using UnityEngine; +using UnityEditor; + +#if UNITY_VFX_GRAPH //Please enable the symbol in the project settings for VisualEffectGraph to work +using UnityEngine.VFX; +#endif + +namespace MCPForUnity.Editor.Tools.Vfx +{ + /// + /// Tool for managing Unity VFX components: + /// - ParticleSystem (legacy particle effects) + /// - Visual Effect Graph (modern GPU particles, currently only support HDRP, other SRPs may not work) + /// - LineRenderer (lines, bezier curves, shapes) + /// - TrailRenderer (motion trails) + /// + /// COMPONENT REQUIREMENTS: + /// - particle_* actions require ParticleSystem component on target GameObject + /// - vfx_* actions require VisualEffect component (+ com.unity.visualeffectgraph package) + /// - line_* actions require LineRenderer component + /// - trail_* actions require TrailRenderer component + /// + /// TARGETING: + /// Use 'target' parameter with optional 'searchMethod': + /// - by_name (default): "Fire" finds first GameObject named "Fire" + /// - by_path: "Effects/Fire" finds GameObject at hierarchy path + /// - by_id: "12345" finds GameObject by instance ID (most reliable) + /// - by_tag: "Enemy" finds first GameObject with tag + /// + /// AUTOMATIC MATERIAL ASSIGNMENT: + /// VFX components (ParticleSystem, LineRenderer, TrailRenderer) automatically receive + /// appropriate default materials based on the active rendering pipeline when no material + /// is explicitly specified: + /// - Built-in Pipeline: Uses Unity's built-in Default-Particle.mat and Default-Line.mat + /// - URP/HDRP: Creates materials with pipeline-appropriate unlit shaders + /// - Materials are cached to avoid recreation + /// - Explicit materialPath parameter always overrides auto-assignment + /// - Auto-assigned materials are logged for transparency + /// + /// AVAILABLE ACTIONS: + /// + /// ParticleSystem (particle_*): + /// - particle_get_info: Get system info and current state + /// - particle_set_main: Set main module (duration, looping, startLifetime, startSpeed, startSize, startColor, gravityModifier, maxParticles, simulationSpace, playOnAwake, etc.) + /// - particle_set_emission: Set emission module (rateOverTime, rateOverDistance) + /// - particle_set_shape: Set shape module (shapeType, radius, angle, arc, position, rotation, scale) + /// - particle_set_color_over_lifetime: Set color gradient over particle lifetime + /// - particle_set_size_over_lifetime: Set size curve over particle lifetime + /// - particle_set_velocity_over_lifetime: Set velocity (x, y, z, speedModifier, space) + /// - particle_set_noise: Set noise turbulence (strength, frequency, scrollSpeed, damping, octaveCount, quality) + /// - particle_set_renderer: Set renderer (renderMode, material, sortMode, minParticleSize, maxParticleSize, etc.) + /// - particle_enable_module: Enable/disable modules by name + /// - particle_play/stop/pause/restart/clear: Playback control (withChildren optional) + /// - particle_add_burst: Add emission burst (time, count, cycles, interval, probability) + /// - particle_clear_bursts: Clear all bursts + /// + /// Visual Effect Graph (vfx_*): + /// Asset Management: + /// - vfx_create_asset: Create new VFX asset file (assetName, folderPath, template, overwrite) + /// - vfx_assign_asset: Assign VFX asset to VisualEffect component (target, assetPath) + /// - vfx_list_templates: List available VFX templates in project and packages + /// - vfx_list_assets: List all VFX assets (folder, search filters) + /// Runtime Control: + /// - vfx_get_info: Get VFX info including exposed parameters + /// - vfx_set_float/int/bool: Set exposed scalar parameters (parameter, value) + /// - vfx_set_vector2/vector3/vector4: Set exposed vector parameters (parameter, value as array) + /// - vfx_set_color: Set exposed color (parameter, color as [r,g,b,a]) + /// - vfx_set_gradient: Set exposed gradient (parameter, gradient) + /// - vfx_set_texture: Set exposed texture (parameter, texturePath) + /// - vfx_set_mesh: Set exposed mesh (parameter, meshPath) + /// - vfx_set_curve: Set exposed animation curve (parameter, curve) + /// - vfx_send_event: Send event with attributes (eventName, position, velocity, color, size, lifetime) + /// - vfx_play/stop/pause/reinit: Playback control + /// - vfx_set_playback_speed: Set playback speed multiplier (playRate) + /// - vfx_set_seed: Set random seed (seed, resetSeedOnPlay) + /// + /// LineRenderer (line_*): + /// - line_get_info: Get line info (position count, width, color, etc.) + /// - line_set_positions: Set all positions (positions as [[x,y,z], ...]) + /// - line_add_position: Add position at end (position as [x,y,z]) + /// - line_set_position: Set specific position (index, position) + /// - line_set_width: Set width (width, startWidth, endWidth, widthCurve, widthMultiplier) + /// - line_set_color: Set color (color, gradient, startColor, endColor) + /// - line_set_material: Set material (materialPath) + /// - line_set_properties: Set renderer properties (loop, useWorldSpace, alignment, textureMode, numCornerVertices, numCapVertices, etc.) + /// - line_clear: Clear all positions + /// Shape Creation: + /// - line_create_line: Create simple line (start, end, segments) + /// - line_create_circle: Create circle (center, radius, segments, normal) + /// - line_create_arc: Create arc (center, radius, startAngle, endAngle, segments, normal) + /// - line_create_bezier: Create Bezier curve (start, end, controlPoint1, controlPoint2, segments) + /// + /// TrailRenderer (trail_*): + /// - trail_get_info: Get trail info + /// - trail_set_time: Set trail duration (time) + /// - trail_set_width: Set width (width, startWidth, endWidth, widthCurve, widthMultiplier) + /// - trail_set_color: Set color (color, gradient, startColor, endColor) + /// - trail_set_material: Set material (materialPath) + /// - trail_set_properties: Set properties (minVertexDistance, autodestruct, emitting, alignment, textureMode, etc.) + /// - trail_clear: Clear trail + /// - trail_emit: Emit point at current position (Unity 2021.1+) + /// + /// COMMON PARAMETERS: + /// - target (string): GameObject identifier + /// - searchMethod (string): "by_id" | "by_name" | "by_path" | "by_tag" | "by_layer" + /// - materialPath (string): Asset path to material (e.g., "Assets/Materials/Fire.mat") + /// - color (array): Color as [r, g, b, a] with values 0-1 + /// - position (array): 3D position as [x, y, z] + /// - gradient (object): {colorKeys: [{color: [r,g,b,a], time: 0-1}], alphaKeys: [{alpha: 0-1, time: 0-1}]} + /// - curve (object): {keys: [{time: 0-1, value: number, inTangent: number, outTangent: number}]} + /// + /// For full parameter details, refer to Unity documentation for each component type. + /// + [McpForUnityTool("manage_vfx", AutoRegister = false)] + public static class ManageVFX + { + private static readonly Dictionary ParamAliases = new Dictionary(StringComparer.OrdinalIgnoreCase) + { + { "size_over_lifetime", "size" }, + { "start_color_line", "startColor" }, + { "sorting_layer_id", "sortingLayerID" }, + { "material", "materialPath" }, + }; + + private static JObject NormalizeParams(JObject source) + { + if (source == null) + { + return new JObject(); + } + + var normalized = new JObject(); + var properties = ExtractProperties(source); + if (properties != null) + { + foreach (var prop in properties.Properties()) + { + normalized[NormalizeKey(prop.Name, true)] = NormalizeToken(prop.Value); + } + } + + foreach (var prop in source.Properties()) + { + if (string.Equals(prop.Name, "properties", StringComparison.OrdinalIgnoreCase)) + { + continue; + } + normalized[NormalizeKey(prop.Name, true)] = NormalizeToken(prop.Value); + } + + return normalized; + } + + private static JObject ExtractProperties(JObject source) + { + if (source == null) + { + return null; + } + + if (!source.TryGetValue("properties", StringComparison.OrdinalIgnoreCase, out var token)) + { + return null; + } + + if (token == null || token.Type == JTokenType.Null) + { + return null; + } + + if (token is JObject obj) + { + return obj; + } + + if (token.Type == JTokenType.String) + { + try + { + return JToken.Parse(token.ToString()) as JObject; + } + catch (JsonException ex) + { + throw new JsonException( + $"Failed to parse 'properties' JSON string. Raw value: {token}", + ex); + } + } + + return null; + } + + private static string NormalizeKey(string key, bool allowAliases) + { + if (string.IsNullOrEmpty(key)) + { + return key; + } + if (string.Equals(key, "action", StringComparison.OrdinalIgnoreCase)) + { + return "action"; + } + if (allowAliases && ParamAliases.TryGetValue(key, out var alias)) + { + return alias; + } + if (key.IndexOf('_') >= 0) + { + return ToCamelCase(key); + } + return key; + } + + private static JToken NormalizeToken(JToken token) + { + if (token == null) + { + return null; + } + + if (token is JObject obj) + { + var normalized = new JObject(); + foreach (var prop in obj.Properties()) + { + normalized[NormalizeKey(prop.Name, false)] = NormalizeToken(prop.Value); + } + return normalized; + } + + if (token is JArray array) + { + var normalized = new JArray(); + foreach (var item in array) + { + normalized.Add(NormalizeToken(item)); + } + return normalized; + } + + return token; + } + + private static string ToCamelCase(string key) => StringCaseUtility.ToCamelCase(key); + + public static object HandleCommand(JObject @params) + { + JObject normalizedParams = NormalizeParams(@params); + string action = normalizedParams["action"]?.ToString(); + if (string.IsNullOrEmpty(action)) + { + return new { success = false, message = "Action is required" }; + } + + try + { + string actionLower = action.ToLowerInvariant(); + + // Route to appropriate handler based on action prefix + if (actionLower == "ping") + { + return new { success = true, tool = "manage_vfx", components = new[] { "ParticleSystem", "VisualEffect", "LineRenderer", "TrailRenderer" } }; + } + + // ParticleSystem actions (particle_*) + if (actionLower.StartsWith("particle_")) + { + return HandleParticleSystemAction(normalizedParams, actionLower.Substring(9)); + } + + // VFX Graph actions (vfx_*) + if (actionLower.StartsWith("vfx_")) + { + return HandleVFXGraphAction(normalizedParams, actionLower.Substring(4)); + } + + // LineRenderer actions (line_*) + if (actionLower.StartsWith("line_")) + { + return HandleLineRendererAction(normalizedParams, actionLower.Substring(5)); + } + + // TrailRenderer actions (trail_*) + if (actionLower.StartsWith("trail_")) + { + return HandleTrailRendererAction(normalizedParams, actionLower.Substring(6)); + } + + return new { success = false, message = $"Unknown action: {action}. Actions must be prefixed with: particle_, vfx_, line_, or trail_" }; + } + catch (Exception ex) + { + return new { success = false, message = ex.Message, stackTrace = ex.StackTrace }; + } + } + + private static object HandleParticleSystemAction(JObject @params, string action) + { + switch (action) + { + case "get_info": return ParticleRead.GetInfo(@params); + case "set_main": return ParticleWrite.SetMain(@params); + case "set_emission": return ParticleWrite.SetEmission(@params); + case "set_shape": return ParticleWrite.SetShape(@params); + case "set_color_over_lifetime": return ParticleWrite.SetColorOverLifetime(@params); + case "set_size_over_lifetime": return ParticleWrite.SetSizeOverLifetime(@params); + case "set_velocity_over_lifetime": return ParticleWrite.SetVelocityOverLifetime(@params); + case "set_noise": return ParticleWrite.SetNoise(@params); + case "set_renderer": return ParticleWrite.SetRenderer(@params); + case "enable_module": return ParticleControl.EnableModule(@params); + case "play": return ParticleControl.Control(@params, "play"); + case "stop": return ParticleControl.Control(@params, "stop"); + case "pause": return ParticleControl.Control(@params, "pause"); + case "restart": return ParticleControl.Control(@params, "restart"); + case "clear": return ParticleControl.Control(@params, "clear"); + case "add_burst": return ParticleControl.AddBurst(@params); + case "clear_bursts": return ParticleControl.ClearBursts(@params); + default: + return new { success = false, message = $"Unknown particle action: {action}. Valid: get_info, set_main, set_emission, set_shape, set_color_over_lifetime, set_size_over_lifetime, set_velocity_over_lifetime, set_noise, set_renderer, enable_module, play, stop, pause, restart, clear, add_burst, clear_bursts" }; + } + } + + // ==================== VFX GRAPH ==================== + #region VFX Graph + + private static object HandleVFXGraphAction(JObject @params, string action) + { +#if !UNITY_VFX_GRAPH + return new { success = false, message = "VFX Graph package (com.unity.visualeffectgraph) not installed" }; +#else + switch (action) + { + // Asset management + case "create_asset": return VfxGraphAssets.CreateAsset(@params); + case "assign_asset": return VfxGraphAssets.AssignAsset(@params); + case "list_templates": return VfxGraphAssets.ListTemplates(@params); + case "list_assets": return VfxGraphAssets.ListAssets(@params); + + // Runtime parameter control + case "get_info": return VfxGraphRead.GetInfo(@params); + case "set_float": return VfxGraphWrite.SetParameter(@params, (vfx, n, v) => vfx.SetFloat(n, v)); + case "set_int": return VfxGraphWrite.SetParameter(@params, (vfx, n, v) => vfx.SetInt(n, v)); + case "set_bool": return VfxGraphWrite.SetParameter(@params, (vfx, n, v) => vfx.SetBool(n, v)); + case "set_vector2": return VfxGraphWrite.SetVector(@params, 2); + case "set_vector3": return VfxGraphWrite.SetVector(@params, 3); + case "set_vector4": return VfxGraphWrite.SetVector(@params, 4); + case "set_color": return VfxGraphWrite.SetColor(@params); + case "set_gradient": return VfxGraphWrite.SetGradient(@params); + case "set_texture": return VfxGraphWrite.SetTexture(@params); + case "set_mesh": return VfxGraphWrite.SetMesh(@params); + case "set_curve": return VfxGraphWrite.SetCurve(@params); + case "send_event": return VfxGraphWrite.SendEvent(@params); + case "play": return VfxGraphControl.Control(@params, "play"); + case "stop": return VfxGraphControl.Control(@params, "stop"); + case "pause": return VfxGraphControl.Control(@params, "pause"); + case "reinit": return VfxGraphControl.Control(@params, "reinit"); + case "set_playback_speed": return VfxGraphControl.SetPlaybackSpeed(@params); + case "set_seed": return VfxGraphControl.SetSeed(@params); + default: + return new { success = false, message = $"Unknown vfx action: {action}. Valid: create_asset, assign_asset, list_templates, list_assets, get_info, set_float, set_int, set_bool, set_vector2/3/4, set_color, set_gradient, set_texture, set_mesh, set_curve, send_event, play, stop, pause, reinit, set_playback_speed, set_seed" }; + } +#endif + } + + + #endregion + + private static object HandleLineRendererAction(JObject @params, string action) + { + switch (action) + { + case "get_info": return LineRead.GetInfo(@params); + case "set_positions": return LineWrite.SetPositions(@params); + case "add_position": return LineWrite.AddPosition(@params); + case "set_position": return LineWrite.SetPosition(@params); + case "set_width": return LineWrite.SetWidth(@params); + case "set_color": return LineWrite.SetColor(@params); + case "set_material": return LineWrite.SetMaterial(@params); + case "set_properties": return LineWrite.SetProperties(@params); + case "clear": return LineWrite.Clear(@params); + case "create_line": return LineCreate.CreateLine(@params); + case "create_circle": return LineCreate.CreateCircle(@params); + case "create_arc": return LineCreate.CreateArc(@params); + case "create_bezier": return LineCreate.CreateBezier(@params); + default: + return new { success = false, message = $"Unknown line action: {action}. Valid: get_info, set_positions, add_position, set_position, set_width, set_color, set_material, set_properties, clear, create_line, create_circle, create_arc, create_bezier" }; + } + } + + private static object HandleTrailRendererAction(JObject @params, string action) + { + switch (action) + { + case "get_info": return TrailRead.GetInfo(@params); + case "set_time": return TrailWrite.SetTime(@params); + case "set_width": return TrailWrite.SetWidth(@params); + case "set_color": return TrailWrite.SetColor(@params); + case "set_material": return TrailWrite.SetMaterial(@params); + case "set_properties": return TrailWrite.SetProperties(@params); + case "clear": return TrailControl.Clear(@params); + case "emit": return TrailControl.Emit(@params); + default: + return new { success = false, message = $"Unknown trail action: {action}. Valid: get_info, set_time, set_width, set_color, set_material, set_properties, clear, emit" }; + } + } + } +} diff --git a/Packages/MCPForUnity/Editor/Tools/Vfx/ManageVFX.cs.meta b/Packages/MCPForUnity/Editor/Tools/Vfx/ManageVFX.cs.meta new file mode 100644 index 00000000..e1fb8116 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/Vfx/ManageVFX.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: a8f3d2c1e9b74f6a8c5d0e2f1a3b4c5d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: + + diff --git a/Packages/MCPForUnity/Editor/Tools/Vfx/ManageVfxCommon.cs b/Packages/MCPForUnity/Editor/Tools/Vfx/ManageVfxCommon.cs new file mode 100644 index 00000000..aa2d668c --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/Vfx/ManageVfxCommon.cs @@ -0,0 +1,22 @@ +using Newtonsoft.Json.Linq; +using MCPForUnity.Editor.Helpers; +using UnityEngine; + +namespace MCPForUnity.Editor.Tools.Vfx +{ + internal static class ManageVfxCommon + { + public static Color ParseColor(JToken token) => VectorParsing.ParseColorOrDefault(token); + public static Vector3 ParseVector3(JToken token) => VectorParsing.ParseVector3OrDefault(token); + public static Vector4 ParseVector4(JToken token) => VectorParsing.ParseVector4OrDefault(token); + public static Gradient ParseGradient(JToken token) => VectorParsing.ParseGradientOrDefault(token); + public static AnimationCurve ParseAnimationCurve(JToken token, float defaultValue = 1f) + => VectorParsing.ParseAnimationCurveOrDefault(token, defaultValue); + + public static GameObject FindTargetGameObject(JObject @params) + => ObjectResolver.ResolveGameObject(@params["target"], @params["searchMethod"]?.ToString()); + + public static Material FindMaterialByPath(string path) + => ObjectResolver.ResolveMaterial(path); + } +} diff --git a/Packages/MCPForUnity/Editor/Tools/Vfx/ManageVfxCommon.cs.meta b/Packages/MCPForUnity/Editor/Tools/Vfx/ManageVfxCommon.cs.meta new file mode 100644 index 00000000..6d1d28b2 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/Vfx/ManageVfxCommon.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1c5e603b26d2f47529394c1ec6b8ed79 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Tools/Vfx/ParticleCommon.cs b/Packages/MCPForUnity/Editor/Tools/Vfx/ParticleCommon.cs new file mode 100644 index 00000000..b9418733 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/Vfx/ParticleCommon.cs @@ -0,0 +1,87 @@ +using Newtonsoft.Json.Linq; +using UnityEngine; + +namespace MCPForUnity.Editor.Tools.Vfx +{ + internal static class ParticleCommon + { + public static ParticleSystem FindParticleSystem(JObject @params) + { + GameObject go = ManageVfxCommon.FindTargetGameObject(@params); + return go?.GetComponent(); + } + + public static ParticleSystem.MinMaxCurve ParseMinMaxCurve(JToken token, float defaultValue = 1f) + { + if (token == null) + return new ParticleSystem.MinMaxCurve(defaultValue); + + if (token.Type == JTokenType.Float || token.Type == JTokenType.Integer) + { + return new ParticleSystem.MinMaxCurve(token.ToObject()); + } + + if (token is JObject obj) + { + string mode = obj["mode"]?.ToString()?.ToLowerInvariant() ?? "constant"; + + switch (mode) + { + case "constant": + float constant = obj["value"]?.ToObject() ?? defaultValue; + return new ParticleSystem.MinMaxCurve(constant); + + case "random_between_constants": + case "two_constants": + float min = obj["min"]?.ToObject() ?? 0f; + float max = obj["max"]?.ToObject() ?? 1f; + return new ParticleSystem.MinMaxCurve(min, max); + + case "curve": + AnimationCurve curve = ManageVfxCommon.ParseAnimationCurve(obj, defaultValue); + return new ParticleSystem.MinMaxCurve(obj["multiplier"]?.ToObject() ?? 1f, curve); + + default: + return new ParticleSystem.MinMaxCurve(defaultValue); + } + } + + return new ParticleSystem.MinMaxCurve(defaultValue); + } + + public static ParticleSystem.MinMaxGradient ParseMinMaxGradient(JToken token) + { + if (token == null) + return new ParticleSystem.MinMaxGradient(Color.white); + + if (token is JArray arr && arr.Count >= 3) + { + return new ParticleSystem.MinMaxGradient(ManageVfxCommon.ParseColor(arr)); + } + + if (token is JObject obj) + { + string mode = obj["mode"]?.ToString()?.ToLowerInvariant() ?? "color"; + + switch (mode) + { + case "color": + return new ParticleSystem.MinMaxGradient(ManageVfxCommon.ParseColor(obj["color"])); + + case "two_colors": + Color colorMin = ManageVfxCommon.ParseColor(obj["colorMin"]); + Color colorMax = ManageVfxCommon.ParseColor(obj["colorMax"]); + return new ParticleSystem.MinMaxGradient(colorMin, colorMax); + + case "gradient": + return new ParticleSystem.MinMaxGradient(ManageVfxCommon.ParseGradient(obj)); + + default: + return new ParticleSystem.MinMaxGradient(Color.white); + } + } + + return new ParticleSystem.MinMaxGradient(Color.white); + } + } +} diff --git a/Packages/MCPForUnity/Editor/Tools/Vfx/ParticleCommon.cs.meta b/Packages/MCPForUnity/Editor/Tools/Vfx/ParticleCommon.cs.meta new file mode 100644 index 00000000..fa9388a2 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/Vfx/ParticleCommon.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a3a91aa6f6b9c4121a2ccc1a8147bbf9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Tools/Vfx/ParticleControl.cs b/Packages/MCPForUnity/Editor/Tools/Vfx/ParticleControl.cs new file mode 100644 index 00000000..4fb8584f --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/Vfx/ParticleControl.cs @@ -0,0 +1,121 @@ +using System; +using Newtonsoft.Json.Linq; +using UnityEditor; +using UnityEngine; +using MCPForUnity.Editor.Helpers; + +namespace MCPForUnity.Editor.Tools.Vfx +{ + internal static class ParticleControl + { + public static object EnableModule(JObject @params) + { + ParticleSystem ps = ParticleCommon.FindParticleSystem(@params); + if (ps == null) return new { success = false, message = "ParticleSystem not found" }; + + string moduleName = @params["module"]?.ToString()?.ToLowerInvariant(); + bool enabled = @params["enabled"]?.ToObject() ?? true; + + if (string.IsNullOrEmpty(moduleName)) return new { success = false, message = "Module name required" }; + + Undo.RecordObject(ps, $"Toggle {moduleName}"); + + switch (moduleName.Replace("_", "")) + { + case "emission": var em = ps.emission; em.enabled = enabled; break; + case "shape": var sh = ps.shape; sh.enabled = enabled; break; + case "coloroverlifetime": var col = ps.colorOverLifetime; col.enabled = enabled; break; + case "sizeoverlifetime": var sol = ps.sizeOverLifetime; sol.enabled = enabled; break; + case "velocityoverlifetime": var vol = ps.velocityOverLifetime; vol.enabled = enabled; break; + case "noise": var n = ps.noise; n.enabled = enabled; break; + case "collision": var coll = ps.collision; coll.enabled = enabled; break; + case "trails": var tr = ps.trails; tr.enabled = enabled; break; + case "lights": var li = ps.lights; li.enabled = enabled; break; + default: return new { success = false, message = $"Unknown module: {moduleName}" }; + } + + EditorUtility.SetDirty(ps); + return new { success = true, message = $"Module '{moduleName}' {(enabled ? "enabled" : "disabled")}" }; + } + + public static object Control(JObject @params, string action) + { + ParticleSystem ps = ParticleCommon.FindParticleSystem(@params); + if (ps == null) return new { success = false, message = "ParticleSystem not found" }; + + // Ensure material is assigned before playing + if (action == "play" || action == "restart") + { + var renderer = ps.GetComponent(); + if (renderer != null) + { + RendererHelpers.EnsureMaterial(renderer); + } + } + + bool withChildren = @params["withChildren"]?.ToObject() ?? true; + + switch (action) + { + case "play": ps.Play(withChildren); break; + case "stop": ps.Stop(withChildren, ParticleSystemStopBehavior.StopEmitting); break; + case "pause": ps.Pause(withChildren); break; + case "restart": ps.Stop(withChildren, ParticleSystemStopBehavior.StopEmittingAndClear); ps.Play(withChildren); break; + case "clear": ps.Clear(withChildren); break; + default: return new { success = false, message = $"Unknown action: {action}" }; + } + + return new { success = true, message = $"ParticleSystem {action}" }; + } + + public static object AddBurst(JObject @params) + { + ParticleSystem ps = ParticleCommon.FindParticleSystem(@params); + if (ps == null) return new { success = false, message = "ParticleSystem not found" }; + + // Ensure material is assigned + var renderer = ps.GetComponent(); + if (renderer != null) + { + RendererHelpers.EnsureMaterial(renderer); + } + + Undo.RecordObject(ps, "Add Burst"); + var emission = ps.emission; + + float time = @params["time"]?.ToObject() ?? 0f; + int minCountRaw = @params["minCount"]?.ToObject() ?? @params["count"]?.ToObject() ?? 30; + int maxCountRaw = @params["maxCount"]?.ToObject() ?? @params["count"]?.ToObject() ?? 30; + short minCount = (short)Math.Clamp(minCountRaw, 0, short.MaxValue); + short maxCount = (short)Math.Clamp(maxCountRaw, 0, short.MaxValue); + int cycles = @params["cycles"]?.ToObject() ?? 1; + float interval = @params["interval"]?.ToObject() ?? 0.01f; + + var burst = new ParticleSystem.Burst(time, minCount, maxCount, cycles, interval); + burst.probability = @params["probability"]?.ToObject() ?? 1f; + + int idx = emission.burstCount; + var bursts = new ParticleSystem.Burst[idx + 1]; + emission.GetBursts(bursts); + bursts[idx] = burst; + emission.SetBursts(bursts); + + EditorUtility.SetDirty(ps); + return new { success = true, message = $"Added burst at t={time}", burstIndex = idx }; + } + + public static object ClearBursts(JObject @params) + { + ParticleSystem ps = ParticleCommon.FindParticleSystem(@params); + if (ps == null) return new { success = false, message = "ParticleSystem not found" }; + + Undo.RecordObject(ps, "Clear Bursts"); + var emission = ps.emission; + int count = emission.burstCount; + emission.SetBursts(new ParticleSystem.Burst[0]); + + EditorUtility.SetDirty(ps); + return new { success = true, message = $"Cleared {count} bursts" }; + } + } +} diff --git a/Packages/MCPForUnity/Editor/Tools/Vfx/ParticleControl.cs.meta b/Packages/MCPForUnity/Editor/Tools/Vfx/ParticleControl.cs.meta new file mode 100644 index 00000000..d30d0272 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/Vfx/ParticleControl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 04e1bfb655f184337943edd5a3fbbcdb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Tools/Vfx/ParticleRead.cs b/Packages/MCPForUnity/Editor/Tools/Vfx/ParticleRead.cs new file mode 100644 index 00000000..65afcd4c --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/Vfx/ParticleRead.cs @@ -0,0 +1,153 @@ +using Newtonsoft.Json.Linq; +using System.Linq; +using UnityEngine; + +namespace MCPForUnity.Editor.Tools.Vfx +{ + internal static class ParticleRead + { + private static object SerializeAnimationCurve(AnimationCurve curve) + { + if (curve == null) + { + return null; + } + + return new + { + keys = curve.keys.Select(k => new + { + time = k.time, + value = k.value, + inTangent = k.inTangent, + outTangent = k.outTangent + }).ToArray() + }; + } + + private static object SerializeMinMaxCurve(ParticleSystem.MinMaxCurve curve) + { + switch (curve.mode) + { + case ParticleSystemCurveMode.Constant: + return new + { + mode = "constant", + value = curve.constant + }; + + case ParticleSystemCurveMode.TwoConstants: + return new + { + mode = "two_constants", + min = curve.constantMin, + max = curve.constantMax + }; + + case ParticleSystemCurveMode.Curve: + return new + { + mode = "curve", + multiplier = curve.curveMultiplier, + keys = curve.curve.keys.Select(k => new + { + time = k.time, + value = k.value, + inTangent = k.inTangent, + outTangent = k.outTangent + }).ToArray() + }; + + case ParticleSystemCurveMode.TwoCurves: + return new + { + mode = "curve", + multiplier = curve.curveMultiplier, + keys = curve.curveMax.keys.Select(k => new + { + time = k.time, + value = k.value, + inTangent = k.inTangent, + outTangent = k.outTangent + }).ToArray(), + originalMode = "two_curves", + curveMin = SerializeAnimationCurve(curve.curveMin), + curveMax = SerializeAnimationCurve(curve.curveMax) + }; + + default: + return new + { + mode = "constant", + value = curve.constant + }; + } + } + + public static object GetInfo(JObject @params) + { + ParticleSystem ps = ParticleCommon.FindParticleSystem(@params); + if (ps == null) + { + return new { success = false, message = "ParticleSystem not found" }; + } + + var main = ps.main; + var emission = ps.emission; + var shape = ps.shape; + var renderer = ps.GetComponent(); + + return new + { + success = true, + data = new + { + gameObject = ps.gameObject.name, + isPlaying = ps.isPlaying, + isPaused = ps.isPaused, + particleCount = ps.particleCount, + main = new + { + duration = main.duration, + looping = main.loop, + startLifetime = SerializeMinMaxCurve(main.startLifetime), + startSpeed = SerializeMinMaxCurve(main.startSpeed), + startSize = SerializeMinMaxCurve(main.startSize), + gravityModifier = SerializeMinMaxCurve(main.gravityModifier), + simulationSpace = main.simulationSpace.ToString(), + maxParticles = main.maxParticles + }, + emission = new + { + enabled = emission.enabled, + rateOverTime = SerializeMinMaxCurve(emission.rateOverTime), + burstCount = emission.burstCount + }, + shape = new + { + enabled = shape.enabled, + shapeType = shape.shapeType.ToString(), + radius = shape.radius, + angle = shape.angle + }, + renderer = renderer != null ? new + { + renderMode = renderer.renderMode.ToString(), + sortMode = renderer.sortMode.ToString(), + material = renderer.sharedMaterial?.name, + trailMaterial = renderer.trailMaterial?.name, + minParticleSize = renderer.minParticleSize, + maxParticleSize = renderer.maxParticleSize, + shadowCastingMode = renderer.shadowCastingMode.ToString(), + receiveShadows = renderer.receiveShadows, + lightProbeUsage = renderer.lightProbeUsage.ToString(), + reflectionProbeUsage = renderer.reflectionProbeUsage.ToString(), + sortingOrder = renderer.sortingOrder, + sortingLayerName = renderer.sortingLayerName, + renderingLayerMask = renderer.renderingLayerMask + } : null + } + }; + } + } +} diff --git a/Packages/MCPForUnity/Editor/Tools/Vfx/ParticleRead.cs.meta b/Packages/MCPForUnity/Editor/Tools/Vfx/ParticleRead.cs.meta new file mode 100644 index 00000000..a4a7dffb --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/Vfx/ParticleRead.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 74bb7c48a4e1944bcba43b3619653cb9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Tools/Vfx/ParticleWrite.cs b/Packages/MCPForUnity/Editor/Tools/Vfx/ParticleWrite.cs new file mode 100644 index 00000000..21c0384f --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/Vfx/ParticleWrite.cs @@ -0,0 +1,295 @@ +using System; +using System.Collections.Generic; +using Newtonsoft.Json.Linq; +using UnityEditor; +using UnityEngine; +using MCPForUnity.Editor.Helpers; + +namespace MCPForUnity.Editor.Tools.Vfx +{ + internal static class ParticleWrite + { + public static object SetMain(JObject @params) + { + ParticleSystem ps = ParticleCommon.FindParticleSystem(@params); + if (ps == null) return new { success = false, message = "ParticleSystem not found" }; + + // Ensure material is assigned before any configuration + var renderer = ps.GetComponent(); + if (renderer != null) + { + RendererHelpers.EnsureMaterial(renderer); + } + + // Stop particle system if it's playing and duration needs to be changed + bool wasPlaying = ps.isPlaying; + bool needsStop = @params["duration"] != null && wasPlaying; + if (needsStop) + { + ps.Stop(true, ParticleSystemStopBehavior.StopEmittingAndClear); + } + + Undo.RecordObject(ps, "Set ParticleSystem Main"); + var main = ps.main; + var changes = new List(); + + if (@params["duration"] != null) { main.duration = @params["duration"].ToObject(); changes.Add("duration"); } + if (@params["looping"] != null) { main.loop = @params["looping"].ToObject(); changes.Add("looping"); } + if (@params["prewarm"] != null) { main.prewarm = @params["prewarm"].ToObject(); changes.Add("prewarm"); } + if (@params["startDelay"] != null) { main.startDelay = ParticleCommon.ParseMinMaxCurve(@params["startDelay"], 0f); changes.Add("startDelay"); } + if (@params["startLifetime"] != null) { main.startLifetime = ParticleCommon.ParseMinMaxCurve(@params["startLifetime"], 5f); changes.Add("startLifetime"); } + if (@params["startSpeed"] != null) { main.startSpeed = ParticleCommon.ParseMinMaxCurve(@params["startSpeed"], 5f); changes.Add("startSpeed"); } + if (@params["startSize"] != null) { main.startSize = ParticleCommon.ParseMinMaxCurve(@params["startSize"], 1f); changes.Add("startSize"); } + if (@params["startRotation"] != null) { main.startRotation = ParticleCommon.ParseMinMaxCurve(@params["startRotation"], 0f); changes.Add("startRotation"); } + if (@params["startColor"] != null) { main.startColor = ParticleCommon.ParseMinMaxGradient(@params["startColor"]); changes.Add("startColor"); } + if (@params["gravityModifier"] != null) { main.gravityModifier = ParticleCommon.ParseMinMaxCurve(@params["gravityModifier"], 0f); changes.Add("gravityModifier"); } + if (@params["simulationSpace"] != null && Enum.TryParse(@params["simulationSpace"].ToString(), true, out var simSpace)) { main.simulationSpace = simSpace; changes.Add("simulationSpace"); } + if (@params["scalingMode"] != null && Enum.TryParse(@params["scalingMode"].ToString(), true, out var scaleMode)) { main.scalingMode = scaleMode; changes.Add("scalingMode"); } + if (@params["playOnAwake"] != null) { main.playOnAwake = @params["playOnAwake"].ToObject(); changes.Add("playOnAwake"); } + if (@params["maxParticles"] != null) { main.maxParticles = @params["maxParticles"].ToObject(); changes.Add("maxParticles"); } + + EditorUtility.SetDirty(ps); + + // Restart particle system if it was playing + if (needsStop && wasPlaying) + { + ps.Play(true); + changes.Add("(restarted after duration change)"); + } + + return new { success = true, message = $"Updated: {string.Join(", ", changes)}" }; + } + + public static object SetEmission(JObject @params) + { + ParticleSystem ps = ParticleCommon.FindParticleSystem(@params); + if (ps == null) return new { success = false, message = "ParticleSystem not found" }; + + // Ensure material is assigned + var renderer = ps.GetComponent(); + if (renderer != null) + { + RendererHelpers.EnsureMaterial(renderer); + } + + Undo.RecordObject(ps, "Set ParticleSystem Emission"); + var emission = ps.emission; + var changes = new List(); + + if (@params["enabled"] != null) { emission.enabled = @params["enabled"].ToObject(); changes.Add("enabled"); } + if (@params["rateOverTime"] != null) { emission.rateOverTime = ParticleCommon.ParseMinMaxCurve(@params["rateOverTime"], 10f); changes.Add("rateOverTime"); } + if (@params["rateOverDistance"] != null) { emission.rateOverDistance = ParticleCommon.ParseMinMaxCurve(@params["rateOverDistance"], 0f); changes.Add("rateOverDistance"); } + + EditorUtility.SetDirty(ps); + return new { success = true, message = $"Updated emission: {string.Join(", ", changes)}" }; + } + + public static object SetShape(JObject @params) + { + ParticleSystem ps = ParticleCommon.FindParticleSystem(@params); + if (ps == null) return new { success = false, message = "ParticleSystem not found" }; + + // Ensure material is assigned + var renderer = ps.GetComponent(); + if (renderer != null) + { + RendererHelpers.EnsureMaterial(renderer); + } + + Undo.RecordObject(ps, "Set ParticleSystem Shape"); + var shape = ps.shape; + var changes = new List(); + + if (@params["enabled"] != null) { shape.enabled = @params["enabled"].ToObject(); changes.Add("enabled"); } + if (@params["shapeType"] != null && Enum.TryParse(@params["shapeType"].ToString(), true, out var shapeType)) { shape.shapeType = shapeType; changes.Add("shapeType"); } + if (@params["radius"] != null) { shape.radius = @params["radius"].ToObject(); changes.Add("radius"); } + if (@params["radiusThickness"] != null) { shape.radiusThickness = @params["radiusThickness"].ToObject(); changes.Add("radiusThickness"); } + if (@params["angle"] != null) { shape.angle = @params["angle"].ToObject(); changes.Add("angle"); } + if (@params["arc"] != null) { shape.arc = @params["arc"].ToObject(); changes.Add("arc"); } + if (@params["position"] != null) { shape.position = ManageVfxCommon.ParseVector3(@params["position"]); changes.Add("position"); } + if (@params["rotation"] != null) { shape.rotation = ManageVfxCommon.ParseVector3(@params["rotation"]); changes.Add("rotation"); } + if (@params["scale"] != null) { shape.scale = ManageVfxCommon.ParseVector3(@params["scale"]); changes.Add("scale"); } + + EditorUtility.SetDirty(ps); + return new { success = true, message = $"Updated shape: {string.Join(", ", changes)}" }; + } + + public static object SetColorOverLifetime(JObject @params) + { + ParticleSystem ps = ParticleCommon.FindParticleSystem(@params); + if (ps == null) return new { success = false, message = "ParticleSystem not found" }; + + // Ensure material is assigned + var renderer = ps.GetComponent(); + if (renderer != null) + { + RendererHelpers.EnsureMaterial(renderer); + } + + Undo.RecordObject(ps, "Set ParticleSystem Color Over Lifetime"); + var col = ps.colorOverLifetime; + var changes = new List(); + + if (@params["enabled"] != null) { col.enabled = @params["enabled"].ToObject(); changes.Add("enabled"); } + if (@params["color"] != null) { col.color = ParticleCommon.ParseMinMaxGradient(@params["color"]); changes.Add("color"); } + + EditorUtility.SetDirty(ps); + return new { success = true, message = $"Updated: {string.Join(", ", changes)}" }; + } + + public static object SetSizeOverLifetime(JObject @params) + { + ParticleSystem ps = ParticleCommon.FindParticleSystem(@params); + if (ps == null) return new { success = false, message = "ParticleSystem not found" }; + + // Ensure material is assigned + var renderer = ps.GetComponent(); + if (renderer != null) + { + RendererHelpers.EnsureMaterial(renderer); + } + + Undo.RecordObject(ps, "Set ParticleSystem Size Over Lifetime"); + var sol = ps.sizeOverLifetime; + var changes = new List(); + + bool hasSizeProperty = @params["size"] != null || @params["sizeX"] != null || + @params["sizeY"] != null || @params["sizeZ"] != null; + if (hasSizeProperty && @params["enabled"] == null && !sol.enabled) + { + sol.enabled = true; + changes.Add("enabled"); + } + else if (@params["enabled"] != null) + { + sol.enabled = @params["enabled"].ToObject(); + changes.Add("enabled"); + } + + if (@params["separateAxes"] != null) { sol.separateAxes = @params["separateAxes"].ToObject(); changes.Add("separateAxes"); } + if (@params["size"] != null) { sol.size = ParticleCommon.ParseMinMaxCurve(@params["size"], 1f); changes.Add("size"); } + if (@params["sizeX"] != null) { sol.x = ParticleCommon.ParseMinMaxCurve(@params["sizeX"], 1f); changes.Add("sizeX"); } + if (@params["sizeY"] != null) { sol.y = ParticleCommon.ParseMinMaxCurve(@params["sizeY"], 1f); changes.Add("sizeY"); } + if (@params["sizeZ"] != null) { sol.z = ParticleCommon.ParseMinMaxCurve(@params["sizeZ"], 1f); changes.Add("sizeZ"); } + + EditorUtility.SetDirty(ps); + return new { success = true, message = $"Updated: {string.Join(", ", changes)}" }; + } + + public static object SetVelocityOverLifetime(JObject @params) + { + ParticleSystem ps = ParticleCommon.FindParticleSystem(@params); + if (ps == null) return new { success = false, message = "ParticleSystem not found" }; + + // Ensure material is assigned + var renderer = ps.GetComponent(); + if (renderer != null) + { + RendererHelpers.EnsureMaterial(renderer); + } + + Undo.RecordObject(ps, "Set ParticleSystem Velocity Over Lifetime"); + var vol = ps.velocityOverLifetime; + var changes = new List(); + + if (@params["enabled"] != null) { vol.enabled = @params["enabled"].ToObject(); changes.Add("enabled"); } + if (@params["space"] != null && Enum.TryParse(@params["space"].ToString(), true, out var space)) { vol.space = space; changes.Add("space"); } + if (@params["x"] != null) { vol.x = ParticleCommon.ParseMinMaxCurve(@params["x"], 0f); changes.Add("x"); } + if (@params["y"] != null) { vol.y = ParticleCommon.ParseMinMaxCurve(@params["y"], 0f); changes.Add("y"); } + if (@params["z"] != null) { vol.z = ParticleCommon.ParseMinMaxCurve(@params["z"], 0f); changes.Add("z"); } + if (@params["speedModifier"] != null) { vol.speedModifier = ParticleCommon.ParseMinMaxCurve(@params["speedModifier"], 1f); changes.Add("speedModifier"); } + + EditorUtility.SetDirty(ps); + return new { success = true, message = $"Updated: {string.Join(", ", changes)}" }; + } + + public static object SetNoise(JObject @params) + { + ParticleSystem ps = ParticleCommon.FindParticleSystem(@params); + if (ps == null) return new { success = false, message = "ParticleSystem not found" }; + + // Ensure material is assigned + var renderer = ps.GetComponent(); + if (renderer != null) + { + RendererHelpers.EnsureMaterial(renderer); + } + + Undo.RecordObject(ps, "Set ParticleSystem Noise"); + var noise = ps.noise; + var changes = new List(); + + if (@params["enabled"] != null) { noise.enabled = @params["enabled"].ToObject(); changes.Add("enabled"); } + if (@params["strength"] != null) { noise.strength = ParticleCommon.ParseMinMaxCurve(@params["strength"], 1f); changes.Add("strength"); } + if (@params["frequency"] != null) { noise.frequency = @params["frequency"].ToObject(); changes.Add("frequency"); } + if (@params["scrollSpeed"] != null) { noise.scrollSpeed = ParticleCommon.ParseMinMaxCurve(@params["scrollSpeed"], 0f); changes.Add("scrollSpeed"); } + if (@params["damping"] != null) { noise.damping = @params["damping"].ToObject(); changes.Add("damping"); } + if (@params["octaveCount"] != null) { noise.octaveCount = @params["octaveCount"].ToObject(); changes.Add("octaveCount"); } + if (@params["quality"] != null && Enum.TryParse(@params["quality"].ToString(), true, out var quality)) { noise.quality = quality; changes.Add("quality"); } + + EditorUtility.SetDirty(ps); + return new { success = true, message = $"Updated noise: {string.Join(", ", changes)}" }; + } + + public static object SetRenderer(JObject @params) + { + ParticleSystem ps = ParticleCommon.FindParticleSystem(@params); + if (ps == null) return new { success = false, message = "ParticleSystem not found" }; + + var renderer = ps.GetComponent(); + if (renderer == null) return new { success = false, message = "ParticleSystemRenderer not found" }; + + // Ensure material is set before any other operations + RendererHelpers.EnsureMaterial(renderer); + + Undo.RecordObject(renderer, "Set ParticleSystem Renderer"); + var changes = new List(); + + if (@params["renderMode"] != null && Enum.TryParse(@params["renderMode"].ToString(), true, out var renderMode)) { renderer.renderMode = renderMode; changes.Add("renderMode"); } + if (@params["sortMode"] != null && Enum.TryParse(@params["sortMode"].ToString(), true, out var sortMode)) { renderer.sortMode = sortMode; changes.Add("sortMode"); } + + if (@params["minParticleSize"] != null) { renderer.minParticleSize = @params["minParticleSize"].ToObject(); changes.Add("minParticleSize"); } + if (@params["maxParticleSize"] != null) { renderer.maxParticleSize = @params["maxParticleSize"].ToObject(); changes.Add("maxParticleSize"); } + + if (@params["lengthScale"] != null) { renderer.lengthScale = @params["lengthScale"].ToObject(); changes.Add("lengthScale"); } + if (@params["velocityScale"] != null) { renderer.velocityScale = @params["velocityScale"].ToObject(); changes.Add("velocityScale"); } + if (@params["cameraVelocityScale"] != null) { renderer.cameraVelocityScale = @params["cameraVelocityScale"].ToObject(); changes.Add("cameraVelocityScale"); } + if (@params["normalDirection"] != null) { renderer.normalDirection = @params["normalDirection"].ToObject(); changes.Add("normalDirection"); } + + if (@params["alignment"] != null && Enum.TryParse(@params["alignment"].ToString(), true, out var alignment)) { renderer.alignment = alignment; changes.Add("alignment"); } + if (@params["pivot"] != null) { renderer.pivot = ManageVfxCommon.ParseVector3(@params["pivot"]); changes.Add("pivot"); } + if (@params["flip"] != null) { renderer.flip = ManageVfxCommon.ParseVector3(@params["flip"]); changes.Add("flip"); } + if (@params["allowRoll"] != null) { renderer.allowRoll = @params["allowRoll"].ToObject(); changes.Add("allowRoll"); } + + if (@params["shadowBias"] != null) { renderer.shadowBias = @params["shadowBias"].ToObject(); changes.Add("shadowBias"); } + + RendererHelpers.ApplyCommonRendererProperties(renderer, @params, changes); + + if (@params["materialPath"] != null) + { + string matPath = @params["materialPath"].ToString(); + var findInst = new JObject { ["find"] = matPath }; + Material mat = ObjectResolver.Resolve(findInst, typeof(Material)) as Material; + if (mat != null) + { + renderer.sharedMaterial = mat; + changes.Add($"material={mat.name}"); + } + else + { + McpLog.Warn($"Material not found at path: {matPath}. Keeping existing material."); + } + } + + if (@params["trailMaterialPath"] != null) + { + var findInst = new JObject { ["find"] = @params["trailMaterialPath"].ToString() }; + Material mat = ObjectResolver.Resolve(findInst, typeof(Material)) as Material; + if (mat != null) { renderer.trailMaterial = mat; changes.Add("trailMaterial"); } + } + + EditorUtility.SetDirty(renderer); + return new { success = true, message = $"Updated renderer: {string.Join(", ", changes)}" }; + } + } +} diff --git a/Packages/MCPForUnity/Editor/Tools/Vfx/ParticleWrite.cs.meta b/Packages/MCPForUnity/Editor/Tools/Vfx/ParticleWrite.cs.meta new file mode 100644 index 00000000..1512de12 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/Vfx/ParticleWrite.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2a68818a59fac4e2c83ad23433ddc9c1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Tools/Vfx/TrailControl.cs b/Packages/MCPForUnity/Editor/Tools/Vfx/TrailControl.cs new file mode 100644 index 00000000..ad6acc6e --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/Vfx/TrailControl.cs @@ -0,0 +1,36 @@ +using Newtonsoft.Json.Linq; +using UnityEditor; +using UnityEngine; +using MCPForUnity.Editor.Helpers; + +namespace MCPForUnity.Editor.Tools.Vfx +{ + internal static class TrailControl + { + public static object Clear(JObject @params) + { + TrailRenderer tr = TrailRead.FindTrailRenderer(@params); + if (tr == null) return new { success = false, message = "TrailRenderer not found" }; + + Undo.RecordObject(tr, "Clear Trail"); + tr.Clear(); + return new { success = true, message = "Trail cleared" }; + } + + public static object Emit(JObject @params) + { + TrailRenderer tr = TrailRead.FindTrailRenderer(@params); + if (tr == null) return new { success = false, message = "TrailRenderer not found" }; + + RendererHelpers.EnsureMaterial(tr); + +#if UNITY_2021_1_OR_NEWER + Vector3 pos = ManageVfxCommon.ParseVector3(@params["position"]); + tr.AddPosition(pos); + return new { success = true, message = $"Emitted at ({pos.x}, {pos.y}, {pos.z})" }; +#else + return new { success = false, message = "AddPosition requires Unity 2021.1+" }; +#endif + } + } +} diff --git a/Packages/MCPForUnity/Editor/Tools/Vfx/TrailControl.cs.meta b/Packages/MCPForUnity/Editor/Tools/Vfx/TrailControl.cs.meta new file mode 100644 index 00000000..84a2f3c6 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/Vfx/TrailControl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: edebad99699494d5585418395a2bf518 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Tools/Vfx/TrailRead.cs b/Packages/MCPForUnity/Editor/Tools/Vfx/TrailRead.cs new file mode 100644 index 00000000..4fae75aa --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/Vfx/TrailRead.cs @@ -0,0 +1,49 @@ +using Newtonsoft.Json.Linq; +using UnityEngine; + +namespace MCPForUnity.Editor.Tools.Vfx +{ + internal static class TrailRead + { + public static TrailRenderer FindTrailRenderer(JObject @params) + { + GameObject go = ManageVfxCommon.FindTargetGameObject(@params); + return go?.GetComponent(); + } + + public static object GetInfo(JObject @params) + { + TrailRenderer tr = FindTrailRenderer(@params); + if (tr == null) return new { success = false, message = "TrailRenderer not found" }; + + return new + { + success = true, + data = new + { + gameObject = tr.gameObject.name, + time = tr.time, + startWidth = tr.startWidth, + endWidth = tr.endWidth, + minVertexDistance = tr.minVertexDistance, + emitting = tr.emitting, + autodestruct = tr.autodestruct, + positionCount = tr.positionCount, + alignment = tr.alignment.ToString(), + textureMode = tr.textureMode.ToString(), + numCornerVertices = tr.numCornerVertices, + numCapVertices = tr.numCapVertices, + generateLightingData = tr.generateLightingData, + material = tr.sharedMaterial?.name, + shadowCastingMode = tr.shadowCastingMode.ToString(), + receiveShadows = tr.receiveShadows, + lightProbeUsage = tr.lightProbeUsage.ToString(), + reflectionProbeUsage = tr.reflectionProbeUsage.ToString(), + sortingOrder = tr.sortingOrder, + sortingLayerName = tr.sortingLayerName, + renderingLayerMask = tr.renderingLayerMask + } + }; + } + } +} diff --git a/Packages/MCPForUnity/Editor/Tools/Vfx/TrailRead.cs.meta b/Packages/MCPForUnity/Editor/Tools/Vfx/TrailRead.cs.meta new file mode 100644 index 00000000..388cd9ee --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/Vfx/TrailRead.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2921f0042777b4ebbaec4c79c60908a1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Tools/Vfx/TrailWrite.cs b/Packages/MCPForUnity/Editor/Tools/Vfx/TrailWrite.cs new file mode 100644 index 00000000..fa11bbff --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/Vfx/TrailWrite.cs @@ -0,0 +1,130 @@ +using System; +using System.Collections.Generic; +using MCPForUnity.Editor.Helpers; +using Newtonsoft.Json.Linq; +using UnityEditor; +using UnityEngine; + +namespace MCPForUnity.Editor.Tools.Vfx +{ + internal static class TrailWrite + { + public static object SetTime(JObject @params) + { + TrailRenderer tr = TrailRead.FindTrailRenderer(@params); + if (tr == null) return new { success = false, message = "TrailRenderer not found" }; + + RendererHelpers.EnsureMaterial(tr); + + float time = @params["time"]?.ToObject() ?? 5f; + + Undo.RecordObject(tr, "Set Trail Time"); + tr.time = time; + EditorUtility.SetDirty(tr); + + return new { success = true, message = $"Set trail time to {time}s" }; + } + + public static object SetWidth(JObject @params) + { + TrailRenderer tr = TrailRead.FindTrailRenderer(@params); + if (tr == null) return new { success = false, message = "TrailRenderer not found" }; + + RendererHelpers.EnsureMaterial(tr); + + Undo.RecordObject(tr, "Set Trail Width"); + var changes = new List(); + + RendererHelpers.ApplyWidthProperties(@params, changes, + v => tr.startWidth = v, v => tr.endWidth = v, + v => tr.widthCurve = v, v => tr.widthMultiplier = v, + ManageVfxCommon.ParseAnimationCurve); + + EditorUtility.SetDirty(tr); + return new { success = true, message = $"Updated: {string.Join(", ", changes)}" }; + } + + public static object SetColor(JObject @params) + { + TrailRenderer tr = TrailRead.FindTrailRenderer(@params); + if (tr == null) return new { success = false, message = "TrailRenderer not found" }; + + RendererHelpers.EnsureMaterial(tr); + + Undo.RecordObject(tr, "Set Trail Color"); + var changes = new List(); + + RendererHelpers.ApplyColorProperties(@params, changes, + v => tr.startColor = v, v => tr.endColor = v, + v => tr.colorGradient = v, + ManageVfxCommon.ParseColor, ManageVfxCommon.ParseGradient, fadeEndAlpha: true); + + EditorUtility.SetDirty(tr); + return new { success = true, message = $"Updated: {string.Join(", ", changes)}" }; + } + + public static object SetMaterial(JObject @params) + { + TrailRenderer tr = TrailRead.FindTrailRenderer(@params); + return RendererHelpers.SetRendererMaterial(tr, @params, "Set Trail Material", ManageVfxCommon.FindMaterialByPath); + } + + public static object SetProperties(JObject @params) + { + TrailRenderer tr = TrailRead.FindTrailRenderer(@params); + if (tr == null) return new { success = false, message = "TrailRenderer not found" }; + + RendererHelpers.EnsureMaterial(tr); + + Undo.RecordObject(tr, "Set Trail Properties"); + var changes = new List(); + + // Handle material if provided + if (@params["materialPath"] != null) + { + Material mat = ManageVfxCommon.FindMaterialByPath(@params["materialPath"].ToString()); + if (mat != null) + { + tr.sharedMaterial = mat; + changes.Add($"material={mat.name}"); + } + else + { + McpLog.Warn($"Material not found: {@params["materialPath"]}"); + } + } + + // Handle time if provided + if (@params["time"] != null) { tr.time = @params["time"].ToObject(); changes.Add("time"); } + + // Handle width properties if provided + if (@params["width"] != null || @params["startWidth"] != null || @params["endWidth"] != null) + { + if (@params["width"] != null) + { + float w = @params["width"].ToObject(); + tr.startWidth = w; + tr.endWidth = w; + changes.Add("width"); + } + if (@params["startWidth"] != null) { tr.startWidth = @params["startWidth"].ToObject(); changes.Add("startWidth"); } + if (@params["endWidth"] != null) { tr.endWidth = @params["endWidth"].ToObject(); changes.Add("endWidth"); } + } + + if (@params["minVertexDistance"] != null) { tr.minVertexDistance = @params["minVertexDistance"].ToObject(); changes.Add("minVertexDistance"); } + if (@params["autodestruct"] != null) { tr.autodestruct = @params["autodestruct"].ToObject(); changes.Add("autodestruct"); } + if (@params["emitting"] != null) { tr.emitting = @params["emitting"].ToObject(); changes.Add("emitting"); } + + RendererHelpers.ApplyLineTrailProperties(@params, changes, + null, null, + v => tr.numCornerVertices = v, v => tr.numCapVertices = v, + v => tr.alignment = v, v => tr.textureMode = v, + v => tr.generateLightingData = v); + + RendererHelpers.ApplyCommonRendererProperties(tr, @params, changes); + + EditorUtility.SetDirty(tr); + return new { success = true, message = $"Updated: {string.Join(", ", changes)}" }; + } + } +} diff --git a/Packages/MCPForUnity/Editor/Tools/Vfx/TrailWrite.cs.meta b/Packages/MCPForUnity/Editor/Tools/Vfx/TrailWrite.cs.meta new file mode 100644 index 00000000..27ffbfaa --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/Vfx/TrailWrite.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 33ba432240c134206a4f71ab24f0fb3a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Tools/Vfx/VfxGraphAssets.cs b/Packages/MCPForUnity/Editor/Tools/Vfx/VfxGraphAssets.cs new file mode 100644 index 00000000..5f2e575f --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/Vfx/VfxGraphAssets.cs @@ -0,0 +1,568 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Newtonsoft.Json.Linq; +using UnityEditor; +using UnityEngine; + +#if UNITY_VFX_GRAPH +using UnityEngine.VFX; +#endif + +namespace MCPForUnity.Editor.Tools.Vfx +{ + /// + /// Asset management operations for VFX Graph. + /// Handles creating, assigning, and listing VFX assets. + /// Requires com.unity.visualeffectgraph package and UNITY_VFX_GRAPH symbol. + /// + internal static class VfxGraphAssets + { +#if !UNITY_VFX_GRAPH + public static object CreateAsset(JObject @params) + { + return new { success = false, message = "VFX Graph package (com.unity.visualeffectgraph) not installed" }; + } + + public static object AssignAsset(JObject @params) + { + return new { success = false, message = "VFX Graph package (com.unity.visualeffectgraph) not installed" }; + } + + public static object ListTemplates(JObject @params) + { + return new { success = false, message = "VFX Graph package (com.unity.visualeffectgraph) not installed" }; + } + + public static object ListAssets(JObject @params) + { + return new { success = false, message = "VFX Graph package (com.unity.visualeffectgraph) not installed" }; + } +#else + private static readonly string[] SupportedVfxGraphVersions = { "12.1" }; + + /// + /// Creates a new VFX Graph asset file from a template. + /// + public static object CreateAsset(JObject @params) + { + string assetName = @params["assetName"]?.ToString(); + string folderPath = @params["folderPath"]?.ToString() ?? "Assets/VFX"; + string template = @params["template"]?.ToString() ?? "empty"; + + if (string.IsNullOrEmpty(assetName)) + { + return new { success = false, message = "assetName is required" }; + } + + string versionError = ValidateVfxGraphVersion(); + if (!string.IsNullOrEmpty(versionError)) + { + return new { success = false, message = versionError }; + } + + // Ensure folder exists + if (!AssetDatabase.IsValidFolder(folderPath)) + { + string[] folders = folderPath.Split('/'); + string currentPath = folders[0]; + for (int i = 1; i < folders.Length; i++) + { + string newPath = currentPath + "/" + folders[i]; + if (!AssetDatabase.IsValidFolder(newPath)) + { + AssetDatabase.CreateFolder(currentPath, folders[i]); + } + currentPath = newPath; + } + } + + string assetPath = $"{folderPath}/{assetName}.vfx"; + + // Check if asset already exists + if (AssetDatabase.LoadAssetAtPath(assetPath) != null) + { + bool overwrite = @params["overwrite"]?.ToObject() ?? false; + if (!overwrite) + { + return new { success = false, message = $"Asset already exists at {assetPath}. Set overwrite=true to replace." }; + } + AssetDatabase.DeleteAsset(assetPath); + } + + // Find template asset and copy it + string templatePath = FindTemplate(template); + string templateAssetPath = TryGetAssetPathFromFileSystem(templatePath); + VisualEffectAsset newAsset = null; + + if (!string.IsNullOrEmpty(templateAssetPath)) + { + // Copy the asset to create a new VFX Graph asset + if (!AssetDatabase.CopyAsset(templateAssetPath, assetPath)) + { + return new { success = false, message = $"Failed to copy VFX template from {templateAssetPath}" }; + } + AssetDatabase.Refresh(); + newAsset = AssetDatabase.LoadAssetAtPath(assetPath); + } + else + { + return new { success = false, message = "VFX template not found. Add a .vfx template asset or install VFX Graph templates." }; + } + + if (newAsset == null) + { + return new { success = false, message = "Failed to create VFX asset. Try using a template from list_templates." }; + } + + return new + { + success = true, + message = $"Created VFX asset: {assetPath}", + data = new + { + assetPath = assetPath, + assetName = newAsset.name, + template = template + } + }; + } + + /// + /// Finds VFX template path by name. + /// + private static string FindTemplate(string templateName) + { + // Get the actual filesystem path for the VFX Graph package using PackageManager API + var packageInfo = UnityEditor.PackageManager.PackageInfo.FindForAssetPath("Packages/com.unity.visualeffectgraph"); + + var searchPaths = new List(); + + if (packageInfo != null) + { + // Use the resolved path from PackageManager (handles Library/PackageCache paths) + searchPaths.Add(System.IO.Path.Combine(packageInfo.resolvedPath, "Editor/Templates")); + searchPaths.Add(System.IO.Path.Combine(packageInfo.resolvedPath, "Samples")); + } + + // Also search project-local paths + searchPaths.Add("Assets/VFX/Templates"); + + string[] templatePatterns = new[] + { + $"{templateName}.vfx", + $"VFX{templateName}.vfx", + $"Simple{templateName}.vfx", + $"{templateName}VFX.vfx" + }; + + foreach (string basePath in searchPaths) + { + string searchRoot = basePath; + if (basePath.StartsWith("Assets/")) + { + searchRoot = System.IO.Path.Combine(UnityEngine.Application.dataPath, basePath.Substring("Assets/".Length)); + } + + if (!System.IO.Directory.Exists(searchRoot)) + { + continue; + } + + foreach (string pattern in templatePatterns) + { + string[] files = System.IO.Directory.GetFiles(searchRoot, pattern, System.IO.SearchOption.AllDirectories); + if (files.Length > 0) + { + return files[0]; + } + } + + // Also search by partial match + try + { + string[] allVfxFiles = System.IO.Directory.GetFiles(searchRoot, "*.vfx", System.IO.SearchOption.AllDirectories); + foreach (string file in allVfxFiles) + { + if (System.IO.Path.GetFileNameWithoutExtension(file).ToLower().Contains(templateName.ToLower())) + { + return file; + } + } + } + catch (Exception ex) + { + Debug.LogWarning($"Failed to search VFX templates under '{searchRoot}': {ex.Message}"); + } + } + + // Search in project assets + string[] guids = AssetDatabase.FindAssets("t:VisualEffectAsset " + templateName); + if (guids.Length > 0) + { + string assetPath = AssetDatabase.GUIDToAssetPath(guids[0]); + // Convert asset path (e.g., "Assets/...") to absolute filesystem path + if (!string.IsNullOrEmpty(assetPath) && assetPath.StartsWith("Assets/")) + { + return System.IO.Path.Combine(UnityEngine.Application.dataPath, assetPath.Substring("Assets/".Length)); + } + if (!string.IsNullOrEmpty(assetPath) && assetPath.StartsWith("Packages/")) + { + var info = UnityEditor.PackageManager.PackageInfo.FindForAssetPath(assetPath); + if (info != null) + { + string relPath = assetPath.Substring(("Packages/" + info.name + "/").Length); + return System.IO.Path.Combine(info.resolvedPath, relPath); + } + } + return null; + } + + return null; + } + + /// + /// Assigns a VFX asset to a VisualEffect component. + /// + public static object AssignAsset(JObject @params) + { + VisualEffect vfx = VfxGraphCommon.FindVisualEffect(@params); + if (vfx == null) + { + return new { success = false, message = "VisualEffect component not found" }; + } + + string assetPath = @params["assetPath"]?.ToString(); + if (string.IsNullOrEmpty(assetPath)) + { + return new { success = false, message = "assetPath is required" }; + } + + // Validate and normalize path + // Reject absolute paths, parent directory traversal, and backslashes + if (assetPath.Contains("\\") || assetPath.Contains("..") || System.IO.Path.IsPathRooted(assetPath)) + { + return new { success = false, message = "Invalid assetPath: traversal and absolute paths are not allowed" }; + } + + if (assetPath.StartsWith("Packages/")) + { + return new { success = false, message = "Invalid assetPath: VFX assets must live under Assets/." }; + } + + if (!assetPath.StartsWith("Assets/")) + { + assetPath = "Assets/" + assetPath; + } + if (!assetPath.EndsWith(".vfx")) + { + assetPath += ".vfx"; + } + + // Verify the normalized path doesn't escape the project + string fullPath = System.IO.Path.Combine(UnityEngine.Application.dataPath, assetPath.Substring("Assets/".Length)); + string canonicalProjectRoot = System.IO.Path.GetFullPath(UnityEngine.Application.dataPath); + string canonicalAssetPath = System.IO.Path.GetFullPath(fullPath); + if (!canonicalAssetPath.StartsWith(canonicalProjectRoot + System.IO.Path.DirectorySeparatorChar) && + canonicalAssetPath != canonicalProjectRoot) + { + return new { success = false, message = "Invalid assetPath: would escape project directory" }; + } + + var asset = AssetDatabase.LoadAssetAtPath(assetPath); + if (asset == null) + { + // Try searching by name + string searchName = System.IO.Path.GetFileNameWithoutExtension(assetPath); + string[] guids = AssetDatabase.FindAssets($"t:VisualEffectAsset {searchName}"); + if (guids.Length > 0) + { + assetPath = AssetDatabase.GUIDToAssetPath(guids[0]); + asset = AssetDatabase.LoadAssetAtPath(assetPath); + } + } + + if (asset == null) + { + return new { success = false, message = $"VFX asset not found: {assetPath}" }; + } + + Undo.RecordObject(vfx, "Assign VFX Asset"); + vfx.visualEffectAsset = asset; + EditorUtility.SetDirty(vfx); + + return new + { + success = true, + message = $"Assigned VFX asset '{asset.name}' to {vfx.gameObject.name}", + data = new + { + gameObject = vfx.gameObject.name, + assetName = asset.name, + assetPath = assetPath + } + }; + } + + /// + /// Lists available VFX templates. + /// + public static object ListTemplates(JObject @params) + { + var templates = new List(); + var seenPaths = new HashSet(StringComparer.OrdinalIgnoreCase); + + // Get the actual filesystem path for the VFX Graph package using PackageManager API + var packageInfo = UnityEditor.PackageManager.PackageInfo.FindForAssetPath("Packages/com.unity.visualeffectgraph"); + + var searchPaths = new List(); + + if (packageInfo != null) + { + // Use the resolved path from PackageManager (handles Library/PackageCache paths) + searchPaths.Add(System.IO.Path.Combine(packageInfo.resolvedPath, "Editor/Templates")); + searchPaths.Add(System.IO.Path.Combine(packageInfo.resolvedPath, "Samples")); + } + + // Also search project-local paths + searchPaths.Add("Assets/VFX/Templates"); + searchPaths.Add("Assets/VFX"); + + // Precompute normalized package path for comparison + string normalizedPackagePath = null; + if (packageInfo != null) + { + normalizedPackagePath = packageInfo.resolvedPath.Replace("\\", "/"); + } + + // Precompute the Assets base path for converting absolute paths to project-relative + string assetsBasePath = Application.dataPath.Replace("\\", "/"); + + foreach (string basePath in searchPaths) + { + if (!System.IO.Directory.Exists(basePath)) + { + continue; + } + + try + { + string[] vfxFiles = System.IO.Directory.GetFiles(basePath, "*.vfx", System.IO.SearchOption.AllDirectories); + foreach (string file in vfxFiles) + { + string absolutePath = file.Replace("\\", "/"); + string name = System.IO.Path.GetFileNameWithoutExtension(file); + bool isPackage = normalizedPackagePath != null && absolutePath.StartsWith(normalizedPackagePath); + + // Convert absolute path to project-relative path + string projectRelativePath; + if (isPackage) + { + // For package paths, convert to Packages/... format + projectRelativePath = "Packages/" + packageInfo.name + absolutePath.Substring(normalizedPackagePath.Length); + } + else if (absolutePath.StartsWith(assetsBasePath)) + { + // For project assets, convert to Assets/... format + projectRelativePath = "Assets" + absolutePath.Substring(assetsBasePath.Length); + } + else + { + // Fallback: use the absolute path if we can't determine the relative path + projectRelativePath = absolutePath; + } + + string normalizedPath = projectRelativePath.Replace("\\", "/"); + if (seenPaths.Add(normalizedPath)) + { + templates.Add(new { name = name, path = projectRelativePath, source = isPackage ? "package" : "project" }); + } + } + } + catch (Exception ex) + { + Debug.LogWarning($"Failed to list VFX templates under '{basePath}': {ex.Message}"); + } + } + + // Also search project assets + string[] guids = AssetDatabase.FindAssets("t:VisualEffectAsset"); + foreach (string guid in guids) + { + string path = AssetDatabase.GUIDToAssetPath(guid); + string normalizedPath = path.Replace("\\", "/"); + if (seenPaths.Add(normalizedPath)) + { + string name = System.IO.Path.GetFileNameWithoutExtension(path); + templates.Add(new { name = name, path = path, source = "project" }); + } + } + + return new + { + success = true, + data = new + { + count = templates.Count, + templates = templates + } + }; + } + + /// + /// Lists all VFX assets in the project. + /// + public static object ListAssets(JObject @params) + { + string searchFolder = @params["folder"]?.ToString(); + string searchPattern = @params["search"]?.ToString(); + + string filter = "t:VisualEffectAsset"; + if (!string.IsNullOrEmpty(searchPattern)) + { + filter += " " + searchPattern; + } + + string[] guids; + if (!string.IsNullOrEmpty(searchFolder)) + { + if (searchFolder.Contains("\\") || searchFolder.Contains("..") || System.IO.Path.IsPathRooted(searchFolder)) + { + return new { success = false, message = "Invalid folder: traversal and absolute paths are not allowed" }; + } + + if (searchFolder.StartsWith("Packages/")) + { + return new { success = false, message = "Invalid folder: VFX assets must live under Assets/." }; + } + + if (!searchFolder.StartsWith("Assets/")) + { + searchFolder = "Assets/" + searchFolder; + } + + string fullPath = System.IO.Path.Combine(UnityEngine.Application.dataPath, searchFolder.Substring("Assets/".Length)); + string canonicalProjectRoot = System.IO.Path.GetFullPath(UnityEngine.Application.dataPath); + string canonicalSearchFolder = System.IO.Path.GetFullPath(fullPath); + if (!canonicalSearchFolder.StartsWith(canonicalProjectRoot + System.IO.Path.DirectorySeparatorChar) && + canonicalSearchFolder != canonicalProjectRoot) + { + return new { success = false, message = "Invalid folder: would escape project directory" }; + } + + guids = AssetDatabase.FindAssets(filter, new[] { searchFolder }); + } + else + { + guids = AssetDatabase.FindAssets(filter); + } + + var assets = new List(); + foreach (string guid in guids) + { + string path = AssetDatabase.GUIDToAssetPath(guid); + var asset = AssetDatabase.LoadAssetAtPath(path); + if (asset != null) + { + assets.Add(new + { + name = asset.name, + path = path, + guid = guid + }); + } + } + + return new + { + success = true, + data = new + { + count = assets.Count, + assets = assets + } + }; + } + + private static string ValidateVfxGraphVersion() + { + var info = UnityEditor.PackageManager.PackageInfo.FindForAssetPath("Packages/com.unity.visualeffectgraph"); + if (info == null) + { + return "VFX Graph package (com.unity.visualeffectgraph) not installed"; + } + + if (IsVersionSupported(info.version)) + { + return null; + } + + string supported = string.Join(", ", SupportedVfxGraphVersions.Select(version => $"{version}.x")); + return $"Unsupported VFX Graph version {info.version}. Supported versions: {supported}."; + } + + private static bool IsVersionSupported(string installedVersion) + { + if (string.IsNullOrEmpty(installedVersion)) + { + return false; + } + + string normalized = installedVersion; + int suffixIndex = normalized.IndexOfAny(new[] { '-', '+' }); + if (suffixIndex >= 0) + { + normalized = normalized.Substring(0, suffixIndex); + } + + if (!Version.TryParse(normalized, out Version installed)) + { + return false; + } + + foreach (string supported in SupportedVfxGraphVersions) + { + if (!Version.TryParse(supported, out Version target)) + { + continue; + } + + if (installed.Major == target.Major && installed.Minor == target.Minor) + { + return true; + } + } + + return false; + } + + private static string TryGetAssetPathFromFileSystem(string templatePath) + { + if (string.IsNullOrEmpty(templatePath)) + { + return null; + } + + string normalized = templatePath.Replace("\\", "/"); + string assetsRoot = Application.dataPath.Replace("\\", "/"); + + if (normalized.StartsWith(assetsRoot + "/")) + { + return "Assets/" + normalized.Substring(assetsRoot.Length + 1); + } + + var packageInfo = UnityEditor.PackageManager.PackageInfo.FindForAssetPath("Packages/com.unity.visualeffectgraph"); + if (packageInfo != null) + { + string packageRoot = packageInfo.resolvedPath.Replace("\\", "/"); + if (normalized.StartsWith(packageRoot + "/")) + { + return "Packages/" + packageInfo.name + "/" + normalized.Substring(packageRoot.Length + 1); + } + } + + return null; + } +#endif + } +} diff --git a/Packages/MCPForUnity/Editor/Tools/Vfx/VfxGraphAssets.cs.meta b/Packages/MCPForUnity/Editor/Tools/Vfx/VfxGraphAssets.cs.meta new file mode 100644 index 00000000..17085b4b --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/Vfx/VfxGraphAssets.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a1dfb51f038764a6da23619cac60f299 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Tools/Vfx/VfxGraphCommon.cs b/Packages/MCPForUnity/Editor/Tools/Vfx/VfxGraphCommon.cs new file mode 100644 index 00000000..d342085b --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/Vfx/VfxGraphCommon.cs @@ -0,0 +1,29 @@ +using Newtonsoft.Json.Linq; +using UnityEngine; + +#if UNITY_VFX_GRAPH +using UnityEngine.VFX; +#endif + +namespace MCPForUnity.Editor.Tools.Vfx +{ + /// + /// Common utilities for VFX Graph operations. + /// + internal static class VfxGraphCommon + { +#if UNITY_VFX_GRAPH + /// + /// Finds a VisualEffect component on the target GameObject. + /// + public static VisualEffect FindVisualEffect(JObject @params) + { + if (@params == null) + return null; + + GameObject go = ManageVfxCommon.FindTargetGameObject(@params); + return go?.GetComponent(); + } +#endif + } +} diff --git a/Packages/MCPForUnity/Editor/Tools/Vfx/VfxGraphCommon.cs.meta b/Packages/MCPForUnity/Editor/Tools/Vfx/VfxGraphCommon.cs.meta new file mode 100644 index 00000000..b9319780 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/Vfx/VfxGraphCommon.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0a6dbf78125194cf29b98d658af1039a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Tools/Vfx/VfxGraphControl.cs b/Packages/MCPForUnity/Editor/Tools/Vfx/VfxGraphControl.cs new file mode 100644 index 00000000..e9064815 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/Vfx/VfxGraphControl.cs @@ -0,0 +1,89 @@ +using Newtonsoft.Json.Linq; +using UnityEditor; + +#if UNITY_VFX_GRAPH +using UnityEngine.VFX; +#endif + +namespace MCPForUnity.Editor.Tools.Vfx +{ + /// + /// Playback control operations for VFX Graph (VisualEffect component). + /// Requires com.unity.visualeffectgraph package and UNITY_VFX_GRAPH symbol. + /// + internal static class VfxGraphControl + { +#if !UNITY_VFX_GRAPH + public static object Control(JObject @params, string action) + { + return new { success = false, message = "VFX Graph package (com.unity.visualeffectgraph) not installed" }; + } + + public static object SetPlaybackSpeed(JObject @params) + { + return new { success = false, message = "VFX Graph package (com.unity.visualeffectgraph) not installed" }; + } + + public static object SetSeed(JObject @params) + { + return new { success = false, message = "VFX Graph package (com.unity.visualeffectgraph) not installed" }; + } +#else + public static object Control(JObject @params, string action) + { + VisualEffect vfx = VfxGraphCommon.FindVisualEffect(@params); + if (vfx == null) + { + return new { success = false, message = "VisualEffect not found" }; + } + + switch (action) + { + case "play": vfx.Play(); break; + case "stop": vfx.Stop(); break; + case "pause": vfx.pause = !vfx.pause; break; + case "reinit": vfx.Reinit(); break; + default: + return new { success = false, message = $"Unknown VFX action: {action}" }; + } + + return new { success = true, message = $"VFX {action}", isPaused = vfx.pause }; + } + + public static object SetPlaybackSpeed(JObject @params) + { + VisualEffect vfx = VfxGraphCommon.FindVisualEffect(@params); + if (vfx == null) + { + return new { success = false, message = "VisualEffect not found" }; + } + + float rate = @params["playRate"]?.ToObject() ?? 1f; + Undo.RecordObject(vfx, "Set VFX Play Rate"); + vfx.playRate = rate; + EditorUtility.SetDirty(vfx); + + return new { success = true, message = $"Set play rate = {rate}" }; + } + + public static object SetSeed(JObject @params) + { + VisualEffect vfx = VfxGraphCommon.FindVisualEffect(@params); + if (vfx == null) + { + return new { success = false, message = "VisualEffect not found" }; + } + + uint seed = @params["seed"]?.ToObject() ?? 0; + bool resetOnPlay = @params["resetSeedOnPlay"]?.ToObject() ?? true; + + Undo.RecordObject(vfx, "Set VFX Seed"); + vfx.startSeed = seed; + vfx.resetSeedOnPlay = resetOnPlay; + EditorUtility.SetDirty(vfx); + + return new { success = true, message = $"Set seed = {seed}" }; + } +#endif + } +} diff --git a/Packages/MCPForUnity/Editor/Tools/Vfx/VfxGraphControl.cs.meta b/Packages/MCPForUnity/Editor/Tools/Vfx/VfxGraphControl.cs.meta new file mode 100644 index 00000000..7c112c16 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/Vfx/VfxGraphControl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4720d53b13bc14989803670a788a1eaa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Tools/Vfx/VfxGraphRead.cs b/Packages/MCPForUnity/Editor/Tools/Vfx/VfxGraphRead.cs new file mode 100644 index 00000000..e3cb8f43 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/Vfx/VfxGraphRead.cs @@ -0,0 +1,47 @@ +using Newtonsoft.Json.Linq; +using UnityEngine; + +#if UNITY_VFX_GRAPH +using UnityEngine.VFX; +#endif + +namespace MCPForUnity.Editor.Tools.Vfx +{ + /// + /// Read operations for VFX Graph (VisualEffect component). + /// Requires com.unity.visualeffectgraph package and UNITY_VFX_GRAPH symbol. + /// + internal static class VfxGraphRead + { +#if !UNITY_VFX_GRAPH + public static object GetInfo(JObject @params) + { + return new { success = false, message = "VFX Graph package (com.unity.visualeffectgraph) not installed" }; + } +#else + public static object GetInfo(JObject @params) + { + VisualEffect vfx = VfxGraphCommon.FindVisualEffect(@params); + if (vfx == null) + { + return new { success = false, message = "VisualEffect not found" }; + } + + return new + { + success = true, + data = new + { + gameObject = vfx.gameObject.name, + assetName = vfx.visualEffectAsset?.name ?? "None", + aliveParticleCount = vfx.aliveParticleCount, + culled = vfx.culled, + pause = vfx.pause, + playRate = vfx.playRate, + startSeed = vfx.startSeed + } + }; + } +#endif + } +} diff --git a/Packages/MCPForUnity/Editor/Tools/Vfx/VfxGraphRead.cs.meta b/Packages/MCPForUnity/Editor/Tools/Vfx/VfxGraphRead.cs.meta new file mode 100644 index 00000000..ebf1e00d --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/Vfx/VfxGraphRead.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 419e293a95ea64af5ad6984b1d02b9b1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Tools/Vfx/VfxGraphWrite.cs b/Packages/MCPForUnity/Editor/Tools/Vfx/VfxGraphWrite.cs new file mode 100644 index 00000000..530bde9f --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/Vfx/VfxGraphWrite.cs @@ -0,0 +1,310 @@ +using System; +using MCPForUnity.Editor.Helpers; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using UnityEditor; +using UnityEngine; + +#if UNITY_VFX_GRAPH +using UnityEngine.VFX; +#endif + +namespace MCPForUnity.Editor.Tools.Vfx +{ + /// + /// Parameter setter operations for VFX Graph (VisualEffect component). + /// Requires com.unity.visualeffectgraph package and UNITY_VFX_GRAPH symbol. + /// + internal static class VfxGraphWrite + { +#if !UNITY_VFX_GRAPH + public static object SetParameter(JObject @params, Action setter) + { + return new { success = false, message = "VFX Graph package (com.unity.visualeffectgraph) not installed" }; + } + + public static object SetVector(JObject @params, int dims) + { + return new { success = false, message = "VFX Graph package (com.unity.visualeffectgraph) not installed" }; + } + + public static object SetColor(JObject @params) + { + return new { success = false, message = "VFX Graph package (com.unity.visualeffectgraph) not installed" }; + } + + public static object SetGradient(JObject @params) + { + return new { success = false, message = "VFX Graph package (com.unity.visualeffectgraph) not installed" }; + } + + public static object SetTexture(JObject @params) + { + return new { success = false, message = "VFX Graph package (com.unity.visualeffectgraph) not installed" }; + } + + public static object SetMesh(JObject @params) + { + return new { success = false, message = "VFX Graph package (com.unity.visualeffectgraph) not installed" }; + } + + public static object SetCurve(JObject @params) + { + return new { success = false, message = "VFX Graph package (com.unity.visualeffectgraph) not installed" }; + } + + public static object SendEvent(JObject @params) + { + return new { success = false, message = "VFX Graph package (com.unity.visualeffectgraph) not installed" }; + } +#else + public static object SetParameter(JObject @params, Action setter) + { + VisualEffect vfx = VfxGraphCommon.FindVisualEffect(@params); + if (vfx == null) + { + return new { success = false, message = "VisualEffect not found" }; + } + + string param = @params["parameter"]?.ToString(); + if (string.IsNullOrEmpty(param)) + { + return new { success = false, message = "Parameter name required" }; + } + + JToken valueToken = @params["value"]; + if (valueToken == null) + { + return new { success = false, message = "Value required" }; + } + + // Safely deserialize the value + T value; + try + { + value = valueToken.ToObject(); + } + catch (JsonException ex) + { + return new { success = false, message = $"Invalid value for {param}: {ex.Message}" }; + } + catch (InvalidCastException ex) + { + return new { success = false, message = $"Invalid value type for {param}: {ex.Message}" }; + } + + Undo.RecordObject(vfx, $"Set VFX {param}"); + setter(vfx, param, value); + EditorUtility.SetDirty(vfx); + + return new { success = true, message = $"Set {param} = {value}" }; + } + + public static object SetVector(JObject @params, int dims) + { + VisualEffect vfx = VfxGraphCommon.FindVisualEffect(@params); + if (vfx == null) + { + return new { success = false, message = "VisualEffect not found" }; + } + + string param = @params["parameter"]?.ToString(); + if (string.IsNullOrEmpty(param)) + { + return new { success = false, message = "Parameter name required" }; + } + + if (dims != 2 && dims != 3 && dims != 4) + { + return new { success = false, message = $"Unsupported vector dimension: {dims}. Expected 2, 3, or 4." }; + } + + Vector4 vec = ManageVfxCommon.ParseVector4(@params["value"]); + Undo.RecordObject(vfx, $"Set VFX {param}"); + + switch (dims) + { + case 2: vfx.SetVector2(param, new Vector2(vec.x, vec.y)); break; + case 3: vfx.SetVector3(param, new Vector3(vec.x, vec.y, vec.z)); break; + case 4: vfx.SetVector4(param, vec); break; + } + + EditorUtility.SetDirty(vfx); + return new { success = true, message = $"Set {param}" }; + } + + public static object SetColor(JObject @params) + { + VisualEffect vfx = VfxGraphCommon.FindVisualEffect(@params); + if (vfx == null) + { + return new { success = false, message = "VisualEffect not found" }; + } + + string param = @params["parameter"]?.ToString(); + if (string.IsNullOrEmpty(param)) + { + return new { success = false, message = "Parameter name required" }; + } + + Color color = ManageVfxCommon.ParseColor(@params["value"]); + Undo.RecordObject(vfx, $"Set VFX Color {param}"); + vfx.SetVector4(param, new Vector4(color.r, color.g, color.b, color.a)); + EditorUtility.SetDirty(vfx); + + return new { success = true, message = $"Set color {param}" }; + } + + public static object SetGradient(JObject @params) + { + VisualEffect vfx = VfxGraphCommon.FindVisualEffect(@params); + if (vfx == null) + { + return new { success = false, message = "VisualEffect not found" }; + } + + string param = @params["parameter"]?.ToString(); + if (string.IsNullOrEmpty(param)) + { + return new { success = false, message = "Parameter name required" }; + } + + Gradient gradient = ManageVfxCommon.ParseGradient(@params["gradient"]); + Undo.RecordObject(vfx, $"Set VFX Gradient {param}"); + vfx.SetGradient(param, gradient); + EditorUtility.SetDirty(vfx); + + return new { success = true, message = $"Set gradient {param}" }; + } + + public static object SetTexture(JObject @params) + { + VisualEffect vfx = VfxGraphCommon.FindVisualEffect(@params); + if (vfx == null) + { + return new { success = false, message = "VisualEffect not found" }; + } + + string param = @params["parameter"]?.ToString(); + string path = @params["texturePath"]?.ToString(); + if (string.IsNullOrEmpty(param) || string.IsNullOrEmpty(path)) + { + return new { success = false, message = "Parameter and texturePath required" }; + } + + var findInst = new JObject { ["find"] = path }; + Texture tex = ObjectResolver.Resolve(findInst, typeof(Texture)) as Texture; + if (tex == null) + { + return new { success = false, message = $"Texture not found: {path}" }; + } + + Undo.RecordObject(vfx, $"Set VFX Texture {param}"); + vfx.SetTexture(param, tex); + EditorUtility.SetDirty(vfx); + + return new { success = true, message = $"Set texture {param} = {tex.name}" }; + } + + public static object SetMesh(JObject @params) + { + VisualEffect vfx = VfxGraphCommon.FindVisualEffect(@params); + if (vfx == null) + { + return new { success = false, message = "VisualEffect not found" }; + } + + string param = @params["parameter"]?.ToString(); + string path = @params["meshPath"]?.ToString(); + if (string.IsNullOrEmpty(param) || string.IsNullOrEmpty(path)) + { + return new { success = false, message = "Parameter and meshPath required" }; + } + + var findInst = new JObject { ["find"] = path }; + Mesh mesh = ObjectResolver.Resolve(findInst, typeof(Mesh)) as Mesh; + if (mesh == null) + { + return new { success = false, message = $"Mesh not found: {path}" }; + } + + Undo.RecordObject(vfx, $"Set VFX Mesh {param}"); + vfx.SetMesh(param, mesh); + EditorUtility.SetDirty(vfx); + + return new { success = true, message = $"Set mesh {param} = {mesh.name}" }; + } + + public static object SetCurve(JObject @params) + { + VisualEffect vfx = VfxGraphCommon.FindVisualEffect(@params); + if (vfx == null) + { + return new { success = false, message = "VisualEffect not found" }; + } + + string param = @params["parameter"]?.ToString(); + if (string.IsNullOrEmpty(param)) + { + return new { success = false, message = "Parameter name required" }; + } + + AnimationCurve curve = ManageVfxCommon.ParseAnimationCurve(@params["curve"], 1f); + Undo.RecordObject(vfx, $"Set VFX Curve {param}"); + vfx.SetAnimationCurve(param, curve); + EditorUtility.SetDirty(vfx); + + return new { success = true, message = $"Set curve {param}" }; + } + + public static object SendEvent(JObject @params) + { + VisualEffect vfx = VfxGraphCommon.FindVisualEffect(@params); + if (vfx == null) + { + return new { success = false, message = "VisualEffect not found" }; + } + + string eventName = @params["eventName"]?.ToString(); + if (string.IsNullOrEmpty(eventName)) + { + return new { success = false, message = "Event name required" }; + } + + VFXEventAttribute attr = vfx.CreateVFXEventAttribute(); + if (@params["position"] != null) + { + attr.SetVector3("position", ManageVfxCommon.ParseVector3(@params["position"])); + } + if (@params["velocity"] != null) + { + attr.SetVector3("velocity", ManageVfxCommon.ParseVector3(@params["velocity"])); + } + if (@params["color"] != null) + { + var c = ManageVfxCommon.ParseColor(@params["color"]); + attr.SetVector3("color", new Vector3(c.r, c.g, c.b)); + } + if (@params["size"] != null) + { + float? sizeValue = @params["size"].Value(); + if (sizeValue.HasValue) + { + attr.SetFloat("size", sizeValue.Value); + } + } + if (@params["lifetime"] != null) + { + float? lifetimeValue = @params["lifetime"].Value(); + if (lifetimeValue.HasValue) + { + attr.SetFloat("lifetime", lifetimeValue.Value); + } + } + + vfx.SendEvent(eventName, attr); + return new { success = true, message = $"Sent event '{eventName}'" }; + } +#endif + } +} diff --git a/Packages/MCPForUnity/Editor/Tools/Vfx/VfxGraphWrite.cs.meta b/Packages/MCPForUnity/Editor/Tools/Vfx/VfxGraphWrite.cs.meta new file mode 100644 index 00000000..7ec78b68 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Tools/Vfx/VfxGraphWrite.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7516cdde6a4b648c9a2def6c26103cc4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Windows.meta b/Packages/MCPForUnity/Editor/Windows.meta new file mode 100644 index 00000000..eda016e5 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Windows.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d2ee39f5d4171184eb208e865c1ef4c1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Windows/Components.meta b/Packages/MCPForUnity/Editor/Windows/Components.meta new file mode 100644 index 00000000..716e0fab --- /dev/null +++ b/Packages/MCPForUnity/Editor/Windows/Components.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 82074be914aefa84cb557c599d2319b3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Windows/Components/Advanced.meta b/Packages/MCPForUnity/Editor/Windows/Components/Advanced.meta new file mode 100644 index 00000000..9c3d0246 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Windows/Components/Advanced.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7723ed5eaaccb104e93acb9fd2d8cd32 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/MCPForUnity/Editor/Windows/Components/Advanced/McpAdvancedSection.cs b/Packages/MCPForUnity/Editor/Windows/Components/Advanced/McpAdvancedSection.cs new file mode 100644 index 00000000..8898fcf2 --- /dev/null +++ b/Packages/MCPForUnity/Editor/Windows/Components/Advanced/McpAdvancedSection.cs @@ -0,0 +1,467 @@ +using System; +using System.IO; +using System.Runtime.InteropServices; +using MCPForUnity.Editor.Constants; +using MCPForUnity.Editor.Helpers; +using MCPForUnity.Editor.Services; +using UnityEditor; +using UnityEngine; +using UnityEngine.UIElements; + +namespace MCPForUnity.Editor.Windows.Components.Advanced +{ + /// + /// Controller for the Advanced Settings section. + /// Handles path overrides, server source configuration, dev mode, and package deployment. + /// + public class McpAdvancedSection + { + // UI Elements + private TextField uvxPathOverride; + private Button browseUvxButton; + private Button clearUvxButton; + private VisualElement uvxPathStatus; + private TextField gitUrlOverride; + private Button browseGitUrlButton; + private Button clearGitUrlButton; + private Toggle debugLogsToggle; + private Toggle devModeForceRefreshToggle; + private Toggle useBetaServerToggle; + private TextField deploySourcePath; + private Button browseDeploySourceButton; + private Button clearDeploySourceButton; + private Button deployButton; + private Button deployRestoreButton; + private Label deployTargetLabel; + private Label deployBackupLabel; + private Label deployStatusLabel; + private VisualElement healthIndicator; + private Label healthStatus; + private Button testConnectionButton; + + // Events + public event Action OnGitUrlChanged; + public event Action OnHttpServerCommandUpdateRequested; + public event Action OnTestConnectionRequested; + public event Action OnBetaModeChanged; + + public VisualElement Root { get; private set; } + + public McpAdvancedSection(VisualElement root) + { + Root = root; + CacheUIElements(); + InitializeUI(); + RegisterCallbacks(); + } + + private void CacheUIElements() + { + uvxPathOverride = Root.Q("uv-path-override"); + browseUvxButton = Root.Q