# Released under the MIT License. See LICENSE for details.
#
"""Provides UI for testing vr settings."""
from __future__ import annotations
from typing import TYPE_CHECKING
import bauiv1 as bui
from bauiv1lib.settings.testing import TestingWindow
if TYPE_CHECKING:
from typing import Any
[docs]
class VRTestingWindow(TestingWindow):
"""Window for testing vr settings."""
def __init__(self, transition: str = 'in_right'):
entries: list[dict[str, Any]] = []
app = bui.app
assert app.classic is not None
# These are gear-vr only.
if (
app.classic.platform == 'android'
and app.classic.subplatform == 'oculus'
):
entries += [
{
'name': 'timeWarpDebug',
'label': 'Time Warp Debug',
'increment': 1.0,
},
{
'name': 'chromaticAberrationCorrection',
'label': 'Chromatic Aberration Correction',
'increment': 1.0,
},
{
'name': 'vrMinimumVSyncs',
'label': 'Minimum Vsyncs',
'increment': 1.0,
},
# {'name':'eyeOffsX','label':'Eye IPD','increment':0.001}
]
# Cardboard/gearvr get eye offset controls.
# if app.platform == 'android':
# entries += [
# {'name':'eyeOffsY','label':'Eye Offset Y','increment':0.01},
# {'name':'eyeOffsZ','label':'Eye Offset Z','increment':0.005}]
# Everyone gets head-scale.
entries += [
{'name': 'headScale', 'label': 'Head Scale', 'increment': 1.0}
]
# And everyone gets all these.
entries += [
{
'name': 'vrCamOffsetY',
'label': 'In-Game Cam Offset Y',
'increment': 0.1,
},
{
'name': 'vrCamOffsetZ',
'label': 'In-Game Cam Offset Z',
'increment': 0.1,
},
{
'name': 'vrOverlayScale',
'label': 'Overlay Scale',
'increment': 0.025,
},
{
'name': 'allowCameraMovement',
'label': 'Allow Camera Movement',
'increment': 1.0,
},
{
'name': 'cameraPanSpeedScale',
'label': 'Camera Movement Speed',
'increment': 0.1,
},
{
'name': 'showOverlayBounds',
'label': 'Show Overlay Bounds',
'increment': 1,
},
]
super().__init__(
bui.Lstr(resource='settingsWindowAdvanced.vrTestingText'),
entries,
transition,
)
# Docs-generation hack; import some stuff that we likely only forward-declared
# in our actual source code so that docs tools can find it.
from typing import (Coroutine, Any, Literal, Callable,
Generator, Awaitable, Sequence, Self)
import asyncio
from concurrent.futures import Future
from pathlib import Path
from enum import Enum