Skip to content

BiDuc/eDriven

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

eDriven Framework

Event-driven / asynchronous framework for Unity3d.

Author: Danko Kozar

Concept

  • eDriven framework is the result of 10 years of programming experience, self-education and research.
  • This framework turns Unity into 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.

Event syntax

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);
}

Signal syntax

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)
}

Core classes and utilities

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.

Resources

About

Unity3D Event Driven Framework

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published