Decompile objCalculateGeoBlockVertices

This commit is contained in:
Ryan Dwyer
2022-07-22 17:47:23 +10:00
parent 985c164b1c
commit 155691682e
12 changed files with 374 additions and 793 deletions
+7 -7
View File
@@ -11959,7 +11959,7 @@ struct defaultobj *bgunCreateThrownProjectile2(struct chrdata *chr, struct gset
if (obj->hidden & OBJHFLAG_PROJECTILE) {
obj->projectile->flags |= PROJECTILEFLAG_00000002;
obj->projectile->unk08c = 0.1f;
obj->projectile->unk0b4 = TICKS(240);
obj->projectile->pickuptimer240 = TICKS(240);
propsnd0f0939f8(NULL, obj->prop, SFX_THROW, -1,
-1, 0, 0, 0, NULL, -1, NULL, -1, -1, -1, -1);
@@ -12168,7 +12168,7 @@ void bgunCreateThrownProjectile(s32 handnum, struct gset *gset)
// but in practice it's always set.
weapon->base.projectile->flags |= PROJECTILEFLAG_00000002;
weapon->base.projectile->unk08c = 0.1f;
weapon->base.projectile->unk0b4 = TICKS(240);
weapon->base.projectile->pickuptimer240 = TICKS(240);
weapon->base.hidden |= OBJHFLAG_00000020;
}
}
@@ -12452,7 +12452,7 @@ void bgunCreateFiredProjectile(s32 handnum)
weapon->base.projectile->unk010 = sp250.x;
weapon->base.projectile->unk014 = sp250.y;
weapon->base.projectile->unk018 = sp250.z;
weapon->base.projectile->unk0b4 = TICKS(240);
weapon->base.projectile->pickuptimer240 = TICKS(240);
weapon->base.projectile->unk08c = funcdef->unk5c;
weapon->base.projectile->unk098 = funcdef->unk50 * 1.6666666f;
@@ -12528,7 +12528,7 @@ void bgunCreateFiredProjectile(s32 handnum)
weapon->base.projectile->unk010 = sp250.x;
weapon->base.projectile->unk014 = sp250.y;
weapon->base.projectile->unk018 = sp250.z;
weapon->base.projectile->unk0b4 = TICKS(240);
weapon->base.projectile->pickuptimer240 = TICKS(240);
weapon->base.projectile->unk08c = funcdef->unk5c;
weapon->base.projectile->unk098 = funcdef->unk50 * 1.6666666f;
@@ -14004,7 +14004,7 @@ bool bgunIsMissionCritical(s32 weaponnum)
}
#endif
void bgunLoseGun(struct prop *attackerprop)
void bgunDisarm(struct prop *attackerprop)
{
struct player *player = g_Vars.currentplayer;
s32 weaponnum = player->hands[0].gset.weaponnum;
@@ -14070,8 +14070,8 @@ void bgunLoseGun(struct prop *attackerprop)
objSetDropped(prop2, DROPTYPE_DEFAULT);
if (obj->hidden & OBJHFLAG_PROJECTILE) {
obj->projectile->unk0b4 = TICKS(240);
obj->projectile->unk108 = attackerprop;
obj->projectile->pickuptimer240 = TICKS(240);
obj->projectile->pickupby = attackerprop;
}
objDrop(prop2, true);
+5 -5
View File
@@ -1669,7 +1669,7 @@ glabel var7f1b8ea8
//
// if ((obj->hidden & OBJHFLAG_PROJECTILE)
// && obj->projectile
// && obj->projectile->unk0b4 > 0
// && obj->projectile->pickuptimer240 > 0
// && obj->projectile->bouncecount == 0) {
// return false;
// }
@@ -1862,7 +1862,7 @@ void botCheckPickups(struct chrdata *chr)
{
if ((obj->hidden & OBJHFLAG_PROJECTILE) == 0
|| obj->projectile == NULL
|| obj->projectile->unk0b4 <= 0
|| obj->projectile->pickuptimer240 <= 0
|| obj->projectile->bouncecount != 0) {
if (botIsObjCollectable(obj)) {
if (botTestPropForPickup(prop, chr)) {
@@ -3439,7 +3439,7 @@ void botApplyScenarioCommand(struct chrdata *chr, u32 command)
chr->aibot->forcemainloop = true;
}
void botLoseGun(struct chrdata *chr, struct prop *attackerprop)
void botDisarm(struct chrdata *chr, struct prop *attackerprop)
{
if (chr->aibot->weaponnum >= WEAPON_FALCON2 && chr->aibot->weaponnum != WEAPON_BRIEFCASE2) {
struct prop *prop = NULL;
@@ -3470,8 +3470,8 @@ void botLoseGun(struct chrdata *chr, struct prop *attackerprop)
chr->hidden |= CHRHFLAG_00000001;
if (obj->hidden & OBJHFLAG_PROJECTILE) {
obj->projectile->unk0b4 = TICKS(240);
obj->projectile->unk108 = attackerprop;
obj->projectile->pickuptimer240 = TICKS(240);
obj->projectile->pickupby = attackerprop;
}
}
+1 -1
View File
@@ -530,7 +530,7 @@ void botactCreateSlayerRocket(struct chrdata *chr)
rocket->base.projectile->unk014 = xrot;
rocket->base.projectile->unk018 = yrot;
rocket->base.projectile->smoketimer240 = 0;
rocket->base.projectile->unk0b4 = 0x20000000;
rocket->base.projectile->pickuptimer240 = 0x20000000;
// Fire rocket sound
propsnd0f0939f8(NULL, rocket->base.prop, SFX_LAUNCH_ROCKET_8053, -1,
+6 -6
View File
@@ -4367,7 +4367,7 @@ void chrDamage(struct chrdata *chr, f32 damage, struct coord *vector, struct gse
}
// Disarm only hurts the victim in solo missions and if the victim is an NPC
if (gsetHasFunctionFlags(gset, FUNCFLAG_DROPWEAPON)
if (gsetHasFunctionFlags(gset, FUNCFLAG_DISARM)
&& gset->weaponnum == WEAPON_UNARMED
&& (vprop->type == PROPTYPE_PLAYER || g_Vars.normmplayerisrunning)) {
damage = 0;
@@ -4749,8 +4749,8 @@ void chrDamage(struct chrdata *chr, f32 damage, struct coord *vector, struct gse
f32 boostscale;
// Handle player losing gun
if (gsetHasFunctionFlags(gset, FUNCFLAG_DROPWEAPON)) {
bgunLoseGun(aprop);
if (gsetHasFunctionFlags(gset, FUNCFLAG_DISARM)) {
bgunDisarm(aprop);
}
// Handle player dizziness
@@ -4852,10 +4852,10 @@ void chrDamage(struct chrdata *chr, f32 damage, struct coord *vector, struct gse
// NPC was alive prior to being shot.
// Handle aibot/chr losing gun
if (gsetHasFunctionFlags(gset, FUNCFLAG_DROPWEAPON)
if (gsetHasFunctionFlags(gset, FUNCFLAG_DISARM)
&& ((chr->flags & CHRFLAG0_CANLOSEGUN) || chr->aibot)) {
if (chr->aibot) {
botLoseGun(chr, aprop);
botDisarm(chr, aprop);
} else {
weapon = chrGetHeldProp(chr, HAND_RIGHT);
@@ -18148,7 +18148,7 @@ glabel var7f1a9184
// projectileobj->base.projectile->unk014 = sp15c.y;
// projectileobj->base.projectile->unk018 = sp15c.z;
//
// projectileobj->base.projectile->unk0b4 = 240;
// projectileobj->base.projectile->pickuptimer240 = 240;
// projectileobj->base.projectile->unk08c = func->unk5c;
// projectileobj->base.projectile->unk098 = func->unk50 * (1.0f / 0.6f);
//
+3 -3
View File
@@ -255,7 +255,7 @@ struct weaponfunc_close invfunc_unarmed_disarm = {
-1, // unk07
&invnoisesettings_00010fd0,
invanim_punch, // fire animation
FUNCFLAG_MAKEDIZZY | FUNCFLAG_DROPWEAPON | FUNCFLAG_NOMUZZLEFLASH | FUNCFLAG_BLUNTIMPACT | FUNCFLAG_NOSTUN | FUNCFLAG_00400000,
FUNCFLAG_MAKEDIZZY | FUNCFLAG_DISARM | FUNCFLAG_NOMUZZLEFLASH | FUNCFLAG_BLUNTIMPACT | FUNCFLAG_NOSTUN | FUNCFLAG_00400000,
0.3, // damage
60,
0x00000069,
@@ -3428,7 +3428,7 @@ struct weaponfunc_throw invfunc_nbomb_throw = {
0, // unk07
&invnoisesettings_00010fd0,
invanim_grenade_throw, // fire animation
FUNCFLAG_NOAUTOAIM | FUNCFLAG_MAKEDIZZY | FUNCFLAG_DROPWEAPON | FUNCFLAG_NOMUZZLEFLASH,
FUNCFLAG_NOAUTOAIM | FUNCFLAG_MAKEDIZZY | FUNCFLAG_DISARM | FUNCFLAG_NOMUZZLEFLASH,
0x00000110,
240, // activatetime60
60, // recoverytime60
@@ -3442,7 +3442,7 @@ struct weaponfunc_throw invfunc_nbomb_proxy = {
0, // unk07
&invnoisesettings_00010fd0,
invanim_grenade_throw, // fire animation
FUNCFLAG_NOAUTOAIM | FUNCFLAG_MAKEDIZZY | FUNCFLAG_DROPWEAPON | FUNCFLAG_NOMUZZLEFLASH,
FUNCFLAG_NOAUTOAIM | FUNCFLAG_MAKEDIZZY | FUNCFLAG_DISARM | FUNCFLAG_NOMUZZLEFLASH,
0x00000110,
240, // activatetime60
60, // recoverytime60
+318 -737
View File
File diff suppressed because it is too large Load Diff
+6 -6
View File
@@ -165,13 +165,13 @@ bool setupGetObjBbox(struct defaultobj *obj, struct coord *pos, f32 realrot[3][3
struct modelrodata_bbox *bbox = objFindBboxRodata(obj);
if (bbox != NULL) {
arg3->x = pos->x + func0f0668fc(bbox, realrot);
arg3->y = pos->y + func0f06695c(bbox, realrot);
arg3->z = pos->z + func0f0669bc(bbox, realrot);
arg3->x = pos->x + objGetRotatedLocalXMinByMtx3(bbox, realrot);
arg3->y = pos->y + objGetRotatedLocalYMinByMtx3(bbox, realrot);
arg3->z = pos->z + objGetRotatedLocalZMinByMtx3(bbox, realrot);
arg4->x = pos->x + func0f06692c(bbox, realrot);
arg4->y = pos->y + func0f06698c(bbox, realrot);
arg4->z = pos->z + func0f0669ec(bbox, realrot);
arg4->x = pos->x + objGetRotatedLocalXMaxByMtx3(bbox, realrot);
arg4->y = pos->y + objGetRotatedLocalYMaxByMtx3(bbox, realrot);
arg4->z = pos->z + objGetRotatedLocalZMaxByMtx3(bbox, realrot);
return true;
}
+1 -1
View File
@@ -979,7 +979,7 @@
#define FUNCFLAG_NOAUTOAIM 0x00000040
#define FUNCFLAG_STICKTOWALL 0x00000100
#define FUNCFLAG_MAKEDIZZY 0x00000200
#define FUNCFLAG_DROPWEAPON 0x00000400
#define FUNCFLAG_DISARM 0x00000400
#define FUNCFLAG_FLYBYWIRE 0x00000800
#define FUNCFLAG_BURST2 0x00001000
#define FUNCFLAG_NOMUZZLEFLASH 0x00002000
+1 -1
View File
@@ -117,7 +117,7 @@ void bgun0f0a24f0(struct coord *arg0, s32 handnum);
bool bgun0f0a27c8(void);
void bgunHandlePlayerDead(void);
bool bgunIsMissionCritical(s32 weaponnum);
void bgunLoseGun(struct prop *attacker);
void bgunDisarm(struct prop *attacker);
void bgunExecuteModelCmdList(s32 *arg0);
s32 bgunCreateModelCmdList(struct model *model, struct modelnode *node, s32 *ptr);
void bgunStartDetonateAnimation(s32 playernum);
+1 -1
View File
@@ -26,7 +26,7 @@ void bot0f1921f8(struct chrdata *chr, f32 *move, s32 numupdates, f32 arg3);
void bot0f1921f8(struct chrdata *chr, f32 *move);
#endif
void botLoseGun(struct chrdata *chr, struct prop *attacker);
void botDisarm(struct chrdata *chr, struct prop *attacker);
void botSetTarget(struct chrdata *chr, s32 propnum);
bool botIsTargetInvisible(struct chrdata *botchr, struct chrdata *otherchr);
bool botHasGround(struct chrdata *chr);
+23 -23
View File
@@ -30,29 +30,29 @@ bool doorCallLift(struct prop *doorprop, bool allowclose);
bool doorIsPadlockFree(struct doorobj *door);
bool objCanPickupFromSafe(struct defaultobj *obj);
void objUpdateLinkedScenery(struct defaultobj *obj, struct prop *prop);
f32 modelBboxGetXMin(struct modelrodata_bbox *bbox);
f32 modelBboxGetXMax(struct modelrodata_bbox *bbox);
f32 modelBboxGetYMin(struct modelrodata_bbox *bbox);
f32 modelBboxGetYMax(struct modelrodata_bbox *bbox);
f32 modelBboxGetZMin(struct modelrodata_bbox *bbox);
f32 modelBboxGetZMax(struct modelrodata_bbox *bbox);
f32 func0f0667dc(struct modelrodata_bbox *bbox, Mtxf *mtx);
f32 func0f06680c(struct modelrodata_bbox *bbox, Mtxf *mtx);
f32 func0f06683c(struct modelrodata_bbox *bbox, Mtxf *mtx);
f32 func0f06686c(struct modelrodata_bbox *bbox, Mtxf *mtx);
f32 func0f06689c(struct modelrodata_bbox *bbox, Mtxf *mtx);
f32 func0f0668cc(struct modelrodata_bbox *bbox, Mtxf *mtx);
f32 func0f0668fc(struct modelrodata_bbox *bbox, f32 realrot[3][3]);
f32 func0f06692c(struct modelrodata_bbox *bbox, f32 realrot[3][3]);
f32 func0f06695c(struct modelrodata_bbox *bbox, f32 realrot[3][3]);
f32 func0f06698c(struct modelrodata_bbox *bbox, f32 realrot[3][3]);
f32 func0f0669bc(struct modelrodata_bbox *bbox, f32 realrot[3][3]);
f32 func0f0669ec(struct modelrodata_bbox *bbox, f32 realrot[3][3]);
f32 func0f066a1c(struct modelrodata_bbox *bbox, f32 arg1, f32 arg2, f32 arg3);
f32 func0f066abc(struct modelrodata_bbox *bbox, f32 arg1, f32 arg2, f32 arg3);
s32 func0f066b5c(f32 xmin, f32 xmax, f32 ymin, f32 ymax, f32 zmin, f32 zmax, Mtxf *mtx, struct geoblock *tile);
void func0f067424(struct modelrodata_bbox *bbox, Mtxf *mtx, struct geoblock *block);
void func0f0674bc(struct modelrodata_type19 *rodata19, struct modelrodata_bbox *bbox, Mtxf *mtx, struct geoblock *block);
f32 objGetLocalXMin(struct modelrodata_bbox *bbox);
f32 objGetLocalXMax(struct modelrodata_bbox *bbox);
f32 objGetLocalYMin(struct modelrodata_bbox *bbox);
f32 objGetLocalYMax(struct modelrodata_bbox *bbox);
f32 objGetLocalZMin(struct modelrodata_bbox *bbox);
f32 objGetLocalZMax(struct modelrodata_bbox *bbox);
f32 objGetRotatedLocalXMinByMtx4(struct modelrodata_bbox *bbox, Mtxf *mtx);
f32 objGetRotatedLocalXMaxByMtx4(struct modelrodata_bbox *bbox, Mtxf *mtx);
f32 objGetRotatedLocalYMinByMtx4(struct modelrodata_bbox *bbox, Mtxf *mtx);
f32 objGetRotatedLocalYMaxByMtx4(struct modelrodata_bbox *bbox, Mtxf *mtx);
f32 objGetRotatedLocalZMinByMtx4(struct modelrodata_bbox *bbox, Mtxf *mtx);
f32 objGetRotatedLocalZMaxByMtx4(struct modelrodata_bbox *bbox, Mtxf *mtx);
f32 objGetRotatedLocalXMinByMtx3(struct modelrodata_bbox *bbox, f32 realrot[3][3]);
f32 objGetRotatedLocalXMaxByMtx3(struct modelrodata_bbox *bbox, f32 realrot[3][3]);
f32 objGetRotatedLocalYMinByMtx3(struct modelrodata_bbox *bbox, f32 realrot[3][3]);
f32 objGetRotatedLocalYMaxByMtx3(struct modelrodata_bbox *bbox, f32 realrot[3][3]);
f32 objGetRotatedLocalZMinByMtx3(struct modelrodata_bbox *bbox, f32 realrot[3][3]);
f32 objGetRotatedLocalZMaxByMtx3(struct modelrodata_bbox *bbox, f32 realrot[3][3]);
f32 objGetRotatedLocalMin(struct modelrodata_bbox *bbox, f32 arg1, f32 arg2, f32 arg3);
f32 objGetRotatedLocalMax(struct modelrodata_bbox *bbox, f32 arg1, f32 arg2, f32 arg3);
s32 objCalculateGeoBlockVertices(f32 xmin, f32 xmax, f32 ymin, f32 ymax, f32 zmin, f32 zmax, Mtxf *mtx, struct geoblock *block);
void objCalculateGeoBlockFromBboxAndMtx(struct modelrodata_bbox *bbox, Mtxf *mtx, struct geoblock *block);
void objCalculateGeoBlockFromNode19Data(struct modelrodata_type19 *rodata19, 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);
+2 -2
View File
@@ -1353,7 +1353,7 @@ struct projectile {
/*0x0ac*/ f32 unk0ac;
/*0x0b0*/ s16 droptype;
/*0x0b2*/ s16 powerlimit240;
/*0x0b4*/ s32 unk0b4;
/*0x0b4*/ s32 pickuptimer240;
/*0x0b8*/ f32 unk0b8[3];
/*0x0c4*/ struct coord nextsteppos;
/*0x0d0*/ s32 losttimer240;
@@ -1369,7 +1369,7 @@ struct projectile {
/*0x0f8*/ s16 waypads[6];
/*0x104*/ u8 numwaypads;
/*0x105*/ u8 step;
/*0x108*/ struct prop *unk108;
/*0x108*/ struct prop *pickupby;
};
struct embedment {