Beispiel #1
0
 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);
     }
 }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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;
            };
        }