GetOilFrictionFactors matches

This commit is contained in:
Dethrace Labs 2025-09-01 09:08:09 +12:00 committed by Dethrace Engineering Department
parent 7aff2e19e5
commit f92a766dfd
2 changed files with 41 additions and 47 deletions

View File

@ -419,46 +419,42 @@ void GetOilFrictionFactors(tCar_spec* pCar, br_scalar* pFl_factor, br_scalar* pF
*pFr_factor = 1.0f;
*pRl_factor = 1.0f;
*pRr_factor = 1.0f;
switch (pCar->driver) {
case eDriver_non_car_unused_slot:
case eDriver_non_car:
return;
default:
break;
}
if (pCar->shadow_intersection_flags != 0) {
for (i = 0; i < COUNT_OF(gOily_spills); i++) {
if (((1 << i) & pCar->shadow_intersection_flags) != 0 && gOily_spills[i].car != NULL) {
BrMatrix34ApplyP(&wheel_world, &pCar->wpos[2], &pCar->car_master_actor->t.t.mat);
if (PointInSpill(&wheel_world, i)) {
pCar->oil_remaining[2] = SRandomBetween(1.5f, 2.5f);
}
BrMatrix34ApplyP(&wheel_world, &pCar->wpos[3], &pCar->car_master_actor->t.t.mat);
if (PointInSpill(&wheel_world, i)) {
pCar->oil_remaining[3] = SRandomBetween(1.5f, 2.5f);
}
BrMatrix34ApplyP(&wheel_world, &pCar->wpos[0], &pCar->car_master_actor->t.t.mat);
if (PointInSpill(&wheel_world, i)) {
pCar->oil_remaining[0] = SRandomBetween(1.5f, 2.5f);
}
BrMatrix34ApplyP(&wheel_world, &pCar->wpos[1], &pCar->car_master_actor->t.t.mat);
if (PointInSpill(&wheel_world, i)) {
pCar->oil_remaining[1] = SRandomBetween(1.5f, 2.5f);
if (pCar->driver > eDriver_non_car) {
if (pCar->shadow_intersection_flags != 0) {
for (i = 0; i < COUNT_OF(gOily_spills); i++) {
if (((1 << i) & pCar->shadow_intersection_flags) != 0 && gOily_spills[i].car != NULL) {
BrMatrix34ApplyP(&wheel_world, &pCar->wpos[2], &pCar->car_master_actor->t.t.mat);
if (PointInSpill(&wheel_world, i)) {
pCar->oil_remaining[2] = SRandomBetween(1.5f, 2.5f);
}
BrMatrix34ApplyP(&wheel_world, &pCar->wpos[3], &pCar->car_master_actor->t.t.mat);
if (PointInSpill(&wheel_world, i)) {
pCar->oil_remaining[3] = SRandomBetween(1.5f, 2.5f);
}
BrMatrix34ApplyP(&wheel_world, &pCar->wpos[0], &pCar->car_master_actor->t.t.mat);
if (PointInSpill(&wheel_world, i)) {
pCar->oil_remaining[0] = SRandomBetween(1.5f, 2.5f);
}
BrMatrix34ApplyP(&wheel_world, &pCar->wpos[1], &pCar->car_master_actor->t.t.mat);
if (PointInSpill(&wheel_world, i)) {
pCar->oil_remaining[1] = SRandomBetween(1.5f, 2.5f);
}
}
}
}
}
if (pCar->oil_remaining[2] != 0.0f) {
*pFl_factor = SRandomBetween(0.01f, 0.15f);
}
if (pCar->oil_remaining[3] != 0.0f) {
*pFr_factor = SRandomBetween(0.01f, 0.15f);
}
if (pCar->oil_remaining[0] != 0.0f) {
*pRl_factor = SRandomBetween(0.01f, 0.15f);
}
if (pCar->oil_remaining[1] != 0.0f) {
*pRr_factor = SRandomBetween(0.01f, 0.15f);
if (pCar->oil_remaining[2] != 0.0f) {
*pFl_factor = SRandomBetween(0.01f, 0.15f);
}
if (pCar->oil_remaining[3] != 0.0f) {
*pFr_factor = SRandomBetween(0.01f, 0.15f);
}
if (pCar->oil_remaining[0] != 0.0f) {
*pRl_factor = SRandomBetween(0.01f, 0.15f);
}
if (pCar->oil_remaining[1] != 0.0f) {
*pRr_factor = SRandomBetween(0.01f, 0.15f);
}
}
}

View File

@ -4824,17 +4824,15 @@ br_uint_32 DelReferencedModels(br_actor* pActor, void* pArg) {
// IDA: void __cdecl DeleteAcc()
// FUNCTION: CARM95 0x004443bb
void DeleteAcc(void) {
if (gLast_actor == NULL) {
return;
if (gLast_actor != NULL) {
AccessoryHeadup(gLast_actor, "Murdered ");
DRActorEnumRecurse(gLast_actor, (br_actor_enum_cbfn*)DelReferencedModels, NULL);
DRActorEnumRecurse(gLast_actor, (br_actor_enum_cbfn*)DelGrooveRef, NULL);
BrActorRemove(gLast_actor);
BrActorFree(gLast_actor);
gLast_actor = NULL;
SaveAdditionalStuff();
}
AccessoryHeadup(gLast_actor, "Murdered ");
DRActorEnumRecurse(gLast_actor, (br_actor_enum_cbfn*)DelReferencedModels, NULL);
DRActorEnumRecurse(gLast_actor, (br_actor_enum_cbfn*)DelGrooveRef, NULL);
BrActorRemove(gLast_actor);
BrActorFree(gLast_actor);
gLast_actor = NULL;
SaveAdditionalStuff();
}
// IDA: br_uint_32 __cdecl OffsetModel(br_actor *pActor, void *pArg)