From 136a50305827ace6e6bb3c0b25fc38ba34f7c8b2 Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Wed, 9 Nov 2022 13:06:49 -0800 Subject: [PATCH 1/3] make raycast nicer --- .../Utility/DebugUtilities/DebugRaycaster.cs | 46 ++++++++++--------- 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/NewHorizons/Utility/DebugUtilities/DebugRaycaster.cs b/NewHorizons/Utility/DebugUtilities/DebugRaycaster.cs index 70ecf7f2..5bae97d4 100644 --- a/NewHorizons/Utility/DebugUtilities/DebugRaycaster.cs +++ b/NewHorizons/Utility/DebugUtilities/DebugRaycaster.cs @@ -113,32 +113,36 @@ namespace NewHorizons.Utility.DebugUtilities } internal DebugRaycastData Raycast() { - DebugRaycastData data = new DebugRaycastData(); + var data = new DebugRaycastData(); _rb.DisableCollisionDetection(); - int layerMask = OWLayerMask.physicalMask; - var origin = Locator.GetActiveCamera().transform.position; - var direction = Locator.GetActiveCamera().transform.TransformDirection(Vector3.forward); - - data.hit = Physics.Raycast(origin, direction, out RaycastHit hitInfo, 100f, layerMask); - if (data.hit) + try { - data.pos = hitInfo.transform.InverseTransformPoint(hitInfo.point); - data.norm = hitInfo.transform.InverseTransformDirection(hitInfo.normal); + int layerMask = OWLayerMask.physicalMask; + var origin = Locator.GetActiveCamera().transform.position; + var direction = Locator.GetActiveCamera().transform.TransformDirection(Vector3.forward); - var o = hitInfo.transform.gameObject; + data.hit = Physics.Raycast(origin, direction, out var hitInfo, 100f, layerMask); + if (data.hit) + { + data.pos = hitInfo.rigidbody.transform.InverseTransformPoint(hitInfo.point); + data.norm = hitInfo.rigidbody.transform.InverseTransformDirection(hitInfo.normal); - var hitAstroObject = o.GetComponent() ?? o.GetComponentInParent(); - - data.colliderPath = hitInfo.collider.transform.GetPath(); - data.bodyPath = hitInfo.rigidbody?.transform.GetPath(); - data.hitObject = o; - data.hitBodyGameObject = hitAstroObject?.gameObject ?? o; - data.plane = ConstructPlane(data); - - var toPlayer = Vector3.ProjectOnPlane((transform.position - hitInfo.point).normalized, hitInfo.normal); - var worldSpaceRot = Quaternion.LookRotation(toPlayer, hitInfo.normal); - data.rot = hitAstroObject.transform.InverseTransformRotation(worldSpaceRot); + var toPlayer = Vector3.ProjectOnPlane((transform.position - hitInfo.point).normalized, hitInfo.normal); + var worldSpaceRot = Quaternion.LookRotation(toPlayer, hitInfo.normal); + data.rot = hitInfo.rigidbody.transform.InverseTransformRotation(worldSpaceRot); + + data.colliderPath = hitInfo.collider.transform.GetPath(); + data.bodyPath = hitInfo.rigidbody.transform.GetPath(); + data.hitBodyGameObject = hitInfo.rigidbody.gameObject; + data.hitObject = hitInfo.collider.gameObject; + + data.plane = ConstructPlane(data); + } + } + catch + { + // ignored } _rb.EnableCollisionDetection(); From 6c7c02d71c42e5e4ac16d3085c0cab84fd0e4e9e Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Wed, 9 Nov 2022 13:08:41 -0800 Subject: [PATCH 2/3] use transform.forward --- NewHorizons/Utility/DebugUtilities/DebugRaycaster.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NewHorizons/Utility/DebugUtilities/DebugRaycaster.cs b/NewHorizons/Utility/DebugUtilities/DebugRaycaster.cs index 5bae97d4..9976e3bb 100644 --- a/NewHorizons/Utility/DebugUtilities/DebugRaycaster.cs +++ b/NewHorizons/Utility/DebugUtilities/DebugRaycaster.cs @@ -120,7 +120,7 @@ namespace NewHorizons.Utility.DebugUtilities { int layerMask = OWLayerMask.physicalMask; var origin = Locator.GetActiveCamera().transform.position; - var direction = Locator.GetActiveCamera().transform.TransformDirection(Vector3.forward); + var direction = Locator.GetActiveCamera().transform.forward; data.hit = Physics.Raycast(origin, direction, out var hitInfo, 100f, layerMask); if (data.hit) From 642c179eaff0d7c2117662744071ec8af39479e0 Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Wed, 9 Nov 2022 13:09:49 -0800 Subject: [PATCH 3/3] use origin instead of transform.position --- NewHorizons/Utility/DebugUtilities/DebugRaycaster.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/NewHorizons/Utility/DebugUtilities/DebugRaycaster.cs b/NewHorizons/Utility/DebugUtilities/DebugRaycaster.cs index 9976e3bb..9433eda9 100644 --- a/NewHorizons/Utility/DebugUtilities/DebugRaycaster.cs +++ b/NewHorizons/Utility/DebugUtilities/DebugRaycaster.cs @@ -128,8 +128,8 @@ namespace NewHorizons.Utility.DebugUtilities data.pos = hitInfo.rigidbody.transform.InverseTransformPoint(hitInfo.point); data.norm = hitInfo.rigidbody.transform.InverseTransformDirection(hitInfo.normal); - var toPlayer = Vector3.ProjectOnPlane((transform.position - hitInfo.point).normalized, hitInfo.normal); - var worldSpaceRot = Quaternion.LookRotation(toPlayer, hitInfo.normal); + var toOrigin = Vector3.ProjectOnPlane((origin - hitInfo.point).normalized, hitInfo.normal); + var worldSpaceRot = Quaternion.LookRotation(toOrigin, hitInfo.normal); data.rot = hitInfo.rigidbody.transform.InverseTransformRotation(worldSpaceRot); data.colliderPath = hitInfo.collider.transform.GetPath();