Jump to content
  • Advertisement
Sign in to follow this  
Ronin Magus

Release 9 of Dusty Engine

This topic is 4557 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hey all! For a couple years now I've been working on a Task engine for Irrlicht after being inspired by the Enginuity articles here on Gamedev. I called it Dusty Engine, and it is a task engine for Irrlicht. After over 2 years of work, the 9th release of DE is now available for download. If you are a developer who uses Irrlicht and are looking for a way to make controlling objects and login in your game much simpler, check out Dusty Engine. Check it out here: Dusty Engine From my FAQ: What Is DE For? DE is designed for game programmers who use Irrlicht and want a quick and easy way to control many objects using minimal amounts of code. It is inspired by the Engenuity Engine series articles by Richard Fine on GameDev.net. What Does DE Do? DE allows programmers to create "tasks" which do anything the programmer wishes them to do. The tasks are then added to a general tree of tasks, where each task can have as many children tasks as the designer wishes. The "grouping" of tasks allows the programmer/designer to pause/unpause/destroy the parent task, thereby pausing/unpausing/destroying all the children tasks, at one fell swoop. Here is a copy of the changelog for this release.
Dusty Engine A Task Engine for Irrlicht by Dave Andrews http://www.daveandrews.org ====================== Changes in Release 9 ====================== - Thanks much to Michael Taupitz for inspiring many changes to the Entity class. Modifications: -------------- * Rewrote the Entity and EntityParentTask classes. The interface for Entity is exactly the same, except with some additions noted below. In release 8, an entity would create 13 tasks on the task tree, and pause/unpause them to use only the ones it needed. In this release, the Entity only creates 4 tasks on the task tree: a parent, a movement task, a scale task, and a rotate task, and it uses only the different types of tasks as they are needed. The other unnecessary tasks are created in memory but are only present on the tree when they are needed. This change created a dramatic increase in entity performance. * TaskTree will now grab() a task when it is added to the tree. It still drop()s a task when it is destroying. This means that when you add a task to the task tree, you must now call task->drop() on that task: DummyTask * myTask = new DummyTask(); taskTree->AddTask(myTask); myTask->drop(); If you drop the task after adding it to the tree, then the task will be deleted from memory when the tree no longer needs it. * Added a new function to DustyDriver: GetEntityByNode(). This function will return the entity that is associated with the given node. If it fails, it will return NULL. * Added a new ability to Entity class that will cause it to remove() the node it is working with when the entity is destroyed. This allows the programmer to set the node to an entity and not worry about removing it manually from the scene when the enttiy is destroyed. The functions are SetRemoveOnDestroy() and GetRemoveOnDestroy(). This will default to false. * Added functions to Entity class that allow getting the current interpolation value of waypoints. GetMoveWaypointInterpolatinoValue(), GetScaleWaypointInterpolationValue(), and GetRotateWaypointInterpolationValue(). * Added functions to the Entity class which allows you to set the entity to execute tasks multiple times to make up for time passed between the last executions. (See docs for Task class, SetExecuteMultiple.) * Added functions for controlling direction of interpolation in an entity. ReverseMoveInterpolation(), IsMoveInterpolationReversed(), ReverseScaleInterpolation(), IsScaleInterpolationReversed(), ReverseRotateInterpolation(), IsRotateInterpolationReversed(). * Added functions to the Entity class that allow easy addition and removal of non-default tasks to the entity. This can be used in many situations where you want a task to be destroyed or paused or unpaused with the entity. Those functions are AddChildTask() and RemoveChildTask() in the Entity. * Added functions to the Entity class that are accessors for the move type, scale type, and rotate type. I was amazed to see that I had SetMoveType(), SetScaleType() and SetRotateType() but not their accessors, so I added GetMoveType(), GetScaleType(), and GetRotateType(). * Sometimes it is necessary to associate a "Tag" with a task. I've added a field to the Task, which is a string called tag. There are functions GetTag() and SetTag(), that allow you to associate a string with a task. This is not used for any purpose internally. Bugs Fixed: ----------- * Fixed a bug where a node that was being controlled by an entity would become invisible when an entity or the task tree was paused and then unpaused.

Share this post

Link to post
Share on other sites
Sign in to follow this  

  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!