Decompile MapObject functions (#51)

* decompile MapObject

* fix regression

* match the remaining 4 functions
This commit is contained in:
Yanis
2026-04-16 13:27:46 +02:00
committed by GitHub
parent bcb6371074
commit 754eb10308
24 changed files with 563 additions and 149 deletions
+84 -27
View File
@@ -1,5 +1,6 @@
#pragma once
#include "Actor/ActorRef.hpp"
#include "Map/MapObjectId.hpp"
#include "MapObject/MapObjectProfile.hpp"
#include "Physics/Cylinder.hpp"
@@ -9,6 +10,8 @@
#include "nitro/math.h"
#include "types.h"
class MapObjectProfile;
typedef u16 MapObjFlags;
enum MapObjFlag_ {
MapObjFlag_Alive = FLAG(0, 0),
@@ -45,26 +48,79 @@ enum MapObjFlag_ {
MapObjFlag_31 = FLAG(0, 31),
};
class MapObject_10_Base {
public:
/* 00 (vtable) */
/* 04 */ unk8 mUnk_04;
/* 05 */ unk8 mUnk_05;
/* 06 */ unk8 mUnk_06;
/* 07 */ unk8 mUnk_07;
/* 08 */ unk32 mUnk_08;
/* 0C */
MapObject_10_Base(); // func_ov000_0207c018
// data_ov000_020b2854
/* 00 */ virtual void vfunc_00() = 0;
/* 04 */ virtual void vfunc_04() = 0;
/* 08 */ virtual void vfunc_08() = 0;
/* 0C */ virtual void vfunc_0C() = 0;
/* 10 */ virtual void vfunc_10(Cylinder *param1) = 0;
/* 14 */ virtual void vfunc_14() = 0;
/* 18 */ virtual void vfunc_18(Vec3p *param1) = 0;
/* 1C */ virtual void vfunc_1C(Vec3p *param1) = 0;
/* 20 */
};
class MapObject_10 : public MapObject_10_Base {
public:
/* 00 (vtable) */
/* 0C */
MapObject_10() {}
~MapObject_10() {}
// data_ov031_02113f18
/* 00 */ virtual void vfunc_00();
/* 04 */ virtual void vfunc_04();
/* 08 */ virtual void vfunc_08();
/* 0C */ virtual void vfunc_0C();
/* 10 */ virtual void vfunc_10(Cylinder *param1);
/* 14 */ virtual void vfunc_14();
/* 18 */ virtual void vfunc_18(Vec3p *param1);
/* 1C */ virtual void vfunc_1C(Vec3p *param1);
/* 20 */
};
class MapObject_20 {
public:
/* 00 */ u16 mUnk_00;
/* 02 */ u16 mUnk_02;
/* 04 */ unk32 mUnk_04;
/* 08 */ u8 mUnk_08[2];
/* 0A */ u16 mUnk_0A[2];
/* 0E */ unk16 mUnk_0E;
/* 10 */ unk32 mUnk_10;
/* 14 */ s16 mUnk_14;
/* 16 */ unk16 mUnk_16;
/* 18 */
MapObject_20() {}
};
class MapObject : public SysObject {
public:
/* 00 (vtable) */
/* 04 */ Vec3p mPos;
/* 10 */ void *mUnk_10;
/* 10 */ MapObject_10 *mUnk_10;
/* 14 */ unk16 mUnk_14;
/* 16 */ unk16 mUnk_16;
/* 18 */ unk8 mUnk_18; // bool? when set Link walks to the map object when touched
/* 19 */ unk8 mUnk_19;
/* 18 */ unk8 mUnk_18[2]; // bools? when set Link walks to the map object when touched
/* 1A */ unk8 mUnk_1A;
/* 1B */ unk8 mUnk_1B;
/* 1C */ MapObjFlags mFlags[1];
/* 1E */ unk16 mUnk_1E;
/* 20 */ u16 mUnk_20;
/* 22 */ u16 mUnk_22;
/* 24 */ unk32 mUnk_24;
/* 28 */ unk32 mUnk_28;
/* 2C */ unk32 mUnk_2C;
/* 30 */ unk32 mUnk_30;
/* 34 */ unk32 mUnk_34;
/* 20 */ MapObject_20 mUnk_20;
/* 38 */ unk8 mUnk_38;
/* 38 */ unk8 mUnk_39;
/* 3A */ Vec2b mUnk_3A;
@@ -79,11 +135,11 @@ public:
/* 10 */ virtual void vfunc_10();
/* 14 */ virtual void vfunc_14();
/* 18 */ virtual void vfunc_18();
/* 1C */ virtual void vfunc_1C();
/* 1C */ virtual bool vfunc_1C();
/* 20 */ virtual void vfunc_20();
/* 24 */ virtual void vfunc_24();
/* 28 */ virtual void vfunc_28();
/* 2C */ virtual void vfunc_2C();
/* 28 */ virtual bool vfunc_28();
/* 2C */ virtual bool vfunc_2C(Vec3p *param1);
/* 30 */ virtual ~MapObject();
/* 38 */
@@ -91,23 +147,24 @@ public:
MapObjectId GetMapObjectId();
void func_ov000_0209d0bc();
void func_ov000_0209d114();
void func_ov000_0209d12c();
void func_ov000_0209d144();
void func_ov000_0209d22c();
void func_ov000_0209d274();
bool func_ov000_0209d114();
bool func_ov000_0209d12c();
bool func_ov000_0209d144(Vec2s *param1, unk32 param2, unk32 param3);
void func_ov000_0209d274(unk32 param1);
unk32 func_ov000_0209d29c(unk32 param1);
void func_ov000_0209d2c4(unk32 param1, unk32 param2);
void func_ov000_0209d2f0();
void func_ov000_0209d3b4();
void func_ov000_0209d434();
void func_ov000_0209d518();
void func_ov000_0209d54c();
void func_ov000_0209d5c8();
void func_ov000_0209d614();
void func_ov000_0209d668();
void func_ov000_0209d2f0(unk32 param1, unk32 param2, Vec2b *param3);
void func_ov000_0209d3b4(unk32 param1, q20 size);
void func_ov000_0209d434(s8 *param1, UnkStruct_ov019_020d24c8_28_258_00 *param2, unk32 param3);
void func_ov000_0209d518(unk32 param1, unk32 param2, unk32 param3, u8 param4);
void func_ov000_0209d54c(unk32 param1, u16 param2, Vec3p *param3, s16 param4, u16 param5);
void func_ov000_0209d5c8(ActorRef ref);
void func_ov000_0209d614(unk32 param1);
bool func_ov000_0209d668();
void func_ov000_0209d6ac(Vec3p *param1);
void func_ov031_02103878();
static void func_ov000_0209d0bc(Vec2b *param1, MapObject *thisx);
static void func_ov000_0209d22c(unk16 *param1, MapObject *thisx, unk32 param2);
};