Commit Graph
1014 Commits
Author SHA1 Message Date
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
username223 31f92df4b1 Change Linux build docs
libpulse-dev does not exist on Manjaro.
2020-04-15 20:00:11 +02:00
ykeara ba2df08a70 updated build to dev string (#407) 2020-04-14 16:37:14 -05:00
ykeara 95c4dc3e49 5.0.0 release (#405)
* updated strings for Release

* removed optional message
2020-04-14 13:00:06 -05:00
username223 a1cae11256 Update docs for building on Ubuntu 2020-04-13 12:54:30 +02: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
Vasily f138e46ceb Add O3 flag to linker call for GCC 2020-04-12 00:52:31 +02:00
Vasily 799bc7d429 Add O3 to gcc linker
It is unknown if gcc uses the O3 optimization levels passed to the
compilation of individual cpp files, or if it needs O3 passed to the
linker as well.

The hash of the final binaries are different, thus O3 is passed to the
linker.
2020-04-12 00:52:31 +02:00
Vasily 8a315abb55 Disable LTO on Travis CI and change clang binary to clang++
Travis clang does not have the LLVMgold plugin installed.
Disabling LTO is easier than installing the plugin since the CI doesn't
create any artifacts anyway.
2020-04-12 00:52:31 +02:00
Vasily fa166b20d4 Add logging of Linux compiler version
Mainly for CI and third party logs.
2020-04-12 00:52:31 +02:00
Vasily 28b09e78f5 Update Linux compiler selection with linker
Qmake attempts to invoke the linker with the default `g++` binary even
when we changed the binary. This will compile error when using LTO.

For clang:
```
/usr/bin/ld.gold: error: /usr/lib/llvm-3.8/bin/../lib/LLVMgold.so: could
not load plugin library: /usr/lib/llvm-3.8/bin/../lib/LLVMgold.so:
cannot open shared object file: No such file or directory
```

For GCC:
```
lto1: fatal error: bytecode stream generated with LTO version 6.0
instead of the expected 4.1
```
2020-04-12 00:52:31 +02:00
Vasily 7202230de3 Increase compiler optimization for Linux
`optimize_full` is an undocumented config option that enables O3 on
Linux.

On Windows it does not change the command line, but the final build is
slightly different for unknown reasons.
2020-04-12 00:52:31 +02:00
Vasily f0e05bde25 Add link time optimization to clang/gcc builds
Using `-flto` on clang without using the gold linker produces the error:
```main.o: file not recognized: File format not recognized```
https://github.com/android/ndk/issues/242

`gold` seems to be faster than `ld`, and decently tested even in 2010:
https://stackoverflow.com/questions/3476093/replacing-ld-with-gold-any-experience

Qmake will still append `-Wl,-O1` even though higher optimization levels
are used. Removing this in order to keep the compile command as short as
possible, and to reduce weird issues down the line. Ref topic:
https://stackoverflow.com/questions/53384988/why-qmake-passes-wl-o1-to-gcc-when-linking-and-will-it-harm-lto
2020-04-12 00:52:31 +02:00
Vasily c34e6139ec Update Travis CI to Ubuntu 18.04
clang-format below version 8 wants a different formatting and would
error on the already existing codebase.
2020-04-12 00:52:31 +02:00
Vasily 9ff4863f3e Add branch filtering to all CI providers 2020-04-12 00:52:31 +02: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
Vasily dcbf76cb0b Add audio profiles to new settings object API
Audio profiles are not currently activated due to SteamVR changes.

micVol has been changed to default initilize to 1.0f since that was
being applied in the settings load anyway.
2020-01-30 10:36:21 +01:00
Vasily a6eea3cd08 Add save/loadAllObjects to object settings API
Looping through the vectors was done for almost all vectors
individually. Because there are some weird off by one issues that could
crop up it's easier to just have a function for it.
2020-01-30 10:36:21 +01:00
Vasily bcbc32c812 Enable settings object to work with 'const char*' strings
Passing a C style string (const char*) to any of the templated functions
would lead to a compile error. It was necessary to wrap the raw string
in a std::string call, which is obviously not ideal.

Using automatic type deduction was necessary because `std::vector<const
char*` is not the same as `std::vector<std::string>`.
2020-01-30 10:36:21 +01:00
Vasily 15b4d17672 Change RootPage header title to OVR Advanced Settings 2020-01-30 10:36:21 +01:00
ykeara 50c8415669 Brightness Opacity Refactor + Gain behavior (#355)
* added loop update tick for Synchronizeing while dashboard up

* fixed gain to allow better synching w/ external apps.

* removed extra setting brighnessValue fixed toggle error for brightness Overlay fixed gain synch error

* fixed compiler warning implicit conversion
2020-01-18 11:30:08 -06:00
Vasily dbfb3d69f7 Update AudioManagerDummy function definitions 2020-01-18 00:17:28 +01:00
Vasily 0c7c888c82 Update OpenVR from 1.8.19 -> 1.9.16 and remove Sync() calls
Release log:
https://github.com/ValveSoftware/openvr/releases/tag/v1.9.16
```
Removed sync function. Saving of settings is controlled automatically by
the system now. All existing calls to Sync can be deleted. Calls to sync
using old APIs do nothing.
```
2020-01-18 00:17:28 +01:00
Vasily b6eaca6caa Change pair<string, string> to custom type in AudioTabController
Explicitly named fields are more readable.
2020-01-18 00:17:28 +01:00
Vasily af572ee0b7 Move AudioManager into audiomanager folder 2020-01-18 00:17:28 +01:00
Vasily 54cbdc545b Readd <memory> include in AudioTabController
Windows does not need this explicitly included, but CircleCI does.
2020-01-16 00:09:09 +01:00
Vasily b8488d318d Convert m_pttShowNotification to new settings API 2020-01-16 00:09:09 +01:00
Vasily d873e024ca Convert m_pttEnabled to new settings API 2020-01-16 00:09:09 +01:00