mirror of
https://github.com/aelurum/AssetStudio.git
synced 2025-06-03 00:58:13 -04:00
Fixed read struct
This commit is contained in:
parent
f8e7303169
commit
6f3b438d92
@ -27,7 +27,7 @@ namespace Unity_Studio
|
|||||||
{
|
{
|
||||||
if (readSwitch)
|
if (readSwitch)
|
||||||
{
|
{
|
||||||
m_Script = Encoding.UTF8.GetBytes("Serialized Shader can't be read");
|
m_Script = Encoding.UTF8.GetBytes(preloadData.ViewStruct());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -36,7 +36,6 @@ namespace Unity_Studio
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO 1,2长度类型对齐问题
|
|
||||||
private static void Read(StringBuilder sb, List<ClassMember> members, EndianStream a_Stream)
|
private static void Read(StringBuilder sb, List<ClassMember> members, EndianStream a_Stream)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < members.Count; i++)
|
for (int i = 0; i < members.Count; i++)
|
||||||
@ -45,80 +44,65 @@ namespace Unity_Studio
|
|||||||
var level = member.Level;
|
var level = member.Level;
|
||||||
var varTypeStr = member.Type;
|
var varTypeStr = member.Type;
|
||||||
var varNameStr = member.Name;
|
var varNameStr = member.Name;
|
||||||
|
object value = null;
|
||||||
|
var align = (member.Flag & 0x4000) != 0;
|
||||||
|
var append = true;
|
||||||
if (varTypeStr == "SInt8")//sbyte
|
if (varTypeStr == "SInt8")//sbyte
|
||||||
{
|
{
|
||||||
var value = a_Stream.ReadSByte();
|
value = a_Stream.ReadSByte();
|
||||||
sb.AppendFormat("{0}{1} {2} = {3}\r\n", (new string('\t', level)), varTypeStr, varNameStr, value);
|
|
||||||
a_Stream.AlignStream(4);
|
|
||||||
}
|
}
|
||||||
else if (varTypeStr == "UInt8")//byte
|
else if (varTypeStr == "UInt8")//byte
|
||||||
{
|
{
|
||||||
var value = a_Stream.ReadByte();
|
value = a_Stream.ReadByte();
|
||||||
sb.AppendFormat("{0}{1} {2} = {3}\r\n", (new string('\t', level)), varTypeStr, varNameStr, value);
|
|
||||||
a_Stream.AlignStream(4);
|
|
||||||
}
|
}
|
||||||
else if (varTypeStr == "short" || varTypeStr == "SInt16")//Int16
|
else if (varTypeStr == "short" || varTypeStr == "SInt16")//Int16
|
||||||
{
|
{
|
||||||
var value = a_Stream.ReadInt16();
|
value = a_Stream.ReadInt16();
|
||||||
sb.AppendFormat("{0}{1} {2} = {3}\r\n", (new string('\t', level)), varTypeStr, varNameStr, value);
|
|
||||||
a_Stream.AlignStream(4);
|
|
||||||
}
|
}
|
||||||
else if (varTypeStr == "UInt16" || varTypeStr == "unsigned short")//UInt16
|
else if (varTypeStr == "UInt16" || varTypeStr == "unsigned short")//UInt16
|
||||||
{
|
{
|
||||||
var value = a_Stream.ReadUInt16();
|
value = a_Stream.ReadUInt16();
|
||||||
sb.AppendFormat("{0}{1} {2} = {3}\r\n", (new string('\t', level)), varTypeStr, varNameStr, value);
|
|
||||||
a_Stream.AlignStream(4);
|
|
||||||
}
|
}
|
||||||
else if (varTypeStr == "int" || varTypeStr == "SInt32")//Int32
|
else if (varTypeStr == "int" || varTypeStr == "SInt32")//Int32
|
||||||
{
|
{
|
||||||
var value = a_Stream.ReadInt32();
|
value = a_Stream.ReadInt32();
|
||||||
sb.AppendFormat("{0}{1} {2} = {3}\r\n", (new string('\t', level)), varTypeStr, varNameStr, value);
|
|
||||||
a_Stream.AlignStream(4);
|
|
||||||
}
|
}
|
||||||
else if (varTypeStr == "UInt32" || varTypeStr == "unsigned int")//UInt32
|
else if (varTypeStr == "UInt32" || varTypeStr == "unsigned int")//UInt32
|
||||||
{
|
{
|
||||||
var value = a_Stream.ReadUInt32();
|
value = a_Stream.ReadUInt32();
|
||||||
sb.AppendFormat("{0}{1} {2} = {3}\r\n", (new string('\t', level)), varTypeStr, varNameStr, value);
|
|
||||||
a_Stream.AlignStream(4);
|
|
||||||
}
|
}
|
||||||
else if (varTypeStr == "long long" || varTypeStr == "SInt64")//Int64
|
else if (varTypeStr == "long long" || varTypeStr == "SInt64")//Int64
|
||||||
{
|
{
|
||||||
var value = a_Stream.ReadInt64();
|
value = a_Stream.ReadInt64();
|
||||||
sb.AppendFormat("{0}{1} {2} = {3}\r\n", (new string('\t', level)), varTypeStr, varNameStr, value);
|
|
||||||
a_Stream.AlignStream(4);
|
|
||||||
}
|
}
|
||||||
else if (varTypeStr == "UInt64" || varTypeStr == "unsigned long long")//UInt64
|
else if (varTypeStr == "UInt64" || varTypeStr == "unsigned long long")//UInt64
|
||||||
{
|
{
|
||||||
var value = a_Stream.ReadUInt64();
|
value = a_Stream.ReadUInt64();
|
||||||
sb.AppendFormat("{0}{1} {2} = {3}\r\n", (new string('\t', level)), varTypeStr, varNameStr, value);
|
|
||||||
a_Stream.AlignStream(4);
|
|
||||||
}
|
}
|
||||||
else if (varTypeStr == "float")//float
|
else if (varTypeStr == "float")//float
|
||||||
{
|
{
|
||||||
var value = a_Stream.ReadSingle();
|
value = a_Stream.ReadSingle();
|
||||||
sb.AppendFormat("{0}{1} {2} = {3:f}\r\n", (new string('\t', level)), varTypeStr, varNameStr, value);
|
|
||||||
a_Stream.AlignStream(4);
|
|
||||||
}
|
}
|
||||||
else if (varTypeStr == "double")//double
|
else if (varTypeStr == "double")//double
|
||||||
{
|
{
|
||||||
var value = a_Stream.ReadDouble();
|
value = a_Stream.ReadDouble();
|
||||||
sb.AppendFormat("{0}{1} {2} = {3:f4}\r\n", (new string('\t', level)), varTypeStr, varNameStr, value);
|
|
||||||
a_Stream.AlignStream(4);
|
|
||||||
}
|
}
|
||||||
else if (varTypeStr == "bool")//bool
|
else if (varTypeStr == "bool")//bool
|
||||||
{
|
{
|
||||||
var value = a_Stream.ReadBoolean();
|
value = a_Stream.ReadBoolean();
|
||||||
sb.AppendFormat("{0}{1} {2} = {3}\r\n", (new string('\t', level)), varTypeStr, varNameStr, value);
|
|
||||||
a_Stream.AlignStream(4);
|
|
||||||
}
|
}
|
||||||
else if (varTypeStr == "string")//string
|
else if (varTypeStr == "string")//string
|
||||||
{
|
{
|
||||||
var value = a_Stream.ReadAlignedString(a_Stream.ReadInt32());
|
append = false;
|
||||||
sb.AppendFormat("{0}{1} {2} = \"{3}\"\r\n", (new string('\t', level)), varTypeStr, varNameStr, value);
|
var str = a_Stream.ReadAlignedString(a_Stream.ReadInt32());
|
||||||
|
sb.AppendFormat("{0}{1} {2} = \"{3}\"\r\n", (new string('\t', level)), varTypeStr, varNameStr, str);
|
||||||
i += 3;//skip
|
i += 3;//skip
|
||||||
}
|
}
|
||||||
else if (varTypeStr == "Array")//Array
|
else if (varTypeStr == "Array")//Array
|
||||||
{
|
{
|
||||||
|
append = false;
|
||||||
|
if ((members[i - 1].Flag & 0x4000) != 0)
|
||||||
|
align = true;
|
||||||
sb.AppendFormat("{0}{1} {2}\r\n", (new string('\t', level)), varTypeStr, varNameStr);
|
sb.AppendFormat("{0}{1} {2}\r\n", (new string('\t', level)), varTypeStr, varNameStr);
|
||||||
var size = a_Stream.ReadInt32();
|
var size = a_Stream.ReadInt32();
|
||||||
sb.AppendFormat("{0}{1} {2} = {3}\r\n", (new string('\t', level)), "int", "size", size);
|
sb.AppendFormat("{0}{1} {2} = {3}\r\n", (new string('\t', level)), "int", "size", size);
|
||||||
@ -132,8 +116,14 @@ namespace Unity_Studio
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
append = false;
|
||||||
|
align = false;
|
||||||
sb.AppendFormat("{0}{1} {2}\r\n", (new string('\t', level)), varTypeStr, varNameStr);
|
sb.AppendFormat("{0}{1} {2}\r\n", (new string('\t', level)), varTypeStr, varNameStr);
|
||||||
}
|
}
|
||||||
|
if (append)
|
||||||
|
sb.AppendFormat("{0}{1} {2} = {3}\r\n", (new string('\t', level)), varTypeStr, varNameStr, value);
|
||||||
|
if (align)
|
||||||
|
a_Stream.AlignStream(4);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -365,8 +365,7 @@ namespace Unity_Studio
|
|||||||
int index = a_Stream.ReadInt32();
|
int index = a_Stream.ReadInt32();
|
||||||
int isArray = a_Stream.ReadInt32();
|
int isArray = a_Stream.ReadInt32();
|
||||||
int num0 = a_Stream.ReadInt32();
|
int num0 = a_Stream.ReadInt32();
|
||||||
int num1 = a_Stream.ReadInt16();
|
int flag = a_Stream.ReadInt32();
|
||||||
int num2 = a_Stream.ReadInt16();
|
|
||||||
int childrenCount = a_Stream.ReadInt32();
|
int childrenCount = a_Stream.ReadInt32();
|
||||||
|
|
||||||
//Debug.WriteLine(baseFormat + " " + baseName + " " + childrenCount);
|
//Debug.WriteLine(baseFormat + " " + baseName + " " + childrenCount);
|
||||||
@ -375,7 +374,8 @@ namespace Unity_Studio
|
|||||||
Level = level - 1,
|
Level = level - 1,
|
||||||
Type = varType,
|
Type = varType,
|
||||||
Name = varName,
|
Name = varName,
|
||||||
Size = size
|
Size = size,
|
||||||
|
Flag = flag
|
||||||
});
|
});
|
||||||
for (int i = 0; i < childrenCount; i++) { readBase(cb, level + 1); }
|
for (int i = 0; i < childrenCount; i++) { readBase(cb, level + 1); }
|
||||||
}
|
}
|
||||||
@ -452,7 +452,7 @@ namespace Unity_Studio
|
|||||||
|
|
||||||
int size = a_Stream.ReadInt32();
|
int size = a_Stream.ReadInt32();
|
||||||
int index = a_Stream.ReadInt32();
|
int index = a_Stream.ReadInt32();
|
||||||
int num1 = a_Stream.ReadInt32();
|
int flag = a_Stream.ReadInt32();
|
||||||
|
|
||||||
if (index == 0) { className = varTypeStr + " " + varNameStr; }
|
if (index == 0) { className = varTypeStr + " " + varNameStr; }
|
||||||
else
|
else
|
||||||
@ -462,7 +462,8 @@ namespace Unity_Studio
|
|||||||
Level = level - 1,
|
Level = level - 1,
|
||||||
Type = varTypeStr,
|
Type = varTypeStr,
|
||||||
Name = varNameStr,
|
Name = varNameStr,
|
||||||
Size = size
|
Size = size,
|
||||||
|
Flag = flag
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -31,6 +31,7 @@ namespace Unity_Studio
|
|||||||
public string Type;
|
public string Type;
|
||||||
public string Name;
|
public string Name;
|
||||||
public int Size;
|
public int Size;
|
||||||
|
public int Flag;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class ClassIDReference
|
public static class ClassIDReference
|
||||||
|
@ -13,7 +13,6 @@ using System.Diagnostics;
|
|||||||
using System.Drawing.Text;
|
using System.Drawing.Text;
|
||||||
using OpenTK;
|
using OpenTK;
|
||||||
using OpenTK.Graphics.OpenGL;
|
using OpenTK.Graphics.OpenGL;
|
||||||
using ManagedFbx;
|
|
||||||
using static Unity_Studio.UnityStudio;
|
using static Unity_Studio.UnityStudio;
|
||||||
|
|
||||||
namespace Unity_Studio
|
namespace Unity_Studio
|
||||||
@ -1062,14 +1061,14 @@ namespace Unity_Studio
|
|||||||
|
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
/*string str;
|
string str;
|
||||||
if ((str = asset.ViewStruct()) != null)
|
if ((str = asset.ViewStruct()) != null)
|
||||||
{
|
{
|
||||||
textPreviewBox.Text = str;
|
textPreviewBox.Text = str;
|
||||||
textPreviewBox.Visible = true;
|
textPreviewBox.Visible = true;
|
||||||
}
|
}
|
||||||
else*/
|
else
|
||||||
StatusStripUpdate("Only supported export the raw file.");
|
StatusStripUpdate("Only supported export the raw file.");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user