Commit Graph
645 Commits
Author SHA1 Message Date
Chelsea Jaggiandykeara 12344a86bc Introduce 'View ratchetting', cleanup/improve vestibular motion (#510)
* vestibular motion cleanup

* Fix environment jumping when autoturn is enabled

* Restrict vestibular motion to forward movement

* Revert "vestibular motion cleanup"

This reverts commit 3d6b293ad2d6a0df41756c67f7e80c4b2be8b6fd.

* Experimental: dynamic redirection. very subtle effect

* formatting...

* swap centidegrees for millidegrees

* Experimental: introduce view ratchetting

* more cleanup

* Revert "Experimental: dynamic redirection. very subtle effect"

This reverts commit d6c8e5cdedf1b11013f25340c2e9be64ec1359b8.

* vestibular motion cleanup

* view ratchetting settings

* cleanup and formatting

* Resolve drift, improve accuracy of vestibular motion/autoturn

* updated UI first pass

* UI first pass

* Hide Unset Errors After encountering one

* fix synch issue add ratchet box

* moved view ratchet ui to own file

* minor format changes to fit

* fixed REALLY 3% minimum

* fixed vestib motion default

Co-authored-by: ykeara <ykeara1@gmail.com>
2020-09-08 14:19:50 -07:00
ykeara 4fb026958e custom keybinds multiple keypress fix. [add backslash to Parser] (#513)
* fixed input sending bug not properly releasing keys

* updated to ovr 1.12.5

* added disable oculus api button experimental

* small refactor and fix float and bool bugs

* added nokeyup events to modifier keys when read in, and adjusted  token send to have proper logic

* fixed literal held issue

* added backslash

* fixed sender token parser

* updated version string to dev whoops

* added backslash to documentation for keyboard input
2020-09-03 11:08:37 -05:00
ykeara 7d0823f83c Exclusive Input + Documentation Changes (#514)
* added input block code

* added exclusive Input action

* test ready exclusive

* working test state

* clean-up and add setting

* removed auto saved file

* added code to set required key

* fixed qml connection issues

* updated readme

* updated documentation

* updated version string

* updated for better directory navigation

* removed un-used code
2020-09-01 10:30:33 -05:00
Chelsea Jaggi b6f81a542c Bump up autoturn smooth turn speed default, adjust Readme.md (#512)
* Bump up autoturn smooth turn speed default, adjust Readme.md

* Increase default vestibular motion radius to the 'imperceptible' range
2020-08-27 13:57:47 -07:00
Chelsea Jaggiandykeara 6d1953070a Add an optional pop-up notification when auto-turn is toggled (#496)
* Implement (most of) pop-up notification when autoturn is enabled

* Add neato fading: doesn't appear to impact performance

* formatting

* added macro and UI for notification of auto-turn

* changed notification default to true for auto-turn

* added common issue for trackers

* added warning for custom keys

* minor documentation markdown format fixes

* fix qml syntax error in atgb

* gasd

Co-authored-by: ykeara <ykeara1@gmail.com>
2020-08-11 20:03:35 -05:00
ykeara 90d980dcab Fix Position of Center Marker While in Seated Mode (#503)
* adjust so height adjusts when in drag

* removed height fix, half fixed center marker in seated

* fixed offset in seated mode
2020-08-11 20:03:09 -05:00
ykeara 15f5534f69 Added F10-F12 For Custom KeyBinds (#507)
* added F10-F12 keys

* updated version strings to 5.2.2

* updated spec to reflect new keys
2020-08-11 20:02:34 -05:00
Chelsea Jaggi c8f519ec0b Smoother (autoturn) smooth turn: estimate frame rate when beginning turn (#498)
* Smoother (autoturn) smooth turn: estimate frame rate when beginning turn

* remove log messages and fix formatting
2020-07-27 18:13:29 -07:00
ykeara 549f65dc32 Precise Rotation (#482)
* temporarily disabled adjust chaperone

* added experimental check to prevent rotation drift

* adjusted ss to 2 digits precision

* updated rotation model to be based on relative position and not drift

* fixed force precision error with supersampling

* added Error for turning too fast

* removed error impossible to execute

* fixed and cleaned up some potential failure points

* added inversion check

* re-worded warning

* added adjustchaperone2 defaulted to off to replace adjust chaperone

* moved adjust chaperone to settings removed from offsets tab

* moved adjust chaperone to settings removed from offsets tab

* enabled clipping for settings page no longer scrolls outside of its area

* updated strings for release
2020-07-11 12:26:56 -05:00
Ben Scholzen (DASPRiD) 999aebd7fb Add steam-switch to appimage.sh for excluding AppImage integration 2020-06-27 21:13:14 +02:00
Ben Scholzen (DASPRiD) 1e20df71ec Disallow AppImageLauncher integration 2020-06-27 21:13:14 +02:00
ykeara eb8140a7f7 Fixed Synchro Bug 5.2.0 release (#470)
* fixed synch bug

* refactored chaperone tab controller for better ui synching/updated

* refactored steamvr tab controller

* refactored video tab controller

* cleanup

* update version strings fix implicit conversions
2020-06-07 12:06:25 -05:00
ykeara 88a1c002c4 Keyboard And Documentation update (#469)
* changed action names

* updated settings for new action key

* updated keyboard input guide

* updated readme top

* updated appveyor link

* fixed qml issue and some formatting

* updated screenshots

* updated documentation portion of readme

* fix qml issues
2020-06-06 14:18:21 -05:00
Vasily 3857c2ac2f Refactor update rates of tab controllers
Previous way of controlling when controllers were run was split among
the different controllers, meaning that third parties would require
knowledge of internal state of controllers in order to be on the same
update schedule as them.

This refactor moves the logic into a seperate class.

Additionally, it also stops the use of the `adjustUpdateRate` function
on all tab controllers, since it broke the prime-number-ability of
less collisions.
2020-06-06 20:53:34 +02:00
ykeara 82a0357748 Keyboard Parse Fix (#467)
* fixed input sending bug not properly releasing keys

* updated to ovr 1.12.5

* added disable oculus api button experimental

* small refactor and fix float and bool bugs
2020-06-05 15:42:10 -05:00
Vasily 4757756d32 Refactor alarm system and replace notification method
The old OpenVR overlays did not function for unknown reasons, and it was
not possible to get them to work.

With this a white overlay with ALARM ACTIVATED will be shown for 3 seconds.
It's not pretty, but it effectively communicates that an alarm has been
activated.

This fixes
https://github.com/OpenVR-Advanced-Settings/OpenVR-AdvancedSettings/issues/417
2020-06-05 20:52:13 +02:00
ykeara 8c2af7477c Keyboard Press Feature and Version String Updated (#464)
* added two new keyboard press actions

* added todos to overlay controller for new actions

* added settings for keyboard press and default to f10

* added logic, fixed default value

* added action alias

* fixed center marker rotation count

* updated version strings

* fixed Trigger Condition

* removed literal limitation (character input)

* updated version string

* fixed white space issues
2020-06-04 11:17:58 -05:00
ykeara e1e4933fb3 Turn Counter Center Marker Fix (#463)
* fixed center marker rotation count

* updated version strings

* fixed Trigger Condition
2020-06-03 11:42:58 -05:00
ykeara dca1e18e0e CenterMarker Rotation Fix + Misc (#458)
* add native chaperone option

* refactored overlaywrapper error handling

* added reset all settings

* added reset all settings option

* clarified driver bounds language

* fixed naming  schema of turn settings

* fixed qml issue

* marked errors in settings

* fixed rotation of center marker and cleaned up

* ci test

* removed debugging code

* fixed comment

* fixed rotation.... made messy

* fixed crash when centermarker new was on at launch

* added settings to scroll view

* fixed some initialization issues w/ center marker and some race conditions

* updated Documentation to be more correct/concise about openGL rendering Information issue 457

* changed default behaviour of chaperone bounds to be un-checked to be consistant w/ other settings (default is unchecked)

* cleaned up code around centermarker overlay

* removed unused variables, changed scope of some existing

* code naming cleanup

* more rename

* updated Version strings for 5.1.1 release

* updated string to be more concise
2020-06-02 12:10:21 -05:00
Vasily 4b94a4bd27 Fix chaperone profiles not loading correctly
Saving a profile with only visibility changed, the saved struct looks
like
bools\1\bools=false
bools\2\bools=true
bools\3\bools=false
bools\4\bools=false

The load function expects 2 bool values before loading
`includesVisibility`, leading it to getting a false value (actually
includesFadeDistance).

Making the struct save the `chaperoneGeometryQuadsValid` that it expects
to be saved there fixes the issue.

This bug highlights issues with the current object settings system, in
that debugging is unnecessarily tedious and difficult.
2020-05-31 08:50:48 +02:00
Vasily 2ce911b5d8 Fix keyboard input bugs
Premade keyboard inputs that relied on multiple buttons were broken due
to no TOKEN_NO_KEYUP_NEXT.
2020-05-17 22:36:35 +02:00
Vasily 9412c31e42 Refactor input_sender to have main logic be cross platform
Previously logic was duplicated for Linux/Windows.
Additionally, Linux was
```cpp
if ( isModifier( token ) )
{
    sendKeyPress( token, KeyStatus::Down, display );
    if ( noKeyUp )
    {
        heldInputs.push_back( token );
    }
    continue;
}
```
while Windows was
```cpp
if ( isModifier( token ) )
{
    inputs.push_back( createInputStruct(
                convertToVirtualKeycode( token ), KeyStatus::Down ) );
    if ( !noKeyUp )
    {
        heldInputs.push_back( token );
    }
    continue;
}
```
(notice difference in noKeyUp if statement which was a bug on Linux.
Windows was the correct version and it has been kept.
2020-05-17 22:36:35 +02:00
ykearaandVasily a803ffaeac Center Marker/ Chaperone Refactor/ IVROverlay/IVRSettings wrappers PT 1/? (#438)
* changed click noises to internal sounds

* udpated to ovr 1.11.11

* in prog added prototypes

* began wrapper for IVRSettings

* added getters for chaperone colors

* added setters for chaperone color

* fixed type conversion issue

* fixed linking issue, added additional settings chaperone page

* adjusted chaperone page qml

* added color chaperone UI

* refactor in prog

* updated ivrsettings wrapper, refactor in prog

* refactor in prog

* collision bound style add

* refactor

* cleaned up error logging

* fixed fade distance remember bug

* fixed sounds

* fixed brightness opacity bug setting to 0 when 0

* fixed sounds

* added wrapper for removing keys

* refactored reset

* added chaperone Styles to UI

* added chaperone floor always on

* fixed copy/paste error

* adjsuted ui chaperone color slider

* started adding chaperone floor marker

* fixeed naming error overlay

* finalized chaperone Ideas, added chaperone markers

* began ivroverlay wrapper

* center marker fully implemented

* added function prototypes for new settings

* added setting, and updated ui for New Center Marker Overlay

* adjsuted sound effect volume and formatting for chaperonecolorbox

* adjusted volume back

* fixed various issues aroudn new overlay

* removed artifact comment

* cleaned up settings wrapper

* cleaned up chaperone tab controller for namespace changes

* removed ide comment issue

* cleanup overlay wrapper

* cleaned up tab/space changed file name

* renamed files

* fixed include statements

* updated namespace in chaperonetabcontroller

* fixed tab/space issues

* re-activated boundbasisheight

* fixed bulgarian case

* changed chaperone warnings to only work in roomscale

* fix capitilization

* fixed tracking universe update

* direct text input change for brightness

* qml fixes

* fixed qml format issues

* fixed sound issue w/ sliders

* fixed super truely

* Add SDL libraries to CircleCI

* Remove -tidy from circleCI config

* flushed out error messages in overlaywrapper

* removed hungarian notation

* added get/set string to ovrsettings wrapper

* misc cleanup

* add reset orientation btn and new center marker to chaperone

* ui adjustments

* changed alarm audio

* adjusted sound effect volume slightly lower

* updated for 5.1.0 release

Co-authored-by: Vasily <vautkin@teknik.io>
2020-05-13 15:11:20 -05:00
ykeara deb0d4a324 Fixes Startup Error, and ghost profiles 5.0.2 (#422)
* fixed unsafe chaperone issue

* fixed phantom names on offset/video profiles

* version strings
2020-04-20 12:44:29 -05:00
Chelsea Jaggiandykeara 2671bf72e3 Bump version string to 5.0.1 (#415)
* Bump version string to 5.0.1

* ACTUALLY bump version string

* really really fixed version strings

* changed some defaults, and adjusted speed slider slightly, made text a little more intuitive

* see previous

* fixed issue with disabled seated recenter button

Co-authored-by: ykeara <ykeara1@gmail.com>
2020-04-17 15:52:01 -05:00
Chelsea Jaggiandykeara de460f172a Fix logic errors in redirected-walking (#413)
* Resolve a logic issue for Redirected Walking

* Resolve issue with arc magnitudes being less than expected

* warnings

Co-authored-by: ykeara <ykeara1@gmail.com>
2020-04-17 02:36:12 -05:00
ykeara b3e9e63cba Fix default Brightness value/behavior adds shutdown button (#412)
* added exit button

* fixed visible state

* added shutdown button fixed default brightness issues

* fixed compiler warning
2020-04-16 21:53:15 -05:00
ykeara e257666085 Misc Fixes (#404)
* fixed qml error for input

* fixed settings save bug, fixed rotation direct input, disabled chaperone force floor bounds via profile, made some dialog boxed round @ 2 digits
2020-04-12 17:08:23 -05:00
ykeara f26d6d6e80 Documentation (#401)
* updated documentation/screenshots, let seated-recenter show in all modes, fixed default value of brigthness

* fixed formatting

* changed PTT to System

* added comma to documentation
2020-04-11 14:00:47 -05:00
ykeara 598663577d fix default binding app key. (#400)
* removed un-necessary object from default bindings, added system action set

* fixed c++ section for system action

* fixed app key default bindings
2020-04-10 10:45:36 -05:00
ykeara 456b123a55 Fixes Actions for Future. (#399)
* removed un-necessary object from default bindings, added system action set

* fixed c++ section for system action
2020-04-09 13:06:46 -05:00
1ae740463c Implement Auto-turn and Redirected Walking
Initial implementation of Auto-Turn

Auto-turn leverages Space Turn automatically whenever you reach a configured distance from your chaperone boundary. Turn direction is in order of precedence:

1. Away from a corner where you're already touching one wall. This is to avoid being turned to face a wall, which we pretty much never want. If 'use corner angle' is enabled, it'll turn the angle of the corner, otherwise it'll turn the angle of your headset to the wall you encountered.
2. In whichever direction will start you unwinding your cord. If your rotations is greater than 'cord detangling rotations' and your angle to the wall is less than 'min detangling angle' it'll turn you such that the thing you're walking towards is directly along a wall, in the direction which will begin unwinding your cord.
3. In the closest angle to the wall. This too will put whatever you're walking towards directly along a wall, so you can walk the maximum distance to it. 
- If Smooth turn is checked, it'll turn at a constant (configurable) rate until the world is aligned with the new angle, otherwise it'll snap to the new direction instantly. 
- Activation distance is the distance from your chaperone at which auto-turn starts, and deactivation distance is the minimum distance (+ the activation distance) at which it'll be able to be activated again, to avoid turning twice at once.


Redirected walking tries to gently guide you away from your playspace boundaries by tweaking the world's angle at smaller increments than your brain is capable of noticing. While most playspaces won't be big enough to allow this to give you a true 'infinite walk' experience, it can give the perception of your playspace being ever so slightly bigger by making you walk in a slight arc in real life while walking forward in VR.
- Redirected walking is independent from Auto-turn and can be activated on its own. At both the 'slight' and 'imperceptable' radii, the turning speed is incredibly minimal. When walking along one wall of your chaperone to another, you should notice the far corner of your playspace (relative to the world) drifting ever so slightly away from you. In normal circumstances at the lowest settings this shouldn't be noticable. 


Co-authored-by: feilen <feilen1000@gmail.com>

* Initial implementation of Infinite Walk

* Code cleanup and abstraction, use nearest corner instead of nearest wall to determine turn direction

* Run clang-format

* Turn relative to the last wall if we run into adjacent walls, otherwise turn at easiest angle

* Limit maximum turns (just refuse to turn for now), only turn on shared corners if going the same direction

* Improve same-corner

* get rid of LastDirectionLeft

* WIP: cord untangling hint

* Try to automatically untangle cord, don't rotate if we encounter a wall behind us

* Incorrect offset for walls

* optimize if hmd inactive

* Cleanup/clarify angles

* (probably?) solve rare segfault

* Adjust the defaults and fix a bug with blocking reverse turns

* Implement smooth turn, fix a bug with shared-corners that would cause it to turn the wrong way

* actually really fix shared corner bug

vect[i + 1 % vect.size()] was somehow evaluating to vect[i + (1 %
vect.size())]

* Move configurables for autoturn to .h to make clearer what's configurable

* WIP: true redirected walking

* First pass optimization/cleanup

* Second pass cleanup/optimize

* Missing clang-format

* Somewhat ugly: Optionally turn the exact angle of the corner when using shared corner turns

* added rotation tab controller in progress

* cleaned up chaperone controller/ finished settings/rotationtab

* did first 4 settings qml, and main qml setup

* initial working build, not all settings UI done

* merging master into redirected walking. (#387)

* Update OVR to 1.10.30 (#379)

* updated to ovr 1.10.30

* fixed updated showoverlaykeyboard call

* fixed keyboard location

* Updated Manifest (#380)

* updated to ovr 1.10.30

* fixed updated showoverlaykeyboard call

* fixed keyboard location

* removed un-necessary matrix, updated app key and manifest

* fixed formatting

* Fix push to mute icon not being used when PTM enabled

* added touch default bindings (#385)

travis CI down/broken?

Co-authored-by: Vasily <vautkin@teknik.io>

* added action, and additional settings

* fixed various bugs added turn speed and mode

* fixed conversion error for turn speed

* added redirected walking options

* formatting

* formatting fixing

* removed old comments

* changed logs to debug and some wording changes

* changed UI layout

* added space turn to rotation page

* added icon, fixed autoturn to autoTurn, fixed conversion to be in qml vs set

* Update src/res/qml/RootPage.qml

yep XD

Co-Authored-By: Kung-vr <38249782+Kung-vr@users.noreply.github.com>

* reverted build changes

* removed un-needed app image build commands

* Cleanup some functions, avoid an extra chaperone check.

* Make redirected walking and autoturn independently enable-able

Co-authored-by: Feilen <feilen1000@gmail.com>
Co-authored-by: Vasily <vautkin@teknik.io>
Co-authored-by: Kung-vr <38249782+Kung-vr@users.noreply.github.com>
2020-04-08 18:57:53 -07:00
ykeara c0d44812d6 fixes keyboard positioning (#394) 2020-04-08 16:29:59 -05:00
Vasily bb30a7c041 Add framework for implementing Linux AudioManager
Source outputs must all be moved to new default source.
Reference topic
https://askubuntu.com/a/72076

* Adds microphone controls on Linux via PulseAudio (PA) for several
points in
https://github.com/OpenVR-Advanced-Settings/OpenVR-AdvancedSettings/issues/43.

It can not be overstated how unsuited the public AudioManager API is for
using the PA API.

It can also not be overstated how undocumented and horrible the PA API
is. The PA way of doing audio is very unlike the Windows way of doing
audio, which the AudioManager is heavily influenced by.

Since I don't have a Linux machine I have not been able to personally
test this. https://github.com/feilen/ has graciously helped with
testing.

PulseAudio is very undocumented and not very widely used for what we
need outside of official utilities. As such there's most likely a better
way of doing things than I've done.
Additional information can be found at
https://github.com/username223/pulseaudio-device-changing.

The "complex" PA API is asynchronous. Since our current AudioManager is
running synchronously and would not work asynchronously (functions are
expected to return valid data on function return) it is necessary to
massage the PA API until it runs synchronously.

This is done with a general workflow of

1. Register a callback function (`pa_context_get_source_info_list()`,
        for example).
2. Run the PA loop through `customPulseLoop()`. This will trigger
any registered callbacks. Sometimes a `void*` is passed through the
callback that can be used for custom data. `successCallback()` uses
this to set the success variable.
3. Run the callback function and do required work.
4. Return to original function, do work or return values.

It is not possible to run a `customPulseLoop()` inside of an already
running loop (inside a callback), as this will lead to a PA assert
error on runtime.
2020-04-08 22:44:12 +02:00
ykeara 9225956e8a added touch default bindings (#385)
travis CI down/broken?
2020-03-27 19:10:33 -05:00
Vasily 2db3b10421 Fix push to mute icon not being used when PTM enabled 2020-03-22 18:48:48 +01:00
ykeara a9d3b9f873 Updated Manifest (#380)
* updated to ovr 1.10.30

* fixed updated showoverlaykeyboard call

* fixed keyboard location

* removed un-necessary matrix, updated app key and manifest

* fixed formatting
2020-03-22 11:58:58 -05:00
ykeara 25f3a1040d Update OVR to 1.10.30 (#379)
* updated to ovr 1.10.30

* fixed updated showoverlaykeyboard call

* fixed keyboard location
2020-03-20 02:59:08 -05:00
Vasily b66fca6f28 Fix float comparison error for setBoundsVisibility
m_visibility was never being set due to m_visibility-m_visibility always
being 0.
2020-03-17 19:39:03 +01:00
Vasily a74b63f199 Fix off by one error when loading settings profiles 2020-03-17 19:39:03 +01:00
ykearaandVasily 97066e453c fixed audio override key unset issues (#374)
* fixed audio override key unset issues

* Add apt-transport-https to CircleCI config

CircleCI fails with
E: The method driver /usr/lib/apt/methods/https could not be found.

when attempting to get the LLVM key.
This is suspected to happen because of an update to the image.

Co-authored-by: Vasily <vautkin@teknik.io>
2020-03-15 13:56:41 -05:00
Chelsea Jaggi 8b5d5ff3d6 Set a static DPI before rendering in-VR overlay (#370)
We expect a standard 96DPI display rendering when creating the overlay,
but system DPI can interfere with this. Setting
QCoreApplication::setAttribute(Qt::AA_Use96Dpi) resolves this.

https://github.com/OpenVR-Advanced-Settings/OpenVR-AdvancedSettings/issues/369
2020-03-10 16:26:22 -05:00
Vasily d88eb0f53b Add push to mute icon when using push to mute feature
The PTM icon was quickly made in mspaint and (in my opinion) adequately
reflects push to mute.

Fixes
https://github.com/OpenVR-Advanced-Settings/OpenVR-AdvancedSettings/issues/342
2020-03-04 09:17:01 +01:00
Vasily 827d46e48b Add null check to AudioManagerWindow getDeviceName/Id
Windows was returning a nullptr on arbitrary devices, leading to a
SEGFAULT.

"INVALID-NAME" was chosen to be distinguishable from an empty string.
2020-01-30 10:36:21 +01:00
Vasily 7b9f7e6ff3 Explicitly disallow floats from object settings API
This is to incentivize the transfer from `float` to `double` throughout
the codebase.
2020-01-30 10:36:21 +01:00
Vasily eed01ed5a8 Remove unneeded QSettings functions and imports 2020-01-30 10:36:21 +01:00
Vasily 9d8e3ad3ef Add ChaperoneProfile to new settings object API
chaperoneGeometryQuads was converted from an implicit pointer array to a
std::vector because the only thing the pointer array did was hide the
fact that it was an array.
2020-01-30 10:36:21 +01:00
Vasily 2930ea6d4f Add VideoProfiles to new object settings API 2020-01-30 10:36:21 +01:00
Vasily 58b155da00 Remove unneeded QSettings usage in VideoTabController
Was a relic from when we didn't have a settings API.
2020-01-30 10:36:21 +01:00
Vasily 4bfe944461 Add OffsetProfiles to new object settings API 2020-01-30 10:36:21 +01:00