Initial FrameAssistant baseline from the vrdashboard template
Template stripped to the overlay platform (examples, demo UI and Frame test package removed), renamed to FrameAssistant, and working rules for the project recorded in CLAUDE.md. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
# Runtime data for SteamVR. Staged into <build>/share/<project>/ (mirroring the install
|
||||
# layout) so the binary can be run and registered straight from the build tree.
|
||||
|
||||
set(_share ${CMAKE_BINARY_DIR}/${VRDASH_SHARE_SUBDIR})
|
||||
|
||||
# Paths inside the manifest are relative to the manifest file itself. SteamVR reads the
|
||||
# program path from a per-platform key and silently skips entries without one for its
|
||||
# platform: binary_path_linux on x86-64, binary_path_linux_arm on aarch64 (Steam Frame).
|
||||
if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64|arm64|ARM64)$")
|
||||
set(VRDASH_MANIFEST_BINARY_KEY binary_path_linux_arm)
|
||||
else()
|
||||
set(VRDASH_MANIFEST_BINARY_KEY binary_path_linux)
|
||||
endif()
|
||||
configure_file(manifest.vrmanifest.in ${_share}/manifest.vrmanifest @ONLY)
|
||||
|
||||
set(_input_files input/actions.json input/bindings_frame_controller.json)
|
||||
foreach(_file ${_input_files})
|
||||
configure_file(${_file} ${_share}/${_file} COPYONLY)
|
||||
endforeach()
|
||||
|
||||
install(FILES ${_share}/manifest.vrmanifest DESTINATION ${VRDASH_SHARE_SUBDIR})
|
||||
install(FILES ${_input_files} DESTINATION ${VRDASH_SHARE_SUBDIR}/input)
|
||||
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"default_bindings": [
|
||||
{
|
||||
"controller_type": "frame_controller",
|
||||
"binding_url": "bindings_frame_controller.json"
|
||||
}
|
||||
],
|
||||
"action_sets": [
|
||||
{ "name": "/actions/dashboard", "usage": "single" }
|
||||
],
|
||||
"actions": [
|
||||
{ "name": "/actions/dashboard/in/focus_next", "type": "boolean" },
|
||||
{ "name": "/actions/dashboard/in/focus_previous", "type": "boolean" },
|
||||
{ "name": "/actions/dashboard/in/increase", "type": "boolean" },
|
||||
{ "name": "/actions/dashboard/in/decrease", "type": "boolean" },
|
||||
{ "name": "/actions/dashboard/in/activate", "type": "boolean" },
|
||||
{ "name": "/actions/dashboard/in/back", "type": "boolean" }
|
||||
],
|
||||
"localization": [
|
||||
{
|
||||
"language_tag": "en_US",
|
||||
"/actions/dashboard": "Dashboard navigation",
|
||||
"/actions/dashboard/in/focus_next": "Focus next control",
|
||||
"/actions/dashboard/in/focus_previous": "Focus previous control",
|
||||
"/actions/dashboard/in/increase": "Increase / move right",
|
||||
"/actions/dashboard/in/decrease": "Decrease / move left",
|
||||
"/actions/dashboard/in/activate": "Activate focused control",
|
||||
"/actions/dashboard/in/back": "Back / cancel"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"action_manifest_version": 0,
|
||||
"controller_type": "frame_controller",
|
||||
"name": "Default Steam Frame bindings",
|
||||
"description": "Left D-pad navigates focus and adjusts values, right A activates, right B goes back.",
|
||||
"bindings": {
|
||||
"/actions/dashboard": {
|
||||
"sources": [
|
||||
{
|
||||
"path": "/user/hand/left/input/dpad_down",
|
||||
"mode": "button",
|
||||
"inputs": { "click": { "output": "/actions/dashboard/in/focus_next" } }
|
||||
},
|
||||
{
|
||||
"path": "/user/hand/left/input/dpad_up",
|
||||
"mode": "button",
|
||||
"inputs": { "click": { "output": "/actions/dashboard/in/focus_previous" } }
|
||||
},
|
||||
{
|
||||
"path": "/user/hand/left/input/dpad_right",
|
||||
"mode": "button",
|
||||
"inputs": { "click": { "output": "/actions/dashboard/in/increase" } }
|
||||
},
|
||||
{
|
||||
"path": "/user/hand/left/input/dpad_left",
|
||||
"mode": "button",
|
||||
"inputs": { "click": { "output": "/actions/dashboard/in/decrease" } }
|
||||
},
|
||||
{
|
||||
"path": "/user/hand/right/input/a",
|
||||
"mode": "button",
|
||||
"inputs": { "click": { "output": "/actions/dashboard/in/activate" } }
|
||||
},
|
||||
{
|
||||
"path": "/user/hand/right/input/b",
|
||||
"mode": "button",
|
||||
"inputs": { "click": { "output": "/actions/dashboard/in/back" } }
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"applications": [
|
||||
{
|
||||
"app_key": "@VRDASH_APP_KEY@",
|
||||
"launch_type": "binary",
|
||||
"@VRDASH_MANIFEST_BINARY_KEY@": "../../@CMAKE_INSTALL_BINDIR@/@VRDASH_EXECUTABLE_NAME@",
|
||||
"is_dashboard_overlay": true,
|
||||
"strings": {
|
||||
"en_us": {
|
||||
"name": "@VRDASH_DISPLAY_NAME@",
|
||||
"description": "@VRDASH_DISPLAY_NAME@ dashboard overlay"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user