Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Removal of finger input #43

Open
wants to merge 156 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
156 commits
Select commit Hold shift + click to select a range
932e267
Update of LeapSDK and OpenVR
SDraw Apr 1, 2018
3d04f07
Forgotten file
SDraw Apr 1, 2018
7fc7c91
Update README.md
SDraw Apr 1, 2018
09b3457
Separation of classes
SDraw Apr 2, 2018
473f864
Update README.md
SDraw Apr 2, 2018
1da92f1
Minor fixes
SDraw Apr 2, 2018
8fa2466
Update to OpenVR 1.0.10
SDraw Apr 3, 2018
88a09d6
Separation of CLeapMonitor class
SDraw Apr 4, 2018
15a16d0
Restored touchpad axes simulation for gesture_checker
SDraw Apr 5, 2018
7d116c0
Added control restrictions
SDraw Apr 6, 2018
b37c6da
Added touchpadTouch and touchpadPress config params
SDraw Apr 6, 2018
d78563a
pugixml update
SDraw Apr 7, 2018
d70b5cc
Fix of controller unavailability after its disconnection
SDraw Apr 9, 2018
d6e1b1f
Added grip angle offsets
SDraw Apr 9, 2018
621d3e8
Full controller detection status in SteamVR window
SDraw Apr 10, 2018
2c720da
Removed overlay
SDraw Apr 10, 2018
9c80bd2
Minor improvements
SDraw Apr 11, 2018
3376aae
Fixed vrserver crash
SDraw Apr 14, 2018
888c0de
Minor fixes
SDraw Apr 14, 2018
0885751
Update to OpenVR 1.0.11
SDraw Apr 20, 2018
f01c6fb
Fully fake HTC Vive controllers
SDraw Apr 26, 2018
3b0fb37
Added game profiles feature
SDraw May 4, 2018
d96f552
Readme fix
SDraw May 4, 2018
6b894d6
Update OpenVR to 1.0.14
SDraw May 11, 2018
934d36e
Automated game profiles
SDraw May 14, 2018
c7da8f5
Minor fix
SDraw May 14, 2018
02dbdad
Less jumpy VRChat menu
SDraw May 16, 2018
6b4afef
Minor changes
SDraw May 27, 2018
f1ab373
Fix of strange behaviour of OpenVR API
SDraw Jun 18, 2018
3543364
Fix of profile swtching
SDraw Jun 18, 2018
8604591
Fix of regular SteamVR crash
SDraw Jul 13, 2018
8b64391
Update README
SDraw Jul 14, 2018
c2c990f
Update to OpenVR 1.0.15
SDraw Jul 22, 2018
5689ed0
Update to OpenVR 1.0.16
SDraw Aug 4, 2018
939e6cd
Ability to disable specific hand
SDraw Aug 5, 2018
99c762c
Update to OpenVR 1.0.17
SDraw Nov 3, 2018
88e5f1e
Update to OpenVR 1.1.3b
SDraw Dec 12, 2018
75b3802
Adding OpenVR submodule (step 1)
SDraw Dec 30, 2018
3674d0a
Adding OpenVR submodule (step 2)
SDraw Dec 30, 2018
33a292b
Update to LeapSDK 4.0.0+52173
SDraw Jan 1, 2019
348fc13
Update README.md
SDraw Jan 26, 2019
9af50ba
Update to OpenVR 1.2.10
SDraw Jan 31, 2019
6104b45
Performance changes and crash fix
SDraw Feb 1, 2019
ef1a22f
Minor fix
SDraw Feb 2, 2019
48d89ea
Simplified buttons control
SDraw Feb 4, 2019
57f1b08
GLM integration
SDraw Feb 8, 2019
02d990f
Solution name fix
SDraw Feb 8, 2019
9c665eb
Minor changes
SDraw Feb 10, 2019
b38d763
Update to GLM 0.9.9.4
SDraw Mar 30, 2019
7432b31
Update to OpenVR 1.3.22
SDraw Apr 14, 2019
48ede89
Update to GLM 0.9.9.5
SDraw Apr 17, 2019
fb7c665
Update to OpenVR 1.14.18
SDraw May 26, 2019
442adc8
Removed pugixml as folder
SDraw May 28, 2019
13e4b19
Added pugixml submodule
SDraw May 28, 2019
1d21219
Reset pugixml index
SDraw May 28, 2019
7dff953
Project path fix
SDraw May 28, 2019
d83a2b4
Temporary fix for VRChat bug
SDraw Jun 2, 2019
27379b1
Update README.md
SDraw Jun 7, 2019
ce2666e
Valve Index controller emulation support
SDraw Jun 9, 2019
8c3d452
More valid hand pose
SDraw Jun 10, 2019
5e2d428
Create FUNDING.yml
SDraw Jun 11, 2019
df5a6d0
Update README.md
SDraw Jun 11, 2019
12614dd
Add files via upload
SDraw Jun 11, 2019
593b63e
Update README.md
SDraw Jun 11, 2019
d96ba21
Image update
SDraw Jun 11, 2019
b602441
Haptic output
SDraw Jun 12, 2019
7cf87ea
SteamVR 1.5.8 jitter fix for hands out of range
SDraw Jun 14, 2019
45d4426
Auxiliary bones transformations
SDraw Jun 18, 2019
fa7e172
Update FUNDING.yml
SDraw Jun 19, 2019
cc4295c
Update FUNDING.yml
SDraw Jun 19, 2019
36bab7b
Update README.md
SDraw Jun 22, 2019
f87acab
Update README.md
SDraw Jun 28, 2019
c8a0c0c
Update README.md
SDraw Jun 28, 2019
0fc7092
Notifications of game profile changing and Leap Motion controller mes…
SDraw Jun 29, 2019
6d5c3bb
Minor fixes
SDraw Jun 30, 2019
35aafed
Post-build events fix
SDraw Jun 30, 2019
50d1142
Minor changes
SDraw Jul 1, 2019
9f1ce4b
Non-constant game profiles switching
SDraw Jul 3, 2019
f24eab7
Update to OpenVR 1.5.17
SDraw Jul 14, 2019
e92a83e
Update README.md
SDraw Jul 17, 2019
9ca271d
Added desktop orientation configuration
SDraw Jul 28, 2019
24702b6
Drawing mode for VRChat key combination
SDraw Jul 30, 2019
fc2c5a6
Update to OpenVR 1.16.10
SDraw Aug 20, 2019
0504318
Fingers tracking support in VRChat with Valve Index controllers emula…
SDraw Aug 21, 2019
4091341
Update README.md
SDraw Aug 21, 2019
4ebe38e
Control configuration parsing fix
SDraw Aug 21, 2019
7f02f3c
Update README.md
SDraw Aug 23, 2019
f8cdc26
Properties from real controllers
SDraw Aug 25, 2019
1a0b515
Serial number fix
SDraw Aug 27, 2019
44c3dd0
Revert of default orientation
SDraw Aug 29, 2019
c6294c8
Update FUNDING.yml
SDraw Aug 30, 2019
cb7bc7c
Update README.md
SDraw Sep 13, 2019
ff9f16d
Update README.md
SDraw Sep 13, 2019
e52397d
Thumbstick direction from keyboard input
SDraw Sep 15, 2019
1289127
Projects fix
SDraw Sep 15, 2019
9976ea2
VRChat hands reset config param
SDraw Sep 17, 2019
3cb077c
Update to OpenVR 1.7.15
SDraw Sep 27, 2019
e160848
Minor changes
SDraw Sep 30, 2019
7869227
Image update
SDraw Oct 7, 2019
2520c1a
Config param for disabling driver
SDraw Oct 14, 2019
9de378d
Update to OpenVR SDK 1.8.19
SDraw Nov 7, 2019
5e6c083
Main OpenVR repository removal
SDraw Jan 11, 2020
f617500
Fixed OpenVR repository submodule addition
SDraw Jan 11, 2020
db0ace2
Minor changes
SDraw Feb 8, 2020
4e1393e
Build fix
SDraw Feb 8, 2020
ebc2653
Update README.md
SDraw Feb 8, 2020
f0f9d56
Update README.md
SDraw Feb 8, 2020
f8e6b22
Update README.md
SDraw Feb 8, 2020
2c342a0
Strange fix for desktop orientation
SDraw Feb 8, 2020
5d7b5ef
Missed bug with special mode for Vive emulation
SDraw Feb 10, 2020
9b0dba5
Replacement of vector container to predefined size array
SDraw Feb 12, 2020
687d103
Added controller model for relay device
SDraw Mar 5, 2020
6d28797
New way to retrieve rotations from LeapSDK
SDraw Mar 7, 2020
ba943f7
Minor changes
SDraw Mar 9, 2020
8a6ca99
Removed fixed OpenVR repo
SDraw Mar 30, 2020
7d1e5c1
Restored original OpenVR repo
SDraw Mar 30, 2020
bf121b4
Update to OpenVR 1.11.11
SDraw Apr 28, 2020
b1a949a
Added more configurable offset settings
SDraw Jun 13, 2020
2630833
Fixed hand offset rotation configuration loading
urholaukkarinen Jul 16, 2020
599a773
Added a hotkey for reloading settings.xml
urholaukkarinen Jul 16, 2020
dbe61c1
Merge pull request #43 from urholaukkarinen/fix-config-typo
SDraw Jul 17, 2020
0626e66
Merge pull request #44 from urholaukkarinen/reload-config
SDraw Jul 17, 2020
2314c41
Removed information about second installation method
SDraw Jul 20, 2020
1502b77
Vendor library update
SDraw Aug 8, 2020
6948858
Removed special mode toggle
SDraw Sep 9, 2020
930d291
Minor changes
SDraw Sep 11, 2020
d82a52f
Minor changes
SDraw Sep 16, 2020
1dd0232
Minor changes
SDraw Sep 16, 2020
28be1e6
Update to OpenVR 1.14.15
SDraw Sep 22, 2020
d388029
Update README.md
SDraw Sep 28, 2020
1ce87b4
Minor change
SDraw Sep 29, 2020
a342f11
Update README.md
SDraw Oct 16, 2020
890de34
Update README.md
SDraw Nov 16, 2020
cd146d8
Removal of LeapCxx
SDraw Dec 13, 2020
008737a
Update README.md
SDraw Dec 26, 2020
a85e896
Update README.md
SDraw Jan 28, 2021
f72fc69
Update README.md
SDraw Jan 28, 2021
e9f627e
Update to OpenVR 1.16.8
SDraw Feb 26, 2021
64dad2d
Updated to Visual Studio 2019 and updated gitignore to ignore compile…
Rexios80 Apr 20, 2021
14e42ef
Added driver.vrdrivermanifest to make it actually work
Rexios80 Apr 20, 2021
8bf9ee4
Updated readme. Will also need to create and updated release.
Rexios80 Apr 21, 2021
51b1b5e
Update README.md
SDraw May 13, 2021
9574385
No
SDraw May 14, 2021
555dc48
Merge pull request #63 from Rexios80/fix/addSteamvrDriverManifest
SDraw May 19, 2021
3b84a49
Removal of AppVeyor build information
SDraw May 19, 2021
85ef398
Update README.md
SDraw May 29, 2021
84fd530
Update to Ultraleap Gemini v5.2.0
SDraw Nov 1, 2021
5f3f083
Update README.md
SDraw Nov 1, 2021
1e88831
Fixed uninitialised behaviour in LeapGetConnectionInfo.
ulowen Nov 25, 2021
dd641cf
Merge pull request #65 from ulowen/master
SDraw Nov 25, 2021
60ad24e
Update to Ultraleap SDK 5.3.1
SDraw Dec 18, 2021
c8d8575
New control input through overlays
SDraw Dec 18, 2021
86a4e31
Update README.md
SDraw Dec 18, 2021
4b6988e
Update README.md
SDraw Dec 18, 2021
b19410d
Forgotten file
SDraw Dec 19, 2021
34ff024
Update README.md
SDraw Dec 19, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ko_fi: sdraw_
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@ ipch
*.opensdf
*.opendb
*.VC.db
bin
9 changes: 9 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
[submodule "vendor/glm"]
path = vendor/glm
url = git://github.com/g-truc/glm.git
[submodule "vendor/pugixml"]
path = vendor/pugixml
url = https://github.com/zeux/pugixml.git
[submodule "vendor/openvr"]
path = vendor/openvr
url = https://github.com/ValveSoftware/openvr.git
27 changes: 0 additions & 27 deletions LICENSE

