public static int CastAll(IPhysicsObject geom, Vector3 dir, ICollection <RaycastHit> results, QueryTriggerInteraction query = QueryTriggerInteraction.UseGlobal) { if (geom == null) { throw new System.ArgumentNullException("geom"); } return(geom.CastAll(dir, results, float.PositiveInfinity, Physics.AllLayers, query)); }
public static int CastAll(IPhysicsObject geom, Vector3 dir, ICollection <RaycastHit> results, float dist, int layerMask, QueryTriggerInteraction query = QueryTriggerInteraction.UseGlobal) { if (geom == null) { throw new System.ArgumentNullException("geom"); } return(geom.CastAll(dir, results, dist, layerMask, query)); }
public static RaycastHit[] CastAll(IPhysicsObject geom, Vector3 dir, float dist, int layerMask, QueryTriggerInteraction query = QueryTriggerInteraction.UseGlobal) { if (geom == null) { throw new System.ArgumentNullException("geom"); } //return geom.CastAll(dir, dist, layerMask, query).ToArray(); using (var lst = TempCollection.GetList <RaycastHit>()) { geom.CastAll(dir, lst, dist, layerMask, query); return(lst.ToArray()); } }
public static bool RadialCast(IPhysicsObject geom, ICollection <RaycastHit> results, float dist, int detail, int layerMask, Vector3 initialAxis, Vector3 rotationalAxis, QueryTriggerInteraction query = QueryTriggerInteraction.UseGlobal) { if (VectorUtil.NearZeroVector(initialAxis)) { initialAxis = Vector2.right; } else { initialAxis.Normalize(); } var a = 360f / (float)detail; int cnt = results.Count; for (int i = 0; i < detail; i++) { var v = VectorUtil.RotateAroundAxis(initialAxis, a * i, rotationalAxis); geom.CastAll(v, results, dist, layerMask, query); } return(results.Count - cnt > 0); }