import type { PhysicsWorld } from './physics-world.js'; import { Collider } from './collider.js'; export interface HitResult { collider: Collider; gameObject: import('@certe/atmos-core').GameObject; point: Float32Array; normal: Float32Array; distance: number; } /** Invalidate the cached collider map. Call once per frame or when colliders change. */ export declare function invalidateColliderMap(): void; /** * Physics query utilities. * Set Physics.current in your bootstrap (done automatically by PhysicsSystem). * Methods work with the current world, or accept an explicit world override. */ export declare class Physics { /** The active PhysicsWorld, set automatically by PhysicsSystem. */ static current: PhysicsWorld | null; private static _getWorld; /** Cast a ray and return the first hit, or null. */ static raycast(origin: Float32Array, dir: Float32Array, maxDist: number, world?: PhysicsWorld): HitResult | null; /** Cast a ray and return all hits. */ static raycastAll(origin: Float32Array, dir: Float32Array, maxDist: number, world?: PhysicsWorld): HitResult[]; /** Find the first collider overlapping a sphere at the given center and radius. */ static sphereCast(center: Float32Array, radius: number, world?: PhysicsWorld): HitResult | null; /** Find all colliders overlapping a sphere. */ static sphereCastAll(center: Float32Array, radius: number, world?: PhysicsWorld): HitResult[]; /** Find the first collider overlapping a box at the given center with half-extents. */ static boxCast(center: Float32Array, halfExtents: Float32Array, world?: PhysicsWorld): HitResult | null; /** Find all colliders overlapping a box. */ static boxCastAll(center: Float32Array, halfExtents: Float32Array, world?: PhysicsWorld): HitResult[]; } //# sourceMappingURL=physics-query.d.ts.map