Exemple #1
0
        private void ExportFiles(object data)
        {
            m_exportPath = (string)data;
            PrepareExportDirectory(m_exportPath);

            TextureAssetExporter textureExporter = new TextureAssetExporter();

            GameStructure.FileCollection.Exporter.OverrideExporter(ClassIDType.Texture2D, textureExporter);
            GameStructure.FileCollection.Exporter.OverrideExporter(ClassIDType.Cubemap, textureExporter);
            GameStructure.FileCollection.Exporter.OverrideExporter(ClassIDType.Sprite, textureExporter);
            GameStructure.FileCollection.Exporter.OverrideExporter(ClassIDType.Shader, new ShaderAssetExporter());
            GameStructure.FileCollection.Exporter.OverrideExporter(ClassIDType.AudioClip, new AudioAssetExporter());

            EngineAssetExporter engineExporter = new EngineAssetExporter();

            GameStructure.FileCollection.Exporter.OverrideExporter(ClassIDType.Material, engineExporter);
            GameStructure.FileCollection.Exporter.OverrideExporter(ClassIDType.Texture2D, engineExporter);
            GameStructure.FileCollection.Exporter.OverrideExporter(ClassIDType.Mesh, engineExporter);
            GameStructure.FileCollection.Exporter.OverrideExporter(ClassIDType.Shader, engineExporter);
            GameStructure.FileCollection.Exporter.OverrideExporter(ClassIDType.Font, engineExporter);
            GameStructure.FileCollection.Exporter.OverrideExporter(ClassIDType.Sprite, engineExporter);

            GameStructure.Export(m_exportPath, AssetSelector);
            Logger.Instance.Log(LogType.Info, LogCategory.General, "Finished!!!");

            Dispatcher.Invoke(() =>
            {
                IntroText.Text              = "Export is finished";
                ExportButton.Visibility     = Visibility.Hidden;
                PostExportButton.Visibility = Visibility.Visible;
                ResetButton.Visibility      = Visibility.Visible;
            }
                              );
        }
        private void DownloadSingleFile(string filename)
        {
            try
            {
                Directory.CreateDirectory($"{path}/tmp/{filename}");

                using (var client = new WebClient())
                {
                    client.DownloadFile($"{assetUrl}{filename}.bundle", $"{path}/tmp/{filename}/{filename}.bundle");
                }
                List <string> pathes = new List <string>();
                pathes.Add($"{path}/tmp/{filename}/{filename}.bundle");
                var gameStructure = GameStructure.Load(pathes);
                //EngineAssetExporter engineExporter = new EngineAssetExporter();
                //gameStructure.FileCollection.Exporter.OverrideExporter(ClassIDType.Texture2D, engineExporter);

                TextureAssetExporter textureExporter = new TextureAssetExporter(this.path);
                gameStructure.FileCollection.Exporter.OverrideExporter(ClassIDType.Texture2D, textureExporter);
                //gameStructure.FileCollection.Exporter.OverrideExporter(ClassIDType.Texture2DArray, textureExporter);

                gameStructure.Export($"{path}/exported/{filename}/", Texture2DAssetSelector);
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error downloading file '{filename}'! you may ignore this.");
            }
        }
        private void ExportFiles(object data)
        {
            m_exportPath = (string)data;
            PrepareExportDirectory(m_exportPath);

            TextureAssetExporter textureExporter = new TextureAssetExporter();

            GameStructure.FileCollection.Exporter.OverrideExporter(ClassIDType.Texture2D, textureExporter);
            GameStructure.FileCollection.Exporter.OverrideExporter(ClassIDType.Cubemap, textureExporter);
            GameStructure.FileCollection.Exporter.OverrideExporter(ClassIDType.Sprite, textureExporter);
            GameStructure.FileCollection.Exporter.OverrideExporter(ClassIDType.Shader, new ShaderAssetExporter());
            GameStructure.FileCollection.Exporter.OverrideExporter(ClassIDType.TextAsset, new TextAssetExporter());
            GameStructure.FileCollection.Exporter.OverrideExporter(ClassIDType.AudioClip, new AudioAssetExporter());
            GameStructure.FileCollection.Exporter.OverrideExporter(ClassIDType.Font, new FontAssetExporter());
            GameStructure.FileCollection.Exporter.OverrideExporter(ClassIDType.MovieTexture, new MovieTextureAssetExporter());

            EngineAssetExporter engineExporter = new EngineAssetExporter();

            GameStructure.FileCollection.Exporter.OverrideExporter(ClassIDType.Material, engineExporter);
            GameStructure.FileCollection.Exporter.OverrideExporter(ClassIDType.Texture2D, engineExporter);
            GameStructure.FileCollection.Exporter.OverrideExporter(ClassIDType.Mesh, engineExporter);
            GameStructure.FileCollection.Exporter.OverrideExporter(ClassIDType.Shader, engineExporter);
            GameStructure.FileCollection.Exporter.OverrideExporter(ClassIDType.Font, engineExporter);
            GameStructure.FileCollection.Exporter.OverrideExporter(ClassIDType.Sprite, engineExporter);
            GameStructure.FileCollection.Exporter.OverrideExporter(ClassIDType.MonoBehaviour, engineExporter);

#if !DEBUG
            try
#endif
            {
                GameStructure.Export(m_exportPath, AssetSelector);
            }
#if !DEBUG
            catch (SerializedFileException ex)
            {
                ReportCrash(ex);
                return;
            }
            catch (Exception ex)
            {
                ReportCrash(ex);
                return;
            }
#endif
            Logger.Log(LogType.Info, LogCategory.General, "Finished!!!");

            Dispatcher.Invoke(() =>
            {
                IntroText.Text             += "Export is finished";
                ExportButton.Visibility     = Visibility.Hidden;
                PostExportButton.Visibility = Visibility.Visible;
                ResetButton.Visibility      = Visibility.Visible;
            }
                              );
        }
