-
Notifications
You must be signed in to change notification settings - Fork 69
Expand file tree
/
Copy pathExpectedDataGenerator.cs
More file actions
45 lines (37 loc) · 2.21 KB
/
Copy pathExpectedDataGenerator.cs
File metadata and controls
45 lines (37 loc) · 2.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
using System;
using System.IO;
using System.Linq;
using UnityDataTools.Analyzer.SerializedObjects;
using UnityDataTools.FileSystem;
using UnityDataTools.FileSystem.TypeTreeReaders;
using UnityDataTools.TestCommon;
namespace UnityDataTools.UnityDataTool.Tests;
public static class ExpectedDataGenerator
{
public static void Generate(Context context)
{
UnityFileSystem.Init();
using var archive = UnityFileSystem.MountArchive(Path.Combine(context.UnityDataFolder, "assetbundle"), "/");
using var serializedFile = UnityFileSystem.OpenSerializedFile("/CAB-5d40f7cad7c871cf2ad2af19ac542994");
using var fileReader = new UnityFileReader("archive:/CAB-5d40f7cad7c871cf2ad2af19ac542994", 1024 * 1024);
AddObject(-4850512016903265157, "Shader", serializedFile, fileReader, context, Shader.Read);
AddObject(-9023202112035587373, "Texture1", serializedFile, fileReader, context, Texture2D.Read);
AddObject(404836592933730457, "Texture2", serializedFile, fileReader, context, Texture2D.Read);
AddObject(2152370074763270995, "AnimationClip", serializedFile, fileReader, context, AnimationClip.Read);
AddObject(4693305862354978555, "Mesh", serializedFile, fileReader, context, Mesh.Read);
AddObject(-8074603400156879931, "AudioClip", serializedFile, fileReader, context, AudioClip.Read);
AddObject(1, "AssetBundle", serializedFile, fileReader, context, AssetBundle.Read);
var csprojFolder = Directory.GetParent(context.TestDataFolder).Parent.Parent.Parent.FullName;
var outputFolder = Path.Combine(csprojFolder, "ExpectedData", context.UnityDataVersion);
Directory.CreateDirectory(outputFolder);
context.ExpectedData.Save(outputFolder);
}
static void AddObject<T>(long id, string name, SerializedFile serializedFile, UnityFileReader fileReader, Context context, Func<RandomAccessReader, T> creator)
{
var objectInfo = serializedFile.Objects.First(x => x.Id == id);
var node = serializedFile.GetTypeTreeRoot(objectInfo.Id);
var reader = new RandomAccessReader(serializedFile, node, fileReader, objectInfo.Offset);
var obj = creator(reader);
context.ExpectedData.Add(name, obj);
}
}