示例#1
0
        internal static void DumpTexture(TextureMetadata tm)
        {
            var dir = $"{TL_DIR_SCENE}/{tm.scene}";
            var di  = new DirectoryInfo(dir);

            if (!di.Exists)
            {
                di.Create();
            }
            var path = $"{dir}/{tm.SafeID}.png";

            if (!File.Exists(path))
            {
                TextureUtils.SaveTex(tm.texture, path);
            }

            var s  = DumpingAllToGlobal.Value ? GlobalTextureTargetName : tm.scene;
            var sw = sw_textureNameDump[s];

            if (sw == null)
            {
                return;
            }
            //if (sw.BaseStream == null) return;
            sw.WriteLine("{0}={1}", tm.SafeID, path.Replace(TL_DIR_SCENE + "/", ""));
            sw.Flush();
        }
示例#2
0
        internal static void RegisterTexture(Texture tex, string path, string s)
        {
            if (IsDumpingEnabled.Value)
            {
                if (tex == null)
                {
                    return;
                }
                if (IsSwappedTexture(tex))
                {
                    return;
                }
                if (string.IsNullOrEmpty(tex.name))
                {
                    return;
                }

                if (DumpingAllToGlobal.Value)
                {
                    s = GlobalTextureTargetName;
                }

                PrepDumper(s);
                var tm = new TextureMetadata(tex, path, s);
                if (textureDumpTargets[s].Contains(tm))
                {
                    return;
                }
                textureDumpTargets[s].Add(tm);
                DumpTexture(tm);
            }
        }
示例#3
0
        internal static void RegisterTexture(Image i, string path, string s)
        {
            if (IsDumpingEnabled.Value)
            {
                var tex = i.mainTexture;
                if (tex == null)
                {
                    return;
                }
                if (IsSwappedTexture(tex))
                {
                    return;
                }
                if (string.IsNullOrEmpty(tex.name))
                {
                    return;
                }

                if (DumpingAllToGlobal.Value)
                {
                    s = GlobalTextureTargetName;
                }

                PrepDumper(s);
                RegisterTexture(i.mainTexture, path, s);
                if (i.sprite == null)
                {
                    return;
                }

                var rect = i.sprite.textureRect;
                if (rect == new Rect(0, 0, tex.width, tex.height))
                {
                    RegisterTexture(i.mainTexture, path, s);
                    return;
                }
                if (!readableTextures.TryGetValue(tex.name, out var readable))
                {
                    readableTextures[tex.name] = TextureUtils.MakeReadable(tex);
                    readable = readableTextures[tex.name];
                }
                var cropped = readable.GetPixels((int)rect.x, (int)rect.y, (int)rect.width, (int)rect.height);
                var nt2d    = new Texture2D((int)rect.width, (int)rect.height);
                nt2d.SetPixels(cropped);
                nt2d.Apply();

                nt2d.name = tex.name.ToLower().Contains("atlas") ? GetAtlasTextureName(i) : tex.name;
                var tm = new TextureMetadata(nt2d, path, s);

                if (textureDumpTargets[s].Contains(tm))
                {
                    return;
                }
                textureDumpTargets[s].Add(tm);
                DumpTexture(tm);
            }
        }
        internal static void RegisterTexture(Sprite spr, string path, string s)
        {
            if (isDumpingEnabled)
            {
                if (spr == null)
                {
                    return;
                }
                var tex = spr.texture;
                if (IsSwappedTexture(spr.texture))
                {
                    return;
                }
                if (string.IsNullOrEmpty(tex.name))
                {
                    return;
                }
                PrepDumper(s);
                RegisterTexture(tex, path, s);

                var rect = spr.textureRect;
                if (rect == null || rect == new Rect(0, 0, tex.width, tex.height))
                {
                    return;
                }
                Texture2D readable = null;
                if (!readableTextures.TryGetValue(tex.name, out readable))
                {
                    readableTextures[tex.name] = TextureUtils.MakeReadable(tex);
                    readable = readableTextures[tex.name];
                }
                var cropped = readable.GetPixels((int)rect.x, (int)rect.y, (int)rect.width, (int)rect.height);
                var nt2d    = new Texture2D((int)rect.width, (int)rect.height);
                nt2d.SetPixels(cropped);
                nt2d.Apply();

                nt2d.name = spr.texture.name.ToLower().Contains("atlas") ? GetAtlasTextureName(spr) : spr.texture.name;
                var tm = new TextureMetadata(nt2d, path, s);

                if (textureDumpTargets[s].Contains(tm))
                {
                    return;
                }
                textureDumpTargets[s].Add(tm);
                DumpTexture(tm);
            }
        }