[Change] Made force feedback system a little more robust.
This commit is contained in:
parent
9b4175d5a1
commit
521514ba7e
11
src/spfx.c
11
src/spfx.c
@ -87,7 +87,7 @@ static void spfx_destroy(SPFX* layer, int* nlayer, int spfx);
|
|||||||
static void spfx_update_layer(SPFX* layer, int* nlayer, const double dt);
|
static void spfx_update_layer(SPFX* layer, int* nlayer, const double dt);
|
||||||
/* Haptic. */
|
/* Haptic. */
|
||||||
static int spfx_hapticInit(void);
|
static int spfx_hapticInit(void);
|
||||||
static void spfx_hapticRumble(void);
|
static void spfx_hapticRumble(double mod);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Load an SPFX_Base into the stack based on some params.
|
* @brief Load an SPFX_Base into the stack based on some params.
|
||||||
@ -374,7 +374,7 @@ void spfx_shake(double mod) {
|
|||||||
vect_pset(&shake_vel, SHAKE_VEL_MOD*shake_rad, RNGF() * 2. * M_PI);
|
vect_pset(&shake_vel, SHAKE_VEL_MOD*shake_rad, RNGF() * 2. * M_PI);
|
||||||
|
|
||||||
/* Rumble if it wasn't rumbling before. */
|
/* Rumble if it wasn't rumbling before. */
|
||||||
spfx_hapticRumble();
|
spfx_hapticRumble(mod);
|
||||||
|
|
||||||
/* Notify that rumble is active. */
|
/* Notify that rumble is active. */
|
||||||
shake_off = 0;
|
shake_off = 0;
|
||||||
@ -409,15 +409,16 @@ static int spfx_hapticInit(void) {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Run a rumble effect.
|
* @brief Run a rumble effect.
|
||||||
|
* @param mod Current modifier being added.
|
||||||
*/
|
*/
|
||||||
static void spfx_hapticRumble(void) {
|
static void spfx_hapticRumble(double mod) {
|
||||||
#if SDL_VERSION_ATLEAST(1,3,0)
|
#if SDL_VERSION_ATLEAST(1,3,0)
|
||||||
SDL_HapticEffect* efx;
|
SDL_HapticEffect* efx;
|
||||||
double len, mag;
|
double len, mag;
|
||||||
|
|
||||||
if(haptic_rumble >= 0) {
|
if(haptic_rumble >= 0) {
|
||||||
/* Not time to update yet. */
|
/* Not time to update yet. */
|
||||||
if((haptic_lastUpdate > 0.) || shake_off)
|
if((haptic_lastUpdate > 0.) || shake_off || (mod > SHAKE_MAX/3.))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* Stop the effect if it was playing. */
|
/* Stop the effect if it was playing. */
|
||||||
@ -443,6 +444,8 @@ static void spfx_hapticRumble(void) {
|
|||||||
/* Set timer again. */
|
/* Set timer again. */
|
||||||
haptic_lastUpdate = HAPTIC_UPDATE_INTERVAL;
|
haptic_lastUpdate = HAPTIC_UPDATE_INTERVAL;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
(void)mod;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user