private void UpdatePixels(bool apply = false)
 {
     if (this.applyLock != 0)
     {
         this.updateQueued = true;
         FPGrassProbabilities fPGrassProbability = this;
         fPGrassProbability.applyQueued = fPGrassProbability.applyQueued | apply;
     }
     else
     {
         Color[]   pixels  = this.GetPixels();
         Texture2D texture = this.GetTexture(1);
         if (!this.linear)
         {
             texture.SetPixels(0, 0, 16, 2, pixels);
         }
         else
         {
             FPGrassProbabilities.Linear.SetLinearPixels(pixels, texture);
         }
         if (apply)
         {
             texture.Apply();
         }
     }
 }
Beispiel #2
0
 private void Initialize()
 {
     if (Support.Supported)
     {
         if (this.grassProbabilities == null)
         {
             this.grassProbabilities      = ScriptableObject.CreateInstance <FPGrassProbabilities>();
             this.grassProbabilities.name = "FPGrassProbabilities";
         }
         if (this.grassAtlas == null)
         {
             this.grassAtlas      = ScriptableObject.CreateInstance <FPGrassAtlas>();
             this.grassAtlas.name = "FPGrassAtlas";
         }
         this.settingsDirty = true;
         this.UpdateProbabilities();
         this.UpdateGrassProperties();
     }
 }
    public void StopEditing()
    {
        FPGrassProbabilities fPGrassProbability = this;
        int num  = fPGrassProbability.applyLock - 1;
        int num1 = num;

        fPGrassProbability.applyLock = num;
        if (num1 <= 0)
        {
            this.applyLock = 0;
            if (this.updateQueued)
            {
                this.updateQueued = false;
                bool flag = this.applyQueued;
                this.applyQueued = false;
                this.UpdatePixels(flag);
            }
        }
    }
    public void SetDetailProperty(int splatChannel, int detailIndex, int detailID, float probability)
    {
        object obj;
        float  single;

        Color[] pixels = this.GetPixels();
        int     num    = 4 * splatChannel + detailIndex;
        int     num1   = num + 16;

        if (detailID >= 0)
        {
            obj = (detailID <= 256 ? detailID : 256);
        }
        else
        {
            obj = null;
        }
        float single1 = (float)obj / 256f;

        if (probability >= 0f)
        {
            single = (probability <= 1f ? probability : 1f);
        }
        else
        {
            single = 0f;
        }
        float single2 = single;
        bool  flag    = false;

        if (FPGrassProbabilities.SetDif(ref pixels[num].a, single1))
        {
            flag = true;
        }
        if (FPGrassProbabilities.SetDif(ref pixels[num1].a, single2))
        {
            flag = true;
        }
        if (flag)
        {
            this.UpdatePixels(true);
        }
    }
    public void StartEditing()
    {
        FPGrassProbabilities fPGrassProbability = this;

        fPGrassProbability.applyLock = fPGrassProbability.applyLock + 1;
    }