123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- import {
- createSizedArray,
- } from '../helpers/arrays';
- import shapePool from './shape_pool';
- import pooling from './pooling';
- import ShapeCollection from '../shapes/ShapeCollection';
- const shapeCollectionPool = (function () {
- var ob = {
- newShapeCollection: newShapeCollection,
- release: release,
- };
- var _length = 0;
- var _maxLength = 4;
- var pool = createSizedArray(_maxLength);
- function newShapeCollection() {
- var shapeCollection;
- if (_length) {
- _length -= 1;
- shapeCollection = pool[_length];
- } else {
- shapeCollection = new ShapeCollection();
- }
- return shapeCollection;
- }
- function release(shapeCollection) {
- var i;
- var len = shapeCollection._length;
- for (i = 0; i < len; i += 1) {
- shapePool.release(shapeCollection.shapes[i]);
- }
- shapeCollection._length = 0;
- if (_length === _maxLength) {
- pool = pooling.double(pool);
- _maxLength *= 2;
- }
- pool[_length] = shapeCollection;
- _length += 1;
- }
- return ob;
- }());
- export default shapeCollectionPool;
|