Identify remaining door functions

This commit is contained in:
Ryan Dwyer
2024-08-31 14:36:19 +10:00
parent 42b4fd3789
commit 8a3b77a031
7 changed files with 185 additions and 181 deletions
+4 -4
View File
@@ -799,19 +799,19 @@
#define DIFFBIT_PA 0x04
#define DIFFBIT_PD 0x08
#define DOORFLAG_0001 0x0001
#define DOORFLAG_EXTENDEDY 0x0001 // GE bunker flexi door
#define DOORFLAG_WINDOWED 0x0002
#define DOORFLAG_0004 0x0004
#define DOORFLAG_FLIP 0x0008
#define DOORFLAG_AUTOMATIC 0x0010
#define DOORFLAG_0020 0x0020
#define DOORFLAG_REUSEGEO 0x0020
#define DOORFLAG_ROTATEDPAD 0x0040
#define DOORFLAG_0080 0x0080
#define DOORFLAG_TRANSLATION 0x0080 // Door opens using simple translation (no rotation)
#define DOORFLAG_0100 0x0100
#define DOORFLAG_LONGRANGE 0x0200
#define DOORFLAG_DAMAGEONCONTACT 0x0400 // Lasers
#define DOORFLAG_UNBLOCKABLEOPEN 0x0800 // Skip collision checks when opening
#define DOORFLAG_4000 0x4000 // Two Investigation vertical doors after lasers
#define DOORFLAG_4000 0x4000 // Unused. Two Investigation vertical doors after lasers
#define DOORMODE_IDLE 0
#define DOORMODE_OPENING 1
+11 -14
View File
@@ -52,10 +52,9 @@ f32 obj_get_rotated_local_max(struct modelrodata_bbox *bbox, f32 arg1, f32 arg2,
s32 obj_populate_geoblock_vertices_from_bbox_and_mtx(f32 xmin, f32 xmax, f32 ymin, f32 ymax, f32 zmin, f32 zmax, Mtxf *mtx, struct geoblock *block);
void obj_populate_geoblock_from_bbox_and_mtx(struct modelrodata_bbox *bbox, Mtxf *mtx, struct geoblock *block);
void obj_populate_geoblock_from_modeldef(struct modelrodata_geo *georodata, struct modelrodata_bbox *bbox, Mtxf *mtx, struct geoblock *block);
bool func0f0675c8(struct coord *pos, f32 arg1, struct modelrodata_bbox *bbox, Mtxf *mtx);
bool func0f0677ac(struct coord *coord, struct coord *arg1, struct coord *pos, struct coord *normal, struct coord *up, struct coord *look, f32 xmin, f32 xmax, f32 ymin, f32 ymax, f32 zmin, f32 zmax);
bool func0f0678f8(struct coord *coord, struct coord *arg1, s32 padnum);
bool func0f06797c(struct coord *coord, f32 arg1, s32 padnum);
bool pos_is_within_padbbox(struct coord *coord, struct coord *arg1, struct coord *pos, struct coord *normal, struct coord *up, struct coord *look, f32 xmin, f32 xmax, f32 ymin, f32 ymax, f32 zmin, f32 zmax);
bool pos_is_within_padding_of_padvol(struct coord *coord, struct coord *arg1, s32 padnum);
bool pos_is_within_dist_of_padvol(struct coord *coord, f32 arg1, s32 padnum);
bool func0f0679ac(struct model *model, f32 *max, f32 *min, f32 arg3[2], f32 arg4[2]);
void model_get_screen_coords_by_axis(struct model *model, f32 *max, f32 *min, s32 axis);
void model_get_screen_coords3(struct model *model, f32 *xmax, f32 *xmin, f32 *ymax, f32 *ymin);
@@ -74,7 +73,7 @@ void embedment_free(struct embedment *embedment);
struct embedment *embedment_allocate(void);
s32 obj_get_shots_taken(struct defaultobj *obj);
s32 obj_get_destroyed_level(struct defaultobj *obj);
struct modelnode *func0f0687e4(struct model *model);
struct modelnode *door_find_dl_node(struct model *model);
struct modelnode *modeldef_find_bbox_node(struct modeldef *modeldef);
struct modelrodata_bbox *modeldef_find_bbox_rodata(struct modeldef *modeldef);
struct modelnode *model_find_bbox_node(struct model *model);
@@ -82,7 +81,7 @@ struct modelrodata_bbox *model_find_bbox_rodata(struct model *model);
struct modelnode *obj_find_bbox_node(struct defaultobj *obj);
struct modelrodata_bbox *obj_find_bbox_rodata(struct defaultobj *obj);
s32 obj_get_average_brightness_in_rooms(RoomNum *rooms, s32 arg1);
s32 door0f068c04(struct prop *prop, s32 *arg1, s32 *arg2);
s32 door_calc_average_brightness(struct prop *prop, s32 *arg1, s32 *arg2);
s32 func0f068fc8(struct prop *prop, bool arg1);
void prop_calculate_shade_colour(struct prop *prop, u8 *nextcol, u16 floorcol);
void prop_calculate_shade_info(struct prop *prop, u8 *nextcol, u16 floorcol);
@@ -295,15 +294,15 @@ bool door_is_obj_in_range(struct doorobj *door, struct defaultobj *obj, bool isb
bool vector_is_in_front_of_door(struct doorobj *door, struct coord *vector);
bool door_is_range_empty(struct doorobj *door);
void doors_check_automatic(void);
void func0f08c424(struct doorobj *door, Mtxf *matrix);
void door_get_mtx(struct doorobj *door, Mtxf *matrix);
void door_get_bbox(struct doorobj *door, struct modelrodata_bbox *dst);
void door_update_tiles(struct doorobj *door);
void door0f08cb20(struct doorobj *door, Vtx *src, Vtx *dst, s32 numvertices);
void func0f08d3dc(struct doorobj *door);
void func0f08d460(struct doorobj *door);
void door_calc_texturemap(struct doorobj *door, Vtx *src, Vtx *dst, s32 numvertices);
void door_calc_vertices_without_cache(struct doorobj *door);
void door_calc_vertices_with_cache(struct doorobj *door);
void door_activate_portal(struct doorobj *door);
void door_deactivate_portal(struct doorobj *door);
struct prop *door_init(struct doorobj *door, struct coord *pos, Mtxf *mtx, RoomNum *rooms, struct coord *coord, struct coord *centre);
struct prop *door_init(struct doorobj *door, struct coord *pos, Mtxf *mtx, RoomNum *rooms, struct coord *slidedist, struct coord *centre);
void door_play_opening_sound(s32 soundtype, struct prop *prop);
void door_play_closing_sound(s32 soundtype, struct prop *prop);
void door_play_opened_sound(s32 soundtype, struct prop *prop);
@@ -325,9 +324,7 @@ bool pos_is_in_draw_distance(struct coord *arg);
void door_create_sparks(struct doorobj *door);
bool door_calc_intended_frac(struct doorobj *door);
void doors_calc_frac(struct doorobj *door);
f32 func0f08f538(f32 x, f32 y);
void door0f08f604(struct doorobj *door, f32 *arg1, f32 *arg2, f32 *arg3, f32 *arg4, bool altcoordsystem);
bool func0f08f968(struct doorobj *door, bool altcoordsystem);
bool door_test_interact_angle(struct doorobj *door, bool altcoordsystem);
bool door_test_for_interact(struct prop *prop);
void doors_activate(struct prop *prop, bool allowliftclose);
bool pos_is_in_front_of_door(struct coord *pos, struct doorobj *door);
+4 -4
View File
@@ -1473,10 +1473,10 @@ struct doorobj { // objtype 0x01
/*0x8c*/ struct coord startpos;
union {
struct {
/*0x98*/ struct coord unk98;
/*0xa4*/ Vtx *unka4;
/*0x98*/ struct coord slidedist;
/*0xa4*/ Vtx *vtxcache;
};
f32 mtx98[3][3];
f32 rotmtx[3][3];
};
/*0xbc*/ struct doorobj *sibling;
/*0xc0*/ s32 lastopen60;
@@ -1485,7 +1485,7 @@ struct doorobj { // objtype 0x01
/*0xc7*/ s8 fadetime60; // counts down
/*0xc8*/ s32 lastcalc60;
/*0xcc*/ u8 laserfade;
/*0xcd*/ u8 unusedmaybe[3];
/*0xcd*/ u8 padding[3];
/*0xd0*/ u8 shadeinfo1[4]; // player 1
/*0xd4*/ u8 shadeinfo2[4]; // player 2
/*0xd8*/ u8 actual1;