Full height for manual configuration (#1329)

Co-authored-by: lucas lelievre <loucass003@gmail.com>
This commit is contained in:
Butterscotch!
2025-03-16 10:24:22 -04:00
committed by GitHub
parent a0cedde4b7
commit 3f1a794148
8 changed files with 59 additions and 37 deletions

View File

@@ -27,10 +27,9 @@ class BodyProportionError : IAutoBoneError {
}
companion object {
// TODO hip tracker stuff... Hip tracker should be around 3 to 5
// centimeters.
// The headset height is not the full height! This value compensates for the
// offset from the headset height to the user height
// offset from the headset height to the user full height
// From Drillis and Contini (1966)
@JvmField
var eyeHeightToHeightRatio = 0.936f

View File

@@ -18,6 +18,7 @@ import dev.slimevr.protocol.rpc.setup.RPCUtil.getLocalIp
import dev.slimevr.protocol.rpc.status.RPCStatusHandler
import dev.slimevr.protocol.rpc.trackingpause.RPCTrackingPause
import dev.slimevr.tracking.processor.config.SkeletonConfigOffsets
import dev.slimevr.tracking.trackers.TrackerPosition
import dev.slimevr.tracking.trackers.TrackerPosition.Companion.getByBodyPart
import dev.slimevr.tracking.trackers.TrackerStatus
import dev.slimevr.tracking.trackers.TrackerUtils.getTrackerForSkeleton
@@ -490,7 +491,8 @@ class RPCHandler(private val api: ProtocolAPI) : ProtocolHandler<RpcMessageHeade
.createHeightResponse(
fbb,
posTrackers.minOf { it.position.y },
posTrackers.maxOf { it.position.y },
posTrackers.find { it.trackerPosition == TrackerPosition.HEAD }?.position?.y
?: posTrackers.maxOf { it.position.y },
)
} else {
HeightResponse

View File

@@ -1,6 +1,7 @@
package dev.slimevr.tracking.processor.config
import dev.slimevr.VRServer.Companion.instance
import dev.slimevr.VRServer.Companion.instanceInitialized
import dev.slimevr.autobone.AutoBone
import dev.slimevr.autobone.errors.BodyProportionError.Companion.proportionLimitMap
import dev.slimevr.config.ConfigManager
@@ -409,14 +410,14 @@ class SkeletonConfigManager(
// Remove from config to use default if they change in the future.
Arrays.fill(changedToggles, false)
for (value in SkeletonConfigToggles.values) {
instance.configManager
.vrConfig
.skeleton
.getToggles()
.remove(value.configKey)
// Set default in skeleton
setToggle(value, value.defaultValue)
if (instanceInitialized) {
for (value in SkeletonConfigToggles.values) {
instance.configManager
.vrConfig
.skeleton
.getToggles()
.remove(value.configKey)
}
}
}
@@ -432,14 +433,14 @@ class SkeletonConfigManager(
// Remove from config to use default if they change in the future.
Arrays.fill(changedValues, false)
for (value in SkeletonConfigValues.values) {
instance.configManager
.vrConfig
.skeleton
.getValues()
.remove(value.configKey)
// Set default in skeleton
setValue(value, value.defaultValue)
if (instanceInitialized) {
for (value in SkeletonConfigValues.values) {
instance.configManager
.vrConfig
.skeleton
.getValues()
.remove(value.configKey)
}
}
}
@@ -515,6 +516,8 @@ class SkeletonConfigManager(
}
fun save() {
require(instanceInitialized) { "VRServer instance is not initialized, config cannot be saved." }
val skeletonConfig = instance.configManager
.vrConfig
.skeleton