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