added screen collisions using an Effect
[physics.git] / src / effectManager.cpp
CommitLineData
f206d19d
PG
1#include "effectManager.h"
2
33b8c69b 3#include "Effects/Effect.h"
f206d19d 4#include "Effects/Gravity.h"
2c18685d 5#include "Effects/Screen.h"
f206d19d 6
33b8c69b
PG
7/// ***** Private Variables *****
8Effect** effects;
9int numEffects;
10
11/// ***** Public Methods *****
12
13void effect::init()
14{
2c18685d 15 numEffects = 2;
33b8c69b
PG
16 effects = new Effect*[numEffects]();
17
18 effects[0] = new Gravity();
2c18685d 19 effects[1] = new Screen();
33b8c69b
PG
20}
21void effect::clean()
22{
23 for(int i=0; i < numEffects; i++)
24 {
25 delete effects[i];
26 }
27
28 delete effects;
29}
f206d19d
PG
30
31Vector2 effect::positionDelta(const PhysicsEntity* e, float time_step)
32{
33b8c69b
PG
33 Vector2 acc(0,0);
34
35 for(int i=0; i < numEffects; i++)
36 {
37 acc += effects[i]->positionDelta(e, time_step);
38 }
39
40 return acc;
f206d19d
PG
41}
42Vector2 effect::velocityDelta(const PhysicsEntity* e, float time_step)
43{
33b8c69b
PG
44 Vector2 acc(0,0);
45
46 for(int i=0; i < numEffects; i++)
47 {
48 acc += effects[i]->velocityDelta(e, time_step);
49 }
50
51 return acc;
f206d19d
PG
52}
53Vector2 effect::forceDelta(const PhysicsEntity* e, float time_step)
54{
33b8c69b
PG
55 Vector2 acc(0,0);
56
57 for(int i=0; i < numEffects; i++)
58 {
59 acc += effects[i]->forceDelta(e, time_step);
60 }
61
62 return acc;
f206d19d 63}