mirror of
https://gitlab.com/ryandwyer/perfect-dark
synced 2026-06-11 13:09:47 -04:00
Identify remaining door functions
This commit is contained in:
@@ -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
@@ -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
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user