the-world-engine
Version:
three.js based, unity like game engine for browser
88 lines (87 loc) • 3.39 kB
TypeScript
import { Vector2 } from "three/src/Three";
import { Component } from "../../hierarchy_object/Component";
import type { GameObject } from "../../hierarchy_object/GameObject";
import type { IGridCoordinatable } from "../helper/IGridCoordinatable";
/**
* event map for grid system
*
* coordinate system is same as world coordinate system (positive x is right, positive y is up)
*
* important: grid position data is stored as string ("x_y" format)
* so this component might not work properly if this component's gameObject.position is not integer
*/
export declare class GridEventMap extends Component implements IGridCoordinatable {
private readonly _eventMap;
private _gridCellWidth;
private _gridCellHeight;
private _showCollider;
private readonly _eventVisualizeImages;
private readonly _initializeFunctions;
private _started;
start(): void;
/**
* add event at position
* @param x x position in grid
* @param y y position in grid
* @param callback event callback
* @returns
*/
addEvent(x: number, y: number, callback: (gridX: number, gridY: number, target: GameObject) => void): void;
/**
* add event from two dimensional array. array left bottom is (0, 0) in grid coordinate system
* @param array array that contains event callback
* @param xOffset array x offset, if you want to add event from array[1][3] to (2, 3) you should set xOffset = 1
* @param yOffset array y offset, if you want to add event from array[3][1] to (3, 2) you should set yOffset = 1
* @returns
*/
addEventsFromTwoDimensionalArray(array: (((gridX: number, gridY: number, target: GameObject) => void) | null)[][], xOffset: number, yOffset: number): void;
private addVisualizeImages;
private removeVisualizeImages;
private addDebugImage;
/**
* invoke event callback if there is event at grid position
* @param x world position x
* @param y world position y
* @param width aabb collision width
* @param height aabb collision height
* @param target target game object
* @returns true if there is event at grid position
*/
tryInvokeEvent(x: number, y: number, width: number, height: number, target: GameObject): boolean;
/**
* grid cell width, if this value is not integer, might not work properly (default: 1)
*/
get gridCellWidth(): number;
/**
* grid cell width, if this value is not integer, might not work properly (default: 1)
*/
set gridCellWidth(value: number);
/**
* grid cell height, if this value is not integer, might not work properly (default: 1)
*/
get gridCellHeight(): number;
/**
* grid cell height, if this value is not integer, might not work properly (default: 1)
*/
set gridCellHeight(value: number);
/**
* if this value is true, grid event map will visualized as debug image (default: false)
*/
get showEvents(): boolean;
/**
* if this value is true, grid event map will visualized as debug image (default: false)
*/
set showEvents(value: boolean);
/**
* grid coordinate center position
*/
get gridCenter(): Vector2;
/**
* grid coordinate center position x
*/
get gridCenterX(): number;
/**
* grid coordinate center position y
*/
get gridCenterY(): number;
}