@rpgjs/physic
Version:
A deterministic 2D top-down physics library for RPG, sandbox and MMO games
32 lines • 1.29 kB
TypeScript
import { Vector2 } from '../core/math/Vector2';
import { SpatialPartition } from '../world/SpatialPartition';
import { Collider } from './Collider';
export interface RaycastHit {
entity: ReturnType<Collider['getEntity']>;
point: Vector2;
normal: Vector2;
distance: number;
}
/**
* Casts a ray in the world using the spatial partition for broad-phase, then shape-specific narrow-phase.
* Direction will be normalized internally.
*
* @param partition - Spatial partition to query
* @param origin - Ray origin
* @param direction - Ray direction (any length)
* @param maxDistance - Maximum distance
* @param mask - Optional collision mask (layer)
* @param filter - Optional filter function (return true to include entity)
* @returns Nearest hit or null
*
* @example
* ```typescript
* const hit = raycast(worldPartition, new Vector2(0,0), new Vector2(1,0), 1000);
* if (hit) {
* // handle
* }
* ```
*/
export declare function raycast(partition: SpatialPartition, origin: Vector2, direction: Vector2, maxDistance: number, mask?: number, filter?: (entity: any) => boolean): RaycastHit | null;
export declare function raycastCollider(collider: Collider, origin: Vector2, dir: Vector2, maxDistance: number): RaycastHit | null;
//# sourceMappingURL=raycast.d.ts.map