public T CreateLivePixel <T>(Vector2 pos, EnumCentre.BrushType type) where T : LivePixel, new() { //TODO...翻一下粒子类型回收池子,看看有没有该类型的回收池子 //TODO...初始化这个粒子的数据 //TODO...把该粒子放进堆里(这是还活着的状态的粒子) //TODO...返回这个粒子 //Start... Stack <LivePixel> pool = null; dicPixelStackPool.TryGetValue(typeof(T), out pool); if (pool == null || pool.Count == 0) { //什么??没有这个类型的粒子回收池子或者回收池子里没有死掉的粒子 //那就再生一个粒子 pixel = new T(); } else { //哈哈哈哈这个类型的回收池子里有死掉的粒子,拿出来,要活的!!! pixel = pool.Pop(); pixel.isDead = false; } //初始化 pixel.position = pos; pixel.renderWStart = pallettePrevData.prevRenderStartEndW.x; pixel.renderHStart = pallettePrevData.prevRenderStartEndH.x; pixel.renderWEnd = pallettePrevData.prevRenderStartEndW.y; pixel.renderHEnd = pallettePrevData.prevRenderStartEndH.y; pixel.color = dicObjectPixel[type].color; //放进活跃堆里 AddToStack(pixel, pixel.x, pixel.y); pixel.Start(this); //可能会增加GC? //返回 return(pixel as T); }
public void SetBrush(EnumCentre.BrushType brush) { this.brush = brush; ChangeBrush(); }