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;