This file was deleted.

26 changes: 0 additions & 26 deletions Paths.props

This file was deleted.

183 changes: 26 additions & 157 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,161 +1,30 @@
# Leap Motion Driver for SteamVR
# Warning
This projects is closed due to unmanageable memory issues that came along with new Gemini versions.

## Installation of this driver.

- Get the Leap Motion Orion Beta runtimes https://developer.leapmotion.com/get-started
- Install the Visual C++ 2015 Update 2 redistributables (32 and 64 bits) https://www.microsoft.com/en-us/download/details.aspx?id=51682
- Download the most recent zip file from the Releases section of this project and run the contained exe setup program https://github.com/cbuchner1/driver_leap/releases

Start SteamVR to see if two additional controllers show up (they should be blinking if your hands are
not in the field of view of the Leap Motion, solid otherwise).

### Troubleshooting

If you experience frequent crashes of SteamVR on exit and this bothers you, uninstall my driver. I will try to fix this ASAP, but at the moment I have no clue why SteamVR is crashing.


## Note about WORK IN PROGRESS

You're seeing an early version of this software. I've got positional tracking established now as well as hand pose tracking. Some experimental mappings of hand gestures to triggers and buttons were added:

Trigger:
- bending of the index finger maps to the trigger button, like you would fire a gun.

