Read model sub objects
This commit is contained in:
parent
3ee172f16c
commit
beae881f37
|
@ -93,6 +93,54 @@ public class ModelFile
|
|||
}
|
||||
}
|
||||
|
||||
public struct SubObject
|
||||
{
|
||||
public string Name;
|
||||
public byte Type;
|
||||
public int Joint;
|
||||
public float MinJointValue;
|
||||
public float MaxJointValue;
|
||||
public Matrix4x4 Transform;
|
||||
public short Child;
|
||||
public short Next;
|
||||
public ushort VhotIdx;
|
||||
public ushort VhotCount;
|
||||
public ushort PointIdx;
|
||||
public ushort PointCount;
|
||||
public ushort LightIdx;
|
||||
public ushort LightCount;
|
||||
public ushort NormalIdx;
|
||||
public ushort NormalCount;
|
||||
public ushort NodeIdx;
|
||||
public ushort NodeCount;
|
||||
|
||||
public SubObject(BinaryReader reader)
|
||||
{
|
||||
Name = reader.ReadNullString(8);
|
||||
Type = reader.ReadByte();
|
||||
Joint = reader.ReadInt32();
|
||||
MinJointValue = reader.ReadSingle();
|
||||
MaxJointValue = reader.ReadSingle();
|
||||
var v1 = reader.ReadVec3();
|
||||
var v2 = reader.ReadVec3();
|
||||
var v3 = reader.ReadVec3();
|
||||
var v4 = reader.ReadVec3();
|
||||
Transform = new Matrix4x4(v1.X, v1.Y, v1.Z, 0, v2.X, v2.Y, v2.Z, 0, v3.X, v3.Y, v3.Z, 0, v4.X, v4.Y, v4.Z, 1);
|
||||
Child = reader.ReadInt16();
|
||||
Next = reader.ReadInt16();
|
||||
VhotIdx = reader.ReadUInt16();
|
||||
VhotCount = reader.ReadUInt16();
|
||||
PointIdx = reader.ReadUInt16();
|
||||
PointCount = reader.ReadUInt16();
|
||||
LightIdx = reader.ReadUInt16();
|
||||
LightCount = reader.ReadUInt16();
|
||||
NormalIdx = reader.ReadUInt16();
|
||||
NormalCount = reader.ReadUInt16();
|
||||
NodeIdx = reader.ReadUInt16();
|
||||
NodeCount = reader.ReadUInt16();
|
||||
}
|
||||
}
|
||||
|
||||
public struct Polygon
|
||||
{
|
||||
public ushort Index;
|
||||
|
@ -184,6 +232,7 @@ public class ModelFile
|
|||
public Polygon[] Polygons { get; }
|
||||
public Material[] Materials { get; }
|
||||
public VHot[] VHots { get; }
|
||||
public SubObject[] Objects { get; }
|
||||
|
||||
public ModelFile(string filename)
|
||||
{
|
||||
|
@ -232,6 +281,12 @@ public class ModelFile
|
|||
{
|
||||
VHots[i] = new VHot(reader);
|
||||
}
|
||||
stream.Seek(Header.ObjectOffset, SeekOrigin.Begin);
|
||||
Objects = new SubObject[Header.ObjectCount];
|
||||
for (var i = 0; i < Objects.Length; i++)
|
||||
{
|
||||
Objects[i] = new SubObject(reader);
|
||||
}
|
||||
}
|
||||
|
||||
public bool TryGetVhot(VhotId id, out VHot vhot)
|
||||
|
|
Loading…
Reference in New Issue