export default GameObjectPool; /** * @template T */ declare class GameObjectPool { /** * @param {Scene} scene */ constructor(scene: Scene); /** * @callback InstanceFn * @param {string} key * @param {new GameObject} GameObjectClass * @param {Scene} scene * @returns {T} */ /** * @callback ResetFn * @param {T} gameObject * @returns {void} */ /** * @private * @type {Scene} */ private scene; /** * @private * @type {Logger} */ private logger; /** * @private * @type {Map>} */ private map; get keys(): any[]; get instances(): number; /** * * @param {string} key * @param {new T} gameObjectClass * @param {InstanceFn} [instanceFn] */ register(key: string, gameObjectClass: new () => T, instanceFn?: (key: string, GameObjectClass: new () => GameObject, scene: Scene) => T, resetFn?: any): GameObjectPool; /** * @template {T} O * @param {string} key * @returns {O} */ obtain(key: string): O; /** * * @param {T} object */ release(object: T): GameObjectPool; dispose(): void; /** * @private * @param {string} key * @param {new T} GameObjectClass * @param {Scene} scene * @returns {T} */ private createInstance; /** * @private * @param {T} object */ private onObjectCreate; } import GameObject from "./GameObject"; import Scene from "./Scene";