Files
dq8chr2glb/dq8chr2glb/Core/MDSFormat/Headers.cs
T
Boris Nikolaev 291babd1c0 fix codestyle
2026-05-10 17:05:25 +03:00

91 lines
3.1 KiB
C#

using System.Runtime.InteropServices;
namespace dq8chr2glb.Core.MDSFormat;
[StructLayout(LayoutKind.Explicit, Size = 80)]
public struct MDSHeader
{
[FieldOffset(00)] public int MagicCode;
[FieldOffset(04)] public int Version;
[FieldOffset(08)] public int HeaderSize;
[FieldOffset(12)] public int NodesCount;
[FieldOffset(20)] public int NodeSize;
[FieldOffset(24)] public int OffsetToNodes;
[FieldOffset(32)] public int MeshCount;
[FieldOffset(36)] public int OffsetToMDT;
[FieldOffset(44)] public int MaterialsCount;
[FieldOffset(48)] public int MaterialSize;
[FieldOffset(52)] public int OffsetToMaterials;
[FieldOffset(56)] public int OffsetToNames;
[FieldOffset(60)] public int NamesBlockSize;
}
[StructLayout(LayoutKind.Explicit, Size = 256)]
public struct MDTHeader
{
[FieldOffset(00)] public int MagicCode;
[FieldOffset(08)] public int ToVertexCount;
[FieldOffset(12)] public int TotalSize;
[FieldOffset(32)] public float ScaleX;
[FieldOffset(36)] public float ScaleY;
[FieldOffset(40)] public float ScaleZ;
[FieldOffset(80)] public float UvScaleX;
[FieldOffset(84)] public float UvScaleY;
[FieldOffset(112)] public int TriangleGroupCount;
[FieldOffset(116)] public int VertexAttrSize;
[FieldOffset(144)] public int VertsCount;
[FieldOffset(148)] public int BytesToFirstVertex;
[FieldOffset(152)] public int ColorsCount;
[FieldOffset(156)] public int BytesToFirstColor;
[FieldOffset(160)] public int UvCount;
[FieldOffset(164)] public int UvOffset;
[FieldOffset(176)] public int BonesPerVertex;
[FieldOffset(180)] public int ToWeightsOffset;
[FieldOffset(184)] public int ToBoneIndicesOffset;
[FieldOffset(192)] public AABB Bounds;
}
[StructLayout(LayoutKind.Explicit, Size = 48)]
public struct AABB
{
[FieldOffset(00)] public float MinX;
[FieldOffset(04)] public float MinY;
[FieldOffset(08)] public float MinZ;
[FieldOffset(16)] public float MaxX;
[FieldOffset(20)] public float MaxY;
[FieldOffset(24)] public float MaxZ;
[FieldOffset(32)] public float CenterX;
[FieldOffset(36)] public float CenterY;
[FieldOffset(40)] public float CenterZ;
}
[StructLayout(LayoutKind.Explicit, Size = 160)]
public struct Node
{
[FieldOffset(00)] public int NameOffset;
[FieldOffset(12)] public int MeshIndex;
[FieldOffset(16)] public int ParentIndex;
[FieldOffset(32)] public MDSMatrix Matrix;
[FieldOffset(96)] public MDSMatrix Bindpose;
}
[StructLayout(LayoutKind.Explicit, Size = 96)]
public struct Material
{
[FieldOffset(48)] public int NameOffset;
[FieldOffset(52)] public int TextureNameOffset;
[FieldOffset(64)] public int NoName;
[FieldOffset(80)] public int MaterialType;
}
[StructLayout(LayoutKind.Explicit, Size = 32)]
public struct TriangleGroupHeader
{
[FieldOffset(00)] public short ToNext;
[FieldOffset(04)] public short TriangleReadMode;
[FieldOffset(06)] public short IdsCount;
[FieldOffset(16)] public short HeaderSize;
public TriangleReadMode ReadMode => (TriangleReadMode)TriangleReadMode;
}