Grip:
- clenching the middle, ring, pinky finger to a fist maps to the grabbing buttons

Trackpad:
- the thumbpress gesture (just point the thumb in the direction of your palm) touches and clicks the trackpad, depending on the intensity of your gesture.
- pointing the index finger towards the are of the other hand's palm will emulate the touchpad. To press the touchpad in the desired position use the tumbpress gesture simultaneously while pointing.

Menu buttons:
- Flat hand held in front of you, palm towards face is used for application menu button
- the Timeout pose (as used in sports), registers as the system menu button


Swapped hands?

when SteamVR confuses the left and right controller hands (which will be indicated by little hand icons shown near the bottom of the displayed Wand controllers), simply cross your hands the first time you bring them into view after starting SteamVR. This reverses the hand assignment and can improve the gaming experience for example in Audioshield.




I am working on allowing to freely map gestures to buttons in the steamvr.vrsettings config file in your Steam\config folder. However note that the "leap_gestures" section is currently not parsed yet. It's merely a sign of things to come.

## Supported gestures

There are other gestures detected currently, but not mapped to buttons. If you want to try these out, click on the application "gesture_checker.exe" in the directory C:\Program Files (x86)\SteamVR Leap Motion driver\leap\bin\Win32

Then I also recommend that you simultaneously bring up your Leap Motion's settings and from there start the diagnostic visualizer (the windowed version, not the VR one). Press "v" once to switch it to headmount optimized mode.

