private void ResizeSplatControlMaps()
        {
            for (int i = 0; i < SplatControlMapCount; ++i)
            {
                Texture2D t = GetSplatControl(i);
                if (t == null)
                {
                    return;
                }
                Texture2D     tmp = GCommon.CreateTexture(SplatControlResolution, Color.clear);
                RenderTexture rt  = new RenderTexture(SplatControlResolution, SplatControlResolution, 32, RenderTextureFormat.ARGB32, RenderTextureReadWrite.Linear);
                GCommon.CopyToRT(t, rt);
                GCommon.CopyFromRT(tmp, rt);
                rt.Release();
                Object.DestroyImmediate(rt);

                tmp.name       = t.name;
                tmp.filterMode = t.filterMode;
                tmp.wrapMode   = t.wrapMode;
                Object.DestroyImmediate(t, true);
                SplatControls[i] = tmp;
                GCommon.TryAddObjectToAsset(tmp, TerrainData);
            }

            UpdateMaterials();
        }
 public Texture2D GetSplatControl(int index)
 {
     if (index < 0 || index >= SplatControlMapCount)
     {
         throw new System.ArgumentException("Index must be >=0 and <=SplatControlMapCount");
     }
     else
     {
         Texture2D t = SplatControls[index];
         if (t == null)
         {
             Color fillColor = (index == 0 && SplatControlMapCount == 1) ? new Color(1, 0, 0, 0) : new Color(0, 0, 0, 0);
             t                    = GCommon.CreateTexture(SplatControlResolution, fillColor);
             t.filterMode         = FilterMode.Bilinear;
             t.wrapMode           = TextureWrapMode.Clamp;
             t.name               = SPLAT_CONTROL_MAP_NAME + " " + index;
             SplatControls[index] = t;
         }
         GCommon.TryAddObjectToAsset(t, TerrainData);
         return(t);
     }
 }
        private void ResizeMetallicMap()
        {
            if (metallicMap == null)
            {
                return;
            }
            Texture2D     tmp = GCommon.CreateTexture(MetallicMapResolution, Color.black);
            RenderTexture rt  = new RenderTexture(MetallicMapResolution, MetallicMapResolution, 32, RenderTextureFormat.ARGB32, RenderTextureReadWrite.Linear);

            GCommon.CopyToRT(metallicMap, rt);
            GCommon.CopyFromRT(tmp, rt);
            rt.Release();
            Object.DestroyImmediate(rt);

            tmp.name       = metallicMap.name;
            tmp.filterMode = metallicMap.filterMode;
            tmp.wrapMode   = metallicMap.wrapMode;
            Object.DestroyImmediate(metallicMap, true);
            metallicMap = tmp;
            GCommon.TryAddObjectToAsset(metallicMap, TerrainData);
            UpdateMaterials();
        }