mirror of
https://github.com/amwatson/CitraVR.git
synced 2024-09-20 03:11:40 +02:00
adding tab layout for switching menus
This commit is contained in:
parent
9daa410609
commit
003590f5ff
3 changed files with 72 additions and 3 deletions
|
@ -1,5 +1,7 @@
|
||||||
package org.citra.citra_emu.vr.ui
|
package org.citra.citra_emu.vr.ui
|
||||||
|
|
||||||
|
import android.widget.RadioButton
|
||||||
|
import android.widget.RadioGroup
|
||||||
import android.view.KeyEvent
|
import android.view.KeyEvent
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.widget.Button
|
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.R
|
||||||
import org.citra.citra_emu.vr.VrActivity
|
import org.citra.citra_emu.vr.VrActivity
|
||||||
import org.citra.citra_emu.vr.utils.VrMessageQueue
|
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) {
|
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() {
|
override fun onSurfaceCreated() {
|
||||||
super.onSurfaceCreated()
|
super.onSurfaceCreated()
|
||||||
|
initializeLeftMenu()
|
||||||
initializeMainPanel()
|
initializeMainPanel()
|
||||||
initializePositionalPanel()
|
initializePositionalPanel()
|
||||||
}
|
}
|
||||||
|
@ -36,6 +40,24 @@ class VrRibbonLayer(activity: VrActivity) : VrUILayer(activity, R.layout.vr_ribb
|
||||||
VrMessageQueue.post(VrMessageQueue.MessageType.CHANGE_LOWER_MENU, 1)
|
VrMessageQueue.post(VrMessageQueue.MessageType.CHANGE_LOWER_MENU, 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun initializeLeftMenu() {
|
||||||
|
val radioGroup = window?.findViewById<RadioGroup>(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() {
|
private fun initializePositionalPanel() {
|
||||||
val horizontalLockToggle = window?.findViewById<ToggleButton>(R.id.horizontalAxisToggle)
|
val horizontalLockToggle = window?.findViewById<ToggleButton>(R.id.horizontalAxisToggle)
|
||||||
horizontalLockToggle?.setOnCheckedChangeListener { _, isChecked ->
|
horizontalLockToggle?.setOnCheckedChangeListener { _, isChecked ->
|
||||||
|
|
|
@ -428,7 +428,9 @@ void GameSurfaceLayer::SetTopPanelFromController(const XrVector3f& controllerPos
|
||||||
XrVector3f windowPosition =
|
XrVector3f windowPosition =
|
||||||
CalculatePanelPosition(viewerPosition, controllerPosition, sphereRadius);
|
CalculatePanelPosition(viewerPosition, controllerPosition, sphereRadius);
|
||||||
if (windowPosition.z >= -0.5f) { return; }
|
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 -
|
XrMath::Vector3f::LengthSq(mTopPanel.mInitialPose.position -
|
||||||
mLowerPanel.mInitialPose.position)) {
|
mLowerPanel.mInitialPose.position)) {
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
android:id="@+id/frame"
|
android:id="@+id/frame"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="1300dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@drawable/vr_menu_background"
|
android:background="@drawable/vr_menu_background"
|
||||||
android:backgroundTint="#011627"
|
android:backgroundTint="#011627"
|
||||||
|
@ -31,6 +31,48 @@
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent">
|
app:layout_constraintTop_toTopOf="parent">
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="150dp"
|
||||||
|
android:layout_height="400dp"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:layout_marginEnd="30dp"
|
||||||
|
app:layout_constraintBottom_toBottomOf="@+id/frame"
|
||||||
|
app:layout_constraintEnd_toStartOf="@+id/panelHolder"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent">
|
||||||
|
|
||||||
|
<RadioGroup
|
||||||
|
android:id="@+id/vertical_tab"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:orientation="vertical">
|
||||||
|
<RadioButton
|
||||||
|
android:id="@+id/menu_main"
|
||||||
|
style="@style/VrRibbonButtonStyle"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:button="@null"
|
||||||
|
android:clipToOutline="true"
|
||||||
|
android:text="Main" />
|
||||||
|
<RadioButton
|
||||||
|
android:id="@+id/menu_positional"
|
||||||
|
style="@style/VrRibbonButtonStyle"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:button="@null"
|
||||||
|
android:clipToOutline="true"
|
||||||
|
android:text="Position" />
|
||||||
|
|
||||||
|
<RadioButton
|
||||||
|
android:id="@+id/menu_stats"
|
||||||
|
style="@style/VrRibbonButtonStyle"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:button="@null"
|
||||||
|
android:clipToOutline="true"
|
||||||
|
android:text="Stats" />
|
||||||
|
</RadioGroup>
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
android:id="@+id/panelHolder"
|
android:id="@+id/panelHolder"
|
||||||
|
@ -43,7 +85,10 @@
|
||||||
app:layout_constraintTop_toTopOf="parent">
|
app:layout_constraintTop_toTopOf="parent">
|
||||||
|
|
||||||
<include layout="@layout/vr_ribbon_main_panel" />
|
<include layout="@layout/vr_ribbon_main_panel" />
|
||||||
<include layout="@layout/vr_ribbon_position_panel" android:visibility="gone" />
|
|
||||||
|
<include
|
||||||
|
layout="@layout/vr_ribbon_position_panel"
|
||||||
|
android:visibility="gone" />
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue