public void OverlapSphere(Vector3 center, float radius, AscensionPhysicsHits hits) { if (!body) { return; } if (body.proximity) { if (body.proximity.OverlapSphere(ref wtl, center, radius)) { hits.AddHit(body, body.proximity, (center - ltw.MultiplyPoint(Vector3.zero)).magnitude); } else { return; } } for (int i = 0; i < body.hitboxes.Length; ++i) { AscensionHitbox hitbox = body.hitboxes[i]; if (hitbox.OverlapSphere(ref hbwtl[i], center, radius)) { hits.AddHit(body, hitbox, (center - hbltw[i].MultiplyPoint(Vector3.zero)).magnitude); } } }
public void Raycast(Vector3 origin, Vector3 direction, AscensionPhysicsHits hits) { if (!body) { return; } float distance = float.NegativeInfinity; if (body.proximity) { if (body.proximity.Raycast(ref wtl, origin, direction, out distance)) { hits.AddHit(body, body.proximity, distance); } else { return; } } for (int i = 0; i < body.hitboxes.Length; ++i) { AscensionHitbox hitbox = body.hitboxes[i]; if (hitbox.Raycast(ref hbwtl[i], origin, direction, out distance)) { hits.AddHit(body, hitbox, distance); } } }
internal void AddHit(AscensionHitboxBody body, AscensionHitbox hitbox, float distance) { hits.Add(new AscensionPhysicsHit { body = body, hitbox = hitbox, distance = distance }); }