diff --git a/AssetStudio/AssetStudio.csproj b/AssetStudio/AssetStudio.csproj
index 85fe323..a457361 100644
--- a/AssetStudio/AssetStudio.csproj
+++ b/AssetStudio/AssetStudio.csproj
@@ -148,7 +148,6 @@
-
diff --git a/AssetStudio/Classes/Object.cs b/AssetStudio/Classes/Object.cs
index 835b5bf..a070013 100644
--- a/AssetStudio/Classes/Object.cs
+++ b/AssetStudio/Classes/Object.cs
@@ -1,5 +1,5 @@
-using System;
-using System.Collections.Generic;
+using System.Collections.Generic;
+using System.Collections.Specialized;
using System.Linq;
using System.Text;
@@ -52,6 +52,35 @@ namespace AssetStudio
return null;
}
+ public string Dump(List m_Nodes)
+ {
+ if (m_Nodes != null)
+ {
+ var sb = new StringBuilder();
+ TypeTreeHelper.ReadTypeString(sb, m_Nodes, reader);
+ return sb.ToString();
+ }
+ return null;
+ }
+
+ public OrderedDictionary ToType()
+ {
+ if (serializedType?.m_Nodes != null)
+ {
+ return TypeTreeHelper.ReadType(serializedType.m_Nodes, reader);
+ }
+ return null;
+ }
+
+ public OrderedDictionary ToType(List m_Nodes)
+ {
+ if (m_Nodes != null)
+ {
+ return TypeTreeHelper.ReadType(m_Nodes, reader);
+ }
+ return null;
+ }
+
public byte[] GetRawData()
{
reader.Reset();
diff --git a/AssetStudio/TypeTreeHelper.cs b/AssetStudio/TypeTreeHelper.cs
index 8b66325..52bb2ea 100644
--- a/AssetStudio/TypeTreeHelper.cs
+++ b/AssetStudio/TypeTreeHelper.cs
@@ -1,4 +1,5 @@
using System.Collections.Generic;
+using System.Collections.Specialized;
using System.IO;
using System.Text;
@@ -155,15 +156,21 @@ namespace AssetStudio
reader.AlignStream();
}
- public static UType ReadUType(List members, BinaryReader reader)
+ public static OrderedDictionary ReadType(List members, ObjectReader reader)
{
- var obj = new UType();
+ reader.Reset();
+ var obj = new OrderedDictionary();
for (int i = 1; i < members.Count; i++)
{
var member = members[i];
var varNameStr = member.m_Name;
obj[varNameStr] = ReadValue(members, reader, ref i);
}
+ var readed = reader.Position - reader.byteStart;
+ if (readed != reader.byteSize)
+ {
+ Logger.Error($"Error while read type, read {readed} bytes but expected {reader.byteSize} bytes");
+ }
return obj;
}
@@ -270,7 +277,7 @@ namespace AssetStudio
{
var @class = GetMembers(members, i);
i += @class.Count - 1;
- var obj = new UType();
+ var obj = new OrderedDictionary();
for (int j = 1; j < @class.Count; j++)
{
var classmember = @class[j];
diff --git a/AssetStudio/UType.cs b/AssetStudio/UType.cs
deleted file mode 100644
index 2b7902a..0000000
--- a/AssetStudio/UType.cs
+++ /dev/null
@@ -1,108 +0,0 @@
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace AssetStudio
-{
- public class UType : IDictionary
- {
- private List keys;
- private IDictionary values;
-
- public UType()
- {
- keys = new List();
- values = new Dictionary();
- }
-
- public object this[string key]
- {
- get
- {
- if (!values.ContainsKey(key))
- {
- return null;
- }
- return values[key];
- }
- set
- {
- if (!values.ContainsKey(key))
- {
- keys.Add(key);
- }
- values[key] = value;
- }
- }
-
- public ICollection Keys => keys;
-
- public ICollection