public TraceResult Trace(JVector origin, JVector direction, TraceOptions options) { if (direction.Length() < 0.1f) { return(null); } RaycastCallback callback = (b, n, f) => { if ((b.IsStatic == true) && (options.HasFlag(TraceOptions.IgnoreStatic))) { return(false); } if ((b.IsStatic == false) && (options.HasFlag(TraceOptions.IgnoreDynamic))) { return(false); } return(true); }; RigidBody body; JVector normal; float friction; if (this.CollisionSystem.Raycast( origin, direction, callback, out body, out normal, out friction)) { return(new TraceResult(body, friction, origin + friction * direction, normal)); } return(null); }
public TraceResult Trace(JVector origin, JVector direction, TraceOptions options) { if (direction.Length() < 0.1f) return null; RaycastCallback callback = (b, n, f) => { if ((b.IsStatic == true) && (options.HasFlag(TraceOptions.IgnoreStatic))) return false; if ((b.IsStatic == false) && (options.HasFlag(TraceOptions.IgnoreDynamic))) return false; return true; }; RigidBody body; JVector normal; float friction; if (this.CollisionSystem.Raycast( origin, direction, callback, out body, out normal, out friction)) { return new TraceResult(body, friction, origin + friction * direction, normal); } return null; }