Exemple #4
0
        private GameStructureExporter(string gameDir, string exportPath, List <string> files)
        {
            GameDir    = gameDir;
            AssetPath  = gameDir;
            ExportPath = exportPath;
            options    = new ExportOptions()
            {
                Version  = new Version(2017, 3, 0, VersionType.Final, 3),
                Platform = Platform.NoTarget,
                Flags    = TransferInstructionFlags.NoTransferInstructionFlags,
            };
            m_GameStructure = GameStructure.Load(files);
            var fileCollection  = m_GameStructure.FileCollection;
            var textureExporter = new TextureAssetExporter();
            var engineExporter  = new EngineAssetExporter();

            fileCollection.Exporter.OverrideExporter(ClassIDType.Material, engineExporter);
            fileCollection.Exporter.OverrideExporter(ClassIDType.Mesh, engineExporter);
            fileCollection.Exporter.OverrideExporter(ClassIDType.Shader, new DummyShaderExporter());
            fileCollection.Exporter.OverrideExporter(ClassIDType.Font, engineExporter);
            fileCollection.Exporter.OverrideExporter(ClassIDType.Texture2D, textureExporter);
            fileCollection.Exporter.OverrideExporter(ClassIDType.Cubemap, textureExporter);
            fileCollection.Exporter.OverrideExporter(ClassIDType.Sprite, engineExporter); //engine or texture exporter?
            fileCollection.Exporter.EventExportStarted += () =>
            {
                Logger.Log(LogType.Info, LogCategory.Export, "EventExportStarted");
                UpdateTitle($"EventExportStarted");
            };
            fileCollection.Exporter.EventExportPreparationStarted += () =>
            {
                Logger.Log(LogType.Info, LogCategory.Export, "EventExportPreparationStarted");
                UpdateTitle($"EventExportPreparationStarted");
            };
            fileCollection.Exporter.EventExportPreparationFinished += () =>
            {
                Logger.Log(LogType.Info, LogCategory.Export, "EventExportPreparationFinished");
                UpdateTitle($"EventExportPreparationFinished");
            };
            fileCollection.Exporter.EventExportFinished += () =>
            {
                Logger.Log(LogType.Info, LogCategory.Export, "EventExportFinished");
                UpdateTitle($"EventExportFinished");
            };
            fileCollection.Exporter.EventExportStarted += () =>
            {
                Logger.Log(LogType.Info, LogCategory.Export, "EventExportStarted");
                UpdateTitle($"EventExportStarted");
            };
            fileCollection.Exporter.EventExportProgressUpdated += (int number, int total) =>
            {
                UpdateTitle($"Exported {number / (float)total * 100:0.#} - {number} of {total}");
            };
        }
        private void ExportFiles(object data)
        {
            m_exportPath = (string)data;
            PrepareExportDirectory(m_exportPath);

            TextureAssetExporter textureExporter = new TextureAssetExporter();

            GameStructure.FileCollection.Exporter.OverrideExporter(ClassIDType.Texture2D, textureExporter);
            GameStructure.FileCollection.Exporter.OverrideExporter(ClassIDType.Cubemap, textureExporter);
            GameStructure.FileCollection.Exporter.OverrideExporter(ClassIDType.Sprite, textureExporter);
            GameStructure.FileCollection.Exporter.OverrideExporter(ClassIDType.Shader, new ShaderAssetExporter());
            GameStructure.FileCollection.Exporter.OverrideExporter(ClassIDType.AudioClip, new AudioAssetExporter());

            EngineAssetExporter engineExporter = new EngineAssetExporter();

            GameStructure.FileCollection.Exporter.OverrideExporter(ClassIDType.Material, engineExporter);
            GameStructure.FileCollection.Exporter.OverrideExporter(ClassIDType.Texture2D, engineExporter);
            GameStructure.FileCollection.Exporter.OverrideExporter(ClassIDType.Mesh, engineExporter);
            GameStructure.FileCollection.Exporter.OverrideExporter(ClassIDType.Shader, engineExporter);
            GameStructure.FileCollection.Exporter.OverrideExporter(ClassIDType.Font, engineExporter);
            GameStructure.FileCollection.Exporter.OverrideExporter(ClassIDType.Sprite, engineExporter);

#if !DEBUG
            try
#endif
            {
                GameStructure.Export(m_exportPath, AssetSelector);
            }
#if !DEBUG
            catch (SerializedFileException ex)
            {
                Logger.Log(LogType.Error, LogCategory.Import, ex.ToString());
                Dispatcher.Invoke(() =>
                {
                    AddHyperlinkToConsole("Go to: ", "Create issue", IssuePage);
                    AddHyperlinkToConsole("Attach file: ", ex.FileName, ex.FilePath);
                    MessageBox.Show(this, $"Please, create an issue on github page {IssuePage} with attached file '{ex.FilePath}'.",
                                    "An error during export process has occuered!", MessageBoxButton.OK, MessageBoxImage.Error);
                });
                return;
            }
            catch (Exception ex)
            {
                Logger.Log(LogType.Error, LogCategory.Import, ex.ToString());
                Dispatcher.Invoke(() =>
                {
                    AddHyperlinkToConsole("Go to: ", "Create issue", IssuePage);
                    MessageBox.Show(this, $"Please, create an issue on github page {IssuePage} with attached file that cause this error.",
                                    "An error during loading process has occuered!", MessageBoxButton.OK, MessageBoxImage.Error);
                });
                return;
            }
#endif
            Logger.Log(LogType.Info, LogCategory.General, "Finished!!!");

            Dispatcher.Invoke(() =>
            {
                IntroText.Text              = "Export is finished";
                ExportButton.Visibility     = Visibility.Hidden;
                PostExportButton.Visibility = Visibility.Visible;
                ResetButton.Visibility      = Visibility.Visible;
            }
                              );
        }
        private GameStructureExporter(ExportSettings settings, List <string> files, Func <uTinyRipper.Classes.Object, bool> filter = null)
        {
            GameDir    = settings.GameDir;
            ExportPath = settings.ExportDir;
            options    = new ExportOptions()
            {
                Version  = new Version(2017, 3, 0, VersionType.Final, 3),
                Platform = Platform.NoTarget,
                Flags    = TransferInstructionFlags.NoTransferInstructionFlags,
            };
            m_GameStructure = GameStructure.Load(files);
            if (filter != null)
            {
                Filter = filter;
            }
            else
            {
                Filter = (obj) => true;
            }
            var fileCollection  = m_GameStructure.FileCollection;
            var textureExporter = new TextureAssetExporter();
            var engineExporter  = new EngineAssetExporter();

            fileCollection.Exporter.OverrideExporter(ClassIDType.Material, engineExporter);
            fileCollection.Exporter.OverrideExporter(ClassIDType.Mesh, engineExporter);
            fileCollection.Exporter.OverrideExporter(ClassIDType.Shader, new CustomShaderAssetExporter());
            fileCollection.Exporter.OverrideExporter(ClassIDType.TextAsset, new TextAssetExporter());
            fileCollection.Exporter.OverrideExporter(ClassIDType.AudioClip, new AudioAssetExporter());
            fileCollection.Exporter.OverrideExporter(ClassIDType.Font, new FontAssetExporter());
            fileCollection.Exporter.OverrideExporter(ClassIDType.MovieTexture, new MovieTextureAssetExporter());
            fileCollection.Exporter.OverrideExporter(ClassIDType.Texture2D, textureExporter);
            fileCollection.Exporter.OverrideExporter(ClassIDType.Cubemap, textureExporter);
            fileCollection.Exporter.OverrideExporter(ClassIDType.Sprite, engineExporter); //engine or texture exporter?
            fileCollection.Exporter.EventExportStarted += () =>
            {
                Logger.Log(LogType.Info, LogCategory.Export, "EventExportStarted");
                UpdateTitle($"EventExportStarted");
            };
            fileCollection.Exporter.EventExportPreparationStarted += () =>
            {
                Logger.Log(LogType.Info, LogCategory.Export, "EventExportPreparationStarted");
                UpdateTitle($"EventExportPreparationStarted");
            };
            fileCollection.Exporter.EventExportPreparationFinished += () =>
            {
                Logger.Log(LogType.Info, LogCategory.Export, "EventExportPreparationFinished");
                UpdateTitle($"EventExportPreparationFinished");
            };
            fileCollection.Exporter.EventExportFinished += () =>
            {
                Logger.Log(LogType.Info, LogCategory.Export, "EventExportFinished");
                UpdateTitle($"EventExportFinished");
            };
            fileCollection.Exporter.EventExportStarted += () =>
            {
                Logger.Log(LogType.Info, LogCategory.Export, "EventExportStarted");
                UpdateTitle($"EventExportStarted");
            };
            fileCollection.Exporter.EventExportProgressUpdated += (int number, int total) =>
            {
                UpdateTitle($"Exported {number / (float)total * 100:0.#} - {number} of {total}");
            };
            if (settings.ScriptByName)
            {
                foreach (var asset in fileCollection.FetchAssets())
                {
                    if (asset is MonoScript script)
                    {
                        using (MD5 md5 = MD5.Create())
                        {
                            var data    = md5.ComputeHash(Encoding.UTF8.GetBytes($"{script.AssemblyName}.{script.Namespace}.{script.ClassName}"));
                            var newGuid = new Guid(data);
                            Util.SetGUID(script, newGuid);
                        }
                    }
                }
            }
            if (settings.ShaderByName)
            {
                foreach (var asset in fileCollection.FetchAssets())
                {
                    if (asset is Shader shader)
                    {
                        using (MD5 md5 = MD5.Create())
                        {
                            var data    = md5.ComputeHash(Encoding.UTF8.GetBytes($"{shader.ValidName}"));
                            var newGuid = new Guid(data);
                            var engGuid = new EngineGUID(newGuid);
                            Util.SetGUID(shader, newGuid);
                            Console.WriteLine($"Set shader {shader.ValidName} to Guid {engGuid}");
                        }
                    }
                }
            }
        }
        public GameStructureExporter(ExportSettings settings, IEnumerable <string> files)
        {
            GameDir    = settings.GameDir;
            ExportPath = settings.ExportDir;

            GameStructure = GameStructure.Load(files);
            Version version = new Version(2017, 3, 0, VersionType.Final, 3);

            if (string.IsNullOrEmpty(settings.ExportVersion) || settings.ExportVersion.ToLower() == "detect")
            {
                //The version in unity default resources and unity_builtin_extra seem to differ from the game version
                version = GameStructure.FileCollection.GameFiles.Values.Max(t => t.Version);
                Logger.Log(LogType.Info, LogCategory.Export, $"Version detected as {version.ToString()}");
            }
            else
            {
                version = Version.Parse(settings.ExportVersion);
                Logger.Log(LogType.Info, LogCategory.Export, $"Version set to {version.ToString()}");
            }
            options = new ExportOptions(
                version,
                Platform.NoTarget,
                TransferInstructionFlags.NoTransferInstructionFlags
                );
            var fileCollection  = GameStructure.FileCollection;
            var textureExporter = new TextureAssetExporter();
            var engineExporter  = new EngineAssetExporter();

            fileCollection.Exporter.OverrideExporter(ClassIDType.Material, engineExporter);
            fileCollection.Exporter.OverrideExporter(ClassIDType.Mesh, engineExporter);
            fileCollection.Exporter.OverrideExporter(ClassIDType.Shader, new CustomShaderAssetExporter(settings));
            fileCollection.Exporter.OverrideExporter(ClassIDType.TextAsset, new TextAssetExporter());
            fileCollection.Exporter.OverrideExporter(ClassIDType.AudioClip, new AudioAssetExporter());
            fileCollection.Exporter.OverrideExporter(ClassIDType.Font, new FontAssetExporter());
            fileCollection.Exporter.OverrideExporter(ClassIDType.MovieTexture, new MovieTextureAssetExporter());
            fileCollection.Exporter.OverrideExporter(ClassIDType.Texture2D, engineExporter);
            fileCollection.Exporter.OverrideExporter(ClassIDType.Texture2D, textureExporter);
            fileCollection.Exporter.OverrideExporter(ClassIDType.Cubemap, textureExporter);
            fileCollection.Exporter.OverrideExporter(ClassIDType.Sprite, engineExporter);             //engine or texture exporter?
            fileCollection.Exporter.EventExportStarted += () =>
            {
                Logger.Log(LogType.Info, LogCategory.Export, "EventExportStarted");
                UpdateTitle($"EventExportStarted");
            };
            fileCollection.Exporter.EventExportPreparationStarted += () =>
            {
                Logger.Log(LogType.Info, LogCategory.Export, "EventExportPreparationStarted");
                UpdateTitle($"EventExportPreparationStarted");
            };
            fileCollection.Exporter.EventExportPreparationFinished += () =>
            {
                Logger.Log(LogType.Info, LogCategory.Export, "EventExportPreparationFinished");
                UpdateTitle($"EventExportPreparationFinished");
            };
            fileCollection.Exporter.EventExportFinished += () =>
            {
                Logger.Log(LogType.Info, LogCategory.Export, "EventExportFinished");
                UpdateTitle($"EventExportFinished");
            };
            fileCollection.Exporter.EventExportStarted += () =>
            {
                Logger.Log(LogType.Info, LogCategory.Export, "EventExportStarted");
                UpdateTitle($"EventExportStarted");
            };
            fileCollection.Exporter.EventExportProgressUpdated += (int number, int total) =>
            {
                UpdateTitle($"Exported {number / (float)total * 100:0.#} - {number} of {total}");
            };
            if (settings.ScriptByName)
            {
                foreach (var asset in fileCollection.FetchAssets())
                {
                    if (asset is MonoScript script)
                    {
                        using (MD5 md5 = MD5.Create())
                        {
                            var data    = md5.ComputeHash(Encoding.UTF8.GetBytes($"{script.AssemblyName}.{script.Namespace}.{script.ClassName}"));
                            var newGuid = new Guid(data);
                            Util.SetGUID(script, newGuid);
                        }
                    }
                }
            }
            if (settings.ShaderByName)
            {
                foreach (var asset in fileCollection.FetchAssets())
                {
                    if (asset is Shader shader)
                    {
                        using (MD5 md5 = MD5.Create())
                        {
                            var data    = md5.ComputeHash(Encoding.UTF8.GetBytes($"{shader.ValidName}"));
                            var newGuid = new Guid(data);
                            var engGuid = new GUID(newGuid);
                            Util.SetGUID(shader, newGuid);
                            Console.WriteLine($"Set shader {shader.ValidName} to Guid {engGuid}");
                        }
                    }
                }
            }
        }