Now pull both windows side by side and bring a hand into view. The command prompt running the gesture_checker program should output a series of numbers next to the names of the gestures. A "1.0" means confidential detection, a "0.0" means no detection.

You can practise some gestures this way and also cross-check your pose in the Leap Motion diagnostic visualizer against the detection confidence.

// Finger gestures (these would not throw your hand's orientation off much)
TriggerFinger, // bend your index finger as if pulling a trigger
LowerFist, // grab with your middle, ring, pinky fingers
Pinch, // pinch with your thumb and index fingers
Thumbpress, // point the thumb towards the direction of your pinky

// Hand gestures (these would significantly change the orientation of your hand)
FlippingTheBird, // flip someone off with your middle finger
ILY, // pinky and index finger extended, middle and ring bent
Victory, // V shape with your index, middle fingers, other fingers curled
FlatHandPalmUp, // flat hand, palm points upwards (relative to alignment of Leap!)
FlatHandPalmDown, // flat hand, palm points downwards (relative to alignment of Leap!)
FlatHandPalmAway, // flat hand, palm points away from self (relative to alignment of Leap!)
FlatHandPalmTowards, // flat hand, palm points towards self (relative to alignment of Leap!)
ThumbUp, // thumb points up, remaining fingers form a fist
ThumbInward, // thumb points towards the left for the right hand and vice versa

