Example #1
0
    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);
    }