import { _decorator, Component, instantiate, Node, NodePool, Prefab } from 'cc';

export class GameObjectPool {
    private _pool: NodePool;
    private _prefab: Prefab;

    constructor(prefab: Prefab, initialSize: number){
        this._prefab = prefab;
        this._pool = new NodePool();
        this.preLoad(initialSize);
    }

    private preLoad(count: number){
        for(let i = 0; i < count; i++){
            const node = instantiate(this._prefab);
            this._pool.put(node);
        }
    }

    //获取节点
    public get(): Node{
        let node: Node;
        if(this._pool.size() > 0){
            node = this._pool.get();
        } else {
            node = instantiate(this._prefab)
        }
        return node;
    }

    public put(node: Node){
        this._pool.put(node);
    }
}