// Two handed gestures
Timeout, // both Hands form a T shape, signals a Timeout in sports
TouchpadAxisX, // Touchpad emulation: index finger of other hand points towards palm
TouchpadAxisY, // Touchpad emulation: index finger of other hand points towards palm


### Games/Experiences that work mostly

- the Blu (all three stages)
- Irrational Exuberance: Prologue
- the Rose and I
- The Lab (some experiences work, others are tricky)
- Final Approach
- Audioshield: somehow the controllers are swapped? Control is tricky and not very precise. Semi-playable though.
# Driver Leap [![Release](http://img.shields.io/github/release/SDraw/driver_leap.svg)](../../releases/latest)
Fork with updated vendor libraries.

### Games/Experiences that are starting but not quite playable yet.

- Tilt Brush: starts and you can start doing things, but there is lack of complete trackpad support in my driver.
- Brookhaven Experiment: tracking only works while SteamVR window is in focus. Why? Gun in right hand needs a 60 degree uptilt angle (define this in steamvr.vrsettings config file in Steam config folder). Trigger gesture detection is way to imprecise, you won't even survive the first wave of Zombies.


### Demos that won't work at all
- n/a


## Known Issues

I am seeing SteamVR Server crash on shutdown a lot. This could be related to my driver, but I have not yet found the root cause for the crash.

The Brookhaven experiment seems to steal focus from StreamVR, so that Steam does not get any position tracking. Clicking on the SteamVR window restores tracking, but mutes the audio on Brookhaven. Meh.

Some games work better when no grip angle is added to the controller pose, other games actually require a steep angle to be playable (Brookhaven, Audioshield). We may have to add a feature to chose the preferred default pose at runtime.

Tracking is not quite reliable to always detect my trigger gestures. I think we will have to integrate small handheld controllers like the Wiimote or the Playstation Move Navigation controller in the future.

I do not think I will be able to get animated hands into the 3D view, as the render model you can assign to each controller is mostly a static object. There are some JSON files to map joystick axes and triggers to animated parts of the displayed controller. But the fingers do not directly map to joystick axes directly and hence cannot be shown. Also not all games make use of SteamVR's internal controller visualization.


## Building from Sourcecode (Developers only)

### Install Dependencies

1. Install SteamVR. It is under "Tools" in everyone's Steam Library. steam://install/250820
2. Install "Leap Motion Orion SDK V3.1.2". https://developer.leapmotion.com/get-started
3. Fetch the OpenVR SDK 1.0.0 from https://github.com/ValveSoftware/openvr .

The solution and project files are for Visual Studio 2015.

### Configure Paths

Under "Property Manager" in Visual Studio, expand any of the configurations and find "Paths". Right click and select "Properties" and then "User Macros". Modify the paths to match your setup. InstallDir will be created, and will be configured as an external driver path for SteamVR.

### Build

You will probably want to build Release x86. You can also build x64. The post-build step will install the binaries and copy the resources to the configured InstallDir and register that path with SteamVR.

## Preapring The Leap Motion Driver for use (Developers only)

After building, the InstallDir should be a complete binary distribution. To use it:

1. Register it with the SteamVR runtime via "vrpathreg adddriver $(InstallDir)". This is done automatically by a Post-Build step, but if you copy the files elsewhere you will have to do it by hand.
2. Edit your config/steamvr.vrsettings to enable "activateMultipleDrivers". This is what allows the hydra driver to co-exist with any HMD. **Be sure to mind your commas.** Check vrserver.txt log to see if there were parse errors. Many of the settings are described at https://developer.valvesoftware.com/wiki/SteamVR/steamvr.vrsettings .
```{
...
"steamvr" : {
"activateMultipleDrivers" : true
}
}```
3. If you are trying to use the Hydra driver without an HMD, you might want to enable driver_null (no HMD) or set "requireHmd": false.

After starting SteamVR, you should see controllers blinking in the status window until you move your hands into the field of view.

You can use "vrcmd" (with no arguments) to see a list of devices to verify things are working.
use "vrcmd" to verify things are loading:

