forked from LeenkxTeam/LNXSDK
		
	
		
			
	
	
		
			497 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
		
		
			
		
	
	
			497 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
| 
								 | 
							
								package kha;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import kha.graphics4.TextureFormat;
							 | 
						||
| 
								 | 
							
								import kha.input.Gamepad;
							 | 
						||
| 
								 | 
							
								import kha.input.KeyCode;
							 | 
						||
| 
								 | 
							
								import kha.input.Keyboard;
							 | 
						||
| 
								 | 
							
								import kha.input.Mouse;
							 | 
						||
| 
								 | 
							
								import kha.input.MouseImpl;
							 | 
						||
| 
								 | 
							
								import kha.input.Pen;
							 | 
						||
| 
								 | 
							
								import kha.input.Surface;
							 | 
						||
| 
								 | 
							
								import kha.System;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class SystemImpl {
							 | 
						||
| 
								 | 
							
									static var framebuffer: Framebuffer;
							 | 
						||
| 
								 | 
							
									static var keyboard: Keyboard;
							 | 
						||
| 
								 | 
							
									static var mouse: kha.input.Mouse;
							 | 
						||
| 
								 | 
							
									static var pen: kha.input.Pen;
							 | 
						||
| 
								 | 
							
									static var gamepads: Array<Gamepad>;
							 | 
						||
| 
								 | 
							
									static var surface: Surface;
							 | 
						||
| 
								 | 
							
									static var mouseLockListeners: Array<Void->Void>;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function init(options: SystemOptions, callback: Window->Void): Void {
							 | 
						||
| 
								 | 
							
										haxe.Log.trace = function(v: Dynamic, ?infos: haxe.PosInfos) {
							 | 
						||
| 
								 | 
							
											var message = infos != null ? infos.className + ":" + infos.lineNumber + ": " + v : Std.string(v);
							 | 
						||
| 
								 | 
							
											kinc_log(StringHelper.convert(message));
							 | 
						||
| 
								 | 
							
										};
							 | 
						||
| 
								 | 
							
										init_kore(StringHelper.convert(options.title), options.width, options.height, options.framebuffer.samplesPerPixel, options.framebuffer.verticalSync,
							 | 
						||
| 
								 | 
							
											cast options.window.mode, options.window.windowFeatures);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										new Window(0);
							 | 
						||
| 
								 | 
							
										Scheduler.init();
							 | 
						||
| 
								 | 
							
										Shaders.init();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										var g4 = new kha.korehl.graphics4.Graphics();
							 | 
						||
| 
								 | 
							
										framebuffer = new Framebuffer(0, null, null, g4);
							 | 
						||
| 
								 | 
							
										framebuffer.init(new kha.graphics2.Graphics1(framebuffer), new kha.korehl.graphics4.Graphics2(framebuffer), g4);
							 | 
						||
| 
								 | 
							
										final samplesRef: hl.Ref<Int> = kha.audio2.Audio.samplesPerSecond;
							 | 
						||
| 
								 | 
							
										kinc_init_audio(kha.audio2.Audio._callCallback, kha.audio2.Audio._readSample, samplesRef);
							 | 
						||
| 
								 | 
							
										kha.audio2.Audio.samplesPerSecond = samplesRef.get();
							 | 
						||
| 
								 | 
							
										kha.audio1.Audio._init();
							 | 
						||
| 
								 | 
							
										kha.audio2.Audio._init();
							 | 
						||
| 
								 | 
							
										keyboard = new kha.input.Keyboard();
							 | 
						||
| 
								 | 
							
										mouse = new kha.input.MouseImpl();
							 | 
						||
| 
								 | 
							
										pen = new kha.input.Pen();
							 | 
						||
| 
								 | 
							
										gamepads = new Array<Gamepad>();
							 | 
						||
| 
								 | 
							
										for (i in 0...4) {
							 | 
						||
| 
								 | 
							
											gamepads[i] = new kha.input.Gamepad(i);
							 | 
						||
| 
								 | 
							
											gamepads[i].connected = kinc_gamepad_connected(i);
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										surface = new kha.input.Surface();
							 | 
						||
| 
								 | 
							
										mouseLockListeners = new Array();
							 | 
						||
| 
								 | 
							
										kinc_register_keyboard(keyDown, keyUp, keyPress);
							 | 
						||
| 
								 | 
							
										kinc_register_mouse(mouseDown, mouseUp, mouseMove, mouseWheel);
							 | 
						||
| 
								 | 
							
										kinc_register_pen(penDown, penUp, penMove);
							 | 
						||
| 
								 | 
							
										kinc_register_gamepad(gamepadAxis, gamepadButton);
							 | 
						||
| 
								 | 
							
										kinc_register_surface(touchStart, touchEnd, touchMove);
							 | 
						||
| 
								 | 
							
										kinc_register_sensor(kha.input.Sensor._accelerometerChanged, kha.input.Sensor._gyroscopeChanged);
							 | 
						||
| 
								 | 
							
										kinc_register_callbacks(foreground, resume, pause, background, shutdown);
							 | 
						||
| 
								 | 
							
										kinc_register_dropfiles(dropFiles);
							 | 
						||
| 
								 | 
							
										kinc_register_copycutpaste(copy, cut, paste);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										Scheduler.start();
							 | 
						||
| 
								 | 
							
										callback(Window.get(0));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										run_kore();
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function initEx(title: String, options: Array<WindowOptions>, windowCallback: Int->Void, callback: Void->Void): Void {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									@:keep
							 | 
						||
| 
								 | 
							
									public static function frame(): Void {
							 | 
						||
| 
								 | 
							
										Scheduler.executeFrame();
							 | 
						||
| 
								 | 
							
										System.render([framebuffer]);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										for (i in 0...4) {
							 | 
						||
| 
								 | 
							
											if (gamepads[i].connected && !kinc_gamepad_connected(i)) {
							 | 
						||
| 
								 | 
							
												Gamepad.sendDisconnectEvent(i);
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
											else if (!gamepads[i].connected && kinc_gamepad_connected(i)) {
							 | 
						||
| 
								 | 
							
												Gamepad.sendConnectEvent(i);
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function getTime(): Float {
							 | 
						||
| 
								 | 
							
										return kinc_get_time();
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function windowWidth(windowId: Int): Int {
							 | 
						||
| 
								 | 
							
										return kinc_get_window_width(windowId);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function windowHeight(windowId: Int): Int {
							 | 
						||
| 
								 | 
							
										return kinc_get_window_height(windowId);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function getScreenRotation(): ScreenRotation {
							 | 
						||
| 
								 | 
							
										return ScreenRotation.RotationNone;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function getSystemId(): String {
							 | 
						||
| 
								 | 
							
										final b: hl.Bytes = kinc_get_system_id();
							 | 
						||
| 
								 | 
							
										return @:privateAccess String.fromUTF8(b);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function vibrate(ms: Int): Void {
							 | 
						||
| 
								 | 
							
										kinc_vibrate(ms);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function getLanguage(): String {
							 | 
						||
| 
								 | 
							
										final b: hl.Bytes = kinc_get_language();
							 | 
						||
| 
								 | 
							
										return @:privateAccess String.fromUTF8(b);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function requestShutdown(): Bool {
							 | 
						||
| 
								 | 
							
										kinc_request_shutdown();
							 | 
						||
| 
								 | 
							
										return true;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function getMouse(num: Int): Mouse {
							 | 
						||
| 
								 | 
							
										if (num != 0)
							 | 
						||
| 
								 | 
							
											return null;
							 | 
						||
| 
								 | 
							
										return mouse;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function getPen(num: Int): Pen {
							 | 
						||
| 
								 | 
							
										if (num != 0)
							 | 
						||
| 
								 | 
							
											return null;
							 | 
						||
| 
								 | 
							
										return pen;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function getKeyboard(num: Int): Keyboard {
							 | 
						||
| 
								 | 
							
										if (num != 0)
							 | 
						||
| 
								 | 
							
											return null;
							 | 
						||
| 
								 | 
							
										return keyboard;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function lockMouse(windowId: Int = 0): Void {
							 | 
						||
| 
								 | 
							
										if (!isMouseLocked()) {
							 | 
						||
| 
								 | 
							
											kinc_mouse_lock(windowId);
							 | 
						||
| 
								 | 
							
											for (listener in mouseLockListeners) {
							 | 
						||
| 
								 | 
							
												listener();
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function unlockMouse(windowId: Int = 0): Void {
							 | 
						||
| 
								 | 
							
										if (isMouseLocked()) {
							 | 
						||
| 
								 | 
							
											kinc_mouse_unlock(windowId);
							 | 
						||
| 
								 | 
							
											for (listener in mouseLockListeners) {
							 | 
						||
| 
								 | 
							
												listener();
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function canLockMouse(windowId: Int = 0): Bool {
							 | 
						||
| 
								 | 
							
										return kinc_can_lock_mouse(windowId);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function isMouseLocked(windowId: Int = 0): Bool {
							 | 
						||
| 
								 | 
							
										return kinc_is_mouse_locked(windowId);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function notifyOfMouseLockChange(func: Void->Void, error: Void->Void): Void {
							 | 
						||
| 
								 | 
							
										if (canLockMouse(0) && func != null) {
							 | 
						||
| 
								 | 
							
											mouseLockListeners.push(func);
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function removeFromMouseLockChange(func: Void->Void, error: Void->Void): Void {
							 | 
						||
| 
								 | 
							
										if (canLockMouse(0) && func != null) {
							 | 
						||
| 
								 | 
							
											mouseLockListeners.remove(func);
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function hideSystemCursor(): Void {
							 | 
						||
| 
								 | 
							
										kinc_show_mouse(false);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function showSystemCursor(): Void {
							 | 
						||
| 
								 | 
							
										kinc_show_mouse(true);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function keyDown(code: KeyCode): Void {
							 | 
						||
| 
								 | 
							
										keyboard.sendDownEvent(code);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function keyUp(code: KeyCode): Void {
							 | 
						||
| 
								 | 
							
										keyboard.sendUpEvent(code);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function keyPress(char: Int): Void {
							 | 
						||
| 
								 | 
							
										keyboard.sendPressEvent(String.fromCharCode(char));
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function mouseDown(windowId: Int, button: Int, x: Int, y: Int): Void {
							 | 
						||
| 
								 | 
							
										mouse.sendDownEvent(windowId, button, x, y);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function mouseUp(windowId: Int, button: Int, x: Int, y: Int): Void {
							 | 
						||
| 
								 | 
							
										mouse.sendUpEvent(windowId, button, x, y);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function mouseMove(windowId: Int, x: Int, y: Int, movementX: Int, movementY: Int): Void {
							 | 
						||
| 
								 | 
							
										mouse.sendMoveEvent(windowId, x, y, movementX, movementY);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function mouseWheel(windowId: Int, delta: Int): Void {
							 | 
						||
| 
								 | 
							
										mouse.sendWheelEvent(windowId, delta);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function mouseLeave(windowId: Int): Void {
							 | 
						||
| 
								 | 
							
										mouse.sendLeaveEvent(windowId);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function penDown(windowId: Int, x: Int, y: Int, pressure: Float): Void {
							 | 
						||
| 
								 | 
							
										pen.sendDownEvent(windowId, x, y, pressure);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function penUp(windowId: Int, x: Int, y: Int, pressure: Float): Void {
							 | 
						||
| 
								 | 
							
										pen.sendUpEvent(windowId, x, y, pressure);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function penMove(windowId: Int, x: Int, y: Int, pressure: Float): Void {
							 | 
						||
| 
								 | 
							
										pen.sendMoveEvent(windowId, x, y, pressure);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function gamepadAxis(gamepad: Int, axis: Int, value: FastFloat): Void {
							 | 
						||
| 
								 | 
							
										gamepads[gamepad].sendAxisEvent(axis, value);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function gamepadButton(gamepad: Int, button: Int, value: FastFloat): Void {
							 | 
						||
| 
								 | 
							
										gamepads[gamepad].sendButtonEvent(button, value);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function touchStart(index: Int, x: Int, y: Int): Void {
							 | 
						||
| 
								 | 
							
										surface.sendTouchStartEvent(index, x, y);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function touchEnd(index: Int, x: Int, y: Int): Void {
							 | 
						||
| 
								 | 
							
										surface.sendTouchEndEvent(index, x, y);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function touchMove(index: Int, x: Int, y: Int): Void {
							 | 
						||
| 
								 | 
							
										surface.sendMoveEvent(index, x, y);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function foreground(): Void {
							 | 
						||
| 
								 | 
							
										System.foreground();
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function resume(): Void {
							 | 
						||
| 
								 | 
							
										System.resume();
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function pause(): Void {
							 | 
						||
| 
								 | 
							
										System.pause();
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function background(): Void {
							 | 
						||
| 
								 | 
							
										System.background();
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function shutdown(): Void {
							 | 
						||
| 
								 | 
							
										System.shutdown();
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function dropFiles(filePath: String): Void {
							 | 
						||
| 
								 | 
							
										System.dropFiles(filePath);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function copy(): hl.Bytes {
							 | 
						||
| 
								 | 
							
										if (System.copyListener != null) {
							 | 
						||
| 
								 | 
							
											final text = System.copyListener();
							 | 
						||
| 
								 | 
							
											if (text == null)
							 | 
						||
| 
								 | 
							
												return null;
							 | 
						||
| 
								 | 
							
											return StringHelper.convert(text);
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										else {
							 | 
						||
| 
								 | 
							
											return null;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function cut(): hl.Bytes {
							 | 
						||
| 
								 | 
							
										if (System.cutListener != null) {
							 | 
						||
| 
								 | 
							
											final text = System.cutListener();
							 | 
						||
| 
								 | 
							
											if (text == null)
							 | 
						||
| 
								 | 
							
												return null;
							 | 
						||
| 
								 | 
							
											return StringHelper.convert(text);
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										else {
							 | 
						||
| 
								 | 
							
											return null;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function paste(data: hl.Bytes): Void {
							 | 
						||
| 
								 | 
							
										final text = @:privateAccess String.fromUTF8(data);
							 | 
						||
| 
								 | 
							
										if (System.pasteListener != null) {
							 | 
						||
| 
								 | 
							
											System.pasteListener(text);
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									static var fullscreenListeners: Array<Void->Void> = new Array();
							 | 
						||
| 
								 | 
							
									static var previousWidth: Int = 0;
							 | 
						||
| 
								 | 
							
									static var previousHeight: Int = 0;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function canSwitchFullscreen(): Bool {
							 | 
						||
| 
								 | 
							
										return true;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function isFullscreen(): Bool {
							 | 
						||
| 
								 | 
							
										return kinc_system_is_fullscreen();
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function requestFullscreen(): Void {
							 | 
						||
| 
								 | 
							
										if (!isFullscreen()) {
							 | 
						||
| 
								 | 
							
											previousWidth = kinc_get_window_width(0);
							 | 
						||
| 
								 | 
							
											previousHeight = kinc_get_window_height(0);
							 | 
						||
| 
								 | 
							
											kinc_system_request_fullscreen();
							 | 
						||
| 
								 | 
							
											for (listener in fullscreenListeners) {
							 | 
						||
| 
								 | 
							
												listener();
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function exitFullscreen(): Void {
							 | 
						||
| 
								 | 
							
										if (isFullscreen()) {
							 | 
						||
| 
								 | 
							
											if (previousWidth == 0 || previousHeight == 0) {
							 | 
						||
| 
								 | 
							
												previousWidth = kinc_get_window_width(0);
							 | 
						||
| 
								 | 
							
												previousHeight = kinc_get_window_height(0);
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
											kinc_system_exit_fullscreen(previousWidth, previousHeight);
							 | 
						||
| 
								 | 
							
											for (listener in fullscreenListeners) {
							 | 
						||
| 
								 | 
							
												listener();
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function notifyOfFullscreenChange(func: Void->Void, error: Void->Void): Void {
							 | 
						||
| 
								 | 
							
										if (canSwitchFullscreen() && func != null) {
							 | 
						||
| 
								 | 
							
											fullscreenListeners.push(func);
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function removeFromFullscreenChange(func: Void->Void, error: Void->Void): Void {
							 | 
						||
| 
								 | 
							
										if (canSwitchFullscreen() && func != null) {
							 | 
						||
| 
								 | 
							
											fullscreenListeners.remove(func);
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function changeResolution(width: Int, height: Int): Void {
							 | 
						||
| 
								 | 
							
										kinc_system_change_resolution(width, height);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function setKeepScreenOn(on: Bool): Void {
							 | 
						||
| 
								 | 
							
										kinc_system_set_keepscreenon(on);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function loadUrl(url: String): Void {
							 | 
						||
| 
								 | 
							
										kinc_system_load_url(StringHelper.convert(url));
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function getGamepadId(index: Int): String {
							 | 
						||
| 
								 | 
							
										final b: hl.Bytes = kinc_get_gamepad_id(index);
							 | 
						||
| 
								 | 
							
										return @:privateAccess String.fromUTF8(b);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function getGamepadVendor(index: Int): String {
							 | 
						||
| 
								 | 
							
										final b: hl.Bytes = kinc_get_gamepad_vendor(index);
							 | 
						||
| 
								 | 
							
										return @:privateAccess String.fromUTF8(b);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function setGamepadRumble(index: Int, leftAmount: Float, rightAmount: Float) {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function safeZone(): Float {
							 | 
						||
| 
								 | 
							
										return 1.0;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function login(): Void {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function automaticSafeZone(): Bool {
							 | 
						||
| 
								 | 
							
										return true;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function setSafeZone(value: Float): Void {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function unlockAchievement(id: Int): Void {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function waitingForLogin(): Bool {
							 | 
						||
| 
								 | 
							
										return false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function disallowUserChange(): Void {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function allowUserChange(): Void {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									@:hlNative("std", "init_kore") static function init_kore(title: hl.Bytes, width: Int, height: Int, samplesPerPixel: Int, vSync: Bool, windowMode: Int,
							 | 
						||
| 
								 | 
							
										windowFeatures: Int): Void {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									@:hlNative("std", "run_kore") static function run_kore(): Void {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									@:hlNative("std", "kinc_init_audio") static function kinc_init_audio(callCallback: Int->Void, readSample: Void->FastFloat,
							 | 
						||
| 
								 | 
							
										outSamplesPerSecond: hl.Ref<Int>): Void {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									@:hlNative("std", "kinc_log") static function kinc_log(v: hl.Bytes): Void {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									@:hlNative("std", "kinc_get_time") static function kinc_get_time(): Float {
							 | 
						||
| 
								 | 
							
										return 0;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									@:hlNative("std", "kinc_get_window_width") static function kinc_get_window_width(window: Int): Int {
							 | 
						||
| 
								 | 
							
										return 0;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									@:hlNative("std", "kinc_get_window_height") static function kinc_get_window_height(window: Int): Int {
							 | 
						||
| 
								 | 
							
										return 0;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									@:hlNative("std", "kinc_get_system_id") static function kinc_get_system_id(): hl.Bytes {
							 | 
						||
| 
								 | 
							
										return null;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									@:hlNative("std", "kinc_vibrate") static function kinc_vibrate(ms: Int): Void {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									@:hlNative("std", "kinc_get_language") static function kinc_get_language(): hl.Bytes {
							 | 
						||
| 
								 | 
							
										return null;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									@:hlNative("std", "kinc_request_shutdown") static function kinc_request_shutdown(): Void {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									@:hlNative("std", "kinc_mouse_lock") static function kinc_mouse_lock(windowId: Int): Void {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									@:hlNative("std", "kinc_mouse_unlock") static function kinc_mouse_unlock(windowId: Int): Void {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									@:hlNative("std", "kinc_can_lock_mouse") static function kinc_can_lock_mouse(windowId: Int): Bool {
							 | 
						||
| 
								 | 
							
										return false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									@:hlNative("std", "kinc_is_mouse_locked") static function kinc_is_mouse_locked(windowId: Int): Bool {
							 | 
						||
| 
								 | 
							
										return false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									@:hlNative("std", "kinc_show_mouse") static function kinc_show_mouse(show: Bool): Void {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									@:hlNative("std", "kinc_system_is_fullscreen") static function kinc_system_is_fullscreen(): Bool {
							 | 
						||
| 
								 | 
							
										return false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									@:hlNative("std", "kinc_system_request_fullscreen") static function kinc_system_request_fullscreen(): Void {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									@:hlNative("std", "kinc_system_exit_fullscreen") static function kinc_system_exit_fullscreen(previousWidth: Int, previousHeight: Int): Void {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									@:hlNative("std", "kinc_register_keyboard") static function kinc_register_keyboard(keyDown: KeyCode->Void, keyUp: KeyCode->Void,
							 | 
						||
| 
								 | 
							
										keyPress: Int->Void): Void {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									@:hlNative("std", "kinc_register_mouse") static function kinc_register_mouse(mouseDown: Int->Int->Int->Int->Void, mouseUp: Int->Int->Int->Int->Void,
							 | 
						||
| 
								 | 
							
										mouseMove: Int->Int->Int->Int->Int->Void, mouseWheel: Int->Int->Void): Void {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									@:hlNative("std", "kinc_register_pen") static function kinc_register_pen(penDown: Int->Int->Int->Float->Void, penUp: Int->Int->Int->Float->Void,
							 | 
						||
| 
								 | 
							
										penMove: Int->Int->Int->Float->Void): Void {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									@:hlNative("std", "kinc_register_gamepad") static function kinc_register_gamepad(gamepadAxis: Int->Int->FastFloat->Void,
							 | 
						||
| 
								 | 
							
										gamepadButton: Int->Int->FastFloat->Void): Void {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									@:hlNative("std", "kinc_register_surface") static function kinc_register_surface(touchStart: Int->Int->Int->Void, touchEnd: Int->Int->Int->Void,
							 | 
						||
| 
								 | 
							
										touchMove: Int->Int->Int->Void): Void {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									@:hlNative("std", "kinc_register_sensor") static function kinc_register_sensor(accelerometerChanged: Float->Float->Float->Void,
							 | 
						||
| 
								 | 
							
										gyroscopeChanged: Float->Float->Float->Void): Void {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									@:hlNative("std", "kinc_register_callbacks") static function kinc_register_callbacks(foreground: Void->Void, resume: Void->Void, pause: Void->Void,
							 | 
						||
| 
								 | 
							
										background: Void->Void, shutdown: Void->Void): Void {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									@:hlNative("std", "kinc_register_dropfiles") static function kinc_register_dropfiles(dropFiles: String->Void): Void {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									@:hlNative("std", "kinc_register_copycutpaste") static function kinc_register_copycutpaste(copy: Void->hl.Bytes, cut: Void->hl.Bytes,
							 | 
						||
| 
								 | 
							
										paste: hl.Bytes->Void): Void {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									@:hlNative("std", "kinc_system_change_resolution") static function kinc_system_change_resolution(width: Int, height: Int): Void {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									@:hlNative("std", "kinc_system_set_keepscreenon") static function kinc_system_set_keepscreenon(on: Bool): Void {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									@:hlNative("std", "kinc_system_load_url") static function kinc_system_load_url(url: hl.Bytes): Void {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									@:hlNative("std", "kinc_get_gamepad_id") static function kinc_get_gamepad_id(index: Int): hl.Bytes {
							 | 
						||
| 
								 | 
							
										return null;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									@:hlNative("std", "kinc_get_gamepad_vendor") static function kinc_get_gamepad_vendor(index: Int): hl.Bytes {
							 | 
						||
| 
								 | 
							
										return null;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									@:hlNative("std", "kinc_gamepad_connected") static function kinc_gamepad_connected(index: Int): Bool {
							 | 
						||
| 
								 | 
							
										return false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 |