PoolManager.js 7.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. (function() {
  2. var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
  3. var __module = nodeEnv ? module : {exports:{}};
  4. var __filename = 'preview-scripts/assets/script/frameWork/Pool/PoolManager.js';
  5. var __require = nodeEnv ? function (request) {
  6. return cc.require(request);
  7. } : function (request) {
  8. return __quick_compile_project__.require(request, __filename);
  9. };
  10. function __define (exports, require, module) {
  11. if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict";
  12. cc._RF.push(module, 'cfcf6785mVJ+JmIPHtzQrkV', 'PoolManager');
  13. // script/frameWork/Pool/PoolManager.ts
  14. "use strict";
  15. Object.defineProperty(exports, "__esModule", { value: true });
  16. exports.PoolManager = void 0;
  17. /**
  18. * 全局对象池管理
  19. */
  20. var PoolManager = /** @class */ (function () {
  21. function PoolManager() {
  22. this._poolMap = new Map();
  23. }
  24. PoolManager.prototype.GetCount = function () {
  25. throw new Error("Method not implemented.");
  26. };
  27. PoolManager.prototype.CreatePool = function (poolName) {
  28. if (this._poolMap[poolName]) {
  29. console.warn('对象池已经存在,无需重复创建!');
  30. return null;
  31. }
  32. var pool = new cc.NodePool();
  33. this._poolMap[poolName] = pool;
  34. return pool;
  35. };
  36. PoolManager.prototype.CreatePrePool = function (poolName, prefab, maxNum) {
  37. if (this._poolMap[poolName]) {
  38. console.warn('对象池已经存在,无需重复创建!');
  39. return null;
  40. }
  41. var pool = new cc.NodePool();
  42. this._poolMap[poolName] = pool;
  43. for (var i = 0; i < maxNum; i++) {
  44. var node = cc.instantiate(prefab);
  45. pool.put(node);
  46. }
  47. };
  48. PoolManager.prototype.GetPool = function (poolName) {
  49. if (this._poolMap[poolName]) {
  50. return this._poolMap[poolName];
  51. }
  52. else {
  53. return this.CreatePool(poolName);
  54. }
  55. };
  56. PoolManager.prototype.ReleasePool = function (poolName) {
  57. if (this._poolMap[poolName]) {
  58. this._poolMap[poolName].clear();
  59. }
  60. // else {
  61. // console.error(`对象池${poolName}不存在`);
  62. // }
  63. };
  64. PoolManager.prototype.ReleaseAllPool = function () {
  65. for (var key in this._poolMap) {
  66. this._poolMap[key].clear();
  67. }
  68. };
  69. return PoolManager;
  70. }());
  71. exports.PoolManager = PoolManager;
  72. cc._RF.pop();
  73. }
  74. if (nodeEnv) {
  75. __define(__module.exports, __require, __module);
  76. }
  77. else {
  78. __quick_compile_project__.registerModuleFunc(__filename, function () {
  79. __define(__module.exports, __require, __module);
  80. });
  81. }
  82. })();
  83. //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0cy9zY3JpcHQvZnJhbWVXb3JrL1Bvb2wvUG9vbE1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUE7O0dBRUc7QUFDSDtJQUFBO1FBQ1csYUFBUSxHQUE2QixJQUFJLEdBQUcsRUFBdUIsQ0FBQztJQW9EL0UsQ0FBQztJQWxERyw4QkFBUSxHQUFSO1FBQ0ksTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxnQ0FBVSxHQUFWLFVBQVcsUUFBZ0I7UUFDdkIsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ3pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUNoQyxPQUFPLElBQUksQ0FBQztTQUNmO1FBQ0QsSUFBSSxJQUFJLEdBQUcsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDL0IsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELG1DQUFhLEdBQWIsVUFBYyxRQUFnQixFQUFFLE1BQWlCLEVBQUUsTUFBYztRQUM3RCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDekIsT0FBTyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQ2hDLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFDRCxJQUFJLElBQUksR0FBRyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUMvQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzdCLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNsQjtJQUNMLENBQUM7SUFFRCw2QkFBTyxHQUFQLFVBQVEsUUFBZ0I7UUFDcEIsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ3pCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNsQzthQUFNO1lBQ0gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3BDO0lBQ0wsQ0FBQztJQUVELGlDQUFXLEdBQVgsVUFBWSxRQUFnQjtRQUN4QixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNuQztRQUNELFNBQVM7UUFDVCwwQ0FBMEM7UUFDMUMsSUFBSTtJQUNSLENBQUM7SUFFRCxvQ0FBYyxHQUFkO1FBQ0ksS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDOUI7SUFDTCxDQUFDO0lBRUwsa0JBQUM7QUFBRCxDQXJEQSxBQXFEQyxJQUFBO0FBckRZLGtDQUFXIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBJT2JqZWN0UG9vbE1hbmFnZXIgfSBmcm9tIFwiLi9JT2JqZWN0UG9vbE1hbmFnZXJcIjtcbi8qKlxuICog5YWo5bGA5a+56LGh5rGg566h55CGXG4gKi9cbmV4cG9ydCBjbGFzcyBQb29sTWFuYWdlciBpbXBsZW1lbnRzIElPYmplY3RQb29sTWFuYWdlciB7XG4gICAgcHVibGljIF9wb29sTWFwOiBNYXA8c3RyaW5nLCBjYy5Ob2RlUG9vbD4gPSBuZXcgTWFwPHN0cmluZywgY2MuTm9kZVBvb2w+KCk7XG5cbiAgICBHZXRDb3VudCgpOiBudW1iZXIge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBDcmVhdGVQb29sKHBvb2xOYW1lOiBzdHJpbmcpOiBjYy5Ob2RlUG9vbCB7XG4gICAgICAgIGlmICh0aGlzLl9wb29sTWFwW3Bvb2xOYW1lXSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCflr7nosaHmsaDlt7Lnu4/lrZjlnKjvvIzml6DpnIDph43lpI3liJvlu7ohJyk7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBsZXQgcG9vbCA9IG5ldyBjYy5Ob2RlUG9vbCgpO1xuICAgICAgICB0aGlzLl9wb29sTWFwW3Bvb2xOYW1lXSA9IHBvb2w7XG4gICAgICAgIHJldHVybiBwb29sO1xuICAgIH1cblxuICAgIENyZWF0ZVByZVBvb2wocG9vbE5hbWU6IHN0cmluZywgcHJlZmFiOiBjYy5QcmVmYWIsIG1heE51bTogbnVtYmVyKTogY2MuTm9kZVBvb2wge1xuICAgICAgICBpZiAodGhpcy5fcG9vbE1hcFtwb29sTmFtZV0pIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2Fybign5a+56LGh5rGg5bey57uP5a2Y5Zyo77yM5peg6ZyA6YeN5aSN5Yib5bu6IScpO1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHBvb2wgPSBuZXcgY2MuTm9kZVBvb2woKTtcbiAgICAgICAgdGhpcy5fcG9vbE1hcFtwb29sTmFtZV0gPSBwb29sO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1heE51bTsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgbm9kZSA9IGNjLmluc3RhbnRpYXRlKHByZWZhYik7XG4gICAgICAgICAgICBwb29sLnB1dChub2RlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEdldFBvb2wocG9vbE5hbWU6IHN0cmluZyk6IGNjLk5vZGVQb29sIHtcbiAgICAgICAgaWYgKHRoaXMuX3Bvb2xNYXBbcG9vbE5hbWVdKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fcG9vbE1hcFtwb29sTmFtZV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5DcmVhdGVQb29sKHBvb2xOYW1lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIFJlbGVhc2VQb29sKHBvb2xOYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMuX3Bvb2xNYXBbcG9vbE5hbWVdKSB7XG4gICAgICAgICAgICB0aGlzLl9wb29sTWFwW3Bvb2xOYW1lXS5jbGVhcigpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGVsc2Uge1xuICAgICAgICAvLyAgICAgY29uc29sZS5lcnJvcihg5a+56LGh5rGgJHtwb29sTmFtZX3kuI3lrZjlnKhgKTtcbiAgICAgICAgLy8gfVxuICAgIH1cblxuICAgIFJlbGVhc2VBbGxQb29sKCkge1xuICAgICAgICBmb3IgKGxldCBrZXkgaW4gdGhpcy5fcG9vbE1hcCkge1xuICAgICAgICAgICAgdGhpcy5fcG9vbE1hcFtrZXldLmNsZWFyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbn0iXX0=