diff --git a/Assets/Escape Room Engine/Player/Hand.prefab b/Assets/Escape Room Engine/Player/Hand.prefab index 7b64161..3b3b1d9 100644 --- a/Assets/Escape Room Engine/Player/Hand.prefab +++ b/Assets/Escape Room Engine/Player/Hand.prefab @@ -11,7 +11,10 @@ GameObject: - component: {fileID: 3680365890358827431} - component: {fileID: 3680365890358827424} - component: {fileID: 3680365890358827425} - m_Layer: 0 + - component: {fileID: 9003874053127290317} + - component: {fileID: 6670815188493146868} + - component: {fileID: 7213930867242206722} + m_Layer: 6 m_Name: Hand m_TagString: Untagged m_Icon: {fileID: 0} @@ -83,3 +86,49 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} +--- !u!136 &9003874053127290317 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3680365890358827426} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!54 &6670815188493146868 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3680365890358827426} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 0 + m_IsKinematic: 1 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &7213930867242206722 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3680365890358827426} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ee06bb2aa499a594c9761498039d73a7, type: 3} + m_Name: + m_EditorClassIdentifier: + traveller: {fileID: 0} + hasClone: 1 + entrySide: 0 + clone: {fileID: 0} diff --git a/Assets/Escape Room Engine/Portal/HandPortalDriver.cs b/Assets/Escape Room Engine/Portal/HandPortalDriver.cs new file mode 100644 index 0000000..58242b3 --- /dev/null +++ b/Assets/Escape Room Engine/Portal/HandPortalDriver.cs @@ -0,0 +1,11 @@ +namespace Escape_Room_Engine.Portal +{ + public class HandPortalDriver : PortalDriver + { + private new void Start() + { + traveller = transform.parent.parent.parent; // get the hand portal offset + base.Start(); + } + } +} diff --git a/Assets/Escape Room Engine/Portal/HandPortalDriver.cs.meta b/Assets/Escape Room Engine/Portal/HandPortalDriver.cs.meta new file mode 100644 index 0000000..35f9a68 --- /dev/null +++ b/Assets/Escape Room Engine/Portal/HandPortalDriver.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ee06bb2aa499a594c9761498039d73a7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Escape Room Engine/Portal/Portal.cs b/Assets/Escape Room Engine/Portal/Portal.cs index a688ec7..75207ce 100644 --- a/Assets/Escape Room Engine/Portal/Portal.cs +++ b/Assets/Escape Room Engine/Portal/Portal.cs @@ -34,25 +34,35 @@ namespace Escape_Room_Engine.Portal for (var i = 0; i < _closePortalDrivers.Count; i++) { var portalDriver = _closePortalDrivers[i]; - var side = CalculateSide(portalDriver.transform); - if (portalDriver.entrySide < 0 && side >= 0) // must have entered from the front and exited the back + if (portalDriver.entrySide < 0 && CalculateSide(portalDriver.transform) >= 0) // must have entered from the front and exited the back { - _closePortalDrivers.Remove(portalDriver); - linkedPortal._closePortalDrivers.Add(portalDriver); - portalDriver.entrySide = -1; + StopTrackingDriver(portalDriver); + linkedPortal.StartTrackingDriver(portalDriver, -1); portalDriver.Teleport(this, linkedPortal); i--; // decrease the loop counter because the list is one element smaller now } } } + private void StartTrackingDriver(PortalDriver portalDriver, int entrySide) + { + _closePortalDrivers.Add(portalDriver); + portalDriver.EnableClone(linkedPortal); + portalDriver.entrySide = entrySide; + } + + private void StopTrackingDriver(PortalDriver portalDriver) + { + _closePortalDrivers.Remove(portalDriver); + portalDriver.DisableClone(linkedPortal); + } + private void OnTriggerEnter(Collider other) { var portalDriver = other.GetComponent(); if (portalDriver && !_closePortalDrivers.Contains(portalDriver)) { - _closePortalDrivers.Add(portalDriver); - portalDriver.entrySide = CalculateSide(portalDriver.transform); + StartTrackingDriver(portalDriver, CalculateSide(portalDriver.transform)); } } @@ -60,9 +70,7 @@ namespace Escape_Room_Engine.Portal { var portalDriver = other.GetComponent(); if (portalDriver) - { - _closePortalDrivers.Remove(portalDriver); - } + StopTrackingDriver(portalDriver); } private int CalculateSide(Transform portalDriverTransform) diff --git a/Assets/Escape Room Engine/Portal/Portal.prefab b/Assets/Escape Room Engine/Portal/Portal.prefab index b6ea5da..5b92e65 100644 --- a/Assets/Escape Room Engine/Portal/Portal.prefab +++ b/Assets/Escape Room Engine/Portal/Portal.prefab @@ -11,7 +11,7 @@ GameObject: - component: {fileID: 2246995198243242195} - component: {fileID: 1249363658} - component: {fileID: 7604291350124895408} - m_Layer: 0 + m_Layer: 7 m_Name: Portal m_TagString: Untagged m_Icon: {fileID: 0} diff --git a/Assets/Escape Room Engine/Portal/PortalDriver.cs b/Assets/Escape Room Engine/Portal/PortalDriver.cs index bf68d48..0c03631 100644 --- a/Assets/Escape Room Engine/Portal/PortalDriver.cs +++ b/Assets/Escape Room Engine/Portal/PortalDriver.cs @@ -10,25 +10,29 @@ namespace Escape_Room_Engine.Portal /// The object that will be transported through the portal. Usually either this object or a parent offset object. /// If left empty, it will default to this object. /// - [SerializeField] private Transform traveller; + public Transform traveller; + /// + /// Whether this portal driver has a clone mirroring it at other portals. Disable this for the player. + /// + public bool hasClone = true; /// /// The side of the portal this became tracked on. /// [HideInInspector] public int entrySide; - /// - /// A reference to the collider of this portal driver. + /// The clone that is used to mirror this portal driver at another portal. /// - public Collider Collider { get; private set; } + [HideInInspector] public PortalDriverClone clone; + private Collider _collider; private Rigidbody _rigidbody; private void Awake() { // check whether the collider is set up correctly - Collider = GetComponent(); - if (Collider.isTrigger) throw new Exception("Collider must not be a trigger."); + _collider = GetComponent(); + if (_collider.isTrigger) throw new Exception("Collider must not be a trigger."); // check whether the traveller is set if (!traveller) traveller = transform; @@ -37,11 +41,41 @@ namespace Escape_Room_Engine.Portal _rigidbody = GetComponent(); } + protected void Start() + { + if (hasClone) + clone = PortalDriverClone.Create(this); + } + + private void Update() + { + if (hasClone && clone.gameObject.activeSelf) + clone.UpdatePosition(transform); + } + + public void EnableClone(Portal at) + { + if (hasClone) + { + clone.portal = at; + clone.gameObject.SetActive(true); + } + } + + public void DisableClone(Portal at) + { + if (hasClone && at.Equals(clone.portal)) // don't disable clones that are already at a different portal + { + clone.portal = null; + clone.gameObject.SetActive(false); + } + } + public void Teleport(Portal from, Portal to) { var m = to.transform.localToWorldMatrix * Portal.HalfRotation * from.transform.worldToLocalMatrix * traveller.localToWorldMatrix; - traveller.transform.SetPositionAndRotation(m.GetPosition(), m.rotation); + traveller.SetPositionAndRotation(m.GetPosition(), m.rotation); if (_rigidbody) { _rigidbody.velocity = to.transform.TransformDirection( diff --git a/Assets/Escape Room Engine/Portal/PortalDriverClone.cs b/Assets/Escape Room Engine/Portal/PortalDriverClone.cs new file mode 100644 index 0000000..19a5a0b --- /dev/null +++ b/Assets/Escape Room Engine/Portal/PortalDriverClone.cs @@ -0,0 +1,44 @@ +using UnityEngine; +using UnityEngine.InputSystem.XR; +using UnityEngine.XR.Interaction.Toolkit; + +namespace Escape_Room_Engine.Portal +{ + public class PortalDriverClone : MonoBehaviour + { + /// + /// The portal where this clone is mirroring the portal driver. + /// + [HideInInspector] public Portal portal; + + public static PortalDriverClone Create(PortalDriver portalDriver) + { + // copy the portal driver object + var clone = Instantiate(portalDriver).gameObject; + + // destroy all unnecessary components + Destroy(clone.GetComponent()); + foreach (var xrGrabInteractable in clone.GetComponentsInChildren()) + Destroy(xrGrabInteractable); + foreach (var rigidbody in clone.GetComponentsInChildren()) + Destroy(rigidbody); + foreach (var trackedPoseDriver in clone.GetComponentsInChildren()) + Destroy(trackedPoseDriver); + + // add a clone component + clone.AddComponent(); + + // set up the clone + var portalDriverClone = clone.GetComponent(); + portalDriverClone.gameObject.SetActive(false); + return portalDriverClone; + } + + public void UpdatePosition(Transform cloning) + { + var m = portal.transform.localToWorldMatrix * Portal.HalfRotation * + portal.linkedPortal.transform.worldToLocalMatrix * cloning.localToWorldMatrix; + transform.SetPositionAndRotation(m.GetPosition(), m.rotation); + } + } +} diff --git a/Assets/Escape Room Engine/Portal/PortalDriverClone.cs.meta b/Assets/Escape Room Engine/Portal/PortalDriverClone.cs.meta new file mode 100644 index 0000000..05eea95 --- /dev/null +++ b/Assets/Escape Room Engine/Portal/PortalDriverClone.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 088fae7d750b41e4eb8d333853ffa41a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/PortalScene.unity b/Assets/Scenes/PortalScene.unity index 1ca067b..65458f1 100644 --- a/Assets/Scenes/PortalScene.unity +++ b/Assets/Scenes/PortalScene.unity @@ -593,9 +593,9 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: traveller: {fileID: 0} + hasClone: 1 entrySide: 0 - a: {fileID: 0} - b: {fileID: 0} + clone: {fileID: 0} --- !u!1 &32502420 GameObject: m_ObjectHideFlags: 0 @@ -840,9 +840,9 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: traveller: {fileID: 0} + hasClone: 1 entrySide: 0 - a: {fileID: 0} - b: {fileID: 0} + clone: {fileID: 0} --- !u!1 &49933501 GameObject: m_ObjectHideFlags: 0 @@ -872,7 +872,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 62537129} + m_Father: {fileID: 649528116} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &49933503 @@ -1008,16 +1008,14 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 62537128} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 250613599} - - {fileID: 49933502} - - {fileID: 1755438915} - - {fileID: 734697822} - - {fileID: 613892734} + - {fileID: 649528116} + - {fileID: 609138305} + - {fileID: 1959380931} m_Father: {fileID: 1274381187} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -1265,9 +1263,9 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: traveller: {fileID: 0} + hasClone: 1 entrySide: 0 - a: {fileID: 0} - b: {fileID: 0} + clone: {fileID: 0} --- !u!1 &145371954 GameObject: m_ObjectHideFlags: 0 @@ -1512,9 +1510,9 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: traveller: {fileID: 0} + hasClone: 1 entrySide: 0 - a: {fileID: 0} - b: {fileID: 0} + clone: {fileID: 0} --- !u!1 &148891875 GameObject: m_ObjectHideFlags: 0 @@ -1800,9 +1798,9 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: traveller: {fileID: 0} + hasClone: 1 entrySide: 0 - a: {fileID: 0} - b: {fileID: 0} + clone: {fileID: 0} --- !u!1 &194084196 GameObject: m_ObjectHideFlags: 0 @@ -2078,7 +2076,7 @@ GameObject: - component: {fileID: 250613605} - component: {fileID: 250613606} - component: {fileID: 250613607} - m_Layer: 0 + m_Layer: 6 m_Name: Main Camera m_TagString: MainCamera m_Icon: {fileID: 0} @@ -2092,12 +2090,12 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 250613598} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 62537129} + m_Father: {fileID: 649528116} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &250613600 @@ -2300,10 +2298,10 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 1bacec3b1d81cef43972d5dfc26a467b, type: 3} m_Name: m_EditorClassIdentifier: - traveller: {fileID: 62537129} + traveller: {fileID: 649528116} + hasClone: 0 entrySide: 0 - a: {fileID: 0} - b: {fileID: 0} + clone: {fileID: 0} --- !u!135 &250613606 SphereCollider: m_ObjectHideFlags: 0 @@ -2855,9 +2853,9 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: traveller: {fileID: 0} + hasClone: 1 entrySide: 0 - a: {fileID: 0} - b: {fileID: 0} + clone: {fileID: 0} --- !u!1 &430115637 GameObject: m_ObjectHideFlags: 0 @@ -3102,9 +3100,9 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: traveller: {fileID: 0} + hasClone: 1 entrySide: 0 - a: {fileID: 0} - b: {fileID: 0} + clone: {fileID: 0} --- !u!1 &446284063 GameObject: m_ObjectHideFlags: 0 @@ -3730,9 +3728,41 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: traveller: {fileID: 0} + hasClone: 1 entrySide: 0 - a: {fileID: 0} - b: {fileID: 0} + clone: {fileID: 0} +--- !u!1 &609138304 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 609138305} + m_Layer: 0 + m_Name: Left Hand Portal Offset + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &609138305 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 609138304} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 734697822} + m_Father: {fileID: 62537129} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &613892733 GameObject: m_ObjectHideFlags: 0 @@ -3759,13 +3789,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 613892733} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 62537129} - m_RootOrder: 4 + m_Father: {fileID: 1959380931} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &613892735 MonoBehaviour: @@ -4166,6 +4196,40 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 649178244} m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &649528115 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 649528116} + m_Layer: 0 + m_Name: Camera Portal Offset + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &649528116 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 649528115} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 250613599} + - {fileID: 49933502} + - {fileID: 1755438915} + m_Father: {fileID: 62537129} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &658745510 GameObject: m_ObjectHideFlags: 0 @@ -4410,9 +4474,9 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: traveller: {fileID: 0} + hasClone: 1 entrySide: 0 - a: {fileID: 0} - b: {fileID: 0} + clone: {fileID: 0} --- !u!1 &702415672 GameObject: m_ObjectHideFlags: 0 @@ -4657,9 +4721,9 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: traveller: {fileID: 0} + hasClone: 1 entrySide: 0 - a: {fileID: 0} - b: {fileID: 0} + clone: {fileID: 0} --- !u!1 &734697821 GameObject: m_ObjectHideFlags: 0 @@ -4686,13 +4750,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 734697821} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 62537129} - m_RootOrder: 3 + m_Father: {fileID: 609138305} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &734697823 MonoBehaviour: @@ -5240,9 +5304,9 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: traveller: {fileID: 0} + hasClone: 1 entrySide: 0 - a: {fileID: 0} - b: {fileID: 0} + clone: {fileID: 0} --- !u!1 &778138609 GameObject: m_ObjectHideFlags: 0 @@ -5487,9 +5551,9 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: traveller: {fileID: 0} + hasClone: 1 entrySide: 0 - a: {fileID: 0} - b: {fileID: 0} + clone: {fileID: 0} --- !u!1 &817509150 GameObject: m_ObjectHideFlags: 0 @@ -5955,9 +6019,9 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: traveller: {fileID: 0} + hasClone: 1 entrySide: 0 - a: {fileID: 0} - b: {fileID: 0} + clone: {fileID: 0} --- !u!1 &1023639977 GameObject: m_ObjectHideFlags: 0 @@ -6202,9 +6266,9 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: traveller: {fileID: 0} + hasClone: 1 entrySide: 0 - a: {fileID: 0} - b: {fileID: 0} + clone: {fileID: 0} --- !u!1 &1169383892 GameObject: m_ObjectHideFlags: 0 @@ -6481,9 +6545,9 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: traveller: {fileID: 0} + hasClone: 1 entrySide: 0 - a: {fileID: 0} - b: {fileID: 0} + clone: {fileID: 0} --- !u!1 &1199088356 GameObject: m_ObjectHideFlags: 0 @@ -6500,7 +6564,7 @@ GameObject: - component: {fileID: 1199088362} - component: {fileID: 1199088363} - component: {fileID: 1199088364} - m_Layer: 0 + m_Layer: 6 m_Name: Test Camera m_TagString: MainCamera m_Icon: {fileID: 0} @@ -6636,9 +6700,9 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: traveller: {fileID: 1169383893} + hasClone: 0 entrySide: 0 - a: {fileID: 0} - b: {fileID: 0} + clone: {fileID: 0} --- !u!135 &1199088363 SphereCollider: m_ObjectHideFlags: 0 @@ -7294,9 +7358,9 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: traveller: {fileID: 0} + hasClone: 1 entrySide: 0 - a: {fileID: 0} - b: {fileID: 0} + clone: {fileID: 0} --- !u!1 &1418800929 GameObject: m_ObjectHideFlags: 0 @@ -8026,9 +8090,9 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: traveller: {fileID: 0} + hasClone: 1 entrySide: 0 - a: {fileID: 0} - b: {fileID: 0} + clone: {fileID: 0} --- !u!1 &1484624115 GameObject: m_ObjectHideFlags: 0 @@ -8503,9 +8567,9 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: traveller: {fileID: 0} + hasClone: 1 entrySide: 0 - a: {fileID: 0} - b: {fileID: 0} + clone: {fileID: 0} --- !u!1001 &1530025130 PrefabInstance: m_ObjectHideFlags: 0 @@ -8905,9 +8969,9 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: traveller: {fileID: 0} + hasClone: 1 entrySide: 0 - a: {fileID: 0} - b: {fileID: 0} + clone: {fileID: 0} --- !u!1 &1718957584 GameObject: m_ObjectHideFlags: 0 @@ -9078,7 +9142,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 62537129} + m_Father: {fileID: 649528116} m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &1755438916 @@ -9495,9 +9559,9 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: traveller: {fileID: 0} + hasClone: 1 entrySide: 0 - a: {fileID: 0} - b: {fileID: 0} + clone: {fileID: 0} --- !u!1 &1882294794 GameObject: m_ObjectHideFlags: 0 @@ -9742,9 +9806,9 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: traveller: {fileID: 0} + hasClone: 1 entrySide: 0 - a: {fileID: 0} - b: {fileID: 0} + clone: {fileID: 0} --- !u!1 &1891845681 GameObject: m_ObjectHideFlags: 0 @@ -9989,9 +10053,9 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: traveller: {fileID: 0} + hasClone: 1 entrySide: 0 - a: {fileID: 0} - b: {fileID: 0} + clone: {fileID: 0} --- !u!1001 &1892725130 PrefabInstance: m_ObjectHideFlags: 0 @@ -10115,6 +10179,38 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: ae59cddbf8fa37549bb38b1039feeb34, type: 3} m_Name: m_EditorClassIdentifier: +--- !u!1 &1959380930 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1959380931} + m_Layer: 0 + m_Name: Right Hand Portal Offset + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1959380931 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1959380930} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 613892734} + m_Father: {fileID: 62537129} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1962673815 GameObject: m_ObjectHideFlags: 0 @@ -10531,9 +10627,9 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: traveller: {fileID: 0} + hasClone: 1 entrySide: 0 - a: {fileID: 0} - b: {fileID: 0} + clone: {fileID: 0} --- !u!1001 &2144623425 PrefabInstance: m_ObjectHideFlags: 0 diff --git a/ProjectSettings/DynamicsManager.asset b/ProjectSettings/DynamicsManager.asset index 1596c42..c45f494 100644 --- a/ProjectSettings/DynamicsManager.asset +++ b/ProjectSettings/DynamicsManager.asset @@ -7,6 +7,7 @@ PhysicsManager: m_Gravity: {x: 0, y: -9.81, z: 0} m_DefaultMaterial: {fileID: 0} m_BounceThreshold: 2 + m_DefaultMaxDepenetrationVelocity: 10 m_SleepThreshold: 0.005 m_DefaultContactOffset: 0.01 m_DefaultSolverIterations: 6 @@ -17,7 +18,7 @@ PhysicsManager: m_ClothInterCollisionDistance: 0.1 m_ClothInterCollisionStiffness: 0.2 m_ContactsGeneration: 1 - m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + m_LayerCollisionMatrix: bfffffffffffffffffffffffffffffffffffffffffffffffbeffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff m_AutoSimulation: 1 m_AutoSyncTransforms: 0 m_ReuseCollisionCallbacks: 0 @@ -32,5 +33,6 @@ PhysicsManager: m_FrictionType: 0 m_EnableEnhancedDeterminism: 0 m_EnableUnifiedHeightmaps: 1 + m_ImprovedPatchFriction: 0 m_SolverType: 0 m_DefaultMaxAngularSpeed: 50 diff --git a/ProjectSettings/TagManager.asset b/ProjectSettings/TagManager.asset index 1c92a78..f492169 100644 --- a/ProjectSettings/TagManager.asset +++ b/ProjectSettings/TagManager.asset @@ -11,8 +11,8 @@ TagManager: - - Water - UI - - - - + - VR + - Portals - - -