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