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