gravity working through manager
authorPatrik Gornicz <Gornicz.P@gmail.com>
Sat, 2 Aug 2008 00:05:38 +0000 (20:05 -0400)
committerPatrik Gornicz <Gornicz.P@gmail.com>
Sat, 2 Aug 2008 00:05:38 +0000 (20:05 -0400)
src/effectManager.cpp
src/effectManager.h
src/entityManager.cpp
src/game.cpp
src/ticks.cpp

index ab13b25..b661f51 100644 (file)
@@ -1,18 +1,61 @@
 #include "effectManager.h"
 
+#include "Effects/Effect.h"
 #include "Effects/Gravity.h"
 
-Gravity* g = new Gravity();
+/// ***** Private Variables *****
+Effect** effects;
+int numEffects;
+
+/// ***** Public Methods *****
+
+void effect::init()
+{
+    numEffects = 1;
+    effects = new Effect*[numEffects]();
+
+    effects[0] = new Gravity();
+}
+void effect::clean()
+{
+    for(int i=0; i < numEffects; i++)
+    {
+        delete effects[i];
+    }
+
+    delete effects;
+}
 
 Vector2 effect::positionDelta(const PhysicsEntity* e, float time_step)
 {
-    return g->positionDelta(e, time_step);
+    Vector2 acc(0,0);
+
+    for(int i=0; i < numEffects; i++)
+    {
+        acc += effects[i]->positionDelta(e, time_step);
+    }
+
+    return acc;
 }
 Vector2 effect::velocityDelta(const PhysicsEntity* e, float time_step)
 {
-    return g->velocityDelta(e, time_step);
+    Vector2 acc(0,0);
+
+    for(int i=0; i < numEffects; i++)
+    {
+        acc += effects[i]->velocityDelta(e, time_step);
+    }
+
+    return acc;
 }
 Vector2 effect::forceDelta(const PhysicsEntity* e, float time_step)
 {
-    return g->forceDelta(e, time_step);
+    Vector2 acc(0,0);
+
+    for(int i=0; i < numEffects; i++)
+    {
+        acc += effects[i]->forceDelta(e, time_step);
+    }
+
+    return acc;
 }
index e8ba499..0157e24 100644 (file)
@@ -7,6 +7,9 @@
 /// ***** Header Methods *****
 namespace effect
 {
+    void init();
+    void clean();
+
     Vector2 positionDelta(const PhysicsEntity*, float);
     Vector2 velocityDelta(const PhysicsEntity*, float);
     Vector2 forceDelta(const PhysicsEntity*, float);
index f707061..850f70f 100644 (file)
@@ -1,10 +1,9 @@
-#include <set>
-
-#include <iostream>
-
 #include "entityManager.h"
 #include "debug.h"
 
+#include <set>
+#include <iostream>
+
 #include "Entities/Entity.h"
 #include "Entities/Particle.h"
 #include "Entities/PhysicsEntity.h"
index ebf2ba7..1aabda2 100644 (file)
@@ -5,6 +5,7 @@
 using std::vector;
 
 #include "entityCreator.h"
+#include "effectManager.h"
 
 #include "GameStates/GameState.h"
 #include "GameStates/Running.h"
@@ -35,6 +36,8 @@ void gameInit()
 
     active_States.push_back(running);
 
+    effect::init();
+
 #ifdef DEBUGGING
     cout << "World Created" << endl;
 #endif
@@ -42,6 +45,8 @@ void gameInit()
 
 void gameClean()
 {
+    effect::clean();
+
     creator::clean();
 
     delete creating_Polygon;
index f3938d4..6bc200c 100644 (file)
@@ -1,6 +1,7 @@
-#include <sys/time.h>
 #include "ticks.h"
 
+#include <sys/time.h>
+
 /* this file is specific to a UNIX system */
 
 /// ***** Public Methods *****