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