private LinkedList<IEv2_Zone> m_zonesVec; // zones en vectoriel #endregion Fields #region Methods //---------------------------------------------------- public void AddZone(IEv2_Zone newZone) { m_zonesVec.AddLast(newZone); // -- Construction de la zone -- GrassV2zone gZone = newZone.RasterizeRGB(new Rect(0f, 0f, m_mask.width, m_mask.height)); if(newZone.GetMainColor() == Color.clear) gZone.m_textureID = -1; else gZone.m_textureID = m_grassSkybox.GetComponent<GrassHandler>().GetCurTexID(); gZone.m_texGen = m_grassSkybox.GetComponent<GrassHandler>().GetSynthTexGen(); // Debug.Log(DEBUGTAG+"Zone ADDED : "+gZone.m_textureID+", "+(gZone.m_texGen != null ? gZone.m_texGen.ToString() : "null")); m_grassBuffer = m_grassSkybox.GetComponent<GrassHandler>().GetGrassImage(m_maskSizeDiv, gZone.m_bounds); // m_grassBuffer.Apply(false); // debug : pour voir la texture dans l'inspecteur if(newZone.GetMainColor() != Color.clear) { List<MaskPixRGB> pix = gZone.m_pixels; for(int i=0; i<pix.Count; i++) { int x = pix[i].GetX() - (int)gZone.m_bounds.x; int y = pix[i].GetY() - (int)gZone.m_bounds.z; pix[i].SetColor(m_grassBuffer.GetPixel(x, y)); } } // Debug.Log (DEBUGTAG+"ADDING Zone : "+pix.Count+" pixels"); m_updatedZone = gZone; m_zones.AddLast(m_updatedZone); m_backupZones.Add(new GrassV2zone(gZone)); m_undoedZones.Clear(); // Supprimer zones annulées (plus de redo possible) m_needMaskUpdate = true; m_zoneAdded = true; m_mainScene.GetComponent<PleaseWaitUI>().SetDisplayIcon(true); SetVisible(true); }