public MonoBehaviour(AssetPreloadData preloadData, bool readSwitch) { var sourceFile = preloadData.sourceFile; var reader = preloadData.InitReader(); var m_GameObject = sourceFile.ReadPPtr(); var m_Enabled = reader.ReadByte(); reader.AlignStream(4); var m_Script = sourceFile.ReadPPtr(); var m_Name = reader.ReadAlignedString(); if (readSwitch) { if ((serializedText = preloadData.GetClassString()) == null) { var str = "PPtr<GameObject> m_GameObject\r\n"; str += "\tint m_FileID = " + m_GameObject.m_FileID + "\r\n"; str += "\tint64 m_PathID = " + m_GameObject.m_PathID + "\r\n"; str += "UInt8 m_Enabled = " + m_Enabled + "\r\n"; str += "PPtr<MonoScript> m_Script\r\n"; str += "\tint m_FileID = " + m_Script.m_FileID + "\r\n"; str += "\tint64 m_PathID = " + m_Script.m_PathID + "\r\n"; str += "string m_Name = \"" + m_Name + "\"\r\n"; serializedText = str; } } else { preloadData.extension = ".txt"; preloadData.Text = m_Name; } }
public AnimatorController(AssetPreloadData preloadData) { var sourceFile = preloadData.sourceFile; var version = preloadData.sourceFile.version; var reader = preloadData.InitReader(); reader.Position = preloadData.Offset; m_Name = reader.ReadAlignedString(); var m_ControllerSize = reader.ReadUInt32(); var m_Controller = new ControllerConstant(reader, version); int tosSize = reader.ReadInt32(); var m_TOS = new List <KeyValuePair <uint, string> >(tosSize); for (int i = 0; i < tosSize; i++) { m_TOS.Add(new KeyValuePair <uint, string>(reader.ReadUInt32(), reader.ReadAlignedString())); } int numClips = reader.ReadInt32(); m_AnimationClips = new PPtr[numClips]; for (int i = 0; i < numClips; i++) { m_AnimationClips[i] = sourceFile.ReadPPtr(); } }
public static Bitmap GetImageFromSprite(AssetPreloadData asset) { var m_Sprite = new Sprite(asset, true); if (assetsfileList.TryGetPD(m_Sprite.m_SpriteAtlas, out var assetPreloadData)) { var m_SpriteAtlas = new SpriteAtlas(assetPreloadData); var index = m_SpriteAtlas.guids.FindIndex(x => x == m_Sprite.first); if (index >= 0 && assetsfileList.TryGetPD(m_SpriteAtlas.textures[index], out assetPreloadData)) { try { return(CutImage(asset, assetPreloadData, m_SpriteAtlas.textureRects[index], m_Sprite)); } catch { return(CutImage(asset, assetPreloadData, m_SpriteAtlas.textureRects[index])); } } } else { if (assetsfileList.TryGetPD(m_Sprite.texture, out assetPreloadData)) { return(CutImage(asset, assetPreloadData, m_Sprite.textureRect)); } } return(null); }
public static bool ExportRawFile(AssetPreloadData asset, string exportPath, string fileExtension = ".dat") { var exportFullName = Path.Combine(exportPath, string.Concat(asset.Text, fileExtension)); switch (asset.Type) { case ClassIDType.MonoBehaviour: exportFullName = GetExportMonoBehaviourPath(asset, exportPath, fileExtension); break; case ClassIDType.MonoScript: exportFullName = GetExportMonoScriptPath(asset, exportPath, fileExtension); break; } if (ExportFileExists(exportFullName)) { return(false); } var bytes = asset.InitReader().ReadBytes((int)asset.Size); File.WriteAllBytes(exportFullName, bytes); return(true); }
public PPtrKeyframe(AssetPreloadData preloadData) { var reader = preloadData.sourceFile.reader; time = reader.ReadSingle(); value = preloadData.sourceFile.ReadPPtr(); }
public PlayerSettings(AssetPreloadData preloadData) : base(preloadData) { if ((version[0] == 5 && version[1] >= 4) || version[0] > 5)//5.4.0 nad up { //productGUID reader.ReadInt32(); reader.ReadInt32(); reader.ReadInt32(); reader.ReadInt32(); } if (version[0] >= 3) { if (version[0] == 3 && version[1] < 2) { string AndroidLicensePublicKey = reader.ReadAlignedString(); } else { bool AndroidProfiler = reader.ReadBoolean(); reader.AlignStream(4); } int defaultScreenOrientation = reader.ReadInt32(); int targetDevice = reader.ReadInt32(); if (version[0] < 5 || (version[0] == 5 && version[1] < 1)) { int targetGlesGraphics = reader.ReadInt32(); } if ((version[0] == 5 && version[1] < 1) || (version[0] == 4 && version[1] == 6 && version[2] >= 3)) { int targetIOSGraphics = reader.ReadInt32(); } if (version[0] >= 5 || version[0] == 5 && (version[1] > 2 || (version[1] == 2 && version[2] >= 1))) { bool useOnDemandResources = reader.ReadBoolean(); reader.AlignStream(4); } if (version[0] < 5 || (version[0] == 5 && version[1] < 3)) { int targetResolution = reader.ReadInt32(); } if (version[0] == 3 && version[1] <= 1) { bool OverrideIPodMusic = reader.ReadBoolean(); reader.AlignStream(4); } else if (version[0] == 3 && version[1] <= 4) { } else//3.5.0 and up { int accelerometerFrequency = reader.ReadInt32(); } } //fail in version 5 beta companyName = reader.ReadAlignedString(); productName = reader.ReadAlignedString(); }
public static bool ExportSprite(AssetPreloadData asset, string exportPath) { ImageFormat format = null; var type = (string)Properties.Settings.Default["convertType"]; switch (type) { case "BMP": format = ImageFormat.Bmp; break; case "PNG": format = ImageFormat.Png; break; case "JPEG": format = ImageFormat.Jpeg; break; } var exportFullName = exportPath + asset.Text + "." + type.ToLower(); if (ExportFileExists(exportFullName)) { return(false); } var bitmap = SpriteHelper.GetImageFromSprite(new Sprite(asset)); if (bitmap != null) { bitmap.Save(exportFullName, format); return(true); } return(false); }
public Shader(AssetPreloadData preloadData) : base(preloadData) { if (sourceFile.version[0] == 5 && sourceFile.version[1] >= 5 || sourceFile.version[0] > 5) //5.5.0 and up { var str = preloadData.Dump(); m_Script = Encoding.UTF8.GetBytes(str ?? "Serialized Shader can't be read"); } else { m_Script = reader.ReadBytes(reader.ReadInt32()); if (sourceFile.version[0] == 5 && sourceFile.version[1] >= 3) //5.3 - 5.4 { reader.AlignStream(4); var m_PathName = reader.ReadAlignedString(); var decompressedSize = reader.ReadUInt32(); var m_SubProgramBlob = reader.ReadBytes(reader.ReadInt32()); var decompressedBytes = new byte[decompressedSize]; using (var decoder = new Lz4DecoderStream(new MemoryStream(m_SubProgramBlob))) { decoder.Read(decompressedBytes, 0, (int)decompressedSize); } m_Script = m_Script.Concat(decompressedBytes.ToArray()).ToArray(); } } }
public GameObject(AssetPreloadData preloadData) : base(preloadData) { int m_Component_size = reader.ReadInt32(); m_Components = new List <PPtr>(m_Component_size); for (int j = 0; j < m_Component_size; j++) { if ((sourceFile.version[0] == 5 && sourceFile.version[1] >= 5) || sourceFile.version[0] > 5)//5.5.0 and up { m_Components.Add(sourceFile.ReadPPtr()); } else { int first = reader.ReadInt32(); m_Components.Add(sourceFile.ReadPPtr()); } } var m_Layer = reader.ReadInt32(); m_Name = reader.ReadAlignedString(); if (m_Name == "") { m_Name = "GameObject #" + preloadData.uniqueID; } }
public MonoScript(AssetPreloadData preloadData) { var sourceFile = preloadData.sourceFile; var reader = preloadData.InitReader(); var version = sourceFile.version; m_Name = reader.ReadAlignedString(); if (version[0] > 3 || (version[0] == 3 && version[1] >= 4)) { var m_ExecutionOrder = reader.ReadAlignedString(); } if (version[0] < 5) { var m_PropertiesHash = reader.ReadUInt32(); } else { var m_PropertiesHash = reader.ReadBytes(16); } if (version[0] < 3) { var m_PathName = reader.ReadAlignedString(); } m_ClassName = reader.ReadAlignedString(); if (version[0] >= 3) { m_Namespace = reader.ReadAlignedString(); } m_AssemblyName = reader.ReadAlignedString(); if (version[0] < 2018 || (version[0] == 2018 && version[1] < 2)) { var m_IsEditorScript = reader.ReadBoolean(); } }
public MonoScript(AssetPreloadData preloadData) : base(preloadData) { if (version[0] > 3 || (version[0] == 3 && version[1] >= 4)) //3.4 and up { var m_ExecutionOrder = reader.ReadInt32(); } if (version[0] < 5) //5.0 down { var m_PropertiesHash = reader.ReadUInt32(); } else { var m_PropertiesHash = reader.ReadBytes(16); } if (version[0] < 3) //3.0 down { var m_PathName = reader.ReadAlignedString(); } m_ClassName = reader.ReadAlignedString(); if (version[0] >= 3) //3.0 and up { m_Namespace = reader.ReadAlignedString(); } m_AssemblyName = reader.ReadAlignedString(); if (version[0] < 2018 || (version[0] == 2018 && version[1] < 2)) //2018.2 down { var m_IsEditorScript = reader.ReadBoolean(); } }
public BuildSettings(AssetPreloadData preloadData) : base(preloadData) { int levels = reader.ReadInt32(); for (int l = 0; l < levels; l++) { var level = reader.ReadAlignedString(); } if (version[0] >= 5) { int preloadedPlugins = reader.ReadInt32(); for (int l = 0; l < preloadedPlugins; l++) { var preloadedPlugin = reader.ReadAlignedString(); } } reader.Position += 4; if (version[0] >= 3) //3.0 and up { reader.Position += 4; } if (version[0] > 3 || (version[0] == 3 && version[1] >= 5))//3.5 and up { reader.Position += 4; } if (version[0] >= 5 || (version[0] == 4 && (version[1] >= 3 || (version[1] == 2 && buildType[0] != "a")))) { reader.Position += 4; } m_Version = reader.ReadAlignedString(); }
public PPtrKeyframe(AssetPreloadData preloadData, Dictionary <string, int> sharedFileIndex, List <AssetsFile> assetsfileList) { var reader = preloadData.sourceFile.reader; time = reader.ReadSingle(); value = preloadData.sourceFile.ReadPPtr(sharedFileIndex, assetsfileList); }
public PPtr m_Father = new PPtr();//can be transform or type 224 (as seen in Minions) public Transform(AssetPreloadData preloadData) { var sourceFile = preloadData.sourceFile; var a_Stream = preloadData.sourceFile.a_Stream; a_Stream.Position = preloadData.Offset; if (sourceFile.platform == -2) { uint m_ObjectHideFlags = a_Stream.ReadUInt32(); PPtr m_PrefabParentObject = sourceFile.ReadPPtr(); PPtr m_PrefabInternal = sourceFile.ReadPPtr(); } m_GameObject = sourceFile.ReadPPtr(); m_LocalRotation = new float[] { a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle() }; m_LocalPosition = new float[] { a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle() }; m_LocalScale = new float[] { a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle() }; int m_ChildrenCount = a_Stream.ReadInt32(); for (int j = 0; j < m_ChildrenCount; j++) { m_Children.Add(sourceFile.ReadPPtr()); } m_Father = sourceFile.ReadPPtr(); }
public MeshFilter(AssetPreloadData preloadData, Dictionary <string, int> sharedFileIndex, List <AssetsFile> assetsfileList) { var sourceFile = preloadData.sourceFile; var reader = preloadData.InitReader(); m_GameObject = sourceFile.ReadPPtr(sharedFileIndex, assetsfileList); m_Mesh = sourceFile.ReadPPtr(sharedFileIndex, assetsfileList); }
private static void SpriteInfo(AssetPreloadData asset, AssetPreloadData texture2DAsset, RectangleF textureRect) { var info = texture2DAsset.InfoText; var start = info.IndexOf("Format"); info = info.Substring(start, info.Length - start); asset.InfoText = $"Width: {textureRect.Width}\nHeight: {textureRect.Height}\n" + info; }
protected EditorExtension(AssetPreloadData preloadData) : base(preloadData) { if (platform == BuildTarget.NoTarget) { var m_PrefabParentObject = sourceFile.ReadPPtr(); var m_PrefabInternal = sourceFile.ReadPPtr(); } }
public static bool ExportAnimator(AssetPreloadData animator, string exportPath, List <AssetPreloadData> animationList = null) { var m_Animator = new Animator(animator); var convert = animationList != null ? new ModelConverter(m_Animator, animationList) : new ModelConverter(m_Animator); exportPath = exportPath + Studio.FixFileName(animator.Text) + ".fbx"; return(ModelConverter(convert, exportPath)); }
public MeshFilter(AssetPreloadData preloadData) { var sourceFile = preloadData.sourceFile; var reader = preloadData.InitReader(); m_GameObject = sourceFile.ReadPPtr(); m_Mesh = sourceFile.ReadPPtr(); }
public Shader(AssetPreloadData preloadData, bool readSwitch) { var sourceFile = preloadData.sourceFile; var reader = preloadData.InitReader(); m_Name = reader.ReadAlignedString(); if (readSwitch) { if (sourceFile.version[0] == 5 && sourceFile.version[1] >= 5 || sourceFile.version[0] > 5)//5.5.0 and up { var str = (string)ShaderResource.ResourceManager.GetObject($"Shader{sourceFile.version[0]}{sourceFile.version[1]}"); if (str == null) { str = preloadData.ViewStruct(); if (str == null) { m_Script = Encoding.UTF8.GetBytes("Serialized Shader can't be read"); } else { m_Script = Encoding.UTF8.GetBytes(str); } } else { reader.Position = preloadData.Offset; var sb = new StringBuilder(); var members = new JavaScriptSerializer().Deserialize <List <ClassMember> >(str); ClassStructHelper.ReadClassStruct(sb, members, reader); m_Script = Encoding.UTF8.GetBytes(sb.ToString()); //m_Script = ReadSerializedShader(members, a_Stream); } } else { m_Script = reader.ReadBytes(reader.ReadInt32()); if (sourceFile.version[0] == 5 && sourceFile.version[1] >= 3) //5.3 - 5.4 { reader.AlignStream(4); reader.ReadAlignedString();//m_PathName var decompressedSize = reader.ReadUInt32(); var m_SubProgramBlob = reader.ReadBytes(reader.ReadInt32()); var decompressedBytes = new byte[decompressedSize]; using (var decoder = new Lz4DecoderStream(new MemoryStream(m_SubProgramBlob))) { decoder.Read(decompressedBytes, 0, (int)decompressedSize); } m_Script = m_Script.Concat(decompressedBytes.ToArray()).ToArray(); } } } else { preloadData.extension = ".txt"; preloadData.Text = m_Name; } }
public MovieTexture(AssetPreloadData preloadData) : base(preloadData) { var m_Loop = reader.ReadBoolean(); reader.AlignStream(4); //PPtr<AudioClip> sourceFile.ReadPPtr(); m_MovieData = reader.ReadBytes(reader.ReadInt32()); }
protected Texture(AssetPreloadData preloadData) : base(preloadData) { if (version[0] > 2017 || (version[0] == 2017 && version[1] >= 3)) //2017.3 and up { var m_ForcedFallbackFormat = reader.ReadInt32(); var m_DownscaleFallback = reader.ReadBoolean(); reader.AlignStream(4); } }
public FloatCurve(AssetPreloadData preloadData) { var reader = preloadData.sourceFile.reader; curve = new AnimationCurve <float>(reader, reader.ReadSingle, preloadData.sourceFile.version); attribute = reader.ReadAlignedString(); path = reader.ReadAlignedString(); classID = reader.ReadInt32(); script = preloadData.sourceFile.ReadPPtr(); }
public FloatCurve(AssetPreloadData preloadData, Dictionary <string, int> sharedFileIndex, List <AssetsFile> assetsfileList) { var reader = preloadData.sourceFile.reader; curve = new AnimationCurve <float>(reader, reader.ReadSingle, preloadData.sourceFile.version); attribute = reader.ReadAlignedString(); path = reader.ReadAlignedString(); classID = reader.ReadInt32(); script = preloadData.sourceFile.ReadPPtr(sharedFileIndex, assetsfileList); }
public Animation(AssetPreloadData preloadData) : base(preloadData) { var m_Animation = sourceFile.ReadPPtr(); int numAnimations = reader.ReadInt32(); m_Animations = new List <PPtr>(numAnimations); for (int i = 0; i < numAnimations; i++) { m_Animations.Add(sourceFile.ReadPPtr()); } }
public static string GetExportMonoScriptPath(AssetPreloadData asset, string exportPath, string fileExtension = ".txt") { var m_Script = new MonoScript(asset); if (m_Script.m_Namespace == string.Empty) { return(Path.Combine(exportPath, m_Script.m_ClassName, string.Concat(asset.Text, fileExtension))); } return(Path.Combine(exportPath, m_Script.m_Namespace, m_Script.m_ClassName, string.Concat(asset.Text, fileExtension))); }
public static bool ExportTexture2D(AssetPreloadData asset, string exportPathName, bool flip) { var m_Texture2D = new Texture2D(asset, true); if (m_Texture2D.image_data == null || m_Texture2D.image_data.Length == 0) { return(false); } var converter = new Texture2DConverter(m_Texture2D); var convertTexture = (bool)Properties.Settings.Default["convertTexture"]; if (convertTexture) { var bitmap = converter.ConvertToBitmap(flip); if (bitmap == null) { return(false); } ImageFormat format = null; var ext = (string)Properties.Settings.Default["convertType"]; switch (ext) { case "BMP": format = ImageFormat.Bmp; break; case "PNG": format = ImageFormat.Png; break; case "JPEG": format = ImageFormat.Jpeg; break; } var exportFullName = exportPathName + asset.Text + "." + ext.ToLower(); if (ExportFileExists(exportFullName)) { return(false); } bitmap.Save(exportFullName, format); bitmap.Dispose(); return(true); } else { var exportFullName = exportPathName + asset.Text + converter.GetExtensionName(); if (ExportFileExists(exportFullName)) { return(false); } File.WriteAllBytes(exportFullName, converter.ConvertToContainer()); return(true); } }
public PlayerSettings(AssetPreloadData preloadData) { var sourceFile = preloadData.sourceFile; var a_Stream = preloadData.sourceFile.a_Stream; a_Stream.Position = preloadData.Offset; if (sourceFile.version[0] >= 3) { if (sourceFile.version[0] == 3 && sourceFile.version[1] < 2) { string AndroidLicensePublicKey = a_Stream.ReadAlignedString(a_Stream.ReadInt32()); } else { bool AndroidProfiler = a_Stream.ReadBoolean(); a_Stream.AlignStream(4); } int defaultScreenOrientation = a_Stream.ReadInt32(); int targetDevice = a_Stream.ReadInt32(); if (sourceFile.version[0] < 5 || (sourceFile.version[0] == 5 && sourceFile.version[1] < 1)) { int targetGlesGraphics = a_Stream.ReadInt32(); } if ((sourceFile.version[0] == 5 && sourceFile.version[1] < 1) || (sourceFile.version[0] == 4 && sourceFile.version[1] == 6 && sourceFile.version[2] >= 3)) { int targetIOSGraphics = a_Stream.ReadInt32(); } if (sourceFile.version[0] == 5 && (sourceFile.version[1] > 2 || (sourceFile.version[1] == 2 && sourceFile.version[2] >= 1))) { bool useOnDemandResources = a_Stream.ReadBoolean(); a_Stream.AlignStream(4); } int targetResolution = a_Stream.ReadInt32(); if (sourceFile.version[0] == 3 && sourceFile.version[1] <= 1) { bool OverrideIPodMusic = a_Stream.ReadBoolean(); a_Stream.AlignStream(4); } else if (sourceFile.version[0] == 3 && sourceFile.version[1] <= 4) { } else { int accelerometerFrequency = a_Stream.ReadInt32(); } //3.5.0 and up } //fail in version 5 beta companyName = a_Stream.ReadAlignedString(a_Stream.ReadInt32()); productName = a_Stream.ReadAlignedString(a_Stream.ReadInt32()); }
public MonoBehaviour(AssetPreloadData preloadData) { var sourceFile = preloadData.sourceFile; var reader = preloadData.InitReader(); m_GameObject = sourceFile.ReadPPtr(); m_Enabled = reader.ReadByte(); reader.AlignStream(4); m_Script = sourceFile.ReadPPtr(); m_Name = reader.ReadAlignedString(); }
public static bool ExportMovieTexture(AssetPreloadData asset, string exportPath) { var m_MovieTexture = new MovieTexture(asset); var exportFullName = exportPath + asset.Text + ".ogv"; if (ExportFileExists(exportFullName)) { return(false); } File.WriteAllBytes(exportFullName, m_MovieTexture.m_MovieData); return(true); }