diff options
Diffstat (limited to 'engine/flatevolvable.cpp')
-rw-r--r-- | engine/flatevolvable.cpp | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/engine/flatevolvable.cpp b/engine/flatevolvable.cpp new file mode 100644 index 0000000..20dd6dd --- /dev/null +++ b/engine/flatevolvable.cpp @@ -0,0 +1,41 @@ +#include "flatevolvable.h" +#include "flattask.h" +#include "flatland.h" + +FlatEvolvable::FlatEvolvable(bool evolving) + + : task(0) +{ + setEvolving(evolving); +} + +FlatEvolvable::~FlatEvolvable() +{ + if (task) + delete task; +} + +void FlatEvolvable::evolve_task(void *data) +{ + evolve(*(float*)data); +} + +void FlatEvolvable::setEvolving(bool flag) +{ + if (isEvolving() != flag) + { + if (flag) + task = new FlatTask<FlatEvolvable>(this, &FlatEvolvable::evolve_task, (void*)&flatland_dt); + else { + + delete task; + task = 0; + } + } +} + +bool FlatEvolvable::isEvolving() const +{ + return task != 0; +} + |