public bool DynamicCapsuleTraceCapsules(CapsuleTraceBrushInfo info) { bool ret = false; foreach (Transform tf in DynamicColliders) { CAPSULE b = new CAPSULE(tf.transform.position, 0.5f, 0.5f, Quaternion.identity); float fFraction = 100.0f; Vector3 normal = Vector3.up; bool bStartSolid = false; if (GJKRaycast.GjkLocalRayCast_CapsuleCapsule(info.Start, b, info.Delta, ref fFraction, ref normal, ref bStartSolid) && fFraction < info.Fraction) { info.StartSolid = bStartSolid; info.Fraction = fFraction; info.Normal = normal; ret = true; } } return(ret); }
public bool CapsuleTraceBrush(CapsuleTraceBrushInfo info) { if ((Flags & info.ChkFlags) > 0) { return(false); } bool ret = false; if (BoundsExtansions.AABBAABBOverlap(BoundAABB, info.Bound)) { ret = GJKRaycast.GjkLocalRayCast_CapsuleConvex(info.Start, this.cd, info.Delta, ref info.Fraction, ref info.Normal, ref info.StartSolid, ref info.HitPoints, ref info.CloseB); } if (ret) { info.HitObject = this; info.HitFlags = Flags; } return(ret); }