public struct UnitAny
{
[FieldOffset(0)] public uint dwType;
[FieldOffset(4)] public uint dwTxtFileNo;
[FieldOffset(8)] public uint _1;
[FieldOffset(0x0c)] public uint dwUnitId;
[FieldOffset(0x10)] public uint dwMode;
// first union
[FieldOffset(0x14)] public IntPtr ptrPlayerData;
[FieldOffset(0x14)] public IntPtr ptrItemData;
[FieldOffset(0x14)] public IntPtr ptrMonsterData;
[FieldOffset(0x14)] public IntPtr ptrObjectData;
[FieldOffset(0x18)] public uint dwAct;
[FieldOffset(0x1c)] public IntPtr ptrAct;
[FieldOffset(0x20)] [MarshalAs(UnmanagedType.ByValArray, SizeConst=2)] public uint[] dwSeed;
[FieldOffset(0x28)] public uint _2;
// second union
[FieldOffset(0x2c)] public IntPtr ptrPath;
[FieldOffset(0x2c)] public IntPtr ptrItemPath;
[FieldOffset(0x2c)] public IntPtr ptrObjectPath;
[FieldOffset(0x30)] [MarshalAs(UnmanagedType.ByValArray, SizeConst=5)] public uint[] _3;
[FieldOffset(0x44)] public uint dwGfxFrame;
[FieldOffset(0x48)] public uint dwFrameRemain;
[FieldOffset(0x4c)] public ushort wFrameRate;
[FieldOffset(0x4e)] public ushort _4;
[FieldOffset(0x50)] public IntPtr ptrGfxUnk;
[FieldOffset(0x54)] public IntPtr ptrGfxInfo;
[FieldOffset(0x58)] public uint _5;
[FieldOffset(0x5c)] public IntPtr ptrStats;
[FieldOffset(0x60)] public IntPtr ptrInventory;
[FieldOffset(0x64)] public IntPtr ptrtLight;
[FieldOffset(0x68)] [MarshalAs(UnmanagedType.ByValArray, SizeConst=9)] public uint[] _6;
[FieldOffset(0x8c)] public ushort wX;
[FieldOffset(0x8e)] public ushort wY;
[FieldOffset(0x90)] public uint _7;
[FieldOffset(0x94)] public uint dwOwnerType;
[FieldOffset(0x98)] public uint dwOwnerId;
[FieldOffset(0x9c)] [MarshalAs(UnmanagedType.ByValArray, SizeConst=3)] public uint[] _8;
[FieldOffset(0xa8)] public IntPtr ptrInfo;
[FieldOffset(0xac)] [MarshalAs(UnmanagedType.ByValArray, SizeConst=6)] public uint[] _9;
[FieldOffset(0xc4)] public uint dwFlags;
[FieldOffset(0xc8)] public uint dwFlags2;
[FieldOffset(0xcc)] [MarshalAs(UnmanagedType.ByValArray, SizeConst=5)] public uint[] _10;
[FieldOffset(0xe0)] public IntPtr ptrChangedNext;
[FieldOffset(0xe4)] public IntPtr ptrRoomNext;
[FieldOffset(0xe8)] public IntPtr ptrListNext;