From b770e1e21771b449b70d8f6cca88314bb4acd041 Mon Sep 17 00:00:00 2001 From: JaXt0r Date: Thu, 22 Oct 2026 07:52:01 +0200 Subject: [PATCH] refactor: VR grab, hover, socket and door events go through own VrInteractable, socket, container and hinge ports instead of HVR inspector bindings (HVR phase 0c). No player-visible change: grabbing, holsters, backpack, chests, lock picking, NPC talk/loot and mobs behave as before. Co-Authored-By: Claude Opus 5.5 --- .../Domain/Vobs/VobInitializerDomain.cs | 2 +- .../Resources/VR/Prefabs/HVR - Player.prefab | 771 +++++------------- .../Prefabs/Player-Elements/BackPack.prefab | 519 ++++-------- .../BackPack/VRBackpackInventorySlot.prefab | 73 +- .../VRBackpackLargeInventorySlot.prefab | 70 +- .../Resources/VR/Prefabs/Vobs/oCItem.prefab | 88 +- .../VR/Prefabs/Vobs/oCItem/LockPick.prefab | 3 +- .../Resources/VR/Prefabs/Vobs/oCMobBed.prefab | 54 +- .../VR/Prefabs/Vobs/oCMobContainer.prefab | 665 +++++++-------- .../VR/Prefabs/Vobs/oCMobDoor.prefab | 74 +- .../VR/Prefabs/Vobs/oCMobFire.prefab | 54 +- .../VR/Prefabs/Vobs/oCMobInter.prefab | 54 +- .../VR/Prefabs/Vobs/oCMobInter/Seat.prefab | 21 - .../VR/Prefabs/Vobs/oCMobLadder.prefab | 54 +- .../VR/Prefabs/Vobs/oCMobSwitch.prefab | 54 +- .../VR/Prefabs/Vobs/oCMobWheel.prefab | 54 +- .../Resources/VR/Prefabs/Vobs/oCNpc.prefab | 106 +-- .../Scripts/Adapters/HVROverrides.meta | 3 - .../Adapters/HVROverrides/VRShoulderSocket.cs | 13 - .../Adapters/Marvin/VRNpcMarvinAdapter.cs | 23 +- .../Scripts/Adapters/Player/VRBackpack.cs | 133 ++- .../Adapters/Player/VRPlayerItemAdapter.cs | 31 +- .../Player/VRPlayerWeaponInteraction.cs | 45 +- .../Scripts/Adapters/Player/VRSeat.cs | 19 +- Assets/Gothic-VR/Scripts/Adapters/VRFocus.cs | 25 +- Assets/Gothic-VR/Scripts/Adapters/VRNpc.cs | 48 +- .../Gothic-VR/Scripts/Adapters/VRNpcLoot.cs | 42 +- .../VRVobContainerSocketInventory.cs | 51 +- .../VRContainerDoorPickingInteraction.cs | 17 +- .../Scripts/Adapters/Vob/VRDigSpot.cs | 59 +- .../Scripts/Adapters/Vob/VRMobInteraction.cs | 33 +- .../Scripts/Adapters/Vob/VRVobContainer.cs | 11 +- .../Scripts/Adapters/Vob/VRVobDoor.cs | 11 +- .../Scripts/Adapters/Vob/VRVobItem.cs | 41 +- .../Backends/Hvr/HvrEnumExtensions.cs | 25 + .../Backends/Hvr/HvrGrabArgsFactory.cs | 45 + .../Backends/Hvr/HvrGrabArgsFactory.cs.meta | 2 + .../Backends/Hvr/HvrGrabberBridge.cs | 87 ++ .../Backends/Hvr/HvrGrabberBridge.cs.meta | 2 + .../Backends/Hvr/HvrHingeBridge.cs | 45 + .../Backends/Hvr/HvrHingeBridge.cs.meta | 2 + .../Backends/Hvr/HvrInteractableBridge.cs | 99 +++ .../Hvr/HvrInteractableBridge.cs.meta | 2 + .../Backends/Hvr/HvrPhysicsChest.cs} | 44 +- .../Backends/Hvr/HvrPhysicsChest.cs.meta} | 0 .../Interaction/Backends/Hvr/HvrRig.cs | 31 + .../Backends/Hvr/HvrShoulderSocket.cs | 12 + .../Backends/Hvr/HvrShoulderSocket.cs.meta} | 0 .../Backends/Hvr/HvrSocket.cs} | 4 +- .../Backends/Hvr/HvrSocket.cs.meta} | 0 .../Backends/Hvr/HvrSocketBridge.cs | 43 + .../Backends/Hvr/HvrSocketBridge.cs.meta | 2 + .../Backends/Hvr/HvrSocketContainerBridge.cs | 78 ++ .../Hvr/HvrSocketContainerBridge.cs.meta | 2 + .../Scripts/Interaction/Components.meta | 8 + .../Interaction/Components/VrInteractable.cs | 104 +++ .../Components/VrInteractable.cs.meta | 2 + .../Scripts/Interaction/Models/VrGrabArgs.cs | 41 + .../Interaction/Models/VrGrabArgs.cs.meta | 2 + .../Interaction/Models/VrGrabberKind.cs | 18 +- .../Scripts/Interaction/Ports/IVrGrabber.cs | 35 + .../Interaction/Ports/IVrGrabber.cs.meta | 2 + .../Scripts/Interaction/Ports/IVrHinge.cs | 25 + .../Interaction/Ports/IVrHinge.cs.meta | 2 + .../Ports/IVrInteractableBackend.cs | 18 + .../Ports/IVrInteractableBackend.cs.meta | 2 + .../Scripts/Interaction/Ports/IVrRig.cs | 6 + .../Scripts/Interaction/Ports/IVrSocket.cs | 36 + .../Interaction/Ports/IVrSocket.cs.meta | 2 + .../Interaction/Ports/IVrSocketContainer.cs | 23 + .../Ports/IVrSocketContainer.cs.meta | 2 + .../Scripts/Services/VRPlayerService.cs | 43 +- Docs/HVR-replacement/phase-0-decouple.md | 36 +- 73 files changed, 2258 insertions(+), 1995 deletions(-) delete mode 100644 Assets/Gothic-VR/Scripts/Adapters/HVROverrides.meta delete mode 100644 Assets/Gothic-VR/Scripts/Adapters/HVROverrides/VRShoulderSocket.cs create mode 100644 Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrGrabArgsFactory.cs create mode 100644 Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrGrabArgsFactory.cs.meta create mode 100644 Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrGrabberBridge.cs create mode 100644 Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrGrabberBridge.cs.meta create mode 100644 Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrHingeBridge.cs create mode 100644 Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrHingeBridge.cs.meta create mode 100644 Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrInteractableBridge.cs create mode 100644 Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrInteractableBridge.cs.meta rename Assets/Gothic-VR/Scripts/{Adapters/Vob/Container/VRVobContainerPhysicsChest.cs => Interaction/Backends/Hvr/HvrPhysicsChest.cs} (89%) rename Assets/Gothic-VR/Scripts/{Adapters/Vob/Container/VRVobContainerPhysicsChest.cs.meta => Interaction/Backends/Hvr/HvrPhysicsChest.cs.meta} (100%) create mode 100644 Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrShoulderSocket.cs rename Assets/Gothic-VR/Scripts/{Adapters/HVROverrides/VRShoulderSocket.cs.meta => Interaction/Backends/Hvr/HvrShoulderSocket.cs.meta} (100%) rename Assets/Gothic-VR/Scripts/{Adapters/HVROverrides/VRSocket.cs => Interaction/Backends/Hvr/HvrSocket.cs} (98%) rename Assets/Gothic-VR/Scripts/{Adapters/HVROverrides/VRSocket.cs.meta => Interaction/Backends/Hvr/HvrSocket.cs.meta} (100%) create mode 100644 Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrSocketBridge.cs create mode 100644 Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrSocketBridge.cs.meta create mode 100644 Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrSocketContainerBridge.cs create mode 100644 Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrSocketContainerBridge.cs.meta create mode 100644 Assets/Gothic-VR/Scripts/Interaction/Components.meta create mode 100644 Assets/Gothic-VR/Scripts/Interaction/Components/VrInteractable.cs create mode 100644 Assets/Gothic-VR/Scripts/Interaction/Components/VrInteractable.cs.meta create mode 100644 Assets/Gothic-VR/Scripts/Interaction/Models/VrGrabArgs.cs create mode 100644 Assets/Gothic-VR/Scripts/Interaction/Models/VrGrabArgs.cs.meta create mode 100644 Assets/Gothic-VR/Scripts/Interaction/Ports/IVrGrabber.cs create mode 100644 Assets/Gothic-VR/Scripts/Interaction/Ports/IVrGrabber.cs.meta create mode 100644 Assets/Gothic-VR/Scripts/Interaction/Ports/IVrHinge.cs create mode 100644 Assets/Gothic-VR/Scripts/Interaction/Ports/IVrHinge.cs.meta create mode 100644 Assets/Gothic-VR/Scripts/Interaction/Ports/IVrInteractableBackend.cs create mode 100644 Assets/Gothic-VR/Scripts/Interaction/Ports/IVrInteractableBackend.cs.meta create mode 100644 Assets/Gothic-VR/Scripts/Interaction/Ports/IVrSocket.cs create mode 100644 Assets/Gothic-VR/Scripts/Interaction/Ports/IVrSocket.cs.meta create mode 100644 Assets/Gothic-VR/Scripts/Interaction/Ports/IVrSocketContainer.cs create mode 100644 Assets/Gothic-VR/Scripts/Interaction/Ports/IVrSocketContainer.cs.meta diff --git a/Assets/Gothic-Core/Scripts/Domain/Vobs/VobInitializerDomain.cs b/Assets/Gothic-Core/Scripts/Domain/Vobs/VobInitializerDomain.cs index 19cfd848f..b9c272e8a 100644 --- a/Assets/Gothic-Core/Scripts/Domain/Vobs/VobInitializerDomain.cs +++ b/Assets/Gothic-Core/Scripts/Domain/Vobs/VobInitializerDomain.cs @@ -802,7 +802,7 @@ private static void SnapDigSpotToLoader(GameObject go) /// /// Child vobs are created inside their parent's GO without a VobLoader of their own. Their adapters - /// (VRVobContainer, VRVobContainerPhysicsChest, door lock picking, VRFocus) call + /// (VRVobContainer, HvrPhysicsChest, door lock picking, VRFocus) call /// GetComponentInParent<VobLoader>() and got the PARENT's vob (often an unnamed zCVob) - /// InvalidCastExceptions, "No door or container found for ><", doors/chests that don't work (G2 Xardas' tower). /// diff --git a/Assets/Gothic-VR/Resources/VR/Prefabs/HVR - Player.prefab b/Assets/Gothic-VR/Resources/VR/Prefabs/HVR - Player.prefab index bcc82c85f..860bf49bb 100644 --- a/Assets/Gothic-VR/Resources/VR/Prefabs/HVR - Player.prefab +++ b/Assets/Gothic-VR/Resources/VR/Prefabs/HVR - Player.prefab @@ -709,90 +709,6 @@ PrefabInstance: propertyPath: RaycastLayermask.m_Bits value: 9438272 objectReference: {fileID: 0} - - target: {fileID: 1685099869530008038, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.size - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 1685099869530008038, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.size - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 1685099869530008038, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.size - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 1685099869530008038, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Mode - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1685099869530008038, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[0].m_Mode - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1685099869530008038, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 4104050421938227924} - - target: {fileID: 1685099869530008038, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 4104050421938227924} - - target: {fileID: 1685099869530008038, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[0].m_CallState - value: 2 - objectReference: {fileID: 0} - - target: {fileID: 1685099869530008038, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Mode - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1685099869530008038, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName - value: OnGrabbed - objectReference: {fileID: 0} - - target: {fileID: 1685099869530008038, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[0].m_CallState - value: 2 - objectReference: {fileID: 0} - - target: {fileID: 1685099869530008038, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName - value: OnReleased - objectReference: {fileID: 0} - - target: {fileID: 1685099869530008038, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 5592562468148006618} - - target: {fileID: 1685099869530008038, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_CallState - value: 2 - objectReference: {fileID: 0} - - target: {fileID: 1685099869530008038, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName - value: OnBeforeGrabbed - objectReference: {fileID: 0} - - target: {fileID: 1685099869530008038, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName - value: Gothic.VR.Components.Player.VRPlayerWeaponInteraction, Gothic.VR - objectReference: {fileID: 0} - - target: {fileID: 1685099869530008038, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName - value: Gothic.VR.Components.Player.VRPlayerWeaponInteraction, Gothic.VR - objectReference: {fileID: 0} - - target: {fileID: 1685099869530008038, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName - value: Gothic.VR.Adapters.Player.VRPlayerItemAdapter, Gothic.VR - objectReference: {fileID: 0} - - target: {fileID: 1685099869530008038, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName - value: UnityEngine.Object, UnityEngine - objectReference: {fileID: 0} - - target: {fileID: 1685099869530008038, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName - value: UnityEngine.Object, UnityEngine - objectReference: {fileID: 0} - - target: {fileID: 1685099869530008038, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName - value: UnityEngine.Object, UnityEngine - objectReference: {fileID: 0} - target: {fileID: 2034389217661245426, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} propertyPath: m_LocalRotation.w value: 0.5 @@ -825,10 +741,6 @@ PrefabInstance: propertyPath: 'm_Materials.Array.data[0]' value: objectReference: {fileID: 2100000, guid: 9da7c4efedc95434385f95fd36a71279, type: 2} - - target: {fileID: 2573056120201010472, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: 'm_Materials.Array.data[1]' - value: - objectReference: {fileID: 2100000, guid: 9da7c4efedc95434385f95fd36a71279, type: 2} - target: {fileID: 2623048716060499684, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} propertyPath: 'm_Materials.Array.data[0]' value: @@ -905,34 +817,6 @@ PrefabInstance: propertyPath: SFXGrab value: objectReference: {fileID: 0} - - target: {fileID: 2980805439611176150, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.size - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 2980805439611176150, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Mode - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2980805439611176150, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 5592562468148006618} - - target: {fileID: 2980805439611176150, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_CallState - value: 2 - objectReference: {fileID: 0} - - target: {fileID: 2980805439611176150, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName - value: OnBeforeGrabbed - objectReference: {fileID: 0} - - target: {fileID: 2980805439611176150, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName - value: Gothic.VR.Adapters.Player.VRPlayerItemAdapter, Gothic.VR - objectReference: {fileID: 0} - - target: {fileID: 2980805439611176150, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName - value: UnityEngine.Object, UnityEngine - objectReference: {fileID: 0} - target: {fileID: 3063419232759952031, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} propertyPath: Tags.Tags value: @@ -941,122 +825,6 @@ PrefabInstance: propertyPath: Tags._data value: 1 objectReference: {fileID: 0} - - target: {fileID: 3367897735511474143, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.size - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 3367897735511474143, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.size - value: 2 - objectReference: {fileID: 0} - - target: {fileID: 3367897735511474143, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.size - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 3367897735511474143, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Mode - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3367897735511474143, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[1].m_Mode - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 3367897735511474143, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[0].m_Mode - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3367897735511474143, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[1].m_Mode - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3367897735511474143, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 3760600358070659426} - - target: {fileID: 3367897735511474143, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 9202099228209387433} - - target: {fileID: 3367897735511474143, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[1].m_Target - value: - objectReference: {fileID: 3760600358070659426} - - target: {fileID: 3367897735511474143, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[0].m_CallState - value: 2 - objectReference: {fileID: 0} - - target: {fileID: 3367897735511474143, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[1].m_CallState - value: 2 - objectReference: {fileID: 0} - - target: {fileID: 3367897735511474143, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Mode - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3367897735511474143, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName - value: OnItemPutIntoBackpack - objectReference: {fileID: 0} - - target: {fileID: 3367897735511474143, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[0].m_CallState - value: 2 - objectReference: {fileID: 0} - - target: {fileID: 3367897735511474143, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[1].m_CallState - value: 2 - objectReference: {fileID: 0} - - target: {fileID: 3367897735511474143, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName - value: OnReleased - objectReference: {fileID: 0} - - target: {fileID: 3367897735511474143, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName - value: OnItemPutOutOfBackpack - objectReference: {fileID: 0} - - target: {fileID: 3367897735511474143, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 9202099228209387433} - - target: {fileID: 3367897735511474143, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_CallState - value: 2 - objectReference: {fileID: 0} - - target: {fileID: 3367897735511474143, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName - value: OnBeforeGrabbed - objectReference: {fileID: 0} - - target: {fileID: 3367897735511474143, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName - value: Gothic.VR.Adapters.Player.VRBackpack, Gothic.VR - objectReference: {fileID: 0} - - target: {fileID: 3367897735511474143, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName - value: Gothic.VR.Adapters.Vob.Container.VRVobContainerSocketInventory, Gothic.VR - objectReference: {fileID: 0} - - target: {fileID: 3367897735511474143, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[1].m_TargetAssemblyTypeName - value: Gothic.VR.Adapters.Player.VRBackpack, Gothic.VR - objectReference: {fileID: 0} - - target: {fileID: 3367897735511474143, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName - value: Gothic.VR.Adapters.Vob.Container.VRVobContainerSocketInventory, Gothic.VR - objectReference: {fileID: 0} - - target: {fileID: 3367897735511474143, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName - value: UnityEngine.Object, UnityEngine - objectReference: {fileID: 0} - - target: {fileID: 3367897735511474143, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName - value: UnityEngine.Object, UnityEngine - objectReference: {fileID: 0} - - target: {fileID: 3367897735511474143, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName - value: UnityEngine.Object, UnityEngine - objectReference: {fileID: 0} - - target: {fileID: 3367897735511474143, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName - value: UnityEngine.Object, UnityEngine - objectReference: {fileID: 0} - target: {fileID: 3367897735596539136, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} propertyPath: SocketContainer value: @@ -1093,34 +861,6 @@ PrefabInstance: propertyPath: SFXGrab value: objectReference: {fileID: 0} - - target: {fileID: 3964033594404211023, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.size - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 3964033594404211023, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Mode - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3964033594404211023, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 5592562468148006618} - - target: {fileID: 3964033594404211023, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_CallState - value: 2 - objectReference: {fileID: 0} - - target: {fileID: 3964033594404211023, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName - value: OnBeforeGrabbed - objectReference: {fileID: 0} - - target: {fileID: 3964033594404211023, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName - value: Gothic.VR.Adapters.Player.VRPlayerItemAdapter, Gothic.VR - objectReference: {fileID: 0} - - target: {fileID: 3964033594404211023, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName - value: UnityEngine.Object, UnityEngine - objectReference: {fileID: 0} - target: {fileID: 4653310549361533989, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} propertyPath: m_IsActive value: 0 @@ -1205,90 +945,6 @@ PrefabInstance: propertyPath: RaycastLayermask.m_Bits value: 5243968 objectReference: {fileID: 0} - - target: {fileID: 7204430235297583144, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.size - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 7204430235297583144, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.size - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 7204430235297583144, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.size - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 7204430235297583144, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Mode - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 7204430235297583144, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[0].m_Mode - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 7204430235297583144, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 4104050421938227924} - - target: {fileID: 7204430235297583144, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 4104050421938227924} - - target: {fileID: 7204430235297583144, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[0].m_CallState - value: 2 - objectReference: {fileID: 0} - - target: {fileID: 7204430235297583144, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Mode - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 7204430235297583144, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName - value: OnGrabbed - objectReference: {fileID: 0} - - target: {fileID: 7204430235297583144, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[0].m_CallState - value: 2 - objectReference: {fileID: 0} - - target: {fileID: 7204430235297583144, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName - value: OnReleased - objectReference: {fileID: 0} - - target: {fileID: 7204430235297583144, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 5592562468148006618} - - target: {fileID: 7204430235297583144, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_CallState - value: 2 - objectReference: {fileID: 0} - - target: {fileID: 7204430235297583144, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName - value: OnBeforeGrabbed - objectReference: {fileID: 0} - - target: {fileID: 7204430235297583144, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName - value: Gothic.VR.Components.Player.VRPlayerWeaponInteraction, Gothic.VR - objectReference: {fileID: 0} - - target: {fileID: 7204430235297583144, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName - value: Gothic.VR.Components.Player.VRPlayerWeaponInteraction, Gothic.VR - objectReference: {fileID: 0} - - target: {fileID: 7204430235297583144, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName - value: Gothic.VR.Adapters.Player.VRPlayerItemAdapter, Gothic.VR - objectReference: {fileID: 0} - - target: {fileID: 7204430235297583144, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName - value: UnityEngine.Object, UnityEngine - objectReference: {fileID: 0} - - target: {fileID: 7204430235297583144, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName - value: UnityEngine.Object, UnityEngine - objectReference: {fileID: 0} - - target: {fileID: 7204430235297583144, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName - value: UnityEngine.Object, UnityEngine - objectReference: {fileID: 0} - target: {fileID: 7340868166416387179, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} propertyPath: m_LocalRotation.w value: 0 @@ -1505,21 +1161,45 @@ PrefabInstance: - targetCorrespondingSourceObject: {fileID: 2923976313507361695, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} insertIndex: -1 addedObject: {fileID: 3789326534228044634} + - targetCorrespondingSourceObject: {fileID: 3367897735596539146, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} + insertIndex: -1 + addedObject: {fileID: 265470885364990989} - targetCorrespondingSourceObject: {fileID: 3367897735511474145, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} insertIndex: 1 addedObject: {fileID: 6510255065976159289} + - targetCorrespondingSourceObject: {fileID: 3367897735511474145, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} + insertIndex: -1 + addedObject: {fileID: 6830298057528518834} - targetCorrespondingSourceObject: {fileID: 703588620095445913, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} insertIndex: -1 addedObject: {fileID: 851891696609758034} - targetCorrespondingSourceObject: {fileID: 2641012728304036569, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} insertIndex: 1 addedObject: {fileID: 1678881631422854599} + - targetCorrespondingSourceObject: {fileID: 2641012728304036569, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} + insertIndex: -1 + addedObject: {fileID: 8030036349999634828} - targetCorrespondingSourceObject: {fileID: 887448239260712835, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} insertIndex: 1 addedObject: {fileID: 757337884793384726} + - targetCorrespondingSourceObject: {fileID: 887448239260712835, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} + insertIndex: -1 + addedObject: {fileID: 7010009710009411731} + - targetCorrespondingSourceObject: {fileID: 8237771281066642269, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} + insertIndex: -1 + addedObject: {fileID: 2406662486614375646} + - targetCorrespondingSourceObject: {fileID: 3327876949398026377, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} + insertIndex: -1 + addedObject: {fileID: 8462357697535986096} - targetCorrespondingSourceObject: {fileID: 8886962481680141934, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} insertIndex: -1 addedObject: {fileID: 4516976911541839521} + - targetCorrespondingSourceObject: {fileID: 8653842037556556660, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} + insertIndex: -1 + addedObject: {fileID: 1976198550646775587} + - targetCorrespondingSourceObject: {fileID: 3309422083963978583, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} + insertIndex: -1 + addedObject: {fileID: 9213565482220769279} - targetCorrespondingSourceObject: {fileID: 6718914276336705915, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} insertIndex: -1 addedObject: {fileID: 3489498994974388381} @@ -1540,7 +1220,7 @@ MonoBehaviour: m_CorrespondingSourceObject: {fileID: 1685099869530008038, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} m_PrefabInstance: {fileID: 1779900574691844023} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} + m_GameObject: {fileID: 6965913448549182659} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: ce026d01d1f538044a048be125f5a85e, type: 3} @@ -1629,63 +1309,13 @@ MonoBehaviour: m_EditorClassIdentifier: BeforeGrabbed: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 9202099228209387433} - m_TargetAssemblyTypeName: Gothic.VR.Adapters.Vob.Container.VRVobContainerSocketInventory, - Gothic.VR - m_MethodName: OnBeforeGrabbed - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] Grabbed: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 3760600358070659426} - m_TargetAssemblyTypeName: Gothic.VR.Adapters.Player.VRBackpack, Gothic.VR - m_MethodName: OnItemPutIntoHolster - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] Released: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 9202099228209387433} - m_TargetAssemblyTypeName: Gothic.VR.Adapters.Vob.Container.VRVobContainerSocketInventory, - Gothic.VR - m_MethodName: OnReleased - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 - - m_Target: {fileID: 3760600358070659426} - m_TargetAssemblyTypeName: Gothic.VR.Adapters.Player.VRBackpack, Gothic.VR - m_MethodName: OnItemPutOutOfHolster - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] BeforeHoverEnter: m_PersistentCalls: m_Calls: [] @@ -1729,6 +1359,18 @@ MonoBehaviour: m_PersistentCalls: m_Calls: [] DebugScale: 0 +--- !u!114 &7010009710009411731 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1505226319018549300} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 50fce3b6fdf41d541a8cb5f194cfd30a, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Backends.Hvr.HvrSocketBridge --- !u!4 &1672321467721471303 stripped Transform: m_CorrespondingSourceObject: {fileID: 1118649348335930096, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} @@ -2206,6 +1848,23 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 6bccf1e5bfe81ea449669046dd363b91, type: 3} m_Name: m_EditorClassIdentifier: +--- !u!1 &3845537509841100000 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 3309422083963978583, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} + m_PrefabInstance: {fileID: 1779900574691844023} + m_PrefabAsset: {fileID: 0} +--- !u!114 &9213565482220769279 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3845537509841100000} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4fc5f324acfcbc3428010a9db3c9422e, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Backends.Hvr.HvrGrabberBridge --- !u!1 &3895146393672982614 stripped GameObject: m_CorrespondingSourceObject: {fileID: 3367897735511474145, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} @@ -2225,63 +1884,13 @@ MonoBehaviour: m_EditorClassIdentifier: BeforeGrabbed: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 9202099228209387433} - m_TargetAssemblyTypeName: Gothic.VR.Adapters.Vob.Container.VRVobContainerSocketInventory, - Gothic.VR - m_MethodName: OnBeforeGrabbed - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] Grabbed: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 3760600358070659426} - m_TargetAssemblyTypeName: Gothic.VR.Adapters.Player.VRBackpack, Gothic.VR - m_MethodName: OnItemPutIntoHolster - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] Released: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 9202099228209387433} - m_TargetAssemblyTypeName: Gothic.VR.Adapters.Vob.Container.VRVobContainerSocketInventory, - Gothic.VR - m_MethodName: OnReleased - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 - - m_Target: {fileID: 3760600358070659426} - m_TargetAssemblyTypeName: Gothic.VR.Adapters.Player.VRBackpack, Gothic.VR - m_MethodName: OnItemPutOutOfHolster - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] BeforeHoverEnter: m_PersistentCalls: m_Calls: [] @@ -2324,17 +1933,63 @@ MonoBehaviour: m_PersistentCalls: m_Calls: [] DebugScale: 0 +--- !u!114 &6830298057528518834 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3895146393672982614} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 50fce3b6fdf41d541a8cb5f194cfd30a, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Backends.Hvr.HvrSocketBridge --- !u!114 &3895146393690940081 stripped MonoBehaviour: m_CorrespondingSourceObject: {fileID: 3367897735596539142, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} m_PrefabInstance: {fileID: 1779900574691844023} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} + m_GameObject: {fileID: 3895146393690940093} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 6953a3149e8e4d1468962577608f0002, type: 3} m_Name: m_EditorClassIdentifier: +--- !u!1 &3895146393690940093 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 3367897735596539146, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} + m_PrefabInstance: {fileID: 1779900574691844023} + m_PrefabAsset: {fileID: 0} +--- !u!114 &265470885364990989 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3895146393690940093} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 50fce3b6fdf41d541a8cb5f194cfd30a, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Backends.Hvr.HvrSocketBridge +--- !u!1 &3935447129917564734 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 3327876949398026377, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} + m_PrefabInstance: {fileID: 1779900574691844023} + m_PrefabAsset: {fileID: 0} +--- !u!114 &8462357697535986096 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3935447129917564734} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4fc5f324acfcbc3428010a9db3c9422e, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Backends.Hvr.HvrGrabberBridge --- !u!137 &4253138355794772639 stripped SkinnedMeshRenderer: m_CorrespondingSourceObject: {fileID: 2573056120201010472, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} @@ -2359,63 +2014,13 @@ MonoBehaviour: m_EditorClassIdentifier: BeforeGrabbed: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 9202099228209387433} - m_TargetAssemblyTypeName: Gothic.VR.Adapters.Vob.Container.VRVobContainerSocketInventory, - Gothic.VR - m_MethodName: OnBeforeGrabbed - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] Grabbed: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 3760600358070659426} - m_TargetAssemblyTypeName: Gothic.VR.Adapters.Player.VRBackpack, Gothic.VR - m_MethodName: OnItemPutIntoHolster - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] Released: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 9202099228209387433} - m_TargetAssemblyTypeName: Gothic.VR.Adapters.Vob.Container.VRVobContainerSocketInventory, - Gothic.VR - m_MethodName: OnReleased - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 - - m_Target: {fileID: 3760600358070659426} - m_TargetAssemblyTypeName: Gothic.VR.Adapters.Player.VRBackpack, Gothic.VR - m_MethodName: OnItemPutOutOfHolster - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] BeforeHoverEnter: m_PersistentCalls: m_Calls: [] @@ -2459,6 +2064,18 @@ MonoBehaviour: m_PersistentCalls: m_Calls: [] DebugScale: 0 +--- !u!114 &8030036349999634828 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4329570237425759598} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 50fce3b6fdf41d541a8cb5f194cfd30a, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Backends.Hvr.HvrSocketBridge --- !u!137 &4383562423631724883 stripped SkinnedMeshRenderer: m_CorrespondingSourceObject: {fileID: 2623048716060499684, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} @@ -2538,12 +2155,29 @@ Rigidbody: m_CorrespondingSourceObject: {fileID: 8653842037556556662, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} m_PrefabInstance: {fileID: 1779900574691844023} m_PrefabAsset: {fileID: 0} +--- !u!1 &6965913448549182659 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 8653842037556556660, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} + m_PrefabInstance: {fileID: 1779900574691844023} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1976198550646775587 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6965913448549182659} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4fc5f324acfcbc3428010a9db3c9422e, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Backends.Hvr.HvrGrabberBridge --- !u!114 &6965913448549182662 stripped MonoBehaviour: m_CorrespondingSourceObject: {fileID: 8653842037556556657, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} m_PrefabInstance: {fileID: 1779900574691844023} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} + m_GameObject: {fileID: 6965913448549182659} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: de1e5b754bd6d9241a88e889575193b2, type: 3} @@ -2623,12 +2257,29 @@ Rigidbody: m_CorrespondingSourceObject: {fileID: 8237771281066642271, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} m_PrefabInstance: {fileID: 1779900574691844023} m_PrefabAsset: {fileID: 0} +--- !u!1 &7701449421344543978 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 8237771281066642269, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} + m_PrefabInstance: {fileID: 1779900574691844023} + m_PrefabAsset: {fileID: 0} +--- !u!114 &2406662486614375646 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7701449421344543978} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4fc5f324acfcbc3428010a9db3c9422e, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Backends.Hvr.HvrGrabberBridge --- !u!114 &7701449421344543983 stripped MonoBehaviour: m_CorrespondingSourceObject: {fileID: 8237771281066642264, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} m_PrefabInstance: {fileID: 1779900574691844023} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} + m_GameObject: {fileID: 7701449421344543978} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: de1e5b754bd6d9241a88e889575193b2, type: 3} @@ -2680,7 +2331,7 @@ MonoBehaviour: m_CorrespondingSourceObject: {fileID: 7204430235297583144, guid: c43ac1b5fbd2fc24ea40fb28bae6be3e, type: 3} m_PrefabInstance: {fileID: 1779900574691844023} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} + m_GameObject: {fileID: 7701449421344543978} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: ce026d01d1f538044a048be125f5a85e, type: 3} @@ -3450,6 +3101,22 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} + - target: {fileID: 3389792897302281518, guid: 9887ca19e46b4d547b2ad40c47c756b9, type: 3} + propertyPath: _additionalSockets.Array.size + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 3389792897302281518, guid: 9887ca19e46b4d547b2ad40c47c756b9, type: 3} + propertyPath: '_additionalSockets.Array.data[0]' + value: + objectReference: {fileID: 1505226319018549300} + - target: {fileID: 3389792897302281518, guid: 9887ca19e46b4d547b2ad40c47c756b9, type: 3} + propertyPath: '_additionalSockets.Array.data[1]' + value: + objectReference: {fileID: 4329570237425759598} + - target: {fileID: 3389792897302281518, guid: 9887ca19e46b4d547b2ad40c47c756b9, type: 3} + propertyPath: '_additionalSockets.Array.data[2]' + value: + objectReference: {fileID: 3895146393672982614} - target: {fileID: 6429825415842413170, guid: 9887ca19e46b4d547b2ad40c47c756b9, type: 3} propertyPath: m_Name value: BackPack @@ -3458,62 +3125,22 @@ PrefabInstance: propertyPath: Socket value: objectReference: {fileID: 3895146393690940081} - - target: {fileID: 6847336371662012770, guid: 9887ca19e46b4d547b2ad40c47c756b9, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.size - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 6847336371662012770, guid: 9887ca19e46b4d547b2ad40c47c756b9, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.size - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 6847336371662012770, guid: 9887ca19e46b4d547b2ad40c47c756b9, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Mode - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 6847336371662012770, guid: 9887ca19e46b4d547b2ad40c47c756b9, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[0].m_Mode - value: 0 + - target: {fileID: 7245954016319570917, guid: 9887ca19e46b4d547b2ad40c47c756b9, type: 3} + propertyPath: _holsterSockets.Array.size + value: 3 objectReference: {fileID: 0} - - target: {fileID: 6847336371662012770, guid: 9887ca19e46b4d547b2ad40c47c756b9, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Target + - target: {fileID: 7245954016319570917, guid: 9887ca19e46b4d547b2ad40c47c756b9, type: 3} + propertyPath: '_holsterSockets.Array.data[0]' value: - objectReference: {fileID: 3760600358070659426} - - target: {fileID: 6847336371662012770, guid: 9887ca19e46b4d547b2ad40c47c756b9, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[0].m_Target + objectReference: {fileID: 1505226319018549300} + - target: {fileID: 7245954016319570917, guid: 9887ca19e46b4d547b2ad40c47c756b9, type: 3} + propertyPath: '_holsterSockets.Array.data[1]' value: - objectReference: {fileID: 3760600358070659426} - - target: {fileID: 6847336371662012770, guid: 9887ca19e46b4d547b2ad40c47c756b9, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[0].m_CallState - value: 2 - objectReference: {fileID: 0} - - target: {fileID: 6847336371662012770, guid: 9887ca19e46b4d547b2ad40c47c756b9, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName - value: OnBackpackGrabbedToShoulder - objectReference: {fileID: 0} - - target: {fileID: 6847336371662012770, guid: 9887ca19e46b4d547b2ad40c47c756b9, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[0].m_CallState - value: 2 - objectReference: {fileID: 0} - - target: {fileID: 6847336371662012770, guid: 9887ca19e46b4d547b2ad40c47c756b9, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName - value: OnBackpackReleasedFromShoulder - objectReference: {fileID: 0} - - target: {fileID: 6847336371662012770, guid: 9887ca19e46b4d547b2ad40c47c756b9, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName - value: Gothic.VR.Adapters.Player.VRBackpack, Gothic.VR - objectReference: {fileID: 0} - - target: {fileID: 6847336371662012770, guid: 9887ca19e46b4d547b2ad40c47c756b9, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName - value: Gothic.VR.Adapters.Player.VRBackpack, Gothic.VR - objectReference: {fileID: 0} - - target: {fileID: 6847336371662012770, guid: 9887ca19e46b4d547b2ad40c47c756b9, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName - value: UnityEngine.Object, UnityEngine - objectReference: {fileID: 0} - - target: {fileID: 6847336371662012770, guid: 9887ca19e46b4d547b2ad40c47c756b9, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName - value: UnityEngine.Object, UnityEngine - objectReference: {fileID: 0} + objectReference: {fileID: 4329570237425759598} + - target: {fileID: 7245954016319570917, guid: 9887ca19e46b4d547b2ad40c47c756b9, type: 3} + propertyPath: '_holsterSockets.Array.data[2]' + value: + objectReference: {fileID: 3895146393672982614} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] @@ -3530,17 +3157,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 6ebc937e678155e4d86feeb9248cca97, type: 3} m_Name: m_EditorClassIdentifier: ---- !u!114 &3760600358070659426 stripped -MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 7245954016319570917, guid: 9887ca19e46b4d547b2ad40c47c756b9, type: 3} - m_PrefabInstance: {fileID: 5818257988439845511} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 0e87e25baf014b28a5aaa89ab1e7c31f, type: 3} - m_Name: - m_EditorClassIdentifier: --- !u!114 &4505433718888639186 stripped MonoBehaviour: m_CorrespondingSourceObject: {fileID: 7942131790731640917, guid: 9887ca19e46b4d547b2ad40c47c756b9, type: 3} @@ -3573,17 +3189,6 @@ Transform: m_CorrespondingSourceObject: {fileID: 3447029125977450136, guid: 9887ca19e46b4d547b2ad40c47c756b9, type: 3} m_PrefabInstance: {fileID: 5818257988439845511} m_PrefabAsset: {fileID: 0} ---- !u!114 &9202099228209387433 stripped -MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 3389792897302281518, guid: 9887ca19e46b4d547b2ad40c47c756b9, type: 3} - m_PrefabInstance: {fileID: 5818257988439845511} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: d33b9b45f9124f6b8afdb52a10613db0, type: 3} - m_Name: - m_EditorClassIdentifier: --- !u!1001 &6171425951156898325 PrefabInstance: m_ObjectHideFlags: 0 diff --git a/Assets/Gothic-VR/Resources/VR/Prefabs/Player-Elements/BackPack.prefab b/Assets/Gothic-VR/Resources/VR/Prefabs/Player-Elements/BackPack.prefab index 07854330c..3c8964429 100644 --- a/Assets/Gothic-VR/Resources/VR/Prefabs/Player-Elements/BackPack.prefab +++ b/Assets/Gothic-VR/Resources/VR/Prefabs/Player-Elements/BackPack.prefab @@ -1244,6 +1244,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d33b9b45f9124f6b8afdb52a10613db0, type: 3} m_Name: m_EditorClassIdentifier: + _additionalSockets: [] --- !u!1 &8611331733936325895 GameObject: m_ObjectHideFlags: 0 @@ -1293,15 +1294,15 @@ PrefabInstance: m_Modifications: - target: {fileID: 6401121504383089494, guid: 4293d805a850fb84885c55f47b7299bd, type: 3} propertyPath: m_text - value: '' + value: objectReference: {fileID: 0} - target: {fileID: 6401121504383089494, guid: 4293d805a850fb84885c55f47b7299bd, type: 3} propertyPath: m_fontAsset - value: + value: objectReference: {fileID: 11400000, guid: ed34b05229166f3469c21b7208879736, type: 2} - target: {fileID: 6401121504383089494, guid: 4293d805a850fb84885c55f47b7299bd, type: 3} propertyPath: m_sharedMaterial - value: + value: objectReference: {fileID: 5152873236376385906, guid: ed34b05229166f3469c21b7208879736, type: 2} - target: {fileID: 6401121504383089494, guid: 4293d805a850fb84885c55f47b7299bd, type: 3} propertyPath: m_VerticalAlignment @@ -1476,54 +1477,6 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: -8.42 objectReference: {fileID: 0} - - target: {fileID: 4130146776124590184, guid: 9c8562e025362a940aa6d5640a2299a3, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.size - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4130146776124590184, guid: 9c8562e025362a940aa6d5640a2299a3, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.size - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4130146776124590184, guid: 9c8562e025362a940aa6d5640a2299a3, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 3389792897302281518} - - target: {fileID: 4130146776124590184, guid: 9c8562e025362a940aa6d5640a2299a3, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[0].m_CallState - value: 2 - objectReference: {fileID: 0} - - target: {fileID: 4130146776124590184, guid: 9c8562e025362a940aa6d5640a2299a3, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName - value: OnReleased - objectReference: {fileID: 0} - - target: {fileID: 4130146776124590184, guid: 9c8562e025362a940aa6d5640a2299a3, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 3389792897302281518} - - target: {fileID: 4130146776124590184, guid: 9c8562e025362a940aa6d5640a2299a3, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_CallState - value: 2 - objectReference: {fileID: 0} - - target: {fileID: 4130146776124590184, guid: 9c8562e025362a940aa6d5640a2299a3, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName - value: OnBeforeGrabbed - objectReference: {fileID: 0} - - target: {fileID: 4130146776124590184, guid: 9c8562e025362a940aa6d5640a2299a3, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName - value: Gothic.HVR.Components.VobContainer.HVRVobContainerSocketInventory, Assembly-CSharp - objectReference: {fileID: 0} - - target: {fileID: 4130146776124590184, guid: 9c8562e025362a940aa6d5640a2299a3, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName - value: Gothic.HVR.Components.VobContainer.HVRVobContainerSocketInventory, Assembly-CSharp - objectReference: {fileID: 0} - - target: {fileID: 4130146776124590184, guid: 9c8562e025362a940aa6d5640a2299a3, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName - value: UnityEngine.Object, UnityEngine - objectReference: {fileID: 0} - - target: {fileID: 4130146776124590184, guid: 9c8562e025362a940aa6d5640a2299a3, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName - value: UnityEngine.Object, UnityEngine - objectReference: {fileID: 0} - target: {fileID: 5745926728969230625, guid: 9c8562e025362a940aa6d5640a2299a3, type: 3} propertyPath: m_Name value: LargeInventorySlot (1) @@ -1535,13 +1488,33 @@ PrefabInstance: m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] - m_AddedComponents: [] + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 5745926728969230625, guid: 9c8562e025362a940aa6d5640a2299a3, type: 3} + insertIndex: -1 + addedObject: {fileID: 2684062889524706141} m_SourcePrefab: {fileID: 100100000, guid: 9c8562e025362a940aa6d5640a2299a3, type: 3} --- !u!4 &1092358407863461626 stripped Transform: m_CorrespondingSourceObject: {fileID: 279963425429311615, guid: 9c8562e025362a940aa6d5640a2299a3, type: 3} m_PrefabInstance: {fileID: 921680395576817285} m_PrefabAsset: {fileID: 0} +--- !u!1 &4861590189747613604 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 5745926728969230625, guid: 9c8562e025362a940aa6d5640a2299a3, type: 3} + m_PrefabInstance: {fileID: 921680395576817285} + m_PrefabAsset: {fileID: 0} +--- !u!114 &2684062889524706141 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4861590189747613604} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 50fce3b6fdf41d541a8cb5f194cfd30a, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Backends.Hvr.HvrSocketBridge --- !u!1001 &1005704614264749958 PrefabInstance: m_ObjectHideFlags: 0 @@ -1594,30 +1567,6 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 7245954016319570917} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 3389792897302281518} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[1].m_Target - value: - objectReference: {fileID: 7245954016319570917} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName - value: OnItemPutIntoBackpack - objectReference: {fileID: 0} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName - value: OnItemPutOutOfBackpack - objectReference: {fileID: 0} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 3389792897302281518} - target: {fileID: 5861164055357080340, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} propertyPath: m_Name value: BackpackInventorySlot (5) @@ -1632,6 +1581,11 @@ Transform: m_CorrespondingSourceObject: {fileID: 1157928709923595686, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} m_PrefabInstance: {fileID: 1005704614264749958} m_PrefabAsset: {fileID: 0} +--- !u!1 &6675445855591365778 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 5861164055357080340, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} + m_PrefabInstance: {fileID: 1005704614264749958} + m_PrefabAsset: {fileID: 0} --- !u!1001 &1389077964738786662 PrefabInstance: m_ObjectHideFlags: 0 @@ -1684,30 +1638,6 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 7245954016319570917} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 3389792897302281518} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[1].m_Target - value: - objectReference: {fileID: 7245954016319570917} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName - value: OnItemPutIntoBackpack - objectReference: {fileID: 0} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName - value: OnItemPutOutOfBackpack - objectReference: {fileID: 0} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 3389792897302281518} - target: {fileID: 5861164055357080340, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} propertyPath: m_Name value: BackpackInventorySlot (9) @@ -1722,6 +1652,11 @@ Transform: m_CorrespondingSourceObject: {fileID: 1157928709923595686, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} m_PrefabInstance: {fileID: 1389077964738786662} m_PrefabAsset: {fileID: 0} +--- !u!1 &4760857495613421170 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 5861164055357080340, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} + m_PrefabInstance: {fileID: 1389077964738786662} + m_PrefabAsset: {fileID: 0} --- !u!1001 &1530620310586974029 PrefabInstance: m_ObjectHideFlags: 0 @@ -1944,30 +1879,6 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 7245954016319570917} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 3389792897302281518} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[1].m_Target - value: - objectReference: {fileID: 7245954016319570917} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName - value: OnItemPutIntoBackpack - objectReference: {fileID: 0} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName - value: OnItemPutOutOfBackpack - objectReference: {fileID: 0} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 3389792897302281518} - target: {fileID: 5861164055357080340, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} propertyPath: m_Name value: BackpackInventorySlot (1) @@ -1982,6 +1893,11 @@ Transform: m_CorrespondingSourceObject: {fileID: 1157928709923595686, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} m_PrefabInstance: {fileID: 1687738458635627183} m_PrefabAsset: {fileID: 0} +--- !u!1 &5060643589338769851 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 5861164055357080340, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} + m_PrefabInstance: {fileID: 1687738458635627183} + m_PrefabAsset: {fileID: 0} --- !u!1001 &2058406356030869475 PrefabInstance: m_ObjectHideFlags: 0 @@ -2034,30 +1950,6 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 7245954016319570917} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 3389792897302281518} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[1].m_Target - value: - objectReference: {fileID: 7245954016319570917} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName - value: OnItemPutIntoBackpack - objectReference: {fileID: 0} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName - value: OnItemPutOutOfBackpack - objectReference: {fileID: 0} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 3389792897302281518} - target: {fileID: 5861164055357080340, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} propertyPath: m_Name value: BackpackInventorySlot (7) @@ -2072,6 +1964,11 @@ Transform: m_CorrespondingSourceObject: {fileID: 1157928709923595686, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} m_PrefabInstance: {fileID: 2058406356030869475} m_PrefabAsset: {fileID: 0} +--- !u!1 &5604698998649162999 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 5861164055357080340, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} + m_PrefabInstance: {fileID: 2058406356030869475} + m_PrefabAsset: {fileID: 0} --- !u!1001 &2426361580239670146 PrefabInstance: m_ObjectHideFlags: 0 @@ -2298,30 +2195,6 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 7245954016319570917} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 3389792897302281518} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[1].m_Target - value: - objectReference: {fileID: 7245954016319570917} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName - value: OnItemPutIntoBackpack - objectReference: {fileID: 0} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName - value: OnItemPutOutOfBackpack - objectReference: {fileID: 0} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 3389792897302281518} - target: {fileID: 5861164055357080340, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} propertyPath: m_Name value: BackpackInventorySlot (4) @@ -2336,6 +2209,11 @@ Transform: m_CorrespondingSourceObject: {fileID: 1157928709923595686, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} m_PrefabInstance: {fileID: 2803095436446461417} m_PrefabAsset: {fileID: 0} +--- !u!1 &8624835105962077949 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 5861164055357080340, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} + m_PrefabInstance: {fileID: 2803095436446461417} + m_PrefabAsset: {fileID: 0} --- !u!1001 &3540224607268887998 PrefabInstance: m_ObjectHideFlags: 0 @@ -2392,54 +2270,6 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: -8.42 objectReference: {fileID: 0} - - target: {fileID: 4130146776124590184, guid: 9c8562e025362a940aa6d5640a2299a3, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.size - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4130146776124590184, guid: 9c8562e025362a940aa6d5640a2299a3, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.size - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4130146776124590184, guid: 9c8562e025362a940aa6d5640a2299a3, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 3389792897302281518} - - target: {fileID: 4130146776124590184, guid: 9c8562e025362a940aa6d5640a2299a3, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[0].m_CallState - value: 2 - objectReference: {fileID: 0} - - target: {fileID: 4130146776124590184, guid: 9c8562e025362a940aa6d5640a2299a3, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName - value: OnReleased - objectReference: {fileID: 0} - - target: {fileID: 4130146776124590184, guid: 9c8562e025362a940aa6d5640a2299a3, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 3389792897302281518} - - target: {fileID: 4130146776124590184, guid: 9c8562e025362a940aa6d5640a2299a3, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_CallState - value: 2 - objectReference: {fileID: 0} - - target: {fileID: 4130146776124590184, guid: 9c8562e025362a940aa6d5640a2299a3, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName - value: OnBeforeGrabbed - objectReference: {fileID: 0} - - target: {fileID: 4130146776124590184, guid: 9c8562e025362a940aa6d5640a2299a3, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName - value: Gothic.HVR.Components.VobContainer.HVRVobContainerSocketInventory, Assembly-CSharp - objectReference: {fileID: 0} - - target: {fileID: 4130146776124590184, guid: 9c8562e025362a940aa6d5640a2299a3, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName - value: Gothic.HVR.Components.VobContainer.HVRVobContainerSocketInventory, Assembly-CSharp - objectReference: {fileID: 0} - - target: {fileID: 4130146776124590184, guid: 9c8562e025362a940aa6d5640a2299a3, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName - value: UnityEngine.Object, UnityEngine - objectReference: {fileID: 0} - - target: {fileID: 4130146776124590184, guid: 9c8562e025362a940aa6d5640a2299a3, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName - value: UnityEngine.Object, UnityEngine - objectReference: {fileID: 0} - target: {fileID: 5745926728969230625, guid: 9c8562e025362a940aa6d5640a2299a3, type: 3} propertyPath: m_Name value: LargeInventorySlot @@ -2451,13 +2281,33 @@ PrefabInstance: m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] - m_AddedComponents: [] + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 5745926728969230625, guid: 9c8562e025362a940aa6d5640a2299a3, type: 3} + insertIndex: -1 + addedObject: {fileID: 2341765446252910576} m_SourcePrefab: {fileID: 100100000, guid: 9c8562e025362a940aa6d5640a2299a3, type: 3} --- !u!4 &3657985873771433409 stripped Transform: m_CorrespondingSourceObject: {fileID: 279963425429311615, guid: 9c8562e025362a940aa6d5640a2299a3, type: 3} m_PrefabInstance: {fileID: 3540224607268887998} m_PrefabAsset: {fileID: 0} +--- !u!1 &9123385126480888991 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 5745926728969230625, guid: 9c8562e025362a940aa6d5640a2299a3, type: 3} + m_PrefabInstance: {fileID: 3540224607268887998} + m_PrefabAsset: {fileID: 0} +--- !u!114 &2341765446252910576 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9123385126480888991} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 50fce3b6fdf41d541a8cb5f194cfd30a, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Backends.Hvr.HvrSocketBridge --- !u!1001 &3809279864917086369 PrefabInstance: m_ObjectHideFlags: 0 @@ -2510,30 +2360,6 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 7245954016319570917} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 3389792897302281518} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[1].m_Target - value: - objectReference: {fileID: 7245954016319570917} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName - value: OnItemPutIntoBackpack - objectReference: {fileID: 0} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName - value: OnItemPutOutOfBackpack - objectReference: {fileID: 0} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 3389792897302281518} - target: {fileID: 5861164055357080340, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} propertyPath: m_Name value: BackpackInventorySlot (2) @@ -2548,6 +2374,11 @@ Transform: m_CorrespondingSourceObject: {fileID: 1157928709923595686, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} m_PrefabInstance: {fileID: 3809279864917086369} m_PrefabAsset: {fileID: 0} +--- !u!1 &7316746845000471477 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 5861164055357080340, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} + m_PrefabInstance: {fileID: 3809279864917086369} + m_PrefabAsset: {fileID: 0} --- !u!1001 &5194386894083015225 PrefabInstance: m_ObjectHideFlags: 0 @@ -2600,30 +2431,6 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 7245954016319570917} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 3389792897302281518} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[1].m_Target - value: - objectReference: {fileID: 7245954016319570917} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName - value: OnItemPutIntoBackpack - objectReference: {fileID: 0} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName - value: OnItemPutOutOfBackpack - objectReference: {fileID: 0} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 3389792897302281518} - target: {fileID: 5861164055357080340, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} propertyPath: m_Name value: BackpackInventorySlot (3) @@ -2633,6 +2440,11 @@ PrefabInstance: m_AddedGameObjects: [] m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} +--- !u!1 &1819774192277225773 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 5861164055357080340, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} + m_PrefabInstance: {fileID: 5194386894083015225} + m_PrefabAsset: {fileID: 0} --- !u!4 &6343286390695634847 stripped Transform: m_CorrespondingSourceObject: {fileID: 1157928709923595686, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} @@ -2732,6 +2544,15 @@ PrefabInstance: - targetCorrespondingSourceObject: {fileID: -2445633797789926738, guid: 6cb8512e2712dc24ab93173e96e1a2bf, type: 3} insertIndex: -1 addedObject: {fileID: 7245954016319570917} + - targetCorrespondingSourceObject: {fileID: -2445633797789926738, guid: 6cb8512e2712dc24ab93173e96e1a2bf, type: 3} + insertIndex: -1 + addedObject: {fileID: 9172675630291073396} + - targetCorrespondingSourceObject: {fileID: -2445633797789926738, guid: 6cb8512e2712dc24ab93173e96e1a2bf, type: 3} + insertIndex: -1 + addedObject: {fileID: 6751980293987059883} + - targetCorrespondingSourceObject: {fileID: -2445633797789926738, guid: 6cb8512e2712dc24ab93173e96e1a2bf, type: 3} + insertIndex: -1 + addedObject: {fileID: 7637540381203976400} m_SourcePrefab: {fileID: 100100000, guid: 6cb8512e2712dc24ab93173e96e1a2bf, type: 3} --- !u!1 &510075797823002552 stripped GameObject: @@ -2745,10 +2566,10 @@ Rigidbody: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 510075797823002552} - serializedVersion: 4 + serializedVersion: 5 m_Mass: 1 - m_Drag: 0 - m_AngularDrag: 0.05 + m_LinearDamping: 0 + m_AngularDamping: 0.05 m_CenterOfMass: {x: 0, y: 0, z: 0} m_InertiaTensor: {x: 1, y: 1, z: 1} m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} @@ -2984,7 +2805,54 @@ MonoBehaviour: m_EditorClassIdentifier: _categoryText: {fileID: 2564309041635058493} _pagerText: {fileID: 5783876815826470689} - _socketContainer: {fileID: 7942131790731640917} + _holsterSockets: [] + _inventorySockets: + - {fileID: 5060643589338769851} + - {fileID: 7316746845000471477} + - {fileID: 1819774192277225773} + - {fileID: 8624835105962077949} + - {fileID: 6675445855591365778} + - {fileID: 1134907965030801990} + - {fileID: 5604698998649162999} + - {fileID: 922373524700368431} + - {fileID: 4760857495613421170} + - {fileID: 3572143840313904494} +--- !u!114 &9172675630291073396 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 510075797823002552} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5165ad186aed3fb408c5d43079b20d34, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Components.VrInteractable +--- !u!114 &6751980293987059883 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 510075797823002552} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 594f5e7857d0629419c1bef807639a86, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Backends.Hvr.HvrInteractableBridge +--- !u!114 &7637540381203976400 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 510075797823002552} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3698197d5ce58d542a61ce69122e3160, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Backends.Hvr.HvrSocketContainerBridge --- !u!4 &3447029125977450136 stripped Transform: m_CorrespondingSourceObject: {fileID: 8560556203703700366, guid: 6cb8512e2712dc24ab93173e96e1a2bf, type: 3} @@ -3047,30 +2915,6 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 7245954016319570917} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 3389792897302281518} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[1].m_Target - value: - objectReference: {fileID: 7245954016319570917} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName - value: OnItemPutIntoBackpack - objectReference: {fileID: 0} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName - value: OnItemPutOutOfBackpack - objectReference: {fileID: 0} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 3389792897302281518} - target: {fileID: 5861164055357080340, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} propertyPath: m_Name value: BackpackInventorySlot (8) @@ -3080,6 +2924,11 @@ PrefabInstance: m_AddedGameObjects: [] m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} +--- !u!1 &922373524700368431 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 5861164055357080340, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} + m_PrefabInstance: {fileID: 6745236048955395387} + m_PrefabAsset: {fileID: 0} --- !u!4 &5587329364365519005 stripped Transform: m_CorrespondingSourceObject: {fileID: 1157928709923595686, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} @@ -3137,30 +2986,6 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 7245954016319570917} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 3389792897302281518} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[1].m_Target - value: - objectReference: {fileID: 7245954016319570917} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName - value: OnItemPutIntoBackpack - objectReference: {fileID: 0} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName - value: OnItemPutOutOfBackpack - objectReference: {fileID: 0} - - target: {fileID: 3711332657821201227, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 3389792897302281518} - target: {fileID: 5861164055357080340, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} propertyPath: m_Name value: BackpackInventorySlot (6) @@ -3170,6 +2995,11 @@ PrefabInstance: m_AddedGameObjects: [] m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} +--- !u!1 &1134907965030801990 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 5861164055357080340, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} + m_PrefabInstance: {fileID: 6815926870810616146} + m_PrefabAsset: {fileID: 0} --- !u!4 &5658424827838203124 stripped Transform: m_CorrespondingSourceObject: {fileID: 1157928709923595686, guid: 2dd29fe4a7e819740af535267b7cc113, type: 3} @@ -3243,46 +3073,6 @@ PrefabInstance: propertyPath: Size value: 0.3 objectReference: {fileID: 0} - - target: {fileID: 3711332657821201227, guid: 8301813fbd70d3b47b2ab9ec26c3615e, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 7245954016319570917} - - target: {fileID: 3711332657821201227, guid: 8301813fbd70d3b47b2ab9ec26c3615e, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 3389792897302281518} - - target: {fileID: 3711332657821201227, guid: 8301813fbd70d3b47b2ab9ec26c3615e, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[1].m_Target - value: - objectReference: {fileID: 7245954016319570917} - - target: {fileID: 3711332657821201227, guid: 8301813fbd70d3b47b2ab9ec26c3615e, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName - value: OnItemPutIntoBackpack - objectReference: {fileID: 0} - - target: {fileID: 3711332657821201227, guid: 8301813fbd70d3b47b2ab9ec26c3615e, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName - value: OnReleased - objectReference: {fileID: 0} - - target: {fileID: 3711332657821201227, guid: 8301813fbd70d3b47b2ab9ec26c3615e, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName - value: OnItemPutOutOfBackpack - objectReference: {fileID: 0} - - target: {fileID: 3711332657821201227, guid: 8301813fbd70d3b47b2ab9ec26c3615e, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 3389792897302281518} - - target: {fileID: 3711332657821201227, guid: 8301813fbd70d3b47b2ab9ec26c3615e, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName - value: OnBeforeGrabbed - objectReference: {fileID: 0} - - target: {fileID: 3711332657821201227, guid: 8301813fbd70d3b47b2ab9ec26c3615e, type: 3} - propertyPath: Released.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName - value: Gothic.VR.Adapters.Vob.Container.VRVobContainerSocketInventory, Gothic.VR - objectReference: {fileID: 0} - - target: {fileID: 3711332657821201227, guid: 8301813fbd70d3b47b2ab9ec26c3615e, type: 3} - propertyPath: BeforeGrabbed.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName - value: Gothic.VR.Adapters.Vob.Container.VRVobContainerSocketInventory, Gothic.VR - objectReference: {fileID: 0} - target: {fileID: 4434190707277561806, guid: 8301813fbd70d3b47b2ab9ec26c3615e, type: 3} propertyPath: Target value: @@ -3333,6 +3123,11 @@ Transform: m_CorrespondingSourceObject: {fileID: 5274205726842812995, guid: 8301813fbd70d3b47b2ab9ec26c3615e, type: 3} m_PrefabInstance: {fileID: 6973195385822662266} m_PrefabAsset: {fileID: 0} +--- !u!1 &3572143840313904494 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 5861164055357080340, guid: 8301813fbd70d3b47b2ab9ec26c3615e, type: 3} + m_PrefabInstance: {fileID: 6973195385822662266} + m_PrefabAsset: {fileID: 0} --- !u!4 &8130138916144720860 stripped Transform: m_CorrespondingSourceObject: {fileID: 1157928709923595686, guid: 8301813fbd70d3b47b2ab9ec26c3615e, type: 3} @@ -3692,7 +3487,7 @@ PrefabInstance: m_Modifications: - target: {fileID: 6401121504383089494, guid: 4293d805a850fb84885c55f47b7299bd, type: 3} propertyPath: m_text - value: '' + value: objectReference: {fileID: 0} - target: {fileID: 6401121504383089494, guid: 4293d805a850fb84885c55f47b7299bd, type: 3} propertyPath: m_fontSize diff --git a/Assets/Gothic-VR/Resources/VR/Prefabs/Player-Elements/BackPack/VRBackpackInventorySlot.prefab b/Assets/Gothic-VR/Resources/VR/Prefabs/Player-Elements/BackPack/VRBackpackInventorySlot.prefab index 566d7b1bf..6b4fee0f5 100644 --- a/Assets/Gothic-VR/Resources/VR/Prefabs/Player-Elements/BackPack/VRBackpackInventorySlot.prefab +++ b/Assets/Gothic-VR/Resources/VR/Prefabs/Player-Elements/BackPack/VRBackpackInventorySlot.prefab @@ -14,6 +14,7 @@ GameObject: - component: {fileID: 4434190707277561806} - component: {fileID: 7810595717036477131} - component: {fileID: 8782956222347397959} + - component: {fileID: 1881403388789157283} m_Layer: 0 m_Name: VRBackpackInventorySlot m_TagString: Untagged @@ -51,63 +52,13 @@ MonoBehaviour: m_EditorClassIdentifier: BeforeGrabbed: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 0} - m_TargetAssemblyTypeName: Gothic.HVR.Components.VobContainer.HVRVobContainerSocketInventory, - Assembly-CSharp - m_MethodName: OnBeforeGrabbed - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] Grabbed: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 0} - m_TargetAssemblyTypeName: Gothic.VR.Adapters.Player.VRBackpack, Gothic.VR - m_MethodName: OnItemPutOutOfBackpack - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] Released: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 0} - m_TargetAssemblyTypeName: Gothic.HVR.Components.VobContainer.HVRVobContainerSocketInventory, - Assembly-CSharp - m_MethodName: OnReleased - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 - - m_Target: {fileID: 0} - m_TargetAssemblyTypeName: Gothic.VR.Adapters.Player.VRBackpack, Gothic.VR - m_MethodName: OnItemPutIntoBackpack - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] BeforeHoverEnter: m_PersistentCalls: m_Calls: [] @@ -219,6 +170,18 @@ MonoBehaviour: Tags: {fileID: 11400000, guid: 836908d62a0d2e8489d7e21e7f774964, type: 2} _data: 3 Any: 1 +--- !u!114 &1881403388789157283 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5861164055357080340} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 50fce3b6fdf41d541a8cb5f194cfd30a, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Backends.Hvr.HvrSocketBridge --- !u!1 &7098095399602562181 GameObject: m_ObjectHideFlags: 0 @@ -280,6 +243,8 @@ MeshRenderer: m_RayTracingAccelStructBuildFlagsOverride: 0 m_RayTracingAccelStructBuildFlags: 1 m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -301,7 +266,9 @@ MeshRenderer: 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_AdditionalVertexStreams: {fileID: 0} diff --git a/Assets/Gothic-VR/Resources/VR/Prefabs/Player-Elements/BackPack/VRBackpackLargeInventorySlot.prefab b/Assets/Gothic-VR/Resources/VR/Prefabs/Player-Elements/BackPack/VRBackpackLargeInventorySlot.prefab index e1815ce5c..24dd48465 100644 --- a/Assets/Gothic-VR/Resources/VR/Prefabs/Player-Elements/BackPack/VRBackpackLargeInventorySlot.prefab +++ b/Assets/Gothic-VR/Resources/VR/Prefabs/Player-Elements/BackPack/VRBackpackLargeInventorySlot.prefab @@ -14,6 +14,7 @@ GameObject: - component: {fileID: 1109714354293663205} - component: {fileID: 4434190707277561806} - component: {fileID: 8782956222347397959} + - component: {fileID: 3068390016136051502} m_Layer: 0 m_Name: VRBackpackLargeInventorySlot m_TagString: Untagged @@ -51,63 +52,13 @@ MonoBehaviour: m_EditorClassIdentifier: BeforeGrabbed: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 0} - m_TargetAssemblyTypeName: Gothic.HVR.Components.VobContainer.HVRVobContainerSocketInventory, - Assembly-CSharp - m_MethodName: OnBeforeGrabbed - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] Grabbed: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 0} - m_TargetAssemblyTypeName: Gothic.VR.Adapters.Player.VRBackpack, Gothic.VR - m_MethodName: OnItemPutOutOfBackpack - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] Released: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 0} - m_TargetAssemblyTypeName: Gothic.HVR.Components.VobContainer.HVRVobContainerSocketInventory, - Assembly-CSharp - m_MethodName: OnReleased - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 - - m_Target: {fileID: 0} - m_TargetAssemblyTypeName: Gothic.VR.Adapters.Player.VRBackpack, Gothic.VR - m_MethodName: OnItemPutIntoBackpack - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] BeforeHoverEnter: m_PersistentCalls: m_Calls: [] @@ -119,7 +70,6 @@ MonoBehaviour: m_Calls: [] _grabBag: {fileID: 0} GrabBags: [] - _allowGrabbing: 0 GrabControl: 0 GrabDetectionType: 1 CheckHandOverlap: 0 @@ -220,6 +170,18 @@ MonoBehaviour: Tags: {fileID: 11400000, guid: 836908d62a0d2e8489d7e21e7f774964, type: 2} _data: 3 Any: 1 +--- !u!114 &3068390016136051502 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5861164055357080340} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 50fce3b6fdf41d541a8cb5f194cfd30a, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Backends.Hvr.HvrSocketBridge --- !u!1001 &3062234451954866645 PrefabInstance: m_ObjectHideFlags: 0 diff --git a/Assets/Gothic-VR/Resources/VR/Prefabs/Vobs/oCItem.prefab b/Assets/Gothic-VR/Resources/VR/Prefabs/Vobs/oCItem.prefab index b701fdb9e..ccbf13ffa 100644 --- a/Assets/Gothic-VR/Resources/VR/Prefabs/Vobs/oCItem.prefab +++ b/Assets/Gothic-VR/Resources/VR/Prefabs/Vobs/oCItem.prefab @@ -16,6 +16,8 @@ GameObject: - component: {fileID: 8543334853728962911} - component: {fileID: 8461469363836242350} - component: {fileID: 2018021949967966991} + - component: {fileID: 5746501746354695612} + - component: {fileID: 6145980801324581266} m_Layer: 6 m_Name: oCItem m_TagString: GothicVob @@ -46,10 +48,10 @@ Rigidbody: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 6503575194566409312} - serializedVersion: 4 + serializedVersion: 5 m_Mass: 2.5 - m_Drag: 0 - m_AngularDrag: 0.05 + m_LinearDamping: 0 + m_AngularDamping: 0.05 m_CenterOfMass: {x: 0, y: 0, z: 0} m_InertiaTensor: {x: 1, y: 1, z: 1} m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} @@ -166,64 +168,16 @@ MonoBehaviour: m_Calls: [] Grabbed: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 8543334853728962911} - m_TargetAssemblyTypeName: Gothic.HVR.Components.HVROCItem, Assembly-CSharp - m_MethodName: OnGrabbed - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] Released: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 8543334853728962911} - m_TargetAssemblyTypeName: Gothic.HVR.Components.HVRoCItem, Assembly-CSharp - m_MethodName: OnReleased - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] HoverEnter: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 6759220176799969513} - m_TargetAssemblyTypeName: GVR.HVR.Components.HVRFocus, Assembly-CSharp - m_MethodName: OnHoverEnter - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] HoverExit: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 6759220176799969513} - m_TargetAssemblyTypeName: GVR.HVR.Components.HVRFocus, Assembly-CSharp - m_MethodName: OnHoverExit - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] Collided: m_PersistentCalls: m_Calls: [] @@ -309,6 +263,30 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: _injectionStrategy: 2 +--- !u!114 &5746501746354695612 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6503575194566409312} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5165ad186aed3fb408c5d43079b20d34, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Components.VrInteractable +--- !u!114 &6145980801324581266 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6503575194566409312} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 594f5e7857d0629419c1bef807639a86, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Backends.Hvr.HvrInteractableBridge --- !u!1001 &2283517946604736509 PrefabInstance: m_ObjectHideFlags: 0 diff --git a/Assets/Gothic-VR/Resources/VR/Prefabs/Vobs/oCItem/LockPick.prefab b/Assets/Gothic-VR/Resources/VR/Prefabs/Vobs/oCItem/LockPick.prefab index 8b50348a1..321b61843 100644 --- a/Assets/Gothic-VR/Resources/VR/Prefabs/Vobs/oCItem/LockPick.prefab +++ b/Assets/Gothic-VR/Resources/VR/Prefabs/Vobs/oCItem/LockPick.prefab @@ -161,9 +161,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 5b286a6d3f574029ae48428e93591d28, type: 3} m_Name: m_EditorClassIdentifier: - IsSocketed: 0 IsInsideLock: 0 - ActiveDoorLock: {fileID: 0} + ActiveContainerDoorPicking: {fileID: 0} HoldingHand: {fileID: 0} --- !u!4 &6888142504213485964 stripped Transform: diff --git a/Assets/Gothic-VR/Resources/VR/Prefabs/Vobs/oCMobBed.prefab b/Assets/Gothic-VR/Resources/VR/Prefabs/Vobs/oCMobBed.prefab index e05e3d41e..26c42099d 100644 --- a/Assets/Gothic-VR/Resources/VR/Prefabs/Vobs/oCMobBed.prefab +++ b/Assets/Gothic-VR/Resources/VR/Prefabs/Vobs/oCMobBed.prefab @@ -13,6 +13,8 @@ GameObject: - component: {fileID: 2854363553026066547} - component: {fileID: 6907302684280751333} - component: {fileID: 2225125317086924068} + - component: {fileID: 6622844009418538601} + - component: {fileID: 2985694541242234038} m_Layer: 6 m_Name: BIP01.*|ZM.* m_TagString: Untagged @@ -152,34 +154,10 @@ MonoBehaviour: m_Calls: [] HoverEnter: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 2854363553026066547} - m_TargetAssemblyTypeName: GVR.HVR.Components.HVRFocus, Assembly-CSharp - m_MethodName: OnHoverEnter - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] HoverExit: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 2854363553026066547} - m_TargetAssemblyTypeName: GVR.HVR.Components.HVRFocus, Assembly-CSharp - m_MethodName: OnHoverExit - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] Collided: m_PersistentCalls: m_Calls: [] @@ -224,6 +202,30 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: dc7b9870e5ee6804aa346c39e83f17c7, type: 3} m_Name: m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Adapters.Vob.VRMobInteraction +--- !u!114 &6622844009418538601 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5926234300762413270} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5165ad186aed3fb408c5d43079b20d34, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Components.VrInteractable +--- !u!114 &2985694541242234038 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5926234300762413270} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 594f5e7857d0629419c1bef807639a86, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Backends.Hvr.HvrInteractableBridge --- !u!1 &6503575194566409312 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Gothic-VR/Resources/VR/Prefabs/Vobs/oCMobContainer.prefab b/Assets/Gothic-VR/Resources/VR/Prefabs/Vobs/oCMobContainer.prefab index d27fbccbc..2592d8fd0 100644 --- a/Assets/Gothic-VR/Resources/VR/Prefabs/Vobs/oCMobContainer.prefab +++ b/Assets/Gothic-VR/Resources/VR/Prefabs/Vobs/oCMobContainer.prefab @@ -14,6 +14,7 @@ GameObject: - component: {fileID: 3492144785080063237} - component: {fileID: 7889487273161906977} - component: {fileID: 7785860572896069705} + - component: {fileID: 1468309271852763067} m_Layer: 0 m_Name: ItemSocket (1) m_TagString: Untagged @@ -51,39 +52,13 @@ MonoBehaviour: m_EditorClassIdentifier: BeforeGrabbed: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 2596048974797699402} - m_TargetAssemblyTypeName: Gothic.VR.Components.VobContainer.VRVobContainerSocketInventory, - Gothic.VR - m_MethodName: OnBeforeGrabbed - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] Grabbed: m_PersistentCalls: m_Calls: [] Released: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 2596048974797699402} - m_TargetAssemblyTypeName: Gothic.VR.Components.VobContainer.VRVobContainerSocketInventory, - Gothic.VR - m_MethodName: OnReleased - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] BeforeHoverEnter: m_PersistentCalls: m_Calls: [] @@ -95,7 +70,6 @@ MonoBehaviour: m_Calls: [] _grabBag: {fileID: 0} GrabBags: [] - _allowGrabbing: 0 GrabControl: 0 GrabDetectionType: 1 CheckHandOverlap: 0 @@ -195,6 +169,18 @@ MonoBehaviour: Tags: {fileID: 11400000, guid: 836908d62a0d2e8489d7e21e7f774964, type: 2} _data: 3 Any: 1 +--- !u!114 &1468309271852763067 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 251161015644863541} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 50fce3b6fdf41d541a8cb5f194cfd30a, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Backends.Hvr.HvrSocketBridge --- !u!1 &1058267453060700974 GameObject: m_ObjectHideFlags: 0 @@ -209,6 +195,7 @@ GameObject: - component: {fileID: 6214475728348187998} - component: {fileID: 8532409929422760468} - component: {fileID: 7916747858208428323} + - component: {fileID: 521888360392017761} m_Layer: 0 m_Name: ItemSocket (11) m_TagString: Untagged @@ -246,39 +233,13 @@ MonoBehaviour: m_EditorClassIdentifier: BeforeGrabbed: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 2596048974797699402} - m_TargetAssemblyTypeName: Gothic.VR.Components.VobContainer.VRVobContainerSocketInventory, - Gothic.VR - m_MethodName: OnBeforeGrabbed - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] Grabbed: m_PersistentCalls: m_Calls: [] Released: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 2596048974797699402} - m_TargetAssemblyTypeName: Gothic.VR.Components.VobContainer.VRVobContainerSocketInventory, - Gothic.VR - m_MethodName: OnReleased - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] BeforeHoverEnter: m_PersistentCalls: m_Calls: [] @@ -290,7 +251,6 @@ MonoBehaviour: m_Calls: [] _grabBag: {fileID: 0} GrabBags: [] - _allowGrabbing: 0 GrabControl: 0 GrabDetectionType: 1 CheckHandOverlap: 0 @@ -390,6 +350,18 @@ MonoBehaviour: Tags: {fileID: 11400000, guid: 836908d62a0d2e8489d7e21e7f774964, type: 2} _data: 3 Any: 1 +--- !u!114 &521888360392017761 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1058267453060700974} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 50fce3b6fdf41d541a8cb5f194cfd30a, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Backends.Hvr.HvrSocketBridge --- !u!1 &1378983584142208125 GameObject: m_ObjectHideFlags: 0 @@ -404,6 +376,7 @@ GameObject: - component: {fileID: 1875918564020284620} - component: {fileID: 9153324367550496876} - component: {fileID: 5755579173600781048} + - component: {fileID: 8487832477624126045} m_Layer: 0 m_Name: ItemSocket (5) m_TagString: Untagged @@ -441,39 +414,13 @@ MonoBehaviour: m_EditorClassIdentifier: BeforeGrabbed: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 2596048974797699402} - m_TargetAssemblyTypeName: Gothic.VR.Components.VobContainer.VRVobContainerSocketInventory, - Gothic.VR - m_MethodName: OnBeforeGrabbed - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] Grabbed: m_PersistentCalls: m_Calls: [] Released: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 2596048974797699402} - m_TargetAssemblyTypeName: Gothic.VR.Components.VobContainer.VRVobContainerSocketInventory, - Gothic.VR - m_MethodName: OnReleased - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] BeforeHoverEnter: m_PersistentCalls: m_Calls: [] @@ -485,7 +432,6 @@ MonoBehaviour: m_Calls: [] _grabBag: {fileID: 0} GrabBags: [] - _allowGrabbing: 0 GrabControl: 0 GrabDetectionType: 1 CheckHandOverlap: 0 @@ -585,6 +531,18 @@ MonoBehaviour: Tags: {fileID: 11400000, guid: 836908d62a0d2e8489d7e21e7f774964, type: 2} _data: 3 Any: 1 +--- !u!114 &8487832477624126045 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1378983584142208125} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 50fce3b6fdf41d541a8cb5f194cfd30a, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Backends.Hvr.HvrSocketBridge --- !u!1 &1404770959867932707 GameObject: m_ObjectHideFlags: 0 @@ -646,6 +604,8 @@ MeshRenderer: m_RayTracingAccelStructBuildFlagsOverride: 0 m_RayTracingAccelStructBuildFlags: 1 m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -667,9 +627,11 @@ MeshRenderer: 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_AdditionalVertexStreams: {fileID: 0} --- !u!1 &2214792497711643535 GameObject: @@ -732,6 +694,8 @@ MeshRenderer: m_RayTracingAccelStructBuildFlagsOverride: 0 m_RayTracingAccelStructBuildFlags: 1 m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -753,9 +717,11 @@ MeshRenderer: 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_AdditionalVertexStreams: {fileID: 0} --- !u!1 &2987689210569271698 GameObject: @@ -837,7 +803,6 @@ MonoBehaviour: m_EditorClassIdentifier: _rootGO: {fileID: 6503575194566409312} _audioSource: {fileID: 1934416043258242669} - _hvrPhysicsDoor: {fileID: 6797639264981372780} --- !u!135 &1304255910539477860 SphereCollider: m_ObjectHideFlags: 0 @@ -870,6 +835,7 @@ GameObject: - component: {fileID: 7540743326042314200} - component: {fileID: 923689649037191229} - component: {fileID: 2596048974797699402} + - component: {fileID: 4022459671801958678} m_Layer: 0 m_Name: Inventory m_TagString: Untagged @@ -943,6 +909,19 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d33b9b45f9124f6b8afdb52a10613db0, type: 3} m_Name: m_EditorClassIdentifier: + _additionalSockets: [] +--- !u!114 &4022459671801958678 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3405583761693813258} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3698197d5ce58d542a61ce69122e3160, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Backends.Hvr.HvrSocketContainerBridge --- !u!1 &3425223447465731592 GameObject: m_ObjectHideFlags: 0 @@ -1004,6 +983,8 @@ MeshRenderer: m_RayTracingAccelStructBuildFlagsOverride: 0 m_RayTracingAccelStructBuildFlags: 1 m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -1025,9 +1006,11 @@ MeshRenderer: 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_AdditionalVertexStreams: {fileID: 0} --- !u!1 &3676950170103165385 GameObject: @@ -1043,6 +1026,7 @@ GameObject: - component: {fileID: 6457455381913810790} - component: {fileID: 4667297139685793446} - component: {fileID: 1904934727426696998} + - component: {fileID: 4386314002942822306} m_Layer: 0 m_Name: ItemSocket (4) m_TagString: Untagged @@ -1080,39 +1064,13 @@ MonoBehaviour: m_EditorClassIdentifier: BeforeGrabbed: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 2596048974797699402} - m_TargetAssemblyTypeName: Gothic.VR.Components.VobContainer.VRVobContainerSocketInventory, - Gothic.VR - m_MethodName: OnBeforeGrabbed - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] Grabbed: m_PersistentCalls: m_Calls: [] Released: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 2596048974797699402} - m_TargetAssemblyTypeName: Gothic.VR.Components.VobContainer.VRVobContainerSocketInventory, - Gothic.VR - m_MethodName: OnReleased - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] BeforeHoverEnter: m_PersistentCalls: m_Calls: [] @@ -1124,7 +1082,6 @@ MonoBehaviour: m_Calls: [] _grabBag: {fileID: 0} GrabBags: [] - _allowGrabbing: 0 GrabControl: 0 GrabDetectionType: 1 CheckHandOverlap: 0 @@ -1224,6 +1181,18 @@ MonoBehaviour: Tags: {fileID: 11400000, guid: 836908d62a0d2e8489d7e21e7f774964, type: 2} _data: 3 Any: 1 +--- !u!114 &4386314002942822306 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3676950170103165385} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 50fce3b6fdf41d541a8cb5f194cfd30a, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Backends.Hvr.HvrSocketBridge --- !u!1 &3808700244132799788 GameObject: m_ObjectHideFlags: 0 @@ -1238,6 +1207,7 @@ GameObject: - component: {fileID: 2559447240399077539} - component: {fileID: 2099805584684839997} - component: {fileID: 5825525148917267618} + - component: {fileID: 5243031492779952397} m_Layer: 0 m_Name: ItemSocket (10) m_TagString: Untagged @@ -1275,39 +1245,13 @@ MonoBehaviour: m_EditorClassIdentifier: BeforeGrabbed: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 2596048974797699402} - m_TargetAssemblyTypeName: Gothic.VR.Components.VobContainer.VRVobContainerSocketInventory, - Gothic.VR - m_MethodName: OnBeforeGrabbed - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] Grabbed: m_PersistentCalls: m_Calls: [] Released: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 2596048974797699402} - m_TargetAssemblyTypeName: Gothic.VR.Components.VobContainer.VRVobContainerSocketInventory, - Gothic.VR - m_MethodName: OnReleased - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] BeforeHoverEnter: m_PersistentCalls: m_Calls: [] @@ -1319,7 +1263,6 @@ MonoBehaviour: m_Calls: [] _grabBag: {fileID: 0} GrabBags: [] - _allowGrabbing: 0 GrabControl: 0 GrabDetectionType: 1 CheckHandOverlap: 0 @@ -1419,6 +1362,18 @@ MonoBehaviour: Tags: {fileID: 11400000, guid: 836908d62a0d2e8489d7e21e7f774964, type: 2} _data: 3 Any: 1 +--- !u!114 &5243031492779952397 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3808700244132799788} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 50fce3b6fdf41d541a8cb5f194cfd30a, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Backends.Hvr.HvrSocketBridge --- !u!1 &3951947908768828885 GameObject: m_ObjectHideFlags: 0 @@ -1480,6 +1435,8 @@ MeshRenderer: m_RayTracingAccelStructBuildFlagsOverride: 0 m_RayTracingAccelStructBuildFlags: 1 m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -1501,9 +1458,11 @@ MeshRenderer: 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_AdditionalVertexStreams: {fileID: 0} --- !u!1 &4098042481361422127 GameObject: @@ -1566,6 +1525,8 @@ MeshRenderer: m_RayTracingAccelStructBuildFlagsOverride: 0 m_RayTracingAccelStructBuildFlags: 1 m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -1587,9 +1548,11 @@ MeshRenderer: 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_AdditionalVertexStreams: {fileID: 0} --- !u!1 &4112695746748433750 GameObject: @@ -1652,6 +1615,8 @@ MeshRenderer: m_RayTracingAccelStructBuildFlagsOverride: 0 m_RayTracingAccelStructBuildFlags: 1 m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -1673,9 +1638,11 @@ MeshRenderer: 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_AdditionalVertexStreams: {fileID: 0} --- !u!1 &4312441289917667731 GameObject: @@ -1820,6 +1787,7 @@ GameObject: - component: {fileID: 5785087856397484637} - component: {fileID: 2720868678405414166} - component: {fileID: 2783188317653191907} + - component: {fileID: 4313482169820223075} m_Layer: 0 m_Name: ItemSocket (6) m_TagString: Untagged @@ -1857,39 +1825,13 @@ MonoBehaviour: m_EditorClassIdentifier: BeforeGrabbed: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 2596048974797699402} - m_TargetAssemblyTypeName: Gothic.VR.Components.VobContainer.VRVobContainerSocketInventory, - Gothic.VR - m_MethodName: OnBeforeGrabbed - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] Grabbed: m_PersistentCalls: m_Calls: [] Released: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 2596048974797699402} - m_TargetAssemblyTypeName: Gothic.VR.Components.VobContainer.VRVobContainerSocketInventory, - Gothic.VR - m_MethodName: OnReleased - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] BeforeHoverEnter: m_PersistentCalls: m_Calls: [] @@ -1901,7 +1843,6 @@ MonoBehaviour: m_Calls: [] _grabBag: {fileID: 0} GrabBags: [] - _allowGrabbing: 0 GrabControl: 0 GrabDetectionType: 1 CheckHandOverlap: 0 @@ -2001,6 +1942,18 @@ MonoBehaviour: Tags: {fileID: 11400000, guid: 836908d62a0d2e8489d7e21e7f774964, type: 2} _data: 3 Any: 1 +--- !u!114 &4313482169820223075 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4544068122292998800} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 50fce3b6fdf41d541a8cb5f194cfd30a, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Backends.Hvr.HvrSocketBridge --- !u!1 &5161994242912671296 GameObject: m_ObjectHideFlags: 0 @@ -2062,6 +2015,8 @@ MeshRenderer: m_RayTracingAccelStructBuildFlagsOverride: 0 m_RayTracingAccelStructBuildFlags: 1 m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -2083,9 +2038,11 @@ MeshRenderer: 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_AdditionalVertexStreams: {fileID: 0} --- !u!1 &5871940868660505720 GameObject: @@ -2148,6 +2105,8 @@ MeshRenderer: m_RayTracingAccelStructBuildFlagsOverride: 0 m_RayTracingAccelStructBuildFlags: 1 m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -2169,9 +2128,11 @@ MeshRenderer: 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_AdditionalVertexStreams: {fileID: 0} --- !u!1 &5980433150175133251 GameObject: @@ -2188,6 +2149,9 @@ GameObject: - component: {fileID: 7136319683539270999} - component: {fileID: 6573836035492029965} - component: {fileID: 6797639264981372780} + - component: {fileID: 172510743831141755} + - component: {fileID: 8269181727875358990} + - component: {fileID: 1469359342129423611} m_Layer: 11 m_Name: BIP01 CHEST_.*_1 m_TagString: Untagged @@ -2218,10 +2182,10 @@ Rigidbody: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 5980433150175133251} - serializedVersion: 4 + serializedVersion: 5 m_Mass: 1 - m_Drag: 0 - m_AngularDrag: 0.05 + m_LinearDamping: 0 + m_AngularDamping: 0.05 m_CenterOfMass: {x: 0, y: 0, z: 0} m_InertiaTensor: {x: 1, y: 1, z: 1} m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} @@ -2354,34 +2318,10 @@ MonoBehaviour: m_Calls: [] HoverEnter: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 5337214664733562970} - m_TargetAssemblyTypeName: GVR.HVR.Components.HVRFocus, Assembly-CSharp - m_MethodName: OnHoverEnter - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] HoverExit: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 5337214664733562970} - m_TargetAssemblyTypeName: GVR.HVR.Components.HVRFocus, Assembly-CSharp - m_MethodName: OnHoverExit - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] Collided: m_PersistentCalls: m_Calls: [] @@ -2491,6 +2431,42 @@ MonoBehaviour: _rootGo: {fileID: 6503575194566409312} _socketContainer: {fileID: 923689649037191229} _collectorCollider: {fileID: 9145350332021062103} +--- !u!114 &172510743831141755 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5980433150175133251} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5165ad186aed3fb408c5d43079b20d34, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Components.VrInteractable +--- !u!114 &8269181727875358990 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5980433150175133251} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 594f5e7857d0629419c1bef807639a86, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Backends.Hvr.HvrInteractableBridge +--- !u!114 &1469359342129423611 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5980433150175133251} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9fca5660b7d87044b9f6309422813386, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Backends.Hvr.HvrHingeBridge --- !u!1 &6389233531767616918 GameObject: m_ObjectHideFlags: 0 @@ -2552,6 +2528,8 @@ MeshRenderer: m_RayTracingAccelStructBuildFlagsOverride: 0 m_RayTracingAccelStructBuildFlags: 1 m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -2573,9 +2551,11 @@ MeshRenderer: 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_AdditionalVertexStreams: {fileID: 0} --- !u!1 &6503575194566409312 GameObject: @@ -2699,6 +2679,8 @@ MeshRenderer: m_RayTracingAccelStructBuildFlagsOverride: 0 m_RayTracingAccelStructBuildFlags: 1 m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -2720,9 +2702,11 @@ MeshRenderer: 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_AdditionalVertexStreams: {fileID: 0} --- !u!1 &6719234714038604469 GameObject: @@ -2738,6 +2722,7 @@ GameObject: - component: {fileID: 158729719686616005} - component: {fileID: 7916741380795831998} - component: {fileID: 5298672618290999715} + - component: {fileID: 7297648640871248928} m_Layer: 0 m_Name: ItemSocket (0) m_TagString: Untagged @@ -2775,39 +2760,13 @@ MonoBehaviour: m_EditorClassIdentifier: BeforeGrabbed: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 2596048974797699402} - m_TargetAssemblyTypeName: Gothic.VR.Components.VobContainer.VRVobContainerSocketInventory, - Gothic.VR - m_MethodName: OnBeforeGrabbed - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] Grabbed: m_PersistentCalls: m_Calls: [] Released: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 2596048974797699402} - m_TargetAssemblyTypeName: Gothic.VR.Components.VobContainer.VRVobContainerSocketInventory, - Gothic.VR - m_MethodName: OnReleased - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] BeforeHoverEnter: m_PersistentCalls: m_Calls: [] @@ -2819,7 +2778,6 @@ MonoBehaviour: m_Calls: [] _grabBag: {fileID: 0} GrabBags: [] - _allowGrabbing: 0 GrabControl: 0 GrabDetectionType: 1 CheckHandOverlap: 0 @@ -2919,6 +2877,18 @@ MonoBehaviour: Tags: {fileID: 11400000, guid: 836908d62a0d2e8489d7e21e7f774964, type: 2} _data: 3 Any: 1 +--- !u!114 &7297648640871248928 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6719234714038604469} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 50fce3b6fdf41d541a8cb5f194cfd30a, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Backends.Hvr.HvrSocketBridge --- !u!1 &6822371266024915418 GameObject: m_ObjectHideFlags: 0 @@ -2933,6 +2903,7 @@ GameObject: - component: {fileID: 4704764476294233102} - component: {fileID: 598568339332800422} - component: {fileID: 2564368200858102714} + - component: {fileID: 6827862672640001227} m_Layer: 0 m_Name: ItemSocket (7) m_TagString: Untagged @@ -2970,39 +2941,13 @@ MonoBehaviour: m_EditorClassIdentifier: BeforeGrabbed: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 2596048974797699402} - m_TargetAssemblyTypeName: Gothic.VR.Components.VobContainer.VRVobContainerSocketInventory, - Gothic.VR - m_MethodName: OnBeforeGrabbed - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] Grabbed: m_PersistentCalls: m_Calls: [] Released: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 2596048974797699402} - m_TargetAssemblyTypeName: Gothic.VR.Components.VobContainer.VRVobContainerSocketInventory, - Gothic.VR - m_MethodName: OnReleased - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] BeforeHoverEnter: m_PersistentCalls: m_Calls: [] @@ -3014,7 +2959,6 @@ MonoBehaviour: m_Calls: [] _grabBag: {fileID: 0} GrabBags: [] - _allowGrabbing: 0 GrabControl: 0 GrabDetectionType: 1 CheckHandOverlap: 0 @@ -3114,6 +3058,18 @@ MonoBehaviour: Tags: {fileID: 11400000, guid: 836908d62a0d2e8489d7e21e7f774964, type: 2} _data: 3 Any: 1 +--- !u!114 &6827862672640001227 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6822371266024915418} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 50fce3b6fdf41d541a8cb5f194cfd30a, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Backends.Hvr.HvrSocketBridge --- !u!1 &6842481923038689323 GameObject: m_ObjectHideFlags: 0 @@ -3175,6 +3131,8 @@ MeshRenderer: m_RayTracingAccelStructBuildFlagsOverride: 0 m_RayTracingAccelStructBuildFlags: 1 m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -3196,9 +3154,11 @@ MeshRenderer: 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_AdditionalVertexStreams: {fileID: 0} --- !u!1 &7330976607743722592 GameObject: @@ -3214,6 +3174,7 @@ GameObject: - component: {fileID: 5927022531090099218} - component: {fileID: 1469796680986704926} - component: {fileID: 2037134406786832725} + - component: {fileID: 491441172845085459} m_Layer: 0 m_Name: ItemSocket (8) m_TagString: Untagged @@ -3251,39 +3212,13 @@ MonoBehaviour: m_EditorClassIdentifier: BeforeGrabbed: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 2596048974797699402} - m_TargetAssemblyTypeName: Gothic.VR.Components.VobContainer.VRVobContainerSocketInventory, - Gothic.VR - m_MethodName: OnBeforeGrabbed - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] Grabbed: m_PersistentCalls: m_Calls: [] Released: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 2596048974797699402} - m_TargetAssemblyTypeName: Gothic.VR.Components.VobContainer.VRVobContainerSocketInventory, - Gothic.VR - m_MethodName: OnReleased - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] BeforeHoverEnter: m_PersistentCalls: m_Calls: [] @@ -3295,7 +3230,6 @@ MonoBehaviour: m_Calls: [] _grabBag: {fileID: 0} GrabBags: [] - _allowGrabbing: 0 GrabControl: 0 GrabDetectionType: 1 CheckHandOverlap: 0 @@ -3395,6 +3329,18 @@ MonoBehaviour: Tags: {fileID: 11400000, guid: 836908d62a0d2e8489d7e21e7f774964, type: 2} _data: 3 Any: 1 +--- !u!114 &491441172845085459 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7330976607743722592} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 50fce3b6fdf41d541a8cb5f194cfd30a, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Backends.Hvr.HvrSocketBridge --- !u!1 &8017589019207168410 GameObject: m_ObjectHideFlags: 0 @@ -3409,6 +3355,7 @@ GameObject: - component: {fileID: 372745028345143667} - component: {fileID: 2809123207245500460} - component: {fileID: 1543325685525774575} + - component: {fileID: 6878980199702300609} m_Layer: 0 m_Name: ItemSocket (3) m_TagString: Untagged @@ -3446,39 +3393,13 @@ MonoBehaviour: m_EditorClassIdentifier: BeforeGrabbed: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 2596048974797699402} - m_TargetAssemblyTypeName: Gothic.VR.Components.VobContainer.VRVobContainerSocketInventory, - Gothic.VR - m_MethodName: OnBeforeGrabbed - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] Grabbed: m_PersistentCalls: m_Calls: [] Released: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 2596048974797699402} - m_TargetAssemblyTypeName: Gothic.VR.Components.VobContainer.VRVobContainerSocketInventory, - Gothic.VR - m_MethodName: OnReleased - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] BeforeHoverEnter: m_PersistentCalls: m_Calls: [] @@ -3490,7 +3411,6 @@ MonoBehaviour: m_Calls: [] _grabBag: {fileID: 0} GrabBags: [] - _allowGrabbing: 0 GrabControl: 0 GrabDetectionType: 1 CheckHandOverlap: 0 @@ -3590,6 +3510,18 @@ MonoBehaviour: Tags: {fileID: 11400000, guid: 836908d62a0d2e8489d7e21e7f774964, type: 2} _data: 3 Any: 1 +--- !u!114 &6878980199702300609 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8017589019207168410} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 50fce3b6fdf41d541a8cb5f194cfd30a, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Backends.Hvr.HvrSocketBridge --- !u!1 &8321360292962761766 GameObject: m_ObjectHideFlags: 0 @@ -3604,6 +3536,7 @@ GameObject: - component: {fileID: 3576335141605442734} - component: {fileID: 1273249311594439381} - component: {fileID: 8938383412123691392} + - component: {fileID: 4791134024498380442} m_Layer: 0 m_Name: ItemSocket (9) m_TagString: Untagged @@ -3641,39 +3574,13 @@ MonoBehaviour: m_EditorClassIdentifier: BeforeGrabbed: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 2596048974797699402} - m_TargetAssemblyTypeName: Gothic.VR.Components.VobContainer.VRVobContainerSocketInventory, - Gothic.VR - m_MethodName: OnBeforeGrabbed - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] Grabbed: m_PersistentCalls: m_Calls: [] Released: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 2596048974797699402} - m_TargetAssemblyTypeName: Gothic.VR.Components.VobContainer.VRVobContainerSocketInventory, - Gothic.VR - m_MethodName: OnReleased - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] BeforeHoverEnter: m_PersistentCalls: m_Calls: [] @@ -3685,7 +3592,6 @@ MonoBehaviour: m_Calls: [] _grabBag: {fileID: 0} GrabBags: [] - _allowGrabbing: 0 GrabControl: 0 GrabDetectionType: 1 CheckHandOverlap: 0 @@ -3785,6 +3691,18 @@ MonoBehaviour: Tags: {fileID: 11400000, guid: 836908d62a0d2e8489d7e21e7f774964, type: 2} _data: 3 Any: 1 +--- !u!114 &4791134024498380442 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8321360292962761766} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 50fce3b6fdf41d541a8cb5f194cfd30a, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Backends.Hvr.HvrSocketBridge --- !u!1 &8517697476932975960 GameObject: m_ObjectHideFlags: 0 @@ -3851,7 +3769,6 @@ MonoBehaviour: m_Calls: [] _grabBag: {fileID: 3118550354282009099} GrabBags: [] - _allowGrabbing: 0 SocketContainer: {fileID: 923689649037191229} GrabbleMustBeHeld: 0 --- !u!114 &3118550354282009099 @@ -3914,6 +3831,7 @@ GameObject: - component: {fileID: 7577847198649703145} - component: {fileID: 3895740475241616462} - component: {fileID: 9057796826089372788} + - component: {fileID: 1082262625873351403} m_Layer: 0 m_Name: ItemSocket (2) m_TagString: Untagged @@ -3951,39 +3869,13 @@ MonoBehaviour: m_EditorClassIdentifier: BeforeGrabbed: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 2596048974797699402} - m_TargetAssemblyTypeName: Gothic.VR.Components.VobContainer.VRVobContainerSocketInventory, - Gothic.VR - m_MethodName: OnBeforeGrabbed - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] Grabbed: m_PersistentCalls: m_Calls: [] Released: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 2596048974797699402} - m_TargetAssemblyTypeName: Gothic.VR.Components.VobContainer.VRVobContainerSocketInventory, - Gothic.VR - m_MethodName: OnReleased - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] BeforeHoverEnter: m_PersistentCalls: m_Calls: [] @@ -3995,7 +3887,6 @@ MonoBehaviour: m_Calls: [] _grabBag: {fileID: 0} GrabBags: [] - _allowGrabbing: 0 GrabControl: 0 GrabDetectionType: 1 CheckHandOverlap: 0 @@ -4095,6 +3986,18 @@ MonoBehaviour: Tags: {fileID: 11400000, guid: 836908d62a0d2e8489d7e21e7f774964, type: 2} _data: 3 Any: 1 +--- !u!114 &1082262625873351403 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8739208446635805306} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 50fce3b6fdf41d541a8cb5f194cfd30a, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Backends.Hvr.HvrSocketBridge --- !u!1 &8984571792552414776 GameObject: m_ObjectHideFlags: 0 @@ -4156,6 +4059,8 @@ MeshRenderer: m_RayTracingAccelStructBuildFlagsOverride: 0 m_RayTracingAccelStructBuildFlags: 1 m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -4177,9 +4082,11 @@ MeshRenderer: 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_AdditionalVertexStreams: {fileID: 0} --- !u!1001 &6500207459066028785 PrefabInstance: diff --git a/Assets/Gothic-VR/Resources/VR/Prefabs/Vobs/oCMobDoor.prefab b/Assets/Gothic-VR/Resources/VR/Prefabs/Vobs/oCMobDoor.prefab index 538cbe85e..8d82277d7 100644 --- a/Assets/Gothic-VR/Resources/VR/Prefabs/Vobs/oCMobDoor.prefab +++ b/Assets/Gothic-VR/Resources/VR/Prefabs/Vobs/oCMobDoor.prefab @@ -15,6 +15,9 @@ GameObject: - component: {fileID: 258546060515477993} - component: {fileID: 6106660089090848833} - component: {fileID: 2964456439257095392} + - component: {fileID: 1447025355381534221} + - component: {fileID: 7842253579892008169} + - component: {fileID: 87455771706928418} m_Layer: 6 m_Name: BIP01 DOORANGLE m_TagString: Untagged @@ -45,10 +48,10 @@ Rigidbody: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 980716176992391296} - serializedVersion: 4 + serializedVersion: 5 m_Mass: 10 - m_Drag: 0 - m_AngularDrag: 0.05 + m_LinearDamping: 0 + m_AngularDamping: 0.05 m_CenterOfMass: {x: 0, y: 0, z: 0} m_InertiaTensor: {x: 1, y: 1, z: 1} m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} @@ -181,34 +184,10 @@ MonoBehaviour: m_Calls: [] HoverEnter: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 2934795001242935560} - m_TargetAssemblyTypeName: GVR.HVR.Components.HVRFocus, Assembly-CSharp - m_MethodName: OnHoverEnter - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] HoverExit: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 2934795001242935560} - m_TargetAssemblyTypeName: GVR.HVR.Components.HVRFocus, Assembly-CSharp - m_MethodName: OnHoverExit - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] Collided: m_PersistentCalls: m_Calls: [] @@ -315,6 +294,42 @@ MonoBehaviour: PreviousClosed: 0 VerboseLogging: 0 Locked: 0 +--- !u!114 &1447025355381534221 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 980716176992391296} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5165ad186aed3fb408c5d43079b20d34, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Components.VrInteractable +--- !u!114 &7842253579892008169 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 980716176992391296} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 594f5e7857d0629419c1bef807639a86, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Backends.Hvr.HvrInteractableBridge +--- !u!114 &87455771706928418 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 980716176992391296} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9fca5660b7d87044b9f6309422813386, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Backends.Hvr.HvrHingeBridge --- !u!1 &1222579370199367537 GameObject: m_ObjectHideFlags: 0 @@ -523,7 +538,6 @@ MonoBehaviour: m_EditorClassIdentifier: _rootGO: {fileID: 6503575194566409312} _audioSource: {fileID: 4670513280573296585} - _hvrPhysicsDoor: {fileID: 2964456439257095392} --- !u!135 &827370569709809547 SphereCollider: m_ObjectHideFlags: 0 diff --git a/Assets/Gothic-VR/Resources/VR/Prefabs/Vobs/oCMobFire.prefab b/Assets/Gothic-VR/Resources/VR/Prefabs/Vobs/oCMobFire.prefab index 792acacd9..4d5cc6937 100644 --- a/Assets/Gothic-VR/Resources/VR/Prefabs/Vobs/oCMobFire.prefab +++ b/Assets/Gothic-VR/Resources/VR/Prefabs/Vobs/oCMobFire.prefab @@ -13,6 +13,8 @@ GameObject: - component: {fileID: 2854363553026066547} - component: {fileID: 6907302684280751333} - component: {fileID: 2520659641626351288} + - component: {fileID: 7062935307805374239} + - component: {fileID: 8587772998141430396} m_Layer: 6 m_Name: ZM_.*LIGHTER m_TagString: Untagged @@ -152,34 +154,10 @@ MonoBehaviour: m_Calls: [] HoverEnter: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 2854363553026066547} - m_TargetAssemblyTypeName: GVR.HVR.Components.HVRFocus, Assembly-CSharp - m_MethodName: OnHoverEnter - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] HoverExit: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 2854363553026066547} - m_TargetAssemblyTypeName: GVR.HVR.Components.HVRFocus, Assembly-CSharp - m_MethodName: OnHoverExit - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] Collided: m_PersistentCalls: m_Calls: [] @@ -224,6 +202,30 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: dc7b9870e5ee6804aa346c39e83f17c7, type: 3} m_Name: m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Adapters.Vob.VRMobInteraction +--- !u!114 &7062935307805374239 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5926234300762413270} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5165ad186aed3fb408c5d43079b20d34, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Components.VrInteractable +--- !u!114 &8587772998141430396 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5926234300762413270} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 594f5e7857d0629419c1bef807639a86, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Backends.Hvr.HvrInteractableBridge --- !u!1 &6503575194566409312 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Gothic-VR/Resources/VR/Prefabs/Vobs/oCMobInter.prefab b/Assets/Gothic-VR/Resources/VR/Prefabs/Vobs/oCMobInter.prefab index f899e974e..1cf05cd15 100644 --- a/Assets/Gothic-VR/Resources/VR/Prefabs/Vobs/oCMobInter.prefab +++ b/Assets/Gothic-VR/Resources/VR/Prefabs/Vobs/oCMobInter.prefab @@ -13,6 +13,8 @@ GameObject: - component: {fileID: 2854363553026066547} - component: {fileID: 6907302684280751333} - component: {fileID: 3676752456108531535} + - component: {fileID: 3911890553226910476} + - component: {fileID: 3096177028477653256} m_Layer: 6 m_Name: BIP01.*|ZM.* m_TagString: Untagged @@ -152,34 +154,10 @@ MonoBehaviour: m_Calls: [] HoverEnter: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 2854363553026066547} - m_TargetAssemblyTypeName: GVR.HVR.Components.HVRFocus, Assembly-CSharp - m_MethodName: OnHoverEnter - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] HoverExit: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 2854363553026066547} - m_TargetAssemblyTypeName: GVR.HVR.Components.HVRFocus, Assembly-CSharp - m_MethodName: OnHoverExit - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] Collided: m_PersistentCalls: m_Calls: [] @@ -224,6 +202,30 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: dc7b9870e5ee6804aa346c39e83f17c7, type: 3} m_Name: m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Adapters.Vob.VRMobInteraction +--- !u!114 &3911890553226910476 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5926234300762413270} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5165ad186aed3fb408c5d43079b20d34, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Components.VrInteractable +--- !u!114 &3096177028477653256 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5926234300762413270} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 594f5e7857d0629419c1bef807639a86, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Backends.Hvr.HvrInteractableBridge --- !u!1 &6503575194566409312 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Gothic-VR/Resources/VR/Prefabs/Vobs/oCMobInter/Seat.prefab b/Assets/Gothic-VR/Resources/VR/Prefabs/Vobs/oCMobInter/Seat.prefab index aab913851..cde097fbe 100644 --- a/Assets/Gothic-VR/Resources/VR/Prefabs/Vobs/oCMobInter/Seat.prefab +++ b/Assets/Gothic-VR/Resources/VR/Prefabs/Vobs/oCMobInter/Seat.prefab @@ -56,26 +56,6 @@ PrefabInstance: propertyPath: Rigidbody value: objectReference: {fileID: 492138702362873769} - - target: {fileID: 6907302684280751333, guid: 6cbff20e63c6e794fa758a47d703f2df, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.size - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 6907302684280751333, guid: 6cbff20e63c6e794fa758a47d703f2df, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 1502701034376819458} - - target: {fileID: 6907302684280751333, guid: 6cbff20e63c6e794fa758a47d703f2df, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[0].m_CallState - value: 2 - objectReference: {fileID: 0} - - target: {fileID: 6907302684280751333, guid: 6cbff20e63c6e794fa758a47d703f2df, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName - value: OnGrabbed - objectReference: {fileID: 0} - - target: {fileID: 6907302684280751333, guid: 6cbff20e63c6e794fa758a47d703f2df, type: 3} - propertyPath: Grabbed.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName - value: Gothic.VR.Adapters.Player.VRSeat, Gothic.VR - objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] @@ -136,5 +116,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 89204bc4f3825b04bbeaa10da0266f6e, type: 3} m_Name: m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Adapters.Player.VRSeat - _canvasFade: {fileID: 0} _fadeSpeed: 6 diff --git a/Assets/Gothic-VR/Resources/VR/Prefabs/Vobs/oCMobLadder.prefab b/Assets/Gothic-VR/Resources/VR/Prefabs/Vobs/oCMobLadder.prefab index ef90fe157..68afdcac8 100644 --- a/Assets/Gothic-VR/Resources/VR/Prefabs/Vobs/oCMobLadder.prefab +++ b/Assets/Gothic-VR/Resources/VR/Prefabs/Vobs/oCMobLadder.prefab @@ -12,6 +12,8 @@ GameObject: - component: {fileID: 2279246351159797278} - component: {fileID: 229708145539930019} - component: {fileID: 2893514479669655516} + - component: {fileID: 5158607502795523759} + - component: {fileID: 1622434811052915792} m_Layer: 0 m_Name: BIP01 LADDER m_TagString: Untagged @@ -150,34 +152,10 @@ MonoBehaviour: m_Calls: [] HoverEnter: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 252428407596682482} - m_TargetAssemblyTypeName: GVR.HVR.Components.HVRFocus, Assembly-CSharp - m_MethodName: OnHoverEnter - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] HoverExit: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 252428407596682482} - m_TargetAssemblyTypeName: GVR.HVR.Components.HVRFocus, Assembly-CSharp - m_MethodName: OnHoverExit - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] Collided: m_PersistentCalls: m_Calls: [] @@ -210,6 +188,30 @@ MonoBehaviour: HandGrabbers: [] Stabbers: [] Stabbable: {fileID: 0} +--- !u!114 &5158607502795523759 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3766033816963121094} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5165ad186aed3fb408c5d43079b20d34, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Components.VrInteractable +--- !u!114 &1622434811052915792 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3766033816963121094} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 594f5e7857d0629419c1bef807639a86, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Backends.Hvr.HvrInteractableBridge --- !u!1 &6503575194566409312 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Gothic-VR/Resources/VR/Prefabs/Vobs/oCMobSwitch.prefab b/Assets/Gothic-VR/Resources/VR/Prefabs/Vobs/oCMobSwitch.prefab index 7cfcd2362..970b6a006 100644 --- a/Assets/Gothic-VR/Resources/VR/Prefabs/Vobs/oCMobSwitch.prefab +++ b/Assets/Gothic-VR/Resources/VR/Prefabs/Vobs/oCMobSwitch.prefab @@ -91,6 +91,8 @@ GameObject: - component: {fileID: 6429894365401520520} - component: {fileID: 2478502802283214804} - component: {fileID: 6762376611792587169} + - component: {fileID: 5867362459497893582} + - component: {fileID: 7548610693852835858} m_Layer: 6 m_Name: BIP01.* m_TagString: Untagged @@ -230,34 +232,10 @@ MonoBehaviour: m_Calls: [] HoverEnter: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 6429894365401520520} - m_TargetAssemblyTypeName: GVR.HVR.Components.HVRFocus, Assembly-CSharp - m_MethodName: OnHoverEnter - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] HoverExit: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 6429894365401520520} - m_TargetAssemblyTypeName: GVR.HVR.Components.HVRFocus, Assembly-CSharp - m_MethodName: OnHoverExit - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] Collided: m_PersistentCalls: m_Calls: [] @@ -302,6 +280,30 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: dc7b9870e5ee6804aa346c39e83f17c7, type: 3} m_Name: m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Adapters.Vob.VRMobInteraction +--- !u!114 &5867362459497893582 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8788472130516112289} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5165ad186aed3fb408c5d43079b20d34, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Components.VrInteractable +--- !u!114 &7548610693852835858 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8788472130516112289} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 594f5e7857d0629419c1bef807639a86, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Backends.Hvr.HvrInteractableBridge --- !u!1001 &7374455095753343057 PrefabInstance: m_ObjectHideFlags: 0 diff --git a/Assets/Gothic-VR/Resources/VR/Prefabs/Vobs/oCMobWheel.prefab b/Assets/Gothic-VR/Resources/VR/Prefabs/Vobs/oCMobWheel.prefab index c997fdda2..86bbe44de 100644 --- a/Assets/Gothic-VR/Resources/VR/Prefabs/Vobs/oCMobWheel.prefab +++ b/Assets/Gothic-VR/Resources/VR/Prefabs/Vobs/oCMobWheel.prefab @@ -13,6 +13,8 @@ GameObject: - component: {fileID: 2854363553026066547} - component: {fileID: 6907302684280751333} - component: {fileID: 8384191140399634538} + - component: {fileID: 5498683309141561368} + - component: {fileID: 3429509007387962835} m_Layer: 6 m_Name: .* m_TagString: Untagged @@ -152,34 +154,10 @@ MonoBehaviour: m_Calls: [] HoverEnter: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 2854363553026066547} - m_TargetAssemblyTypeName: GVR.HVR.Components.HVRFocus, Assembly-CSharp - m_MethodName: OnHoverEnter - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] HoverExit: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 2854363553026066547} - m_TargetAssemblyTypeName: GVR.HVR.Components.HVRFocus, Assembly-CSharp - m_MethodName: OnHoverExit - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] Collided: m_PersistentCalls: m_Calls: [] @@ -224,6 +202,30 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: dc7b9870e5ee6804aa346c39e83f17c7, type: 3} m_Name: m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Adapters.Vob.VRMobInteraction +--- !u!114 &5498683309141561368 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5926234300762413270} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5165ad186aed3fb408c5d43079b20d34, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Components.VrInteractable +--- !u!114 &3429509007387962835 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5926234300762413270} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 594f5e7857d0629419c1bef807639a86, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Backends.Hvr.HvrInteractableBridge --- !u!1 &6503575194566409312 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Gothic-VR/Resources/VR/Prefabs/Vobs/oCNpc.prefab b/Assets/Gothic-VR/Resources/VR/Prefabs/Vobs/oCNpc.prefab index 3ea4fa907..302eae8b5 100644 --- a/Assets/Gothic-VR/Resources/VR/Prefabs/Vobs/oCNpc.prefab +++ b/Assets/Gothic-VR/Resources/VR/Prefabs/Vobs/oCNpc.prefab @@ -125,7 +125,6 @@ MonoBehaviour: DebugPauseAtPlayAnimation: 0 DebugPauseAtStopAnimation: 0 DebugPlayAnimation: - RootBone: {fileID: 8679908380237941234} --- !u!114 &7657019000195239257 MonoBehaviour: m_ObjectHideFlags: 0 @@ -311,6 +310,8 @@ GameObject: - component: {fileID: 8720130747125307888} - component: {fileID: 957202922675155714} - component: {fileID: 8095166574519349901} + - component: {fileID: 8068816277696156100} + - component: {fileID: 7853705596767096919} m_Layer: 10 m_Name: RootMotionCollider m_TagString: Untagged @@ -471,78 +472,16 @@ MonoBehaviour: m_Calls: [] Grabbed: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 4148423720954529152} - m_TargetAssemblyTypeName: Gothic.HVR.Components.HVRoCNpc, Assembly-CSharp - m_MethodName: OnGrabbed - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] Released: m_PersistentCalls: m_Calls: [] HoverEnter: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 383060561904739675} - m_TargetAssemblyTypeName: GVR.HVR.Components.HVRFocus, Assembly-CSharp - m_MethodName: OnHoverEnter - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 - - m_Target: {fileID: 3776598624381708510} - m_TargetAssemblyTypeName: Gothic.Core.Adapters.UI.StatusBars.StatusBarAdapter, - Gothic.Core - m_MethodName: EnableBar - m_Mode: 1 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] HoverExit: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 383060561904739675} - m_TargetAssemblyTypeName: GVR.HVR.Components.HVRFocus, Assembly-CSharp - m_MethodName: OnHoverExit - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 - - m_Target: {fileID: 3776598624381708510} - m_TargetAssemblyTypeName: Gothic.Core.Adapters.UI.StatusBars.StatusBarAdapter, - Gothic.Core - m_MethodName: DisableBar - m_Mode: 1 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] Collided: m_PersistentCalls: m_Calls: [] @@ -575,6 +514,30 @@ MonoBehaviour: HandGrabbers: [] Stabbers: [] Stabbable: {fileID: 0} +--- !u!114 &8068816277696156100 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3647559741746323219} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5165ad186aed3fb408c5d43079b20d34, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Components.VrInteractable +--- !u!114 &7853705596767096919 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3647559741746323219} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 594f5e7857d0629419c1bef807639a86, type: 3} + m_Name: + m_EditorClassIdentifier: Gothic.VR::Gothic.VR.Interaction.Backends.Hvr.HvrInteractableBridge --- !u!1 &3748409399599174953 GameObject: m_ObjectHideFlags: 0 @@ -877,17 +840,6 @@ PrefabInstance: m_AddedGameObjects: [] m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 6ce7e724ba52cae47a499f87c612cd47, type: 3} ---- !u!114 &3776598624381708510 stripped -MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 1174396645238234420, guid: 6ce7e724ba52cae47a499f87c612cd47, type: 3} - m_PrefabInstance: {fileID: 2604602267262121450} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: e6c728d9fa1f409bad98a31897d804e1, type: 3} - m_Name: - m_EditorClassIdentifier: --- !u!224 &6204853864044937825 stripped RectTransform: m_CorrespondingSourceObject: {fileID: 8230739814078363531, guid: 6ce7e724ba52cae47a499f87c612cd47, type: 3} diff --git a/Assets/Gothic-VR/Scripts/Adapters/HVROverrides.meta b/Assets/Gothic-VR/Scripts/Adapters/HVROverrides.meta deleted file mode 100644 index 014cc8ec9..000000000 --- a/Assets/Gothic-VR/Scripts/Adapters/HVROverrides.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 9769f62ce70e4bdbb907c1dacfc8b6b3 -timeCreated: 1730258998 \ No newline at end of file diff --git a/Assets/Gothic-VR/Scripts/Adapters/HVROverrides/VRShoulderSocket.cs b/Assets/Gothic-VR/Scripts/Adapters/HVROverrides/VRShoulderSocket.cs deleted file mode 100644 index d102d805f..000000000 --- a/Assets/Gothic-VR/Scripts/Adapters/HVROverrides/VRShoulderSocket.cs +++ /dev/null @@ -1,13 +0,0 @@ -using HurricaneVR.Framework.Core.Utils; - -namespace Gothic.VR.Adapters.HVROverrides -{ - /// - /// Overwritten only to ensure, that our use "parent" as "*(Loader)" element with VobContainer. - /// Class name is used for VRBackpack.OnBackpackReleasedFromShoulder() only. - /// - public class VRShoulderSocket : VRSocket - { - - } -} diff --git a/Assets/Gothic-VR/Scripts/Adapters/Marvin/VRNpcMarvinAdapter.cs b/Assets/Gothic-VR/Scripts/Adapters/Marvin/VRNpcMarvinAdapter.cs index 41644acdb..c277c5173 100644 --- a/Assets/Gothic-VR/Scripts/Adapters/Marvin/VRNpcMarvinAdapter.cs +++ b/Assets/Gothic-VR/Scripts/Adapters/Marvin/VRNpcMarvinAdapter.cs @@ -3,8 +3,8 @@ using Gothic.Core.Models.Container; using Gothic.Core.Services.Player; using Gothic.Core.Extensions; -using HurricaneVR.Framework.Core; -using HurricaneVR.Framework.Core.Grabbers; +using Gothic.VR.Interaction.Components; +using Gothic.VR.Interaction.Models; using Reflex.Attributes; using UnityEngine; using ZenKit.Daedalus; @@ -17,13 +17,30 @@ public class VRNpcMarvinAdapter : MonoBehaviour [Inject] private PlayerService _playerService; private NpcContainer _npcData; + private VrInteractable _interactable; private void Awake() { _npcData = GetComponentInParent().Npc.GetUserData(); } - public void OnGrabbed(HVRGrabberBase grabber, HVRGrabbable grabbable) + /// + /// Subscribed in Start (not Awake), so that VRNpc (dialog/loot) always handles a grab first. + /// + private void Start() + { + _interactable = VrInteractable.Find(this); + if (_interactable != null) + _interactable.Grabbed += OnGrabbed; + } + + private void OnDestroy() + { + if (_interactable != null) + _interactable.Grabbed -= OnGrabbed; + } + + private void OnGrabbed(VrGrabArgs args) { // Safety return, until we have proper Marvin feature handling implemented (active = true/false) return; diff --git a/Assets/Gothic-VR/Scripts/Adapters/Player/VRBackpack.cs b/Assets/Gothic-VR/Scripts/Adapters/Player/VRBackpack.cs index fc5275e31..e94e0bca6 100644 --- a/Assets/Gothic-VR/Scripts/Adapters/Player/VRBackpack.cs +++ b/Assets/Gothic-VR/Scripts/Adapters/Player/VRBackpack.cs @@ -2,7 +2,6 @@ using System.Collections; using System.Collections.Generic; using System.Linq; -using Assets.HurricaneVR.Framework.Shared.Utilities; using Gothic.Core; using Gothic.Core.Adapters.Vob; using Gothic.Core.Manager; @@ -13,12 +12,10 @@ using Gothic.Core.Services.Vm; using Gothic.Core.Services.Vobs; using Gothic.Core.Services.World; -using Gothic.VR.Adapters.HVROverrides; +using Gothic.VR.Interaction.Components; +using Gothic.VR.Interaction.Models; +using Gothic.VR.Interaction.Ports; using Gothic.VR.Services; -using HurricaneVR.Framework.Core; -using HurricaneVR.Framework.Core.Grabbers; -using HurricaneVR.Framework.Core.Sockets; -using HurricaneVR.Framework.Core.Utils; using Reflex.Attributes; using TMPro; using UnityEngine; @@ -26,12 +23,25 @@ namespace Gothic.VR.Adapters.Player { - [RequireComponent(typeof(HVRSocketable))] + /// + /// The player's backpack (inventory pages) and holsters. The backpack itself is a VrInteractable with an + /// IVrSocketContainer for its slots. Items put into holsters or slots are added to the hero's inventory. + /// public class VRBackpack : MonoBehaviour { [SerializeField] private TMP_Text _categoryText; [SerializeField] private TMP_Text _pagerText; - [SerializeField] private HVRSocketContainer _socketContainer; + + [Tooltip("Hip and shoulder holsters (IVrSocket). Items inside count as inventory.")] + [SerializeField] private GameObject[] _holsterSockets; + + [Tooltip("Backpack slots (IVrSocket) which add/remove items to/from the inventory when used.")] + [SerializeField] private GameObject[] _inventorySockets; + + private VrInteractable _interactable; + private IVrSocketContainer _socketContainer; + private readonly List _holsters = new(); + private readonly List _slots = new(); private bool _isZenKitBootstrapped; private int _currentPage = 1; @@ -49,30 +59,87 @@ public class VRBackpack : MonoBehaviour [Inject] private readonly VRWeaponService _vrWeaponService; + private void Awake() + { + _interactable = GetComponent(); + _socketContainer = GetComponent(); + CollectSockets(_holsterSockets, _holsters); + CollectSockets(_inventorySockets, _slots); + + _interactable.Grabbed += OnBackpackGrabbedToShoulder; + _interactable.Released += OnBackpackReleasedFromShoulder; + + foreach (var holster in _holsters) + { + holster.Grabbed += OnItemPutIntoHolster; + holster.Released += OnItemPutOutOfHolster; + } + + foreach (var slot in _slots) + { + slot.Grabbed += OnItemPutIntoBackpack; + slot.Released += OnItemPutOutOfBackpack; + } + } + private void Start() { GlobalEventDispatcher.ZenKitBootstrapped.AddListener(Init); } - private void Init() + private void OnDestroy() { - var socketable = GetComponent(); + if (_interactable != null) + { + _interactable.Grabbed -= OnBackpackGrabbedToShoulder; + _interactable.Released -= OnBackpackReleasedFromShoulder; + } - socketable.UnsocketedClip = _audioService.CreateAudioClip(_audioService.InvOpen.File); - socketable.SocketedClip = _audioService.CreateAudioClip(_audioService.InvClose.File); + foreach (var holster in _holsters) + { + holster.Grabbed -= OnItemPutIntoHolster; + holster.Released -= OnItemPutOutOfHolster; + } + + foreach (var slot in _slots) + { + slot.Grabbed -= OnItemPutIntoBackpack; + slot.Released -= OnItemPutOutOfBackpack; + } + } + + private static void CollectSockets(GameObject[] socketGos, List result) + { + if (socketGos == null) + return; + + foreach (var socketGo in socketGos) + { + if (socketGo != null && socketGo.TryGetComponent(out IVrSocket socket)) + result.Add(socket); + } + } + + private void Init() + { + _interactable.SetSocketSounds( + socketed: _audioService.CreateAudioClip(_audioService.InvClose.File), + unsocketed: _audioService.CreateAudioClip(_audioService.InvOpen.File)); _isZenKitBootstrapped = true; } - public void OnBackpackGrabbedToShoulder(HVRGrabberBase grabber, HVRGrabbable grabbable) + private void OnBackpackGrabbedToShoulder(VrGrabArgs args) { // Nothing to do for now. // We could potentially remove the meshes inside Backpack or simply hide it from rendering later. } - - public void OnBackpackReleasedFromShoulder(HVRGrabberBase grabber, HVRGrabbable grabbable) + + private void OnBackpackReleasedFromShoulder(VrGrabArgs args) { - if (grabber is not VRShoulderSocket && grabber is not HVRShoulderSocket) + if (args.Kind != VrGrabberKind.Socket || args.GrabberGo == null) + return; + if (!args.GrabberGo.TryGetComponent(out IVrSocket socket) || !socket.IsShoulder) return; UpdateInventoryView(); @@ -82,21 +149,21 @@ public void OnBackpackReleasedFromShoulder(HVRGrabberBase grabber, HVRGrabbable /// When putting into holster, culling is already deactivated. /// We simply need to tell the game: add inventory amount. /// - public void OnItemPutIntoHolster(HVRGrabberBase grabber, HVRGrabbable grabbable) + private void OnItemPutIntoHolster(VrGrabArgs args) { - var vobLoader = grabbable.GetComponentInParent(); + var vobLoader = args.Interactable.GetComponentInParent(); var vobContainer = vobLoader.Container; _playerService.AddItem(vobContainer.Vob.Name, Mathf.Max(1, vobContainer.VobAs().Amount)); } - public void OnItemPutIntoBackpack(HVRGrabberBase grabber, HVRGrabbable grabbable) + private void OnItemPutIntoBackpack(VrGrabArgs args) { if (_tempIgnoreSocketing) return; - - var vobLoader = grabbable.GetComponentInParent(true); + + var vobLoader = args.Interactable.GetComponentInParent(true); var vobContainer = vobLoader.Container; _vobMeshCullingService.RemoveCullingEntry(vobContainer); @@ -111,9 +178,9 @@ public void OnItemPutIntoBackpack(HVRGrabberBase grabber, HVRGrabbable grabbable /// When putting out of holster, culling is already deactivated. /// We simply need to tell the game: substract inventory amount. /// - public void OnItemPutOutOfHolster(HVRGrabberBase grabber, HVRGrabbable grabbable) + private void OnItemPutOutOfHolster(VrGrabArgs args) { - var vobLoader = grabbable.GetComponentInParent(); + var vobLoader = args.Interactable.GetComponentInParent(); if (vobLoader == null) return; var vobContainer = vobLoader.Container; @@ -121,12 +188,12 @@ public void OnItemPutOutOfHolster(HVRGrabberBase grabber, HVRGrabbable grabbable _playerService.RemoveItem(vobContainer.Vob.Name, Mathf.Max(1, vobContainer.VobAs().Amount)); } - public void OnItemPutOutOfBackpack(HVRGrabberBase grabber, HVRGrabbable grabbable) + private void OnItemPutOutOfBackpack(VrGrabArgs args) { if (_tempIgnoreSocketing) return; - var vobLoader = grabbable.GetComponentInParent(); + var vobLoader = args.Interactable.GetComponentInParent(); var vobContainer = vobLoader.Container; _vobMeshCullingService.AddCullingEntry(vobContainer); @@ -234,15 +301,15 @@ private void ClearSockets() foreach (var socket in _socketContainer.Sockets) { // Nothing inside socket - if (!socket.IsGrabbing) + if (!socket.IsOccupied) continue; // Destroy VobLoader GO after releasing it from slot (proper event handling) - var heldRoot = socket.HeldObject.transform.parent.gameObject; + var heldRoot = socket.Held.transform.parent.gameObject; socket.ForceRelease(); heldRoot.SetActive(false); // Disable it, as it would be with scale 1 in front of our camera for 1 second. - // We need to wait until next frame to ensure HVR has removed the item from socket. - this.ExecuteNextUpdate(() => Destroy(heldRoot)); + // We need to wait until next frame to ensure the socket has removed the item. + StartCoroutine(DestroyNextFrame(heldRoot)); } } @@ -263,10 +330,16 @@ private void RefillSockets(List inventory) }); vobContainer.Go.GetComponentInChildren().isKinematic = false; // Get rid of isKinematic warnings as the Grab is done "physically". - _socketContainer.TryAddGrabbable(vobContainer.Go.GetComponentInChildren()); + _socketContainer.TryAdd(vobContainer.Go.GetComponentInChildren()); } } + private static IEnumerator DestroyNextFrame(GameObject go) + { + yield return null; + Destroy(go); + } + private void SubtractItemFromHand(List inventory, GameObject handItem) { if (handItem == null) diff --git a/Assets/Gothic-VR/Scripts/Adapters/Player/VRPlayerItemAdapter.cs b/Assets/Gothic-VR/Scripts/Adapters/Player/VRPlayerItemAdapter.cs index 856c3113a..ec77eb34d 100644 --- a/Assets/Gothic-VR/Scripts/Adapters/Player/VRPlayerItemAdapter.cs +++ b/Assets/Gothic-VR/Scripts/Adapters/Player/VRPlayerItemAdapter.cs @@ -1,21 +1,42 @@ #if GOTHIC_HVR_INSTALLED using Gothic.Core.Manager; -using HurricaneVR.Framework.Core; -using HurricaneVR.Framework.Core.Grabbers; +using Gothic.VR.Interaction.Models; +using Gothic.VR.Interaction.Ports; using Reflex.Attributes; using UnityEngine; namespace Gothic.VR.Adapters.Player { + /// + /// Sits on the player rig and listens to the hand and distance grabbers of both hands. + /// public class VRPlayerItemAdapter : MonoBehaviour { [Inject] private readonly MarvinService _marvinService; + private IVrRig _rig; + + + private void Awake() + { + _rig = GetComponent(); + foreach (var grabber in _rig.HandGrabbers) + grabber.BeforeGrabbed += OnBeforeGrabbed; + } + + private void OnDestroy() + { + if (_rig == null) + return; + + foreach (var grabber in _rig.HandGrabbers) + grabber.BeforeGrabbed -= OnBeforeGrabbed; + } /// /// We need to set isKinematic=false in BeforeGrabbed, otherwise we get a warning at OnGrabbed event time afterward. /// - public void OnBeforeGrabbed(HVRGrabberBase grabber, HVRGrabbable grabbable) + private void OnBeforeGrabbed(VrGrabArgs args) { // Ignore grabbing once, if MarvinSelectionMode is active. if (_marvinService.IsMarvinSelectionMode) @@ -23,11 +44,11 @@ public void OnBeforeGrabbed(HVRGrabberBase grabber, HVRGrabbable grabbable) // OnGrabbed is normally called multiple times. Even after an object is already socketed. If so, then let's stop Grab behaviour. // If we sock an object on our hips or backpack etc. - if (grabber is HVRSocket) + if (args.Kind == VrGrabberKind.Socket || args.Interactable == null) return; // In Gothic, Items have no physics when lying around. We need to activate physics for HVR to properly move items into our hands. - if (grabbable.TryGetComponent(out var rb)) + if (args.Interactable.TryGetComponent(out var rb)) { rb.isKinematic = false; } diff --git a/Assets/Gothic-VR/Scripts/Adapters/Player/VRPlayerWeaponInteraction.cs b/Assets/Gothic-VR/Scripts/Adapters/Player/VRPlayerWeaponInteraction.cs index 2ceb096ba..9b35186a2 100644 --- a/Assets/Gothic-VR/Scripts/Adapters/Player/VRPlayerWeaponInteraction.cs +++ b/Assets/Gothic-VR/Scripts/Adapters/Player/VRPlayerWeaponInteraction.cs @@ -5,11 +5,10 @@ using Gothic.Core.Models.Marvin; using Gothic.Core.Models.Vm; using Gothic.Core.Services; -using Gothic.VR.Interaction.Backends.Hvr; +using Gothic.VR.Interaction.Models; +using Gothic.VR.Interaction.Ports; using Gothic.VR.Models.Vob; using Gothic.VR.Services; -using HurricaneVR.Framework.Core; -using HurricaneVR.Framework.Core.Grabbers; using Reflex.Attributes; using UnityEngine; using ZenKit.Vobs; @@ -41,10 +40,38 @@ public class VRPlayerWeaponInteraction : MonoBehaviour, IMarvinPropertyCollector [SerializeField] private float _velocityCheckDuration = 0.5f; [SerializeField] private int _velocitySampleCount = 5; + private IVrRig _rig; - public void OnGrabbed(HVRGrabberBase hand, HVRGrabbable item) + + private void Awake() + { + _rig = GetComponent(); + foreach (var grabber in _rig.HandGrabbers) + { + // Melee weapons are handled once they're in a hand, not while being pulled by distance. + if (grabber.Kind != VrGrabberKind.Hand) + continue; + + grabber.Grabbed += OnGrabbed; + grabber.Released += OnReleased; + } + } + + private void OnDestroy() + { + if (_rig == null) + return; + + foreach (var grabber in _rig.HandGrabbers) + { + grabber.Grabbed -= OnGrabbed; + grabber.Released -= OnReleased; + } + } + + private void OnGrabbed(VrGrabArgs args) { - var vobItem = item.GetComponentInParent(); + var vobItem = args.Interactable != null ? args.Interactable.GetComponentInParent() : null; var vobContainer = vobItem?.Container; // We grab something not handled as VobItem. @@ -57,13 +84,13 @@ public void OnGrabbed(HVRGrabberBase hand, HVRGrabbable item) if (itemInstance!.MainFlag != (int)VmGothicEnums.ItemFlags.ItemKatNf) return; - _weaponService.OnGrabbed(((HVRHandGrabber)hand).HandSide.ToVr(), vobContainer, GetWeaponPhysicsConfig()); + _weaponService.OnGrabbed(args.HandSide, vobContainer, GetWeaponPhysicsConfig()); SyncEquippedWeaponToHero(itemInstance, equip: true); } - public void OnReleased(HVRGrabberBase hand, HVRGrabbable item) + private void OnReleased(VrGrabArgs args) { - var vobItem = item.GetComponentInParent(); + var vobItem = args.Interactable != null ? args.Interactable.GetComponentInParent() : null; var vobContainer = vobItem?.Container; // We grab something not handled as VobItem. @@ -76,7 +103,7 @@ public void OnReleased(HVRGrabberBase hand, HVRGrabbable item) if (itemInstance!.MainFlag != (int)VmGothicEnums.ItemFlags.ItemKatNf) return; - _weaponService.OnReleased(((HVRHandGrabber)hand).HandSide.ToVr(), GetWeaponPhysicsConfig()); + _weaponService.OnReleased(args.HandSide, GetWeaponPhysicsConfig()); SyncEquippedWeaponToHero(itemInstance, equip: false); } diff --git a/Assets/Gothic-VR/Scripts/Adapters/Player/VRSeat.cs b/Assets/Gothic-VR/Scripts/Adapters/Player/VRSeat.cs index b82c8ca8d..0863fcd9c 100644 --- a/Assets/Gothic-VR/Scripts/Adapters/Player/VRSeat.cs +++ b/Assets/Gothic-VR/Scripts/Adapters/Player/VRSeat.cs @@ -5,10 +5,10 @@ using Gothic.Core.Services.Context; using Gothic.Core; using Gothic.Core.Extensions; +using Gothic.VR.Interaction.Components; +using Gothic.VR.Interaction.Models; using Gothic.VR.Interaction.Ports; using Gothic.VR.Services.Context; -using HurricaneVR.Framework.Core; -using HurricaneVR.Framework.Core.Grabbers; using Reflex.Attributes; using UnityEngine; @@ -38,6 +38,19 @@ public class VRSeat : MonoBehaviour private Transform _currentSnapPoint; private bool _canPlayerSit = true; + private VrInteractable _interactable; + + private void Awake() + { + _interactable = VrInteractable.Find(this); + _interactable.Grabbed += OnGrabbed; + } + + private void OnDestroy() + { + if (_interactable != null) + _interactable.Grabbed -= OnGrabbed; + } private void GetSnapPoints() { @@ -54,7 +67,7 @@ private void GetSnapPoints() } } - public void OnGrabbed(HVRGrabberBase grabber, HVRGrabbable grabbable) + private void OnGrabbed(VrGrabArgs args) { if (_snapPoints.IsEmpty()) { diff --git a/Assets/Gothic-VR/Scripts/Adapters/VRFocus.cs b/Assets/Gothic-VR/Scripts/Adapters/VRFocus.cs index 328c2aac3..8c6114d1e 100644 --- a/Assets/Gothic-VR/Scripts/Adapters/VRFocus.cs +++ b/Assets/Gothic-VR/Scripts/Adapters/VRFocus.cs @@ -8,8 +8,8 @@ using Gothic.Core.Extensions; using Gothic.Core.Manager; using Gothic.Core.Services; -using HurricaneVR.Framework.Core; -using HurricaneVR.Framework.Core.Grabbers; +using Gothic.VR.Interaction.Components; +using Gothic.VR.Interaction.Models; using Reflex.Attributes; using TMPro; using UnityEngine; @@ -18,7 +18,8 @@ namespace Gothic.VR.Adapters { /// /// Handles focus brightness and name visibility for VOBs and NPCs. - /// We leverage HVRGrabbable's events to show canvas of object name and alter brightness on all objects' mesh renderers. + /// We leverage VrInteractable's events to show canvas of object name and alter brightness on all objects' + /// mesh renderers. /// /// Order of use is always: /// 1. HoverEnter -> We hover from far or near (e.g. grab distance without pulling towards us) @@ -40,11 +41,16 @@ public class VRFocus : MonoBehaviour private bool _isHovered; private Renderer _cachedObjectRenderer; private bool _isNpc; + private VrInteractable _interactable; private void Awake() { _isNpc = GetComponent() != null; + _interactable = VrInteractable.Find(this); + _interactable.HoverEntered += OnHoverEnter; + _interactable.HoverExited += OnHoverExit; + // DEBUG - Use this to enable brightening up all rendered objects if you want to check the attack window. { // GlobalEventDispatcher.FightWindowInitial.AddListener(_ => OnHoverEnter(1f)); @@ -60,7 +66,16 @@ private void Start() _nameCanvas.SetActive(false); } - public void OnHoverEnter(HVRGrabberBase _, HVRGrabbable __) + private void OnDestroy() + { + if (_interactable == null) + return; + + _interactable.HoverEntered -= OnHoverEnter; + _interactable.HoverExited -= OnHoverExit; + } + + private void OnHoverEnter(VrGrabArgs _) { OnHoverEnter(_isNpc ? Constants.ShaderPropertyFocusBrightnessNpcValue @@ -93,7 +108,7 @@ public void OnHoverEnter(float shaderPropertyFocusBrightnessValue) _isHovered = true; } - public void OnHoverExit(HVRGrabberBase _, HVRGrabbable __) + private void OnHoverExit(VrGrabArgs _) { if (_featureBrightenUp) { diff --git a/Assets/Gothic-VR/Scripts/Adapters/VRNpc.cs b/Assets/Gothic-VR/Scripts/Adapters/VRNpc.cs index 825aa5003..41bb7c5bb 100644 --- a/Assets/Gothic-VR/Scripts/Adapters/VRNpc.cs +++ b/Assets/Gothic-VR/Scripts/Adapters/VRNpc.cs @@ -1,5 +1,6 @@ #if GOTHIC_HVR_INSTALLED using Gothic.Core.Adapters.Npc; +using Gothic.Core.Adapters.UI.StatusBars; using Gothic.Core.Manager; using Gothic.Core.Models.Container; using Gothic.Core.Models.Vm; @@ -9,8 +10,8 @@ using Gothic.Core.Services.World; using Gothic.Core; using Gothic.Core.Extensions; -using HurricaneVR.Framework.Core; -using HurricaneVR.Framework.Core.Grabbers; +using Gothic.VR.Interaction.Components; +using Gothic.VR.Interaction.Models; using Reflex.Attributes; using UnityEngine; using ZenKit.Daedalus; @@ -27,22 +28,55 @@ public class VRNpc : MonoBehaviour private NpcContainer _npcData; private VRNpcLoot _npcLoot; + private VrInteractable _interactable; + private StatusBarAdapter _healthBar; private void Awake() { _npcData = GetComponentInParent().Npc.GetUserData(); _npcLoot = GetComponent(); + _healthBar = GetComponentInChildren(true); + + _interactable = VrInteractable.Find(this); + _interactable.Grabbed += OnGrabbed; + _interactable.HoverEntered += OnHoverEnter; + _interactable.HoverExited += OnHoverExit; + } + + private void OnDestroy() + { + if (_interactable == null) + return; + + _interactable.Grabbed -= OnGrabbed; + _interactable.HoverEntered -= OnHoverEnter; + _interactable.HoverExited -= OnHoverExit; + } + + /// + /// The NPC's health bar is only visible while a hand hovers over the NPC. + /// + private void OnHoverEnter(VrGrabArgs _) + { + if (_healthBar != null) + _healthBar.EnableBar(); + } + + private void OnHoverExit(VrGrabArgs _) + { + if (_healthBar != null) + _healthBar.DisableBar(); } - public void OnGrabbed(HVRGrabberBase grabber, HVRGrabbable grabbable) + private void OnGrabbed(VrGrabArgs args) { var isDead = _npcData.Props.BodyState == VmGothicEnums.BodyState.BsDead; if (isDead && _configService.Dev.EnableNpcLooting && _npcLoot != null) { _npcLoot.Toggle(_npcData); - // HVR sets isKinematic=false during grab; release immediately and freeze the corpse - grabber.ForceRelease(); + // Grabbing turns physics on (VRPlayerItemAdapter); release immediately and freeze the corpse + args.Interactable.ForceRelease(); _physicsService.DisablePhysicsForNpc(_npcData.PrefabProps); return; } @@ -57,8 +91,8 @@ public void OnGrabbed(HVRGrabberBase grabber, HVRGrabbable grabbable) _npcAiService.ExecutePerception(VmGothicEnums.PerceptionType.AssessTalk, _npcData.Props, _npcData.Instance, null, (NpcInstance)_gameStateService.GothicVm.GlobalHero); } - // Talking is a click, not a grab: release (HVR's grab turns physics on) and keep a seated NPC kinematic. - grabber.ForceRelease(); + // Talking is a click, not a grab: release (grabbing turns physics on) and keep a seated NPC kinematic. + args.Interactable.ForceRelease(); if (_npcData.IsUsingMob()) _physicsService.DisablePhysicsForNpc(_npcData.PrefabProps); } diff --git a/Assets/Gothic-VR/Scripts/Adapters/VRNpcLoot.cs b/Assets/Gothic-VR/Scripts/Adapters/VRNpcLoot.cs index 8181fe115..f93d81ca0 100644 --- a/Assets/Gothic-VR/Scripts/Adapters/VRNpcLoot.cs +++ b/Assets/Gothic-VR/Scripts/Adapters/VRNpcLoot.cs @@ -3,7 +3,6 @@ using System.Collections; using System.Collections.Generic; using System.Linq; -using Assets.HurricaneVR.Framework.Shared.Utilities; using Gothic.Core; using Gothic.Core.Adapters.Npc; using Gothic.Core.Adapters.Vob; @@ -16,10 +15,10 @@ using Gothic.Core.Services.Caches; using Gothic.Core.Services.Npc; using Gothic.Core.Services.Vobs; +using Gothic.VR.Interaction.Components; +using Gothic.VR.Interaction.Models; +using Gothic.VR.Interaction.Ports; using Gothic.VR.Services; -using HurricaneVR.Framework.Core; -using HurricaneVR.Framework.Core.Grabbers; -using HurricaneVR.Framework.Core.Sockets; using Reflex.Attributes; using TMPro; using UnityEngine; @@ -46,7 +45,7 @@ public class VRNpcLoot : MonoBehaviour private NpcContainer _npcContainer; private NpcLoader _npcLoader; - private readonly List _sockets = new(); + private readonly List _sockets = new(); private readonly List _socketRoots = new(); private bool _isOpen; private bool _tempIgnoreSocketing; @@ -119,8 +118,8 @@ private void CreateSockets() socketGo.transform.localRotation = Quaternion.identity; socketGo.transform.localScale = Vector3.one * 1.6f; - var socket = socketGo.GetComponentInChildren(); - socket.Released.AddListener(OnItemTakenFromLoot); + var socket = socketGo.GetComponentInChildren(); + socket.Released += OnItemTakenFromLoot; _socketRoots.Add(socketGo); _sockets.Add(socket); @@ -129,6 +128,9 @@ private void CreateSockets() private void DestroySockets() { + foreach (var socket in _sockets) + socket.Released -= OnItemTakenFromLoot; + foreach (var root in _socketRoots) { if (root != null) @@ -213,11 +215,11 @@ private IEnumerator PopulateSockets(bool clearFirst) yield return null; - var grabbable = vobContainer.Go.GetComponentInChildren(true); - var freeSocket = _sockets.FirstOrDefault(s => !s.IsGrabbing); + var interactable = vobContainer.Go.GetComponentInChildren(true); + var freeSocket = _sockets.FirstOrDefault(s => !s.IsOccupied); if (freeSocket != null) { - freeSocket.TryGrab(grabbable, true, true); + freeSocket.TryPlace(interactable, true); if (entry.IsEquipped) AddEquippedLabel(GetSocketRoot(freeSocket)); } @@ -240,13 +242,13 @@ private void ClearSocketContents() foreach (var socket in _sockets) { - if (!socket.IsGrabbing) + if (!socket.IsOccupied) continue; - var heldRoot = socket.HeldObject.transform.parent.gameObject; + var heldRoot = socket.Held.transform.parent.gameObject; socket.ForceRelease(); heldRoot.SetActive(false); - this.ExecuteNextUpdate(() => Destroy(heldRoot)); + StartCoroutine(DestroyNextFrame(heldRoot)); } } @@ -263,12 +265,18 @@ private IEnumerator CloseSockets() _vrWeaponService.DrawSoundsActive = true; } - public void OnItemTakenFromLoot(HVRGrabberBase grabber, HVRGrabbable grabbable) + private static IEnumerator DestroyNextFrame(GameObject go) + { + yield return null; + Destroy(go); + } + + private void OnItemTakenFromLoot(VrGrabArgs args) { - if (_tempIgnoreSocketing) + if (_tempIgnoreSocketing || args.Interactable == null) return; - var vobLoader = grabbable.GetComponentInParent(); + var vobLoader = args.Interactable.GetComponentInParent(); if (vobLoader?.Container == null) return; @@ -355,7 +363,7 @@ private GameObject FindEquippedWeaponGo(ItemInstance equipped) return null; } - private GameObject GetSocketRoot(HVRSocket socket) + private GameObject GetSocketRoot(IVrSocket socket) { var idx = _sockets.IndexOf(socket); return idx >= 0 && idx < _socketRoots.Count ? _socketRoots[idx] : null; diff --git a/Assets/Gothic-VR/Scripts/Adapters/Vob/Container/VRVobContainerSocketInventory.cs b/Assets/Gothic-VR/Scripts/Adapters/Vob/Container/VRVobContainerSocketInventory.cs index 5c43a6669..3dff0704e 100644 --- a/Assets/Gothic-VR/Scripts/Adapters/Vob/Container/VRVobContainerSocketInventory.cs +++ b/Assets/Gothic-VR/Scripts/Adapters/Vob/Container/VRVobContainerSocketInventory.cs @@ -1,10 +1,11 @@ #if GOTHIC_HVR_INSTALLED using Gothic.Core.Adapters.Vob; using Gothic.Core.Models.Container; +using System.Collections.Generic; using Gothic.Core.Models.Vm; +using Gothic.VR.Interaction.Models; +using Gothic.VR.Interaction.Ports; using Gothic.VR.Services; -using HurricaneVR.Framework.Core; -using HurricaneVR.Framework.Core.Grabbers; using Reflex.Attributes; using UnityEngine; @@ -12,22 +13,60 @@ namespace Gothic.VR.Adapters.Vob.Container { /// /// Handle Socket-events for a whole Container (e.g., chest) and its corresponding sockets (rings where we put items into). + /// Plays the weapon (un)draw sound when a weapon is put into or taken out of a socket. /// public class VRVobContainerSocketInventory : MonoBehaviour { [Inject] private VRWeaponService _vrWeaponService; - public void OnBeforeGrabbed(HVRGrabberBase grabber, HVRGrabbable grabbable) + [Tooltip("Sockets outside of this GameObject's hierarchy (e.g. the player's holsters). " + + "Sockets below this GameObject are found automatically.")] + [SerializeField] private GameObject[] _additionalSockets; + + private readonly List _sockets = new(); + + private void Awake() { - var container = grabbable.GetComponentInParent()?.Container; + _sockets.AddRange(GetComponentsInChildren(true)); + foreach (var socketGo in _additionalSockets) + { + if (socketGo != null && socketGo.TryGetComponent(out IVrSocket socket)) + _sockets.Add(socket); + } + + foreach (var socket in _sockets) + { + socket.BeforeGrabbed += OnBeforeGrabbed; + socket.Released += OnReleased; + } + } + + private void OnDestroy() + { + foreach (var socket in _sockets) + { + socket.BeforeGrabbed -= OnBeforeGrabbed; + socket.Released -= OnReleased; + } + } + + private void OnBeforeGrabbed(VrGrabArgs args) + { + if (args.Interactable == null) + return; + + var container = args.Interactable.GetComponentInParent()?.Container; if (!IsWeapon(container)) return; _vrWeaponService.PlayUndrawSound(container); } - public void OnReleased(HVRGrabberBase grabber, HVRGrabbable grabbable) + private void OnReleased(VrGrabArgs args) { - var container = grabbable.GetComponentInParent()?.Container; + if (args.Interactable == null) + return; + + var container = args.Interactable.GetComponentInParent()?.Container; if (!IsWeapon(container)) return; _vrWeaponService.PlayDrawSound(container); diff --git a/Assets/Gothic-VR/Scripts/Adapters/Vob/LockPicking/VRContainerDoorPickingInteraction.cs b/Assets/Gothic-VR/Scripts/Adapters/Vob/LockPicking/VRContainerDoorPickingInteraction.cs index a56cf5691..c79d5bc55 100644 --- a/Assets/Gothic-VR/Scripts/Adapters/Vob/LockPicking/VRContainerDoorPickingInteraction.cs +++ b/Assets/Gothic-VR/Scripts/Adapters/Vob/LockPicking/VRContainerDoorPickingInteraction.cs @@ -10,7 +10,7 @@ using Gothic.VR.Services; using Gothic.VR.Adapters.Vob.VobItem; using Gothic.VR.Interaction.Models; -using HurricaneVR.Framework.Components; +using Gothic.VR.Interaction.Ports; using Reflex.Attributes; using UnityEngine; using ZenKit.Vobs; @@ -23,7 +23,6 @@ public class VRContainerDoorPickingInteraction : MonoBehaviour [SerializeField] private GameObject _rootGO; [SerializeField] private AudioSource _audioSource; - [SerializeField] private HVRPhysicsDoor _hvrPhysicsDoor; [Inject] private readonly VRPlayerService _vrPlayerService; [Inject] private readonly AudioService _audioService; @@ -36,6 +35,7 @@ public class VRContainerDoorPickingInteraction : MonoBehaviour private VrHandSide _handSide; private VobContainer _lockPick; private VobContainer _lockable; + private IVrHinge _hinge; private const string _lockInteractionColliderName = "LockPickInteraction"; @@ -51,7 +51,10 @@ public enum DoorLockStatus private void Start() { - _lockable = GetComponentInParent().Container; + var vobLoader = GetComponentInParent(); + _lockable = vobLoader.Container; + // Every door and chest has exactly one hinge (the door wing or the chest lid). + _hinge = vobLoader.GetComponentInChildren(true); switch (_lockable.Vob) { case IDoor door: @@ -84,7 +87,7 @@ private IEnumerator StartDelayed() yield return null; // Deactivate rotation - _hvrPhysicsDoor.Lock(); + _hinge.Lock(); } private void OnTriggerEnter(Collider other) @@ -233,12 +236,12 @@ private void TryUnlockWithKey(Collider other) private void UnlockAndPushOpen() { // Reactivate rotation - _hvrPhysicsDoor.Unlock(); + _hinge.Unlock(); // Apply force in the door's forward direction (world space) - var pushDirection = _hvrPhysicsDoor.transform.forward; + var pushDirection = _hinge.Transform.forward; var pushForce = 10f; - _hvrPhysicsDoor.GetComponent().AddForce(pushDirection * pushForce, ForceMode.Impulse); + _hinge.Rigidbody.AddForce(pushDirection * pushForce, ForceMode.Impulse); gameObject.SetActive(false); } diff --git a/Assets/Gothic-VR/Scripts/Adapters/Vob/VRDigSpot.cs b/Assets/Gothic-VR/Scripts/Adapters/Vob/VRDigSpot.cs index 7c57c2b9b..41bd31162 100644 --- a/Assets/Gothic-VR/Scripts/Adapters/Vob/VRDigSpot.cs +++ b/Assets/Gothic-VR/Scripts/Adapters/Vob/VRDigSpot.cs @@ -6,8 +6,7 @@ using Gothic.Core.Models.Container; using Gothic.Core.Models.Vm; using Gothic.Core.Services.Vm; -using HurricaneVR.Framework.Core; -using HurricaneVR.Framework.Core.Grabbers; +using Gothic.VR.Services; using Reflex.Attributes; using UnityEngine; using ZenKit.Vobs; @@ -38,22 +37,22 @@ public class VRDigSpot : MonoBehaviour private const string _stateOneSuffix = "_S1"; [Inject] private readonly VmService _vmService; + [Inject] private readonly VRPlayerService _vrPlayerService; private IInteractiveObject _mob; private Renderer[] _renderers; - private HVRHandGrabber[] _hands; private int _hits; private float _lastHitTime = float.NegativeInfinity; - private HVRGrabbable _lastWeapon; + private GameObject _lastWeapon; private bool? _isLastWeaponAllowed; private Collider[] _lastWeaponColliders; + private Rigidbody _lastWeaponRigidbody; private void Start() { var loader = GetComponentInParent(); _mob = loader?.Container?.Vob as IInteractiveObject; _renderers = loader != null ? loader.GetComponentsInChildren(true) : Array.Empty(); - _hands = FindObjectsByType(FindObjectsSortMode.None); // Also tells whether the mob is visible at all (G2 X marks were invisible in an older playtest). Logger.Log($"[VRDigSpot] '{loader?.name}' ready: func={_mob?.OnStateChangeFunction}{_stateOneSuffix}, " + @@ -69,31 +68,38 @@ private void FixedUpdate() if (!TryGetBounds(out var spotBounds)) return; - foreach (var hand in _hands) - { - var weapon = hand != null ? hand.GrabbedTarget : null; - if (weapon == null) - continue; + if (TryRegisterHit(_vrPlayerService.GrabbedItemLeft, spotBounds)) + return; - CacheWeapon(weapon); + TryRegisterHit(_vrPlayerService.GrabbedItemRight, spotBounds); + } - var rb = weapon.Rigidbody; - if (rb == null || rb.linearVelocity.magnitude < _minSwingSpeed) - continue; + /// + /// Checks the item in one hand (null if the hand is empty). + /// + private bool TryRegisterHit(GameObject weapon, Bounds spotBounds) + { + if (weapon == null) + return false; - if (!IntersectsWeapon(spotBounds)) - continue; + CacheWeapon(weapon); - // Cheapest checks first: the tool lookup only runs for a fast weapon touching the spot. - if (!IsAllowedTool(weapon)) - continue; + var rb = _lastWeaponRigidbody; + if (rb == null || rb.linearVelocity.magnitude < _minSwingSpeed) + return false; - RegisterHit(weapon); - return; - } + if (!IntersectsWeapon(spotBounds)) + return false; + + // Cheapest checks first: the tool lookup only runs for a fast weapon touching the spot. + if (!IsAllowedTool(weapon)) + return false; + + RegisterHit(weapon); + return true; } - private void CacheWeapon(HVRGrabbable weapon) + private void CacheWeapon(GameObject weapon) { if (weapon == _lastWeapon) return; @@ -101,15 +107,16 @@ private void CacheWeapon(HVRGrabbable weapon) _lastWeapon = weapon; _isLastWeaponAllowed = null; _lastWeaponColliders = weapon.GetComponentsInChildren(); + _lastWeaponRigidbody = weapon.GetComponent(); } - private bool IsAllowedTool(HVRGrabbable weapon) + private bool IsAllowedTool(GameObject weapon) { _isLastWeaponAllowed ??= CheckAllowedTool(weapon); return _isLastWeaponAllowed.Value; } - private bool CheckAllowedTool(HVRGrabbable weapon) + private bool CheckAllowedTool(GameObject weapon) { var container = weapon.GetComponentInParent()?.Container; var item = container?.GetItemInstance(); @@ -157,7 +164,7 @@ private bool IntersectsWeapon(Bounds spotBounds) return false; } - private void RegisterHit(HVRGrabbable weapon) + private void RegisterHit(GameObject weapon) { _lastHitTime = Time.time; _hits++; diff --git a/Assets/Gothic-VR/Scripts/Adapters/Vob/VRMobInteraction.cs b/Assets/Gothic-VR/Scripts/Adapters/Vob/VRMobInteraction.cs index 202b7b594..799f329af 100644 --- a/Assets/Gothic-VR/Scripts/Adapters/Vob/VRMobInteraction.cs +++ b/Assets/Gothic-VR/Scripts/Adapters/Vob/VRMobInteraction.cs @@ -2,9 +2,9 @@ using Gothic.Core.Adapters.Vob; using Gothic.Core.Logging; using Gothic.Core.Services.Vobs; +using Gothic.VR.Interaction.Components; +using Gothic.VR.Interaction.Models; using Gothic.VR.Services; -using HurricaneVR.Framework.Core; -using HurricaneVR.Framework.Core.Grabbers; using Reflex.Attributes; using UnityEngine; using Logger = Gothic.Core.Logging.Logger; @@ -12,7 +12,7 @@ namespace Gothic.VR.Adapters.Vob { /// - /// Uses a mob (wheel, lever, shrine, bed, ...) when the hero grabs it. Sits next to the mob's HVRGrabbable. + /// Uses a mob (wheel, lever, shrine, bed, ...) when the hero grabs it. Sits next to the mob's VrInteractable. /// The logic itself is platform neutral (MobInteractionService). /// public class VRMobInteraction : MonoBehaviour @@ -21,17 +21,30 @@ public class VRMobInteraction : MonoBehaviour [Inject] private readonly MobInteractionService _mobInteractionService; private bool _mobActivated; + private VrInteractable _interactable; + /// + /// Subscribed in Start (not Awake), so that e.g. VRSeat handles a grab first (as before). + /// private void Start() { - if (TryGetComponent(out HVRGrabbable grabbable)) - { - grabbable.Grabbed.AddListener(OnGrabbed); - grabbable.Released.AddListener(OnReleased); - } + if (!TryGetComponent(out _interactable)) + return; + + _interactable.Grabbed += OnGrabbed; + _interactable.Released += OnReleased; + } + + private void OnDestroy() + { + if (_interactable == null) + return; + + _interactable.Grabbed -= OnGrabbed; + _interactable.Released -= OnReleased; } - private void OnGrabbed(HVRGrabberBase grabber, HVRGrabbable grabbable) + private void OnGrabbed(VrGrabArgs args) { if (_mobActivated) return; @@ -46,7 +59,7 @@ private void OnGrabbed(HVRGrabberBase grabber, HVRGrabbable grabbable) _vrPlayerService.HandleMobGrab(vobLoader); } - private void OnReleased(HVRGrabberBase _, HVRGrabbable __) + private void OnReleased(VrGrabArgs _) { _mobActivated = false; } diff --git a/Assets/Gothic-VR/Scripts/Adapters/Vob/VRVobContainer.cs b/Assets/Gothic-VR/Scripts/Adapters/Vob/VRVobContainer.cs index 7273766c1..42598ccce 100644 --- a/Assets/Gothic-VR/Scripts/Adapters/Vob/VRVobContainer.cs +++ b/Assets/Gothic-VR/Scripts/Adapters/Vob/VRVobContainer.cs @@ -8,7 +8,7 @@ using Gothic.Core.Logging; using Gothic.Core.Manager; using Gothic.Core.Services.Caches; -using HurricaneVR.Framework.Components; +using Gothic.VR.Interaction.Ports; using Reflex.Attributes; using UnityEngine; using UnityEngine.SceneManagement; @@ -44,8 +44,8 @@ private void Start() } /// - /// Add opening and closing sound to the containers HVR settings. - /// The logic about when to play them is provided by HVR itself. + /// Add opening and closing sound to the container's hinge (lid). + /// The hinge itself decides when to play them. /// private void PrepareSounds(IContainer vobContainer) { @@ -75,9 +75,8 @@ private void PrepareSounds(IContainer vobContainer) } // We leverage the same "door" script for containers (As it's also just an object to be rotated. - var hvrDoor = GetComponentInChildren(); - hvrDoor.SFXOpened = _containerOpenedClips[mdsName.ToLower()]; - hvrDoor.SFXClosed = _containerClosedClips[mdsName.ToLower()]; + var hinge = GetComponentInChildren(); + hinge.SetSounds(_containerOpenedClips[mdsName.ToLower()], _containerClosedClips[mdsName.ToLower()]); } } } diff --git a/Assets/Gothic-VR/Scripts/Adapters/Vob/VRVobDoor.cs b/Assets/Gothic-VR/Scripts/Adapters/Vob/VRVobDoor.cs index 249f6a260..c167e3a27 100644 --- a/Assets/Gothic-VR/Scripts/Adapters/Vob/VRVobDoor.cs +++ b/Assets/Gothic-VR/Scripts/Adapters/Vob/VRVobDoor.cs @@ -6,7 +6,7 @@ using Gothic.Core.Services.Caches; using Gothic.Core; using Gothic.Core.Extensions; -using HurricaneVR.Framework.Components; +using Gothic.VR.Interaction.Ports; using Reflex.Attributes; using UnityEngine; using ZenKit.Vobs; @@ -29,8 +29,8 @@ private void Start() } /// - /// Add opening and closing sound to the containers HVR settings. - /// The logic about when to play them is provided by HVR itself. + /// Add opening and closing sound to the door's hinge. + /// The hinge itself decides when to play them. /// private void PrepareSounds(IDoor props) { @@ -65,9 +65,8 @@ private void PrepareSounds(IDoor props) _doorClosedClips.Add(mdsName.ToLower(), _audioService.GetRandomSoundClip(closeSoundEffect)); } - var hvrDoor = GetComponentInChildren(); - hvrDoor.SFXOpened = _doorOpenedClips[mdsName.ToLower()]; - hvrDoor.SFXClosed = _doorClosedClips[mdsName.ToLower()]; + var hinge = GetComponentInChildren(); + hinge.SetSounds(_doorOpenedClips[mdsName.ToLower()], _doorClosedClips[mdsName.ToLower()]); } } } diff --git a/Assets/Gothic-VR/Scripts/Adapters/Vob/VRVobItem.cs b/Assets/Gothic-VR/Scripts/Adapters/Vob/VRVobItem.cs index e61472ae7..4988eddce 100644 --- a/Assets/Gothic-VR/Scripts/Adapters/Vob/VRVobItem.cs +++ b/Assets/Gothic-VR/Scripts/Adapters/Vob/VRVobItem.cs @@ -8,8 +8,8 @@ using Gothic.VR.Services; using Gothic.Core; using Gothic.Core.Services; -using HurricaneVR.Framework.Core; -using HurricaneVR.Framework.Core.Grabbers; +using Gothic.VR.Interaction.Components; +using Gothic.VR.Interaction.Models; using Reflex.Attributes; using UnityEngine; using UnityEngine.Animations; @@ -32,6 +32,8 @@ public class VRVobItem : MonoBehaviour private readonly Collider[] _overlapColliders = new Collider[1]; private static int _ignoreLayerCollisionCheck; + private VrInteractable _interactable; + private struct OverlapCheckData { @@ -54,11 +56,24 @@ private void Awake() { _ignoreLayerCollisionCheck = Constants.VobItemNoWorldCollision | Constants.HandLayer; } + + _interactable = GetComponent(); + _interactable.Grabbed += OnGrabbed; + _interactable.Released += OnReleased; } private void Start() { - GetComponent().SetupColliders(); + _interactable.SetupColliders(); + } + + private void OnDestroy() + { + if (_interactable == null) + return; + + _interactable.Grabbed -= OnGrabbed; + _interactable.Released -= OnReleased; } /// @@ -66,21 +81,21 @@ private void Start() /// 2. Grabbed via HandGrabber (direct grabbing into hand) /// 3. Grabbed via Socket (e.g., backpack) /// - public void OnGrabbed(HVRGrabberBase grabber, HVRGrabbable grabbable) + private void OnGrabbed(VrGrabArgs args) { // Ignore grabbing once, if MarvinSelectionMode is active. if (_marvinService.IsMarvinSelectionMode) { - _marvinService.MarvinSelectionGO = grabbable.gameObject; + _marvinService.MarvinSelectionGO = args.Interactable.gameObject; return; } // Held and socketed items must not push our own CharacterController. - _vrPlayerService.IgnorePlayerCollision(grabbable, true); + _vrPlayerService.IgnorePlayerCollision(args.Interactable, true); // OnGrabbed is normally called multiple times. Even after an object is already socketed. If so, then let's stop Grab behaviour. // If we sock an object on our hips or backpack etc. - if (grabber is HVRSocket) + if (args.Kind == VrGrabberKind.Socket) return; // Stop collisions while being dragged around (at least shortly; otherwise e.g. items might stick inside chests when pulled out). @@ -94,7 +109,7 @@ public void OnGrabbed(HVRGrabberBase grabber, HVRGrabbable grabbable) StartCoroutine(ReEnableCollisionRoutine()); _vobMeshCullingService?.StartTrackVobPositionUpdates(gameObject); - _vrPlayerService.SetGrab(grabber, grabbable); + _vrPlayerService.SetGrab(args); } /// @@ -102,25 +117,25 @@ public void OnGrabbed(HVRGrabberBase grabber, HVRGrabbable grabbable) /// 2. Grabbed via HandGrabber (direct grabbing into hand) /// 3. Grabbed via Socket (e.g., backpack) /// - public void OnReleased(HVRGrabberBase grabber, HVRGrabbable grabbable) + private void OnReleased(VrGrabArgs args) { // If we release an object from our hips or backpack etc. // We then assume, that the item is already with correct values as it was grabbed before (shader, layer, ...) - if (grabber is HVRSocket) + if (args.Kind == VrGrabberKind.Socket) return; gameObject.layer = Constants.VobItemLayer; // Back to default // Dropped into the world (and not still in the other hand): we get stuck at it again. - if (!grabbable.IsBeingHeld) - _vrPlayerService.IgnorePlayerCollision(grabbable, false); + if (!args.Interactable.IsHeld) + _vrPlayerService.IgnorePlayerCollision(args.Interactable, false); // Disable "ghostification" of object. _dynamicMaterialService.ResetDynamicValue(gameObject, Constants.ShaderPropertyTransparency, Constants.ShaderPropertyTransparencyDefault); _vobMeshCullingService?.StopTrackVobPositionUpdates(gameObject); - _vrPlayerService.UnsetGrab(grabber, grabbable); + _vrPlayerService.UnsetGrab(args); } /// diff --git a/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrEnumExtensions.cs b/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrEnumExtensions.cs index fa554aa4c..adafcfa07 100644 --- a/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrEnumExtensions.cs +++ b/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrEnumExtensions.cs @@ -1,6 +1,7 @@ #if GOTHIC_HVR_INSTALLED using System; using Gothic.VR.Interaction.Models; +using HurricaneVR.Framework.Core.Grabbers; using HurricaneVR.Framework.Core.Player; using HurricaneVR.Framework.Shared; @@ -21,6 +22,30 @@ public static VrHandSide ToVr(this HVRHandSide side) return side == HVRHandSide.Left ? VrHandSide.Left : VrHandSide.Right; } + public static VrGrabberKind ToVrKind(this HVRGrabberBase grabber) + { + return grabber switch + { + HVRHandGrabber => VrGrabberKind.Hand, + HVRForceGrabber => VrGrabberKind.Distance, + HVRSocket => VrGrabberKind.Socket, + _ => VrGrabberKind.Other + }; + } + + /// + /// Hand of a hand or distance grabber. Left for all other grabbers. + /// + public static VrHandSide ToVrHandSide(this HVRGrabberBase grabber) + { + return grabber switch + { + HVRHandGrabber hand => hand.HandSide.ToVr(), + HVRForceGrabber force when force.HandGrabber != null => force.HandGrabber.HandSide.ToVr(), + _ => VrHandSide.Left + }; + } + public static HVRButtons ToHvr(this VrButton button) { return button switch diff --git a/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrGrabArgsFactory.cs b/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrGrabArgsFactory.cs new file mode 100644 index 000000000..ba754a132 --- /dev/null +++ b/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrGrabArgsFactory.cs @@ -0,0 +1,45 @@ +#if GOTHIC_HVR_INSTALLED +using Gothic.Core.Logging; +using Gothic.VR.Interaction.Components; +using Gothic.VR.Interaction.Models; +using HurricaneVR.Framework.Core; +using HurricaneVR.Framework.Core.Grabbers; +using Logger = Gothic.Core.Logging.Logger; + +namespace Gothic.VR.Interaction.Backends.Hvr +{ + /// + /// Translates HVR's (grabber, grabbable) event parameters into our VrGrabArgs. + /// + public static class HvrGrabArgsFactory + { + public static VrGrabArgs Create(HVRGrabberBase grabber, HVRGrabbable grabbable) + { + return new VrGrabArgs( + grabber.ToVrKind(), + grabber.ToVrHandSide(), + GetInteractable(grabbable), + grabber != null ? grabber.gameObject : null); + } + + /// + /// Our prefabs have a VrInteractable next to every HVRGrabbable. Grabbables from elsewhere (e.g. HVR's own + /// prefabs) get one on first use, so game code never receives null. + /// + public static VrInteractable GetInteractable(HVRGrabbable grabbable) + { + if (grabbable == null) + return null; + + var interactable = grabbable.GetComponent(); + if (interactable != null) + return interactable; + + Logger.LogWarning($"[HVR] {grabbable.name} has no VrInteractable. Adding it at runtime.", LogCat.VR); + interactable = grabbable.gameObject.AddComponent(); + grabbable.gameObject.AddComponent(); + return interactable; + } + } +} +#endif diff --git a/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrGrabArgsFactory.cs.meta b/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrGrabArgsFactory.cs.meta new file mode 100644 index 000000000..03cd04605 --- /dev/null +++ b/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrGrabArgsFactory.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 292ed7e3ea9db914f80f7be3bda8d853 \ No newline at end of file diff --git a/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrGrabberBridge.cs b/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrGrabberBridge.cs new file mode 100644 index 000000000..d3e7dd6c1 --- /dev/null +++ b/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrGrabberBridge.cs @@ -0,0 +1,87 @@ +#if GOTHIC_HVR_INSTALLED +using System; +using Gothic.VR.Interaction.Components; +using Gothic.VR.Interaction.Models; +using Gothic.VR.Interaction.Ports; +using HurricaneVR.Framework.Core; +using HurricaneVR.Framework.Core.Grabbers; +using UnityEngine; + +namespace Gothic.VR.Interaction.Backends.Hvr +{ + /// + /// Sits next to an HVR grabber (hand or force grabber) and forwards its events synchronously as IVrGrabber events. + /// BeforeGrabbed is also forwarded to the grabbed VrInteractable (HVRGrabbable has no such event). + /// + public class HvrGrabberBridge : MonoBehaviour, IVrGrabber + { + public event Action BeforeGrabbed; + public event Action Grabbed; + public event Action Released; + + private HVRGrabberBase _grabber; + private bool _isSubscribed; + + protected HVRGrabberBase Grabber + { + get + { + if (_grabber == null) + _grabber = GetComponent(); + return _grabber; + } + } + + public VrGrabberKind Kind => Grabber.ToVrKind(); + public VrHandSide HandSide => Grabber.ToVrHandSide(); + + public VrInteractable Held => Grabber.IsGrabbing + ? HvrGrabArgsFactory.GetInteractable(Grabber.GrabbedTarget) + : null; + + protected virtual void Awake() + { + if (Grabber == null) + return; + + Grabber.BeforeGrabbed.AddListener(OnBeforeGrabbed); + Grabber.Grabbed.AddListener(OnGrabbed); + Grabber.Released.AddListener(OnReleased); + _isSubscribed = true; + } + + protected virtual void OnDestroy() + { + if (!_isSubscribed || _grabber == null) + return; + + _grabber.BeforeGrabbed.RemoveListener(OnBeforeGrabbed); + _grabber.Grabbed.RemoveListener(OnGrabbed); + _grabber.Released.RemoveListener(OnReleased); + } + + public void ForceRelease() + { + Grabber.ForceRelease(); + } + + private void OnBeforeGrabbed(HVRGrabberBase grabber, HVRGrabbable grabbable) + { + var args = HvrGrabArgsFactory.Create(grabber, grabbable); + BeforeGrabbed?.Invoke(args); + if (args.Interactable != null) + args.Interactable.RaiseBeforeGrabbed(args); + } + + private void OnGrabbed(HVRGrabberBase grabber, HVRGrabbable grabbable) + { + Grabbed?.Invoke(HvrGrabArgsFactory.Create(grabber, grabbable)); + } + + private void OnReleased(HVRGrabberBase grabber, HVRGrabbable grabbable) + { + Released?.Invoke(HvrGrabArgsFactory.Create(grabber, grabbable)); + } + } +} +#endif diff --git a/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrGrabberBridge.cs.meta b/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrGrabberBridge.cs.meta new file mode 100644 index 000000000..deda76c4b --- /dev/null +++ b/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrGrabberBridge.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 4fc5f324acfcbc3428010a9db3c9422e \ No newline at end of file diff --git a/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrHingeBridge.cs b/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrHingeBridge.cs new file mode 100644 index 000000000..e0d4d3c87 --- /dev/null +++ b/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrHingeBridge.cs @@ -0,0 +1,45 @@ +#if GOTHIC_HVR_INSTALLED +using Gothic.VR.Interaction.Ports; +using HurricaneVR.Framework.Components; +using UnityEngine; + +namespace Gothic.VR.Interaction.Backends.Hvr +{ + /// + /// Sits next to an HVRPhysicsDoor (doors, and chest lids via HvrPhysicsChest). + /// + public class HvrHingeBridge : MonoBehaviour, IVrHinge + { + private HVRPhysicsDoor _door; + + private HVRPhysicsDoor Door + { + get + { + if (_door == null) + _door = GetComponent(); + return _door; + } + } + + public Transform Transform => transform; + public Rigidbody Rigidbody => GetComponent(); + + public void Lock() + { + Door.Lock(); + } + + public void Unlock() + { + Door.Unlock(); + } + + public void SetSounds(AudioClip opened, AudioClip closed) + { + Door.SFXOpened = opened; + Door.SFXClosed = closed; + } + } +} +#endif diff --git a/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrHingeBridge.cs.meta b/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrHingeBridge.cs.meta new file mode 100644 index 000000000..7a15f7d05 --- /dev/null +++ b/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrHingeBridge.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 9fca5660b7d87044b9f6309422813386 \ No newline at end of file diff --git a/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrInteractableBridge.cs b/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrInteractableBridge.cs new file mode 100644 index 000000000..bf6e3f25b --- /dev/null +++ b/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrInteractableBridge.cs @@ -0,0 +1,99 @@ +#if GOTHIC_HVR_INSTALLED +using System.Collections.Generic; +using Gothic.VR.Interaction.Components; +using Gothic.VR.Interaction.Ports; +using HurricaneVR.Framework.Core; +using HurricaneVR.Framework.Core.Grabbers; +using HurricaneVR.Framework.Core.Sockets; +using UnityEngine; + +namespace Gothic.VR.Interaction.Backends.Hvr +{ + /// + /// Sits next to an HVRGrabbable and its VrInteractable. Forwards HVR's grabbable events synchronously to the + /// VrInteractable and executes its commands on the HVRGrabbable. + /// + public class HvrInteractableBridge : MonoBehaviour, IVrInteractableBackend + { + private HVRGrabbable _grabbable; + private VrInteractable _interactable; + private bool _isSubscribed; + + private HVRGrabbable Grabbable + { + get + { + if (_grabbable == null) + _grabbable = GetComponent(); + return _grabbable; + } + } + + public bool IsHeld => Grabbable.IsBeingHeld; + public IReadOnlyList Colliders => Grabbable.Colliders; + + private void Awake() + { + _interactable = GetComponent(); + if (Grabbable == null || _interactable == null) + return; + + Grabbable.HoverEnter.AddListener(OnHoverEnter); + Grabbable.HoverExit.AddListener(OnHoverExit); + Grabbable.Grabbed.AddListener(OnGrabbed); + Grabbable.Released.AddListener(OnReleased); + _isSubscribed = true; + } + + private void OnDestroy() + { + if (!_isSubscribed || _grabbable == null) + return; + + _grabbable.HoverEnter.RemoveListener(OnHoverEnter); + _grabbable.HoverExit.RemoveListener(OnHoverExit); + _grabbable.Grabbed.RemoveListener(OnGrabbed); + _grabbable.Released.RemoveListener(OnReleased); + } + + public void ForceRelease() + { + Grabbable.ForceRelease(); + } + + public void SetupColliders() + { + Grabbable.SetupColliders(); + } + + public void SetSocketSounds(AudioClip socketed, AudioClip unsocketed) + { + if (!TryGetComponent(out HVRSocketable socketable)) + return; + + socketable.SocketedClip = socketed; + socketable.UnsocketedClip = unsocketed; + } + + private void OnHoverEnter(HVRGrabberBase grabber, HVRGrabbable grabbable) + { + _interactable.RaiseHoverEntered(HvrGrabArgsFactory.Create(grabber, grabbable)); + } + + private void OnHoverExit(HVRGrabberBase grabber, HVRGrabbable grabbable) + { + _interactable.RaiseHoverExited(HvrGrabArgsFactory.Create(grabber, grabbable)); + } + + private void OnGrabbed(HVRGrabberBase grabber, HVRGrabbable grabbable) + { + _interactable.RaiseGrabbed(HvrGrabArgsFactory.Create(grabber, grabbable)); + } + + private void OnReleased(HVRGrabberBase grabber, HVRGrabbable grabbable) + { + _interactable.RaiseReleased(HvrGrabArgsFactory.Create(grabber, grabbable)); + } + } +} +#endif diff --git a/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrInteractableBridge.cs.meta b/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrInteractableBridge.cs.meta new file mode 100644 index 000000000..ce3703878 --- /dev/null +++ b/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrInteractableBridge.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 594f5e7857d0629419c1bef807639a86 \ No newline at end of file diff --git a/Assets/Gothic-VR/Scripts/Adapters/Vob/Container/VRVobContainerPhysicsChest.cs b/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrPhysicsChest.cs similarity index 89% rename from Assets/Gothic-VR/Scripts/Adapters/Vob/Container/VRVobContainerPhysicsChest.cs rename to Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrPhysicsChest.cs index ba001a482..183b9f351 100644 --- a/Assets/Gothic-VR/Scripts/Adapters/Vob/Container/VRVobContainerPhysicsChest.cs +++ b/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrPhysicsChest.cs @@ -12,6 +12,8 @@ using Gothic.Core.Services.Caches; using Gothic.Core.Services.Meshes; using Gothic.Core.Services.Vobs; +using Gothic.VR.Interaction.Components; +using Gothic.VR.Interaction.Ports; using HurricaneVR.Framework.Components; using HurricaneVR.Framework.Core; using HurricaneVR.Framework.Core.Sockets; @@ -22,9 +24,13 @@ using ZenKit.Vobs; using Logger = Gothic.Core.Logging.Logger; -namespace Gothic.VR.Adapters.Vob.Container +namespace Gothic.VR.Interaction.Backends.Hvr { - public class VRVobContainerPhysicsChest : HVRPhysicsDoor + /// + /// Chest lid (HVR physics door) which fills the chest's sockets with its content when opened for the first time. + /// Temporarily in the HVR backend as it subclasses HVRPhysicsDoor. The sockets are used via IVrSocketContainer. + /// + public class HvrPhysicsChest : HVRPhysicsDoor { [Inject] private readonly MeshService _meshService; [Inject] private readonly VobService _vobService; @@ -45,6 +51,7 @@ public class VRVobContainerPhysicsChest : HVRPhysicsDoor [SerializeField] private HVRSocketContainer _socketContainer; [SerializeField] private BoxCollider _collectorCollider; private IContainer _vobContainer; + private IVrSocketContainer _sockets; // Flags to ensure we always call On*() once, everytime open/close status changes. private bool _openingForTheFirstTime = true; @@ -64,7 +71,8 @@ public struct ContentItem public override void Start() { base.Start(); - + + _sockets = _socketContainer.GetComponent(); _socketContainer.gameObject.SetActive(false); _vobContainer = _rootGo.GetComponentInParent().Container.VobAs(); @@ -114,7 +122,7 @@ private void OnClosed() /// private void AlignSockets() { - var sockets = _socketContainer.Sockets; + var sockets = _sockets.Sockets; // We need to dynamically fetch the bounding box of main mesh as some chests have the correct one inside BIP01 "CHEST_*_0" and others inside "ZM_CHEST*" var meshFilters = _rootGo @@ -172,7 +180,7 @@ private void AlignSockets() // _socketRadius - Location is based on a 50% shift into the desired area as the drawing of a circle starts centered // middleAlignment* - Centered location within a grid for an element // min.x - Start point to calculate from left top - socket.transform.localPosition = new ( + socket.Transform.localPosition = new ( _socketCollectionMargin + _socketRadius + middleAlignmentX + centeredMainBound.min.x + rowWidth * currentColumn, 0, _socketCollectionMargin + _socketRadius + middleAlignmentZ + centeredMainBound.min.z + rowDepth * currentRow @@ -237,20 +245,20 @@ private List ParseContent(string contents) private void PreSpawnContent(out AudioClip grabAudio, out AudioClip releaseAudio) { // We assume that all Slots have the same sound. Therefore fetching first only. - var firstSocket = _socketContainer.Sockets.First(); - grabAudio = firstSocket.AudioGrabbedFallback; - releaseAudio = firstSocket.AudioReleasedFallback; + var firstSocket = _sockets.Sockets.First(); + grabAudio = firstSocket.PlacedSoundFallback; + releaseAudio = firstSocket.RemovedSoundFallback; - foreach (var socket in _socketContainer.Sockets) + foreach (var socket in _sockets.Sockets) { - socket.AudioGrabbedFallback = null; - socket.AudioReleasedFallback = null; + socket.PlacedSoundFallback = null; + socket.RemovedSoundFallback = null; } } private IEnumerator SpawnContent(List contentItems) { - var sockets = _socketContainer.Sockets; + var sockets = _sockets.Sockets; if (contentItems.Count > sockets.Count) { @@ -282,10 +290,10 @@ private IEnumerator SpawnContent(List contentItems) private void PlaceObjectIntoContainer(VobContainer vobContainer) { - var grabbable = vobContainer.Go.GetComponentInChildren(true); - if (_socketContainer.TryFindAvailableSocket(grabbable, out var socket)) + var interactable = vobContainer.Go.GetComponentInChildren(true); + if (_sockets.TryFindFree(interactable, out var socket)) { - socket.TryGrab(grabbable, true, true); + socket.TryPlace(interactable, true); // We need to reset position as the element won't be placed inside it's parent in the chest. vobContainer.Go.transform.localPosition = Vector3.zero; } @@ -296,10 +304,10 @@ private IEnumerator PostSpawnContent(AudioClip grabAudio, AudioClip releaseAudio // We wait for some time to ensure the objects are automatically snapped into place. yield return new WaitForSeconds(1f); - foreach (var socket in _socketContainer.Sockets) + foreach (var socket in _sockets.Sockets) { - socket.AudioGrabbedFallback = grabAudio; - socket.AudioReleasedFallback = releaseAudio; + socket.PlacedSoundFallback = grabAudio; + socket.RemovedSoundFallback = releaseAudio; } } diff --git a/Assets/Gothic-VR/Scripts/Adapters/Vob/Container/VRVobContainerPhysicsChest.cs.meta b/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrPhysicsChest.cs.meta similarity index 100% rename from Assets/Gothic-VR/Scripts/Adapters/Vob/Container/VRVobContainerPhysicsChest.cs.meta rename to Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrPhysicsChest.cs.meta diff --git a/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrRig.cs b/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrRig.cs index c516d8013..80fafa37e 100644 --- a/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrRig.cs +++ b/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrRig.cs @@ -1,10 +1,13 @@ #if GOTHIC_HVR_INSTALLED using System; +using System.Collections.Generic; +using Gothic.Core.Logging; using Gothic.VR.Interaction.Models; using Gothic.VR.Interaction.Ports; using HurricaneVR.Framework.Core.Grabbers; using HurricaneVR.Framework.Core.Player; using UnityEngine; +using Logger = Gothic.Core.Logging.Logger; namespace Gothic.VR.Interaction.Backends.Hvr { @@ -15,6 +18,7 @@ namespace Gothic.VR.Interaction.Backends.Hvr public class HvrRig : HVRPlayerController, IVrRig { private Camera _cameraComponent; + private List _handGrabbers; public event Action Teleported; @@ -97,6 +101,22 @@ float IVrRig.StepOffset float IVrRig.FadeAlpha => ScreenFader ? ScreenFader.CurrentFade : 0f; + IReadOnlyList IVrRig.HandGrabbers + { + get + { + if (_handGrabbers != null) + return _handGrabbers; + + _handGrabbers = new List(); + AddGrabber(LeftHand); + AddGrabber(LeftHand ? LeftHand.ForceGrabber : null); + AddGrabber(RightHand); + AddGrabber(RightHand ? RightHand.ForceGrabber : null); + return _handGrabbers; + } + } + protected override void Awake() { base.Awake(); @@ -140,6 +160,17 @@ public void SetGrabbingEnabled(bool isEnabled) SetGrabbingEnabled(RightHand, isEnabled); } + private void AddGrabber(HVRGrabberBase grabber) + { + if (grabber == null) + return; + + if (grabber.TryGetComponent(out IVrGrabber bridge)) + _handGrabbers.Add(bridge); + else + Logger.LogError($"[HVR] {grabber.name} has no HvrGrabberBridge. Its grab events are lost.", LogCat.VR); + } + private static void SetGrabbingEnabled(HVRHandGrabber hand, bool isEnabled) { hand.AllowGrabbing = isEnabled; diff --git a/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrShoulderSocket.cs b/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrShoulderSocket.cs new file mode 100644 index 000000000..9a40be023 --- /dev/null +++ b/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrShoulderSocket.cs @@ -0,0 +1,12 @@ +#if GOTHIC_HVR_INSTALLED +namespace Gothic.VR.Interaction.Backends.Hvr +{ + /// + /// Shoulder holster with the same VobLoader re-parenting as HvrSocket. + /// HvrSocketBridge.IsShoulder detects it (VRBackpack refreshes its inventory when it's taken from a shoulder). + /// + public class HvrShoulderSocket : HvrSocket + { + } +} +#endif diff --git a/Assets/Gothic-VR/Scripts/Adapters/HVROverrides/VRShoulderSocket.cs.meta b/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrShoulderSocket.cs.meta similarity index 100% rename from Assets/Gothic-VR/Scripts/Adapters/HVROverrides/VRShoulderSocket.cs.meta rename to Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrShoulderSocket.cs.meta diff --git a/Assets/Gothic-VR/Scripts/Adapters/HVROverrides/VRSocket.cs b/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrSocket.cs similarity index 98% rename from Assets/Gothic-VR/Scripts/Adapters/HVROverrides/VRSocket.cs rename to Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrSocket.cs index fa22e5deb..6a3566ffd 100644 --- a/Assets/Gothic-VR/Scripts/Adapters/HVROverrides/VRSocket.cs +++ b/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrSocket.cs @@ -8,7 +8,7 @@ using UnityEngine; using ZenKit.Daedalus; -namespace Gothic.VR.Adapters.HVROverrides +namespace Gothic.VR.Interaction.Backends.Hvr { /// /// Our VobItems have the following structure: @@ -18,7 +18,7 @@ namespace Gothic.VR.Adapters.HVROverrides /// Problem is that HVR assumes the root of an object to be moved is the Grabbable GO. But on our end it's one level higher. /// This class therefore overwrites some logic to ensure, that our root with VobLoader (which will be used by e.g. Cullung) is the root. /// - public class VRSocket : HVRSocket + public class HvrSocket : HVRSocket { protected override void OnGrabbed(HVRGrabArgs args) { diff --git a/Assets/Gothic-VR/Scripts/Adapters/HVROverrides/VRSocket.cs.meta b/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrSocket.cs.meta similarity index 100% rename from Assets/Gothic-VR/Scripts/Adapters/HVROverrides/VRSocket.cs.meta rename to Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrSocket.cs.meta diff --git a/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrSocketBridge.cs b/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrSocketBridge.cs new file mode 100644 index 000000000..b8cc44b2b --- /dev/null +++ b/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrSocketBridge.cs @@ -0,0 +1,43 @@ +#if GOTHIC_HVR_INSTALLED +using Gothic.VR.Interaction.Components; +using Gothic.VR.Interaction.Ports; +using HurricaneVR.Framework.Core; +using HurricaneVR.Framework.Core.Grabbers; +using HurricaneVR.Framework.Core.Utils; +using UnityEngine; + +namespace Gothic.VR.Interaction.Backends.Hvr +{ + /// + /// Sits next to an HVRSocket (or a subclass like HvrSocket). Grabbed/Released are the "placed"/"removed" events. + /// + public class HvrSocketBridge : HvrGrabberBridge, IVrSocket + { + private HVRSocket Socket => (HVRSocket)Grabber; + + public Transform Transform => transform; + public bool IsOccupied => Socket.IsGrabbing; + public bool IsShoulder => Socket is HVRShoulderSocket or HvrShoulderSocket; + + public AudioClip PlacedSoundFallback + { + get => Socket.AudioGrabbedFallback; + set => Socket.AudioGrabbedFallback = value; + } + + public AudioClip RemovedSoundFallback + { + get => Socket.AudioReleasedFallback; + set => Socket.AudioReleasedFallback = value; + } + + public bool TryPlace(VrInteractable interactable, bool silent) + { + if (interactable == null || !interactable.TryGetComponent(out HVRGrabbable grabbable)) + return false; + + return Socket.TryGrab(grabbable, true, silent); + } + } +} +#endif diff --git a/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrSocketBridge.cs.meta b/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrSocketBridge.cs.meta new file mode 100644 index 000000000..be53bda43 --- /dev/null +++ b/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrSocketBridge.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 50fce3b6fdf41d541a8cb5f194cfd30a \ No newline at end of file diff --git a/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrSocketContainerBridge.cs b/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrSocketContainerBridge.cs new file mode 100644 index 000000000..dbcce81a4 --- /dev/null +++ b/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrSocketContainerBridge.cs @@ -0,0 +1,78 @@ +#if GOTHIC_HVR_INSTALLED +using System.Collections.Generic; +using Gothic.Core.Logging; +using Gothic.VR.Interaction.Components; +using Gothic.VR.Interaction.Ports; +using HurricaneVR.Framework.Core; +using HurricaneVR.Framework.Core.Sockets; +using UnityEngine; +using Logger = Gothic.Core.Logging.Logger; + +namespace Gothic.VR.Interaction.Backends.Hvr +{ + /// + /// Sits next to an HVRSocketContainer. Every socket of the container needs an HvrSocketBridge. + /// + public class HvrSocketContainerBridge : MonoBehaviour, IVrSocketContainer + { + private HVRSocketContainer _container; + + private HVRSocketContainer Container + { + get + { + if (_container == null) + _container = GetComponent(); + return _container; + } + } + + public IReadOnlyList Sockets + { + get + { + var result = new List(Container.Sockets.Count); + foreach (var hvrSocket in Container.Sockets) + { + var socket = GetSocket(hvrSocket); + if (socket != null) + result.Add(socket); + } + + return result; + } + } + + public bool TryFindFree(VrInteractable interactable, out IVrSocket socket) + { + socket = null; + if (interactable == null || !interactable.TryGetComponent(out HVRGrabbable grabbable)) + return false; + if (!Container.TryFindAvailableSocket(grabbable, out var hvrSocket)) + return false; + + socket = GetSocket(hvrSocket); + return socket != null; + } + + public bool TryAdd(VrInteractable interactable) + { + if (interactable == null || !interactable.TryGetComponent(out HVRGrabbable grabbable)) + return false; + + return Container.TryAddGrabbable(grabbable); + } + + private static IVrSocket GetSocket(Component hvrSocket) + { + if (hvrSocket == null) + return null; + + var socket = hvrSocket.GetComponent(); + if (socket == null) + Logger.LogError($"[HVR] Socket {hvrSocket.name} has no HvrSocketBridge.", LogCat.VR); + return socket; + } + } +} +#endif diff --git a/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrSocketContainerBridge.cs.meta b/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrSocketContainerBridge.cs.meta new file mode 100644 index 000000000..490fa9571 --- /dev/null +++ b/Assets/Gothic-VR/Scripts/Interaction/Backends/Hvr/HvrSocketContainerBridge.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 3698197d5ce58d542a61ce69122e3160 \ No newline at end of file diff --git a/Assets/Gothic-VR/Scripts/Interaction/Components.meta b/Assets/Gothic-VR/Scripts/Interaction/Components.meta new file mode 100644 index 000000000..b8f4465c7 --- /dev/null +++ b/Assets/Gothic-VR/Scripts/Interaction/Components.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 16f7052a8ff00494ea3eb30e85ff472a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gothic-VR/Scripts/Interaction/Components/VrInteractable.cs b/Assets/Gothic-VR/Scripts/Interaction/Components/VrInteractable.cs new file mode 100644 index 000000000..908a55e21 --- /dev/null +++ b/Assets/Gothic-VR/Scripts/Interaction/Components/VrInteractable.cs @@ -0,0 +1,104 @@ +using System; +using System.Collections.Generic; +using Gothic.VR.Interaction.Models; +using Gothic.VR.Interaction.Ports; +using UnityEngine; + +namespace Gothic.VR.Interaction.Components +{ + /// + /// Game-facing side of everything the player can grab or hover (items, mobs, NPCs, doors, backpack). + /// Adapters subscribe to its C# events instead of the VR backend's events. + /// A backend bridge (IVrInteractableBackend) on the same GameObject raises the events and does the work. + /// + /// Events are raised synchronously in the backend's order: HoverEntered, BeforeGrabbed, Grabbed, HoverExited, + /// Released. BeforeGrabbed is only raised for grabbers with a bridge (player hands and sockets). + /// + public class VrInteractable : MonoBehaviour + { + public event Action HoverEntered; + public event Action HoverExited; + public event Action BeforeGrabbed; + public event Action Grabbed; + public event Action Released; + + private IVrInteractableBackend _backend; + + /// + /// Held by any grabber (hand, distance grabber, socket). + /// + public bool IsHeld => Backend != null && Backend.IsHeld; + + public IReadOnlyList Colliders => Backend != null ? Backend.Colliders : Array.Empty(); + + private IVrInteractableBackend Backend + { + get + { + if (_backend == null) + _backend = GetComponent(); + return _backend; + } + } + + /// + /// The VrInteractable on this GameObject or (if none) the first one below it. + /// + public static VrInteractable Find(Component component) + { + var interactable = component.GetComponent(); + if (interactable == null) + interactable = component.GetComponentInChildren(true); + return interactable; + } + + /// + /// Releases the interactable from all grabbers. + /// + public void ForceRelease() + { + Backend?.ForceRelease(); + } + + /// + /// Re-collects the colliders (call after meshes/colliders were added at runtime). + /// + public void SetupColliders() + { + Backend?.SetupColliders(); + } + + /// + /// Sounds played when this interactable is put into or taken out of a socket. + /// + public void SetSocketSounds(AudioClip socketed, AudioClip unsocketed) + { + Backend?.SetSocketSounds(socketed, unsocketed); + } + + internal void RaiseHoverEntered(VrGrabArgs args) + { + HoverEntered?.Invoke(args); + } + + internal void RaiseHoverExited(VrGrabArgs args) + { + HoverExited?.Invoke(args); + } + + internal void RaiseBeforeGrabbed(VrGrabArgs args) + { + BeforeGrabbed?.Invoke(args); + } + + internal void RaiseGrabbed(VrGrabArgs args) + { + Grabbed?.Invoke(args); + } + + internal void RaiseReleased(VrGrabArgs args) + { + Released?.Invoke(args); + } + } +} diff --git a/Assets/Gothic-VR/Scripts/Interaction/Components/VrInteractable.cs.meta b/Assets/Gothic-VR/Scripts/Interaction/Components/VrInteractable.cs.meta new file mode 100644 index 000000000..2c12beb72 --- /dev/null +++ b/Assets/Gothic-VR/Scripts/Interaction/Components/VrInteractable.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 5165ad186aed3fb408c5d43079b20d34 \ No newline at end of file diff --git a/Assets/Gothic-VR/Scripts/Interaction/Models/VrGrabArgs.cs b/Assets/Gothic-VR/Scripts/Interaction/Models/VrGrabArgs.cs new file mode 100644 index 000000000..1fcec850b --- /dev/null +++ b/Assets/Gothic-VR/Scripts/Interaction/Models/VrGrabArgs.cs @@ -0,0 +1,41 @@ +using Gothic.VR.Interaction.Components; +using UnityEngine; + +namespace Gothic.VR.Interaction.Models +{ + /// + /// Payload of all grab, release and hover events (VrInteractable, IVrGrabber, IVrSocket). + /// + public readonly struct VrGrabArgs + { + /// + /// What grabbed (or released) the interactable. + /// + public readonly VrGrabberKind Kind; + + /// + /// The hand of the grabber. Only meaningful for Kind Hand and Distance; Left otherwise. + /// + public readonly VrHandSide HandSide; + + /// + /// The object that is grabbed, released or hovered. + /// + public readonly VrInteractable Interactable; + + /// + /// GameObject of the grabber (hand, socket, ...). Use GetComponent<IVrSocket>() for socket details. + /// + public readonly GameObject GrabberGo; + + public VrGrabArgs(VrGrabberKind kind, VrHandSide handSide, VrInteractable interactable, GameObject grabberGo) + { + Kind = kind; + HandSide = handSide; + Interactable = interactable; + GrabberGo = grabberGo; + } + + public bool IsHandOrDistance => Kind is VrGrabberKind.Hand or VrGrabberKind.Distance; + } +} diff --git a/Assets/Gothic-VR/Scripts/Interaction/Models/VrGrabArgs.cs.meta b/Assets/Gothic-VR/Scripts/Interaction/Models/VrGrabArgs.cs.meta new file mode 100644 index 000000000..6929f2466 --- /dev/null +++ b/Assets/Gothic-VR/Scripts/Interaction/Models/VrGrabArgs.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: a47fcdb489238664a904c9a88c3297ca \ No newline at end of file diff --git a/Assets/Gothic-VR/Scripts/Interaction/Models/VrGrabberKind.cs b/Assets/Gothic-VR/Scripts/Interaction/Models/VrGrabberKind.cs index 33aec975e..43bd2b592 100644 --- a/Assets/Gothic-VR/Scripts/Interaction/Models/VrGrabberKind.cs +++ b/Assets/Gothic-VR/Scripts/Interaction/Models/VrGrabberKind.cs @@ -5,8 +5,24 @@ namespace Gothic.VR.Interaction.Models /// public enum VrGrabberKind { + /// + /// A hand grabbing directly. + /// Hand, + + /// + /// A hand pulling an object from a distance (remote grab). The same object is grabbed by the Hand afterwards. + /// Distance, - Socket + + /// + /// A socket: holster, backpack slot, chest slot, ... + /// + Socket, + + /// + /// Any other grabber of the backend, e.g. a collector that forwards items into a socket container. + /// + Other } } diff --git a/Assets/Gothic-VR/Scripts/Interaction/Ports/IVrGrabber.cs b/Assets/Gothic-VR/Scripts/Interaction/Ports/IVrGrabber.cs new file mode 100644 index 000000000..895a353e0 --- /dev/null +++ b/Assets/Gothic-VR/Scripts/Interaction/Ports/IVrGrabber.cs @@ -0,0 +1,35 @@ +using System; +using Gothic.VR.Interaction.Components; +using Gothic.VR.Interaction.Models; + +namespace Gothic.VR.Interaction.Ports +{ + /// + /// Something that grabs interactables: a hand, a distance grabber or a socket (see IVrSocket). + /// Implemented by a backend bridge next to the backend's grabber. + /// + public interface IVrGrabber + { + VrGrabberKind Kind { get; } + + /// + /// Only meaningful for Kind Hand and Distance. + /// + VrHandSide HandSide { get; } + + /// + /// The currently held interactable or null. + /// + VrInteractable Held { get; } + + /// + /// Raised before the backend moves the interactable (e.g. to turn its physics on). + /// + event Action BeforeGrabbed; + + event Action Grabbed; + event Action Released; + + void ForceRelease(); + } +} diff --git a/Assets/Gothic-VR/Scripts/Interaction/Ports/IVrGrabber.cs.meta b/Assets/Gothic-VR/Scripts/Interaction/Ports/IVrGrabber.cs.meta new file mode 100644 index 000000000..045b46277 --- /dev/null +++ b/Assets/Gothic-VR/Scripts/Interaction/Ports/IVrGrabber.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: fb91eb2372e3e9a4494d7e1570d2bdfb \ No newline at end of file diff --git a/Assets/Gothic-VR/Scripts/Interaction/Ports/IVrHinge.cs b/Assets/Gothic-VR/Scripts/Interaction/Ports/IVrHinge.cs new file mode 100644 index 000000000..db138b212 --- /dev/null +++ b/Assets/Gothic-VR/Scripts/Interaction/Ports/IVrHinge.cs @@ -0,0 +1,25 @@ +using UnityEngine; + +namespace Gothic.VR.Interaction.Ports +{ + /// + /// A physically rotating door or chest lid. + /// + public interface IVrHinge + { + Transform Transform { get; } + Rigidbody Rigidbody { get; } + + /// + /// Stops the hinge from rotating (locked door/chest). + /// + void Lock(); + + void Unlock(); + + /// + /// Sounds played by the hinge when it reaches its opened or closed position. + /// + void SetSounds(AudioClip opened, AudioClip closed); + } +} diff --git a/Assets/Gothic-VR/Scripts/Interaction/Ports/IVrHinge.cs.meta b/Assets/Gothic-VR/Scripts/Interaction/Ports/IVrHinge.cs.meta new file mode 100644 index 000000000..900bb5e4e --- /dev/null +++ b/Assets/Gothic-VR/Scripts/Interaction/Ports/IVrHinge.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 23c023ef2afcd3e46b320519c47df4f1 \ No newline at end of file diff --git a/Assets/Gothic-VR/Scripts/Interaction/Ports/IVrInteractableBackend.cs b/Assets/Gothic-VR/Scripts/Interaction/Ports/IVrInteractableBackend.cs new file mode 100644 index 000000000..b842a3684 --- /dev/null +++ b/Assets/Gothic-VR/Scripts/Interaction/Ports/IVrInteractableBackend.cs @@ -0,0 +1,18 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace Gothic.VR.Interaction.Ports +{ + /// + /// Implemented by the backend bridge next to a VrInteractable. Game code uses VrInteractable instead. + /// The bridge also raises the VrInteractable events. + /// + public interface IVrInteractableBackend + { + bool IsHeld { get; } + IReadOnlyList Colliders { get; } + void ForceRelease(); + void SetupColliders(); + void SetSocketSounds(AudioClip socketed, AudioClip unsocketed); + } +} diff --git a/Assets/Gothic-VR/Scripts/Interaction/Ports/IVrInteractableBackend.cs.meta b/Assets/Gothic-VR/Scripts/Interaction/Ports/IVrInteractableBackend.cs.meta new file mode 100644 index 000000000..26ad4fca1 --- /dev/null +++ b/Assets/Gothic-VR/Scripts/Interaction/Ports/IVrInteractableBackend.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 3fb0750b3fe7c2543a407b5765e78c03 \ No newline at end of file diff --git a/Assets/Gothic-VR/Scripts/Interaction/Ports/IVrRig.cs b/Assets/Gothic-VR/Scripts/Interaction/Ports/IVrRig.cs index 6d768f995..cb7dd7524 100644 --- a/Assets/Gothic-VR/Scripts/Interaction/Ports/IVrRig.cs +++ b/Assets/Gothic-VR/Scripts/Interaction/Ports/IVrRig.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using Gothic.VR.Interaction.Models; using UnityEngine; @@ -55,6 +56,11 @@ public interface IVrRig /// float FadeAlpha { get; } + /// + /// Direct (Hand) and distance grabbers of both hands. + /// + IReadOnlyList HandGrabbers { get; } + /// /// Raised with the new feet position whenever the player is teleported. /// diff --git a/Assets/Gothic-VR/Scripts/Interaction/Ports/IVrSocket.cs b/Assets/Gothic-VR/Scripts/Interaction/Ports/IVrSocket.cs new file mode 100644 index 000000000..4455dd125 --- /dev/null +++ b/Assets/Gothic-VR/Scripts/Interaction/Ports/IVrSocket.cs @@ -0,0 +1,36 @@ +using Gothic.VR.Interaction.Components; +using UnityEngine; + +namespace Gothic.VR.Interaction.Ports +{ + /// + /// A slot that holds one interactable: hip holster, shoulder, backpack slot, chest slot, NPC loot slot. + /// Grabbed/Released (IVrGrabber) are raised when an interactable is placed into or taken out of it. + /// + public interface IVrSocket : IVrGrabber + { + Transform Transform { get; } + bool IsOccupied { get; } + + /// + /// True for over-the-shoulder sockets (the backpack and the right shoulder holster). + /// + bool IsShoulder { get; } + + /// + /// Places the interactable into this socket, ignoring the socket's filters. + /// + /// If true, no "placed" sound is played. + bool TryPlace(VrInteractable interactable, bool silent); + + /// + /// Played when an interactable without own socket sounds is placed. + /// + AudioClip PlacedSoundFallback { get; set; } + + /// + /// Played when an interactable without own socket sounds is removed. + /// + AudioClip RemovedSoundFallback { get; set; } + } +} diff --git a/Assets/Gothic-VR/Scripts/Interaction/Ports/IVrSocket.cs.meta b/Assets/Gothic-VR/Scripts/Interaction/Ports/IVrSocket.cs.meta new file mode 100644 index 000000000..31adbb96b --- /dev/null +++ b/Assets/Gothic-VR/Scripts/Interaction/Ports/IVrSocket.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 0bd9577d17152d741a3534bc69986541 \ No newline at end of file diff --git a/Assets/Gothic-VR/Scripts/Interaction/Ports/IVrSocketContainer.cs b/Assets/Gothic-VR/Scripts/Interaction/Ports/IVrSocketContainer.cs new file mode 100644 index 000000000..f390f511a --- /dev/null +++ b/Assets/Gothic-VR/Scripts/Interaction/Ports/IVrSocketContainer.cs @@ -0,0 +1,23 @@ +using System.Collections.Generic; +using Gothic.VR.Interaction.Components; + +namespace Gothic.VR.Interaction.Ports +{ + /// + /// A group of sockets (backpack inventory, chest content). + /// + public interface IVrSocketContainer + { + IReadOnlyList Sockets { get; } + + /// + /// Finds the first free socket which accepts the interactable. + /// + bool TryFindFree(VrInteractable interactable, out IVrSocket socket); + + /// + /// Places the interactable into the first free socket which accepts it (with sound). + /// + bool TryAdd(VrInteractable interactable); + } +} diff --git a/Assets/Gothic-VR/Scripts/Interaction/Ports/IVrSocketContainer.cs.meta b/Assets/Gothic-VR/Scripts/Interaction/Ports/IVrSocketContainer.cs.meta new file mode 100644 index 000000000..6b13c90bb --- /dev/null +++ b/Assets/Gothic-VR/Scripts/Interaction/Ports/IVrSocketContainer.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: cc17349213c5e6b4a8214b45d95b5bc8 \ No newline at end of file diff --git a/Assets/Gothic-VR/Scripts/Services/VRPlayerService.cs b/Assets/Gothic-VR/Scripts/Services/VRPlayerService.cs index effaeef49..5fd6f4cfb 100644 --- a/Assets/Gothic-VR/Scripts/Services/VRPlayerService.cs +++ b/Assets/Gothic-VR/Scripts/Services/VRPlayerService.cs @@ -12,8 +12,8 @@ using Gothic.Core.Models.Container; using Gothic.Core.Services.Caches; using Gothic.Core.Services.Npc; -using HurricaneVR.Framework.Core; -using HurricaneVR.Framework.Core.Grabbers; +using Gothic.VR.Interaction.Components; +using Gothic.VR.Interaction.Models; using Reflex.Attributes; using UnityEngine; using ZenKit.Vobs; @@ -22,7 +22,7 @@ namespace Gothic.VR.Services { /// - /// Contains global states about Hurricane VR player. + /// Contains global states about the VR player (items in hands). /// public class VRPlayerService { @@ -44,18 +44,16 @@ public enum HandType public bool IsDualGrabbed => GrabbedItemLeft != null && GrabbedItemLeft == GrabbedItemRight; - public void SetGrab(HVRGrabberBase grabber, HVRGrabbable grabbable) + /// + /// An item was grabbed by a hand (directly or by distance). Sockets and other grabbers are ignored. + /// + public void SetGrab(VrGrabArgs args) { - HVRHandGrabber handGrabber; - if (grabber is HVRForceGrabber forceGrabber) - handGrabber = forceGrabber.HandGrabber; - else - handGrabber = grabber as HVRHandGrabber; - - if (handGrabber == null) + if (!args.IsHandOrDistance) return; - if (handGrabber.IsLeftHand) + var grabbable = args.Interactable; + if (args.HandSide == VrHandSide.Left) { // If we did remote grabbing, this function is called twice (remote grabber+hand grabber). // As we already count remote grabbing as "in inventory", we skip it the second time. @@ -84,20 +82,17 @@ public void SetGrab(HVRGrabberBase grabber, HVRGrabbable grabbable) _playerService.AddItem(instanceName, vobItem.Amount); } - public void UnsetGrab(HVRGrabberBase grabber, HVRGrabbable grabbable) + /// + /// An item was released by a hand (directly or by distance). Sockets and other grabbers are ignored. + /// + public void UnsetGrab(VrGrabArgs args) { - var dualGrabPrev = IsDualGrabbed; - - HVRHandGrabber handGrabber; - if (grabber is HVRForceGrabber forceGrabber) - handGrabber = forceGrabber.HandGrabber; - else - handGrabber = grabber as HVRHandGrabber; - - if (handGrabber == null) + if (!args.IsHandOrDistance) return; - if (handGrabber.IsLeftHand) + var dualGrabPrev = IsDualGrabbed; + var grabbable = args.Interactable; + if (args.HandSide == VrHandSide.Left) { // If we did remote grabbing, this function is called twice (remote grabber+hand grabber). // As we already count remote grabbing as "in inventory", we skip it the second time. @@ -130,7 +125,7 @@ public void UnsetGrab(HVRGrabberBase grabber, HVRGrabbable grabbable) /// The player collides with VobItems (stuck at a sword in the ground like in Gothic). Items in our hands or /// sockets (hips, back) would push our own CharacterController, so they ignore it while being held. /// - public void IgnorePlayerCollision(HVRGrabbable grabbable, bool ignore) + public void IgnorePlayerCollision(VrInteractable grabbable, bool ignore) { var characterController = VRContextInteractionService.Rig?.CharacterController; if (characterController == null) diff --git a/Docs/HVR-replacement/phase-0-decouple.md b/Docs/HVR-replacement/phase-0-decouple.md index 01695ff72..0ad0ff0aa 100644 --- a/Docs/HVR-replacement/phase-0-decouple.md +++ b/Docs/HVR-replacement/phase-0-decouple.md @@ -157,22 +157,42 @@ Split into four PRs so each one stays reviewable. ### PR 0c - Grab and socket events -- [ ] Add `VrInteractable`, `HvrInteractableBridge`, `IVrSocket(Container)`, `HvrSocketBridge`. -- [ ] Change adapter signatures from `(HVRGrabberBase, HVRGrabbable)` to `(VrGrabArgs)` and subscribe in +- [x] Add `VrInteractable`, `HvrInteractableBridge`, `IVrSocket(Container)`, `HvrSocketBridge`. + Added on the way: `VrGrabArgs`, `VrGrabberKind.Other` (e.g. HVR's chest collector, which the old code treated + as "neither hand nor socket"), `IVrGrabber` + `HvrGrabberBridge` for the hand and force grabbers (HVRGrabbable + has no `BeforeGrabbed` event, only the grabber has; the grabber bridge also raises + `VrInteractable.BeforeGrabbed`), `IVrRig.HandGrabbers`, `IVrInteractableBackend` (contract between + `VrInteractable` and its bridge) and `HvrGrabArgsFactory`. `IVrSocket` extends `IVrGrabber`, so "placed" / + "removed" are its `Grabbed` / `Released` events. `TryPlace(interactable, silent)` keeps HVR's "no grab sound" + flag (the old `TryGrab(g, true, true)` calls). Grabbables without a `VrInteractable` get one at runtime + (warning log). +- [x] Change adapter signatures from `(HVRGrabberBase, HVRGrabbable)` to `(VrGrabArgs)` and subscribe in `Awake/OnEnable` instead of inspector bindings: `VRVobItem`, `VRPlayerItemAdapter`, `VRPlayerWeaponInteraction`, `VRFocus`, `VRNpc`, `VRNpcMarvinAdapter`, `VRMobInteraction`, `VRSeat`, `VRBackpack`, `VRVobContainerSocketInventory`, `VRNpcLoot`. -- [ ] `VRPlayerService.SetGrab/UnsetGrab/IgnorePlayerCollision`: branch on `VrGrabArgs.Kind`, use + Subscribed in `Awake` / unsubscribed in `OnDestroy` (persistent calls also fired for disabled components). + `VRMobInteraction` and `VRNpcMarvinAdapter` subscribe in `Start`, so `VRSeat` / `VRNpc` still run first. + Cross-hierarchy wiring is serialized as GameObject lists: `VRBackpack._holsterSockets` / `_inventorySockets`, + `VRVobContainerSocketInventory._additionalSockets` (holsters; its own child sockets are found in code). + The NPC health bar hover (`StatusBarAdapter.EnableBar/DisableBar`, Gothic.Core) moved into `VRNpc`. +- [x] `VRPlayerService.SetGrab/UnsetGrab/IgnorePlayerCollision`: branch on `VrGrabArgs.Kind`, use `VrInteractable.Colliders`. -- [ ] `VRDigSpot`: replace `FindObjectsByType` + `GrabbedTarget` with a query on +- [x] `VRDigSpot`: replace `FindObjectsByType` + `GrabbedTarget` with a query on `VRPlayerService` (`GrabbedItemLeft/Right` already exist). -- [ ] `VRVobContainerPhysicsChest` subclasses `HVRPhysicsDoor`. For now move it under `Backends/Hvr`; Phase 4 - replaces it. The socket part goes through `IVrSocketContainer`. -- [ ] `VRVobDoor`, `VRVobContainer` (door SFX), `VRContainerDoorPickingInteraction` (`Lock/Unlock`): add a small +- [x] `VRVobContainerPhysicsChest` subclasses `HVRPhysicsDoor`. For now move it under `Backends/Hvr`; Phase 4 + replaces it. The socket part goes through `IVrSocketContainer`. (Renamed to `HvrPhysicsChest`, GUID kept. + `VRSocket` / `VRShoulderSocket` moved to `Backends/Hvr/HvrSocket` / `HvrShoulderSocket`, GUIDs kept. + `HvrSocket` still re-implements parts of `HVRSocket`; rewrite it with the own socket in a later phase.) +- [x] `VRVobDoor`, `VRVobContainer` (door SFX), `VRContainerDoorPickingInteraction` (`Lock/Unlock`): add a small `IVrHinge` port (`Lock()`, `Unlock()`, `SetSounds(open, close)`) implemented by an HVR bridge. -- [ ] **Prefabs (UnityMCP only):** in all 11 VR prefabs, add `VrInteractable` + bridge next to `HVRGrabbable` and + (`HvrHingeBridge`; also exposes `Transform` and `Rigidbody` for the push after unlocking. The lock picking + finds the hinge via the VobLoader instead of a serialized `HVRPhysicsDoor` reference.) +- [x] **Prefabs (UnityMCP only):** in all 11 VR prefabs, add `VrInteractable` + bridge next to `HVRGrabbable` and remove the inspector UnityEvent bindings to our methods (17× `OnBeforeGrabbed`, 18× `OnReleased`, 10× `OnHoverEnter/Exit`, holster/backpack callbacks, …). If UnityMCP isn't connected, stop and report (CLAUDE.md). + Bridges were added next to every `HVRGrabbable`, `HVRSocket`, `HVRSocketContainer`, `HVRPhysicsDoor` and the + hand/force grabbers. Effective persistent calls from HVR events to Gothic methods: 0 (UI button bindings stay). + Dead overrides on a removed TechDemo component in `HVR - Player.prefab` were dropped as well. ### PR 0d - Gating and leftovers