b2467610c02f009e4357e19e7bd8cf09bf7e8bf9 3.3 KB

1234567
  1. {
  2. "code": "var Sprite3D = Laya.Sprite3D;\r\nimport { EventManager, EventType } from \"../Main/EventManager\";\r\nexport default class PoolManager {\r\n constructor() {\r\n PoolManager.PoolManagerInstance = this;\r\n EventManager.On(EventType.LevelCreateComplete, this, PoolManager.ClearPool);\r\n }\r\n static get Instance() {\r\n if (PoolManager.PoolManagerInstance) {\r\n return PoolManager.PoolManagerInstance;\r\n }\r\n else {\r\n var instance = new PoolManager();\r\n return instance;\r\n }\r\n }\r\n static GetSprite3D(_obj) {\r\n var objName = _obj.name;\r\n if (this.Sprite3DDic[objName] != null && this.Sprite3DDic[objName] != undefined) {\r\n if (this.Sprite3DDic[objName].length > 0) {\r\n var obj = this.Sprite3DDic[objName][0];\r\n if (!obj || obj.destroyed)\r\n obj = Sprite3D.instantiate(_obj);\r\n this.Sprite3DDic[objName].splice(0, 1);\r\n obj.transform.position = _obj.transform.position.clone();\r\n obj.transform.rotation = _obj.transform.rotation.clone();\r\n obj.transform.setWorldLossyScale(_obj.transform.getWorldLossyScale());\r\n obj.active = true;\r\n return obj;\r\n }\r\n else {\r\n var newobj = Sprite3D.instantiate(_obj);\r\n newobj.active = true;\r\n return newobj;\r\n }\r\n }\r\n else {\r\n var newobj = Sprite3D.instantiate(_obj);\r\n newobj.active = true;\r\n return newobj;\r\n }\r\n }\r\n static RecoverSprite3D(_obj, _active = false) {\r\n if (!_obj) {\r\n console.warn(\"PoolManager Recover Error!\", null);\r\n return;\r\n }\r\n if (_obj.destroyed) {\r\n console.warn(\"PoolManager Recover Error!\", \"destroyed\");\r\n return;\r\n }\r\n if (!_active && _obj.active == false) {\r\n console.warn(\"PoolManager Recover Error!\", _obj.name);\r\n return;\r\n }\r\n var objName = _obj.name;\r\n if (this.Sprite3DDic[objName] != null && this.Sprite3DDic[objName] != undefined) {\r\n var array = this.Sprite3DDic[objName];\r\n if (array.length > this.PoolSize) {\r\n _obj.destroy();\r\n return;\r\n }\r\n else {\r\n array.push(_obj);\r\n }\r\n }\r\n else {\r\n array = [];\r\n array.push(_obj);\r\n this.Sprite3DDic[objName] = array;\r\n }\r\n _obj.transform.position = new Laya.Vector3(0, 0, -100);\r\n _obj.removeSelf();\r\n _obj.active = false;\r\n }\r\n static ClearPool() {\r\n for (var key in this.Sprite3DDic) {\r\n var objs = this.Sprite3DDic[key];\r\n for (var i = 0; i < objs.length; i++) {\r\n objs[i].destroy();\r\n }\r\n }\r\n this.Sprite3DDic = {};\r\n }\r\n}\r\nPoolManager.PoolSize = 80;\r\nPoolManager.Sprite3DDic = {};\r\n",
  3. "references": [
  4. "D:/Work/samurai2-laya/laya/samuraiflash-tt/src/Main/EventManager.ts"
  5. ]
  6. }