projects
/
physics.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
effects are now stored in a set, improved grav well control
[physics.git]
/
src
/
effectManager.cpp
diff --git
a/src/effectManager.cpp
b/src/effectManager.cpp
index
b77fc1d
..
c59decc
100644
(file)
--- a/
src/effectManager.cpp
+++ b/
src/effectManager.cpp
@@
-17,6
+17,8
@@
#include "effectManager.h"
#include "effectManager.h"
+#include <set>
+
#include "Effects/Effect.h"
#include "Effects/Gravity.h"
#include "Effects/GravityWell.h"
#include "Effects/Effect.h"
#include "Effects/Gravity.h"
#include "Effects/GravityWell.h"
@@
-28,8
+30,8
@@
/// ***** Private Variables *****
/// ***** Private Variables *****
-
Effect** effects
;
-
int num
Effects;
+
typedef std::set<Effect*> setEffect
;
+
setEffect active_
Effects;
GravityWell* mouseWell;
GravityWell* mouseWell;
@@
-37,23
+39,20
@@
GravityWell* mouseWell;
void effect::init()
{
void effect::init()
{
- numEffects = 3;
- effects = new Effect*[numEffects]();
-
mouseWell = new GravityWell(input::mousePosition());
mouseWell = new GravityWell(input::mousePosition());
-
effects[0] = new Screen(
);
-
effects[1] = new Gravity(
);
-
effects[2] = mouseWell
;
+
active_Effects.insert(new Screen()
);
+
active_Effects.insert(new Gravity()
);
+
active_Effects.insert(mouseWell)
;
}
void effect::clean()
{
}
void effect::clean()
{
- for(int i=0; i < numEffects; i++)
+ for( setEffect::iterator it = active_Effects.begin();
+ it != active_Effects.end();
+ it++ )
{
{
- delete effects[i];
+ // TODO !!!!!!!!!
}
}
-
- delete[] effects;
}
/// ***** Public Methods *****
}
/// ***** Public Methods *****
@@
-64,24
+63,24
@@
void effect::update(float)
}
void effect::handleInput()
{
}
void effect::handleInput()
{
- if(cfg::mouseWellOn())
- {
- numEffects = 3;
+ if(cfg::mouseWellFollow())
mouseWell->setPosition(input::mousePosition());
mouseWell->setPosition(input::mousePosition());
- }
- else
- {
- numEffects = 2;
- }
+
+ if(cfg::mouseWellOn())
+ active_Effects.insert(mouseWell);
+ if(cfg::mouseWellOff())
+ active_Effects.erase(mouseWell);
}
Vector2 effect::positionDelta(const PhysicsEntity* e, float time_step)
{
Vector2 acc(0,0);
}
Vector2 effect::positionDelta(const PhysicsEntity* e, float time_step)
{
Vector2 acc(0,0);
- for(int i=0; i < numEffects; i++)
+ for( setEffect::iterator it = active_Effects.begin();
+ it != active_Effects.end();
+ it++ )
{
{
- acc +=
effects[i]
->positionDelta(e, time_step);
+ acc +=
(*it)
->positionDelta(e, time_step);
}
return acc;
}
return acc;
@@
-90,9
+89,11
@@
Vector2 effect::velocityDelta(const PhysicsEntity* e, float time_step)
{
Vector2 acc(0,0);
{
Vector2 acc(0,0);
- for(int i=0; i < numEffects; i++)
+ for( setEffect::iterator it = active_Effects.begin();
+ it != active_Effects.end();
+ it++ )
{
{
- acc +=
effects[i]
->velocityDelta(e, time_step);
+ acc +=
(*it)
->velocityDelta(e, time_step);
}
return acc;
}
return acc;
@@
-101,9
+102,11
@@
Vector2 effect::forceDelta(const PhysicsEntity* e, float time_step)
{
Vector2 acc(0,0);
{
Vector2 acc(0,0);
- for(int i=0; i < numEffects; i++)
+ for( setEffect::iterator it = active_Effects.begin();
+ it != active_Effects.end();
+ it++ )
{
{
- acc +=
effects[i]
->forceDelta(e, time_step);
+ acc +=
(*it)
->forceDelta(e, time_step);
}
return acc;
}
return acc;