UNPKG

@rpgjs/physic

Version:

A deterministic 2D top-down physics library for RPG, sandbox and MMO games

32 lines 1.29 kB
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