From 9c99830956bc03d61308ba175675e7291ce05bbc Mon Sep 17 00:00:00 2001 From: Olezen Date: Thu, 15 Aug 2019 13:43:16 +0200 Subject: [PATCH] Add files via upload --- Modified fragsurf/TraceUtil/Trace.cs | 1 + Modified fragsurf/TraceUtil/Tracer.cs | 20 +++++++++++--------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/Modified fragsurf/TraceUtil/Trace.cs b/Modified fragsurf/TraceUtil/Trace.cs index 34ed8e5..a963271 100644 --- a/Modified fragsurf/TraceUtil/Trace.cs +++ b/Modified fragsurf/TraceUtil/Trace.cs @@ -10,6 +10,7 @@ namespace Fragsurf.TraceUtil { public Collider hitCollider; public Vector3 hitPoint; public Vector3 planeNormal; + public float distance; } } diff --git a/Modified fragsurf/TraceUtil/Tracer.cs b/Modified fragsurf/TraceUtil/Tracer.cs index 2bfd9e5..a1eb97a 100644 --- a/Modified fragsurf/TraceUtil/Tracer.cs +++ b/Modified fragsurf/TraceUtil/Tracer.cs @@ -11,12 +11,12 @@ namespace Fragsurf.TraceUtil { /// /// /// - public static Trace TraceCollider (Collider collider, Vector3 origin, Vector3 end, int layerMask) { + public static Trace TraceCollider (Collider collider, Vector3 origin, Vector3 end, int layerMask, float colliderScale = 1f) { if (collider is BoxCollider) { // Box collider trace - return TraceBox (origin, end, collider.bounds.extents, collider.contactOffset, layerMask); + return TraceBox (origin, end, collider.bounds.extents, collider.contactOffset, layerMask, colliderScale); } else if (collider is CapsuleCollider) { @@ -26,7 +26,7 @@ namespace Fragsurf.TraceUtil { Vector3 point1, point2; Movement.SurfPhysics.GetCapsulePoints (capc, origin, out point1, out point2); - return TraceCapsule (point1, point2, capc.radius, origin, end, capc.contactOffset, layerMask); + return TraceCapsule (point1, point2, capc.radius, origin, end, capc.contactOffset, layerMask, colliderScale); } @@ -38,7 +38,7 @@ namespace Fragsurf.TraceUtil { /// /// /// - public static Trace TraceCapsule (Vector3 point1, Vector3 point2, float radius, Vector3 start, Vector3 destination, float contactOffset, int layerMask) { + public static Trace TraceCapsule (Vector3 point1, Vector3 point2, float radius, Vector3 start, Vector3 destination, float contactOffset, int layerMask, float colliderScale = 1f) { var result = new Trace () { startPos = start, @@ -52,9 +52,9 @@ namespace Fragsurf.TraceUtil { RaycastHit hit; if (Physics.CapsuleCast ( - point1: point1, - point2: point2, - radius: radius, + point1: point1 - Vector3.up * colliderScale * 0.5f, + point2: point2 + Vector3.up * colliderScale * 0.5f, + radius: radius * colliderScale, direction: direction, hitInfo: out hit, maxDistance: maxDistance, @@ -65,6 +65,7 @@ namespace Fragsurf.TraceUtil { result.hitCollider = hit.collider; result.hitPoint = hit.point; result.planeNormal = hit.normal; + result.distance = hit.distance; } else result.fraction = 1; @@ -77,7 +78,7 @@ namespace Fragsurf.TraceUtil { /// /// /// - public static Trace TraceBox (Vector3 start, Vector3 destination, Vector3 extents, float contactOffset, int layerMask) { + public static Trace TraceBox (Vector3 start, Vector3 destination, Vector3 extents, float contactOffset, int layerMask, float colliderScale = 1f) { var result = new Trace () { startPos = start, @@ -91,7 +92,7 @@ namespace Fragsurf.TraceUtil { RaycastHit hit; if (Physics.BoxCast (center: start, - halfExtents: extents, + halfExtents: extents * colliderScale, direction: direction, orientation: Quaternion.identity, maxDistance: maxDistance, @@ -103,6 +104,7 @@ namespace Fragsurf.TraceUtil { result.hitCollider = hit.collider; result.hitPoint = hit.point; result.planeNormal = hit.normal; + result.distance = hit.distance; } else result.fraction = 1;