Exemple #8
0
        public GameStructureExporter(ExportSettings settings, List <string> files, Func <uTinyRipper.Classes.Object, bool> filter = null)
        {
            GameDir    = settings.GameDir;
            ExportPath = settings.ExportDir;
            options    = new ExportOptions()
            {
                Platform = Platform.NoTarget,
                Flags    = TransferInstructionFlags.NoTransferInstructionFlags,
            };
            GameStructure = GameStructure.Load(files);

            if (string.IsNullOrEmpty(settings.ExportVersion))
            {
                options.Version = new Version(2017, 3, 0, VersionType.Final, 3);
            }
            else if (settings.ExportVersion.ToLower() == "detect")
            {
                //The version in unity default resources and unity_builtin_extra seem to differ from the game version
                var versionCheckFile = GameStructure.FileCollection.Files.FirstOrDefault(f => !Path.GetFileName(f.Name).Contains("unity"));
                if (versionCheckFile != null)
                {
                    options.Version = versionCheckFile.Version;
                    Logger.Log(LogType.Info, LogCategory.Export, $"Version detected as {options.Version.ToString()}");
                }
                else
                {
                    Logger.Log(LogType.Warning, LogCategory.Export, $"Could not detect version");
                    options.Version = new Version(2017, 3, 0, VersionType.Final, 3);
                }
            }
            else
            {
                options.Version = new Version();
                options.Version.Parse(settings.ExportVersion);
                Logger.Log(LogType.Info, LogCategory.Export, $"Version set to {options.Version.ToString()}");
            }
            if (filter != null)
            {
                Filter = filter;
            }
            else
            {
                Filter = (obj) => true;
            }
            var fileCollection  = GameStructure.FileCollection;
            var textureExporter = new TextureAssetExporter();
            var engineExporter  = new EngineAssetExporter();

            fileCollection.Exporter.OverrideExporter(ClassIDType.Material, engineExporter);
            fileCollection.Exporter.OverrideExporter(ClassIDType.Mesh, engineExporter);
            fileCollection.Exporter.OverrideExporter(ClassIDType.Shader, new CustomShaderAssetExporter());
            fileCollection.Exporter.OverrideExporter(ClassIDType.TextAsset, new TextAssetExporter());
            fileCollection.Exporter.OverrideExporter(ClassIDType.AudioClip, new AudioAssetExporter());
            fileCollection.Exporter.OverrideExporter(ClassIDType.Font, new FontAssetExporter());
            fileCollection.Exporter.OverrideExporter(ClassIDType.MovieTexture, new MovieTextureAssetExporter());
            fileCollection.Exporter.OverrideExporter(ClassIDType.Texture2D, textureExporter);
            fileCollection.Exporter.OverrideExporter(ClassIDType.Cubemap, textureExporter);
            fileCollection.Exporter.OverrideExporter(ClassIDType.Sprite, engineExporter);             //engine or texture exporter?
            fileCollection.Exporter.EventExportStarted += () =>
            {
                Logger.Log(LogType.Info, LogCategory.Export, "EventExportStarted");
                UpdateTitle($"EventExportStarted");
            };
            fileCollection.Exporter.EventExportPreparationStarted += () =>
            {
                Logger.Log(LogType.Info, LogCategory.Export, "EventExportPreparationStarted");
                UpdateTitle($"EventExportPreparationStarted");
            };
            fileCollection.Exporter.EventExportPreparationFinished += () =>
            {
                Logger.Log(LogType.Info, LogCategory.Export, "EventExportPreparationFinished");
                UpdateTitle($"EventExportPreparationFinished");
            };
            fileCollection.Exporter.EventExportFinished += () =>
            {
                Logger.Log(LogType.Info, LogCategory.Export, "EventExportFinished");
                UpdateTitle($"EventExportFinished");
            };
            fileCollection.Exporter.EventExportStarted += () =>
            {
                Logger.Log(LogType.Info, LogCategory.Export, "EventExportStarted");
                UpdateTitle($"EventExportStarted");
            };
            fileCollection.Exporter.EventExportProgressUpdated += (int number, int total) =>
            {
                UpdateTitle($"Exported {number / (float)total * 100:0.#} - {number} of {total}");
            };
            if (settings.ScriptByName)
            {
                foreach (var asset in fileCollection.FetchAssets())
                {
                    if (asset is MonoScript script)
                    {
                        using (MD5 md5 = MD5.Create())
                        {
                            var data    = md5.ComputeHash(Encoding.UTF8.GetBytes($"{script.AssemblyName}.{script.Namespace}.{script.ClassName}"));
                            var newGuid = new Guid(data);
                            Util.SetGUID(script, newGuid);
                        }
                    }
                }
            }
            if (settings.ShaderByName)
            {
                foreach (var asset in fileCollection.FetchAssets())
                {
                    if (asset is Shader shader)
                    {
                        using (MD5 md5 = MD5.Create())
                        {
                            var data    = md5.ComputeHash(Encoding.UTF8.GetBytes($"{shader.ValidName}"));
                            var newGuid = new Guid(data);
                            var engGuid = new EngineGUID(newGuid);
                            Util.SetGUID(shader, newGuid);
                            Console.WriteLine($"Set shader {shader.ValidName} to Guid {engGuid}");
                        }
                    }
                }
            }
        }