From 3f90b3cc6c9053ae530991ed4bfe6ab3c71ba861 Mon Sep 17 00:00:00 2001 From: amwatson Date: Mon, 25 Mar 2024 02:54:47 -0500 Subject: [PATCH] add horizontal freedom and reset options to positional menu --- .../citra_emu/fragments/EmulationFragment.kt | 7 -- .../citra/citra_emu/vr/ui/VrRibbonLayer.kt | 47 +++++++++--- .../citra_emu/vr/utils/VrMessageQueue.kt | 4 +- .../main/jni/vr/layers/GameSurfaceLayer.cpp | 26 ++++--- .../src/main/jni/vr/layers/GameSurfaceLayer.h | 2 +- .../app/src/main/jni/vr/utils/Common.h | 5 ++ .../app/src/main/jni/vr/utils/MessageQueue.h | 4 +- .../app/src/main/jni/vr/utils/XrMath.h | 4 + src/android/app/src/main/jni/vr/vr_main.cpp | 74 ++++++++++++++----- .../res/layout/vr_ribbon_position_panel.xml | 29 +++----- 10 files changed, 133 insertions(+), 69 deletions(-) diff --git a/src/android/app/src/main/java/org/citra/citra_emu/fragments/EmulationFragment.kt b/src/android/app/src/main/java/org/citra/citra_emu/fragments/EmulationFragment.kt index 23f1b6632..7fb6b0b10 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/fragments/EmulationFragment.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/fragments/EmulationFragment.kt @@ -434,10 +434,6 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback, Choreographer.Fram override fun onResume() { super.onResume() Choreographer.getInstance().postFrameCallback(this) - if (NativeLibrary.isRunning()) { - NativeLibrary.unPauseEmulation() - return - } if (DirectoryInitialization.areCitraDirectoriesReady()) { emulationState.run(emulationActivity.isActivityRecreated) @@ -447,9 +443,6 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback, Choreographer.Fram } override fun onPause() { - if (NativeLibrary.isRunning()) { - emulationState.pause() - } Choreographer.getInstance().removeFrameCallback(this) super.onPause() } 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 38c110a9d..65dd7d199 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 @@ -3,6 +3,7 @@ package org.citra.citra_emu.vr.ui import android.view.KeyEvent import android.view.View import android.widget.Button +import android.widget.ToggleButton import org.citra.citra_emu.NativeLibrary import org.citra.citra_emu.R import org.citra.citra_emu.vr.VrActivity @@ -11,14 +12,16 @@ import org.citra.citra_emu.vr.utils.VrMessageQueue class VrRibbonLayer(activity: VrActivity) : VrUILayer(activity, R.layout.vr_ribbon) { enum class MenuType(val resId: Int) { - MAIN( R.id.main_panel), + MAIN(R.id.main_panel), POSITION(R.id.position_panel) } - private var menuTypeCurrent : MenuType = MenuType.MAIN - override fun onSurfaceCreated() { + private var menuTypeCurrent: MenuType = MenuType.MAIN + + override fun onSurfaceCreated() { super.onSurfaceCreated() - initializeMainView() + initializeMainPanel() + initializePositionalPanel() } fun switchMenus(menuTypeNew: MenuType) { @@ -33,19 +36,37 @@ class VrRibbonLayer(activity: VrActivity) : VrUILayer(activity, R.layout.vr_ribb VrMessageQueue.post(VrMessageQueue.MessageType.CHANGE_LOWER_MENU, 1) } - fun initializeMainView() { + private fun initializePositionalPanel() { + val horizontalLockToggle = window?.findViewById(R.id.horizontalAxisToggle) + horizontalLockToggle?.setOnCheckedChangeListener { _, isChecked -> + VrMessageQueue.post(VrMessageQueue.MessageType.CHANGE_LOCK_HORIZONTAL_AXIS, if (isChecked) 1 else 0) + } + val btnReset = window?.findViewById