Added Reader class to BlendFile library

This commit is contained in:
Samuele Lorefice
2025-01-23 16:47:32 +01:00
parent 2bd93ab3bb
commit ebcc629feb
3 changed files with 52 additions and 0 deletions

42
BlendFile/Reader.cs Normal file
View File

@@ -0,0 +1,42 @@
using System.Reflection;
using Kaitai;
namespace BlendFile;
public class Reader {
readonly string _path;
private readonly Dictionary<int, Type> dnaTypes = new();
private List<object> objects = new();
public List<object> Objects => objects;
public Reader(string path) {
_path = path;
var types = Assembly.GetExecutingAssembly().DefinedTypes;
foreach (var type in types) {
var attrib = type.GetCustomAttribute<DNAClassAttribute>();
if (attrib ==null) continue;
dnaTypes.Add(attrib.OriginalIndex, type);
}
}
public void Read() {
var file = new KaitaiStream(_path);
var blend = new Kaitai.BlendFile(file);
foreach (var block in blend.Blocks) {
Type t = dnaTypes[(int)block.SdnaIndex];
var obj = Activator.CreateInstance(t);
if(obj == null) continue;
objects.Add(obj);
foreach (var field in t.GetFields()) {
var attrib = field.GetCustomAttribute<DNAFieldAttribute>();
if (attrib == null) continue;
}
}
}
}