Обновление представления TornadoFX с помощью входов джойстика из JInput - PullRequest
0 голосов
/ 31 мая 2019

Я использую TornadoFX и JInput для тестирования входов контроллера для личного проекта, который я планирую, и до сих пор пытаюсь получить обратную связь в режиме реального времени на экране, когда я вводю данные на контроллере.

Я попытался опрашивать входы с помощью этого поста , но у меня возникают проблемы с получением данных, которые я опрашивал по таймеру для динамического обновления представления. Вот что у меня есть.

import tornadofx.Controller as MVController
import net.java.games.input.Controller as Joystick
import net.java.games.input.ControllerEnvironment
import javafx.animation.AnimationTimer
import tornadofx.*

class Stats : View() {
    private val gamepadController: GamepadController by inject()

    // Prints out changes to controller input in console
    private val timer = object: AnimationTimer() {
        override fun handle(now: Long) {
            gamepadController.controllers.forEach { device ->
                device.poll()
                // println(device.components.joinToString(",") { it.pollData.toString() })
            }
        }
    }

    init { timer.start() }

    // Only updates once
    override val root = vbox {
        gamepadController.controllers.forEach { device ->
            label(device.name)
            label(device.components.joinToString(",") { it.pollData.toString() })
        }
    }
}

class GamepadController : MVController() {
    val controllers: List<Joystick> = ControllerEnvironment
            .getDefaultEnvironment()
            .controllers
            .filter {
                it.type.toString() == "Stick"
            }
}

Возможно, это можно решить с помощью одной из библиотек (rxkotlinfx, rxkotlin, rxjava), которую я учусь использовать в этом проекте. Я хочу знать, какой будет наиболее краткий или многократно используемый способ отображения обновленной информации с джойстиков, возможно, с использованием этих библиотек?

...