```...
Driver leap : 2 displays
leap (Serial number leap0_lefthand)
leap (Serial number leap0_righthand)
...
## Installation (for users)
* Install [Ultraleap Gemini v5.3.1](https://developer.leapmotion.com/tracking-software-download)
* Extract [latest release archive](../../releases/latest) to `<SteamVR_folder>/drivers`
* Add line in section `steamvr` of `<Steam_folder>/config/steamvr.vrsettings` file:
```JSON
"activateMultipleDrivers": true,
```

You can also use "vrcmd --pollposes" (followed by an index number to limit the output) to see if things are working.

## Licenses

The code in this distribution is distributed under the terms of the LICENSE file in the root directory.

The compiled driver and the install directory use the Leap Motion Orion SDK. Use subject to the terms of the Leap Motion SDK Agreement available at
https://developer.leapmotion.com/sdk_agreement.
## Usage
### Settings
Driver settings are configurated by editing `resources/settings.xml`. Available settings:
* `trackingLevel`: skeleton tracking style for OpenVR. Can be `partial` or `full`. `partial` by default.
* `handsReset`: marks controllers as out of range if hand for controller isn't detected by Leap Motion. `false` by default.
* `interpolation`: enables internal Leap Motion data capture interpolation. `false` by default.
* `useVelocity`: enables velocity data from Leap Motion for hands. `false` by default.

### Gestures
List of hands gestures that correspond to controller original input:
* **Grip:** bending of middle, ring and pinky fingers
* **Trigger:** bending of index finger.

### Notes
* Testing commits are currently pushed.
* If you see only green dots that represent tip of your index fingers, force application to launch on dGPU through control panel of your GPU vendor.
6 changes: 6 additions & 0 deletions driver.vrdrivermanifest
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"alwaysActivate": true,
"name" : "leap",
"directory" : "",
"resourceOnly" : false
}
59 changes: 11 additions & 48 deletions driver_leap.sln
Original file line number Diff line number Diff line change
@@ -1,68 +1,31 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.25123.0
# Visual Studio 15
VisualStudioVersion = 15.0.28307.1738
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "driver_leap", "drivers\driver_leap\driver_leap.vcxproj", "{52D3F16D-A7A5-4D6F-8F17-5E4B459A1440}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "driver_leap", "driver_leap\driver_leap.vcxproj", "{52D3F16D-A7A5-4D6F-8F17-5E4B459A1440}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "leap_monitor", "tools\leap_monitor\leap_monitor.vcxproj", "{BC06AF9C-36D6-455A-B421-00A9635684AD}"
EndProject
Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "leap_installer", "tools\leap_installer\leap_installer.vdproj", "{60517323-2772-4341-9161-56C776DC1840}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gesture_checker", "tools\gesture_checker\gesture_checker.vcxproj", "{9C28E205-C4CD-43D4-91BC-4852D7A588EC}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "config_tool", "tools\config_tool\config_tool.vcxproj", "{FD2D3DBF-C82D-4333-9710-7DD2C51FA8E1}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "leap_control", "leap_control\leap_control.csproj", "{B156A0E6-BC15-4987-A1E8-F6D6E69786BC}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{52D3F16D-A7A5-4D6F-8F17-5E4B459A1440}.Debug|x64.ActiveCfg = Debug|x64
{52D3F16D-A7A5-4D6F-8F17-5E4B459A1440}.Debug|x64.Build.0 = Debug|x64
{52D3F16D-A7A5-4D6F-8F17-5E4B459A1440}.Debug|x86.ActiveCfg = Debug|Win32
{52D3F16D-A7A5-4D6F-8F17-5E4B459A1440}.Debug|x86.Build.0 = Debug|Win32
{52D3F16D-A7A5-4D6F-8F17-5E4B459A1440}.Release|x64.ActiveCfg = Release|x64
{52D3F16D-A7A5-4D6F-8F17-5E4B459A1440}.Release|x64.Build.0 = Release|x64
{52D3F16D-A7A5-4D6F-8F17-5E4B459A1440}.Release|x86.ActiveCfg = Release|Win32
{52D3F16D-A7A5-4D6F-8F17-5E4B459A1440}.Release|x86.Build.0 = Release|Win32
{BC06AF9C-36D6-455A-B421-00A9635684AD}.Debug|x64.ActiveCfg = Debug|x64
{BC06AF9C-36D6-455A-B421-00A9635684AD}.Debug|x64.Build.0 = Debug|x64
{BC06AF9C-36D6-455A-B421-00A9635684AD}.Debug|x86.ActiveCfg = Debug|Win32
{BC06AF9C-36D6-455A-B421-00A9635684AD}.Debug|x86.Build.0 = Debug|Win32
{BC06AF9C-36D6-455A-B421-00A9635684AD}.Release|x64.ActiveCfg = Release|x64
{BC06AF9C-36D6-455A-B421-00A9635684AD}.Release|x64.Build.0 = Release|x64
{BC06AF9C-36D6-455A-B421-00A9635684AD}.Release|x86.ActiveCfg = Release|Win32
{BC06AF9C-36D6-455A-B421-00A9635684AD}.Release|x86.Build.0 = Release|Win32
{60517323-2772-4341-9161-56C776DC1840}.Debug|x64.ActiveCfg = Debug
{60517323-2772-4341-9161-56C776DC1840}.Debug|x64.Build.0 = Debug
{60517323-2772-4341-9161-56C776DC1840}.Debug|x86.ActiveCfg = Debug
{60517323-2772-4341-9161-56C776DC1840}.Debug|x86.Build.0 = Debug
{60517323-2772-4341-9161-56C776DC1840}.Release|x64.ActiveCfg = Release
{60517323-2772-4341-9161-56C776DC1840}.Release|x64.Build.0 = Release
{60517323-2772-4341-9161-56C776DC1840}.Release|x86.ActiveCfg = Release
{60517323-2772-4341-9161-56C776DC1840}.Release|x86.Build.0 = Release
{9C28E205-C4CD-43D4-91BC-4852D7A588EC}.Debug|x64.ActiveCfg = Debug|x64
{9C28E205-C4CD-43D4-91BC-4852D7A588EC}.Debug|x64.Build.0 = Debug|x64
{9C28E205-C4CD-43D4-91BC-4852D7A588EC}.Debug|x86.ActiveCfg = Debug|Win32
{9C28E205-C4CD-43D4-91BC-4852D7A588EC}.Debug|x86.Build.0 = Debug|Win32
{9C28E205-C4CD-43D4-91BC-4852D7A588EC}.Release|x64.ActiveCfg = Release|x64
{9C28E205-C4CD-43D4-91BC-4852D7A588EC}.Release|x64.Build.0 = Release|x64
{9C28E205-C4CD-43D4-91BC-4852D7A588EC}.Release|x86.ActiveCfg = Release|Win32
{9C28E205-C4CD-43D4-91BC-4852D7A588EC}.Release|x86.Build.0 = Release|Win32
{FD2D3DBF-C82D-4333-9710-7DD2C51FA8E1}.Debug|x64.ActiveCfg = Debug|x64
{FD2D3DBF-C82D-4333-9710-7DD2C51FA8E1}.Debug|x64.Build.0 = Debug|x64
{FD2D3DBF-C82D-4333-9710-7DD2C51FA8E1}.Debug|x86.ActiveCfg = Debug|Win32
{FD2D3DBF-C82D-4333-9710-7DD2C51FA8E1}.Debug|x86.Build.0 = Debug|Win32
{FD2D3DBF-C82D-4333-9710-7DD2C51FA8E1}.Release|x64.ActiveCfg = Release|x64
{FD2D3DBF-C82D-4333-9710-7DD2C51FA8E1}.Release|x64.Build.0 = Release|x64
{FD2D3DBF-C82D-4333-9710-7DD2C51FA8E1}.Release|x86.ActiveCfg = Release|Win32
{FD2D3DBF-C82D-4333-9710-7DD2C51FA8E1}.Release|x86.Build.0 = Release|Win32
{B156A0E6-BC15-4987-A1E8-F6D6E69786BC}.Debug|x64.ActiveCfg = Debug|x64
{B156A0E6-BC15-4987-A1E8-F6D6E69786BC}.Debug|x64.Build.0 = Debug|x64
{B156A0E6-BC15-4987-A1E8-F6D6E69786BC}.Release|x64.ActiveCfg = Release|x64
{B156A0E6-BC15-4987-A1E8-F6D6E69786BC}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {5B906255-44C8-427C-8F9B-99D222337F78}
EndGlobalSection
EndGlobal
Loading