diff --git a/Assets/Gothic-VR/Materials/VRScreenFade-XRI.mat b/Assets/Gothic-VR/Materials/VRScreenFade-XRI.mat new file mode 100644 index 000000000..bc6bbcb6f --- /dev/null +++ b/Assets/Gothic-VR/Materials/VRScreenFade-XRI.mat @@ -0,0 +1,31 @@ +%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: VRScreenFade-XRI + m_Shader: {fileID: 4800000, guid: d8a7a68c82f07394da0c92346126baea, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3898 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: [] + m_Ints: [] + m_Floats: [] + m_Colors: + - _Color: {r: 0, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/Gothic-VR/Materials/VRScreenFade-XRI.mat.meta b/Assets/Gothic-VR/Materials/VRScreenFade-XRI.mat.meta new file mode 100644 index 000000000..2445a74dc --- /dev/null +++ b/Assets/Gothic-VR/Materials/VRScreenFade-XRI.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a1f4f8da7cd546f4b93f709efaea8dc1 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gothic-VR/Resources/VR/Prefabs/VR - Player XRI.prefab b/Assets/Gothic-VR/Resources/VR/Prefabs/VR - Player XRI.prefab index e1312af2f..7a225ccce 100644 --- a/Assets/Gothic-VR/Resources/VR/Prefabs/VR - Player XRI.prefab +++ b/Assets/Gothic-VR/Resources/VR/Prefabs/VR - Player XRI.prefab @@ -35,6 +35,7 @@ Transform: - {fileID: 6497179529087212011} - {fileID: 6150959287153794973} - {fileID: 5178568052186272030} + - {fileID: 1397900127559310352} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &3580888346999583535 @@ -344,6 +345,7 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 6001075864142468059} + - {fileID: 4353545054853201903} m_Father: {fileID: 7905090655299301591} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &7612709134508012581 @@ -428,6 +430,8 @@ GameObject: - component: {fileID: 4746153788034521359} - component: {fileID: 9185839101923391914} - component: {fileID: 5460697659480693705} + - component: {fileID: 7497269210671564284} + - component: {fileID: 859851073591128817} m_Layer: 8 m_Name: Main Camera m_TagString: MainCamera @@ -447,7 +451,11 @@ 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: 6609229414451010056} + - {fileID: 2282471573976460531} + - {fileID: 307772356793477108} + - {fileID: 4950858812719782323} m_Father: {fileID: 7905090655299301591} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!20 &7212599541473323004 @@ -622,6 +630,662 @@ MonoBehaviour: m_Interactions: m_SingletonActionBindings: [] m_Flags: 0 +--- !u!114 &7497269210671564284 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4282864642912822117} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 36cb3844ebad2d74bbf962c6bd103469, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Adapters.Player.ScreenFade + _material: {fileID: 2100000, guid: a1f4f8da7cd546f4b93f709efaea8dc1, type: 2} + _color: {r: 0, g: 0, b: 0, a: 1} + _size: 0.3 + _layer: 5 +--- !u!114 &859851073591128817 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4282864642912822117} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: cb7a9357e8f836748b20e28359c38575, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Adapters.Player.WallFade + _wallLayers: + serializedVersion: 2 + m_Bits: 1 + _fadeStartDistance: 0.1 + _fullFadeDistance: 0.03 + _fadeSpeed: 6 + _teleportDistance: 1 + _distanceIterations: 5 +--- !u!1 &4731101190965350723 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6347680414218280407} + - component: {fileID: 1007848101285802167} + - component: {fileID: 4875168347225730959} + - component: {fileID: 6723761090415705728} + m_Layer: 8 + m_Name: UI Ray + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6347680414218280407 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4731101190965350723} + 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: 4055452250844519603} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!120 &1007848101285802167 +LineRenderer: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4731101190965350723} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 0 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, 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_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_Positions: + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 1} + m_Parameters: + serializedVersion: 3 + widthMultiplier: 1 + widthCurve: + 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 + 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_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + numCornerVertices: 0 + numCapVertices: 2 + alignment: 0 + textureMode: 0 + textureScale: {x: 1, y: 1} + shadowBias: 0.5 + generateLightingData: 0 + m_UseWorldSpace: 1 + m_Loop: 0 + m_ApplyActiveColorSpace: 1 +--- !u!114 &4875168347225730959 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4731101190965350723} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6803edce0201f574f923fd9d10e5b30a, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.XR.Interaction.Toolkit::UnityEngine.XR.Interaction.Toolkit.Interactors.XRRayInteractor + m_InteractionManager: {fileID: 0} + m_InteractionLayers: + m_Bits: 0 + m_Handedness: 2 + m_AttachTransform: {fileID: 0} + m_KeepSelectedTargetValid: 1 + m_DisableVisualsWhenBlockedInGroup: 1 + m_StartingSelectedInteractable: {fileID: 0} + m_StartingTargetFilter: {fileID: 0} + m_AutoFindParentInteractableInHierarchy: 0 + m_ParentInteractableObject: {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: 0 + m_InputActionPerformed: + m_Name: Select + m_Type: 1 + m_ExpectedControlType: + m_Id: b471e55a-b3c9-4672-958c-b80bb6d9695e + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: Select Value + m_Type: 0 + m_ExpectedControlType: Axis + m_Id: 69fcf19e-30fe-4837-a9c7-fd0348702802 + 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_ManualQueueWasCompletedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_ActivateInput: + m_InputSourceMode: 0 + m_InputActionPerformed: + m_Name: Activate + m_Type: 1 + m_ExpectedControlType: + m_Id: 36a6bae6-ef66-428d-9799-25f86174d382 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: Activate Value + m_Type: 0 + m_ExpectedControlType: Axis + m_Id: 46d346f2-2d53-4246-b8f4-5a6820fa0027 + 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_ManualQueueWasCompletedThisFrame: 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_LineType: 0 + m_BlendVisualLinePoints: 1 + m_MaxRaycastDistance: 30 + m_RayOriginTransform: {fileID: 0} + m_ReferenceFrame: {fileID: 0} + m_Velocity: 16 + m_Acceleration: 9.8 + m_AdditionalGroundHeight: 0.1 + m_AdditionalFlightTime: 0.5 + m_EndPointDistance: 30 + m_EndPointHeight: -10 + m_ControlPointDistance: 10 + m_ControlPointHeight: 5 + m_SampleFrequency: 20 + m_HitDetectionType: 0 + m_SphereCastRadius: 0.1 + m_ConeCastAngle: 6 + m_LiveConeCastDebugVisuals: 0 + m_RaycastMask: + serializedVersion: 2 + m_Bits: 32 + m_RaycastTriggerInteraction: 1 + m_RaycastSnapVolumeInteraction: 1 + m_RaycastUIDocumentTriggerInteraction: 1 + m_HitClosestOnly: 0 + m_HoverToSelect: 0 + m_HoverTimeToSelect: 0.5 + m_AutoDeselect: 0 + m_TimeToAutoDeselect: 3 + m_EnableUIInteraction: 1 + m_BlockInteractionsWithScreenSpaceUI: 0 + m_BlockUIOnInteractableSelection: 1 + m_ManipulateAttachTransform: 1 + m_UseForceGrab: 0 + m_RotateSpeed: 180 + m_TranslateSpeed: 1 + m_RotateReferenceFrame: {fileID: 0} + m_RotateMode: 0 + m_UIHoverEntered: + m_PersistentCalls: + m_Calls: [] + m_UIHoverExited: + m_PersistentCalls: + m_Calls: [] + m_EnableARRaycasting: 0 + m_OccludeARHitsWith3DObjects: 0 + m_OccludeARHitsWith2DObjects: 0 + m_ScaleMode: 0 + m_UIPressInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: UI Press + m_Type: 1 + m_ExpectedControlType: + m_Id: d0bfb5c4-7a68-4b72-9c10-aef78e3cacc5 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: UI Press Value + m_Type: 0 + m_ExpectedControlType: Axis + m_Id: 7e769f7f-e0f9-4408-8325-11f0df58fd7f + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: 2665380231154864692, guid: 2924cdc729619de4a8f9d4046047a886, type: 3} + m_InputActionReferenceValue: {fileID: 2562612067216775393, guid: 2924cdc729619de4a8f9d4046047a886, 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_UIScrollInput: + m_InputSourceMode: 2 + m_InputAction: + m_Name: UI Scroll + m_Type: 0 + m_ExpectedControlType: Vector2 + m_Id: eb22c89e-e384-48d0-83e1-8b0b4a55deba + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReference: {fileID: -711930659198068045, guid: 2924cdc729619de4a8f9d4046047a886, type: 3} + 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: cc26a325-b3b1-4ad6-9df9-44d1e4ebaa9a + 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: 0d936db2-a7d3-4d2b-b7bc-b344da544173 + 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: 3e8c45e8-765a-4b9d-9985-7e9199dcf134 + 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: df8a8838-2881-4d9d-8486-2bee7662d138 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: Scale Toggle Value + m_Type: 0 + m_ExpectedControlType: Axis + m_Id: b4f1baad-1223-4283-8143-09cce25bd3b7 + 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_ManualQueueWasCompletedThisFrame: 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: 43f1d0ee-5981-4ed2-80bb-68e6a3c234d7 + 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: 90bba99f-cfe6-486e-8303-cd6bf7ffc87a + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReference: {fileID: 0} + m_ObjectReferenceObject: {fileID: 0} + m_ManualValue: 0 +--- !u!114 &6723761090415705728 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4731101190965350723} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e988983f96fe1dd48800bcdfc82f23e9, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.XR.Interaction.Toolkit::UnityEngine.XR.Interaction.Toolkit.Interactors.Visuals.XRInteractorLineVisual + m_LineWidth: 0.005 + m_OverrideInteractorLineLength: 1 + m_LineLength: 10 + m_AutoAdjustLineLength: 0 + m_MinLineLength: 0.5 + m_UseDistanceToHitAsMaxLineLength: 1 + m_LineRetractionDelay: 0.5 + m_LineLengthChangeSpeed: 12 + m_WidthCurve: + 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 + m_SetLineColorGradient: 1 + m_ValidColorGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 0.3} + 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_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + m_InvalidColorGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 0} + key1: {r: 1, g: 1, b: 1, a: 0} + 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_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + m_BlockedColorGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 0} + key1: {r: 1, g: 1, b: 1, a: 0} + 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_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + m_TreatSelectionAsValidState: 0 + m_SmoothMovement: 0 + m_FollowTightness: 10 + m_SnapThresholdDistance: 10 + m_Reticle: {fileID: 0} + m_BlockedReticle: {fileID: 0} + m_StopLineAtFirstRaycastHit: 1 + m_StopLineAtSelection: 0 + m_SnapEndpointIfAvailable: 1 + m_LineBendRatio: 0.5 + m_BendingEnabledInteractionLayers: + m_Bits: 4294967295 + m_OverrideInteractorLineOrigin: 1 + m_LineOriginTransform: {fileID: 0} + m_LineOriginOffset: 0 --- !u!1 &5690067108025510331 GameObject: m_ObjectHideFlags: 0 @@ -727,44 +1391,664 @@ MonoBehaviour: m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5690067108025510331} + m_GameObject: {fileID: 5690067108025510331} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RenderShadows: 1 + m_RequiresDepthTextureOption: 2 + m_RequiresOpaqueTextureOption: 2 + m_CameraType: 0 + m_Cameras: [] + m_RendererIndex: -1 + m_VolumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_VolumeTrigger: {fileID: 0} + m_VolumeFrameworkUpdateModeOption: 2 + m_RenderPostProcessing: 0 + m_Antialiasing: 0 + m_AntialiasingQuality: 2 + m_StopNaN: 0 + m_Dithering: 0 + m_ClearDepth: 1 + m_AllowXRRendering: 0 + m_AllowHDROutput: 1 + m_UseScreenCoordOverride: 0 + m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} + m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} + m_RequiresDepthTexture: 0 + m_RequiresColorTexture: 0 + m_TaaSettings: + m_Quality: 3 + m_FrameInfluence: 0.1 + m_JitterScale: 1 + m_MipBias: 0 + m_VarianceClampScale: 0.9 + m_ContrastAdaptiveSharpening: 0 + m_Version: 2 +--- !u!1 &6676953773607633624 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4353545054853201903} + - component: {fileID: 6548728158081960086} + - component: {fileID: 4801461948607133199} + - component: {fileID: 3310644866045247143} + m_Layer: 8 + m_Name: UI Ray + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4353545054853201903 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6676953773607633624} + 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: 2704301485295035116} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!120 &6548728158081960086 +LineRenderer: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6676953773607633624} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 0 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, 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_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_Positions: + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 1} + m_Parameters: + serializedVersion: 3 + widthMultiplier: 1 + widthCurve: + 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 + 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_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + numCornerVertices: 0 + numCapVertices: 2 + alignment: 0 + textureMode: 0 + textureScale: {x: 1, y: 1} + shadowBias: 0.5 + generateLightingData: 0 + m_UseWorldSpace: 1 + m_Loop: 0 + m_ApplyActiveColorSpace: 1 +--- !u!114 &4801461948607133199 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6676953773607633624} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6803edce0201f574f923fd9d10e5b30a, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.XR.Interaction.Toolkit::UnityEngine.XR.Interaction.Toolkit.Interactors.XRRayInteractor + m_InteractionManager: {fileID: 0} + m_InteractionLayers: + m_Bits: 0 + m_Handedness: 1 + m_AttachTransform: {fileID: 0} + m_KeepSelectedTargetValid: 1 + m_DisableVisualsWhenBlockedInGroup: 1 + m_StartingSelectedInteractable: {fileID: 0} + m_StartingTargetFilter: {fileID: 0} + m_AutoFindParentInteractableInHierarchy: 0 + m_ParentInteractableObject: {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: 0 + m_InputActionPerformed: + m_Name: Select + m_Type: 1 + m_ExpectedControlType: + m_Id: 2c2d09cc-6f7e-485d-8201-779ccb72b47b + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: Select Value + m_Type: 0 + m_ExpectedControlType: Axis + m_Id: f4aa7ab5-9c01-4fe3-a9fa-e8e54bb69cf7 + 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_ManualQueueWasCompletedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_ActivateInput: + m_InputSourceMode: 0 + m_InputActionPerformed: + m_Name: Activate + m_Type: 1 + m_ExpectedControlType: + m_Id: 350d7cae-4b8f-4992-9454-c02bafd85deb + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: Activate Value + m_Type: 0 + m_ExpectedControlType: Axis + m_Id: a491f432-bdc7-47e4-8aa2-c825497237e4 + 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_ManualQueueWasCompletedThisFrame: 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_LineType: 0 + m_BlendVisualLinePoints: 1 + m_MaxRaycastDistance: 30 + m_RayOriginTransform: {fileID: 0} + m_ReferenceFrame: {fileID: 0} + m_Velocity: 16 + m_Acceleration: 9.8 + m_AdditionalGroundHeight: 0.1 + m_AdditionalFlightTime: 0.5 + m_EndPointDistance: 30 + m_EndPointHeight: -10 + m_ControlPointDistance: 10 + m_ControlPointHeight: 5 + m_SampleFrequency: 20 + m_HitDetectionType: 0 + m_SphereCastRadius: 0.1 + m_ConeCastAngle: 6 + m_LiveConeCastDebugVisuals: 0 + m_RaycastMask: + serializedVersion: 2 + m_Bits: 32 + m_RaycastTriggerInteraction: 1 + m_RaycastSnapVolumeInteraction: 1 + m_RaycastUIDocumentTriggerInteraction: 1 + m_HitClosestOnly: 0 + m_HoverToSelect: 0 + m_HoverTimeToSelect: 0.5 + m_AutoDeselect: 0 + m_TimeToAutoDeselect: 3 + m_EnableUIInteraction: 1 + m_BlockInteractionsWithScreenSpaceUI: 0 + m_BlockUIOnInteractableSelection: 1 + m_ManipulateAttachTransform: 1 + m_UseForceGrab: 0 + m_RotateSpeed: 180 + m_TranslateSpeed: 1 + m_RotateReferenceFrame: {fileID: 0} + m_RotateMode: 0 + m_UIHoverEntered: + m_PersistentCalls: + m_Calls: [] + m_UIHoverExited: + m_PersistentCalls: + m_Calls: [] + m_EnableARRaycasting: 0 + m_OccludeARHitsWith3DObjects: 0 + m_OccludeARHitsWith2DObjects: 0 + m_ScaleMode: 0 + m_UIPressInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: UI Press + m_Type: 1 + m_ExpectedControlType: + m_Id: ef9aa844-3839-47af-8488-ffd1125978d8 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: UI Press Value + m_Type: 0 + m_ExpectedControlType: Axis + m_Id: 6d73baf7-8ec0-40dc-88d1-79d81f74c543 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: -1689652814259620815, guid: 2924cdc729619de4a8f9d4046047a886, type: 3} + m_InputActionReferenceValue: {fileID: 6375731832589024377, guid: 2924cdc729619de4a8f9d4046047a886, 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_UIScrollInput: + m_InputSourceMode: 2 + m_InputAction: + m_Name: UI Scroll + m_Type: 0 + m_ExpectedControlType: Vector2 + m_Id: 8a8b5555-7f42-45ee-9db4-923737557f23 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReference: {fileID: 8109287064717489457, guid: 2924cdc729619de4a8f9d4046047a886, type: 3} + 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: a93e6c6a-e2b8-4809-ad36-1ed6995957ee + 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: 8053c0d7-17d8-4ec6-acb0-e24bb3a4f6fc + 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: 42fef18f-8012-4366-ab89-a49da023aecb + 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: 5d9dcd36-d3e3-498b-8727-4d94092d47a8 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: Scale Toggle Value + m_Type: 0 + m_ExpectedControlType: Axis + m_Id: e70181b8-3068-4a01-a830-152a23f7c27f + 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_ManualQueueWasCompletedThisFrame: 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: c17d131b-924f-465c-8d68-1e0382a3e18e + 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: 5a7511f7-3e7a-4817-8f6b-7c6d55926fa3 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReference: {fileID: 0} + m_ObjectReferenceObject: {fileID: 0} + m_ManualValue: 0 +--- !u!114 &3310644866045247143 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6676953773607633624} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Script: {fileID: 11500000, guid: e988983f96fe1dd48800bcdfc82f23e9, type: 3} m_Name: - m_EditorClassIdentifier: - m_RenderShadows: 1 - m_RequiresDepthTextureOption: 2 - m_RequiresOpaqueTextureOption: 2 - m_CameraType: 0 - m_Cameras: [] - m_RendererIndex: -1 - m_VolumeLayerMask: + m_EditorClassIdentifier: Unity.XR.Interaction.Toolkit::UnityEngine.XR.Interaction.Toolkit.Interactors.Visuals.XRInteractorLineVisual + m_LineWidth: 0.005 + m_OverrideInteractorLineLength: 1 + m_LineLength: 10 + m_AutoAdjustLineLength: 0 + m_MinLineLength: 0.5 + m_UseDistanceToHitAsMaxLineLength: 1 + m_LineRetractionDelay: 0.5 + m_LineLengthChangeSpeed: 12 + m_WidthCurve: serializedVersion: 2 - m_Bits: 1 - m_VolumeTrigger: {fileID: 0} - m_VolumeFrameworkUpdateModeOption: 2 - m_RenderPostProcessing: 0 - m_Antialiasing: 0 - m_AntialiasingQuality: 2 - m_StopNaN: 0 - m_Dithering: 0 - m_ClearDepth: 1 - m_AllowXRRendering: 0 - m_AllowHDROutput: 1 - m_UseScreenCoordOverride: 0 - m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} - m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} - m_RequiresDepthTexture: 0 - m_RequiresColorTexture: 0 - m_TaaSettings: - m_Quality: 3 - m_FrameInfluence: 0.1 - m_JitterScale: 1 - m_MipBias: 0 - m_VarianceClampScale: 0.9 - m_ContrastAdaptiveSharpening: 0 - m_Version: 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 + m_SetLineColorGradient: 1 + m_ValidColorGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 0.3} + 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_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + m_InvalidColorGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 0} + key1: {r: 1, g: 1, b: 1, a: 0} + 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_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + m_BlockedColorGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 0} + key1: {r: 1, g: 1, b: 1, a: 0} + 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_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + m_TreatSelectionAsValidState: 0 + m_SmoothMovement: 0 + m_FollowTightness: 10 + m_SnapThresholdDistance: 10 + m_Reticle: {fileID: 0} + m_BlockedReticle: {fileID: 0} + m_StopLineAtFirstRaycastHit: 1 + m_StopLineAtSelection: 0 + m_SnapEndpointIfAvailable: 1 + m_LineBendRatio: 0.5 + m_BendingEnabledInteractionLayers: + m_Bits: 4294967295 + m_OverrideInteractorLineOrigin: 1 + m_LineOriginTransform: {fileID: 0} + m_LineOriginOffset: 0 --- !u!1 &6995813130144571658 GameObject: m_ObjectHideFlags: 0 @@ -828,7 +2112,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: 6347680414218280407} m_Father: {fileID: 7905090655299301591} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &3829692317711544481 @@ -1249,6 +2534,7 @@ MonoBehaviour: _camera: {fileID: 7212599541473323004} _leftController: {fileID: 2704301485295035116} _rightController: {fileID: 4055452250844519603} + _screenFade: {fileID: 7497269210671564284} _moveProvider: {fileID: 8165985969289754186} _snapTurnProvider: {fileID: 242655525520869064} _continuousTurnProvider: {fileID: 6560536017312742706} @@ -1264,6 +2550,110 @@ MonoBehaviour: _crouchHeight: 0.7 _crouchSpeed: 1.5 _minCalibrationHeight: 0.5 +--- !u!1 &8603939626496884405 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1397900127559310352} + - component: {fileID: 4297494079184515215} + - component: {fileID: 3409989969493306345} + - component: {fileID: 6227812651718498198} + m_Layer: 0 + m_Name: UIManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1397900127559310352 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8603939626496884405} + 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: 3866233120056885002} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &4297494079184515215 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8603939626496884405} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.EventSystems.EventSystem + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 10 +--- !u!114 &3409989969493306345 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8603939626496884405} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ab68ce6587aab0146b8dabefbd806791, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.XR.Interaction.Toolkit::UnityEngine.XR.Interaction.Toolkit.UI.XRUIInputModule + 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_NonTrackedScrollDeltaMultiplier: 6 + m_BypassUIToolkitEvents: 0 + m_PrioritizeDistanceSorting: 0 + m_ActiveInputMode: 0 + m_EnableXRInput: 1 + m_EnableMouseInput: 0 + m_EnableTouchInput: 0 + m_EnableGamepadInput: 0 + m_EnableJoystickInput: 0 + m_PointAction: {fileID: 0} + m_LeftClickAction: {fileID: 0} + m_MiddleClickAction: {fileID: 0} + m_RightClickAction: {fileID: 0} + m_ScrollWheelAction: {fileID: 0} + m_NavigateAction: {fileID: 0} + m_SubmitAction: {fileID: 0} + m_CancelAction: {fileID: 0} + m_EnableBuiltinActionsAsFallback: 0 + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel +--- !u!114 &6227812651718498198 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8603939626496884405} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 83e4e6cca11330d4088d729ab4fc9d9f, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.XR.Interaction.Toolkit::UnityEngine.XR.Interaction.Toolkit.XRInteractionManager + m_StartingHoverFilters: [] + m_StartingSelectFilters: [] --- !u!1001 &74078208933106267 PrefabInstance: m_ObjectHideFlags: 0 @@ -1353,136 +2743,332 @@ PrefabInstance: propertyPath: m_LocalScale.x value: 1 objectReference: {fileID: 0} - - target: {fileID: 2282871596405899006, guid: cd095a3981bb372429f6df026b1dec73, type: 3} - propertyPath: m_LocalScale.y - value: 1 + - target: {fileID: 2282871596405899006, guid: cd095a3981bb372429f6df026b1dec73, type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2282871596405899006, guid: cd095a3981bb372429f6df026b1dec73, type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2282871596405899006, guid: cd095a3981bb372429f6df026b1dec73, type: 3} + propertyPath: m_LocalPosition.x + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 2282871596405899006, guid: cd095a3981bb372429f6df026b1dec73, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2282871596405899006, guid: cd095a3981bb372429f6df026b1dec73, type: 3} + propertyPath: m_LocalPosition.z + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 2282871596405899006, guid: cd095a3981bb372429f6df026b1dec73, type: 3} + propertyPath: m_LocalRotation.w + value: 0.98078537 + objectReference: {fileID: 0} + - target: {fileID: 2282871596405899006, guid: cd095a3981bb372429f6df026b1dec73, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2282871596405899006, guid: cd095a3981bb372429f6df026b1dec73, type: 3} + propertyPath: m_LocalRotation.y + value: 0.19509031 + objectReference: {fileID: 0} + - target: {fileID: 2282871596405899006, guid: cd095a3981bb372429f6df026b1dec73, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2282871596405899006, guid: cd095a3981bb372429f6df026b1dec73, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2282871596405899006, guid: cd095a3981bb372429f6df026b1dec73, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 22.5 + objectReference: {fileID: 0} + - target: {fileID: 2282871596405899006, guid: cd095a3981bb372429f6df026b1dec73, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2282871596405899006, guid: cd095a3981bb372429f6df026b1dec73, type: 3} + propertyPath: m_ConstrainProportionsScale + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8412591900964177680, guid: cd095a3981bb372429f6df026b1dec73, type: 3} + propertyPath: m_Name + value: QuestMenu + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: + - targetCorrespondingSourceObject: {fileID: 2282871596405899006, guid: cd095a3981bb372429f6df026b1dec73, type: 3} + insertIndex: 0 + addedObject: {fileID: 911066974270464583} + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: cd095a3981bb372429f6df026b1dec73, type: 3} +--- !u!4 &1929605044844119220 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 2282871596405899006, guid: cd095a3981bb372429f6df026b1dec73, type: 3} + m_PrefabInstance: {fileID: 389902283970083402} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1372453668343731003 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 1929605044844119220} + m_Modifications: + - target: {fileID: 1879303798920566507, guid: a0af29d97abd24d4c8382b6da4017660, type: 3} + propertyPath: m_Name + value: Tutorials + objectReference: {fileID: 0} + - target: {fileID: 2283093842980008316, guid: a0af29d97abd24d4c8382b6da4017660, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2283093842980008316, guid: a0af29d97abd24d4c8382b6da4017660, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2283093842980008316, guid: a0af29d97abd24d4c8382b6da4017660, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2283093842980008316, guid: a0af29d97abd24d4c8382b6da4017660, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2283093842980008316, guid: a0af29d97abd24d4c8382b6da4017660, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2283093842980008316, guid: a0af29d97abd24d4c8382b6da4017660, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2283093842980008316, guid: a0af29d97abd24d4c8382b6da4017660, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2283093842980008316, guid: a0af29d97abd24d4c8382b6da4017660, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2283093842980008316, guid: a0af29d97abd24d4c8382b6da4017660, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2283093842980008316, guid: a0af29d97abd24d4c8382b6da4017660, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: a0af29d97abd24d4c8382b6da4017660, type: 3} +--- !u!4 &911066974270464583 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 2283093842980008316, guid: a0af29d97abd24d4c8382b6da4017660, type: 3} + m_PrefabInstance: {fileID: 1372453668343731003} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &2518208126512905943 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 3795310480892305868} + m_Modifications: + - target: {fileID: 840386729682481267, guid: 323b5eef6ff0c014ca5dadf66503a4fe, type: 3} + propertyPath: _isHero + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1276042354778526045, guid: 323b5eef6ff0c014ca5dadf66503a4fe, type: 3} + propertyPath: m_SizeDelta.x + value: 100 objectReference: {fileID: 0} - - target: {fileID: 2282871596405899006, guid: cd095a3981bb372429f6df026b1dec73, type: 3} - propertyPath: m_LocalScale.z + - target: {fileID: 4300127462305303291, guid: 323b5eef6ff0c014ca5dadf66503a4fe, type: 3} + propertyPath: m_SizeDelta.x + value: 100 + objectReference: {fileID: 0} + - target: {fileID: 7339275886835513150, guid: 323b5eef6ff0c014ca5dadf66503a4fe, type: 3} + propertyPath: m_Name + value: Menu-Subtitles + objectReference: {fileID: 0} + - target: {fileID: 7339275886835513150, guid: 323b5eef6ff0c014ca5dadf66503a4fe, type: 3} + propertyPath: m_IsActive value: 1 objectReference: {fileID: 0} - - target: {fileID: 2282871596405899006, guid: cd095a3981bb372429f6df026b1dec73, type: 3} + - target: {fileID: 7369722077890996068, guid: 323b5eef6ff0c014ca5dadf66503a4fe, type: 3} propertyPath: m_LocalPosition.x - value: 5 + value: 0 objectReference: {fileID: 0} - - target: {fileID: 2282871596405899006, guid: cd095a3981bb372429f6df026b1dec73, type: 3} + - target: {fileID: 7369722077890996068, guid: 323b5eef6ff0c014ca5dadf66503a4fe, type: 3} propertyPath: m_LocalPosition.y - value: 0 + value: -1.75 objectReference: {fileID: 0} - - target: {fileID: 2282871596405899006, guid: cd095a3981bb372429f6df026b1dec73, type: 3} + - target: {fileID: 7369722077890996068, guid: 323b5eef6ff0c014ca5dadf66503a4fe, type: 3} propertyPath: m_LocalPosition.z - value: -1 + value: 2 objectReference: {fileID: 0} - - target: {fileID: 2282871596405899006, guid: cd095a3981bb372429f6df026b1dec73, type: 3} + - target: {fileID: 7369722077890996068, guid: 323b5eef6ff0c014ca5dadf66503a4fe, type: 3} propertyPath: m_LocalRotation.w - value: 0.98078537 + value: 1 objectReference: {fileID: 0} - - target: {fileID: 2282871596405899006, guid: cd095a3981bb372429f6df026b1dec73, type: 3} + - target: {fileID: 7369722077890996068, guid: 323b5eef6ff0c014ca5dadf66503a4fe, type: 3} propertyPath: m_LocalRotation.x - value: 0 + value: -0 objectReference: {fileID: 0} - - target: {fileID: 2282871596405899006, guid: cd095a3981bb372429f6df026b1dec73, type: 3} + - target: {fileID: 7369722077890996068, guid: 323b5eef6ff0c014ca5dadf66503a4fe, type: 3} propertyPath: m_LocalRotation.y - value: 0.19509031 + value: -0 objectReference: {fileID: 0} - - target: {fileID: 2282871596405899006, guid: cd095a3981bb372429f6df026b1dec73, type: 3} + - target: {fileID: 7369722077890996068, guid: 323b5eef6ff0c014ca5dadf66503a4fe, type: 3} propertyPath: m_LocalRotation.z - value: 0 + value: -0 objectReference: {fileID: 0} - - target: {fileID: 2282871596405899006, guid: cd095a3981bb372429f6df026b1dec73, type: 3} + - target: {fileID: 7369722077890996068, guid: 323b5eef6ff0c014ca5dadf66503a4fe, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 2282871596405899006, guid: cd095a3981bb372429f6df026b1dec73, type: 3} + - target: {fileID: 7369722077890996068, guid: 323b5eef6ff0c014ca5dadf66503a4fe, type: 3} propertyPath: m_LocalEulerAnglesHint.y - value: 22.5 + value: 0 objectReference: {fileID: 0} - - target: {fileID: 2282871596405899006, guid: cd095a3981bb372429f6df026b1dec73, type: 3} + - target: {fileID: 7369722077890996068, guid: 323b5eef6ff0c014ca5dadf66503a4fe, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 2282871596405899006, guid: cd095a3981bb372429f6df026b1dec73, type: 3} - propertyPath: m_ConstrainProportionsScale - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 8412591900964177680, guid: cd095a3981bb372429f6df026b1dec73, type: 3} - propertyPath: m_Name - value: QuestMenu + - target: {fileID: 9138485363306559031, guid: 323b5eef6ff0c014ca5dadf66503a4fe, type: 3} + propertyPath: m_SizeDelta.x + value: 100 objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] - m_AddedGameObjects: - - targetCorrespondingSourceObject: {fileID: 2282871596405899006, guid: cd095a3981bb372429f6df026b1dec73, type: 3} - insertIndex: 0 - addedObject: {fileID: 911066974270464583} + m_AddedGameObjects: [] m_AddedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: cd095a3981bb372429f6df026b1dec73, type: 3} ---- !u!4 &1929605044844119220 stripped + m_SourcePrefab: {fileID: 100100000, guid: 323b5eef6ff0c014ca5dadf66503a4fe, type: 3} +--- !u!4 &4950858812719782323 stripped Transform: - m_CorrespondingSourceObject: {fileID: 2282871596405899006, guid: cd095a3981bb372429f6df026b1dec73, type: 3} - m_PrefabInstance: {fileID: 389902283970083402} + m_CorrespondingSourceObject: {fileID: 7369722077890996068, guid: 323b5eef6ff0c014ca5dadf66503a4fe, type: 3} + m_PrefabInstance: {fileID: 2518208126512905943} m_PrefabAsset: {fileID: 0} ---- !u!1001 &1372453668343731003 +--- !u!1001 &2990888653181709699 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: serializedVersion: 3 - m_TransformParent: {fileID: 1929605044844119220} + m_TransformParent: {fileID: 3795310480892305868} m_Modifications: - - target: {fileID: 1879303798920566507, guid: a0af29d97abd24d4c8382b6da4017660, type: 3} - propertyPath: m_Name - value: Tutorials + - target: {fileID: 1174396645238234420, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: _isPlayer + value: 1 objectReference: {fileID: 0} - - target: {fileID: 2283093842980008316, guid: a0af29d97abd24d4c8382b6da4017660, type: 3} + - target: {fileID: 1174396645238234420, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: _statusType + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6545134584407578383, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_PresetInfoIsWorld + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_SizeDelta.x + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_SizeDelta.y + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 2283093842980008316, guid: a0af29d97abd24d4c8382b6da4017660, type: 3} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 2283093842980008316, guid: a0af29d97abd24d4c8382b6da4017660, type: 3} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} propertyPath: m_LocalPosition.z - value: 0 + value: 0.3 objectReference: {fileID: 0} - - target: {fileID: 2283093842980008316, guid: a0af29d97abd24d4c8382b6da4017660, type: 3} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 2283093842980008316, guid: a0af29d97abd24d4c8382b6da4017660, type: 3} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 2283093842980008316, guid: a0af29d97abd24d4c8382b6da4017660, type: 3} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 2283093842980008316, guid: a0af29d97abd24d4c8382b6da4017660, type: 3} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 2283093842980008316, guid: a0af29d97abd24d4c8382b6da4017660, type: 3} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_AnchoredPosition.x + value: -0.1 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_AnchoredPosition.y + value: -0.13 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 2283093842980008316, guid: a0af29d97abd24d4c8382b6da4017660, type: 3} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 2283093842980008316, guid: a0af29d97abd24d4c8382b6da4017660, type: 3} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} + - target: {fileID: 8930058930837402006, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_Name + value: StatusBarHealth + objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] m_AddedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: a0af29d97abd24d4c8382b6da4017660, type: 3} ---- !u!4 &911066974270464583 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 2283093842980008316, guid: a0af29d97abd24d4c8382b6da4017660, type: 3} - m_PrefabInstance: {fileID: 1372453668343731003} + m_SourcePrefab: {fileID: 100100000, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} +--- !u!224 &6609229414451010056 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + m_PrefabInstance: {fileID: 2990888653181709699} m_PrefabAsset: {fileID: 0} --- !u!1001 &4370666150582550914 PrefabInstance: @@ -2178,6 +3764,116 @@ RectTransform: m_CorrespondingSourceObject: {fileID: 898575911347120524, guid: 8348fe5825a421c42be0dad392e03669, type: 3} m_PrefabInstance: {fileID: 6859114946436840023} m_PrefabAsset: {fileID: 0} +--- !u!1001 &7896359964657392504 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 3795310480892305868} + m_Modifications: + - target: {fileID: 1174396645238234420, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: _isPlayer + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6545134584407578383, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_PresetInfoIsWorld + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_SizeDelta.x + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_SizeDelta.y + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_LocalPosition.z + value: 0.3 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_AnchoredPosition.y + value: -0.13 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8930058930837402006, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_Name + value: StatusBarMisc + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} +--- !u!224 &2282471573976460531 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + m_PrefabInstance: {fileID: 7896359964657392504} + m_PrefabAsset: {fileID: 0} --- !u!1001 &7985553264238736323 PrefabInstance: m_ObjectHideFlags: 0 @@ -2240,3 +3936,117 @@ Transform: m_CorrespondingSourceObject: {fileID: 2907278319546885529, guid: b3b86d187a3f5284b919723a7b9b7f55, type: 3} m_PrefabInstance: {fileID: 7985553264238736323} m_PrefabAsset: {fileID: 0} +--- !u!1001 &8537728763189923967 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 3795310480892305868} + m_Modifications: + - target: {fileID: 1174396645238234420, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: _isPlayer + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1174396645238234420, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: _statusType + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6545134584407578383, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_PresetInfoIsWorld + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_SizeDelta.x + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_SizeDelta.y + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_LocalPosition.z + value: 0.3 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0.1 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_AnchoredPosition.y + value: -0.13 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8930058930837402006, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + propertyPath: m_Name + value: StatusBarMana + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} +--- !u!224 &307772356793477108 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 8230739814078363531, guid: 204a93fafa363374c9d1e232e7d87070, type: 3} + m_PrefabInstance: {fileID: 8537728763189923967} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Gothic-VR/Scripts/Adapters/Player/ScreenFade.cs b/Assets/Gothic-VR/Scripts/Adapters/Player/ScreenFade.cs new file mode 100644 index 000000000..d70daa844 --- /dev/null +++ b/Assets/Gothic-VR/Scripts/Adapters/Player/ScreenFade.cs @@ -0,0 +1,148 @@ +using Gothic.Core.Logging; +using UnityEngine; +using Logger = Gothic.Core.Logging.Logger; + +namespace Gothic.VR.Adapters.Player +{ + /// + /// Fades the VR camera to a color (black). Sits on the camera and draws the inner faces of a small cube around + /// the head with an on-top material, so it covers the world (and walls the head is in), but not the on-top UI. + /// + /// Two independent fades are combined, the stronger one wins: + /// - Fade(): requested by game code via IVrRig.Fade (diving darkness by air, VRSeat, transitions). + /// - SetWallFade(): driven every frame by WallFade (head inside walls). + /// Fades run on unscaled time: they also work while the game is paused (menu, cinema). + /// + public class ScreenFade : MonoBehaviour + { + private static readonly int _colorId = Shader.PropertyToID("_Color"); + + [Tooltip("Material with the Gothic/VR Screen Fade shader. A copy is used at runtime.")] + [SerializeField] private Material _material; + + [Tooltip("Color faded to. Its alpha is ignored.")] + [SerializeField] private Color _color = Color.black; + + [Tooltip("Edge length in m of the cube around the head. Both eyes plus their near clip plane must fit in.")] + [SerializeField] private float _size = 0.3f; + + [Tooltip("Layer of the fade cube. Has to be rendered by the camera, also in the cinema (UI only).")] + [SerializeField] private int _layer = 5; + + private Material _materialInstance; + private MeshRenderer _renderer; + private float _alpha; + private float _targetAlpha; + private float _speed = float.MaxValue; + private float _wallAlpha; + private float _wallTargetAlpha; + private float _wallSpeed = float.MaxValue; + private float _appliedAlpha = -1f; + + /// + /// Current alpha of the requested fade (Fade()), without the wall fade. 0 = clear, 1 = color. + /// + public float FadeAlpha => _alpha; + + /// + /// Alpha that is visible right now (requested and wall fade combined). + /// + public float VisibleAlpha => Mathf.Max(_alpha, _wallAlpha); + + private void Awake() + { + CreateCube(); + Apply(); + } + + private void OnDestroy() + { + if (_materialInstance != null) + Destroy(_materialInstance); + } + + /// + /// Fades towards alpha (0 = clear, 1 = color) with speed alpha per second. float.MaxValue = immediately. + /// + public void Fade(float alpha, float speed) + { + _targetAlpha = Mathf.Clamp01(alpha); + _speed = speed; + + if (speed >= float.MaxValue) + { + _alpha = _targetAlpha; + Apply(); + } + } + + /// + /// Target of the wall fade (head inside geometry), set by WallFade every frame. + /// + public void SetWallFade(float alpha, float speed) + { + _wallTargetAlpha = Mathf.Clamp01(alpha); + _wallSpeed = speed; + } + + private void LateUpdate() + { + var deltaTime = Time.unscaledDeltaTime; + _alpha = Step(_alpha, _targetAlpha, _speed, deltaTime); + _wallAlpha = Step(_wallAlpha, _wallTargetAlpha, _wallSpeed, deltaTime); + Apply(); + } + + private static float Step(float current, float target, float speed, float deltaTime) + { + if (speed >= float.MaxValue) + return target; + if (speed <= 0f) + return current; + + return Mathf.MoveTowards(current, target, speed * deltaTime); + } + + private void Apply() + { + var alpha = VisibleAlpha; + if (Mathf.Approximately(alpha, _appliedAlpha) || _renderer == null) + return; + + _appliedAlpha = alpha; + _renderer.enabled = alpha > 0f; + + var color = _color; + color.a = alpha; + _materialInstance.SetColor(_colorId, color); + } + + private void CreateCube() + { + if (_material == null) + { + Logger.LogError($"[ScreenFade] No material assigned on {name}. The screen can't be faded.", LogCat.VR); + return; + } + + var cube = new GameObject("ScreenFadeCube") + { + layer = _layer + }; + cube.transform.SetParent(transform, false); + cube.transform.localScale = Vector3.one * _size; + + cube.AddComponent().sharedMesh = Resources.GetBuiltinResource("Cube.fbx"); + + _materialInstance = new Material(_material); + _renderer = cube.AddComponent(); + _renderer.sharedMaterial = _materialInstance; + _renderer.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off; + _renderer.receiveShadows = false; + _renderer.lightProbeUsage = UnityEngine.Rendering.LightProbeUsage.Off; + _renderer.reflectionProbeUsage = UnityEngine.Rendering.ReflectionProbeUsage.Off; + _renderer.allowOcclusionWhenDynamic = false; + _renderer.enabled = false; + } + } +} diff --git a/Assets/Gothic-VR/Scripts/Adapters/Player/ScreenFade.cs.meta b/Assets/Gothic-VR/Scripts/Adapters/Player/ScreenFade.cs.meta new file mode 100644 index 000000000..ce703d41b --- /dev/null +++ b/Assets/Gothic-VR/Scripts/Adapters/Player/ScreenFade.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 36cb3844ebad2d74bbf962c6bd103469 \ No newline at end of file diff --git a/Assets/Gothic-VR/Scripts/Adapters/Player/WallFade.cs b/Assets/Gothic-VR/Scripts/Adapters/Player/WallFade.cs new file mode 100644 index 000000000..59b3808ec --- /dev/null +++ b/Assets/Gothic-VR/Scripts/Adapters/Player/WallFade.cs @@ -0,0 +1,119 @@ +using UnityEngine; + +namespace Gothic.VR.Adapters.Player +{ + /// + /// Fades the screen to black when the head moves into walls, furniture or other world geometry, so that players + /// can't look through them by leaning in. Sits on the VR camera next to ScreenFade. + /// + /// - The distance from the eyes to the nearest wall collider is measured every frame (shrinking sphere checks, + /// which work for the non-convex world mesh as well). Below _fadeStartDistance the screen gets darker, at + /// _fullFadeDistance it's black. + /// - Once the head is fully through a (one-sided) wall mesh, nothing is near anymore. Therefore, the line from the + /// last free head position to the current one is checked as well: blocked = black, until the head is back on the + /// free side. + /// - Jumps (teleports, loading) reset the free position, as the line would cross the whole world. + /// + [RequireComponent(typeof(ScreenFade))] + public class WallFade : MonoBehaviour + { + [Tooltip("Layers which fade the screen when the head is inside them (world mesh, VOBs).")] + [SerializeField] private LayerMask _wallLayers = 1; + + [Tooltip("Distance in m between eyes and wall at which the screen starts fading.")] + [SerializeField] private float _fadeStartDistance = 0.1f; + + [Tooltip("Distance in m between eyes and wall at which the screen is black (near clip plane plus a margin).")] + [SerializeField] private float _fullFadeDistance = 0.03f; + + [Tooltip("Fade speed in alpha per second (towards black and back).")] + [SerializeField] private float _fadeSpeed = 6f; + + [Tooltip("A head movement longer than this in one frame (m) counts as teleport: no wall check in between.")] + [SerializeField] private float _teleportDistance = 1f; + + [Tooltip("Sphere checks per frame to measure the distance while a wall is near. More = finer steps.")] + [SerializeField] private int _distanceIterations = 5; + + private ScreenFade _screenFade; + private Vector3 _lastFreePosition; + private Vector3 _lastPosition; + private bool _isFreePositionKnown; + + private void Awake() + { + _screenFade = GetComponent(); + } + + private void OnDisable() + { + _isFreePositionKnown = false; + _screenFade.SetWallFade(0f, float.MaxValue); + } + + private void LateUpdate() + { + var position = transform.position; + + var isTeleported = (position - _lastPosition).sqrMagnitude > _teleportDistance * _teleportDistance; + if (!_isFreePositionKnown || isTeleported) + { + _lastFreePosition = position; + _isFreePositionKnown = true; + } + + _lastPosition = position; + + var distance = GetWallDistance(position); + var alpha = Mathf.InverseLerp(_fadeStartDistance, _fullFadeDistance, distance); + + if (IsBehindWall(position)) + alpha = 1f; + else if (distance >= _fadeStartDistance) + _lastFreePosition = position; + + _screenFade.SetWallFade(alpha, _fadeSpeed); + } + + /// + /// Approximate distance from the position to the nearest wall collider, at most _fadeStartDistance. + /// Binary search with overlap checks, as Collider.ClosestPoint doesn't support non-convex mesh colliders. + /// + private float GetWallDistance(Vector3 position) + { + if (!IsWallWithin(position, _fadeStartDistance)) + return _fadeStartDistance; + + var free = 0f; + var blocked = _fadeStartDistance; + for (var i = 0; i < _distanceIterations; i++) + { + var radius = (free + blocked) * 0.5f; + if (IsWallWithin(position, radius)) + blocked = radius; + else + free = radius; + } + + return free; + } + + private bool IsWallWithin(Vector3 position, float radius) + { + return Physics.CheckSphere(position, radius, _wallLayers, QueryTriggerInteraction.Ignore); + } + + private bool IsBehindWall(Vector3 position) + { + var offset = position - _lastFreePosition; + var distance = offset.magnitude; + if (distance < 0.001f) + return false; + + // Both directions: world meshes are one-sided, a ray only hits a triangle from its front. + var direction = offset / distance; + return Physics.Raycast(_lastFreePosition, direction, distance, _wallLayers, QueryTriggerInteraction.Ignore) + || Physics.Raycast(position, -direction, distance, _wallLayers, QueryTriggerInteraction.Ignore); + } + } +} diff --git a/Assets/Gothic-VR/Scripts/Adapters/Player/WallFade.cs.meta b/Assets/Gothic-VR/Scripts/Adapters/Player/WallFade.cs.meta new file mode 100644 index 000000000..0eaeb4a95 --- /dev/null +++ b/Assets/Gothic-VR/Scripts/Adapters/Player/WallFade.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: cb7a9357e8f836748b20e28359c38575 \ No newline at end of file diff --git a/Assets/Gothic-VR/Scripts/Adapters/UI/VRCinema.cs b/Assets/Gothic-VR/Scripts/Adapters/UI/VRCinema.cs index 44881378e..ee5ba9340 100644 --- a/Assets/Gothic-VR/Scripts/Adapters/UI/VRCinema.cs +++ b/Assets/Gothic-VR/Scripts/Adapters/UI/VRCinema.cs @@ -237,9 +237,10 @@ private void RestoreCamera() private void LockPlayer() { // The cinema is inactive until the first video - no Awake to cache it in before. + // It's a sibling of the rig inside the player prefab, not a child of the VRPlayer. if (_player == null) { - _player = GetComponentInParent(true); + _player = transform.root.GetComponentInChildren(true); _rig = _player == null ? null : _player.GetComponent(); } if (_player == null || _rig == null) @@ -260,17 +261,21 @@ private void LockPlayer() _player.IsMenuButtonEnabled = false; } + /// + /// Values enabled by others while the video played are kept: the lock saved at start can be outdated by then + /// (e.g. the world load or a dialog unlocked the player meanwhile), restoring it would leave the player stuck. + /// private void UnlockPlayer() { if (_player == null || _rig == null) return; - _rig.MovementEnabled = _savedMovementEnabled; - _rig.TurnEnabled = _savedRotationEnabled; - _rig.CanCrouch = _savedCanCrouch; - _rig.CanJump = _savedCanJump; - _rig.TeleportEnabled = _savedTeleporterEnabled; - _player.IsMenuButtonEnabled = _savedMenuButtonEnabled; + _rig.MovementEnabled |= _savedMovementEnabled; + _rig.TurnEnabled |= _savedRotationEnabled; + _rig.CanCrouch |= _savedCanCrouch; + _rig.CanJump |= _savedCanJump; + _rig.TeleportEnabled |= _savedTeleporterEnabled; + _player.IsMenuButtonEnabled |= _savedMenuButtonEnabled; } } } diff --git a/Assets/Gothic-VR/Scripts/Interaction/Backends/Xri/XriBackend.cs b/Assets/Gothic-VR/Scripts/Interaction/Backends/Xri/XriBackend.cs index 0905be1f3..6d02db6db 100644 --- a/Assets/Gothic-VR/Scripts/Interaction/Backends/Xri/XriBackend.cs +++ b/Assets/Gothic-VR/Scripts/Interaction/Backends/Xri/XriBackend.cs @@ -7,9 +7,9 @@ namespace Gothic.VR.Interaction.Backends.Xri { /// /// XR Interaction Toolkit backend. Always compiled, as XRI is a free package. - /// Implemented: input, haptics, SFX and the player rig (XriRig on "VR - Player XRI.prefab", without screen fade). - /// Missing: the UI laser pointers (IVrUiPointers, HVR phase 1c; registered as a placeholder which only warns), - /// ScreenFade/WallFade (1c), the simulator (1d) and grabbing (phase 2). + /// Implemented: input, haptics, SFX, UI laser pointers and the player rig (XriRig on "VR - Player XRI.prefab", + /// with ScreenFade/WallFade on its camera). + /// Missing: the simulator (HVR phase 1d) and grabbing (phase 2). /// public class XriBackend : IVrBackend { @@ -17,9 +17,9 @@ public class XriBackend : IVrBackend public void InstallBindings(ContainerBuilder containerBuilder) { - Logger.LogWarning("XRI backend is work in progress: rig, locomotion, input and haptics work. " + - "UI laser pointers and screen fades (HVR phase 1c), the simulator (1d) and grabbing " + - "(phase 2) are missing.", LogCat.VR); + Logger.LogWarning("XRI backend is work in progress: rig, locomotion, input, haptics, UI laser pointers " + + "and screen fades work. The simulator (HVR phase 1d) and grabbing (phase 2) are " + + "missing.", LogCat.VR); containerBuilder.AddSingleton(typeof(XriInput), typeof(IVrInput), typeof(XriInput)); containerBuilder.AddSingleton(typeof(XriHaptics), typeof(IVrHaptics)); diff --git a/Assets/Gothic-VR/Scripts/Interaction/Backends/Xri/XriRig.cs b/Assets/Gothic-VR/Scripts/Interaction/Backends/Xri/XriRig.cs index a9c2284e4..a1f26e6e4 100644 --- a/Assets/Gothic-VR/Scripts/Interaction/Backends/Xri/XriRig.cs +++ b/Assets/Gothic-VR/Scripts/Interaction/Backends/Xri/XriRig.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using Gothic.Core.Logging; +using Gothic.VR.Adapters.Player; using Gothic.VR.Interaction.Models; using Gothic.VR.Interaction.Ports; using Reflex.Attributes; @@ -33,6 +34,9 @@ public class XriRig : MonoBehaviour, IVrRig [SerializeField] private Transform _leftController; [SerializeField] private Transform _rightController; + [Tooltip("Fade on the camera, driven by Fade(). WallFade on the camera uses it too.")] + [SerializeField] private ScreenFade _screenFade; + [Header("Locomotion")] [SerializeField] private ContinuousMoveProvider _moveProvider; [SerializeField] private SnapTurnProvider _snapTurnProvider; @@ -82,7 +86,6 @@ public class XriRig : MonoBehaviour, IVrRig private bool _isSprintLatched; private bool _isCrouching; private float _crouchOffset; - private float _fadeAlpha; private bool _isTeleportQueued; private Vector3 _teleportPosition; @@ -193,8 +196,7 @@ public float StepOffset set => _characterController.stepOffset = value; } - // TODO HVR phase 1c: ScreenFade. Until then, Fade() only stores the value. - public float FadeAlpha => _fadeAlpha; + public float FadeAlpha => _screenFade != null ? _screenFade.FadeAlpha : 0f; // TODO HVR phase 2: Near-Far interactors. public IReadOnlyList HandGrabbers => _noGrabbers; @@ -390,8 +392,8 @@ public void SetGrabbingEnabled(bool isEnabled) public void Fade(float alpha, float speed) { - // TODO HVR phase 1c: ScreenFade on the camera. Only the value is kept until then. - _fadeAlpha = Mathf.Clamp01(alpha); + if (_screenFade != null) + _screenFade.Fade(alpha, speed); } } } diff --git a/Assets/Gothic-VR/Scripts/Interaction/Backends/Xri/XriUiPointers.cs b/Assets/Gothic-VR/Scripts/Interaction/Backends/Xri/XriUiPointers.cs index 8af62e105..854fa5886 100644 --- a/Assets/Gothic-VR/Scripts/Interaction/Backends/Xri/XriUiPointers.cs +++ b/Assets/Gothic-VR/Scripts/Interaction/Backends/Xri/XriUiPointers.cs @@ -3,49 +3,65 @@ using Gothic.VR.Interaction.Ports; using UnityEngine; using UnityEngine.EventSystems; +using UnityEngine.XR.Interaction.Toolkit.Interactors; +using UnityEngine.XR.Interaction.Toolkit.UI; using Logger = Gothic.Core.Logging.Logger; namespace Gothic.VR.Interaction.Backends.Xri { /// - /// NOT IMPLEMENTED YET (HVR phase 1c): XRUIInputModule, TrackedDeviceGraphicRaycaster per canvas and the - /// interactor-to-hand lookup. Until then, no UI laser pointers exist on the XRI backend and every call only logs - /// a single warning. + /// UI laser pointers of the XRI rig: one XRRayInteractor per controller (UI only, "UI Ray" on the player prefab) + /// and the XRUIInputModule on the player's EventSystem. A canvas is hit only once it has a + /// TrackedDeviceGraphicRaycaster, which RegisterCanvas() adds. /// public class XriUiPointers : IVrUiPointers { - private bool _isWarningLogged; - public void RegisterCanvas(Canvas canvas) { - LogNotImplemented(); + if (canvas == null) + return; + + if (canvas.TryGetComponent(out TrackedDeviceGraphicRaycaster raycaster)) + raycaster.enabled = true; + else + canvas.gameObject.AddComponent(); } public void UnregisterCanvas(Canvas canvas) { - LogNotImplemented(); + if (canvas != null && canvas.TryGetComponent(out TrackedDeviceGraphicRaycaster raycaster)) + raycaster.enabled = false; } public void RegisterAllCanvases() { - LogNotImplemented(); + // WARNING: FindObjectsByType looks through all opened scene trees, this can become quite slow. + var allCanvases = + Object.FindObjectsByType(FindObjectsInactive.Include, FindObjectsSortMode.None); + foreach (var canvas in allCanvases) + RegisterCanvas(canvas); + + Logger.Log($"[XRI] {allCanvases.Length} canvases registered for the UI laser pointers.", LogCat.VR); } public bool TryGetHandSide(PointerEventData eventData, out VrHandSide side) { - LogNotImplemented(); side = default; - return false; - } - - private void LogNotImplemented() - { - if (_isWarningLogged) - return; + if (eventData is not TrackedDeviceEventData trackedEventData || + trackedEventData.interactor is not XRBaseInteractor interactor) + return false; - Logger.LogWarning("XRI backend: UI laser pointers aren't implemented yet (HVR phase 1c). " + - "Menus can't be clicked with the controllers.", LogCat.VR); - _isWarningLogged = true; + switch (interactor.handedness) + { + case InteractorHandedness.Left: + side = VrHandSide.Left; + return true; + case InteractorHandedness.Right: + side = VrHandSide.Right; + return true; + default: + return false; + } } } } diff --git a/Assets/Gothic-VR/Shaders/GothicVRScreenFade.shader b/Assets/Gothic-VR/Shaders/GothicVRScreenFade.shader new file mode 100644 index 000000000..d53e76759 --- /dev/null +++ b/Assets/Gothic-VR/Shaders/GothicVRScreenFade.shader @@ -0,0 +1,72 @@ +// Screen fade of the VR camera (ScreenFade, XRI backend): a single color drawn on the inner faces of a small cube +// around the head. ZTest Always, so walls the head is inside of are covered as well. The render queue comes from the +// material (VRScreenFade-XRI): after the world's transparents, before the on-top UI (Gothic/UI OnTop, 3899+), so +// dialogs, subtitles and menus stay readable on black. +Shader "Gothic/VR Screen Fade" +{ + Properties + { + _Color ("Color", Color) = (0,0,0,0) + } + + SubShader + { + Tags + { + "Queue"="Transparent" + "IgnoreProjector"="True" + "RenderType"="Transparent" + } + + // Inner faces only: one layer per pixel from inside the cube. + Cull Front + Lighting Off + ZWrite Off + ZTest Always + Blend SrcAlpha OneMinusSrcAlpha + // Keep the target's alpha: the color is a pure overlay. + ColorMask RGB + + Pass + { + Name "Default" + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma target 2.0 + #pragma multi_compile_instancing + + #include "UnityCG.cginc" + + struct appdata_t + { + float4 vertex : POSITION; + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct v2f + { + float4 vertex : SV_POSITION; + UNITY_VERTEX_OUTPUT_STEREO + }; + + fixed4 _Color; + + v2f vert(appdata_t v) + { + v2f OUT; + UNITY_SETUP_INSTANCE_ID(v); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(OUT); + OUT.vertex = UnityObjectToClipPos(v.vertex); + return OUT; + } + + fixed4 frag(v2f IN) : SV_Target + { + UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(IN); + return _Color; + } + ENDCG + } + } +} diff --git a/Assets/Gothic-VR/Shaders/GothicVRScreenFade.shader.meta b/Assets/Gothic-VR/Shaders/GothicVRScreenFade.shader.meta new file mode 100644 index 000000000..2a4cc5e89 --- /dev/null +++ b/Assets/Gothic-VR/Shaders/GothicVRScreenFade.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: d8a7a68c82f07394da0c92346126baea +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Docs/HVR-replacement/phase-1-rig-input-locomotion-ui.md b/Docs/HVR-replacement/phase-1-rig-input-locomotion-ui.md index 4e8395f9a..106187ff7 100644 --- a/Docs/HVR-replacement/phase-1-rig-input-locomotion-ui.md +++ b/Docs/HVR-replacement/phase-1-rig-input-locomotion-ui.md @@ -185,6 +185,27 @@ same perceived strength. haptics). - Ray interactor per hand for UI only in this phase (Phase 2 replaces it with the Near-Far interactor). +- [x] Done in 1c. Notes: + - `VR - Player XRI.prefab` got a root child `UIManager` with `EventSystem`, `XRUIInputModule` (XR input only; mouse, + touch, gamepad, joystick and the built-in fallback actions are off) and an `XRInteractionManager`. The HVR player + keeps its `HVRInputModule`. + - `Left/Right Controller/UI Ray`: `XRRayInteractor` (handedness set, interaction layers *Nothing*, raycast mask + *UI* only, straight line, 30 m, select/activate input unused, UI press = `XRI Left/Right Interaction/UI Press` + (+ `UI Press Value`), UI scroll = `UI Scroll`), `LineRenderer` (built-in `Sprites-Default` material) and + `XRInteractorLineVisual` (5 mm, white; invalid/blocked gradient fully transparent, so the laser only shows while + it points at UI, like HVR). All Gothic UI graphics are on the UI layer, so the UI-only mask hits every menu. + - `XriUiPointers`: `RegisterCanvas` adds (or re-enables) a `TrackedDeviceGraphicRaycaster`, `UnregisterCanvas` + disables it, `RegisterAllCanvases` keeps the one-shot scan (logs the count). `TryGetHandSide` maps + `TrackedDeviceEventData.interactor` (`XRBaseInteractor.handedness`) to `VrHandSide`; other events -> false. + - Hero subtitles and the status bars were missing on the XRI camera since 1b (they were children of the removed + HVR camera; `Output.PrintDialog` threw NREs when the hero spoke). `Menu-Subtitles` and the three `StatusBar*` + instances were copied with the HVR player's overrides under `Main Camera`. Still missing from the HVR camera: + `Mouth` (VRMouth, eating/drinking, phase 2) and `HeadRelativeInventory` (shoulder sockets, phase 3). + - Fixed on both backends: `VRCinema.LockPlayer` never found the `VRPlayer` (the cinema is a sibling of the rig, + not a child), so videos never locked the player. It now searches the player prefab root. Unlocking keeps values + others enabled meanwhile (`|=` with the saved ones): the world load unlocks the player while the intro video + plays, and restoring the lock saved at video start would have left the player stuck. + ## Fades - `ScreenFade`: a camera-attached inverted sphere or quad with an unlit URP material whose alpha is driven by @@ -193,6 +214,26 @@ same perceived strength. - `WallFade` (replaces `HVRHeadCollision`): `Physics.OverlapSphere` on the camera with the world layers. Fade towards black by penetration depth. UltimateXR's `UxrCameraWallFade` (MIT) is a reference. +- [x] Done in 1c (`Gothic-VR/Scripts/Adapters/Player/ScreenFade.cs`, `WallFade.cs`, both on the XRI `Main Camera`; + game code, no XRI types). Notes: + - What HVR did: `HVRCanvasFade` "GlobalCameraFade" was the `ScreenFader` behind `IVrRig.Fade` (VRSwimDive dive + darkness, VRSeat), a second one "HeadCollisionFade" was driven by `HVRHeadCollision` (layer Default only, + radius 0.1 m). Ours combines both in one `ScreenFade` with two channels (requested fade and wall fade, the + stronger one is shown); `IVrRig.FadeAlpha` returns the requested channel only, so `VRSeat` waits as before. + - `ScreenFade` draws the inner faces of a 0.3 m cube around the head with own shader `Gothic/VR Screen Fade` + (`Shaders/GothicVRScreenFade.shader`: color only, `ZTest Always`, `Cull Front`, `ColorMask RGB`, stereo + instancing macros) and material `Materials/VRScreenFade-XRI.mat` (render queue 3898: after world transparents, + before the on-top UI at 3899+, so dialogs/subtitles/menus stay readable). The cube is on the UI layer, so it also + works in the cinema. Runs on unscaled time. `Fade(a, float.MaxValue)` is immediate. + - `WallFade` (own design, `UxrCameraWallFade` only read): distance to the nearest Default-layer collider by a + binary search of `Physics.CheckSphere` radii (works for the non-convex world mesh, where `ClosestPoint` + doesn't; `ComputePenetration` needs an enabled collider), fade from 0.1 m to black at 0.03 m. Through a + one-sided wall mesh, a ray from the last free head position (both directions) keeps it black. Jumps > 1 m per + frame (teleport) reset the free position. + - Verified without headset by rendering the camera into a texture (fade 1 = black) and moving the camera into the + ground (ramps to 0.71 at 5 cm, to 1 below the surface, back to 0 above). The MCP Game-view screenshot doesn't show + the fade (captured before `LateUpdate`?), so the pixel check was used instead. + ## Swim/dive (`VRSwimDive.cs`) Already on `IVrRig` after Phase 0. Check: @@ -201,6 +242,21 @@ Already on `IVrRig` after Phase 0. Check: - Rotation math (`VRSwimDive.cs:350-415`) assumed HVR's rig hierarchy (`CameraRig.TransformDirection`). Re-check with `XROrigin.Origin` and the camera's yaw. +- [x] Checked in 1c, no code change needed: + - `IVrRig.TrackingSpace` is `Camera Offset` on XRI. It never rotates relative to the XR Origin, which the turn + providers rotate, and controller velocities are relative to it. So `TrackingSpace.TransformDirection` contains + the synthetic (stick) yaw but not the real head yaw, like HVR's `CameraRig` ("Test 5"). Checked: origin yaw 90° + turns local forward into world +x. + - `MovementEnabled` is **not** set to false while swimming, neither on HVR today nor on XRI (the line above was + wrong): the stick keeps moving the player in water on both backends. On XRI this doesn't fight the strokes: + with gravity 0 the `ContinuousMoveProvider` moves horizontally via the body transformer, the strokes call + `CharacterController.Move` directly, both add up. + - Play mode (Xri, no headset): teleported into G1 water 2.7 m deep -> `Swim`, gravity/max fall 0, jump/crouch off. + `StartDive` -> `Dive`, the fade ramps up with `1/air` (0.32 after a few seconds); back to `Swim` -> fade 0 + immediately. Strokes themselves need a headset or the simulator (1d). + - `VRSwimDive` raycasts from the XR Origin (`transform.position`), which in room-scale can be up to the play area + away from the body (see 1b notes on `IVrRig.Root`). Fine with stick walking; check on a headset. + ## Simulator - Use the XR Interaction Simulator prefab in `Player.unity`. Enable it via `EnableVRDeviceSimulator`, as today with