controller getaxisraw, calibration on startup

This commit is contained in:
minjaesong
2019-04-09 23:42:10 +09:00
parent a5d33da1c9
commit bda58ecebd
6 changed files with 36 additions and 21 deletions

View File

@@ -12,7 +12,7 @@ class GdxControllerAdapter(val c: Controller): TerrarumController {
return c.getButton(index)
}
override fun getAxis(index: Int): Float {
override fun getAxisRaw(index: Int): Float {
return c.getAxis(index)
}

View File

@@ -1,5 +1,8 @@
package net.torvald.terrarum.controller
import net.torvald.terrarum.AppLoader.gamepadDeadzone
import net.torvald.terrarum.AppLoader.getConfigFloatArray
/**
* Created by minjaesong on 2019-02-09.
*/
@@ -40,7 +43,24 @@ interface TerrarumController {
*
* @return 0f..1f for the axis
*/
fun getAxis(index: Int): Float
fun getAxisRaw(index: Int): Float
/**
* Returns deadzone-applied axis value. Deadzone must be stored in the app's config database as the IntArray gamepadaxiszeropoints
*/
fun getAxis(index:Int): Float {
val raw = getAxisRaw(index)
val zero = if (index < 4) getConfigFloatArray("gamepadaxiszeropoints")[index] else 0f
val inDeadzone = Math.abs(raw - zero) < gamepadDeadzone
return if (inDeadzone) 0f else raw
}
fun inDeadzone(axis: Int): Boolean {
val ax = getAxisRaw(axis)
val zero = if (axis < 4) getConfigFloatArray("gamepadaxiszeropoints")[axis] else 0f
return Math.abs(ax - zero) < gamepadDeadzone
}
/**
* ```

View File

@@ -36,7 +36,7 @@ class XinputControllerAdapter(val c: XInputDevice): TerrarumController {
return false
}
override fun getAxis(index: Int): Float {
override fun getAxisRaw(index: Int): Float {
if (c.poll()) {
val axes = c.components.axes