private static AscensionPhysicsHits Raycast(Ray ray, AscensionHitboxWorldSnapshot sn) { Iterator <AscensionHitboxBodySnapshot> it = sn.bodySnapshots.GetIterator(); AscensionPhysicsHits hits = AscensionPhysicsHits.Pool.Acquire(); while (it.Next()) { it.val.Raycast(ray.origin, ray.direction, hits); } return(hits); }
internal static void SnapshotWorld() { Iterator <AscensionHitboxBody> it = HitboxBodies.GetIterator(); AscensionHitboxWorldSnapshot sn = AscensionHitboxWorldSnapshot.Pool.Acquire(); // set frame sn.frame = Core.Frame; // create snapshot while (it.Next()) { sn.Snapshot(it.val); } WorldSnapshots.AddLast(sn); while (WorldSnapshots.Count > maxWorldSnapshots) { WorldSnapshots.RemoveFirst().Dispose(); } }
private static AscensionPhysicsHits OverlapSphere(Vector3 origin, float radius, AscensionHitboxWorldSnapshot sn) { Iterator <AscensionHitboxBodySnapshot> it = sn.bodySnapshots.GetIterator(); AscensionPhysicsHits hits = AscensionPhysicsHits.Pool.Acquire(); while (it.Next()) { it.val.OverlapSphere(origin, radius, hits); } return(hits); }