public override ExportPointer CreateExportPointer(Object asset, bool isLocal) { if (isLocal) { throw new NotSupportedException(); } MonoScript script = m_scripts[asset]; if (s_unityEngine.IsMatch(script.AssemblyName)) { if (MonoScript.IsReadNamespace(script.File.Version)) { int fileID = Compute(script.Namespace, script.Name); return(new ExportPointer(fileID, UnityEngineGUID, AssetExporter.ToExportType(asset))); } else { ScriptInfo scriptInfo = script.GetScriptInfo(); if (scriptInfo != default) { int fileID = Compute(scriptInfo.Namespace, scriptInfo.Name); return(new ExportPointer(fileID, UnityEngineGUID, AssetExporter.ToExportType(asset))); } } } long exportID = GetExportID(asset); EngineGUID uniqueGUID = script.GUID; return(new ExportPointer(exportID, uniqueGUID, AssetExporter.ToExportType(asset))); }
public OcclusionScene(EngineGUID scene, int renderSize, int portalSize) { Scene = scene; IndexRenderers = 0; SizeRenderers = renderSize; IndexPortals = 0; SizePortals = portalSize; }
public T CreateAsset <T>(EngineGUID guid, Func <AssetInfo, T> instantiator) where T : Object { ClassIDType classID = typeof(T).ToClassIDType(); AssetInfo assetInfo = new AssetInfo(this, ++m_nextId, classID, guid); T instance = instantiator(assetInfo); m_assets.Add(instance.PathID, instance); return(instance); }
public Scene(string path, EngineGUID guid) { if (path == null) { throw new ArgumentNullException(nameof(path)); } Enabled = true; Path = path; GUID = guid; }
public AssetInfo(ISerializedFile serializedFile, long pathID, ClassIDType classID, EngineGUID guid) { if (serializedFile == null) { throw new ArgumentNullException(nameof(serializedFile)); } File = serializedFile; PathID = pathID; ClassID = classID; GUID = guid; }
public override ExportPointer CreateExportPointer(Object asset, bool isLocal) { if (isLocal) { throw new NotSupportedException(); } ulong exportID = GetExportID(asset); EngineGUID uniqueGUID = m_scripts[asset].GUID; return(new ExportPointer(exportID, uniqueGUID, AssetExporter.ToExportType(asset))); }
public override ExportPointer CreateExportPointer(Object asset, bool isLocal) { long exportID = GetExportID(asset); if (isLocal && IsComponent(asset)) { return(new ExportPointer(exportID)); } else { EngineGUID guid = IsComponent(asset) ? GUID : asset.GUID; return(new ExportPointer(exportID, guid, AssetType.Serialized)); } }
public Meta(IAssetImporter importer, EngineGUID guid) { if (importer == null) { throw new ArgumentNullException(nameof(importer)); } if (guid.IsZero) { throw new ArgumentNullException(nameof(guid)); } m_importer = importer; m_guid = guid; }
public SceneExportCollection(IAssetExporter assetExporter, ISerializedFile file) { if (assetExporter == null) { throw new ArgumentNullException(nameof(assetExporter)); } if (file == null) { throw new ArgumentNullException(nameof(file)); } AssetExporter = assetExporter; Name = file.Name; m_file = file; foreach (Object asset in file.FetchAssets()) { if (OcclusionCullingSettings.IsCompatible(asset)) { AddComponent(file, asset); } } m_cexportIDs = m_cexportIDs.OrderBy(t => t.Key, this).ToDictionary(t => t.Key, t => t.Value); if (OcclusionCullingSettings.IsReadSceneGUID(file.Version)) { OcclusionCullingSettings sceneSettings = Components.Where(t => t.ClassID == ClassIDType.OcclusionCullingSettings).Select(t => (OcclusionCullingSettings)t).FirstOrDefault(); if (sceneSettings == null) { GUID = new EngineGUID(Guid.NewGuid()); } else { GUID = sceneSettings.SceneGUID; } } else { if (Config.IsGenerateGUIDByContent) { GUID = ObjectUtils.CalculateObjectsGUID(Assets); } else { GUID = new EngineGUID(Guid.NewGuid()); } } }
public ExportPointer CreateExportPointer(Object asset, bool isLocal) { if (isLocal) { throw new NotSupportedException(); } GetEngineBuildInAsset(asset, m_version, out EngineBuiltInAsset engneAsset); if (!engneAsset.IsValid) { throw new NotImplementedException($"Unknown ExportID for asset {asset.ToLogString()} from file {asset.File.Name}"); } long exportID = engneAsset.ExportID; EngineGUID guid = engneAsset.GUID; return(new ExportPointer(exportID, guid, AssetType.Internal)); }
public ExportPointer(long fileID, EngineGUID guid, AssetType assetType) { FileID = fileID; GUID = guid; AssetType = assetType; }
public SceneExportCollection(IAssetExporter assetExporter, VirtualSerializedFile virtualFile, ISerializedFile file) { if (assetExporter == null) { throw new ArgumentNullException(nameof(assetExporter)); } if (file == null) { throw new ArgumentNullException(nameof(file)); } AssetExporter = assetExporter; Name = file.Name; m_file = file; foreach (Object asset in file.FetchAssets()) { if (OcclusionCullingSettings.IsSceneCompatible(asset)) { AddComponent(file, asset); } } m_cexportIDs = m_cexportIDs.OrderBy(t => t.Key, this).ToDictionary(t => t.Key, t => t.Value); if (OcclusionCullingSettings.IsReadSceneGUID(file.Version)) { OcclusionCullingSettings sceneSettings = Components.Where(t => t.ClassID == ClassIDType.OcclusionCullingSettings).Select(t => (OcclusionCullingSettings)t).FirstOrDefault(); if (sceneSettings != null) { GUID = sceneSettings.SceneGUID; } } if (GUID.IsZero) { if (Config.IsGenerateGUIDByContent) { GUID = ObjectUtils.CalculateAssetsGUID(Assets); } else { GUID = new EngineGUID(Guid.NewGuid()); } } if (OcclusionCullingSettings.IsReadPVSData(File.Version)) { foreach (Object comp in Components) { if (comp.ClassID == ClassIDType.OcclusionCullingSettings) { OcclusionCullingSettings settings = (OcclusionCullingSettings)comp; if (settings.PVSData.Count > 0) { m_occlusionCullingSettings = settings; OcclusionCullingData = OcclusionCullingData.CreateVirtualInstance(virtualFile, settings); break; } } } } }
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 ExportPointer(ulong fileID, EngineGUID guid, AssetType assetType) : this(fileID) { GUID = guid; AssetType = assetType; }
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}"); } } } } }