phaser3-rex-plugins
Version:
115 lines (105 loc) • 2.83 kB
TypeScript
export default Raycaster;
declare namespace Raycaster {
/**
* Configuration options for ray casting.
*/
interface IConfig {
/**
* Maximum ray length used when no hit is found earlier.
*/
maxRayLength?: number
}
/**
* Ray cast hit result.
*/
interface IResult {
/**
* Hit obstacle game object.
*/
gameObject: Phaser.GameObjects.GameObject,
/**
* Polygon used as the obstacle shape.
*/
polygon: Phaser.Geom.Polygon,
/**
* Hit segment on the obstacle polygon.
*/
segment: Phaser.Geom.Line,
/**
* Hit point x coordinate.
*/
x: number,
/**
* Hit point y coordinate.
*/
y: number,
/**
* Reflection angle in radians at the hit point.
*/
reflectAngle: number,
}
}
/**
* Utility for casting rays against polygon obstacles.
*/
declare class Raycaster {
/**
* Add an obstacle with optional custom polygon.
*
* @param gameObject - Obstacle game object.
* @param polygon - Optional polygon shape of the obstacle.
* @returns This raycaster instance.
*/
addObstacle(
gameObject: Phaser.GameObjects.GameObject,
polygon?: Phaser.Geom.Polygon
): this;
/**
* Add multiple obstacle game objects.
*
* @param gameObjects - Obstacle game objects to add.
* @returns This raycaster instance.
*/
addObstacle(
gameObjects: Phaser.GameObjects.GameObject[]
): this;
/**
* Remove an obstacle.
*
* @param gameObject - Obstacle game object to remove.
* @returns This raycaster instance.
*/
removeObstacle(
gameObject: Phaser.GameObjects.GameObject
): this;
/**
* Remove all obstacles.
*
* @returns This raycaster instance.
*/
clearObstacle(): this;
/**
* Update obstacle polygon data.
*
* @param gameObject - Obstacle game object to update.
* @param polygon - Optional replacement polygon shape.
* @returns This raycaster instance.
*/
updateObstacle(
gameObject: Phaser.GameObjects.GameObject,
polygon?: Phaser.Geom.Polygon
): this;
/**
* Cast a ray from a world position toward an angle.
*
* @param x - Ray origin x coordinate.
* @param y - Ray origin y coordinate.
* @param angle - Ray direction angle in radians.
* @returns Hit result or false when no obstacle is hit.
*/
rayToward(
x: number,
y: number,
angle: number
): Raycaster.IResult | false;
}