ResourceTree: Add EID files

This commit is contained in:
Exter-N 2023-11-02 20:59:09 +01:00
parent 57f8587a43
commit da54222bb1
3 changed files with 29 additions and 1 deletions

View file

@ -107,6 +107,16 @@ internal record ResolveContext(GlobalResolveContext Global, EquipSlot Slot, Char
return node;
}
public unsafe ResourceNode? CreateNodeFromEid(ResourceHandle* eid)
{
if (eid == null)
return null;
var path = Utf8GamePath.Empty; // TODO
return GetOrCreateNode(ResourceType.Eid, 0, eid, path);
}
public unsafe ResourceNode? CreateNodeFromImc(ResourceHandle* imc)
{
if (imc == null)

View file

@ -31,7 +31,7 @@ public class ResourceNode : ICloneable
}
public bool Internal
=> Type is ResourceType.Imc;
=> Type is ResourceType.Eid or ResourceType.Imc;
internal ResourceNode(ResourceType type, nint objectAddress, nint resourceHandle, ulong length, ResolveContext? resolveContext)
{

View file

@ -62,6 +62,15 @@ public class ResourceTree
CustomizeData = character->DrawData.CustomizeData;
RaceCode = human != null ? (GenderRace)human->RaceSexId : GenderRace.Unknown;
var eid = (ResourceHandle*)model->EID;
var eidNode = globalContext.CreateContext(EquipSlot.Unknown, default).CreateNodeFromEid(eid);
if (eidNode != null)
{
if (globalContext.WithUiData)
eidNode.FallbackName = "EID";
Nodes.Add(eidNode);
}
for (var i = 0; i < model->SlotCount; ++i)
{
var context = globalContext.CreateContext(
@ -113,6 +122,15 @@ public class ResourceTree
weapon != null ? new CharacterArmor(weapon->ModelSetId, (byte)weapon->Variant, (byte)weapon->ModelUnknown) : default
);
var eid = (ResourceHandle*)subObject->EID;
var eidNode = subObjectContext.CreateNodeFromEid(eid);
if (eidNode != null)
{
if (globalContext.WithUiData)
eidNode.FallbackName = $"{subObjectNamePrefix} #{subObjectIndex}, EID";
Nodes.Add(eidNode);
}
for (var i = 0; i < subObject->SlotCount; ++i)
{
var imc = (ResourceHandle*)subObject->IMCArray[i];