@mousepox/math
Version:
Math-related objects and utilities
35 lines (34 loc) • 1.37 kB
TypeScript
import { IPoint } from "./core";
import { Vector2 } from "./Vector2";
export interface IGridRaycastResult {
distance: number;
side: number;
value: number | undefined;
}
export declare type GridForEach = (value: number, x: number, y: number) => void;
export declare class Grid {
static fromStrings(rows: string[], map: string): Grid;
width: number;
height: number;
cells: number[];
private readonly center;
constructor(width?: number, height?: number);
resize(width: number, height: number): void;
fill(value: number): void;
valid(x: number, y: number): boolean;
get(x: number, y: number): number;
getAdjacentFlags(x: number, y: number): number;
set(x: number, y: number, value: number): void;
setIndex(index: number, value: number): void;
copy(grid: Grid): void;
forEach(handler: GridForEach): void;
forEachInArea(x: number, y: number, width: number, height: number, handler: GridForEach): void;
forEachAdjacent(x: number, y: number, handler: GridForEach): void;
rotate(rotations?: number): void;
rotatePoint(p: IPoint, angle: number): void;
paste(grid: Grid, x: number, y: number): void;
raycast(origin: IPoint, direction: Vector2, result?: IGridRaycastResult): IGridRaycastResult;
xyToIndex(x: number, y: number): number;
private indexToX;
private indexToY;
}