class ObjectPool { constructor(createFn, resetFn) { this.createFn = createFn; // Funkcija za kreiranje novega objekta this.resetFn = resetFn; // Funkcija za resetiranje objekta pred ponovno uporabo this.active = []; // Aktivni objekti this.inactive = []; // Neaktivni objekti (v poolu) } // Dobi objekt iz poola get() { let item; if (this.inactive.length > 0) { item = this.inactive.pop(); } else { item = this.createFn(); } // Resetiraj objekt (npr. nastavi visible = true) if (this.resetFn) { this.resetFn(item); } this.active.push(item); return item; } // Vrni objekt v pool release(item) { const index = this.active.indexOf(item); if (index > -1) { this.active.splice(index, 1); this.inactive.push(item); } } // Vrni vse aktivne v pool releaseAll() { while (this.active.length > 0) { const item = this.active.pop(); this.inactive.push(item); } } // Počisti vse clear() { this.active = []; this.inactive = []; } // Info getStats() { return { active: this.active.length, inactive: this.inactive.length, total: this.active.length + this.inactive.length }; } } // Ensure global access window.ObjectPool = ObjectPool;