Example #1
0
        public static Texture2D Copy(this Texture2D source, TextureFormat format = TextureFormat.RGBA32, CopyFilterMode filter = CopyFilterMode.Source)
        {
            if (source == null)
            {
                return(null);
            }
            Texture2D result = new Texture2D(source.width, source.height, format, false);

            result.name = source.name;
            switch (filter)
            {
            case CopyFilterMode.Source:
                result.filterMode = source.filterMode;
                break;

            case CopyFilterMode.Point:
                result.filterMode = FilterMode.Point;
                break;

            case CopyFilterMode.Bilinear:
                result.filterMode = FilterMode.Bilinear;
                break;

            case CopyFilterMode.Trilinear:
                result.filterMode = FilterMode.Trilinear;
                break;
            }
            Color32[] pixels = source.GetPixels32();
            if (pixels != null)
            {
                result.SetPixels32(source.GetPixels32());
                result.Apply();
            }
            return(result);
        }
        public static Texture2D Crop(this Texture2D source, Rect area, TextureFormat format = TextureFormat.RGBA32, CopyFilterMode filter = CopyFilterMode.Source)
        {
            if (source == null)
            {
                return(null);
            }
            int       top    = (int)area.yMin;
            int       left   = (int)area.xMin;
            int       width  = (int)area.width;
            int       height = (int)area.height;
            Texture2D result = new Texture2D(width, height, format, false);

            result.name = source.name;
            switch (filter)
            {
            case CopyFilterMode.Source:
                result.filterMode = source.filterMode;
                break;

            case CopyFilterMode.Point:
                result.filterMode = FilterMode.Point;
                break;

            case CopyFilterMode.Bilinear:
                result.filterMode = FilterMode.Bilinear;
                break;

            case CopyFilterMode.Trilinear:
                result.filterMode = FilterMode.Trilinear;
                break;
            }
            Color[] pixels = source.GetPixels(left, top, width, height);
            if (pixels != null)
            {
                result.SetPixels(pixels);
                result.Apply();
            }
            return(result);
        }