From 2fa634255a5fdc569935627cea46afe0b6353e2e Mon Sep 17 00:00:00 2001 From: Thorbjoern Date: Sun, 20 Jul 2025 05:35:05 +0200 Subject: [PATCH] Added foveal FOV representation for POV cam --- Assets/_Materials/Overlays/Foveal Cone.mat | 141 ++++++++ .../_Materials/Overlays/Foveal Cone.mat.meta | 8 + Assets/_Scenes/TrainingObserverMeta.unity | 317 +++++++++++++++++- Assets/_Scripts/Eye-Tracking/FieldOfView.cs | 2 + .../com.unity.probuilder/Settings.json | 2 +- 5 files changed, 464 insertions(+), 6 deletions(-) create mode 100644 Assets/_Materials/Overlays/Foveal Cone.mat create mode 100644 Assets/_Materials/Overlays/Foveal Cone.mat.meta diff --git a/Assets/_Materials/Overlays/Foveal Cone.mat b/Assets/_Materials/Overlays/Foveal Cone.mat new file mode 100644 index 0000000..71560a4 --- /dev/null +++ b/Assets/_Materials/Overlays/Foveal Cone.mat @@ -0,0 +1,141 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-774293643739347283 +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: 9 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Foveal Cone + m_Shader: {fileID: 4800000, guid: 650dd9526735d5b46b79224bc6e94025, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _SURFACE_TYPE_TRANSPARENT + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 1 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + disabledShaderPasses: + - MOTIONVECTORS + - DepthOnly + - 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} + - _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: + - _AddPrecomputedVelocity: 0 + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 2 + - _BlendModePreserveSpecular: 1 + - _BlendOp: 0 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 1 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 1 + - _DstBlendAlpha: 1 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _SampleGI: 0 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 5 + - _SrcBlendAlpha: 1 + - _Surface: 1 + - _WorkflowMode: 1 + - _ZWrite: 0 + m_Colors: + - _BaseColor: {r: 0.20803666, g: 0.515211, b: 0.5188679, a: 0.3137255} + - _Color: {r: 0.20803663, g: 0.515211, b: 0.51886785, a: 0.3137255} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/_Materials/Overlays/Foveal Cone.mat.meta b/Assets/_Materials/Overlays/Foveal Cone.mat.meta new file mode 100644 index 0000000..087999a --- /dev/null +++ b/Assets/_Materials/Overlays/Foveal Cone.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 18a3ef2fd3d6c23499099022956577cd +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Scenes/TrainingObserverMeta.unity b/Assets/_Scenes/TrainingObserverMeta.unity index 1f924f3..bc4b95e 100644 --- a/Assets/_Scenes/TrainingObserverMeta.unity +++ b/Assets/_Scenes/TrainingObserverMeta.unity @@ -1133,6 +1133,42 @@ MonoBehaviour: m_StringArgument: m_BoolArgument: 0 m_CallState: 2 + - m_Target: {fileID: 1105078400} + 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: 455727939} + 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: 1498067469} + 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 --- !u!114 &42380810 MonoBehaviour: m_ObjectHideFlags: 0 @@ -1617,6 +1653,93 @@ MonoBehaviour: zoomAction: {fileID: 5082991133974614888, guid: 1d6e640e716dc4ff6989b73d02023f2b, type: 3} positionComposer: {fileID: 69372140} +--- !u!1 &75300059 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 75300060} + - component: {fileID: 75300061} + m_Layer: 0 + m_Name: target-svgrepo-com (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &75300060 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 75300059} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -1.1151844e-16, 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: 1105078401} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &75300061 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 75300059} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 4a1ccf8c152b3c749b58dad18826734e, 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: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: 21300000, guid: 47f484890fbccf541a36b775680c2a3c, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 2.56, y: 2.56} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 --- !u!1 &98653379 GameObject: m_ObjectHideFlags: 0 @@ -1869,9 +1992,9 @@ MonoBehaviour: LookAtTarget: {fileID: 0} CustomLookAtTarget: 0 Lens: - FieldOfView: 97 + FieldOfView: 95.57 OrthographicSize: 5 - NearClipPlane: 0.3 + NearClipPlane: 0.1 FarClipPlane: 1000 Dutch: 0 ModeOverride: 0 @@ -5747,7 +5870,7 @@ GameObject: - component: {fileID: 455727942} - component: {fileID: 455727941} m_Layer: 6 - m_Name: Cube + m_Name: LeftEyeRay m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -11699,6 +11822,37 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 910793866} m_CullTransparentMesh: 1 +--- !u!1 &912708933 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 912708934} + m_Layer: 0 + m_Name: target-svgrepo-com (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &912708934 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 912708933} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &936036517 GameObject: m_ObjectHideFlags: 0 @@ -12879,6 +13033,42 @@ MonoBehaviour: m_StringArgument: m_BoolArgument: 0 m_CallState: 2 + - m_Target: {fileID: 1105078400} + 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: 455727939} + 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: 1498067469} + 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 --- !u!114 &973112871 MonoBehaviour: m_ObjectHideFlags: 0 @@ -13815,6 +14005,18 @@ MonoBehaviour: m_StringArgument: m_BoolArgument: 1 m_CallState: 2 + - m_Target: {fileID: 75300059} + m_TargetAssemblyTypeName: UnityEngine.GameObject, UnityEngine + m_MethodName: SetActive + m_Mode: 0 + 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_IsOn: 0 --- !u!1 &1021849023 GameObject: @@ -15185,6 +15387,39 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1091064286} m_CullTransparentMesh: 1 +--- !u!1 &1105078400 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1105078401} + m_Layer: 0 + m_Name: FOV Overlay + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1105078401 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1105078400} + serializedVersion: 2 + m_LocalRotation: {x: 0.00000005664412, y: 0.0000000019687558, z: 0.00000003193694, + w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0.29999995} + m_LocalScale: {x: 0.049999997, y: 0.049999997, z: 0.049999997} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 75300060} + m_Father: {fileID: 2072785757} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1121210505 GameObject: m_ObjectHideFlags: 0 @@ -15778,6 +16013,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: + - {fileID: 2072785757} - {fileID: 8278534050692039051} - {fileID: 7784919234258656808} - {fileID: 127221674} @@ -15817,10 +16053,11 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: viewRadius: 20 - periAngle: 110 + periAngle: 106 foveaAngle: 20 eyeLeft: {fileID: 1936952809} eyeRight: {fileID: 5382535} + eyeCenter: {fileID: 2072785757} targetMask: serializedVersion: 2 m_Bits: 0 @@ -20126,7 +20363,7 @@ GameObject: - component: {fileID: 1498067472} - component: {fileID: 1498067471} m_Layer: 6 - m_Name: Cube (1) + m_Name: RightEyeRay m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -20556,6 +20793,42 @@ MonoBehaviour: m_StringArgument: m_BoolArgument: 1 m_CallState: 2 + - m_Target: {fileID: 1105078400} + 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: 455727939} + 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: 1498067469} + 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 --- !u!114 &1515722158 MonoBehaviour: m_ObjectHideFlags: 0 @@ -28260,6 +28533,39 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_ShowMaskGraphic: 0 +--- !u!1 &2072785756 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2072785757} + m_Layer: 6 + m_Name: CenterEye + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2072785757 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2072785756} + serializedVersion: 2 + m_LocalRotation: {x: -0.00000005664412, y: -0.0000000019687558, z: -0.00000003193694, + w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1105078401} + m_Father: {fileID: 1163434184} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &2075586565 GameObject: m_ObjectHideFlags: 0 @@ -38238,3 +38544,4 @@ SceneRoots: - {fileID: 737210447} - {fileID: 936036521} - {fileID: 1249052968} + - {fileID: 912708934} diff --git a/Assets/_Scripts/Eye-Tracking/FieldOfView.cs b/Assets/_Scripts/Eye-Tracking/FieldOfView.cs index c32a558..48032ea 100644 --- a/Assets/_Scripts/Eye-Tracking/FieldOfView.cs +++ b/Assets/_Scripts/Eye-Tracking/FieldOfView.cs @@ -13,6 +13,7 @@ public class FieldOfView : MonoBehaviour public Transform eyeLeft; public Transform eyeRight; + public Transform eyeCenter; public LayerMask targetMask; public LayerMask obstacleMask; @@ -40,6 +41,7 @@ public class FieldOfView : MonoBehaviour private void LateUpdate() { Vector3 gazeDirection = ((eyeLeft.forward + eyeRight.forward) * 0.5f).normalized; + eyeCenter.rotation = Quaternion.LookRotation(gazeDirection); float gazeAngle = AngleFromDir(gazeDirection, true); DrawFOV(transform.eulerAngles.y, periMesh, periAngle); DrawFOV(gazeAngle, foveaMesh, foveaAngle); diff --git a/ProjectSettings/Packages/com.unity.probuilder/Settings.json b/ProjectSettings/Packages/com.unity.probuilder/Settings.json index 8afbd78..61da799 100644 --- a/ProjectSettings/Packages/com.unity.probuilder/Settings.json +++ b/ProjectSettings/Packages/com.unity.probuilder/Settings.json @@ -134,7 +134,7 @@ { "type": "UnityEngine.ProBuilder.SelectMode, Unity.ProBuilder, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null", "key": "s_SelectMode", - "value": "{\"m_Value\":2}" + "value": "{\"m_Value\":1}" }, { "type": "UnityEngine.ProBuilder.PivotLocation, Unity.ProBuilder, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",