public Shader(ObjectReader reader) : base(reader) { if (version[0] == 5 && version[1] >= 5 || version[0] > 5) //5.5.0 and up { var str = reader.Dump(); m_Script = Encoding.UTF8.GetBytes(str ?? "Serialized Shader can't be read"); } else { m_Script = reader.ReadBytes(reader.ReadInt32()); if (version[0] == 5 && 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 static bool ExportMonoBehaviour(ObjectReader reader, string exportPath) { var exportFullName = exportPath + reader.exportName + ".txt"; if (ExportFileExists(exportFullName)) { return(false); } var m_MonoBehaviour = new MonoBehaviour(reader); string str; if (reader.serializedType?.m_Nodes != null) { str = reader.Dump(); } else { str = ScriptHelper.GetScriptString(reader); } File.WriteAllText(exportFullName, str); return(true); }