UI navigation work with game pads

The tablet UI can be long lived, unlike the previous VRMenu.
So instead of using a dynamic mapping that was only enabled when the VRMenu was shown, standard_navigation.json.
standard_navigation is always active.  Also, standard_navigation.json has been changed.
Left and Right click and stick events never become UINav events. Only Dpad A, B, X, Y, LB and RB are mapped to UINav events.
This commit is contained in:
Anthony J. Thibault 2017-01-23 15:22:49 -08:00
parent d71b79ebed
commit 584a9a3c98
4 changed files with 3 additions and 44 deletions

View file

@ -1,6 +1,5 @@
{ {
"name": "Standard to Action", "name": "Standard to UI Navigation Action",
"when": "Application.NavigationFocused",
"channels": [ "channels": [
{ "from": "Standard.DU", "to": "Actions.UiNavVertical" }, { "from": "Standard.DU", "to": "Actions.UiNavVertical" },
{ "from": "Standard.DD", "to": "Actions.UiNavVertical", "filters": "invert" }, { "from": "Standard.DD", "to": "Actions.UiNavVertical", "filters": "invert" },
@ -9,42 +8,7 @@
{ "from": "Standard.LB", "to": "Actions.UiNavGroup","filters": "invert" }, { "from": "Standard.LB", "to": "Actions.UiNavGroup","filters": "invert" },
{ "from": "Standard.RB", "to": "Actions.UiNavGroup" }, { "from": "Standard.RB", "to": "Actions.UiNavGroup" },
{ "from": [ "Standard.A", "Standard.X" ], "to": "Actions.UiNavSelect" }, { "from": [ "Standard.A", "Standard.X" ], "to": "Actions.UiNavSelect" },
{ "from": [ "Standard.B", "Standard.Y" ], "to": "Actions.UiNavBack" }, { "from": [ "Standard.B", "Standard.Y" ], "to": "Actions.UiNavBack" }
{ "from": [ "Standard.RTClick", "Standard.LTClick" ], "to": "Actions.UiNavSelect" },
{
"from": "Standard.LX", "to": "Actions.UiNavLateral",
"filters": [
{ "type": "deadZone", "min": 0.95 },
"constrainToInteger",
{ "type": "pulse", "interval": 0.4 }
]
},
{
"from": "Standard.LY", "to": "Actions.UiNavVertical",
"filters": [
"invert",
{ "type": "deadZone", "min": 0.95 },
"constrainToInteger",
{ "type": "pulse", "interval": 0.4 }
]
},
{
"from": "Standard.RX", "to": "Actions.UiNavLateral",
"filters": [
{ "type": "deadZone", "min": 0.95 },
"constrainToInteger",
{ "type": "pulse", "interval": 0.4 }
]
},
{
"from": "Standard.RY", "to": "Actions.UiNavVertical",
"filters": [
"invert",
{ "type": "deadZone", "min": 0.95 },
"constrainToInteger",
{ "type": "pulse", "interval": 0.4 }
]
}
] ]
} }

View file

@ -90,7 +90,6 @@ Item {
} else { } else {
breadcrumbText.text = "Menu"; breadcrumbText.text = "Menu";
topMenu = null; topMenu = null;
offscreenFlags.navigationFocused = false;
} }
} }
@ -99,7 +98,6 @@ Item {
topMenu = newMenu; topMenu = newMenu;
topMenu.focus = true; topMenu.focus = true;
topMenu.forceActiveFocus(); topMenu.forceActiveFocus();
offscreenFlags.navigationFocused = true;
} }
function clearMenus() { function clearMenus() {

View file

@ -46,11 +46,8 @@ Item {
}); });
} }
loader.item.forceActiveFocus(); loader.item.forceActiveFocus();
offscreenFlags.navigationFocused = true;
} }
} }
Component.onDestruction: { offscreenFlags.navigationFocused = false; }
width: 480 width: 480
height: 720 height: 720

View file

@ -978,7 +978,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo
using namespace controller; using namespace controller;
auto offscreenUi = DependencyManager::get<OffscreenUi>(); auto offscreenUi = DependencyManager::get<OffscreenUi>();
auto tabletScriptingInterface = DependencyManager::get<TabletScriptingInterface>(); auto tabletScriptingInterface = DependencyManager::get<TabletScriptingInterface>();
if (offscreenUi->navigationFocused()) { {
auto actionEnum = static_cast<Action>(action); auto actionEnum = static_cast<Action>(action);
int key = Qt::Key_unknown; int key = Qt::Key_unknown;
static int lastKey = Qt::Key_unknown; static int lastKey = Qt::Key_unknown;