forked from LeenkxTeam/LNXSDK
		
	
		
			
				
	
	
		
			124 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
			
		
		
	
	
			124 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
| package iron;
 | |
| 
 | |
| import iron.object.Object;
 | |
| 
 | |
| class Trait {
 | |
| 
 | |
| 	public var name: String = "";
 | |
| 
 | |
|     /**
 | |
|       Object this trait belongs to.
 | |
|     **/
 | |
| 	public var object: Object;
 | |
| 
 | |
| 	var _add: Array<Void->Void> = null;
 | |
| 	var _init: Array<Void->Void> = null;
 | |
| 	var _remove: Array<Void->Void> = null;
 | |
| 	var _update: Array<Void->Void> = null;
 | |
| 	var _lateUpdate: Array<Void->Void> = null;
 | |
| 	var _render: Array<kha.graphics4.Graphics->Void> = null;
 | |
| 	var _render2D: Array<kha.graphics2.Graphics->Void> = null;
 | |
| 
 | |
| 	public function new() {}
 | |
| 
 | |
|     /**
 | |
|       Remove the trait from the object.
 | |
|     **/
 | |
| 	public function remove() {
 | |
| 		object.removeTrait(this);
 | |
| 	}
 | |
| 
 | |
|     /**
 | |
|       Trait is added to an object.
 | |
|     **/
 | |
| 	public function notifyOnAdd(f: Void->Void) {
 | |
| 		if (_add == null) _add = [];
 | |
| 		_add.push(f);
 | |
| 	}
 | |
| 
 | |
|     /**
 | |
|       Object which this trait belongs to is added to scene.
 | |
|     **/
 | |
| 	public function notifyOnInit(f: Void->Void) {
 | |
| 		if (_init == null) _init = [];
 | |
| 		_init.push(f);
 | |
| 		App.notifyOnInit(f);
 | |
| 	}
 | |
| 
 | |
|     /**
 | |
|       Object which this trait belongs to is removed from scene.
 | |
|     **/
 | |
| 	public function notifyOnRemove(f: Void->Void) {
 | |
| 		if (_remove == null) _remove = [];
 | |
| 		_remove.push(f);
 | |
| 	}
 | |
| 
 | |
|     /**
 | |
|       Add game logic handler.
 | |
|     **/
 | |
| 	public function notifyOnUpdate(f: Void->Void) {
 | |
| 		if (_update == null) _update = [];
 | |
| 		_update.push(f);
 | |
| 		App.notifyOnUpdate(f);
 | |
| 	}
 | |
| 
 | |
|     /**
 | |
|       Remove game logic handler.
 | |
|     **/
 | |
| 	public function removeUpdate(f: Void->Void) {
 | |
| 		_update.remove(f);
 | |
| 		App.removeUpdate(f);
 | |
| 	}
 | |
| 
 | |
|     /**
 | |
|       Add late game logic handler.
 | |
|     **/
 | |
| 	public function notifyOnLateUpdate(f: Void->Void) {
 | |
| 		if (_lateUpdate == null) _lateUpdate = [];
 | |
| 		_lateUpdate.push(f);
 | |
| 		App.notifyOnLateUpdate(f);
 | |
| 	}
 | |
| 
 | |
|     /**
 | |
|       Remove late game logic handler.
 | |
|     **/
 | |
| 	public function removeLateUpdate(f: Void->Void) {
 | |
| 		_lateUpdate.remove(f);
 | |
| 		App.removeLateUpdate(f);
 | |
| 	}
 | |
| 
 | |
|     /**
 | |
|       Add render handler.
 | |
|     **/
 | |
| 	public function notifyOnRender(f: kha.graphics4.Graphics->Void) {
 | |
| 		if (_render == null) _render = [];
 | |
| 		_render.push(f);
 | |
| 		App.notifyOnRender(f);
 | |
| 	}
 | |
| 
 | |
|     /**
 | |
|       Remove render handler.
 | |
|     **/
 | |
| 	public function removeRender(f: kha.graphics4.Graphics->Void) {
 | |
| 		_render.remove(f);
 | |
| 		App.removeRender(f);
 | |
| 	}
 | |
| 
 | |
|     /**
 | |
|       Add 2D render handler.
 | |
|     **/
 | |
| 	public function notifyOnRender2D(f: kha.graphics2.Graphics->Void) {
 | |
| 		if (_render2D == null) _render2D = [];
 | |
| 		_render2D.push(f);
 | |
| 		App.notifyOnRender2D(f);
 | |
| 	}
 | |
| 
 | |
|     /**
 | |
|       Remove 2D render handler.
 | |
|     **/
 | |
| 	public function removeRender2D(f: kha.graphics2.Graphics->Void) {
 | |
| 		_render2D.remove(f);
 | |
| 		App.removeRender2D(f);
 | |
| 	}
 | |
| }
 |