the-world-engine
Version:
three.js based, unity like game engine for browser
106 lines (105 loc) • 3.65 kB
TypeScript
import { Vector2 } from "three/src/Three";
import { Component } from "../../hierarchy_object/Component";
import type { IGridCollidable } from "./IGridCollidable";
/**
* collide 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 GridCollideMap extends Component implements IGridCollidable {
private readonly _collideMap;
private _gridCellWidth;
private _gridCellHeight;
private _showCollider;
private _colliderIsShowing;
private readonly _colliderImages;
private _collideEnabled;
private readonly _initializeFunctions;
private _started;
start(): void;
onEnable(): void;
onDisable(): void;
/**
* add collider at position
* @param x x position in grid
* @param y y position in grid
* @returns
*/
addCollider(x: number, y: number): void;
/**
* add collider from two dimensional array. array left bottom is (0, 0) in grid coordinate system
* @param array array that contains 1 or 0. 1 means collider is there
* @param xOffset array x offset, if you want to add collider from array[1][3] to (2, 3) you should set xOffset = 1
* @param yOffset array y offset, if you want to add collider from array[3][1] to (3, 2) you should set yOffset = 1
* @returns
*/
addColliderFromTwoDimensionalArray(array: (1 | 0)[][], xOffset: number, yOffset: number): void;
/**
* remove collider at position
* @param x x position in grid
* @param y y position in grid
* @returns
*/
removeCollider(x: number, y: number): void;
/**
* remove all collider
*/
removeAllColliders(): void;
private addColliderImages;
private removeColliderImages;
private addDebugImage;
private removeDebugImage;
/**
* query that collides at position
* @param x world position x
* @param y world position y
* @param width collison width
* @param height collision height
* @returns if collides, return true. otherwise, return false
*/
checkCollision(x: number, y: number, width: number, height: number): boolean;
/**
* get colliders grid position to vector2 array
* @returns vector2 array that contains grid position
*/
getCollidersToArray(): Vector2[];
/**
* 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 collide map will visualized as debug image (default: false)
*/
get showCollider(): boolean;
/**
* if this value is true, grid collide map will visualized as debug image (default: false)
*/
set showCollider(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;
}