1 #include "shake.h"
2 #include "helpers.h"
3
Shake_SimpleRumble(Shake_Effect * effect,float strongPercent,float weakPercent,float secs)4 void Shake_SimpleRumble(Shake_Effect *effect, float strongPercent, float weakPercent, float secs)
5 {
6 Shake_InitEffect(effect, SHAKE_EFFECT_RUMBLE);
7 effect->u.rumble.strongMagnitude = SHAKE_RUMBLE_STRONG_MAGNITUDE_MAX * strongPercent;
8 effect->u.rumble.weakMagnitude = SHAKE_RUMBLE_WEAK_MAGNITUDE_MAX * weakPercent;
9 effect->length = 1000 * secs;
10 effect->delay = 0;
11 }
12
Shake_SimplePeriodic(Shake_Effect * effect,Shake_PeriodicWaveform waveform,float forcePercent,float attackSecs,float sustainSecs,float fadeSecs)13 void Shake_SimplePeriodic(Shake_Effect *effect, Shake_PeriodicWaveform waveform, float forcePercent, float attackSecs, float sustainSecs, float fadeSecs)
14 {
15 Shake_InitEffect(effect, SHAKE_EFFECT_PERIODIC);
16 effect->u.periodic.waveform = waveform;
17 effect->u.periodic.period = 0.1*0x100;
18 effect->u.periodic.magnitude = SHAKE_PERIODIC_MAGNITUDE_MAX * forcePercent;
19 effect->u.periodic.envelope.attackLength = 1000 * attackSecs;
20 effect->u.periodic.envelope.attackLevel = 0;
21 effect->u.periodic.envelope.fadeLength = 1000 * fadeSecs;
22 effect->u.periodic.envelope.fadeLevel = 0;
23 effect->length = 1000 * (sustainSecs + attackSecs + fadeSecs);
24 effect->delay = 0;
25 }
26
Shake_SimpleConstant(Shake_Effect * effect,float forcePercent,float attackSecs,float sustainSecs,float fadeSecs)27 void Shake_SimpleConstant(Shake_Effect *effect, float forcePercent, float attackSecs, float sustainSecs, float fadeSecs)
28 {
29 Shake_InitEffect(effect, SHAKE_EFFECT_CONSTANT);
30 effect->u.constant.level = SHAKE_CONSTANT_LEVEL_MAX * forcePercent;
31 effect->u.constant.envelope.attackLength = 1000 * attackSecs;
32 effect->u.constant.envelope.attackLevel = 0;
33 effect->u.constant.envelope.fadeLength = 1000 * fadeSecs;
34 effect->u.constant.envelope.fadeLevel = 0;
35 effect->length = 1000 * (sustainSecs + attackSecs + fadeSecs);
36 effect->delay = 0;
37 }
38
Shake_SimpleRamp(Shake_Effect * effect,float startForcePercent,float endForcePercent,float attackSecs,float sustainSecs,float fadeSecs)39 void Shake_SimpleRamp(Shake_Effect *effect, float startForcePercent, float endForcePercent, float attackSecs, float sustainSecs, float fadeSecs)
40 {
41 Shake_InitEffect(effect, SHAKE_EFFECT_RAMP);
42 effect->u.ramp.startLevel = SHAKE_RAMP_START_LEVEL_MAX * startForcePercent;
43 effect->u.ramp.endLevel = SHAKE_RAMP_END_LEVEL_MAX * endForcePercent;
44 effect->u.ramp.envelope.attackLength = 1000 * attackSecs;
45 effect->u.ramp.envelope.attackLevel = 0;
46 effect->u.ramp.envelope.fadeLength = 1000 * fadeSecs;
47 effect->u.ramp.envelope.fadeLevel = 0;
48 effect->length = 1000 * (sustainSecs + attackSecs + fadeSecs);
49 effect->delay = 0;
50 }
51