summaryrefslogtreecommitdiff
path: root/include/m_collision_obj.h
diff options
context:
space:
mode:
authorAnghelo Carvajal <angheloalf95@gmail.com>2023-08-21 15:19:33 -0400
committerGitHub <noreply@github.com>2023-08-21 12:19:33 -0700
commit4a8731d40ad81cb9356bdba23e4aec772328214e (patch)
tree907c70ef7ffdcf5ac0dd3305c29d6caf7c9d4f22 /include/m_collision_obj.h
parent74ba3014c974ae9a260d6485be71258310edb59a (diff)
`m_collision_obj.c` OK (#64)
* C file * func_80077620_jp, CollisionCheck_dt, CollisionCheck_clear * CollisionCheck_OC * CollisionCheck_Check1ClObjNoOC and CollisionCheck_Check2ClObjNoOC * CollisionCheck_OC_Pipe_Vs_JntSph, CollisionCheck_Status_ct, CollisionCheck_Status_Clear * CollisionCheck_OC_Pipe_Vs_Pipe and CollisionCheck_OCC * CollisionCheck_OC_JntSph_Vs_Pipe * CollisionCheck_OC_JntSph_Vs_JntSph * CollisionCheck_workTrisElemCenter, CollisionCheck_OCC_Tris_Vs_Pipe * CollisionCheck_OCC_Tris_Vs_JntSph * a bunch * ClObjElem_ct, ClObjTrisElemAttr_ct, ClObjTrisElemAttr_set, ClObjTrisElem_set, ClObjTris_ct, ClObjTris_set5_nzm * fix warnings * ClObj_ct, ClObj_dt, ClObj_OCClear, ClObjElem_OCClear, ClObjJntSphElem_OCClear, ClObjJntSph_OCClear, ClObjPipeAttr_dt, ClObjPipe_dt, ClObjPipe_OCClear, ClObjTrisElem_OCClear, ClObjTris_OCClear, CollisionCheck_setOCC, CollisionCheck_Status_set3, CollisionCheck_Uty_ActorWorldPosSetPipeC * ClObjTrisElem_OCCClear, ClObj_OCCClear, ClObjTris_OCCClear, CollisionCheck_Uty_setTrisPos_ad * get_type, CollisionCheck_setOC_HitInfo * ClObjTrisElemAttr_dt, ClObjTrisElem_dt, ClObjTris_dt_nzf * func_80076CC0_jp, func_80076D68_jp, func_80076E2C_jp * match all * naming * cleanup * cleanup * name some members and flags * more naming * and more cleaning up * idk * migrate data * format * premigrate collision data in actors
Diffstat (limited to 'include/m_collision_obj.h')
-rw-r--r--include/m_collision_obj.h278
1 files changed, 210 insertions, 68 deletions
diff --git a/include/m_collision_obj.h b/include/m_collision_obj.h
index 7d2ef43..62ba5ee 100644
--- a/include/m_collision_obj.h
+++ b/include/m_collision_obj.h
@@ -2,85 +2,227 @@
#define M_COLLISION_OBJ_H
#include "ultra64.h"
+#include "sys_math3d.h"
#include "z64math.h"
#include "unk.h"
+struct Actor;
+struct Game_Play;
+
+
+typedef enum ColliderShape {
+ /* 0 */ COLSHAPE_JNTSPH,
+ /* 1 */ COLSHAPE_PIPE,
+ /* 2 */ COLSHAPE_TRIS,
+ /* 3 */ COLSHAPE_MAX
+} ColliderShape;
+
+#define MASS_IMMOVABLE 0xFF
+#define MASS_HEAVY 0xFE
+
+typedef enum ColMassType {
+ /* 0 */ MASSTYPE_IMMOVABLE,
+ /* 1 */ MASSTYPE_HEAVY,
+ /* 2 */ MASSTYPE_NORMAL
+} ColMassType;
+
+
+typedef struct ClObjElem {
+ /* 0x0 */ u8 flags;
+} ClObjElem; // size = 0x1
+
+
+typedef struct ClObj_Properties {
+ /* 0x0 */ u8 ocFlags1;
+ /* 0x1 */ u8 ocFlags2;
+ /* 0x2 */ u8 shape;
+} ClObj_Properties; // size = 0x3
+
+typedef struct ClObj {
+ /* 0x0 */ struct Actor* actor;
+ /* 0x4 */ struct Actor* oc;
+ /* 0x8 */ ClObj_Properties prop;
+} ClObj; // size = 0xC
+
+
+typedef struct ClObjJntSphElemAttr_Init {
+ /* 0x0 */ u8 unk_0;
+ /* 0x2 */ Sphere unk_2;
+ /* 0xC */ s16 unk_A;
+} ClObjJntSphElemAttr_Init; // size = 0xC
+
+typedef struct ClObjJntSphElem_Init {
+ /* 0x0 */ ClObjElem elem;
+ /* 0x2 */ ClObjJntSphElemAttr_Init attr;
+} ClObjJntSphElem_Init; // size = 0xE
+
+typedef struct ClObjJntSph_Init {
+ /* 0x0 */ ClObj_Properties prop;
+ /* 0x4 */ s32 count;
+ /* 0x8 */ ClObjJntSphElem_Init* elements;
+} ClObjJntSph_Init; // size = 0xC
+
+
+
+typedef struct ClObjJntSphElemAttr {
+ /* 0x00 */ Sphere unk_00;
+ /* 0x08 */ Sphere unk_08;
+ /* 0x10 */ f32 unk_10;
+ /* 0x14 */ u8 unk_14;
+} ClObjJntSphElemAttr; // size = 0x18
+
+typedef struct ClObjJntSphElem {
+ /* 0x00 */ ClObjElem elem;
+ /* 0x04 */ ClObjJntSphElemAttr attr;
+} ClObjJntSphElem; // size = 0x1C
+
+
+typedef struct ClObjJntSph {
+ /* 0x00 */ ClObj base;
+ /* 0x0C */ s32 count;
+ /* 0x10 */ ClObjJntSphElem* elements;
+} ClObjJntSph; // size = 0x14
+
+
+
+typedef struct ClObjPipeAttr {
+ /* 0x0 */ Pipe dim;
+} ClObjPipeAttr; // size = 0xC
+
+typedef struct ClObjPipe_Init {
+ /* 0x0 */ ClObj_Properties prop;
+ /* 0x3 */ ClObjElem elem;
+ /* 0x4 */ ClObjPipeAttr attr;
+} ClObjPipe_Init; // size = 0x10
+
+typedef struct ClObjPipe {
+ /* 0x00 */ ClObj base;
+ /* 0x0C */ ClObjElem element;
+ /* 0x0E */ ClObjPipeAttr attribute;
+} ClObjPipe; // size = 0x1C
+
+
+
+typedef struct ClObjTrisElemAttr_Init {
+ /* 0x00 */ Triangle unk_00;
+} ClObjTrisElemAttr_Init; // size = 0x24
+
+
+typedef struct ClObjTrisElemAttr {
+ /* 0x00 */ Triangle3 unk_00;
+ /* 0x34 */ Vec3f unk_34;
+} ClObjTrisElemAttr; // size = 0x40
+
+
+typedef struct ClObjTrisElem {
+ /* 0x00 */ ClObjElem elem;
+ /* 0x04 */ ClObjTrisElemAttr attr;
+} ClObjTrisElem; // size = 0x44
+
+typedef struct ClObjTris {
+ /* 0x00 */ ClObj base;
+ /* 0x0C */ s32 count;
+ /* 0x10 */ ClObjTrisElem* elements;
+} ClObjTris; // size = 0x14
+
+
+typedef struct ClObjTrisElem_Init {
+ /* 0x00 */ ClObjElem elem;
+ /* 0x04 */ ClObjTrisElemAttr_Init attr;
+} ClObjTrisElem_Init; // size = 0x28
+
+typedef struct ClObjTris_Init {
+ /* 0x0 */ ClObj_Properties prop;
+ /* 0x4 */ s32 count;
+ /* 0x8 */ ClObjTrisElem_Init* elem;
+} ClObjTris_Init; // size = 0xX
+
+
+typedef struct CollisionCheck {
+ /* 0x00 */ u16 flags;
+ /* 0x04 */ s32 ocColCount;
+ /* 0x08 */ ClObj *ocColliders[50];
+} CollisionCheck; // size = 0xD0
+
+
+typedef struct CollisionCheck_Status_Init {
+ /* 0x0 */ u8 unk_0;
+ /* 0x0 */ s16 unk_2;
+ /* 0x0 */ s16 unk_4;
+ /* 0x0 */ s16 unk_6;
+ /* 0x0 */ u8 mass;
+} CollisionCheck_Status_Init; // size = 0xA
typedef struct CollisionCheck_Status {
/* 0x00 */ Vec3f displacement;
- /* 0x0C */ UNK_TYPE1 unk_0C[0xC];
-} CollisionCheck_Status; // size >= 0x18
+ /* 0x0C */ s16 unk_0C;
+ /* 0x0E */ s16 unk_0E;
+ /* 0x10 */ s16 unk_10;
+ /* 0x12 */ u8 mass;
+ /* 0x13 */ u8 unk_13;
+ /* 0x14 */ u8 unk_14;
+ /* 0x15 */ u8 unk_15;
+ /* 0x16 */ u8 unk_16;
+ /* 0x17 */ u8 unk_17;
+} CollisionCheck_Status; // size = 0x18
-typedef struct Game_Play2138 {
- /* 0x00 */ char unk00[0xD0];
-} Game_Play2138; // size = 0xD0
+#define COLCHECK_FLAG_NONE (0)
+#define COLCHECK_FLAG_1 (1 << 0)
-struct Game_Play;
+#define OC1_NONE (0)
+#define OC1_1 (1 << 0)
+#define OC1_2 (1 << 1)
+#define OC1_4 (1 << 2)
+#define OC1_TYPE_8 (1 << 3)
+#define OC1_TYPE_10 (1 << 4)
+#define OC1_TYPE_20 (1 << 5)
+#define OC1_40 (1 << 6)
+
+#define OC1_TYPE_ALL (OC1_TYPE_8 | OC1_TYPE_10 | OC1_TYPE_20)
+
+#define OC2_NONE (0)
+#define OC2_1 (1 << 0)
+#define OC2_2 (1 << 1)
+#define OC2_4 (1 << 2)
+#define OC2_TYPE_8 OC1_TYPE_8
+#define OC2_TYPE_10 OC1_TYPE_10
+#define OC2_TYPE_20 OC1_TYPE_20
+
+
+#define ELEM_FLAG_NONE (0)
+#define ELEM_FLAG_1 (1 << 0)
+#define ELEM_FLAG_2 (1 << 1)
+
+
+s32 ClObjJntSph_ct(struct Game_Play* game_play, ClObjJntSph* colJntSph);
+s32 ClObjJntSph_dt_nzf(struct Game_Play* game_play, ClObjJntSph* colJntSph);
+s32 ClObjJntSph_set5_nzm(struct Game_Play* game_play, ClObjJntSph* colJntSph, struct Actor* actor, ClObjJntSph_Init* init, ClObjJntSphElem elements[]);
+
+s32 ClObjPipe_ct(struct Game_Play* game_play, ClObjPipe* colPipe);
+s32 ClObjPipe_dt(struct Game_Play* game_play, ClObjPipe* colPipe);
+s32 ClObjPipe_set5(struct Game_Play* game_play, ClObjPipe* colPipe, struct Actor* actor, ClObjPipe_Init* init);
+
+s32 ClObjTris_ct(struct Game_Play* game_play, ClObjTris* colTris);
+s32 ClObjTris_dt_nzf(struct Game_Play* game_play, ClObjTris* colTris);
+s32 ClObjTris_set5_nzm(struct Game_Play* game_play, ClObjTris* colTris, struct Actor* actor, ClObjTris_Init* init, ClObjTrisElem elements[]);
+
+void CollisionCheck_ct(struct Game_Play* game_play, CollisionCheck* colCheck);
+void CollisionCheck_dt(struct Game_Play* game_play, CollisionCheck* arg1);
+void CollisionCheck_clear(struct Game_Play* game_play, CollisionCheck* colCheck);
+
+s32 CollisionCheck_setOC(struct Game_Play* game_play, CollisionCheck* colCheck, ClObj* cl);
+
+void CollisionCheck_OC(struct Game_Play* game_play, CollisionCheck* colCheck);
+void CollisionCheck_OCC(struct Game_Play* game_play, CollisionCheck* colCheck);
+
+s32 CollisionCheck_setOCC(struct Game_Play* game_play, CollisionCheck* colCheck, ClObj* cl);
-// void func_80076B40_jp();
-// void func_80076BA4_jp();
-// void func_80076BD4_jp();
-// void func_80076BE8_jp();
-// void func_80076C14_jp();
-// void func_80076C3C_jp();
-// void func_80076C4C_jp();
-// void func_80076C60_jp();
-// void func_80076C78_jp();
-// void func_80076CC0_jp();
-// void func_80076CD4_jp();
-// void func_80076D2C_jp();
-// void func_80076D68_jp();
-// void func_80076D90_jp();
-// void func_80076DDC_jp();
-// void func_80076E00_jp();
-// void func_80076E2C_jp();
-// void func_80076ED0_jp();
-// void func_80076F9C_jp();
-// void func_8007703C_jp();
-// void func_80077078_jp();
-// void func_8007708C_jp();
-// void func_800770CC_jp();
-// void func_80077118_jp();
-// void func_80077158_jp();
-// void func_800771BC_jp();
-// void func_800771FC_jp();
-// void func_80077248_jp();
-// void func_8007725C_jp();
-// void func_80077310_jp();
-// void func_8007734C_jp();
-// void func_80077374_jp();
-// void func_800773C0_jp();
-// void func_800773E4_jp();
-// void func_80077410_jp();
-// void func_800774B4_jp();
-// void func_80077580_jp();
-void func_80077620_jp(struct Game_Play* game_play, Game_Play2138* arg1);
-void CollisionCheck_dt(struct Game_Play* game_play, Game_Play2138* arg1);
-void CollisionCheck_clear(struct Game_Play* game_play, Game_Play2138* arg1);
-// void CollisionCheck_setOC();
-// void func_80077794_jp();
-// void func_800777D0_jp();
-// void func_80077B6C_jp();
-// void func_80077D6C_jp();
-// void func_80077EF4_jp();
-// void func_80077F20_jp();
-// void func_80077FF0_jp();
-// void func_80078014_jp();
-void CollisionCheck_OC(struct Game_Play* game_play, Game_Play2138* arg1);
-// void func_80078214_jp();
-// void func_80078258_jp();
-// void func_8007841C_jp();
-// void func_80078568_jp();
-// void func_8007858C_jp();
-// void func_8007870C_jp();
-// void func_8007872C_jp();
-// void func_80078748_jp();
-// void func_800787E8_jp();
void CollisionCheck_Status_ct(CollisionCheck_Status* status);
void CollisionCheck_Status_Clear(CollisionCheck_Status* status);
-// void CollisionCheck_Status_set3();
-// void CollisionCheck_Uty_ActorWorldPosSetPipeC();
-// void func_800789BC_jp();
+void CollisionCheck_Status_set3(CollisionCheck_Status* status, CollisionCheck_Status_Init* init);
+
+void CollisionCheck_Uty_ActorWorldPosSetPipeC(struct Actor* actor, ClObjPipe* colPipe);
+s32 CollisionCheck_Uty_setTrisPos_ad(struct Game_Play* game_play, ClObjTris* colTris, s32 index, ClObjTrisElemAttr_Init* init);
#endif