summaryrefslogtreecommitdiffstats
path: root/engine/flatevolvable.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engine/flatevolvable.cpp')
-rw-r--r--engine/flatevolvable.cpp41
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;
+}
+