import { Transform } from "./transform"; import { IAsset } from "zogra-renderer"; import { IEventSource, EventEmitter, EventKeys } from "zogra-renderer"; import { Time } from "./engine"; import { ICollider } from "../physics/physics-generic"; export interface EntityEvents { update(entity: Entity, time: Time): void; start(entity: Entity, time: Time): void; exit(entity: Entity, time: Time): void; } export interface IEntity { assetID: number; name: string; collider: ICollider | null; } export declare class Entity extends Transform implements IAsset, IEventSource, IEntity { assetID: number; name: string; protected eventEmitter: EventEmitter; protected _destroyed: boolean; private _collider; get collider(): ICollider | null; set collider(value: ICollider | null); get destroyed(): boolean; on>(event: T, listener: EntityEvents[T]): void; off>(event: T, listener: EntityEvents[T]): void; destroy(): void; protected start(time: Time): void; protected update(time: Time): void; protected exit(time: Time): void; } export declare class EntityManager { protected entityMap: Map; protected _entities: Entity[]; get entities(): Entity[]; add(entity: T): void; protected removeRecursive(entity: T): void; remove(entity: T): void; }