Also, I've created a fairy thorough tutorial which shows how to create a simple task and use it with Dusty Engine, which explains very well it's main purposes and uses.
The focus of this release was the center upon Dusty Engine's task core, allowing the tasks to become more effective, flexible, and useful.
I've fixed several bugs, and made many enhancements. I now consider it to be a stable, reliable, useful task engine!
Here's a copy of the changelog, showing all the modifications, enhancements, and bugfixes.
Code: Select all
Dusty Engine
A Task Engine for Irrlicht
by Dave Andrews
http://www.daveandrews.org
======================
Changes in Version 0.2
======================
Modifications:
--------------
* A big bug was fixed in the pausing of tasks, where they would
not have the correct timedelta when unpaused which led to tasks
being executed sometimes more than they should have. Now tasks
should seamlessly pause and unpause, even if they had been paused
by a propogation of their parent being paused.
* The task tree is now guaranteed to execute a pre-order traversal
of nodes. A parent node will be executed before it's children.
Also, the DoUpdates function allows for the addition of other
styles (such as postorder, but it's not in this release) in
the future.
* All DE classes now use Irrlicht's built-in logger class for
output.
* Tasks' OnUpdate function has been changed to allow more interaction
with Dusty Engine. Each task now receives a pointer to the Dusty
Driver to which the tree belongs. You can use this pointer to get
the random number generator, the time server, and the task tree
itself. This allows all tasks to have all the options to work with
Dusty Engine that the main application has, such as
creating/deleting/pausing/unpausing tasks.
* Tasks' priority is now stored in the task class, rather than in a
node in the task tree. This allows tasks to change their own
priority, and allows anything to change any tasks's priority by
using DustyTaskTree->GetTask(<id>)->SetPriority(<priority>).
* New function in the task tree TaskTree::IsPaused(<task_id>) returns
true if the task identified by task_id is paused, and false if not.
Bugs fixed:
-----------
* A possible segfault when deleting the task tree was fixed. Some
programs crashed at the end of execution. This should fix that
bug.
* Fixed a bug in DeleteNode in the task tree which caused a segfault
when it was sent a NULL pointer.
* Fixed a bug in GetNode which crashed if getting a node which did
not exist.
==============================
Changes in V0.1
==============================
Original release.