Event-driven / asynchronous framework for Unity3d.
- eDriven framework is the result of 10 years of programming experience, self-education and research.
- It is the adapter for Unity to get it to work as an asynchronous system.
- It’s inspired by RIA (Rich Internet Applications) frameworks, such as Apache Flex and other Actionscript and Javascript frameworks.
- The idea behind building a framework was to bring the event-driven (publish-subscribe type of) programming paradigm to Unity.
- There have been a number of libraries for Unity, but I decided to go with my own. That’s because I wanted to build additional libraries upon my event-dispatching system and wanted the total control.
- .NET framework events were not appropriate.
- There are two parallel event-dispatching systems inside eDriven:
1) Signals
2) Events - Signals are inspired by Robert Penner’s Signals and are used for framework internals. Signals are faster than events because there’s no instantiation involved. Also, your class isn’t required to inherit some base (dispatcher) class.
- Events are more common and are inspired by DOM Level 3 Events. They support event bubbling, which is the important feature for GUI. The class that needs to dispatch events must inherit from EventDispatcher class.
button.AddEventListener(MouseEvent.CLICK, ClickHandler);
private void ClickHandler(Event e) // eDriven.Core.Events.Event
{
Button button = e.Target as Button;
Debug.Log("Clicked button with label: " + button.Text);
// or
MouseEvent me = (MouseEvent)e; // we got to know the type of the Event
Point position = me.GlobalPosition;
Debug.Log("Clicked at position: " + position);
}
button.ClickSignal.Connect(ClickSlot);
private void ClickSlot(params object[] parameters)
{
// do something with parameters (we got to know the number of parameters and each one's type)
}
eDriven framework contains a number of classes:
- SystemManager (emits system signals)
- SystemEventDispatcher (dispatches system events)
- MouseEventDispatcher (dispatches mouse events)
- KeyboardMapper (easy mapping for keyboard gestures)
- CallbackQueue (implements queuing of async operations)
- TaskQueue (sequences async operations)
- PowerMapper (maps strings to stuff)
- AudioPlayerMapper (maps strings to AudioPlayers)
- Cache (caches stuff)
- ObjectPool (prevents instantiation and garbage collection problems)
- Timer (handy source of timed events)
- HttpConnector (loads stuff from the web and triggers responders when finished)
- JavascriptConnector (talks with a host web page)
… and many others. They all serve the purpose of the framework: making the asynchronous, event-driven programming possible with Unity.
- eDriven Programming Manual (note: eDriven.Gui and eDriven.Animation also included)
- eDriven API (note: eDriven.Gui and eDriven.Animation also included)
- AssetStore
- Additional downloads
- Videos
- eDriven.Gui site
- Demo site (requires Unity web player)
- Unity Forum thread
- Unity Forum Q&A thread
- Author’s homepage
- I’m @DankoKozar on Twitter.