diff --git a/src/android/app/src/main/java/org/citra/citra_emu/vr/ui/VrRibbonLayer.kt b/src/android/app/src/main/java/org/citra/citra_emu/vr/ui/VrRibbonLayer.kt index 65dd7d199..b91edcbfd 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/vr/ui/VrRibbonLayer.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/vr/ui/VrRibbonLayer.kt @@ -1,5 +1,7 @@ package org.citra.citra_emu.vr.ui +import android.widget.RadioButton +import android.widget.RadioGroup import android.view.KeyEvent import android.view.View import android.widget.Button @@ -8,6 +10,7 @@ import org.citra.citra_emu.NativeLibrary import org.citra.citra_emu.R import org.citra.citra_emu.vr.VrActivity import org.citra.citra_emu.vr.utils.VrMessageQueue +import org.citra.citra_emu.utils.Log class VrRibbonLayer(activity: VrActivity) : VrUILayer(activity, R.layout.vr_ribbon) { @@ -20,6 +23,7 @@ class VrRibbonLayer(activity: VrActivity) : VrUILayer(activity, R.layout.vr_ribb override fun onSurfaceCreated() { super.onSurfaceCreated() + initializeLeftMenu() initializeMainPanel() initializePositionalPanel() } @@ -36,6 +40,24 @@ class VrRibbonLayer(activity: VrActivity) : VrUILayer(activity, R.layout.vr_ribb VrMessageQueue.post(VrMessageQueue.MessageType.CHANGE_LOWER_MENU, 1) } + private fun initializeLeftMenu() { + val radioGroup = window?.findViewById(R.id.vertical_tab) + radioGroup?.setOnCheckedChangeListener { group, checkedId -> + // Loop through all radio buttons in the group + for (i in 0 until group.childCount) { + val btn = group.getChildAt(i) as RadioButton + if (btn.id == checkedId) { + // This button is checked, change the background accordingly + btn.background = activity?.getDrawable( + R.drawable.vr_ribbon_button_pressed) + } else { + // This button is not checked, revert to the default background + btn.background = activity?.getDrawable(R.drawable.vr_ribbon_button_default) + } + } + } + } + private fun initializePositionalPanel() { val horizontalLockToggle = window?.findViewById(R.id.horizontalAxisToggle) horizontalLockToggle?.setOnCheckedChangeListener { _, isChecked -> diff --git a/src/android/app/src/main/jni/vr/layers/GameSurfaceLayer.cpp b/src/android/app/src/main/jni/vr/layers/GameSurfaceLayer.cpp index 8e53f1cc4..db2c0e4d2 100644 --- a/src/android/app/src/main/jni/vr/layers/GameSurfaceLayer.cpp +++ b/src/android/app/src/main/jni/vr/layers/GameSurfaceLayer.cpp @@ -428,7 +428,9 @@ void GameSurfaceLayer::SetTopPanelFromController(const XrVector3f& controllerPos XrVector3f windowPosition = CalculatePanelPosition(viewerPosition, controllerPosition, sphereRadius); if (windowPosition.z >= -0.5f) { return; } - if (XrMath::Vector3f::LengthSq(windowPosition - mLowerPanel.mPanelFromWorld.position) < + if (XrMath::Vector3f::LengthSq( + XrVector3f {windowPosition.x, windowPosition.y, mTopPanel.mInitialPose.position.z} + - mLowerPanel.mPanelFromWorld.position) < XrMath::Vector3f::LengthSq(mTopPanel.mInitialPose.position - mLowerPanel.mInitialPose.position)) { return; diff --git a/src/android/app/src/main/res/layout/vr_ribbon.xml b/src/android/app/src/main/res/layout/vr_ribbon.xml index 8f71064b9..c593c4ca8 100644 --- a/src/android/app/src/main/res/layout/vr_ribbon.xml +++ b/src/android/app/src/main/res/layout/vr_ribbon.xml @@ -23,7 +23,7 @@ + + + + + + + + + - + +