MCPcopy Create free account
hub / github.com/DescentDevelopers/Descent3 / DoForceForRecoil

Function DoForceForRecoil

Descent3/D3ForceFeedback.cpp:472–494  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

470}
471
472void DoForceForRecoil(object *playerobj, object *weap) {
473 weapon *w_ptr = &Weapons[weap->id];
474
475 vector local_norm;
476 float scale;
477#define MIN_RECOIL 1000.0f
478#define MAX_RECOIL 5000.0f
479#define RECOIL_THRESHOLD 1100.0f
480
481 if (w_ptr->recoil_force < RECOIL_THRESHOLD)
482 return;
483
484 vector offset = weap->pos - playerobj->pos;
485 vm_MatrixMulVector(&local_norm, &offset, &playerobj->orient);
486
487 if (weap->movement_type != MT_PHYSICS)
488 return;
489
490 ASSERT(w_ptr->recoil_force >= MIN_RECOIL && w_ptr->recoil_force <= MAX_RECOIL);
491 scale = (w_ptr->recoil_force - MIN_RECOIL) / (MAX_RECOIL - MIN_RECOIL);
492
493 ForceEffectsPlay(FORCE_WEAPON_RECOIL, &scale, &local_norm);
494}
495
496float Force_time_since_last_shake;
497#define SHAKE_TIME 0.2f

Callers 1

CreateAndFireWeaponFunction · 0.85

Calls 2

ForceEffectsPlayFunction · 0.85
vm_MatrixMulVectorFunction · 0.50

Tested by

no test coverage detected