Skip to content

Commit b90ad52

Browse files
committed
Added new views, improved dump format, fixed PPtrReader bug with arrays
1 parent 5994b71 commit b90ad52

15 files changed

+549275
-549232
lines changed

Analyzer/Resources/Init.sql

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ CREATE TABLE refs
3737
(
3838
object INTEGER,
3939
referenced_object INTEGER,
40-
property_path TEXT
40+
property_path TEXT,
41+
property_type TEXT
4142
);
4243

4344
CREATE VIEW object_view AS
@@ -84,5 +85,20 @@ GROUP BY name, type, size
8485
HAVING instances > 1
8586
ORDER BY size DESC, instances DESC;
8687

88+
CREATE VIEW view_material_shader_refs AS
89+
SELECT m.id material_id, m.name material_name, a.name material_path, m.asset_bundle material_asset_bundle, s.id shader_id, s.name shader_name, s.asset_bundle shader_asset_bundle
90+
FROM object_view m
91+
INNER JOIN refs r ON m.id = r.object AND r.property_path = 'm_Shader'
92+
INNER JOIN object_view s ON r.referenced_object = s.id
93+
LEFT JOIN assets a ON m.id = a.object;
94+
95+
CREATE VIEW view_material_texture_refs AS
96+
SELECT m.id material_id, m.name material_name, a.name material_path, m.asset_bundle material_asset_bundle, t.id texture_id, t.name texture_name, t.asset_bundle texture_asset_bundle
97+
FROM object_view m
98+
INNER JOIN refs r ON r.object = m.id AND property_type = "Texture"
99+
INNER JOIN object_view t ON r.referenced_object = t.id
100+
LEFT JOIN assets a ON m.id = a.object
101+
WHERE m.type = "Material";
102+
87103
PRAGMA synchronous = OFF;
88104
PRAGMA journal_mode = MEMORY;

Analyzer/SQLite/SQLiteWriter.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,10 +105,11 @@ private void CreateSQLiteCommands()
105105
m_AddSerializedFileCommand.Parameters.Add("@name", DbType.String);
106106

107107
m_AddReferenceCommand = m_Database.CreateCommand();
108-
m_AddReferenceCommand.CommandText = "INSERT INTO refs (object, referenced_object, property_path) VALUES (@object, @referenced_object, @property_path)";
108+
m_AddReferenceCommand.CommandText = "INSERT INTO refs (object, referenced_object, property_path, property_type) VALUES (@object, @referenced_object, @property_path, @property_type)";
109109
m_AddReferenceCommand.Parameters.Add("@object", DbType.Int64);
110110
m_AddReferenceCommand.Parameters.Add("@referenced_object", DbType.Int64);
111111
m_AddReferenceCommand.Parameters.Add("@property_path", DbType.String);
112+
m_AddReferenceCommand.Parameters.Add("@property_type", DbType.String);
112113

113114
m_AddObjectCommand = m_Database.CreateCommand();
114115
m_AddObjectCommand.CommandText = "INSERT INTO objects (id, object_id, serialized_file, type, name, game_object, size) VALUES (@id, @object_id, @serialized_file, @type, @name, @game_object, @size)";
@@ -243,12 +244,13 @@ public void WriteSerializedFile(string filename, string fullPath)
243244
}
244245
}
245246

246-
public void AddReference(long objectId, int fileId, long pathId, string propertyPath)
247+
public void AddReference(long objectId, int fileId, long pathId, string propertyPath, string propertyType)
247248
{
248249
var referencedObjectId = m_ObjectIdProvider.GetId((m_LocalToDbFileId[fileId], pathId));
249250
m_AddReferenceCommand.Parameters["@object"].Value = objectId;
250251
m_AddReferenceCommand.Parameters["@referenced_object"].Value = referencedObjectId;
251252
m_AddReferenceCommand.Parameters["@property_path"].Value = propertyPath;
253+
m_AddReferenceCommand.Parameters["@property_type"].Value = propertyType;
252254
m_AddReferenceCommand.ExecuteNonQuery();
253255
}
254256

TextDumper/TextDumperTool.cs

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -59,24 +59,30 @@ public int Dump(string path, string outputPath, bool skipLargeArrays)
5959
void RecursiveDump(TypeTreeNode node, ref long offset, int level)
6060
{
6161
bool skipChildren = false;
62-
62+
6363
if (!node.IsArray)
6464
{
6565
m_StringBuilder.Append(' ', level * 2);
6666

67-
// Name is useless for the root.
6867
if (level != 0)
6968
{
7069
m_StringBuilder.Append(node.Name);
7170
m_StringBuilder.Append(' ');
71+
m_StringBuilder.Append('(');
72+
m_StringBuilder.Append(node.Type);
73+
m_StringBuilder.Append(')');
74+
}
75+
else
76+
{
77+
// Name is useless for the root.
78+
m_StringBuilder.Append(' ');
79+
m_StringBuilder.Append(node.Type);
7280
}
73-
74-
m_StringBuilder.Append(node.Type);
75-
m_StringBuilder.Append(' ');
7681

7782
// Basic data type.
7883
if (node.IsBasicType)
7984
{
85+
m_StringBuilder.Append(' ');
8086
m_StringBuilder.Append(ReadValue(node, offset));
8187

8288
offset += node.Size;
@@ -85,6 +91,7 @@ void RecursiveDump(TypeTreeNode node, ref long offset, int level)
8591
{
8692
var stringSize = m_Reader.ReadInt32(offset);
8793

94+
m_StringBuilder.Append(' ');
8895
m_StringBuilder.Append(m_Reader.ReadString(offset + 4, stringSize));
8996

9097
offset += stringSize + 4;
@@ -95,7 +102,7 @@ void RecursiveDump(TypeTreeNode node, ref long offset, int level)
95102

96103
m_Writer.WriteLine(m_StringBuilder);
97104
m_StringBuilder.Clear();
98-
105+
99106
if (node.IsManagedReferenceRegistry)
100107
{
101108
DumpManagedReferenceRegistry(node, ref offset, level + 1);
@@ -143,10 +150,11 @@ void DumpArray(TypeTreeNode node, ref long offset, int level)
143150
offset += 4;
144151

145152
m_StringBuilder.Append(' ', level * 2);
146-
m_StringBuilder.Append("Array [Size=");
147-
m_StringBuilder.Append(arraySize);
148-
m_StringBuilder.Append(" Type=");
153+
m_StringBuilder.Append("Array");
154+
m_StringBuilder.Append('<');
149155
m_StringBuilder.Append(dataNode.Type);
156+
m_StringBuilder.Append(">[");
157+
m_StringBuilder.Append(arraySize);
150158
m_StringBuilder.Append(']');
151159

152160
m_Writer.WriteLine(m_StringBuilder);

0 commit comments

Comments
 (0)