38 lines
		
	
	
		
			891 B
		
	
	
	
		
			Haxe
		
	
	
	
	
	
		
		
			
		
	
	
			38 lines
		
	
	
		
			891 B
		
	
	
	
		
			Haxe
		
	
	
	
	
	
|  | package kha.input; | ||
|  | 
 | ||
|  | import kha.SystemImpl; | ||
|  | 
 | ||
|  | class Sensor { | ||
|  | 	static var isInited: Bool = false; | ||
|  | 	static var accelerometer: Sensor = new Sensor(); | ||
|  | 	static var gyroscope: Sensor = new Sensor(); | ||
|  | 
 | ||
|  | 	var listeners: Array<Float->Float->Float->Void> = new Array(); | ||
|  | 
 | ||
|  | 	public static function get(type: SensorType): Sensor { | ||
|  | 		switch (type) { | ||
|  | 			case Accelerometer: | ||
|  | 				return accelerometer; | ||
|  | 			case Gyroscope: | ||
|  | 				return gyroscope; | ||
|  | 		} | ||
|  | 	} | ||
|  | 
 | ||
|  | 	public function notify(listener: Float->Float->Float->Void): Void { | ||
|  | 		if (!isInited) { | ||
|  | 			SystemImpl.initSensor(); | ||
|  | 			isInited = true; | ||
|  | 		} | ||
|  | 		listeners.push(listener); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	function new() {} | ||
|  | 
 | ||
|  | 	public static function _changed(type: Int, x: Float, y: Float, z: Float): Void { | ||
|  | 		var sensor = get(type == 0 ? SensorType.Accelerometer : SensorType.Gyroscope); | ||
|  | 		for (listener in sensor.listeners) { | ||
|  | 			listener(x, y, z); | ||
|  | 		} | ||
|  | 	} | ||
|  | } |