void Clone(PrefabConfig config) { for (int i = 0; i < config.initCount; ++i) { ParticleSystem p = config.prefab.Clone <ParticleSystem>(transform); WParticleObject pObj = new WParticleObject(p, config); _pool.Add(pObj); _objects.Add(pObj); } }
public WParticleObject Activate(string id, Vector3 worldPos) { WParticleObject po = null; var obj = _pool.Get(id); if (null != obj) { po = obj as WParticleObject; Vector3 curPos = new Vector3(worldPos.x, worldPos.y, po.Position.z); po.Position = curPos; } return(po); }
public void InitSceneController(ISceneStarter sceneStarter) { for (int i = 0; i < prefabs.Count; ++i) { Clone(prefabs[i]); } _pool.OnPoolEmpty += id => { PrefabConfig config = prefabs.Find(x => x.id == id); if (null != config && config.cloneWhenEmpty) { Clone(config); return(true); } return(false); }; _pool.OnReleased += obj => { // remove the obj from the cache of active objects WParticleObject pObj = obj as WParticleObject; }; }