├── .gitattributes ├── .gitignore ├── .vs └── HeadlessOverlayToolkit │ └── v14 │ └── .suo ├── Assets ├── ButtonBox.meta ├── ButtonBox │ ├── ButtonBox.unity │ ├── ButtonBox.unity.meta │ ├── Resources.meta │ ├── Resources │ │ ├── Overlay.prefab │ │ └── Overlay.prefab.meta │ ├── Scripts.meta │ ├── Scripts │ │ ├── ActivityMonitor.cs │ │ ├── ActivityMonitor.cs.meta │ │ ├── ButtonGrid.cs │ │ ├── ButtonGrid.cs.meta │ │ ├── DataLoader.cs │ │ ├── DataLoader.cs.meta │ │ ├── DirectoryInfo.cs │ │ ├── DirectoryInfo.cs.meta │ │ ├── GridButton.cs │ │ ├── GridButton.cs.meta │ │ ├── HandBillboard.cs │ │ ├── HandBillboard.cs.meta │ │ ├── HandComponents.cs │ │ ├── HandComponents.cs.meta │ │ ├── KeyCombo.cs │ │ ├── KeyCombo.cs.meta │ │ ├── KeyboardInput.cs │ │ ├── KeyboardInput.cs.meta │ │ ├── Keypress.cs │ │ ├── Keypress.cs.meta │ │ ├── OverlayLoader.cs │ │ ├── OverlayLoader.cs.meta │ │ ├── Profile.cs │ │ ├── Profile.cs.meta │ │ ├── Settings.cs │ │ └── Settings.cs.meta │ ├── button_hover.png │ ├── button_hover.png.meta │ ├── button_leftright.png │ ├── button_leftright.png.meta │ ├── button_multi.png │ ├── button_multi.png.meta │ ├── button_multi_leftright.png │ ├── button_multi_leftright.png.meta │ ├── button_press.png │ ├── button_press.png.meta │ ├── button_rotary.png │ ├── button_rotary.png.meta │ ├── button_threeway.png │ ├── button_threeway.png.meta │ ├── controller_body.png │ ├── controller_body.png.meta │ ├── green_select.png │ ├── green_select.png.meta │ ├── green_select_transparent.png │ ├── green_select_transparent.png.meta │ ├── grid4.png │ ├── grid4.png.meta │ ├── laser.png │ ├── laser.png.meta │ ├── sphere.png │ ├── sphere.png.meta │ ├── sphere_green.png │ └── sphere_green.png.meta ├── Editor.meta ├── Editor │ ├── HOTK.meta │ └── HOTK │ │ ├── HOTK_OverlayInspector.cs │ │ └── HOTK_OverlayInspector.cs.meta ├── HOTK.meta ├── HOTK │ ├── Example Content.meta │ ├── Example Content │ │ ├── HOTK_DemoDesktopCameraScript.cs │ │ ├── HOTK_DemoDesktopCameraScript.cs.meta │ │ ├── HOTK_DemoScene.unity │ │ ├── HOTK_DemoScene.unity.meta │ │ ├── HOTK_DisplayMaterial.mat │ │ ├── HOTK_DisplayMaterial.mat.meta │ │ ├── steam.png │ │ └── steam.png.meta │ ├── HOTK_Overlay.cs │ ├── HOTK_Overlay.cs.meta │ ├── HOTK_TrackedDevice.cs │ ├── HOTK_TrackedDevice.cs.meta │ ├── HOTK_TrackedDeviceManager.cs │ ├── HOTK_TrackedDeviceManager.cs.meta │ ├── [HOTKCameraRig].prefab │ └── [HOTKCameraRig].prefab.meta ├── Plugins.meta ├── Plugins │ ├── openvr_api.bundle.meta │ ├── openvr_api.bundle │ │ ├── Contents.meta │ │ └── Contents │ │ │ ├── Info.plist │ │ │ ├── Info.plist.meta │ │ │ ├── MacOS.meta │ │ │ └── MacOS │ │ │ ├── openvr_api │ │ │ └── openvr_api.meta │ ├── openvr_api.cs │ ├── openvr_api.cs.meta │ ├── x86.meta │ ├── x86 │ │ ├── libopenvr_api.so │ │ ├── libopenvr_api.so.meta │ │ ├── openvr_api.dll │ │ └── openvr_api.dll.meta │ ├── x86_64.meta │ └── x86_64 │ │ ├── libopenvr_api.so │ │ ├── libopenvr_api.so.meta │ │ ├── openvr_api.dll │ │ └── openvr_api.dll.meta ├── SteamVR.meta └── SteamVR │ ├── Editor.meta │ ├── Editor │ ├── SteamVR_Editor.cs │ ├── SteamVR_Editor.cs.meta │ ├── SteamVR_Settings.cs │ ├── SteamVR_Settings.cs.meta │ ├── SteamVR_Update.cs │ └── SteamVR_Update.cs.meta │ ├── Prefabs.meta │ ├── Prefabs │ ├── [SteamVR].prefab │ └── [SteamVR].prefab.meta │ ├── Resources.meta │ ├── Resources │ ├── SteamVR_Blit.shader │ ├── SteamVR_Blit.shader.meta │ ├── SteamVR_BlitFlip.shader │ ├── SteamVR_BlitFlip.shader.meta │ ├── SteamVR_HiddenArea.shader │ └── SteamVR_HiddenArea.shader.meta │ ├── Scripts.meta │ ├── Scripts │ ├── SteamVR.cs │ ├── SteamVR.cs.meta │ ├── SteamVR_Camera.cs │ ├── SteamVR_Camera.cs.meta │ ├── SteamVR_CameraFlip.cs │ ├── SteamVR_CameraFlip.cs.meta │ ├── SteamVR_CameraMask.cs │ ├── SteamVR_CameraMask.cs.meta │ ├── SteamVR_Controller.cs │ ├── SteamVR_Controller.cs.meta │ ├── SteamVR_ControllerManager.cs │ ├── SteamVR_ControllerManager.cs.meta │ ├── SteamVR_Ears.cs │ ├── SteamVR_Ears.cs.meta │ ├── SteamVR_ExternalCamera.cs │ ├── SteamVR_ExternalCamera.cs.meta │ ├── SteamVR_Frustum.cs │ ├── SteamVR_Frustum.cs.meta │ ├── SteamVR_GameView.cs │ ├── SteamVR_GameView.cs.meta │ ├── SteamVR_Overlay.cs │ ├── SteamVR_Overlay.cs.meta │ ├── SteamVR_Render.cs │ ├── SteamVR_Render.cs.meta │ ├── SteamVR_TrackedObject.cs │ ├── SteamVR_TrackedObject.cs.meta │ ├── SteamVR_Utils.cs │ └── SteamVR_Utils.cs.meta │ ├── Textures.meta │ ├── Textures │ ├── logo.png │ ├── logo.png.meta │ ├── overlay.renderTexture │ ├── overlay.renderTexture.meta │ ├── workshop.png │ └── workshop.png.meta │ ├── readme.txt │ └── readme.txt.meta ├── Documentation Images ├── button_controls.png ├── grid_buttons.png ├── grid_position.png ├── multi_rotary.png ├── multi_switch.png ├── profile_buttons.png ├── profile_settings.png ├── profiler.png ├── reference_buttons.png ├── settings.png ├── three_way.png └── two_rotary.png ├── HeadlessOverlayToolkit.CSharp.Editor.csproj ├── HeadlessOverlayToolkit.CSharp.Plugins.csproj ├── HeadlessOverlayToolkit.CSharp.csproj ├── HeadlessOverlayToolkit.sln ├── ProjectSettings ├── AudioManager.asset ├── ClusterInputManager.asset ├── DynamicsManager.asset ├── EditorBuildSettings.asset ├── EditorSettings.asset ├── GraphicsSettings.asset ├── InputManager.asset ├── NavMeshAreas.asset ├── NetworkManager.asset ├── Physics2DSettings.asset ├── ProjectSettings.asset ├── ProjectVersion.txt ├── QualitySettings.asset ├── TagManager.asset ├── TimeManager.asset ├── UnityAdsSettings.asset └── UnityConnectSettings.asset ├── VirtualButtonBox.CSharp.Editor.csproj ├── VirtualButtonBox.CSharp.Plugins.csproj ├── VirtualButtonBox.CSharp.csproj ├── VirtualButtonBox.sln └── readme.md /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | 7 | # Standard to msysgit 8 | *.doc diff=astextplain 9 | *.DOC diff=astextplain 10 | *.docx diff=astextplain 11 | *.DOCX diff=astextplain 12 | *.dot diff=astextplain 13 | *.DOT diff=astextplain 14 | *.pdf diff=astextplain 15 | *.PDF diff=astextplain 16 | *.rtf diff=astextplain 17 | *.RTF diff=astextplain 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | #Unity Stuffs 2 | Temp/ 3 | .vs/ 4 | Library/ 5 | 6 | # Windows image file caches 7 | Thumbs.db 8 | ehthumbs.db 9 | 10 | # Folder config file 11 | Desktop.ini 12 | 13 | # Recycle Bin used on file shares 14 | $RECYCLE.BIN/ 15 | 16 | # Windows Installer files 17 | *.cab 18 | *.msi 19 | *.msm 20 | *.msp 21 | 22 | # Windows shortcuts 23 | *.lnk 24 | 25 | # ========================= 26 | # Operating System Files 27 | # ========================= 28 | 29 | # OSX 30 | # ========================= 31 | 32 | .DS_Store 33 | .AppleDouble 34 | .LSOverride 35 | 36 | # Thumbnails 37 | ._* 38 | 39 | # Files that might appear in the root of a volume 40 | .DocumentRevisions-V100 41 | .fseventsd 42 | .Spotlight-V100 43 | .TemporaryItems 44 | .Trashes 45 | .VolumeIcon.icns 46 | 47 | # Directories potentially created on remote AFP share 48 | .AppleDB 49 | .AppleDesktop 50 | Network Trash Folder 51 | Temporary Items 52 | .apdisk 53 | -------------------------------------------------------------------------------- /.vs/HeadlessOverlayToolkit/v14/.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/.vs/HeadlessOverlayToolkit/v14/.suo -------------------------------------------------------------------------------- /Assets/ButtonBox.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b8f71b531e8ce8c4fbbde867a11aac5b 3 | folderAsset: yes 4 | timeCreated: 1485126192 5 | licenseType: Free 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/ButtonBox/ButtonBox.unity: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/Assets/ButtonBox/ButtonBox.unity -------------------------------------------------------------------------------- /Assets/ButtonBox/ButtonBox.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c24d79171b2864f4bb816ff2c8a8a21d 3 | timeCreated: 1485126192 4 | licenseType: Free 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/ButtonBox/Resources.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3c036c24aa541bb47971d10a84bf97ed 3 | folderAsset: yes 4 | timeCreated: 1486047540 5 | licenseType: Free 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/ButtonBox/Resources/Overlay.prefab: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/Assets/ButtonBox/Resources/Overlay.prefab -------------------------------------------------------------------------------- /Assets/ButtonBox/Resources/Overlay.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f1329c2e70eebb94facd829fa89be3da 3 | timeCreated: 1486047372 4 | licenseType: Free 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/ButtonBox/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 37e340a7017695e4da6aec383d443425 3 | folderAsset: yes 4 | timeCreated: 1485723914 5 | licenseType: Free 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/ButtonBox/Scripts/ActivityMonitor.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using Valve.VR; 5 | 6 | public class ActivityMonitor : MonoBehaviour { 7 | private List Positions; 8 | private List Speeds; 9 | 10 | private float alpha = 0.1f; 11 | 12 | public static bool Active; 13 | 14 | // Use this for initialization 15 | void Start () { 16 | //OpenVR.Compositor.SetTrackingSpace(ETrackingUniverseOrigin.TrackingUniverseSeated); 17 | } 18 | 19 | // Update is called once per frame 20 | void Update () { 21 | /* 22 | if(OpenVR.Compositor.GetTrackingSpace() != ETrackingUniverseOrigin.TrackingUniverseSeated) { 23 | OpenVR.Compositor.SetTrackingSpace(ETrackingUniverseOrigin.TrackingUniverseSeated); 24 | } 25 | */ 26 | 27 | if (Positions == null || DataLoader.HandComponents.Count != Positions.Count) { 28 | Positions = new List(DataLoader.HandComponents.Count); 29 | Speeds = new List(DataLoader.HandComponents.Count); 30 | foreach (HandComponents hand in DataLoader.HandComponents) { 31 | //Positions.Add(hand.Controller.transform.position); 32 | Positions.Add(hand.Controller.transform.rotation.eulerAngles); 33 | Speeds.Add(0f); 34 | } 35 | } 36 | 37 | float max = 0; 38 | for(int i=0; i max) { 50 | max = Speeds[i]; 51 | } 52 | } 53 | 54 | if (!Active) { 55 | Active = max > 50; 56 | } 57 | else { 58 | Active = max > 1; 59 | } 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /Assets/ButtonBox/Scripts/ActivityMonitor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9c6ee07cea1027e4b914a5331509f44d 3 | timeCreated: 1486243170 4 | licenseType: Free 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: -16000 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/ButtonBox/Scripts/ButtonGrid.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | [Serializable] 5 | public class ButtonGrid : UnityEngine.ISerializationCallbackReceiver { 6 | [NonSerialized] 7 | public Profile parent; 8 | public string name; 9 | public string filename; 10 | public int gridWidth; 11 | public int gridHeight; 12 | public double width; 13 | public double height; 14 | public double x; 15 | public double y; 16 | public double z; 17 | public double pitch; 18 | public double yaw; 19 | public double roll; 20 | public double alpha; 21 | public bool outline; 22 | public bool border; 23 | public bool locked; 24 | public List buttons; 25 | 26 | private GridButton[,] SpatialIndex; 27 | 28 | public void RebuildSpatialIndex() { 29 | this.SpatialIndex = new GridButton[this.gridWidth, this.gridHeight]; 30 | foreach (GridButton button in this.buttons) { 31 | this.AddButtonToIndex(button); 32 | } 33 | } 34 | 35 | public void RemoveButtonFromIndex(GridButton button) { 36 | for (int x = button.x; x < button.x + button.width; x++) { 37 | for (int y = button.y; y < button.y + button.height; y++) { 38 | //Debug.Assert(this.SpatialIndex[x, y] == button); 39 | this.SpatialIndex[x, y] = null; 40 | } 41 | } 42 | } 43 | 44 | public void AddButtonToIndex(GridButton button) { 45 | for (int x = button.x; x < button.x + button.width; x++) { 46 | for (int y = button.y; y < button.y + button.height; y++) { 47 | //Debug.Assert(this.SpatialIndex[x, y] == null); 48 | this.SpatialIndex[x, y] = button; 49 | } 50 | } 51 | } 52 | 53 | public GridButton ButtonAtPosition(int x, int y) { 54 | return this.SpatialIndex[x, y]; 55 | } 56 | 57 | public void OnBeforeSerialize() { 58 | } 59 | 60 | public void OnAfterDeserialize() { 61 | this.RebuildSpatialIndex(); 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /Assets/ButtonBox/Scripts/ButtonGrid.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5b3e6596930ca6542924d49a3b4bf463 3 | timeCreated: 1485725641 4 | licenseType: Free 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/ButtonBox/Scripts/DataLoader.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using System.IO; 5 | using Valve.VR; 6 | 7 | public class DataLoader { 8 | public static Settings Settings; 9 | public static Profile Profile; 10 | public static List profiles; 11 | 12 | public static List HandComponents = new List(); 13 | public static List Overlays = new List(); 14 | 15 | public static OverlayLoader ProfileOverlay; 16 | public static List ProfileOverlayList; 17 | public static bool SelectingProfile = false; 18 | 19 | private static int PixelDensity = 1500; 20 | 21 | static DataLoader () { 22 | StreamReader r = new StreamReader(DirectoryInfo.SettingsPath); 23 | Settings = JsonUtility.FromJson(r.ReadToEnd()); 24 | r.Close(); 25 | 26 | profiles = new List(); 27 | foreach (string directory in Directory.GetDirectories(DirectoryInfo.FolderPath)) { 28 | r = new StreamReader(Path.Combine(directory, DirectoryInfo.ProfileName)); 29 | Profile profile = JsonUtility.FromJson(r.ReadToEnd()); 30 | r.Close(); 31 | profile.directory = directory; 32 | profiles.Add(profile); 33 | } 34 | 35 | profiles.Sort(); 36 | Profile defaultProfile = profiles[0]; 37 | foreach(Profile profile in profiles) { 38 | if(profile.isDefault) { 39 | defaultProfile = profile; 40 | break; 41 | } 42 | } 43 | SetProfile(defaultProfile); 44 | 45 | CreateProfileOverlay(); 46 | } 47 | 48 | public static void SetProfile(Profile profile) { 49 | Profile = profile; 50 | foreach(OverlayLoader overlay in Overlays) { 51 | GameObject.Destroy(overlay.GetComponent().OverlayTexture); 52 | GameObject.Destroy(overlay.gameObject); 53 | } 54 | Overlays.Clear(); 55 | foreach (ButtonGrid grid in Profile.grids) { 56 | GameObject overlay = (GameObject)GameObject.Instantiate(Resources.Load("Overlay")); 57 | overlay.GetComponent().ButtonGrid = grid; 58 | overlay.GetComponent().OverlayTexture = new Texture2D(16, 16); 59 | foreach(GridButton button in grid.buttons) { 60 | button.currentKeypress = button.defaultKeypress; 61 | } 62 | } 63 | foreach(Profile p in profiles) { 64 | p.isDefault = p == profile; 65 | SaveProfile(p); 66 | } 67 | } 68 | 69 | private static void CreateProfileOverlay() { 70 | Profile profile = new Profile(); 71 | profile.name = "Profiles"; 72 | profile.directory = DirectoryInfo.FolderPath; 73 | profile.grids = new List(1); 74 | profile.index = -1; 75 | 76 | ButtonGrid grid = new ButtonGrid(); 77 | grid.parent = profile; 78 | profile.grids.Add(grid); 79 | grid.name = "Profiles"; 80 | grid.filename = DirectoryInfo.ProfilesTextureName; 81 | 82 | float buttonSize = 0.1f; 83 | int gridWidth = 4; 84 | int gridHeight = 2; 85 | while ((gridWidth * (gridHeight - 1)) < profiles.Count) { 86 | if (gridWidth == gridHeight - 1) { 87 | gridWidth++; 88 | } 89 | else { 90 | gridHeight++; 91 | } 92 | } 93 | 94 | grid.gridWidth = gridWidth; 95 | grid.gridHeight = gridHeight; 96 | grid.width = buttonSize * gridWidth; 97 | grid.height = buttonSize * gridHeight; 98 | grid.buttons = new List(profiles.Count); 99 | grid.x = 0; 100 | grid.y = 1; 101 | grid.z = 0; 102 | grid.pitch = 0; 103 | grid.yaw = 0; 104 | grid.roll = 0; 105 | grid.alpha = 1; 106 | 107 | GridButton resetButton = new GridButton(); 108 | resetButton.x = 0; 109 | resetButton.y = 0; 110 | resetButton.width = gridWidth/2; 111 | resetButton.height = 1; 112 | resetButton.text = "Reset Seated Position"; 113 | resetButton.fontSize = 0.0125; 114 | resetButton.keypress = null; 115 | grid.buttons.Add(resetButton); 116 | 117 | GridButton laserButton = new GridButton(); 118 | laserButton.x = 2; 119 | laserButton.y = 0; 120 | laserButton.width = gridWidth - (gridWidth/2); 121 | laserButton.height = 1; 122 | laserButton.text = "Reset Seated Position"; 123 | laserButton.fontSize = 0.0125; 124 | laserButton.keypress = null; 125 | grid.buttons.Add(laserButton); 126 | 127 | int x = 0; 128 | int y = 1; 129 | foreach(Profile p in profiles) { 130 | GridButton button = new GridButton(); 131 | button.x = x; 132 | button.y = y; 133 | button.width = 1; 134 | button.height = 1; 135 | button.text = p.name; 136 | button.fontSize = 0.01; 137 | button.keypress = null; 138 | grid.buttons.Add(button); 139 | 140 | x++; 141 | if(x >= gridWidth) { 142 | x = 0; 143 | y++; 144 | } 145 | } 146 | grid.RebuildSpatialIndex(); 147 | 148 | GameObject overlay = (GameObject)GameObject.Instantiate(Resources.Load("Overlay")); 149 | OverlayLoader loader = overlay.GetComponent(); 150 | overlay.GetComponent().OverlayTexture = new Texture2D(16, 16); 151 | loader.ButtonGrid = grid; 152 | ProfileOverlay = loader; 153 | ProfileOverlayList = new List(1); 154 | ProfileOverlayList.Add(ProfileOverlay); 155 | } 156 | 157 | public static void SavePositions() { 158 | SaveProfile(Profile); 159 | } 160 | 161 | private static void SaveProfile(Profile p) { 162 | StreamWriter w = new StreamWriter(Path.Combine(p.directory, DirectoryInfo.ProfileName), false); 163 | w.Write(JsonUtility.ToJson(p)); 164 | w.Close(); 165 | } 166 | 167 | public static void StartSelectingProfile(Vector3 overlayPosition, Vector3 headPosition) { 168 | SelectingProfile = true; 169 | ProfileOverlay.transform.position = overlayPosition; 170 | ProfileOverlay.transform.LookAt(ProfileOverlay.transform.position - (headPosition - ProfileOverlay.transform.position)); 171 | } 172 | 173 | public static void StopSelectingProfile(int index) { 174 | SelectingProfile = false; 175 | if(index == 0) { 176 | OpenVR.System.ResetSeatedZeroPose(); 177 | } 178 | else if(index == 1) { 179 | Settings.Lasermode = !Settings.Lasermode; 180 | StreamWriter w = new StreamWriter(DirectoryInfo.SettingsPath, false); 181 | w.Write(JsonUtility.ToJson(Settings)); 182 | w.Close(); 183 | } 184 | else if(index > 0) { 185 | SetProfile(profiles[index-2]); 186 | } 187 | } 188 | } 189 | -------------------------------------------------------------------------------- /Assets/ButtonBox/Scripts/DataLoader.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 386921a1970ccd54eb1fa1364215a755 3 | timeCreated: 1485723873 4 | licenseType: Free 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: -16000 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/ButtonBox/Scripts/DirectoryInfo.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections; 3 | using System.IO; 4 | using System; 5 | 6 | public class DirectoryInfo { 7 | public static readonly string FolderName = "Virtual Button Box"; 8 | public static readonly string SettingsName = "settings.json"; 9 | public static readonly string ProfileName = "profile.json"; 10 | public static readonly string ProfilesTextureName = "profiles.png"; 11 | public static readonly string FolderPath; 12 | public static readonly string SettingsPath; 13 | public static readonly string ProfilesTexturePath; 14 | 15 | static DirectoryInfo() { 16 | FolderPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), FolderName); 17 | Directory.CreateDirectory(FolderPath); 18 | SettingsPath = Path.Combine(FolderPath, SettingsName); 19 | ProfilesTexturePath = Path.Combine(FolderPath, ProfilesTextureName); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Assets/ButtonBox/Scripts/DirectoryInfo.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: aea429b66612cbe4794bc3b04c6b4df3 3 | timeCreated: 1485720076 4 | licenseType: Free 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/ButtonBox/Scripts/GridButton.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | public enum ButtonType { 5 | Normal, 6 | TwoDirectionRotary, 7 | MultiPositionRotary, 8 | ThreeWaySwitch, 9 | MultiPositionSwitch 10 | } 11 | 12 | [Serializable] 13 | public class GridButton : UnityEngine.ISerializationCallbackReceiver { 14 | public int x; 15 | public int y; 16 | public int width; 17 | public int height; 18 | public string text; 19 | public double fontSize; 20 | public ButtonType buttonType; 21 | public double rotaryAngle; 22 | public KeyCombo keypress; 23 | public KeyCombo cwKeypress; 24 | public KeyCombo ccwKeypress; 25 | public List multiKeypresses; 26 | public int defaultKeypress; 27 | public bool isLeftRight; 28 | [NonSerialized] 29 | public int currentKeypress; 30 | 31 | public void OnBeforeSerialize() { 32 | 33 | } 34 | 35 | public void OnAfterDeserialize() { 36 | currentKeypress = defaultKeypress; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Assets/ButtonBox/Scripts/GridButton.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 65d1f23035aa1ef43909035eacda3078 3 | timeCreated: 1485725641 4 | licenseType: Free 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/ButtonBox/Scripts/HandBillboard.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 894cde2d057b9fe4a9247997065e57a9 3 | timeCreated: 1485126968 4 | licenseType: Free 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/ButtonBox/Scripts/HandComponents.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections; 3 | 4 | public class HandComponents { 5 | public GameObject Controller; 6 | public HandBillboard Billboard; 7 | 8 | public HandComponents(GameObject controller, HandBillboard billboard) { 9 | this.Controller = controller; 10 | this.Billboard = billboard; 11 | } 12 | } -------------------------------------------------------------------------------- /Assets/ButtonBox/Scripts/HandComponents.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 68e86020ba1407a4ba9150a65c153a83 3 | timeCreated: 1485739553 4 | licenseType: Free 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/ButtonBox/Scripts/KeyCombo.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | [Serializable] 5 | public class KeyCombo { 6 | public List keypresses; 7 | 8 | public KeyCombo(List presses) { 9 | System.Diagnostics.Debug.Assert(presses.Count > 0); 10 | keypresses = presses; 11 | } 12 | 13 | public override string ToString() { 14 | string result = ""; 15 | foreach (Keypress k in keypresses) { 16 | result = result + k.ToString() + " + "; 17 | } 18 | if (result.Length > 2) { 19 | result = result.Substring(0, result.Length - 3); 20 | } 21 | return result; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Assets/ButtonBox/Scripts/KeyCombo.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a05fd8e04e24e3a45811974f97802533 3 | timeCreated: 1488057627 4 | licenseType: Free 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/ButtonBox/Scripts/KeyboardInput.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections; 3 | using System.Runtime.InteropServices; 4 | using System; 5 | 6 | public class KeyboardInput { 7 | 8 | [DllImport("user32.dll")] 9 | internal static extern uint SendInput(uint nInputs, 10 | [MarshalAs(UnmanagedType.LPArray), In] INPUT[] pInputs, 11 | int cbSize); 12 | 13 | [StructLayout(LayoutKind.Sequential)] 14 | public struct INPUT { 15 | internal InputType type; 16 | internal InputUnion U; 17 | internal static int Size { 18 | get { return Marshal.SizeOf(typeof(INPUT)); } 19 | } 20 | } 21 | 22 | internal enum InputType : uint { 23 | MOUSE = 0, 24 | KEYBOARD = 1, 25 | HARDWARE = 2 26 | } 27 | 28 | [StructLayout(LayoutKind.Explicit)] 29 | internal struct InputUnion { 30 | [FieldOffset(0)] 31 | internal MOUSEINPUT mi; 32 | [FieldOffset(0)] 33 | internal KEYBDINPUT ki; 34 | [FieldOffset(0)] 35 | internal HARDWAREINPUT hi; 36 | } 37 | 38 | [StructLayout(LayoutKind.Sequential)] 39 | internal struct MOUSEINPUT { 40 | internal int dx; 41 | internal int dy; 42 | internal int mouseData; 43 | internal uint dwFlags; 44 | internal uint time; 45 | internal UIntPtr dwExtraInfo; 46 | } 47 | 48 | [StructLayout(LayoutKind.Sequential)] 49 | internal struct KEYBDINPUT { 50 | internal short wVk; 51 | internal short wScan; 52 | internal KEYEVENTF dwFlags; 53 | internal int time; 54 | internal UIntPtr dwExtraInfo; 55 | } 56 | 57 | [StructLayout(LayoutKind.Sequential)] 58 | internal struct HARDWAREINPUT { 59 | internal int uMsg; 60 | internal short wParamL; 61 | internal short wParamH; 62 | } 63 | 64 | [Flags] 65 | internal enum KEYEVENTF : uint { 66 | EXTENDEDKEY = 0x0001, 67 | KEYUP = 0x0002, 68 | SCANCODE = 0x0008, 69 | UNICODE = 0x0004 70 | } 71 | 72 | public static void Down(KeyCombo k) { 73 | if(k == null || k.keypresses.Count == 0) { 74 | return; 75 | } 76 | 77 | int numKeys = k.keypresses.Count; 78 | INPUT[] InputData = new INPUT[numKeys]; 79 | 80 | for(int i=0; i 0) { 21 | WWW file = new WWW("file:///" + Path.Combine(ButtonGrid.parent.directory, ButtonGrid.filename)); 22 | file.LoadImageIntoTexture((Texture2D)this.GetComponent().OverlayTexture); 23 | } 24 | 25 | transform.position = new Vector3((float)ButtonGrid.x, (float)ButtonGrid.y, (float)ButtonGrid.z); 26 | transform.rotation = Quaternion.Euler((float)ButtonGrid.pitch, (float)ButtonGrid.yaw, (float)ButtonGrid.roll); 27 | 28 | Overlay = GetComponent(); 29 | Overlay.Scale = (float)ButtonGrid.width; 30 | Overlay.Alpha = (float)ButtonGrid.alpha; 31 | this.Width = (float)ButtonGrid.width; 32 | this.Height = (float)ButtonGrid.height; 33 | } 34 | 35 | public Vector3 RelativePosition(Vector3 point, Vector3 direction, out float dist) { 36 | dist = 0; 37 | if (DataLoader.Settings.Lasermode) { 38 | float d = Vector3.Dot((transform.position - point), transform.forward) / (Vector3.Dot(direction, transform.forward)); 39 | dist = d; 40 | if (d < 0) { 41 | return new Vector3(-1, -1, -1); 42 | } 43 | point = point + direction * d; 44 | } 45 | Vector3 relPos = point - transform.position; 46 | relPos = Quaternion.Inverse(transform.rotation) * relPos; 47 | if(!DataLoader.Settings.Lasermode) { 48 | dist = relPos.z; 49 | } 50 | relPos = new Vector3((relPos.x + this.Width / 2) / this.Width, (-relPos.y + this.Height / 2) / this.Height, relPos.z); 51 | return relPos; 52 | } 53 | 54 | public bool PositionInRange(Vector3 relPos, float limit) { 55 | return relPos.x >= 0 && relPos.x < 1 && relPos.y >= 0 && relPos.y < 1 && Mathf.Abs(relPos.z) <= limit; 56 | } 57 | 58 | public GridButton PointedButton(Vector3 relPos) { 59 | return this.ButtonGrid.ButtonAtPosition((int)(relPos.x * ButtonGrid.gridWidth), (int)(relPos.y * ButtonGrid.gridHeight)); 60 | } 61 | 62 | public void ShowButtonOverlay(GridButton button, HOTK_Overlay overlay) { 63 | overlay.Scale = Mathf.Min(this.Width * button.width / this.ButtonGrid.gridWidth, this.Height * button.height / this.ButtonGrid.gridHeight); 64 | overlay.transform.position = transform.position + transform.rotation * new Vector3(-this.Width / 2 + (this.Width / this.ButtonGrid.gridWidth) * (button.x + button.width * 0.5f), -(-this.Height / 2 + (this.Height / this.ButtonGrid.gridHeight) * (button.y + button.height * 0.5f)), 0); 65 | overlay.transform.rotation = transform.rotation; 66 | overlay.enabled = true; 67 | } 68 | 69 | // Update is called once per frame 70 | void Update() { 71 | if(ButtonGrid.alpha == 0) { 72 | Overlay.enabled = false; 73 | return; 74 | } 75 | if (this == DataLoader.ProfileOverlay) { 76 | Overlay.enabled = DataLoader.SelectingProfile; 77 | } 78 | else { 79 | Overlay.enabled = ActivityMonitor.Active && !DataLoader.SelectingProfile; 80 | } 81 | } 82 | 83 | public void SavePosition() { 84 | ButtonGrid.x = transform.position.x; 85 | ButtonGrid.y = transform.position.y; 86 | ButtonGrid.z = transform.position.z; 87 | Vector3 rotation = transform.rotation.eulerAngles; 88 | ButtonGrid.pitch = rotation.x; 89 | ButtonGrid.yaw = rotation.y; 90 | ButtonGrid.roll = rotation.z; 91 | DataLoader.SavePositions(); 92 | } 93 | } 94 | -------------------------------------------------------------------------------- /Assets/ButtonBox/Scripts/OverlayLoader.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9a65517847f84b74294758865972f971 3 | timeCreated: 1485727307 4 | licenseType: Free 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/ButtonBox/Scripts/Profile.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | [Serializable] 5 | public class Profile : UnityEngine.ISerializationCallbackReceiver, IComparable { 6 | public string name; 7 | public string directory; 8 | public List grids; 9 | public int index; 10 | public bool isDefault; 11 | public bool hidePointer; 12 | public double pointerAlpha; 13 | public double controllerAlpha; 14 | 15 | public Profile() { 16 | 17 | } 18 | 19 | public override string ToString() { 20 | return this.name; 21 | } 22 | 23 | public void OnBeforeSerialize() { 24 | } 25 | 26 | public void OnAfterDeserialize() { 27 | foreach(ButtonGrid grid in grids) { 28 | grid.parent = this; 29 | } 30 | } 31 | 32 | public int CompareTo(Profile other) { 33 | return index - other.index; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Assets/ButtonBox/Scripts/Profile.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3dd793eff8e5a4a40942341426bcd46e 3 | timeCreated: 1486046065 4 | licenseType: Free 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/ButtonBox/Scripts/Settings.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | 4 | [Serializable] 5 | public class Settings { 6 | public bool Lasermode; 7 | public bool OculusTouchMode; 8 | } 9 | -------------------------------------------------------------------------------- /Assets/ButtonBox/Scripts/Settings.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b14754205b4e2294ca9a8ed46ca9635f 3 | timeCreated: 1485724560 4 | licenseType: Free 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/ButtonBox/button_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/Assets/ButtonBox/button_hover.png -------------------------------------------------------------------------------- /Assets/ButtonBox/button_hover.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3d0f136ba8bd67c45ad4de6a171da51a 3 | timeCreated: 1485840948 4 | licenseType: Free 5 | TextureImporter: 6 | fileIDToRecycleName: {} 7 | serializedVersion: 2 8 | mipmaps: 9 | mipMapMode: 0 10 | enableMipMap: 1 11 | linearTexture: 0 12 | correctGamma: 0 13 | fadeOut: 0 14 | borderMipMap: 0 15 | mipMapFadeDistanceStart: 1 16 | mipMapFadeDistanceEnd: 3 17 | bumpmap: 18 | convertToNormalMap: 0 19 | externalNormalMap: 0 20 | heightScale: 0.25 21 | normalMapFilter: 0 22 | isReadable: 0 23 | grayScaleToAlpha: 0 24 | generateCubemap: 0 25 | cubemapConvolution: 0 26 | cubemapConvolutionSteps: 7 27 | cubemapConvolutionExponent: 1.5 28 | seamlessCubemap: 0 29 | textureFormat: -3 30 | maxTextureSize: 2048 31 | textureSettings: 32 | filterMode: -1 33 | aniso: 16 34 | mipBias: -1 35 | wrapMode: 1 36 | nPOTScale: 0 37 | lightmap: 0 38 | rGBM: 0 39 | compressionQuality: 50 40 | allowsAlphaSplitting: 0 41 | spriteMode: 1 42 | spriteExtrude: 1 43 | spriteMeshType: 1 44 | alignment: 0 45 | spritePivot: {x: 0.5, y: 0.5} 46 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 47 | spritePixelsToUnits: 100 48 | alphaIsTransparency: 1 49 | textureType: 8 50 | buildTargetSettings: [] 51 | spriteSheet: 52 | serializedVersion: 2 53 | sprites: [] 54 | outline: [] 55 | spritePackingTag: 56 | userData: 57 | assetBundleName: 58 | assetBundleVariant: 59 | -------------------------------------------------------------------------------- /Assets/ButtonBox/button_leftright.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/Assets/ButtonBox/button_leftright.png -------------------------------------------------------------------------------- /Assets/ButtonBox/button_leftright.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0f1f841f10ced0c46a7bf731f4ca3592 3 | timeCreated: 1490481965 4 | licenseType: Free 5 | TextureImporter: 6 | fileIDToRecycleName: {} 7 | serializedVersion: 2 8 | mipmaps: 9 | mipMapMode: 0 10 | enableMipMap: 1 11 | linearTexture: 0 12 | correctGamma: 0 13 | fadeOut: 0 14 | borderMipMap: 0 15 | mipMapFadeDistanceStart: 1 16 | mipMapFadeDistanceEnd: 3 17 | bumpmap: 18 | convertToNormalMap: 0 19 | externalNormalMap: 0 20 | heightScale: 0.25 21 | normalMapFilter: 0 22 | isReadable: 0 23 | grayScaleToAlpha: 0 24 | generateCubemap: 0 25 | cubemapConvolution: 0 26 | cubemapConvolutionSteps: 7 27 | cubemapConvolutionExponent: 1.5 28 | seamlessCubemap: 0 29 | textureFormat: -3 30 | maxTextureSize: 2048 31 | textureSettings: 32 | filterMode: -1 33 | aniso: 16 34 | mipBias: -1 35 | wrapMode: 1 36 | nPOTScale: 0 37 | lightmap: 0 38 | rGBM: 0 39 | compressionQuality: 50 40 | allowsAlphaSplitting: 0 41 | spriteMode: 1 42 | spriteExtrude: 1 43 | spriteMeshType: 1 44 | alignment: 0 45 | spritePivot: {x: 0.5, y: 0.5} 46 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 47 | spritePixelsToUnits: 100 48 | alphaIsTransparency: 1 49 | textureType: 8 50 | buildTargetSettings: [] 51 | spriteSheet: 52 | serializedVersion: 2 53 | sprites: [] 54 | outline: [] 55 | spritePackingTag: 56 | userData: 57 | assetBundleName: 58 | assetBundleVariant: 59 | -------------------------------------------------------------------------------- /Assets/ButtonBox/button_multi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/Assets/ButtonBox/button_multi.png -------------------------------------------------------------------------------- /Assets/ButtonBox/button_multi.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 761091338aadaba409a09f7bb03a56c2 3 | timeCreated: 1488851692 4 | licenseType: Free 5 | TextureImporter: 6 | fileIDToRecycleName: {} 7 | serializedVersion: 2 8 | mipmaps: 9 | mipMapMode: 0 10 | enableMipMap: 1 11 | linearTexture: 0 12 | correctGamma: 0 13 | fadeOut: 0 14 | borderMipMap: 0 15 | mipMapFadeDistanceStart: 1 16 | mipMapFadeDistanceEnd: 3 17 | bumpmap: 18 | convertToNormalMap: 0 19 | externalNormalMap: 0 20 | heightScale: 0.25 21 | normalMapFilter: 0 22 | isReadable: 0 23 | grayScaleToAlpha: 0 24 | generateCubemap: 0 25 | cubemapConvolution: 0 26 | cubemapConvolutionSteps: 7 27 | cubemapConvolutionExponent: 1.5 28 | seamlessCubemap: 0 29 | textureFormat: -3 30 | maxTextureSize: 2048 31 | textureSettings: 32 | filterMode: -1 33 | aniso: 16 34 | mipBias: -1 35 | wrapMode: 1 36 | nPOTScale: 0 37 | lightmap: 0 38 | rGBM: 0 39 | compressionQuality: 50 40 | allowsAlphaSplitting: 0 41 | spriteMode: 1 42 | spriteExtrude: 1 43 | spriteMeshType: 1 44 | alignment: 0 45 | spritePivot: {x: 0.5, y: 0.5} 46 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 47 | spritePixelsToUnits: 100 48 | alphaIsTransparency: 1 49 | textureType: 8 50 | buildTargetSettings: [] 51 | spriteSheet: 52 | serializedVersion: 2 53 | sprites: [] 54 | outline: [] 55 | spritePackingTag: 56 | userData: 57 | assetBundleName: 58 | assetBundleVariant: 59 | -------------------------------------------------------------------------------- /Assets/ButtonBox/button_multi_leftright.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/Assets/ButtonBox/button_multi_leftright.png -------------------------------------------------------------------------------- /Assets/ButtonBox/button_multi_leftright.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5c552667aa53ffb48926da0c1eefc6eb 3 | timeCreated: 1490482709 4 | licenseType: Free 5 | TextureImporter: 6 | fileIDToRecycleName: {} 7 | serializedVersion: 2 8 | mipmaps: 9 | mipMapMode: 0 10 | enableMipMap: 1 11 | linearTexture: 0 12 | correctGamma: 0 13 | fadeOut: 0 14 | borderMipMap: 0 15 | mipMapFadeDistanceStart: 1 16 | mipMapFadeDistanceEnd: 3 17 | bumpmap: 18 | convertToNormalMap: 0 19 | externalNormalMap: 0 20 | heightScale: 0.25 21 | normalMapFilter: 0 22 | isReadable: 0 23 | grayScaleToAlpha: 0 24 | generateCubemap: 0 25 | cubemapConvolution: 0 26 | cubemapConvolutionSteps: 7 27 | cubemapConvolutionExponent: 1.5 28 | seamlessCubemap: 0 29 | textureFormat: -3 30 | maxTextureSize: 2048 31 | textureSettings: 32 | filterMode: -1 33 | aniso: 16 34 | mipBias: -1 35 | wrapMode: 1 36 | nPOTScale: 0 37 | lightmap: 0 38 | rGBM: 0 39 | compressionQuality: 50 40 | allowsAlphaSplitting: 0 41 | spriteMode: 1 42 | spriteExtrude: 1 43 | spriteMeshType: 1 44 | alignment: 0 45 | spritePivot: {x: 0.5, y: 0.5} 46 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 47 | spritePixelsToUnits: 100 48 | alphaIsTransparency: 1 49 | textureType: 8 50 | buildTargetSettings: [] 51 | spriteSheet: 52 | serializedVersion: 2 53 | sprites: [] 54 | outline: [] 55 | spritePackingTag: 56 | userData: 57 | assetBundleName: 58 | assetBundleVariant: 59 | -------------------------------------------------------------------------------- /Assets/ButtonBox/button_press.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/Assets/ButtonBox/button_press.png -------------------------------------------------------------------------------- /Assets/ButtonBox/button_press.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2fe92815c8dc10540be6da487f15b8a5 3 | timeCreated: 1485840948 4 | licenseType: Free 5 | TextureImporter: 6 | fileIDToRecycleName: {} 7 | serializedVersion: 2 8 | mipmaps: 9 | mipMapMode: 0 10 | enableMipMap: 1 11 | linearTexture: 0 12 | correctGamma: 0 13 | fadeOut: 0 14 | borderMipMap: 0 15 | mipMapFadeDistanceStart: 1 16 | mipMapFadeDistanceEnd: 3 17 | bumpmap: 18 | convertToNormalMap: 0 19 | externalNormalMap: 0 20 | heightScale: 0.25 21 | normalMapFilter: 0 22 | isReadable: 0 23 | grayScaleToAlpha: 0 24 | generateCubemap: 0 25 | cubemapConvolution: 0 26 | cubemapConvolutionSteps: 7 27 | cubemapConvolutionExponent: 1.5 28 | seamlessCubemap: 0 29 | textureFormat: -3 30 | maxTextureSize: 2048 31 | textureSettings: 32 | filterMode: -1 33 | aniso: 16 34 | mipBias: -1 35 | wrapMode: 1 36 | nPOTScale: 0 37 | lightmap: 0 38 | rGBM: 0 39 | compressionQuality: 50 40 | allowsAlphaSplitting: 0 41 | spriteMode: 1 42 | spriteExtrude: 1 43 | spriteMeshType: 1 44 | alignment: 0 45 | spritePivot: {x: 0.5, y: 0.5} 46 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 47 | spritePixelsToUnits: 100 48 | alphaIsTransparency: 1 49 | textureType: 8 50 | buildTargetSettings: [] 51 | spriteSheet: 52 | serializedVersion: 2 53 | sprites: [] 54 | outline: [] 55 | spritePackingTag: 56 | userData: 57 | assetBundleName: 58 | assetBundleVariant: 59 | -------------------------------------------------------------------------------- /Assets/ButtonBox/button_rotary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/Assets/ButtonBox/button_rotary.png -------------------------------------------------------------------------------- /Assets/ButtonBox/button_rotary.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2d67ff25be40b784da6f53f0263dc14f 3 | timeCreated: 1488752424 4 | licenseType: Free 5 | TextureImporter: 6 | fileIDToRecycleName: {} 7 | serializedVersion: 2 8 | mipmaps: 9 | mipMapMode: 0 10 | enableMipMap: 1 11 | linearTexture: 0 12 | correctGamma: 0 13 | fadeOut: 0 14 | borderMipMap: 0 15 | mipMapFadeDistanceStart: 1 16 | mipMapFadeDistanceEnd: 3 17 | bumpmap: 18 | convertToNormalMap: 0 19 | externalNormalMap: 0 20 | heightScale: 0.25 21 | normalMapFilter: 0 22 | isReadable: 0 23 | grayScaleToAlpha: 0 24 | generateCubemap: 0 25 | cubemapConvolution: 0 26 | cubemapConvolutionSteps: 7 27 | cubemapConvolutionExponent: 1.5 28 | seamlessCubemap: 0 29 | textureFormat: -3 30 | maxTextureSize: 2048 31 | textureSettings: 32 | filterMode: -1 33 | aniso: 16 34 | mipBias: -1 35 | wrapMode: 1 36 | nPOTScale: 0 37 | lightmap: 0 38 | rGBM: 0 39 | compressionQuality: 50 40 | allowsAlphaSplitting: 0 41 | spriteMode: 1 42 | spriteExtrude: 1 43 | spriteMeshType: 1 44 | alignment: 0 45 | spritePivot: {x: 0.5, y: 0.5} 46 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 47 | spritePixelsToUnits: 100 48 | alphaIsTransparency: 1 49 | textureType: 8 50 | buildTargetSettings: [] 51 | spriteSheet: 52 | serializedVersion: 2 53 | sprites: [] 54 | outline: [] 55 | spritePackingTag: 56 | userData: 57 | assetBundleName: 58 | assetBundleVariant: 59 | -------------------------------------------------------------------------------- /Assets/ButtonBox/button_threeway.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/Assets/ButtonBox/button_threeway.png -------------------------------------------------------------------------------- /Assets/ButtonBox/button_threeway.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e64d1567a83b2a248b327bc07721bac6 3 | timeCreated: 1488752424 4 | licenseType: Free 5 | TextureImporter: 6 | fileIDToRecycleName: {} 7 | serializedVersion: 2 8 | mipmaps: 9 | mipMapMode: 0 10 | enableMipMap: 1 11 | linearTexture: 0 12 | correctGamma: 0 13 | fadeOut: 0 14 | borderMipMap: 0 15 | mipMapFadeDistanceStart: 1 16 | mipMapFadeDistanceEnd: 3 17 | bumpmap: 18 | convertToNormalMap: 0 19 | externalNormalMap: 0 20 | heightScale: 0.25 21 | normalMapFilter: 0 22 | isReadable: 0 23 | grayScaleToAlpha: 0 24 | generateCubemap: 0 25 | cubemapConvolution: 0 26 | cubemapConvolutionSteps: 7 27 | cubemapConvolutionExponent: 1.5 28 | seamlessCubemap: 0 29 | textureFormat: -3 30 | maxTextureSize: 2048 31 | textureSettings: 32 | filterMode: -1 33 | aniso: 16 34 | mipBias: -1 35 | wrapMode: 1 36 | nPOTScale: 0 37 | lightmap: 0 38 | rGBM: 0 39 | compressionQuality: 50 40 | allowsAlphaSplitting: 0 41 | spriteMode: 1 42 | spriteExtrude: 1 43 | spriteMeshType: 1 44 | alignment: 0 45 | spritePivot: {x: 0.5, y: 0.5} 46 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 47 | spritePixelsToUnits: 100 48 | alphaIsTransparency: 1 49 | textureType: 8 50 | buildTargetSettings: [] 51 | spriteSheet: 52 | serializedVersion: 2 53 | sprites: [] 54 | outline: [] 55 | spritePackingTag: 56 | userData: 57 | assetBundleName: 58 | assetBundleVariant: 59 | -------------------------------------------------------------------------------- /Assets/ButtonBox/controller_body.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/Assets/ButtonBox/controller_body.png -------------------------------------------------------------------------------- /Assets/ButtonBox/controller_body.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cc46d3eb3a1a2434cb76d70339ac9d0c 3 | timeCreated: 1485874063 4 | licenseType: Free 5 | TextureImporter: 6 | fileIDToRecycleName: {} 7 | serializedVersion: 2 8 | mipmaps: 9 | mipMapMode: 0 10 | enableMipMap: 1 11 | linearTexture: 0 12 | correctGamma: 0 13 | fadeOut: 0 14 | borderMipMap: 0 15 | mipMapFadeDistanceStart: 1 16 | mipMapFadeDistanceEnd: 3 17 | bumpmap: 18 | convertToNormalMap: 0 19 | externalNormalMap: 0 20 | heightScale: 0.25 21 | normalMapFilter: 0 22 | isReadable: 0 23 | grayScaleToAlpha: 0 24 | generateCubemap: 0 25 | cubemapConvolution: 0 26 | cubemapConvolutionSteps: 7 27 | cubemapConvolutionExponent: 1.5 28 | seamlessCubemap: 0 29 | textureFormat: -3 30 | maxTextureSize: 2048 31 | textureSettings: 32 | filterMode: -1 33 | aniso: 16 34 | mipBias: -1 35 | wrapMode: 1 36 | nPOTScale: 0 37 | lightmap: 0 38 | rGBM: 0 39 | compressionQuality: 50 40 | allowsAlphaSplitting: 0 41 | spriteMode: 1 42 | spriteExtrude: 1 43 | spriteMeshType: 1 44 | alignment: 0 45 | spritePivot: {x: 0.5, y: 0.5} 46 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 47 | spritePixelsToUnits: 100 48 | alphaIsTransparency: 1 49 | textureType: 8 50 | buildTargetSettings: [] 51 | spriteSheet: 52 | serializedVersion: 2 53 | sprites: [] 54 | outline: [] 55 | spritePackingTag: 56 | userData: 57 | assetBundleName: 58 | assetBundleVariant: 59 | -------------------------------------------------------------------------------- /Assets/ButtonBox/green_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/Assets/ButtonBox/green_select.png -------------------------------------------------------------------------------- /Assets/ButtonBox/green_select.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d662bbaa0cdbebb41beec88b727d61ea 3 | timeCreated: 1485754141 4 | licenseType: Free 5 | TextureImporter: 6 | fileIDToRecycleName: {} 7 | serializedVersion: 2 8 | mipmaps: 9 | mipMapMode: 0 10 | enableMipMap: 1 11 | linearTexture: 0 12 | correctGamma: 0 13 | fadeOut: 0 14 | borderMipMap: 0 15 | mipMapFadeDistanceStart: 1 16 | mipMapFadeDistanceEnd: 3 17 | bumpmap: 18 | convertToNormalMap: 0 19 | externalNormalMap: 0 20 | heightScale: 0.25 21 | normalMapFilter: 0 22 | isReadable: 0 23 | grayScaleToAlpha: 0 24 | generateCubemap: 0 25 | cubemapConvolution: 0 26 | cubemapConvolutionSteps: 7 27 | cubemapConvolutionExponent: 1.5 28 | seamlessCubemap: 0 29 | textureFormat: -3 30 | maxTextureSize: 2048 31 | textureSettings: 32 | filterMode: -1 33 | aniso: 16 34 | mipBias: -1 35 | wrapMode: 1 36 | nPOTScale: 0 37 | lightmap: 0 38 | rGBM: 0 39 | compressionQuality: 50 40 | allowsAlphaSplitting: 0 41 | spriteMode: 1 42 | spriteExtrude: 1 43 | spriteMeshType: 1 44 | alignment: 0 45 | spritePivot: {x: 0.5, y: 0.5} 46 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 47 | spritePixelsToUnits: 100 48 | alphaIsTransparency: 1 49 | textureType: 8 50 | buildTargetSettings: [] 51 | spriteSheet: 52 | serializedVersion: 2 53 | sprites: [] 54 | outline: [] 55 | spritePackingTag: 56 | userData: 57 | assetBundleName: 58 | assetBundleVariant: 59 | -------------------------------------------------------------------------------- /Assets/ButtonBox/green_select_transparent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/Assets/ButtonBox/green_select_transparent.png -------------------------------------------------------------------------------- /Assets/ButtonBox/green_select_transparent.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 670e801508d32114b8c3eaa453396030 3 | timeCreated: 1485754141 4 | licenseType: Free 5 | TextureImporter: 6 | fileIDToRecycleName: {} 7 | serializedVersion: 2 8 | mipmaps: 9 | mipMapMode: 0 10 | enableMipMap: 1 11 | linearTexture: 0 12 | correctGamma: 0 13 | fadeOut: 0 14 | borderMipMap: 0 15 | mipMapFadeDistanceStart: 1 16 | mipMapFadeDistanceEnd: 3 17 | bumpmap: 18 | convertToNormalMap: 0 19 | externalNormalMap: 0 20 | heightScale: 0.25 21 | normalMapFilter: 0 22 | isReadable: 0 23 | grayScaleToAlpha: 0 24 | generateCubemap: 0 25 | cubemapConvolution: 0 26 | cubemapConvolutionSteps: 7 27 | cubemapConvolutionExponent: 1.5 28 | seamlessCubemap: 0 29 | textureFormat: -3 30 | maxTextureSize: 2048 31 | textureSettings: 32 | filterMode: -1 33 | aniso: 16 34 | mipBias: -1 35 | wrapMode: 1 36 | nPOTScale: 0 37 | lightmap: 0 38 | rGBM: 0 39 | compressionQuality: 50 40 | allowsAlphaSplitting: 0 41 | spriteMode: 1 42 | spriteExtrude: 1 43 | spriteMeshType: 1 44 | alignment: 0 45 | spritePivot: {x: 0.5, y: 0.5} 46 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 47 | spritePixelsToUnits: 100 48 | alphaIsTransparency: 1 49 | textureType: 8 50 | buildTargetSettings: [] 51 | spriteSheet: 52 | serializedVersion: 2 53 | sprites: [] 54 | outline: [] 55 | spritePackingTag: 56 | userData: 57 | assetBundleName: 58 | assetBundleVariant: 59 | -------------------------------------------------------------------------------- /Assets/ButtonBox/grid4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/Assets/ButtonBox/grid4.png -------------------------------------------------------------------------------- /Assets/ButtonBox/grid4.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b9ab4b194ffdec945a9f2c64a268d5e9 3 | timeCreated: 1485310177 4 | licenseType: Free 5 | TextureImporter: 6 | fileIDToRecycleName: {} 7 | serializedVersion: 2 8 | mipmaps: 9 | mipMapMode: 0 10 | enableMipMap: 1 11 | linearTexture: 0 12 | correctGamma: 0 13 | fadeOut: 0 14 | borderMipMap: 0 15 | mipMapFadeDistanceStart: 1 16 | mipMapFadeDistanceEnd: 3 17 | bumpmap: 18 | convertToNormalMap: 0 19 | externalNormalMap: 0 20 | heightScale: 0.25 21 | normalMapFilter: 0 22 | isReadable: 0 23 | grayScaleToAlpha: 0 24 | generateCubemap: 0 25 | cubemapConvolution: 0 26 | cubemapConvolutionSteps: 7 27 | cubemapConvolutionExponent: 1.5 28 | seamlessCubemap: 0 29 | textureFormat: -3 30 | maxTextureSize: 2048 31 | textureSettings: 32 | filterMode: -1 33 | aniso: 16 34 | mipBias: -1 35 | wrapMode: 1 36 | nPOTScale: 0 37 | lightmap: 0 38 | rGBM: 0 39 | compressionQuality: 50 40 | allowsAlphaSplitting: 0 41 | spriteMode: 1 42 | spriteExtrude: 1 43 | spriteMeshType: 1 44 | alignment: 0 45 | spritePivot: {x: 0.5, y: 0.5} 46 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 47 | spritePixelsToUnits: 100 48 | alphaIsTransparency: 1 49 | textureType: 8 50 | buildTargetSettings: [] 51 | spriteSheet: 52 | serializedVersion: 2 53 | sprites: [] 54 | outline: [] 55 | spritePackingTag: 56 | userData: 57 | assetBundleName: 58 | assetBundleVariant: 59 | -------------------------------------------------------------------------------- /Assets/ButtonBox/laser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/Assets/ButtonBox/laser.png -------------------------------------------------------------------------------- /Assets/ButtonBox/laser.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2c72f5a67ce6df54f873e72e60d5f868 3 | timeCreated: 1486249268 4 | licenseType: Free 5 | TextureImporter: 6 | fileIDToRecycleName: {} 7 | serializedVersion: 2 8 | mipmaps: 9 | mipMapMode: 0 10 | enableMipMap: 1 11 | linearTexture: 0 12 | correctGamma: 0 13 | fadeOut: 0 14 | borderMipMap: 0 15 | mipMapFadeDistanceStart: 1 16 | mipMapFadeDistanceEnd: 3 17 | bumpmap: 18 | convertToNormalMap: 0 19 | externalNormalMap: 0 20 | heightScale: 0.25 21 | normalMapFilter: 0 22 | isReadable: 0 23 | grayScaleToAlpha: 0 24 | generateCubemap: 0 25 | cubemapConvolution: 0 26 | cubemapConvolutionSteps: 7 27 | cubemapConvolutionExponent: 1.5 28 | seamlessCubemap: 0 29 | textureFormat: -3 30 | maxTextureSize: 2048 31 | textureSettings: 32 | filterMode: -1 33 | aniso: 16 34 | mipBias: -1 35 | wrapMode: 1 36 | nPOTScale: 0 37 | lightmap: 0 38 | rGBM: 0 39 | compressionQuality: 50 40 | allowsAlphaSplitting: 0 41 | spriteMode: 1 42 | spriteExtrude: 1 43 | spriteMeshType: 1 44 | alignment: 0 45 | spritePivot: {x: 0.5, y: 0.5} 46 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 47 | spritePixelsToUnits: 100 48 | alphaIsTransparency: 1 49 | textureType: 8 50 | buildTargetSettings: [] 51 | spriteSheet: 52 | serializedVersion: 2 53 | sprites: [] 54 | outline: [] 55 | spritePackingTag: 56 | userData: 57 | assetBundleName: 58 | assetBundleVariant: 59 | -------------------------------------------------------------------------------- /Assets/ButtonBox/sphere.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/Assets/ButtonBox/sphere.png -------------------------------------------------------------------------------- /Assets/ButtonBox/sphere.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7bcc8c02dd9082f458e67e2eb4bf00b5 3 | timeCreated: 1485144153 4 | licenseType: Free 5 | TextureImporter: 6 | fileIDToRecycleName: {} 7 | serializedVersion: 2 8 | mipmaps: 9 | mipMapMode: 0 10 | enableMipMap: 1 11 | linearTexture: 0 12 | correctGamma: 0 13 | fadeOut: 0 14 | borderMipMap: 0 15 | mipMapFadeDistanceStart: 1 16 | mipMapFadeDistanceEnd: 3 17 | bumpmap: 18 | convertToNormalMap: 0 19 | externalNormalMap: 0 20 | heightScale: 0.25 21 | normalMapFilter: 0 22 | isReadable: 0 23 | grayScaleToAlpha: 0 24 | generateCubemap: 0 25 | cubemapConvolution: 0 26 | cubemapConvolutionSteps: 7 27 | cubemapConvolutionExponent: 1.5 28 | seamlessCubemap: 0 29 | textureFormat: -3 30 | maxTextureSize: 2048 31 | textureSettings: 32 | filterMode: -1 33 | aniso: 16 34 | mipBias: -1 35 | wrapMode: 1 36 | nPOTScale: 0 37 | lightmap: 0 38 | rGBM: 0 39 | compressionQuality: 50 40 | allowsAlphaSplitting: 0 41 | spriteMode: 1 42 | spriteExtrude: 1 43 | spriteMeshType: 1 44 | alignment: 0 45 | spritePivot: {x: 0.5, y: 0.5} 46 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 47 | spritePixelsToUnits: 100 48 | alphaIsTransparency: 1 49 | textureType: 8 50 | buildTargetSettings: [] 51 | spriteSheet: 52 | serializedVersion: 2 53 | sprites: [] 54 | outline: [] 55 | spritePackingTag: 56 | userData: 57 | assetBundleName: 58 | assetBundleVariant: 59 | -------------------------------------------------------------------------------- /Assets/ButtonBox/sphere_green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/Assets/ButtonBox/sphere_green.png -------------------------------------------------------------------------------- /Assets/ButtonBox/sphere_green.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4a6d79c77269bbf4d8ceb0b9d4500240 3 | timeCreated: 1485310001 4 | licenseType: Free 5 | TextureImporter: 6 | fileIDToRecycleName: {} 7 | serializedVersion: 2 8 | mipmaps: 9 | mipMapMode: 0 10 | enableMipMap: 1 11 | linearTexture: 0 12 | correctGamma: 0 13 | fadeOut: 0 14 | borderMipMap: 0 15 | mipMapFadeDistanceStart: 1 16 | mipMapFadeDistanceEnd: 3 17 | bumpmap: 18 | convertToNormalMap: 0 19 | externalNormalMap: 0 20 | heightScale: 0.25 21 | normalMapFilter: 0 22 | isReadable: 0 23 | grayScaleToAlpha: 0 24 | generateCubemap: 0 25 | cubemapConvolution: 0 26 | cubemapConvolutionSteps: 7 27 | cubemapConvolutionExponent: 1.5 28 | seamlessCubemap: 0 29 | textureFormat: -3 30 | maxTextureSize: 2048 31 | textureSettings: 32 | filterMode: -1 33 | aniso: 16 34 | mipBias: -1 35 | wrapMode: 1 36 | nPOTScale: 0 37 | lightmap: 0 38 | rGBM: 0 39 | compressionQuality: 50 40 | allowsAlphaSplitting: 0 41 | spriteMode: 1 42 | spriteExtrude: 1 43 | spriteMeshType: 1 44 | alignment: 0 45 | spritePivot: {x: 0.5, y: 0.5} 46 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 47 | spritePixelsToUnits: 100 48 | alphaIsTransparency: 1 49 | textureType: 8 50 | buildTargetSettings: [] 51 | spriteSheet: 52 | serializedVersion: 2 53 | sprites: [] 54 | outline: [] 55 | spritePackingTag: 56 | userData: 57 | assetBundleName: 58 | assetBundleVariant: 59 | -------------------------------------------------------------------------------- /Assets/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0f799ebe0ba5b864da2f39fb010ff53f 3 | folderAsset: yes 4 | timeCreated: 1466138221 5 | licenseType: Free 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Editor/HOTK.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d83ba6680be6bc4418120b2eb7df10d3 3 | folderAsset: yes 4 | timeCreated: 1466386626 5 | licenseType: Free 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Editor/HOTK/HOTK_OverlayInspector.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEditor; 3 | 4 | [CustomEditor(typeof(HOTK_Overlay))] 5 | public class HOTK_OverlayInspector : Editor 6 | { 7 | private static GUIStyle _boldFoldoutStyle; 8 | 9 | public override void OnInspectorGUI() 10 | { 11 | if (_boldFoldoutStyle == null) 12 | { 13 | _boldFoldoutStyle = new GUIStyle(EditorStyles.foldout) 14 | { 15 | fontSize = 11, 16 | fontStyle = FontStyle.Bold 17 | }; 18 | } 19 | 20 | var overlay = (HOTK_Overlay)target; 21 | 22 | overlay.ShowSettingsAppearance = EditorGUILayout.Foldout(overlay.ShowSettingsAppearance, "Appearance Settings", _boldFoldoutStyle); 23 | if (overlay.ShowSettingsAppearance) 24 | { 25 | EditorGUILayout.PropertyField(serializedObject.FindProperty("OverlayTexture"), new GUIContent() {text = "Texture"}); 26 | 27 | EditorGUILayout.PropertyField(serializedObject.FindProperty("AnimateOnGaze")); 28 | if (overlay.AnimateOnGaze == HOTK_Overlay.AnimationType.Alpha || overlay.AnimateOnGaze == HOTK_Overlay.AnimationType.AlphaAndScale) 29 | { 30 | EditorGUILayout.PropertyField(serializedObject.FindProperty("Alpha"), new GUIContent() { text = "Alpha Start" }); 31 | EditorGUILayout.PropertyField(serializedObject.FindProperty("Alpha2"), new GUIContent() { text = "Alpha End" }); 32 | EditorGUILayout.PropertyField(serializedObject.FindProperty("AlphaSpeed"), new GUIContent() { text = "Alpha Speed" }); 33 | } 34 | else EditorGUILayout.PropertyField(serializedObject.FindProperty("Alpha")); 35 | if (overlay.AnimateOnGaze == HOTK_Overlay.AnimationType.Scale || overlay.AnimateOnGaze == HOTK_Overlay.AnimationType.AlphaAndScale) 36 | { 37 | EditorGUILayout.PropertyField(serializedObject.FindProperty("Scale"), new GUIContent() { text = "Scale Start" }); 38 | EditorGUILayout.PropertyField(serializedObject.FindProperty("Scale2"), new GUIContent() { text = "Scale End" }); 39 | EditorGUILayout.PropertyField(serializedObject.FindProperty("ScaleSpeed"), new GUIContent() { text = "Scale Speed" }); 40 | } 41 | else EditorGUILayout.PropertyField(serializedObject.FindProperty("Scale")); 42 | 43 | var hqProperty = serializedObject.FindProperty("Highquality"); 44 | EditorGUILayout.PropertyField(hqProperty, new GUIContent() { text = "High Quality" }); 45 | if (hqProperty.boolValue) 46 | { 47 | EditorGUILayout.PropertyField(serializedObject.FindProperty("Antialias"), new GUIContent() { text = "Anti Alias" }); 48 | EditorGUILayout.PropertyField(serializedObject.FindProperty("Curved"), new GUIContent() { text = "Curved Display" }); 49 | } 50 | EditorGUILayout.PropertyField(serializedObject.FindProperty("UvOffset"), true); 51 | } 52 | 53 | overlay.ShowSettingsInput = EditorGUILayout.Foldout(overlay.ShowSettingsInput, "Input Settings", _boldFoldoutStyle); 54 | if (overlay.ShowSettingsInput) 55 | { 56 | EditorGUILayout.PropertyField(serializedObject.FindProperty("MouseScale")); 57 | EditorGUILayout.PropertyField(serializedObject.FindProperty("CurvedRange")); 58 | EditorGUILayout.PropertyField(serializedObject.FindProperty("InputMethod")); 59 | } 60 | 61 | overlay.ShowSettingsAttachment = EditorGUILayout.Foldout(overlay.ShowSettingsAttachment, "Attachment Settings", _boldFoldoutStyle); 62 | if (overlay.ShowSettingsAttachment) 63 | { 64 | EditorGUILayout.PropertyField(serializedObject.FindProperty("AnchorDevice"), new GUIContent() { text = "Anchor Point" }); 65 | if (overlay.AnchorDevice != HOTK_Overlay.AttachmentDevice.Screen && 66 | overlay.AnchorDevice != HOTK_Overlay.AttachmentDevice.World) 67 | { 68 | EditorGUILayout.PropertyField(serializedObject.FindProperty("AnchorPoint"), new GUIContent() { text = "Base Position" }); 69 | } 70 | EditorGUILayout.PropertyField(serializedObject.FindProperty("AnchorOffset"), new GUIContent() {text = "Offset"}); 71 | } 72 | serializedObject.ApplyModifiedProperties(); 73 | } 74 | } -------------------------------------------------------------------------------- /Assets/Editor/HOTK/HOTK_OverlayInspector.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: def2782dd412c1f499fdd7e389f5c97b 3 | timeCreated: 1466138235 4 | licenseType: Free 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/HOTK.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4462b0c72f72ace41a22a28c678c9600 3 | folderAsset: yes 4 | timeCreated: 1466372031 5 | licenseType: Free 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/HOTK/Example Content.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 164618398b888dc4b822b543edd6ea78 3 | folderAsset: yes 4 | timeCreated: 1466372049 5 | licenseType: Free 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/HOTK/Example Content/HOTK_DemoDesktopCameraScript.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | public class HOTK_DemoDesktopCameraScript : MonoBehaviour 4 | { 5 | public float Size = 200f; 6 | public void LateUpdate() 7 | { 8 | Camera.main.orthographicSize = Screen.height / Size; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Assets/HOTK/Example Content/HOTK_DemoDesktopCameraScript.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7314d480a23bf4049a0a7aecc9c92ca2 3 | timeCreated: 1465633385 4 | licenseType: Free 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/HOTK/Example Content/HOTK_DemoScene.unity: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/Assets/HOTK/Example Content/HOTK_DemoScene.unity -------------------------------------------------------------------------------- /Assets/HOTK/Example Content/HOTK_DemoScene.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d1defc434452f5b478b19909d1e5fc8b 3 | timeCreated: 1465633465 4 | licenseType: Free 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/HOTK/Example Content/HOTK_DisplayMaterial.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/Assets/HOTK/Example Content/HOTK_DisplayMaterial.mat -------------------------------------------------------------------------------- /Assets/HOTK/Example Content/HOTK_DisplayMaterial.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6ec40637fcf97bb4094e5db6edfe344d 3 | timeCreated: 1465633480 4 | licenseType: Free 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/HOTK/Example Content/steam.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/Assets/HOTK/Example Content/steam.png -------------------------------------------------------------------------------- /Assets/HOTK/Example Content/steam.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b31dbc11539eece42a44d36236d52617 3 | timeCreated: 1465648213 4 | licenseType: Free 5 | TextureImporter: 6 | fileIDToRecycleName: {} 7 | serializedVersion: 2 8 | mipmaps: 9 | mipMapMode: 0 10 | enableMipMap: 1 11 | linearTexture: 0 12 | correctGamma: 0 13 | fadeOut: 0 14 | borderMipMap: 0 15 | mipMapFadeDistanceStart: 1 16 | mipMapFadeDistanceEnd: 3 17 | bumpmap: 18 | convertToNormalMap: 0 19 | externalNormalMap: 0 20 | heightScale: 0.25 21 | normalMapFilter: 0 22 | isReadable: 0 23 | grayScaleToAlpha: 0 24 | generateCubemap: 0 25 | cubemapConvolution: 0 26 | cubemapConvolutionSteps: 7 27 | cubemapConvolutionExponent: 1.5 28 | seamlessCubemap: 0 29 | textureFormat: -1 30 | maxTextureSize: 2048 31 | textureSettings: 32 | filterMode: -1 33 | aniso: 16 34 | mipBias: -1 35 | wrapMode: 1 36 | nPOTScale: 0 37 | lightmap: 0 38 | rGBM: 0 39 | compressionQuality: 50 40 | allowsAlphaSplitting: 0 41 | spriteMode: 1 42 | spriteExtrude: 1 43 | spriteMeshType: 1 44 | alignment: 0 45 | spritePivot: {x: 0.5, y: 0.5} 46 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 47 | spritePixelsToUnits: 100 48 | alphaIsTransparency: 1 49 | textureType: 8 50 | buildTargetSettings: [] 51 | spriteSheet: 52 | sprites: [] 53 | outline: [] 54 | spritePackingTag: 55 | userData: 56 | assetBundleName: 57 | assetBundleVariant: 58 | -------------------------------------------------------------------------------- /Assets/HOTK/HOTK_Overlay.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d7ab6cdb4ba1e4c41bf8a76d2eca7717 3 | timeCreated: 1465633599 4 | licenseType: Free 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/HOTK/HOTK_TrackedDevice.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEngine; 3 | using Valve.VR; 4 | 5 | public class HOTK_TrackedDevice : MonoBehaviour 6 | { 7 | public enum EIndex 8 | { 9 | None = -1, 10 | Hmd = (int)OpenVR.k_unTrackedDeviceIndex_Hmd, 11 | Device1, 12 | Device2, 13 | Device3, 14 | Device4, 15 | Device5, 16 | Device6, 17 | Device7, 18 | Device8, 19 | Device9, 20 | Device10, 21 | Device11, 22 | Device12, 23 | Device13, 24 | Device14, 25 | Device15 26 | } 27 | public enum EType 28 | { 29 | None = -1, 30 | HMD, 31 | LeftController, 32 | RightController 33 | } 34 | 35 | public EType Type; 36 | public EIndex Index; 37 | public Transform Origin; // if not set, relative to parent 38 | public bool IsValid; 39 | 40 | private EType _type; 41 | 42 | private void OnNewPoses(params object[] args) 43 | { 44 | if (_type != Type) 45 | { 46 | _type = Type; 47 | IsValid = false; 48 | } 49 | 50 | if (!IsValid) 51 | { 52 | Index = EIndex.None; 53 | if (Type != EType.None) 54 | { 55 | switch (Type) 56 | { 57 | case EType.HMD: 58 | if (HOTK_TrackedDeviceManager.Instance.HMDIndex != OpenVR.k_unTrackedDeviceIndexInvalid) 59 | Index = (EIndex)HOTK_TrackedDeviceManager.Instance.HMDIndex; 60 | break; 61 | case EType.LeftController: 62 | if (HOTK_TrackedDeviceManager.Instance.LeftIndex != OpenVR.k_unTrackedDeviceIndexInvalid) 63 | Index = (EIndex)HOTK_TrackedDeviceManager.Instance.LeftIndex; 64 | break; 65 | case EType.RightController: 66 | if (HOTK_TrackedDeviceManager.Instance.RightIndex != OpenVR.k_unTrackedDeviceIndexInvalid) 67 | Index = (EIndex)HOTK_TrackedDeviceManager.Instance.RightIndex; 68 | break; 69 | default: 70 | throw new ArgumentOutOfRangeException(); 71 | } 72 | } 73 | } 74 | 75 | IsValid = false; 76 | 77 | if (Index == EIndex.None) 78 | return; 79 | 80 | var i = (int) Index; 81 | 82 | var poses = (TrackedDevicePose_t[]) args[0]; 83 | if (poses.Length <= i) 84 | return; 85 | 86 | if (!poses[i].bDeviceIsConnected) 87 | return; 88 | 89 | if (!poses[i].bPoseIsValid) 90 | return; 91 | 92 | IsValid = true; 93 | 94 | var pose = new SteamVR_Utils.RigidTransform(poses[i].mDeviceToAbsoluteTracking); 95 | if(OpenVR.Compositor.GetTrackingSpace() != ETrackingUniverseOrigin.TrackingUniverseSeated) { 96 | var transform = new SteamVR_Utils.RigidTransform(OpenVR.System.GetSeatedZeroPoseToStandingAbsoluteTrackingPose()); 97 | transform.Inverse(); 98 | pose = transform * pose; 99 | } 100 | 101 | if (Origin != null) 102 | { 103 | pose = new SteamVR_Utils.RigidTransform(Origin)*pose; 104 | pose.pos.x *= Origin.localScale.x; 105 | pose.pos.y *= Origin.localScale.y; 106 | pose.pos.z *= Origin.localScale.z; 107 | transform.position = pose.pos; 108 | transform.rotation = pose.rot; 109 | } 110 | else 111 | { 112 | transform.localPosition = pose.pos; 113 | transform.localRotation = pose.rot; 114 | } 115 | } 116 | 117 | public void Start() 118 | { 119 | HOTK_TrackedDeviceManager.OnControllerIndexChanged += OnControllerIndexChanged; 120 | } 121 | 122 | // If the controller we are tracking changes index, update 123 | private void OnControllerIndexChanged(ETrackedControllerRole role, uint index) 124 | { 125 | if (Type == EType.LeftController && role == ETrackedControllerRole.LeftHand) 126 | { 127 | Reset(); 128 | } 129 | else if(Type == EType.RightController && role == ETrackedControllerRole.RightHand) 130 | { 131 | Reset(); 132 | } 133 | } 134 | 135 | public void OnEnable() 136 | { 137 | Reset(); 138 | SteamVR_Utils.Event.Listen("new_poses", OnNewPoses); 139 | } 140 | 141 | public void OnDisable() 142 | { 143 | SteamVR_Utils.Event.Remove("new_poses", OnNewPoses); 144 | Reset(); 145 | } 146 | 147 | private void Reset() 148 | { 149 | Index = EIndex.None; 150 | IsValid = false; 151 | } 152 | } 153 | -------------------------------------------------------------------------------- /Assets/HOTK/HOTK_TrackedDevice.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 614193a59ecff404795d74472f76c3fd 3 | timeCreated: 1466370795 4 | licenseType: Free 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/HOTK/HOTK_TrackedDeviceManager.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 94fb4a9fda44f4b40a63908a3e471012 3 | timeCreated: 1466229684 4 | licenseType: Free 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/HOTK/[HOTKCameraRig].prefab: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/Assets/HOTK/[HOTKCameraRig].prefab -------------------------------------------------------------------------------- /Assets/HOTK/[HOTKCameraRig].prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 67d2775cd0749bc4395b3471602d9a4a 3 | timeCreated: 1466372020 4 | licenseType: Free 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Plugins.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1bf3d2921db44a045acc548754a7c797 3 | folderAsset: yes 4 | timeCreated: 1465633285 5 | licenseType: Free 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Plugins/openvr_api.bundle.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 386eb143d0a5a0947a0f4bad889c3e6f 3 | folderAsset: yes 4 | timeCreated: 1465633285 5 | licenseType: Free 6 | PluginImporter: 7 | serializedVersion: 1 8 | iconMap: {} 9 | executionOrder: {} 10 | isPreloaded: 0 11 | platformData: 12 | Any: 13 | enabled: 1 14 | settings: {} 15 | userData: 16 | assetBundleName: 17 | assetBundleVariant: 18 | -------------------------------------------------------------------------------- /Assets/Plugins/openvr_api.bundle/Contents.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b45c3effcfd797840bd8ce4b155dc277 3 | folderAsset: yes 4 | timeCreated: 1465633286 5 | licenseType: Free 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Plugins/openvr_api.bundle/Contents/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildMachineOSBuild 6 | 13F1077 7 | CFBundleDevelopmentRegion 8 | en 9 | CFBundleExecutable 10 | openvr_api 11 | CFBundleIdentifier 12 | com.valvesoftware.openvr-api 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | openvr_api 17 | CFBundlePackageType 18 | BNDL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1 25 | DTCompiler 26 | com.apple.compilers.llvm.clang.1_0 27 | DTPlatformBuild 28 | 6A1052d 29 | DTPlatformVersion 30 | GM 31 | DTSDKBuild 32 | 14A382 33 | DTSDKName 34 | macosx10.10 35 | DTXcode 36 | 0610 37 | DTXcodeBuild 38 | 6A1052d 39 | NSHumanReadableCopyright 40 | Copyright © 2015 Valve Corporation. All rights reserved. 41 | 42 | 43 | -------------------------------------------------------------------------------- /Assets/Plugins/openvr_api.bundle/Contents/Info.plist.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7312850033767144bb8b56eac9e62164 3 | timeCreated: 1438824914 4 | licenseType: Store 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Plugins/openvr_api.bundle/Contents/MacOS.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 68a19ebe3f7a2b947b8c7720fbc82b59 3 | folderAsset: yes 4 | timeCreated: 1465633286 5 | licenseType: Free 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Plugins/openvr_api.bundle/Contents/MacOS/openvr_api: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/Assets/Plugins/openvr_api.bundle/Contents/MacOS/openvr_api -------------------------------------------------------------------------------- /Assets/Plugins/openvr_api.bundle/Contents/MacOS/openvr_api.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4336b0f89b9f24808bfc781a1e52b6f0 3 | timeCreated: 1438825138 4 | licenseType: Store 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Plugins/openvr_api.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8d26b9eddedb33d48be044bb268a57c7 3 | timeCreated: 1429123043 4 | licenseType: Store 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/Plugins/x86.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ce57571128519544da2f66ec0a7a36fb 3 | folderAsset: yes 4 | timeCreated: 1465633285 5 | licenseType: Free 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Plugins/x86/libopenvr_api.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/Assets/Plugins/x86/libopenvr_api.so -------------------------------------------------------------------------------- /Assets/Plugins/x86/libopenvr_api.so.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 64b48e8bdcc9e0541aa902936def9faa 3 | timeCreated: 1463158122 4 | licenseType: Store 5 | PluginImporter: 6 | serializedVersion: 1 7 | iconMap: {} 8 | executionOrder: {} 9 | isPreloaded: 0 10 | platformData: 11 | Any: 12 | enabled: 1 13 | settings: {} 14 | Editor: 15 | enabled: 0 16 | settings: 17 | CPU: x86 18 | DefaultValueInitialized: true 19 | Linux: 20 | enabled: 1 21 | settings: 22 | CPU: x86 23 | Linux64: 24 | enabled: 0 25 | settings: 26 | CPU: None 27 | LinuxUniversal: 28 | enabled: 0 29 | settings: 30 | CPU: x86 31 | OSXIntel: 32 | enabled: 1 33 | settings: 34 | CPU: AnyCPU 35 | OSXIntel64: 36 | enabled: 0 37 | settings: 38 | CPU: None 39 | OSXUniversal: 40 | enabled: 0 41 | settings: 42 | CPU: x86 43 | Win: 44 | enabled: 1 45 | settings: 46 | CPU: AnyCPU 47 | Win64: 48 | enabled: 0 49 | settings: 50 | CPU: None 51 | userData: 52 | assetBundleName: 53 | assetBundleVariant: 54 | -------------------------------------------------------------------------------- /Assets/Plugins/x86/openvr_api.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/Assets/Plugins/x86/openvr_api.dll -------------------------------------------------------------------------------- /Assets/Plugins/x86/openvr_api.dll.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 73d5d79effb76f84491567f3c473b810 3 | timeCreated: 1429123045 4 | licenseType: Store 5 | PluginImporter: 6 | serializedVersion: 1 7 | iconMap: {} 8 | executionOrder: {} 9 | isPreloaded: 0 10 | platformData: 11 | Any: 12 | enabled: 0 13 | settings: {} 14 | Editor: 15 | enabled: 1 16 | settings: 17 | CPU: x86 18 | DefaultValueInitialized: true 19 | OS: Windows 20 | Win: 21 | enabled: 1 22 | settings: 23 | CPU: AnyCPU 24 | Win64: 25 | enabled: 1 26 | settings: 27 | CPU: None 28 | userData: 29 | assetBundleName: 30 | assetBundleVariant: 31 | -------------------------------------------------------------------------------- /Assets/Plugins/x86_64.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: efed635ae0049ee4c825ce2cf3ab50b0 3 | folderAsset: yes 4 | timeCreated: 1465633285 5 | licenseType: Free 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Plugins/x86_64/libopenvr_api.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/Assets/Plugins/x86_64/libopenvr_api.so -------------------------------------------------------------------------------- /Assets/Plugins/x86_64/libopenvr_api.so.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d4aa343e31277cd45b2c3096d3318b90 3 | timeCreated: 1457668425 4 | licenseType: Store 5 | PluginImporter: 6 | serializedVersion: 1 7 | iconMap: {} 8 | executionOrder: {} 9 | isPreloaded: 0 10 | platformData: 11 | Android: 12 | enabled: 0 13 | settings: 14 | CPU: AnyCPU 15 | Any: 16 | enabled: 0 17 | settings: {} 18 | Editor: 19 | enabled: 0 20 | settings: 21 | CPU: x86_64 22 | DefaultValueInitialized: true 23 | OS: AnyOS 24 | Linux: 25 | enabled: 1 26 | settings: 27 | CPU: None 28 | Linux64: 29 | enabled: 1 30 | settings: 31 | CPU: x86_64 32 | LinuxUniversal: 33 | enabled: 1 34 | settings: 35 | CPU: x86_64 36 | OSXIntel: 37 | enabled: 1 38 | settings: 39 | CPU: None 40 | OSXIntel64: 41 | enabled: 1 42 | settings: 43 | CPU: None 44 | OSXUniversal: 45 | enabled: 1 46 | settings: 47 | CPU: None 48 | WP8: 49 | enabled: 0 50 | settings: 51 | CPU: AnyCPU 52 | DontProcess: False 53 | PlaceholderPath: 54 | Win: 55 | enabled: 1 56 | settings: 57 | CPU: None 58 | Win64: 59 | enabled: 1 60 | settings: 61 | CPU: AnyCPU 62 | WindowsStoreApps: 63 | enabled: 0 64 | settings: 65 | CPU: AnyCPU 66 | DontProcess: False 67 | PlaceholderPath: 68 | SDK: AnySDK 69 | iOS: 70 | enabled: 0 71 | settings: 72 | CompileFlags: 73 | FrameworkDependencies: 74 | userData: 75 | assetBundleName: 76 | assetBundleVariant: 77 | -------------------------------------------------------------------------------- /Assets/Plugins/x86_64/openvr_api.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/Assets/Plugins/x86_64/openvr_api.dll -------------------------------------------------------------------------------- /Assets/Plugins/x86_64/openvr_api.dll.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9d42e4d46d897b648a1d6ed58a18e8a6 3 | timeCreated: 1429123045 4 | licenseType: Store 5 | PluginImporter: 6 | serializedVersion: 1 7 | iconMap: {} 8 | executionOrder: {} 9 | isPreloaded: 0 10 | platformData: 11 | Any: 12 | enabled: 0 13 | settings: {} 14 | Editor: 15 | enabled: 1 16 | settings: 17 | CPU: x86_64 18 | DefaultValueInitialized: true 19 | OS: Windows 20 | Win: 21 | enabled: 1 22 | settings: 23 | CPU: None 24 | Win64: 25 | enabled: 1 26 | settings: 27 | CPU: AnyCPU 28 | userData: 29 | assetBundleName: 30 | assetBundleVariant: 31 | -------------------------------------------------------------------------------- /Assets/SteamVR.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f0032bd9499af5e4aa85ea41615843a0 3 | folderAsset: yes 4 | timeCreated: 1465633285 5 | licenseType: Free 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/SteamVR/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 941dde9a9ca65d74489c024e76c8bfe8 3 | folderAsset: yes 4 | timeCreated: 1465633285 5 | licenseType: Free 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/SteamVR/Editor/SteamVR_Editor.cs: -------------------------------------------------------------------------------- 1 | //========= Copyright 2014, Valve Corporation, All rights reserved. =========== 2 | // 3 | // Purpose: Custom inspector display for SteamVR_Camera 4 | // 5 | //============================================================================= 6 | 7 | using UnityEngine; 8 | using UnityEditor; 9 | using System.IO; 10 | 11 | [CustomEditor(typeof(SteamVR_Camera)), CanEditMultipleObjects] 12 | public class SteamVR_Editor : Editor 13 | { 14 | int bannerHeight = 150; 15 | Texture logo; 16 | 17 | SerializedProperty script, wireframe; 18 | 19 | string GetResourcePath() 20 | { 21 | var ms = MonoScript.FromScriptableObject(this); 22 | var path = AssetDatabase.GetAssetPath(ms); 23 | path = Path.GetDirectoryName(path); 24 | return path.Substring(0, path.Length - "Editor".Length) + "Textures/"; 25 | } 26 | 27 | void OnEnable() 28 | { 29 | var resourcePath = GetResourcePath(); 30 | #if UNITY_5_0 31 | logo = Resources.LoadAssetAtPath(resourcePath + "logo.png"); 32 | #else 33 | logo = AssetDatabase.LoadAssetAtPath(resourcePath + "logo.png"); 34 | #endif 35 | script = serializedObject.FindProperty("m_Script"); 36 | 37 | wireframe = serializedObject.FindProperty("wireframe"); 38 | 39 | foreach (SteamVR_Camera target in targets) 40 | target.ForceLast(); 41 | } 42 | 43 | public override void OnInspectorGUI() 44 | { 45 | serializedObject.Update(); 46 | 47 | var rect = GUILayoutUtility.GetRect(Screen.width - 38, bannerHeight, GUI.skin.box); 48 | if (logo) 49 | GUI.DrawTexture(rect, logo, ScaleMode.ScaleToFit); 50 | 51 | if (!Application.isPlaying) 52 | { 53 | var expand = false; 54 | var collapse = false; 55 | foreach (SteamVR_Camera target in targets) 56 | { 57 | if (AssetDatabase.Contains(target)) 58 | continue; 59 | if (target.isExpanded) 60 | collapse = true; 61 | else 62 | expand = true; 63 | } 64 | 65 | if (expand) 66 | { 67 | GUILayout.BeginHorizontal(); 68 | if (GUILayout.Button("Expand")) 69 | { 70 | foreach (SteamVR_Camera target in targets) 71 | { 72 | if (AssetDatabase.Contains(target)) 73 | continue; 74 | if (!target.isExpanded) 75 | { 76 | target.Expand(); 77 | EditorUtility.SetDirty(target); 78 | } 79 | } 80 | } 81 | GUILayout.Space(18); 82 | GUILayout.EndHorizontal(); 83 | } 84 | 85 | if (collapse) 86 | { 87 | GUILayout.BeginHorizontal(); 88 | if (GUILayout.Button("Collapse")) 89 | { 90 | foreach (SteamVR_Camera target in targets) 91 | { 92 | if (AssetDatabase.Contains(target)) 93 | continue; 94 | if (target.isExpanded) 95 | { 96 | target.Collapse(); 97 | EditorUtility.SetDirty(target); 98 | } 99 | } 100 | } 101 | GUILayout.Space(18); 102 | GUILayout.EndHorizontal(); 103 | } 104 | } 105 | 106 | EditorGUILayout.PropertyField(script); 107 | EditorGUILayout.PropertyField(wireframe); 108 | 109 | serializedObject.ApplyModifiedProperties(); 110 | } 111 | 112 | public static void ExportPackage() 113 | { 114 | AssetDatabase.ExportPackage(new string[] { 115 | "Assets/SteamVR", 116 | "Assets/Plugins/openvr_api.cs", 117 | "Assets/Plugins/openvr_api.bundle", 118 | "Assets/Plugins/x86/openvr_api.dll", 119 | "Assets/Plugins/x86/steam_api.dll", 120 | "Assets/Plugins/x86/libsteam_api.so", 121 | "Assets/Plugins/x86_64/openvr_api.dll", 122 | "Assets/Plugins/x86_64/steam_api.dll", 123 | "Assets/Plugins/x86_64/libsteam_api.so", 124 | "Assets/Plugins/x86_64/libopenvr_api.so", 125 | }, "steamvr.unitypackage", ExportPackageOptions.Recurse); 126 | EditorApplication.Exit(0); 127 | } 128 | } 129 | 130 | -------------------------------------------------------------------------------- /Assets/SteamVR/Editor/SteamVR_Editor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5ba22c80948c94e44a82b9fd1b3abd0d 3 | MonoImporter: 4 | serializedVersion: 2 5 | defaultReferences: [] 6 | executionOrder: 0 7 | icon: {instanceID: 0} 8 | userData: 9 | assetBundleName: 10 | -------------------------------------------------------------------------------- /Assets/SteamVR/Editor/SteamVR_Settings.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d2244eee8a3a4784fb40d1123ff69301 3 | timeCreated: 1438809573 4 | licenseType: Store 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/SteamVR/Editor/SteamVR_Update.cs: -------------------------------------------------------------------------------- 1 | //========= Copyright 2015, Valve Corporation, All rights reserved. =========== 2 | // 3 | // Purpose: Notify developers when a new version of the plugin is available. 4 | // 5 | //============================================================================= 6 | 7 | using UnityEngine; 8 | using UnityEditor; 9 | using System.IO; 10 | using System.Text.RegularExpressions; 11 | 12 | [InitializeOnLoad] 13 | public class SteamVR_Update : EditorWindow 14 | { 15 | const string currentVersion = "1.1.0"; 16 | const string versionUrl = "http://media.steampowered.com/apps/steamvr/unitypluginversion.txt"; 17 | const string notesUrl = "http://media.steampowered.com/apps/steamvr/unityplugin-v{0}.txt"; 18 | const string pluginUrl = "http://u3d.as/content/valve-corporation/steam-vr-plugin"; 19 | const string doNotShowKey = "SteamVR.DoNotShow.v{0}"; 20 | 21 | static WWW wwwVersion, wwwNotes; 22 | static string version, notes; 23 | static SteamVR_Update window; 24 | 25 | static SteamVR_Update() 26 | { 27 | wwwVersion = new WWW(versionUrl); 28 | EditorApplication.update += Update; 29 | } 30 | 31 | static void Update() 32 | { 33 | if (wwwVersion != null) 34 | { 35 | if (!wwwVersion.isDone) 36 | return; 37 | 38 | if (UrlSuccess(wwwVersion)) 39 | version = wwwVersion.text; 40 | 41 | wwwVersion = null; 42 | 43 | if (ShouldDisplay()) 44 | { 45 | var url = string.Format(notesUrl, version); 46 | wwwNotes = new WWW(url); 47 | 48 | window = GetWindow(true); 49 | window.minSize = new Vector2(320, 440); 50 | //window.title = "SteamVR"; 51 | } 52 | } 53 | 54 | if (wwwNotes != null) 55 | { 56 | if (!wwwNotes.isDone) 57 | return; 58 | 59 | if (UrlSuccess(wwwNotes)) 60 | notes = wwwNotes.text; 61 | 62 | wwwNotes = null; 63 | 64 | if (notes != "") 65 | window.Repaint(); 66 | } 67 | 68 | EditorApplication.update -= Update; 69 | } 70 | 71 | static bool UrlSuccess(WWW www) 72 | { 73 | if (!string.IsNullOrEmpty(www.error)) 74 | return false; 75 | if (Regex.IsMatch(www.text, "404 not found", RegexOptions.IgnoreCase)) 76 | return false; 77 | return true; 78 | } 79 | 80 | static bool ShouldDisplay() 81 | { 82 | if (string.IsNullOrEmpty(version)) 83 | return false; 84 | if (version == currentVersion) 85 | return false; 86 | if (EditorPrefs.HasKey(string.Format(doNotShowKey, version))) 87 | return false; 88 | 89 | // parse to see if newer (e.g. 1.0.4 vs 1.0.3) 90 | var versionSplit = version.Split('.'); 91 | var currentVersionSplit = currentVersion.Split('.'); 92 | for (int i = 0; i < versionSplit.Length && i < currentVersionSplit.Length; i++) 93 | { 94 | int versionValue, currentVersionValue; 95 | if (int.TryParse(versionSplit[i], out versionValue) && 96 | int.TryParse(currentVersionSplit[i], out currentVersionValue)) 97 | { 98 | if (versionValue > currentVersionValue) 99 | return true; 100 | if (versionValue < currentVersionValue) 101 | return false; 102 | } 103 | } 104 | 105 | // same up to this point, now differentiate based on number of sub values (e.g. 1.0.4.1 vs 1.0.4) 106 | if (versionSplit.Length <= currentVersionSplit.Length) 107 | return false; 108 | 109 | return true; 110 | } 111 | 112 | Vector2 scrollPosition; 113 | bool toggleState; 114 | 115 | string GetResourcePath() 116 | { 117 | var ms = MonoScript.FromScriptableObject(this); 118 | var path = AssetDatabase.GetAssetPath(ms); 119 | path = Path.GetDirectoryName(path); 120 | return path.Substring(0, path.Length - "Editor".Length) + "Textures/"; 121 | } 122 | 123 | public void OnGUI() 124 | { 125 | EditorGUILayout.HelpBox("A new version of the SteamVR plugin is available!", MessageType.Warning); 126 | 127 | var resourcePath = GetResourcePath(); 128 | #if UNITY_5_0 129 | var logo = Resources.LoadAssetAtPath(resourcePath + "logo.png"); 130 | #else 131 | var logo = AssetDatabase.LoadAssetAtPath(resourcePath + "logo.png"); 132 | #endif 133 | var rect = GUILayoutUtility.GetRect(position.width, 150, GUI.skin.box); 134 | if (logo) 135 | GUI.DrawTexture(rect, logo, ScaleMode.ScaleToFit); 136 | 137 | scrollPosition = GUILayout.BeginScrollView(scrollPosition); 138 | 139 | GUILayout.Label("Current version: " + currentVersion); 140 | GUILayout.Label("New version: " + version); 141 | 142 | if (notes != "") 143 | { 144 | GUILayout.Label("Release notes:"); 145 | EditorGUILayout.HelpBox(notes, MessageType.Info); 146 | } 147 | 148 | GUILayout.EndScrollView(); 149 | 150 | GUILayout.FlexibleSpace(); 151 | 152 | if (GUILayout.Button("Get Latest Version")) 153 | { 154 | Application.OpenURL(pluginUrl); 155 | } 156 | 157 | EditorGUI.BeginChangeCheck(); 158 | var doNotShow = GUILayout.Toggle(toggleState, "Do not prompt for this version again."); 159 | if (EditorGUI.EndChangeCheck()) 160 | { 161 | toggleState = doNotShow; 162 | var key = string.Format(doNotShowKey, version); 163 | if (doNotShow) 164 | EditorPrefs.SetBool(key, true); 165 | else 166 | EditorPrefs.DeleteKey(key); 167 | } 168 | } 169 | } 170 | 171 | -------------------------------------------------------------------------------- /Assets/SteamVR/Editor/SteamVR_Update.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 73a0556bda803bf4e898751dcfcf21a8 3 | timeCreated: 1433880062 4 | licenseType: Store 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/SteamVR/Prefabs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f4d909dcb749c45459770e058a2efac3 3 | folderAsset: yes 4 | timeCreated: 1465633285 5 | licenseType: Free 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/SteamVR/Prefabs/[SteamVR].prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1 &132594 4 | GameObject: 5 | m_ObjectHideFlags: 0 6 | m_PrefabParentObject: {fileID: 0} 7 | m_PrefabInternal: {fileID: 100100000} 8 | serializedVersion: 4 9 | m_Component: 10 | - 4: {fileID: 458990} 11 | - 114: {fileID: 11432822} 12 | m_Layer: 0 13 | m_Name: '[SteamVR]' 14 | m_TagString: Untagged 15 | m_Icon: {fileID: 0} 16 | m_NavMeshLayer: 0 17 | m_StaticEditorFlags: 0 18 | m_IsActive: 1 19 | --- !u!4 &458990 20 | Transform: 21 | m_ObjectHideFlags: 1 22 | m_PrefabParentObject: {fileID: 0} 23 | m_PrefabInternal: {fileID: 100100000} 24 | m_GameObject: {fileID: 132594} 25 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 26 | m_LocalPosition: {x: 0, y: 0, z: 0} 27 | m_LocalScale: {x: 1, y: 1, z: 1} 28 | m_Children: [] 29 | m_Father: {fileID: 0} 30 | m_RootOrder: 0 31 | --- !u!114 &11432822 32 | MonoBehaviour: 33 | m_ObjectHideFlags: 1 34 | m_PrefabParentObject: {fileID: 0} 35 | m_PrefabInternal: {fileID: 100100000} 36 | m_GameObject: {fileID: 132594} 37 | m_Enabled: 1 38 | m_EditorHideFlags: 0 39 | m_Script: {fileID: 11500000, guid: e979227f3384fac4b8ca0b3550bf005c, type: 3} 40 | m_Name: 41 | m_EditorClassIdentifier: 42 | helpSeconds: 10 43 | helpText: You may now put on your headset. 44 | helpStyle: 45 | m_Name: 46 | m_Normal: 47 | m_Background: {fileID: 0} 48 | m_TextColor: {r: 0, g: 0, b: 0, a: 1} 49 | m_Hover: 50 | m_Background: {fileID: 0} 51 | m_TextColor: {r: 0, g: 0, b: 0, a: 1} 52 | m_Active: 53 | m_Background: {fileID: 0} 54 | m_TextColor: {r: 0, g: 0, b: 0, a: 1} 55 | m_Focused: 56 | m_Background: {fileID: 0} 57 | m_TextColor: {r: 0, g: 0, b: 0, a: 1} 58 | m_OnNormal: 59 | m_Background: {fileID: 0} 60 | m_TextColor: {r: 0, g: 0, b: 0, a: 1} 61 | m_OnHover: 62 | m_Background: {fileID: 0} 63 | m_TextColor: {r: 0, g: 0, b: 0, a: 1} 64 | m_OnActive: 65 | m_Background: {fileID: 0} 66 | m_TextColor: {r: 0, g: 0, b: 0, a: 1} 67 | m_OnFocused: 68 | m_Background: {fileID: 0} 69 | m_TextColor: {r: 0, g: 0, b: 0, a: 1} 70 | m_Border: 71 | m_Left: 0 72 | m_Right: 0 73 | m_Top: 0 74 | m_Bottom: 0 75 | m_Margin: 76 | m_Left: 0 77 | m_Right: 0 78 | m_Top: 0 79 | m_Bottom: 0 80 | m_Padding: 81 | m_Left: 0 82 | m_Right: 0 83 | m_Top: 0 84 | m_Bottom: 0 85 | m_Overflow: 86 | m_Left: 0 87 | m_Right: 0 88 | m_Top: 0 89 | m_Bottom: 0 90 | m_Font: {fileID: 0} 91 | m_FontSize: 0 92 | m_FontStyle: 0 93 | m_Alignment: 0 94 | m_WordWrap: 0 95 | m_RichText: 1 96 | m_TextClipping: 0 97 | m_ImagePosition: 0 98 | m_ContentOffset: {x: 0, y: 0} 99 | m_FixedWidth: 0 100 | m_FixedHeight: 0 101 | m_StretchWidth: 1 102 | m_StretchHeight: 0 103 | leftMask: 104 | serializedVersion: 2 105 | m_Bits: 0 106 | rightMask: 107 | serializedVersion: 2 108 | m_Bits: 0 109 | trackingSpace: 1 110 | --- !u!1001 &100100000 111 | Prefab: 112 | m_ObjectHideFlags: 1 113 | serializedVersion: 2 114 | m_Modification: 115 | m_TransformParent: {fileID: 0} 116 | m_Modifications: [] 117 | m_RemovedComponents: [] 118 | m_ParentPrefab: {fileID: 0} 119 | m_RootGameObject: {fileID: 132594} 120 | m_IsPrefabParent: 1 121 | -------------------------------------------------------------------------------- /Assets/SteamVR/Prefabs/[SteamVR].prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4f35fa249b5008c44ac2998be6f82d4d 3 | timeCreated: 1429757514 4 | licenseType: Store 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/SteamVR/Resources.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 128449277d8f96b46a3816056eee4067 3 | folderAsset: yes 4 | timeCreated: 1465633285 5 | licenseType: Free 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/SteamVR/Resources/SteamVR_Blit.shader: -------------------------------------------------------------------------------- 1 | Shader "Custom/SteamVR_Blit" { 2 | Properties { _MainTex ("Base (RGB)", 2D) = "white" {} } 3 | 4 | CGINCLUDE 5 | 6 | #include "UnityCG.cginc" 7 | 8 | sampler2D _MainTex; 9 | 10 | struct v2f { 11 | float4 pos : SV_POSITION; 12 | float2 tex : TEXCOORD0; 13 | }; 14 | 15 | v2f vert(appdata_base v) { 16 | v2f o; 17 | o.pos = v.vertex; 18 | o.tex = v.texcoord; 19 | return o; 20 | } 21 | 22 | float4 frag(v2f i) : COLOR { 23 | return tex2D(_MainTex, i.tex); 24 | } 25 | 26 | float4 frag_linear(v2f i) : COLOR { 27 | return pow(tex2D(_MainTex, i.tex), 1.0 / 2.2); 28 | } 29 | 30 | ENDCG 31 | 32 | SubShader { 33 | Pass { 34 | ZTest Always Cull Off ZWrite Off 35 | Fog { Mode Off } 36 | 37 | CGPROGRAM 38 | #pragma vertex vert 39 | #pragma fragment frag 40 | ENDCG 41 | } 42 | Pass { 43 | ZTest Always Cull Off ZWrite Off 44 | Fog { Mode Off } 45 | 46 | CGPROGRAM 47 | #pragma vertex vert 48 | #pragma fragment frag_linear 49 | ENDCG 50 | } 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /Assets/SteamVR/Resources/SteamVR_Blit.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 021228b76f139394fae4afb56cd6bf29 3 | timeCreated: 1465931332 4 | licenseType: Free 5 | ShaderImporter: 6 | defaultTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/SteamVR/Resources/SteamVR_BlitFlip.shader: -------------------------------------------------------------------------------- 1 | Shader "Custom/SteamVR_BlitFlip" { 2 | Properties { _MainTex ("Base (RGB)", 2D) = "white" {} } 3 | 4 | CGINCLUDE 5 | 6 | #include "UnityCG.cginc" 7 | 8 | sampler2D _MainTex; 9 | 10 | struct v2f { 11 | float4 pos : SV_POSITION; 12 | float2 tex : TEXCOORD0; 13 | }; 14 | 15 | v2f vert(appdata_base v) { 16 | v2f o; 17 | o.pos = mul(UNITY_MATRIX_MVP, v.vertex); 18 | o.tex.x = v.texcoord.x; 19 | o.tex.y = 1 - v.texcoord.y; 20 | return o; 21 | } 22 | 23 | float4 frag(v2f i) : COLOR { 24 | return tex2D(_MainTex, i.tex); 25 | } 26 | 27 | ENDCG 28 | 29 | SubShader { 30 | Pass { 31 | ZTest Always Cull Off ZWrite Off 32 | Fog { Mode Off } 33 | 34 | CGPROGRAM 35 | #pragma vertex vert 36 | #pragma fragment frag 37 | ENDCG 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /Assets/SteamVR/Resources/SteamVR_BlitFlip.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7f38d614fcfa3b541bde2acda92af7ca 3 | timeCreated: 1465931347 4 | licenseType: Free 5 | ShaderImporter: 6 | defaultTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/SteamVR/Resources/SteamVR_HiddenArea.shader: -------------------------------------------------------------------------------- 1 | Shader "Custom/SteamVR_HiddenArea" { 2 | 3 | CGINCLUDE 4 | 5 | #include "UnityCG.cginc" 6 | 7 | float4 vert(appdata_base v) : SV_POSITION { return v.vertex; } 8 | float4 frag(float4 v : SV_POSITION) : COLOR { return float4(0,0,0,0); } 9 | 10 | ENDCG 11 | 12 | SubShader { 13 | Tags { "Queue" = "Background" } 14 | Pass { 15 | ZTest Always Cull Off ZWrite On 16 | Fog { Mode Off } 17 | 18 | CGPROGRAM 19 | #pragma vertex vert 20 | #pragma fragment frag 21 | ENDCG 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Assets/SteamVR/Resources/SteamVR_HiddenArea.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7687f525efe9f4b449dfe5a7fe0b7c8e 3 | timeCreated: 1428972938 4 | licenseType: Store 5 | ShaderImporter: 6 | defaultTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/SteamVR/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 95553d89c282bf141b499a612fd87915 3 | folderAsset: yes 4 | timeCreated: 1465633285 5 | licenseType: Free 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/SteamVR/Scripts/SteamVR.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7fae0ddab09ac324c85494471274d6a4 3 | MonoImporter: 4 | serializedVersion: 2 5 | defaultReferences: [] 6 | executionOrder: 0 7 | icon: {instanceID: 0} 8 | userData: 9 | assetBundleName: 10 | -------------------------------------------------------------------------------- /Assets/SteamVR/Scripts/SteamVR_Camera.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6bca9ccf900ccc84c887d783321d27e2 3 | MonoImporter: 4 | serializedVersion: 2 5 | defaultReferences: [] 6 | executionOrder: 0 7 | icon: {instanceID: 0} 8 | userData: 9 | assetBundleName: 10 | -------------------------------------------------------------------------------- /Assets/SteamVR/Scripts/SteamVR_CameraFlip.cs: -------------------------------------------------------------------------------- 1 | //========= Copyright 2015, Valve Corporation, All rights reserved. =========== 2 | // 3 | // Purpose: Flips the camera output back to normal for D3D. 4 | // 5 | //============================================================================= 6 | 7 | using UnityEngine; 8 | using System.Collections; 9 | 10 | public class SteamVR_CameraFlip : MonoBehaviour 11 | { 12 | static Material blitMaterial; 13 | 14 | void OnEnable() 15 | { 16 | if (blitMaterial == null) 17 | blitMaterial = new Material(Shader.Find("Custom/SteamVR_BlitFlip")); 18 | } 19 | 20 | void OnRenderImage(RenderTexture src, RenderTexture dest) 21 | { 22 | Graphics.Blit(src, dest, blitMaterial); 23 | } 24 | } 25 | 26 | -------------------------------------------------------------------------------- /Assets/SteamVR/Scripts/SteamVR_CameraFlip.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f5be45115742b07478e21c85fcc233ec 3 | timeCreated: 1430851231 4 | licenseType: Store 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/SteamVR/Scripts/SteamVR_CameraMask.cs: -------------------------------------------------------------------------------- 1 | //========= Copyright 2014, Valve Corporation, All rights reserved. =========== 2 | // 3 | // Purpose: Masks out pixels that cannot be seen through the connected hmd. 4 | // 5 | //============================================================================= 6 | 7 | using UnityEngine; 8 | using System.Collections; 9 | using UnityEngine.Rendering; 10 | 11 | [RequireComponent(typeof(MeshFilter), typeof(MeshRenderer))] 12 | public class SteamVR_CameraMask : MonoBehaviour 13 | { 14 | static Material material; 15 | static Mesh[] hiddenAreaMeshes = new Mesh[] { null, null }; 16 | 17 | MeshFilter meshFilter; 18 | 19 | void Awake() 20 | { 21 | meshFilter = GetComponent(); 22 | 23 | if (material == null) 24 | material = new Material(Shader.Find("Custom/SteamVR_HiddenArea")); 25 | 26 | var mr = GetComponent(); 27 | mr.material = material; 28 | mr.shadowCastingMode = ShadowCastingMode.Off; 29 | mr.receiveShadows = false; 30 | #if !(UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) 31 | mr.lightProbeUsage = LightProbeUsage.Off; 32 | #else 33 | mr.useLightProbes = false; 34 | #endif 35 | mr.reflectionProbeUsage = ReflectionProbeUsage.Off; 36 | } 37 | 38 | public void Set(SteamVR vr, Valve.VR.EVREye eye) 39 | { 40 | int i = (int)eye; 41 | if (hiddenAreaMeshes[i] == null) 42 | hiddenAreaMeshes[i] = SteamVR_Utils.CreateHiddenAreaMesh(vr.hmd.GetHiddenAreaMesh(eye), vr.textureBounds[i]); 43 | meshFilter.mesh = hiddenAreaMeshes[i]; 44 | } 45 | 46 | public void Clear() 47 | { 48 | meshFilter.mesh = null; 49 | } 50 | } 51 | 52 | -------------------------------------------------------------------------------- /Assets/SteamVR/Scripts/SteamVR_CameraMask.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5828f252c3c228f4b931f66c21e525c4 3 | MonoImporter: 4 | serializedVersion: 2 5 | defaultReferences: [] 6 | executionOrder: 0 7 | icon: {instanceID: 0} 8 | userData: 9 | assetBundleName: 10 | -------------------------------------------------------------------------------- /Assets/SteamVR/Scripts/SteamVR_Controller.cs: -------------------------------------------------------------------------------- 1 | //========= Copyright 2015, Valve Corporation, All rights reserved. =========== 2 | // 3 | // Purpose: Wrapper for working with SteamVR controller input 4 | // 5 | // Example usage: 6 | // 7 | // var deviceIndex = SteamVR_Controller.GetDeviceIndex(SteamVR_Controller.DeviceRelation.Leftmost); 8 | // if (deviceIndex != -1 && SteamVR_Controller.Input(deviceIndex).GetPressDown(SteamVR_Controller.ButtonMask.Trigger)) 9 | // SteamVR_Controller.Input(deviceIndex).TriggerHapticPulse(1000); 10 | // 11 | //============================================================================= 12 | 13 | using UnityEngine; 14 | using Valve.VR; 15 | 16 | public class SteamVR_Controller 17 | { 18 | public class ButtonMask 19 | { 20 | public const ulong System = (1ul << (int)EVRButtonId.k_EButton_System); // reserved 21 | public const ulong ApplicationMenu = (1ul << (int)EVRButtonId.k_EButton_ApplicationMenu); 22 | public const ulong Grip = (1ul << (int)EVRButtonId.k_EButton_Grip); 23 | public const ulong Axis0 = (1ul << (int)EVRButtonId.k_EButton_Axis0); 24 | public const ulong Axis1 = (1ul << (int)EVRButtonId.k_EButton_Axis1); 25 | public const ulong Axis2 = (1ul << (int)EVRButtonId.k_EButton_Axis2); 26 | public const ulong Axis3 = (1ul << (int)EVRButtonId.k_EButton_Axis3); 27 | public const ulong Axis4 = (1ul << (int)EVRButtonId.k_EButton_Axis4); 28 | public const ulong Touchpad = (1ul << (int)EVRButtonId.k_EButton_SteamVR_Touchpad); 29 | public const ulong Trigger = (1ul << (int)EVRButtonId.k_EButton_SteamVR_Trigger); 30 | } 31 | 32 | public class Device 33 | { 34 | public Device(uint i) { index = i; } 35 | public uint index { get; private set; } 36 | 37 | public bool valid { get; private set; } 38 | public bool connected { get { Update(); return pose.bDeviceIsConnected; } } 39 | public bool hasTracking { get { Update(); return pose.bPoseIsValid; } } 40 | 41 | public bool outOfRange { get { Update(); return pose.eTrackingResult == ETrackingResult.Running_OutOfRange || pose.eTrackingResult == ETrackingResult.Calibrating_OutOfRange; } } 42 | public bool calibrating { get { Update(); return pose.eTrackingResult == ETrackingResult.Calibrating_InProgress || pose.eTrackingResult == ETrackingResult.Calibrating_OutOfRange; } } 43 | public bool uninitialized { get { Update(); return pose.eTrackingResult == ETrackingResult.Uninitialized; } } 44 | 45 | // These values are only accurate for the last controller state change (e.g. trigger release), and by definition, will always lag behind 46 | // the predicted visual poses that drive SteamVR_TrackedObjects since they are sync'd to the input timestamp that caused them to update. 47 | public SteamVR_Utils.RigidTransform transform { get { Update(); return new SteamVR_Utils.RigidTransform(pose.mDeviceToAbsoluteTracking); } } 48 | public Vector3 velocity { get { Update(); return new Vector3(pose.vVelocity.v0, pose.vVelocity.v1, -pose.vVelocity.v2); } } 49 | public Vector3 angularVelocity { get { Update(); return new Vector3(-pose.vAngularVelocity.v0, -pose.vAngularVelocity.v1, pose.vAngularVelocity.v2); } } 50 | 51 | public VRControllerState_t GetState() { Update(); return state; } 52 | public VRControllerState_t GetPrevState() { Update(); return prevState; } 53 | public TrackedDevicePose_t GetPose() { Update(); return pose; } 54 | 55 | VRControllerState_t state, prevState; 56 | TrackedDevicePose_t pose; 57 | int prevFrameCount = -1; 58 | public void Update() 59 | { 60 | if (Time.frameCount != prevFrameCount) 61 | { 62 | prevFrameCount = Time.frameCount; 63 | prevState = state; 64 | 65 | var system = OpenVR.System; 66 | if (system != null) 67 | { 68 | valid = system.GetControllerStateWithPose(SteamVR_Render.instance.trackingSpace, index, ref state, ref pose); 69 | UpdateHairTrigger(); 70 | } 71 | } 72 | } 73 | 74 | public bool GetPress(ulong buttonMask) { Update(); return (state.ulButtonPressed & buttonMask) != 0; } 75 | public bool GetPressDown(ulong buttonMask) { Update(); return (state.ulButtonPressed & buttonMask) != 0 && (prevState.ulButtonPressed & buttonMask) == 0; } 76 | public bool GetPressUp(ulong buttonMask) { Update(); return (state.ulButtonPressed & buttonMask) == 0 && (prevState.ulButtonPressed & buttonMask) != 0; } 77 | 78 | public bool GetPress(EVRButtonId buttonId) { return GetPress(1ul << (int)buttonId); } 79 | public bool GetPressDown(EVRButtonId buttonId) { return GetPressDown(1ul << (int)buttonId); } 80 | public bool GetPressUp(EVRButtonId buttonId) { return GetPressUp(1ul << (int)buttonId); } 81 | 82 | public bool GetTouch(ulong buttonMask) { Update(); return (state.ulButtonTouched & buttonMask) != 0; } 83 | public bool GetTouchDown(ulong buttonMask) { Update(); return (state.ulButtonTouched & buttonMask) != 0 && (prevState.ulButtonTouched & buttonMask) == 0; } 84 | public bool GetTouchUp(ulong buttonMask) { Update(); return (state.ulButtonTouched & buttonMask) == 0 && (prevState.ulButtonTouched & buttonMask) != 0; } 85 | 86 | public bool GetTouch(EVRButtonId buttonId) { return GetTouch(1ul << (int)buttonId); } 87 | public bool GetTouchDown(EVRButtonId buttonId) { return GetTouchDown(1ul << (int)buttonId); } 88 | public bool GetTouchUp(EVRButtonId buttonId) { return GetTouchUp(1ul << (int)buttonId); } 89 | 90 | public Vector2 GetAxis(EVRButtonId buttonId = EVRButtonId.k_EButton_SteamVR_Touchpad) 91 | { 92 | Update(); 93 | var axisId = (uint)buttonId - (uint)EVRButtonId.k_EButton_Axis0; 94 | switch (axisId) 95 | { 96 | case 0: return new Vector2(state.rAxis0.x, state.rAxis0.y); 97 | case 1: return new Vector2(state.rAxis1.x, state.rAxis1.y); 98 | case 2: return new Vector2(state.rAxis2.x, state.rAxis2.y); 99 | case 3: return new Vector2(state.rAxis3.x, state.rAxis3.y); 100 | case 4: return new Vector2(state.rAxis4.x, state.rAxis4.y); 101 | } 102 | return Vector2.zero; 103 | } 104 | 105 | public void TriggerHapticPulse(ushort durationMicroSec = 500, EVRButtonId buttonId = EVRButtonId.k_EButton_SteamVR_Touchpad) 106 | { 107 | var system = OpenVR.System; 108 | if (system != null) 109 | { 110 | var axisId = (uint)buttonId - (uint)EVRButtonId.k_EButton_Axis0; 111 | system.TriggerHapticPulse(index, axisId, (char)durationMicroSec); 112 | } 113 | } 114 | 115 | public float hairTriggerDelta = 0.1f; // amount trigger must be pulled or released to change state 116 | float hairTriggerLimit; 117 | bool hairTriggerState, hairTriggerPrevState; 118 | void UpdateHairTrigger() 119 | { 120 | hairTriggerPrevState = hairTriggerState; 121 | var value = state.rAxis1.x; // trigger 122 | if (hairTriggerState) 123 | { 124 | if (value < hairTriggerLimit - hairTriggerDelta || value <= 0.0f) 125 | hairTriggerState = false; 126 | } 127 | else 128 | { 129 | if (value > hairTriggerLimit + hairTriggerDelta || value >= 1.0f) 130 | hairTriggerState = true; 131 | } 132 | hairTriggerLimit = hairTriggerState ? Mathf.Max(hairTriggerLimit, value) : Mathf.Min(hairTriggerLimit, value); 133 | } 134 | 135 | public bool GetHairTrigger() { Update(); return hairTriggerState; } 136 | public bool GetHairTriggerDown() { Update(); return hairTriggerState && !hairTriggerPrevState; } 137 | public bool GetHairTriggerUp() { Update(); return !hairTriggerState && hairTriggerPrevState; } 138 | } 139 | 140 | private static Device[] devices; 141 | 142 | public static Device Input(int deviceIndex) 143 | { 144 | if (devices == null) 145 | { 146 | devices = new Device[OpenVR.k_unMaxTrackedDeviceCount]; 147 | for (uint i = 0; i < devices.Length; i++) 148 | devices[i] = new Device(i); 149 | } 150 | 151 | return devices[deviceIndex]; 152 | } 153 | 154 | public static void Update() 155 | { 156 | for (int i = 0; i < OpenVR.k_unMaxTrackedDeviceCount; i++) 157 | Input(i).Update(); 158 | } 159 | 160 | // This helper can be used in a variety of ways. Beware that indices may change 161 | // as new devices are dynamically added or removed, controllers are physically 162 | // swapped between hands, arms crossed, etc. 163 | public enum DeviceRelation 164 | { 165 | First, 166 | // radially 167 | Leftmost, 168 | Rightmost, 169 | // distance - also see vr.hmd.GetSortedTrackedDeviceIndicesOfClass 170 | FarthestLeft, 171 | FarthestRight, 172 | } 173 | public static int GetDeviceIndex(DeviceRelation relation, 174 | ETrackedDeviceClass deviceClass = ETrackedDeviceClass.Controller, 175 | int relativeTo = (int)OpenVR.k_unTrackedDeviceIndex_Hmd) // use -1 for absolute tracking space 176 | { 177 | var result = -1; 178 | 179 | var invXform = ((uint)relativeTo < OpenVR.k_unMaxTrackedDeviceCount) ? 180 | Input(relativeTo).transform.GetInverse() : SteamVR_Utils.RigidTransform.identity; 181 | 182 | var system = OpenVR.System; 183 | if (system == null) 184 | return result; 185 | 186 | var best = -float.MaxValue; 187 | for (int i = 0; i < OpenVR.k_unMaxTrackedDeviceCount; i++) 188 | { 189 | if (i == relativeTo || system.GetTrackedDeviceClass((uint)i) != deviceClass) 190 | continue; 191 | 192 | var device = Input(i); 193 | if (!device.connected) 194 | continue; 195 | 196 | if (relation == DeviceRelation.First) 197 | return i; 198 | 199 | float score; 200 | 201 | var pos = invXform * device.transform.pos; 202 | if (relation == DeviceRelation.FarthestRight) 203 | { 204 | score = pos.x; 205 | } 206 | else if (relation == DeviceRelation.FarthestLeft) 207 | { 208 | score = -pos.x; 209 | } 210 | else 211 | { 212 | var dir = new Vector3(pos.x, 0.0f, pos.z).normalized; 213 | var dot = Vector3.Dot(dir, Vector3.forward); 214 | var cross = Vector3.Cross(dir, Vector3.forward); 215 | if (relation == DeviceRelation.Leftmost) 216 | { 217 | score = (cross.y > 0.0f) ? 2.0f - dot : dot; 218 | } 219 | else 220 | { 221 | score = (cross.y < 0.0f) ? 2.0f - dot : dot; 222 | } 223 | } 224 | 225 | if (score > best) 226 | { 227 | result = i; 228 | best = score; 229 | } 230 | } 231 | 232 | return result; 233 | } 234 | } 235 | 236 | -------------------------------------------------------------------------------- /Assets/SteamVR/Scripts/SteamVR_Controller.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f9c6e0c408020c341b3c329ec30355a1 3 | timeCreated: 1429900414 4 | licenseType: Store 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/SteamVR/Scripts/SteamVR_ControllerManager.cs: -------------------------------------------------------------------------------- 1 | //======= Copyright (c) Valve Corporation, All rights reserved. =============== 2 | // 3 | // Purpose: Enables/disables objects based on connectivity and assigned roles. 4 | // 5 | //============================================================================= 6 | 7 | using UnityEngine; 8 | using System.Collections.Generic; 9 | using Valve.VR; 10 | 11 | public class SteamVR_ControllerManager : MonoBehaviour 12 | { 13 | public GameObject left, right; 14 | public GameObject[] objects; // populate with objects you want to assign to additional controllers 15 | 16 | uint[] indices; // assigned 17 | bool[] connected = new bool[OpenVR.k_unMaxTrackedDeviceCount]; // controllers only 18 | 19 | // cached roles - may or may not be connected 20 | uint leftIndex = OpenVR.k_unTrackedDeviceIndexInvalid; 21 | uint rightIndex = OpenVR.k_unTrackedDeviceIndexInvalid; 22 | 23 | void Awake() 24 | { 25 | // Add left and right entries to the head of the list so we only have to operate on the list itself. 26 | var additional = (this.objects != null) ? this.objects.Length : 0; 27 | var objects = new GameObject[2 + additional]; 28 | indices = new uint[2 + additional]; 29 | objects[0] = right; 30 | indices[0] = OpenVR.k_unTrackedDeviceIndexInvalid; 31 | objects[1] = left; 32 | indices[1] = OpenVR.k_unTrackedDeviceIndexInvalid; 33 | for (int i = 0; i < additional; i++) 34 | { 35 | objects[2 + i] = this.objects[i]; 36 | indices[2 + i] = OpenVR.k_unTrackedDeviceIndexInvalid; 37 | } 38 | this.objects = objects; 39 | } 40 | 41 | void OnEnable() 42 | { 43 | for (int i = 0; i < objects.Length; i++) 44 | { 45 | var obj = objects[i]; 46 | if (obj != null) 47 | obj.SetActive(false); 48 | } 49 | 50 | OnTrackedDeviceRoleChanged(); 51 | 52 | for (int i = 0; i < SteamVR.connected.Length; i++) 53 | if (SteamVR.connected[i]) 54 | OnDeviceConnected(i, true); 55 | 56 | SteamVR_Utils.Event.Listen("input_focus", OnInputFocus); 57 | SteamVR_Utils.Event.Listen("device_connected", OnDeviceConnected); 58 | SteamVR_Utils.Event.Listen("TrackedDeviceRoleChanged", OnTrackedDeviceRoleChanged); 59 | } 60 | 61 | void OnDisable() 62 | { 63 | SteamVR_Utils.Event.Remove("input_focus", OnInputFocus); 64 | SteamVR_Utils.Event.Remove("device_connected", OnDeviceConnected); 65 | SteamVR_Utils.Event.Remove("TrackedDeviceRoleChanged", OnTrackedDeviceRoleChanged); 66 | } 67 | 68 | static string[] labels = { "left", "right" }; 69 | 70 | // Hide controllers when the dashboard is up. 71 | private void OnInputFocus(params object[] args) 72 | { 73 | bool hasFocus = (bool)args[0]; 74 | if (hasFocus) 75 | { 76 | for (int i = 0; i < objects.Length; i++) 77 | { 78 | var obj = objects[i]; 79 | if (obj != null) 80 | { 81 | var label = (i < 2) ? labels[i] : (i - 1).ToString(); 82 | ShowObject(obj.transform, "hidden (" + label + ")"); 83 | } 84 | } 85 | } 86 | else 87 | { 88 | for (int i = 0; i < objects.Length; i++) 89 | { 90 | var obj = objects[i]; 91 | if (obj != null) 92 | { 93 | var label = (i < 2) ? labels[i] : (i - 1).ToString(); 94 | HideObject(obj.transform, "hidden (" + label + ")"); 95 | } 96 | } 97 | } 98 | } 99 | 100 | // Reparents to a new object and deactivates that object (this allows 101 | // us to call SetActive in OnDeviceConnected independently. 102 | private void HideObject(Transform t, string name) 103 | { 104 | var hidden = new GameObject(name).transform; 105 | hidden.parent = t.parent; 106 | t.parent = hidden; 107 | hidden.gameObject.SetActive(false); 108 | } 109 | private void ShowObject(Transform t, string name) 110 | { 111 | var hidden = t.parent; 112 | if (hidden.gameObject.name != name) 113 | return; 114 | t.parent = hidden.parent; 115 | Destroy(hidden.gameObject); 116 | } 117 | 118 | private void SetTrackedDeviceIndex(int objectIndex, uint trackedDeviceIndex) 119 | { 120 | // First make sure no one else is already using this index. 121 | if (trackedDeviceIndex != OpenVR.k_unTrackedDeviceIndexInvalid) 122 | { 123 | for (int i = 0; i < objects.Length; i++) 124 | { 125 | if (i != objectIndex && indices[i] == trackedDeviceIndex) 126 | { 127 | var obj = objects[i]; 128 | if (obj != null) 129 | obj.SetActive(false); 130 | 131 | indices[i] = OpenVR.k_unTrackedDeviceIndexInvalid; 132 | } 133 | } 134 | } 135 | 136 | // Only set when changed. 137 | if (trackedDeviceIndex != indices[objectIndex]) 138 | { 139 | indices[objectIndex] = trackedDeviceIndex; 140 | 141 | var obj = objects[objectIndex]; 142 | if (obj != null) 143 | { 144 | if (trackedDeviceIndex == OpenVR.k_unTrackedDeviceIndexInvalid) 145 | obj.SetActive(false); 146 | else 147 | { 148 | obj.SetActive(true); 149 | obj.BroadcastMessage("SetDeviceIndex", (int)trackedDeviceIndex, SendMessageOptions.DontRequireReceiver); 150 | } 151 | } 152 | } 153 | } 154 | 155 | // Keep track of assigned roles. 156 | private void OnTrackedDeviceRoleChanged(params object[] args) 157 | { 158 | Refresh(); 159 | } 160 | 161 | // Keep track of connected controller indices. 162 | private void OnDeviceConnected(params object[] args) 163 | { 164 | var index = (uint)(int)args[0]; 165 | bool changed = this.connected[index]; 166 | this.connected[index] = false; 167 | 168 | var connected = (bool)args[1]; 169 | if (connected) 170 | { 171 | var system = OpenVR.System; 172 | if (system != null && system.GetTrackedDeviceClass(index) == ETrackedDeviceClass.Controller) 173 | { 174 | this.connected[index] = true; 175 | changed = !changed; // if we clear and set the same index, nothing has changed 176 | } 177 | } 178 | 179 | if (changed) 180 | Refresh(); 181 | } 182 | 183 | public void Refresh() 184 | { 185 | int objectIndex = 0; 186 | 187 | var system = OpenVR.System; 188 | if (system != null) 189 | { 190 | leftIndex = system.GetTrackedDeviceIndexForControllerRole(ETrackedControllerRole.LeftHand); 191 | rightIndex = system.GetTrackedDeviceIndexForControllerRole(ETrackedControllerRole.RightHand); 192 | } 193 | 194 | // If neither role has been assigned yet, try hooking up at least the right controller. 195 | if (leftIndex == OpenVR.k_unTrackedDeviceIndexInvalid && rightIndex == OpenVR.k_unTrackedDeviceIndexInvalid) 196 | { 197 | for (uint deviceIndex = 0; deviceIndex < connected.Length; deviceIndex++) 198 | { 199 | if (connected[deviceIndex]) 200 | { 201 | SetTrackedDeviceIndex(objectIndex++, deviceIndex); 202 | break; 203 | } 204 | } 205 | } 206 | else 207 | { 208 | SetTrackedDeviceIndex(objectIndex++, (rightIndex < connected.Length && connected[rightIndex]) ? rightIndex : OpenVR.k_unTrackedDeviceIndexInvalid); 209 | SetTrackedDeviceIndex(objectIndex++, (leftIndex < connected.Length && connected[leftIndex]) ? leftIndex : OpenVR.k_unTrackedDeviceIndexInvalid); 210 | 211 | // Assign out any additional controllers only after both left and right have been assigned. 212 | if (leftIndex != OpenVR.k_unTrackedDeviceIndexInvalid && rightIndex != OpenVR.k_unTrackedDeviceIndexInvalid) 213 | { 214 | for (uint deviceIndex = 0; deviceIndex < connected.Length; deviceIndex++) 215 | { 216 | if (objectIndex >= objects.Length) 217 | break; 218 | 219 | if (!connected[deviceIndex]) 220 | continue; 221 | 222 | if (deviceIndex != leftIndex && deviceIndex != rightIndex) 223 | { 224 | SetTrackedDeviceIndex(objectIndex++, deviceIndex); 225 | } 226 | } 227 | } 228 | } 229 | 230 | // Reset the rest. 231 | while (objectIndex < objects.Length) 232 | { 233 | SetTrackedDeviceIndex(objectIndex++, OpenVR.k_unTrackedDeviceIndexInvalid); 234 | } 235 | } 236 | } 237 | 238 | -------------------------------------------------------------------------------- /Assets/SteamVR/Scripts/SteamVR_ControllerManager.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1edaba0e604d1244a9245cd9a8306816 3 | timeCreated: 1465931117 4 | licenseType: Free 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/SteamVR/Scripts/SteamVR_Ears.cs: -------------------------------------------------------------------------------- 1 | //========= Copyright 2016, Valve Corporation, All rights reserved. =========== 2 | // 3 | // Purpose: Handles aligning audio listener when using speakers. 4 | // 5 | //============================================================================= 6 | 7 | using UnityEngine; 8 | using Valve.VR; 9 | 10 | [RequireComponent(typeof(AudioListener))] 11 | public class SteamVR_Ears : MonoBehaviour 12 | { 13 | public SteamVR_Camera vrcam; 14 | 15 | bool usingSpeakers; 16 | Quaternion offset; 17 | 18 | private void OnNewPosesApplied(params object[] args) 19 | { 20 | var origin = vrcam.origin; 21 | var baseRotation = origin != null ? origin.rotation : Quaternion.identity; 22 | transform.rotation = baseRotation * offset; 23 | } 24 | 25 | void OnEnable() 26 | { 27 | usingSpeakers = false; 28 | 29 | var settings = OpenVR.Settings; 30 | if (settings != null) 31 | { 32 | var error = EVRSettingsError.None; 33 | if (settings.GetBool(OpenVR.k_pch_SteamVR_Section, OpenVR.k_pch_SteamVR_UsingSpeakers_Bool, false, ref error)) 34 | { 35 | usingSpeakers = true; 36 | 37 | var yawOffset = settings.GetFloat(OpenVR.k_pch_SteamVR_Section, OpenVR.k_pch_SteamVR_SpeakersForwardYawOffsetDegrees_Float, 0.0f, ref error); 38 | offset = Quaternion.Euler(0.0f, yawOffset, 0.0f); 39 | } 40 | } 41 | 42 | if (usingSpeakers) 43 | SteamVR_Utils.Event.Listen("new_poses_applied", OnNewPosesApplied); 44 | } 45 | 46 | void OnDisable() 47 | { 48 | if (usingSpeakers) 49 | SteamVR_Utils.Event.Remove("new_poses_applied", OnNewPosesApplied); 50 | } 51 | } 52 | 53 | -------------------------------------------------------------------------------- /Assets/SteamVR/Scripts/SteamVR_Ears.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 49a86c1078ce4314b9c4224560e031b9 3 | timeCreated: 1457243016 4 | licenseType: Store 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/SteamVR/Scripts/SteamVR_ExternalCamera.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c9da270df5147d24597cc106058c1fa7 3 | timeCreated: 1455761349 4 | licenseType: Store 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/SteamVR/Scripts/SteamVR_Frustum.cs: -------------------------------------------------------------------------------- 1 | //========= Copyright 2014, Valve Corporation, All rights reserved. =========== 2 | // 3 | // Purpose: Generates a mesh based on field of view. 4 | // 5 | //============================================================================= 6 | 7 | using UnityEngine; 8 | using Valve.VR; 9 | 10 | [ExecuteInEditMode, RequireComponent(typeof(MeshRenderer), typeof(MeshFilter))] 11 | public class SteamVR_Frustum : MonoBehaviour 12 | { 13 | public SteamVR_TrackedObject.EIndex index; 14 | 15 | public float fovLeft = 45, fovRight = 45, fovTop = 45, fovBottom = 45, nearZ = 0.5f, farZ = 2.5f; 16 | 17 | public void UpdateModel() 18 | { 19 | fovLeft = Mathf.Clamp(fovLeft, 1, 89); 20 | fovRight = Mathf.Clamp(fovRight, 1, 89); 21 | fovTop = Mathf.Clamp(fovTop, 1, 89); 22 | fovBottom = Mathf.Clamp(fovBottom, 1, 89); 23 | farZ = Mathf.Max(farZ, nearZ + 0.01f); 24 | nearZ = Mathf.Clamp(nearZ, 0.01f, farZ - 0.01f); 25 | 26 | var lsin = Mathf.Sin(-fovLeft * Mathf.Deg2Rad); 27 | var rsin = Mathf.Sin(fovRight * Mathf.Deg2Rad); 28 | var tsin = Mathf.Sin(fovTop * Mathf.Deg2Rad); 29 | var bsin = Mathf.Sin(-fovBottom * Mathf.Deg2Rad); 30 | 31 | var lcos = Mathf.Cos(-fovLeft * Mathf.Deg2Rad); 32 | var rcos = Mathf.Cos(fovRight * Mathf.Deg2Rad); 33 | var tcos = Mathf.Cos(fovTop * Mathf.Deg2Rad); 34 | var bcos = Mathf.Cos(-fovBottom * Mathf.Deg2Rad); 35 | 36 | var corners = new Vector3[] { 37 | new Vector3(lsin * nearZ / lcos, tsin * nearZ / tcos, nearZ), //tln 38 | new Vector3(rsin * nearZ / rcos, tsin * nearZ / tcos, nearZ), //trn 39 | new Vector3(rsin * nearZ / rcos, bsin * nearZ / bcos, nearZ), //brn 40 | new Vector3(lsin * nearZ / lcos, bsin * nearZ / bcos, nearZ), //bln 41 | new Vector3(lsin * farZ / lcos, tsin * farZ / tcos, farZ ), //tlf 42 | new Vector3(rsin * farZ / rcos, tsin * farZ / tcos, farZ ), //trf 43 | new Vector3(rsin * farZ / rcos, bsin * farZ / bcos, farZ ), //brf 44 | new Vector3(lsin * farZ / lcos, bsin * farZ / bcos, farZ ), //blf 45 | }; 46 | 47 | var triangles = new int[] { 48 | // 0, 1, 2, 0, 2, 3, // near 49 | // 0, 2, 1, 0, 3, 2, // near 50 | // 4, 5, 6, 4, 6, 7, // far 51 | // 4, 6, 5, 4, 7, 6, // far 52 | 0, 4, 7, 0, 7, 3, // left 53 | 0, 7, 4, 0, 3, 7, // left 54 | 1, 5, 6, 1, 6, 2, // right 55 | 1, 6, 5, 1, 2, 6, // right 56 | 0, 4, 5, 0, 5, 1, // top 57 | 0, 5, 4, 0, 1, 5, // top 58 | 2, 3, 7, 2, 7, 6, // bottom 59 | 2, 7, 3, 2, 6, 7, // bottom 60 | }; 61 | 62 | int j = 0; 63 | var vertices = new Vector3[triangles.Length]; 64 | var normals = new Vector3[triangles.Length]; 65 | for (int i = 0; i < triangles.Length / 3; i++) 66 | { 67 | var a = corners[triangles[i * 3 + 0]]; 68 | var b = corners[triangles[i * 3 + 1]]; 69 | var c = corners[triangles[i * 3 + 2]]; 70 | var n = Vector3.Cross(b - a, c - a).normalized; 71 | normals[i * 3 + 0] = n; 72 | normals[i * 3 + 1] = n; 73 | normals[i * 3 + 2] = n; 74 | vertices[i * 3 + 0] = a; 75 | vertices[i * 3 + 1] = b; 76 | vertices[i * 3 + 2] = c; 77 | triangles[i * 3 + 0] = j++; 78 | triangles[i * 3 + 1] = j++; 79 | triangles[i * 3 + 2] = j++; 80 | } 81 | 82 | var mesh = new Mesh(); 83 | mesh.vertices = vertices; 84 | mesh.normals = normals; 85 | mesh.triangles = triangles; 86 | 87 | GetComponent().mesh = mesh; 88 | } 89 | 90 | private void OnDeviceConnected(params object[] args) 91 | { 92 | var i = (int)args[0]; 93 | if (i != (int)index) 94 | return; 95 | 96 | GetComponent().mesh = null; 97 | 98 | var connected = (bool)args[1]; 99 | if (connected) 100 | { 101 | var system = OpenVR.System; 102 | if (system != null && system.GetTrackedDeviceClass((uint)i) == ETrackedDeviceClass.TrackingReference) 103 | { 104 | var error = ETrackedPropertyError.TrackedProp_Success; 105 | var result = system.GetFloatTrackedDeviceProperty((uint)i, ETrackedDeviceProperty.Prop_FieldOfViewLeftDegrees_Float, ref error); 106 | if (error == ETrackedPropertyError.TrackedProp_Success) 107 | fovLeft = result; 108 | 109 | result = system.GetFloatTrackedDeviceProperty((uint)i, ETrackedDeviceProperty.Prop_FieldOfViewRightDegrees_Float, ref error); 110 | if (error == ETrackedPropertyError.TrackedProp_Success) 111 | fovRight = result; 112 | 113 | result = system.GetFloatTrackedDeviceProperty((uint)i, ETrackedDeviceProperty.Prop_FieldOfViewTopDegrees_Float, ref error); 114 | if (error == ETrackedPropertyError.TrackedProp_Success) 115 | fovTop = result; 116 | 117 | result = system.GetFloatTrackedDeviceProperty((uint)i, ETrackedDeviceProperty.Prop_FieldOfViewBottomDegrees_Float, ref error); 118 | if (error == ETrackedPropertyError.TrackedProp_Success) 119 | fovBottom = result; 120 | 121 | result = system.GetFloatTrackedDeviceProperty((uint)i, ETrackedDeviceProperty.Prop_TrackingRangeMinimumMeters_Float, ref error); 122 | if (error == ETrackedPropertyError.TrackedProp_Success) 123 | nearZ = result; 124 | 125 | result = system.GetFloatTrackedDeviceProperty((uint)i, ETrackedDeviceProperty.Prop_TrackingRangeMaximumMeters_Float, ref error); 126 | if (error == ETrackedPropertyError.TrackedProp_Success) 127 | farZ = result; 128 | 129 | UpdateModel(); 130 | } 131 | } 132 | } 133 | 134 | void OnEnable() 135 | { 136 | GetComponent().mesh = null; 137 | SteamVR_Utils.Event.Listen("device_connected", OnDeviceConnected); 138 | } 139 | 140 | void OnDisable() 141 | { 142 | SteamVR_Utils.Event.Remove("device_connected", OnDeviceConnected); 143 | GetComponent().mesh = null; 144 | } 145 | 146 | #if UNITY_EDITOR 147 | void Update() 148 | { 149 | if (!Application.isPlaying) 150 | UpdateModel(); 151 | } 152 | #endif 153 | } 154 | -------------------------------------------------------------------------------- /Assets/SteamVR/Scripts/SteamVR_Frustum.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b2d1785fa0c551e408b6c94398847b76 3 | timeCreated: 1427400484 4 | licenseType: Store 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/SteamVR/Scripts/SteamVR_GameView.cs: -------------------------------------------------------------------------------- 1 | //========= Copyright 2014, Valve Corporation, All rights reserved. =========== 2 | // 3 | // Purpose: Handles rendering to the game view window 4 | // 5 | //============================================================================= 6 | 7 | using UnityEngine; 8 | 9 | [RequireComponent(typeof(Camera))] 10 | public class SteamVR_GameView : MonoBehaviour 11 | { 12 | #if (UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) // DEPRECATED in Unity 5.4+ 13 | public float scale = 1.5f; 14 | public bool drawOverlay = true; 15 | 16 | static Material overlayMaterial; 17 | 18 | void OnEnable() 19 | { 20 | if (overlayMaterial == null) 21 | { 22 | overlayMaterial = new Material(Shader.Find("Custom/SteamVR_Overlay")); 23 | } 24 | } 25 | 26 | void OnPostRender() 27 | { 28 | var vr = SteamVR.instance; 29 | var camera = GetComponent(); 30 | var aspect = scale * camera.aspect / vr.aspect; 31 | 32 | var x0 = -scale; 33 | var x1 = scale; 34 | var y0 = aspect; 35 | var y1 = -aspect; 36 | 37 | var blitMaterial = SteamVR_Camera.blitMaterial; 38 | blitMaterial.mainTexture = SteamVR_Camera.GetSceneTexture(camera.hdr); 39 | 40 | GL.PushMatrix(); 41 | GL.LoadOrtho(); 42 | #if !(UNITY_5_0) 43 | blitMaterial.SetPass(0); 44 | #else 45 | blitMaterial.SetPass(QualitySettings.activeColorSpace == ColorSpace.Linear ? 1 : 0); 46 | #endif 47 | GL.Begin(GL.QUADS); 48 | GL.TexCoord2(0.0f, 0.0f); GL.Vertex3(x0, y0, 0); 49 | GL.TexCoord2(1.0f, 0.0f); GL.Vertex3(x1, y0, 0); 50 | GL.TexCoord2(1.0f, 1.0f); GL.Vertex3(x1, y1, 0); 51 | GL.TexCoord2(0.0f, 1.0f); GL.Vertex3(x0, y1, 0); 52 | GL.End(); 53 | GL.PopMatrix(); 54 | 55 | var overlay = SteamVR_Overlay.instance; 56 | if (overlay && overlay.texture && overlayMaterial && drawOverlay) 57 | { 58 | var texture = overlay.texture; 59 | overlayMaterial.mainTexture = texture; 60 | 61 | var u0 = 0.0f; 62 | var v0 = 1.0f - (float)Screen.height / texture.height; 63 | var u1 = (float)Screen.width / texture.width; 64 | var v1 = 1.0f; 65 | 66 | GL.PushMatrix(); 67 | GL.LoadOrtho(); 68 | #if !(UNITY_5_0) 69 | overlayMaterial.SetPass(QualitySettings.activeColorSpace == ColorSpace.Linear ? 1 : 0); 70 | #else 71 | overlayMaterial.SetPass(0); 72 | #endif 73 | GL.Begin(GL.QUADS); 74 | GL.TexCoord2(u0, v0); GL.Vertex3(-1, -1, 0); 75 | GL.TexCoord2(u1, v0); GL.Vertex3( 1, -1, 0); 76 | GL.TexCoord2(u1, v1); GL.Vertex3( 1, 1, 0); 77 | GL.TexCoord2(u0, v1); GL.Vertex3(-1, 1, 0); 78 | GL.End(); 79 | GL.PopMatrix(); 80 | } 81 | } 82 | #endif 83 | } 84 | 85 | -------------------------------------------------------------------------------- /Assets/SteamVR/Scripts/SteamVR_GameView.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: be96d45fe21847a4a805d408a8015c84 3 | MonoImporter: 4 | serializedVersion: 2 5 | defaultReferences: [] 6 | executionOrder: 0 7 | icon: {instanceID: 0} 8 | userData: 9 | assetBundleName: 10 | -------------------------------------------------------------------------------- /Assets/SteamVR/Scripts/SteamVR_Overlay.cs: -------------------------------------------------------------------------------- 1 | //========= Copyright 2014, Valve Corporation, All rights reserved. =========== 2 | // 3 | // Purpose: Displays 2d content on a large virtual screen. 4 | // 5 | //============================================================================= 6 | 7 | using UnityEngine; 8 | using System.Collections; 9 | using Valve.VR; 10 | 11 | public class SteamVR_Overlay : MonoBehaviour 12 | { 13 | public Texture texture; 14 | public bool curved = true; 15 | public bool antialias = true; 16 | public bool highquality = true; 17 | public float scale = 3.0f; // size of overlay view 18 | public float distance = 1.25f; // distance from surface 19 | public float alpha = 1.0f; // opacity 0..1 20 | 21 | public Vector4 uvOffset = new Vector4(0, 0, 1, 1); 22 | public Vector2 mouseScale = new Vector2(1, 1); 23 | public Vector2 curvedRange = new Vector2(1, 2); 24 | 25 | public VROverlayInputMethod inputMethod = VROverlayInputMethod.None; 26 | 27 | static public SteamVR_Overlay instance { get; private set; } 28 | 29 | static public string key { get { return "unity:" + Application.companyName + "." + Application.productName; } } 30 | 31 | private ulong handle = OpenVR.k_ulOverlayHandleInvalid; 32 | 33 | void OnEnable() 34 | { 35 | var overlay = OpenVR.Overlay; 36 | if (overlay != null) 37 | { 38 | var error = overlay.CreateOverlay(key, gameObject.name, ref handle); 39 | if (error != EVROverlayError.None) 40 | { 41 | Debug.Log(overlay.GetOverlayErrorNameFromEnum(error)); 42 | enabled = false; 43 | return; 44 | } 45 | } 46 | 47 | SteamVR_Overlay.instance = this; 48 | } 49 | 50 | void OnDisable() 51 | { 52 | if (handle != OpenVR.k_ulOverlayHandleInvalid) 53 | { 54 | var overlay = OpenVR.Overlay; 55 | if (overlay != null) 56 | { 57 | overlay.DestroyOverlay(handle); 58 | } 59 | 60 | handle = OpenVR.k_ulOverlayHandleInvalid; 61 | } 62 | 63 | SteamVR_Overlay.instance = null; 64 | } 65 | 66 | public void UpdateOverlay() 67 | { 68 | var overlay = OpenVR.Overlay; 69 | if (overlay == null) 70 | return; 71 | 72 | if (texture != null) 73 | { 74 | var error = overlay.ShowOverlay(handle); 75 | if (error == EVROverlayError.InvalidHandle || error == EVROverlayError.UnknownOverlay) 76 | { 77 | if (overlay.FindOverlay(key, ref handle) != EVROverlayError.None) 78 | return; 79 | } 80 | 81 | var tex = new Texture_t(); 82 | tex.handle = texture.GetNativeTexturePtr(); 83 | tex.eType = SteamVR.instance.graphicsAPI; 84 | tex.eColorSpace = EColorSpace.Auto; 85 | overlay.SetOverlayTexture(handle, ref tex); 86 | 87 | overlay.SetOverlayAlpha(handle, alpha); 88 | overlay.SetOverlayWidthInMeters(handle, scale); 89 | overlay.SetOverlayAutoCurveDistanceRangeInMeters(handle, curvedRange.x, curvedRange.y); 90 | 91 | var textureBounds = new VRTextureBounds_t(); 92 | textureBounds.uMin = (0 + uvOffset.x) * uvOffset.z; 93 | textureBounds.vMin = (1 + uvOffset.y) * uvOffset.w; 94 | textureBounds.uMax = (1 + uvOffset.x) * uvOffset.z; 95 | textureBounds.vMax = (0 + uvOffset.y) * uvOffset.w; 96 | overlay.SetOverlayTextureBounds(handle, ref textureBounds); 97 | 98 | var vecMouseScale = new HmdVector2_t(); 99 | vecMouseScale.v0 = mouseScale.x; 100 | vecMouseScale.v1 = mouseScale.y; 101 | overlay.SetOverlayMouseScale(handle, ref vecMouseScale); 102 | 103 | var vrcam = SteamVR_Render.Top(); 104 | if (vrcam != null && vrcam.origin != null) 105 | { 106 | var offset = new SteamVR_Utils.RigidTransform(vrcam.origin, transform); 107 | offset.pos.x /= vrcam.origin.localScale.x; 108 | offset.pos.y /= vrcam.origin.localScale.y; 109 | offset.pos.z /= vrcam.origin.localScale.z; 110 | 111 | offset.pos.z += distance; 112 | 113 | var t = offset.ToHmdMatrix34(); 114 | overlay.SetOverlayTransformAbsolute(handle, SteamVR_Render.instance.trackingSpace, ref t); 115 | } 116 | 117 | overlay.SetOverlayInputMethod(handle, inputMethod); 118 | 119 | if (curved || antialias) 120 | highquality = true; 121 | 122 | if (highquality) 123 | { 124 | overlay.SetHighQualityOverlay(handle); 125 | overlay.SetOverlayFlag(handle, VROverlayFlags.Curved, curved); 126 | overlay.SetOverlayFlag(handle, VROverlayFlags.RGSS4X, antialias); 127 | } 128 | else if (overlay.GetHighQualityOverlay() == handle) 129 | { 130 | overlay.SetHighQualityOverlay(OpenVR.k_ulOverlayHandleInvalid); 131 | } 132 | } 133 | else 134 | { 135 | overlay.HideOverlay(handle); 136 | } 137 | } 138 | 139 | public bool PollNextEvent(ref VREvent_t pEvent) 140 | { 141 | var overlay = OpenVR.Overlay; 142 | if (overlay == null) 143 | return false; 144 | 145 | var size = (uint)System.Runtime.InteropServices.Marshal.SizeOf(typeof(Valve.VR.VREvent_t)); 146 | return overlay.PollNextOverlayEvent(handle, ref pEvent, size); 147 | } 148 | 149 | public struct IntersectionResults 150 | { 151 | public Vector3 point; 152 | public Vector3 normal; 153 | public Vector2 UVs; 154 | public float distance; 155 | } 156 | 157 | public bool ComputeIntersection(Vector3 source, Vector3 direction, ref IntersectionResults results) 158 | { 159 | var overlay = OpenVR.Overlay; 160 | if (overlay == null) 161 | return false; 162 | 163 | var input = new VROverlayIntersectionParams_t(); 164 | input.eOrigin = SteamVR_Render.instance.trackingSpace; 165 | input.vSource.v0 = source.x; 166 | input.vSource.v1 = source.y; 167 | input.vSource.v2 = -source.z; 168 | input.vDirection.v0 = direction.x; 169 | input.vDirection.v1 = direction.y; 170 | input.vDirection.v2 = -direction.z; 171 | 172 | var output = new VROverlayIntersectionResults_t(); 173 | if (!overlay.ComputeOverlayIntersection(handle, ref input, ref output)) 174 | return false; 175 | 176 | results.point = new Vector3(output.vPoint.v0, output.vPoint.v1, -output.vPoint.v2); 177 | results.normal = new Vector3(output.vNormal.v0, output.vNormal.v1, -output.vNormal.v2); 178 | results.UVs = new Vector2(output.vUVs.v0, output.vUVs.v1); 179 | results.distance = output.fDistance; 180 | return true; 181 | } 182 | } 183 | 184 | -------------------------------------------------------------------------------- /Assets/SteamVR/Scripts/SteamVR_Overlay.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 46fe9e0b23166454c8cb73040321d78c 3 | timeCreated: 1466224777 4 | licenseType: Free 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/SteamVR/Scripts/SteamVR_Render.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e979227f3384fac4b8ca0b3550bf005c 3 | MonoImporter: 4 | serializedVersion: 2 5 | defaultReferences: [] 6 | executionOrder: -32000 7 | icon: {instanceID: 0} 8 | userData: 9 | assetBundleName: 10 | -------------------------------------------------------------------------------- /Assets/SteamVR/Scripts/SteamVR_TrackedObject.cs: -------------------------------------------------------------------------------- 1 | //========= Copyright 2014, Valve Corporation, All rights reserved. =========== 2 | // 3 | // Purpose: For controlling in-game objects with tracked devices. 4 | // 5 | //============================================================================= 6 | 7 | using UnityEngine; 8 | using Valve.VR; 9 | 10 | public class SteamVR_TrackedObject : MonoBehaviour 11 | { 12 | public enum EIndex 13 | { 14 | None = -1, 15 | Hmd = (int)OpenVR.k_unTrackedDeviceIndex_Hmd, 16 | Device1, 17 | Device2, 18 | Device3, 19 | Device4, 20 | Device5, 21 | Device6, 22 | Device7, 23 | Device8, 24 | Device9, 25 | Device10, 26 | Device11, 27 | Device12, 28 | Device13, 29 | Device14, 30 | Device15 31 | } 32 | 33 | public EIndex index; 34 | public Transform origin; // if not set, relative to parent 35 | public bool isValid = false; 36 | 37 | private void OnNewPoses(params object[] args) 38 | { 39 | if (index == EIndex.None) 40 | return; 41 | 42 | var i = (int)index; 43 | 44 | isValid = false; 45 | var poses = (Valve.VR.TrackedDevicePose_t[])args[0]; 46 | if (poses.Length <= i) 47 | return; 48 | 49 | if (!poses[i].bDeviceIsConnected) 50 | return; 51 | 52 | if (!poses[i].bPoseIsValid) 53 | return; 54 | 55 | isValid = true; 56 | 57 | var pose = new SteamVR_Utils.RigidTransform(poses[i].mDeviceToAbsoluteTracking); 58 | 59 | if (origin != null) 60 | { 61 | pose = new SteamVR_Utils.RigidTransform(origin) * pose; 62 | pose.pos.x *= origin.localScale.x; 63 | pose.pos.y *= origin.localScale.y; 64 | pose.pos.z *= origin.localScale.z; 65 | transform.position = pose.pos; 66 | transform.rotation = pose.rot; 67 | } 68 | else 69 | { 70 | transform.localPosition = pose.pos; 71 | transform.localRotation = pose.rot; 72 | } 73 | } 74 | 75 | void OnEnable() 76 | { 77 | var render = SteamVR_Render.instance; 78 | if (render == null) 79 | { 80 | enabled = false; 81 | return; 82 | } 83 | 84 | SteamVR_Utils.Event.Listen("new_poses", OnNewPoses); 85 | } 86 | 87 | void OnDisable() 88 | { 89 | SteamVR_Utils.Event.Remove("new_poses", OnNewPoses); 90 | isValid = false; 91 | } 92 | 93 | public void SetDeviceIndex(int index) 94 | { 95 | if (System.Enum.IsDefined(typeof(EIndex), index)) 96 | this.index = (EIndex)index; 97 | } 98 | } 99 | 100 | -------------------------------------------------------------------------------- /Assets/SteamVR/Scripts/SteamVR_TrackedObject.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d37c2cf88f7c59f4c8cf5d3812568143 3 | MonoImporter: 4 | serializedVersion: 2 5 | defaultReferences: [] 6 | executionOrder: 0 7 | icon: {instanceID: 0} 8 | userData: 9 | assetBundleName: 10 | -------------------------------------------------------------------------------- /Assets/SteamVR/Scripts/SteamVR_Utils.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: be3c3a084f7b29b4880b42b4cfbf4d8f 3 | MonoImporter: 4 | serializedVersion: 2 5 | defaultReferences: [] 6 | executionOrder: 0 7 | icon: {instanceID: 0} 8 | userData: 9 | assetBundleName: 10 | -------------------------------------------------------------------------------- /Assets/SteamVR/Textures.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 003cb17d6edd28b4d88df6f35f9c03ab 3 | folderAsset: yes 4 | timeCreated: 1465633285 5 | licenseType: Free 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/SteamVR/Textures/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/Assets/SteamVR/Textures/logo.png -------------------------------------------------------------------------------- /Assets/SteamVR/Textures/logo.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 09db43b3b77bf744287ba587fea02f8b 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | serializedVersion: 2 6 | mipmaps: 7 | mipMapMode: 0 8 | enableMipMap: 0 9 | linearTexture: 1 10 | correctGamma: 0 11 | fadeOut: 0 12 | borderMipMap: 0 13 | mipMapFadeDistanceStart: 1 14 | mipMapFadeDistanceEnd: 3 15 | bumpmap: 16 | convertToNormalMap: 0 17 | externalNormalMap: 0 18 | heightScale: .25 19 | normalMapFilter: 0 20 | isReadable: 0 21 | grayScaleToAlpha: 0 22 | generateCubemap: 0 23 | cubemapConvolution: 0 24 | cubemapConvolutionSteps: 8 25 | cubemapConvolutionExponent: 1.5 26 | seamlessCubemap: 0 27 | textureFormat: -3 28 | maxTextureSize: 1024 29 | textureSettings: 30 | filterMode: -1 31 | aniso: 1 32 | mipBias: -1 33 | wrapMode: 1 34 | nPOTScale: 0 35 | lightmap: 0 36 | rGBM: 0 37 | compressionQuality: 50 38 | spriteMode: 0 39 | spriteExtrude: 1 40 | spriteMeshType: 1 41 | alignment: 0 42 | spritePivot: {x: .5, y: .5} 43 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 44 | spritePixelsToUnits: 100 45 | alphaIsTransparency: 1 46 | textureType: 2 47 | buildTargetSettings: [] 48 | spriteSheet: 49 | sprites: [] 50 | spritePackingTag: 51 | userData: 52 | assetBundleName: 53 | assetBundleVariant: 54 | -------------------------------------------------------------------------------- /Assets/SteamVR/Textures/overlay.renderTexture: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!84 &8400000 4 | RenderTexture: 5 | m_ObjectHideFlags: 0 6 | m_PrefabParentObject: {fileID: 0} 7 | m_PrefabInternal: {fileID: 0} 8 | m_Name: overlay 9 | m_ImageContentsHash: 10 | serializedVersion: 2 11 | Hash: 00000000000000000000000000000000 12 | m_Width: 2048 13 | m_Height: 2048 14 | m_AntiAliasing: 8 15 | m_DepthFormat: 0 16 | m_ColorFormat: 0 17 | m_MipMap: 0 18 | m_GenerateMips: 1 19 | m_SRGB: 0 20 | m_TextureSettings: 21 | m_FilterMode: 2 22 | m_Aniso: 9 23 | m_MipBias: 0 24 | m_WrapMode: 1 25 | -------------------------------------------------------------------------------- /Assets/SteamVR/Textures/overlay.renderTexture.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 005ed5a6df2f5ff468efd6497d37fefa 3 | NativeFormatImporter: 4 | userData: 5 | assetBundleName: 6 | -------------------------------------------------------------------------------- /Assets/SteamVR/Textures/workshop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/Assets/SteamVR/Textures/workshop.png -------------------------------------------------------------------------------- /Assets/SteamVR/Textures/workshop.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a57cd5c56c9d75c4ba0ee9fbc6e1d8df 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | serializedVersion: 2 6 | mipmaps: 7 | mipMapMode: 0 8 | enableMipMap: 1 9 | linearTexture: 0 10 | correctGamma: 0 11 | fadeOut: 0 12 | borderMipMap: 0 13 | mipMapFadeDistanceStart: 1 14 | mipMapFadeDistanceEnd: 3 15 | bumpmap: 16 | convertToNormalMap: 0 17 | externalNormalMap: 0 18 | heightScale: .25 19 | normalMapFilter: 0 20 | isReadable: 0 21 | grayScaleToAlpha: 0 22 | generateCubemap: 0 23 | cubemapConvolution: 0 24 | cubemapConvolutionSteps: 8 25 | cubemapConvolutionExponent: 1.5 26 | seamlessCubemap: 0 27 | textureFormat: -3 28 | maxTextureSize: 1024 29 | textureSettings: 30 | filterMode: 2 31 | aniso: 9 32 | mipBias: -1 33 | wrapMode: -1 34 | nPOTScale: 1 35 | lightmap: 0 36 | rGBM: 0 37 | compressionQuality: 50 38 | spriteMode: 0 39 | spriteExtrude: 1 40 | spriteMeshType: 1 41 | alignment: 0 42 | spritePivot: {x: .5, y: .5} 43 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 44 | spritePixelsToUnits: 100 45 | alphaIsTransparency: 0 46 | textureType: -1 47 | buildTargetSettings: [] 48 | spriteSheet: 49 | sprites: [] 50 | spritePackingTag: 51 | userData: 52 | assetBundleName: 53 | -------------------------------------------------------------------------------- /Assets/SteamVR/readme.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a51c3dbd81ecb6741b7a2c5b06dbcb2e 3 | TextScriptImporter: 4 | userData: 5 | assetBundleName: 6 | -------------------------------------------------------------------------------- /Documentation Images/button_controls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/Documentation Images/button_controls.png -------------------------------------------------------------------------------- /Documentation Images/grid_buttons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/Documentation Images/grid_buttons.png -------------------------------------------------------------------------------- /Documentation Images/grid_position.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/Documentation Images/grid_position.png -------------------------------------------------------------------------------- /Documentation Images/multi_rotary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/Documentation Images/multi_rotary.png -------------------------------------------------------------------------------- /Documentation Images/multi_switch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/Documentation Images/multi_switch.png -------------------------------------------------------------------------------- /Documentation Images/profile_buttons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/Documentation Images/profile_buttons.png -------------------------------------------------------------------------------- /Documentation Images/profile_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/Documentation Images/profile_settings.png -------------------------------------------------------------------------------- /Documentation Images/profiler.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/Documentation Images/profiler.png -------------------------------------------------------------------------------- /Documentation Images/reference_buttons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/Documentation Images/reference_buttons.png -------------------------------------------------------------------------------- /Documentation Images/settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/Documentation Images/settings.png -------------------------------------------------------------------------------- /Documentation Images/three_way.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/Documentation Images/three_way.png -------------------------------------------------------------------------------- /Documentation Images/two_rotary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/Documentation Images/two_rotary.png -------------------------------------------------------------------------------- /HeadlessOverlayToolkit.CSharp.Editor.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Debug 5 | AnyCPU 6 | 10.0.20506 7 | 2.0 8 | {0A44FD87-305E-6AA5-8803-843E7DC44199} 9 | Library 10 | Assembly-CSharp-Editor 11 | 512 12 | {E097FAD1-6243-4DAD-9C02-E9B9EFC3FFC1};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 13 | .NETFramework 14 | v3.5 15 | Unity Full v3.5 16 | 17 | Editor:5 18 | WebPlayer:6 19 | 5.3.6f1 20 | 21 | 4 22 | 23 | 24 | pdbonly 25 | false 26 | Temp\UnityVS_bin\Debug\ 27 | Temp\UnityVS_obj\Debug\ 28 | prompt 29 | 4 30 | DEBUG;TRACE;UNITY_5_3_OR_NEWER;UNITY_5_3_6;UNITY_5_3;UNITY_5;ENABLE_NEW_BUGREPORTER;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_FRAME_DEBUGGER;ENABLE_GENERICS;ENABLE_HOME_SCREEN;ENABLE_IMAGEEFFECTS;ENABLE_LIGHT_PROBES_LEGACY;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_PLUGIN_INSPECTOR;ENABLE_SHADOWS;ENABLE_SINGLE_INSTANCE_BUILD_SETTING;ENABLE_SPRITERENDERER_FLIPPING;ENABLE_SPRITES;ENABLE_SPRITE_POLYGON;ENABLE_TERRAIN;ENABLE_RAKNET;ENABLE_UNET;ENABLE_UNITYEVENTS;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;INCLUDE_DYNAMIC_GI;INCLUDE_GI;INCLUDE_IL2CPP;INCLUDE_DIRECTX12;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;ENABLE_LOCALIZATION;ENABLE_ANDROID_ATLAS_ETC1_COMPRESSION;ENABLE_EDITOR_TESTS_RUNNER;UNITY_WEBPLAYER;ENABLE_SUBSTANCE;WEBPLUG;ENABLE_TEXTUREID_MAP;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_MONO;ENABLE_PROFILER;DEBUG;TRACE;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;UNITY_TEAM_LICENSE 31 | false 32 | 33 | 34 | pdbonly 35 | false 36 | Temp\UnityVS_bin\Release\ 37 | Temp\UnityVS_obj\Release\ 38 | prompt 39 | 4 40 | TRACE;UNITY_5_3_OR_NEWER;UNITY_5_3_6;UNITY_5_3;UNITY_5;ENABLE_NEW_BUGREPORTER;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_FRAME_DEBUGGER;ENABLE_GENERICS;ENABLE_HOME_SCREEN;ENABLE_IMAGEEFFECTS;ENABLE_LIGHT_PROBES_LEGACY;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_PLUGIN_INSPECTOR;ENABLE_SHADOWS;ENABLE_SINGLE_INSTANCE_BUILD_SETTING;ENABLE_SPRITERENDERER_FLIPPING;ENABLE_SPRITES;ENABLE_SPRITE_POLYGON;ENABLE_TERRAIN;ENABLE_RAKNET;ENABLE_UNET;ENABLE_UNITYEVENTS;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;INCLUDE_DYNAMIC_GI;INCLUDE_GI;INCLUDE_IL2CPP;INCLUDE_DIRECTX12;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;ENABLE_LOCALIZATION;ENABLE_ANDROID_ATLAS_ETC1_COMPRESSION;ENABLE_EDITOR_TESTS_RUNNER;UNITY_WEBPLAYER;ENABLE_SUBSTANCE;WEBPLUG;ENABLE_TEXTUREID_MAP;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_MONO;ENABLE_PROFILER;DEBUG;TRACE;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;UNITY_TEAM_LICENSE 41 | false 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | Library\UnityAssemblies\UnityEngine.dll 52 | 53 | 54 | Library\UnityAssemblies\UnityEditor.dll 55 | 56 | 57 | Library\UnityAssemblies\UnityEditor.Advertisements.dll 58 | 59 | 60 | Library\UnityAssemblies\nunit.framework.dll 61 | 62 | 63 | Library\UnityAssemblies\UnityEditor.EditorTestsRunner.dll 64 | 65 | 66 | Library\UnityAssemblies\UnityEngine.UI.dll 67 | 68 | 69 | Library\UnityAssemblies\UnityEditor.UI.dll 70 | 71 | 72 | Library\UnityAssemblies\UnityEngine.Networking.dll 73 | 74 | 75 | Library\UnityAssemblies\UnityEditor.Networking.dll 76 | 77 | 78 | Library\UnityAssemblies\UnityEditor.TreeEditor.dll 79 | 80 | 81 | Library\UnityAssemblies\UnityEditor.Graphs.dll 82 | 83 | 84 | Library\UnityAssemblies\SyntaxTree.VisualStudio.Unity.Bridge.dll 85 | 86 | 87 | 88 | 89 | {471817E4-67A9-BA4F-2262-A19C91959061} 90 | HeadlessOverlayToolkit.CSharp.Plugins 91 | 92 | 93 | {8F24E7B6-8CFC-E0AE-713B-BA6442E31BD9} 94 | HeadlessOverlayToolkit.CSharp 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | -------------------------------------------------------------------------------- /HeadlessOverlayToolkit.CSharp.Plugins.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Debug 5 | AnyCPU 6 | 10.0.20506 7 | 2.0 8 | {471817E4-67A9-BA4F-2262-A19C91959061} 9 | Library 10 | Assembly-CSharp-firstpass 11 | 512 12 | {E097FAD1-6243-4DAD-9C02-E9B9EFC3FFC1};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 13 | .NETFramework 14 | v3.5 15 | Unity Web v3.5 16 | 17 | GamePlugins:3 18 | WebPlayer:6 19 | 5.3.6f1 20 | 21 | 4 22 | 23 | 24 | pdbonly 25 | false 26 | Temp\UnityVS_bin\Debug\ 27 | Temp\UnityVS_obj\Debug\ 28 | prompt 29 | 4 30 | DEBUG;TRACE;UNITY_5_3_OR_NEWER;UNITY_5_3_6;UNITY_5_3;UNITY_5;ENABLE_NEW_BUGREPORTER;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_FRAME_DEBUGGER;ENABLE_GENERICS;ENABLE_HOME_SCREEN;ENABLE_IMAGEEFFECTS;ENABLE_LIGHT_PROBES_LEGACY;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_PLUGIN_INSPECTOR;ENABLE_SHADOWS;ENABLE_SINGLE_INSTANCE_BUILD_SETTING;ENABLE_SPRITERENDERER_FLIPPING;ENABLE_SPRITES;ENABLE_SPRITE_POLYGON;ENABLE_TERRAIN;ENABLE_RAKNET;ENABLE_UNET;ENABLE_UNITYEVENTS;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;INCLUDE_DYNAMIC_GI;INCLUDE_GI;INCLUDE_IL2CPP;INCLUDE_DIRECTX12;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;ENABLE_LOCALIZATION;ENABLE_ANDROID_ATLAS_ETC1_COMPRESSION;ENABLE_EDITOR_TESTS_RUNNER;UNITY_WEBPLAYER;ENABLE_SUBSTANCE;WEBPLUG;ENABLE_TEXTUREID_MAP;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_MONO;ENABLE_PROFILER;DEBUG;TRACE;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;UNITY_TEAM_LICENSE 31 | false 32 | 33 | 34 | pdbonly 35 | false 36 | Temp\UnityVS_bin\Release\ 37 | Temp\UnityVS_obj\Release\ 38 | prompt 39 | 4 40 | TRACE;UNITY_5_3_OR_NEWER;UNITY_5_3_6;UNITY_5_3;UNITY_5;ENABLE_NEW_BUGREPORTER;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_FRAME_DEBUGGER;ENABLE_GENERICS;ENABLE_HOME_SCREEN;ENABLE_IMAGEEFFECTS;ENABLE_LIGHT_PROBES_LEGACY;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_PLUGIN_INSPECTOR;ENABLE_SHADOWS;ENABLE_SINGLE_INSTANCE_BUILD_SETTING;ENABLE_SPRITERENDERER_FLIPPING;ENABLE_SPRITES;ENABLE_SPRITE_POLYGON;ENABLE_TERRAIN;ENABLE_RAKNET;ENABLE_UNET;ENABLE_UNITYEVENTS;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;INCLUDE_DYNAMIC_GI;INCLUDE_GI;INCLUDE_IL2CPP;INCLUDE_DIRECTX12;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;ENABLE_LOCALIZATION;ENABLE_ANDROID_ATLAS_ETC1_COMPRESSION;ENABLE_EDITOR_TESTS_RUNNER;UNITY_WEBPLAYER;ENABLE_SUBSTANCE;WEBPLUG;ENABLE_TEXTUREID_MAP;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_MONO;ENABLE_PROFILER;DEBUG;TRACE;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;UNITY_TEAM_LICENSE 41 | false 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | Library\UnityAssemblies\UnityEngine.dll 52 | 53 | 54 | Library\UnityAssemblies\UnityEngine.UI.dll 55 | 56 | 57 | Library\UnityAssemblies\UnityEngine.Networking.dll 58 | 59 | 60 | Library\UnityAssemblies\UnityEditor.dll 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | -------------------------------------------------------------------------------- /HeadlessOverlayToolkit.CSharp.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Debug 5 | AnyCPU 6 | 10.0.20506 7 | 2.0 8 | {8F24E7B6-8CFC-E0AE-713B-BA6442E31BD9} 9 | Library 10 | Assembly-CSharp 11 | 512 12 | {E097FAD1-6243-4DAD-9C02-E9B9EFC3FFC1};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 13 | .NETFramework 14 | v3.5 15 | Unity Web v3.5 16 | 17 | Game:1 18 | WebPlayer:6 19 | 5.3.6f1 20 | 21 | 4 22 | 23 | 24 | pdbonly 25 | false 26 | Temp\UnityVS_bin\Debug\ 27 | Temp\UnityVS_obj\Debug\ 28 | prompt 29 | 4 30 | DEBUG;TRACE;UNITY_5_3_OR_NEWER;UNITY_5_3_6;UNITY_5_3;UNITY_5;ENABLE_NEW_BUGREPORTER;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_FRAME_DEBUGGER;ENABLE_GENERICS;ENABLE_HOME_SCREEN;ENABLE_IMAGEEFFECTS;ENABLE_LIGHT_PROBES_LEGACY;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_PLUGIN_INSPECTOR;ENABLE_SHADOWS;ENABLE_SINGLE_INSTANCE_BUILD_SETTING;ENABLE_SPRITERENDERER_FLIPPING;ENABLE_SPRITES;ENABLE_SPRITE_POLYGON;ENABLE_TERRAIN;ENABLE_RAKNET;ENABLE_UNET;ENABLE_UNITYEVENTS;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;INCLUDE_DYNAMIC_GI;INCLUDE_GI;INCLUDE_IL2CPP;INCLUDE_DIRECTX12;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;ENABLE_LOCALIZATION;ENABLE_ANDROID_ATLAS_ETC1_COMPRESSION;ENABLE_EDITOR_TESTS_RUNNER;UNITY_WEBPLAYER;ENABLE_SUBSTANCE;WEBPLUG;ENABLE_TEXTUREID_MAP;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_MONO;ENABLE_PROFILER;DEBUG;TRACE;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;UNITY_TEAM_LICENSE 31 | false 32 | 33 | 34 | pdbonly 35 | false 36 | Temp\UnityVS_bin\Release\ 37 | Temp\UnityVS_obj\Release\ 38 | prompt 39 | 4 40 | TRACE;UNITY_5_3_OR_NEWER;UNITY_5_3_6;UNITY_5_3;UNITY_5;ENABLE_NEW_BUGREPORTER;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_FRAME_DEBUGGER;ENABLE_GENERICS;ENABLE_HOME_SCREEN;ENABLE_IMAGEEFFECTS;ENABLE_LIGHT_PROBES_LEGACY;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_PLUGIN_INSPECTOR;ENABLE_SHADOWS;ENABLE_SINGLE_INSTANCE_BUILD_SETTING;ENABLE_SPRITERENDERER_FLIPPING;ENABLE_SPRITES;ENABLE_SPRITE_POLYGON;ENABLE_TERRAIN;ENABLE_RAKNET;ENABLE_UNET;ENABLE_UNITYEVENTS;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;INCLUDE_DYNAMIC_GI;INCLUDE_GI;INCLUDE_IL2CPP;INCLUDE_DIRECTX12;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;ENABLE_LOCALIZATION;ENABLE_ANDROID_ATLAS_ETC1_COMPRESSION;ENABLE_EDITOR_TESTS_RUNNER;UNITY_WEBPLAYER;ENABLE_SUBSTANCE;WEBPLUG;ENABLE_TEXTUREID_MAP;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_MONO;ENABLE_PROFILER;DEBUG;TRACE;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;UNITY_TEAM_LICENSE 41 | false 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | Library\UnityAssemblies\UnityEngine.dll 52 | 53 | 54 | Library\UnityAssemblies\UnityEngine.UI.dll 55 | 56 | 57 | Library\UnityAssemblies\UnityEngine.Networking.dll 58 | 59 | 60 | Library\UnityAssemblies\UnityEditor.dll 61 | 62 | 63 | 64 | 65 | {471817E4-67A9-BA4F-2262-A19C91959061} 66 | HeadlessOverlayToolkit.CSharp.Plugins 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | -------------------------------------------------------------------------------- /HeadlessOverlayToolkit.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 2015 4 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeadlessOverlayToolkit.CSharp.Plugins", "HeadlessOverlayToolkit.CSharp.Plugins.csproj", "{471817E4-67A9-BA4F-2262-A19C91959061}" 5 | EndProject 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeadlessOverlayToolkit.CSharp", "HeadlessOverlayToolkit.CSharp.csproj", "{8F24E7B6-8CFC-E0AE-713B-BA6442E31BD9}" 7 | EndProject 8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeadlessOverlayToolkit.CSharp.Editor", "HeadlessOverlayToolkit.CSharp.Editor.csproj", "{0A44FD87-305E-6AA5-8803-843E7DC44199}" 9 | EndProject 10 | Global 11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 12 | Debug|Any CPU = Debug|Any CPU 13 | Release|Any CPU = Release|Any CPU 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {471817E4-67A9-BA4F-2262-A19C91959061}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 17 | {471817E4-67A9-BA4F-2262-A19C91959061}.Debug|Any CPU.Build.0 = Debug|Any CPU 18 | {471817E4-67A9-BA4F-2262-A19C91959061}.Release|Any CPU.ActiveCfg = Release|Any CPU 19 | {471817E4-67A9-BA4F-2262-A19C91959061}.Release|Any CPU.Build.0 = Release|Any CPU 20 | {8F24E7B6-8CFC-E0AE-713B-BA6442E31BD9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 21 | {8F24E7B6-8CFC-E0AE-713B-BA6442E31BD9}.Debug|Any CPU.Build.0 = Debug|Any CPU 22 | {8F24E7B6-8CFC-E0AE-713B-BA6442E31BD9}.Release|Any CPU.ActiveCfg = Release|Any CPU 23 | {8F24E7B6-8CFC-E0AE-713B-BA6442E31BD9}.Release|Any CPU.Build.0 = Release|Any CPU 24 | {0A44FD87-305E-6AA5-8803-843E7DC44199}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 25 | {0A44FD87-305E-6AA5-8803-843E7DC44199}.Debug|Any CPU.Build.0 = Debug|Any CPU 26 | {0A44FD87-305E-6AA5-8803-843E7DC44199}.Release|Any CPU.ActiveCfg = Release|Any CPU 27 | {0A44FD87-305E-6AA5-8803-843E7DC44199}.Release|Any CPU.Build.0 = Release|Any CPU 28 | EndGlobalSection 29 | GlobalSection(SolutionProperties) = preSolution 30 | HideSolutionNode = FALSE 31 | EndGlobalSection 32 | EndGlobal 33 | -------------------------------------------------------------------------------- /ProjectSettings/AudioManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/ProjectSettings/AudioManager.asset -------------------------------------------------------------------------------- /ProjectSettings/ClusterInputManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/ProjectSettings/ClusterInputManager.asset -------------------------------------------------------------------------------- /ProjectSettings/DynamicsManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/ProjectSettings/DynamicsManager.asset -------------------------------------------------------------------------------- /ProjectSettings/EditorBuildSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/ProjectSettings/EditorBuildSettings.asset -------------------------------------------------------------------------------- /ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/ProjectSettings/EditorSettings.asset -------------------------------------------------------------------------------- /ProjectSettings/GraphicsSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/ProjectSettings/GraphicsSettings.asset -------------------------------------------------------------------------------- /ProjectSettings/InputManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/ProjectSettings/InputManager.asset -------------------------------------------------------------------------------- /ProjectSettings/NavMeshAreas.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/ProjectSettings/NavMeshAreas.asset -------------------------------------------------------------------------------- /ProjectSettings/NetworkManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/ProjectSettings/NetworkManager.asset -------------------------------------------------------------------------------- /ProjectSettings/Physics2DSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/ProjectSettings/Physics2DSettings.asset -------------------------------------------------------------------------------- /ProjectSettings/ProjectSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/ProjectSettings/ProjectSettings.asset -------------------------------------------------------------------------------- /ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 5.3.6f1 2 | m_StandardAssetsVersion: 0 3 | -------------------------------------------------------------------------------- /ProjectSettings/QualitySettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/ProjectSettings/QualitySettings.asset -------------------------------------------------------------------------------- /ProjectSettings/TagManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/ProjectSettings/TagManager.asset -------------------------------------------------------------------------------- /ProjectSettings/TimeManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/ProjectSettings/TimeManager.asset -------------------------------------------------------------------------------- /ProjectSettings/UnityAdsSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/ProjectSettings/UnityAdsSettings.asset -------------------------------------------------------------------------------- /ProjectSettings/UnityConnectSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BManx2000/VirtualButtonBox/ad11a288aaf3d64d14b32e0d3c5b630d697a165f/ProjectSettings/UnityConnectSettings.asset -------------------------------------------------------------------------------- /VirtualButtonBox.CSharp.Editor.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Debug 5 | AnyCPU 6 | 10.0.20506 7 | 2.0 8 | {238D0A8E-3A13-BE0E-8669-ED20F419B5C3} 9 | Library 10 | Assembly-CSharp-Editor 11 | 512 12 | {E097FAD1-6243-4DAD-9C02-E9B9EFC3FFC1};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 13 | .NETFramework 14 | v3.5 15 | Unity Full v3.5 16 | 17 | Editor:5 18 | StandaloneWindows:5 19 | 5.3.6f1 20 | 21 | 4 22 | 23 | 24 | pdbonly 25 | false 26 | Temp\UnityVS_bin\Debug\ 27 | Temp\UnityVS_obj\Debug\ 28 | prompt 29 | 4 30 | DEBUG;TRACE;UNITY_5_3_OR_NEWER;UNITY_5_3_6;UNITY_5_3;UNITY_5;ENABLE_NEW_BUGREPORTER;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_FRAME_DEBUGGER;ENABLE_GENERICS;ENABLE_HOME_SCREEN;ENABLE_IMAGEEFFECTS;ENABLE_LIGHT_PROBES_LEGACY;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_PLUGIN_INSPECTOR;ENABLE_SHADOWS;ENABLE_SINGLE_INSTANCE_BUILD_SETTING;ENABLE_SPRITERENDERER_FLIPPING;ENABLE_SPRITES;ENABLE_SPRITE_POLYGON;ENABLE_TERRAIN;ENABLE_RAKNET;ENABLE_UNET;ENABLE_UNITYEVENTS;ENABLE_VR;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;INCLUDE_DYNAMIC_GI;INCLUDE_GI;INCLUDE_IL2CPP;INCLUDE_DIRECTX12;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;ENABLE_LOCALIZATION;ENABLE_ANDROID_ATLAS_ETC1_COMPRESSION;ENABLE_EDITOR_TESTS_RUNNER;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_SUBSTANCE;ENABLE_TEXTUREID_MAP;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_LOG_MIXED_STACKTRACE;ENABLE_UNITYWEBREQUEST;ENABLE_EVENT_QUEUE;ENABLE_CLUSTERINPUT;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;ENABLE_PROFILER;DEBUG;TRACE;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;UNITY_TEAM_LICENSE 31 | false 32 | 33 | 34 | pdbonly 35 | false 36 | Temp\UnityVS_bin\Release\ 37 | Temp\UnityVS_obj\Release\ 38 | prompt 39 | 4 40 | TRACE;UNITY_5_3_OR_NEWER;UNITY_5_3_6;UNITY_5_3;UNITY_5;ENABLE_NEW_BUGREPORTER;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_FRAME_DEBUGGER;ENABLE_GENERICS;ENABLE_HOME_SCREEN;ENABLE_IMAGEEFFECTS;ENABLE_LIGHT_PROBES_LEGACY;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_PLUGIN_INSPECTOR;ENABLE_SHADOWS;ENABLE_SINGLE_INSTANCE_BUILD_SETTING;ENABLE_SPRITERENDERER_FLIPPING;ENABLE_SPRITES;ENABLE_SPRITE_POLYGON;ENABLE_TERRAIN;ENABLE_RAKNET;ENABLE_UNET;ENABLE_UNITYEVENTS;ENABLE_VR;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;INCLUDE_DYNAMIC_GI;INCLUDE_GI;INCLUDE_IL2CPP;INCLUDE_DIRECTX12;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;ENABLE_LOCALIZATION;ENABLE_ANDROID_ATLAS_ETC1_COMPRESSION;ENABLE_EDITOR_TESTS_RUNNER;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_SUBSTANCE;ENABLE_TEXTUREID_MAP;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_LOG_MIXED_STACKTRACE;ENABLE_UNITYWEBREQUEST;ENABLE_EVENT_QUEUE;ENABLE_CLUSTERINPUT;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;ENABLE_PROFILER;DEBUG;TRACE;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;UNITY_TEAM_LICENSE 41 | false 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | Library\UnityAssemblies\UnityEngine.dll 54 | 55 | 56 | Library\UnityAssemblies\UnityEditor.dll 57 | 58 | 59 | Library\UnityAssemblies\UnityEditor.Advertisements.dll 60 | 61 | 62 | Library\UnityAssemblies\nunit.framework.dll 63 | 64 | 65 | Library\UnityAssemblies\UnityEditor.EditorTestsRunner.dll 66 | 67 | 68 | Library\UnityAssemblies\UnityEngine.UI.dll 69 | 70 | 71 | Library\UnityAssemblies\UnityEditor.UI.dll 72 | 73 | 74 | Library\UnityAssemblies\UnityEngine.Networking.dll 75 | 76 | 77 | Library\UnityAssemblies\UnityEditor.Networking.dll 78 | 79 | 80 | Library\UnityAssemblies\UnityEditor.TreeEditor.dll 81 | 82 | 83 | Library\UnityAssemblies\UnityEditor.Graphs.dll 84 | 85 | 86 | Library\UnityAssemblies\UnityEditor.WindowsStandalone.Extensions.dll 87 | 88 | 89 | Library\UnityAssemblies\SyntaxTree.VisualStudio.Unity.Bridge.dll 90 | 91 | 92 | 93 | 94 | {42678B85-89CB-956A-9497-31EB985E1D93} 95 | VirtualButtonBox.CSharp.Plugins 96 | 97 | 98 | {0A812CA3-5FC4-226F-6D8F-E3305A02E1AF} 99 | VirtualButtonBox.CSharp 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | -------------------------------------------------------------------------------- /VirtualButtonBox.CSharp.Plugins.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Debug 5 | AnyCPU 6 | 10.0.20506 7 | 2.0 8 | {42678B85-89CB-956A-9497-31EB985E1D93} 9 | Library 10 | Assembly-CSharp-firstpass 11 | 512 12 | {E097FAD1-6243-4DAD-9C02-E9B9EFC3FFC1};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 13 | .NETFramework 14 | v3.5 15 | Unity Subset v3.5 16 | 17 | GamePlugins:3 18 | StandaloneWindows:5 19 | 5.3.6f1 20 | 21 | 4 22 | 23 | 24 | pdbonly 25 | false 26 | Temp\UnityVS_bin\Debug\ 27 | Temp\UnityVS_obj\Debug\ 28 | prompt 29 | 4 30 | DEBUG;TRACE;UNITY_5_3_OR_NEWER;UNITY_5_3_6;UNITY_5_3;UNITY_5;ENABLE_NEW_BUGREPORTER;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_FRAME_DEBUGGER;ENABLE_GENERICS;ENABLE_HOME_SCREEN;ENABLE_IMAGEEFFECTS;ENABLE_LIGHT_PROBES_LEGACY;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_PLUGIN_INSPECTOR;ENABLE_SHADOWS;ENABLE_SINGLE_INSTANCE_BUILD_SETTING;ENABLE_SPRITERENDERER_FLIPPING;ENABLE_SPRITES;ENABLE_SPRITE_POLYGON;ENABLE_TERRAIN;ENABLE_RAKNET;ENABLE_UNET;ENABLE_UNITYEVENTS;ENABLE_VR;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;INCLUDE_DYNAMIC_GI;INCLUDE_GI;INCLUDE_IL2CPP;INCLUDE_DIRECTX12;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;ENABLE_LOCALIZATION;ENABLE_ANDROID_ATLAS_ETC1_COMPRESSION;ENABLE_EDITOR_TESTS_RUNNER;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_SUBSTANCE;ENABLE_TEXTUREID_MAP;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_LOG_MIXED_STACKTRACE;ENABLE_UNITYWEBREQUEST;ENABLE_EVENT_QUEUE;ENABLE_CLUSTERINPUT;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;ENABLE_PROFILER;DEBUG;TRACE;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;UNITY_TEAM_LICENSE 31 | false 32 | 33 | 34 | pdbonly 35 | false 36 | Temp\UnityVS_bin\Release\ 37 | Temp\UnityVS_obj\Release\ 38 | prompt 39 | 4 40 | TRACE;UNITY_5_3_OR_NEWER;UNITY_5_3_6;UNITY_5_3;UNITY_5;ENABLE_NEW_BUGREPORTER;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_FRAME_DEBUGGER;ENABLE_GENERICS;ENABLE_HOME_SCREEN;ENABLE_IMAGEEFFECTS;ENABLE_LIGHT_PROBES_LEGACY;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_PLUGIN_INSPECTOR;ENABLE_SHADOWS;ENABLE_SINGLE_INSTANCE_BUILD_SETTING;ENABLE_SPRITERENDERER_FLIPPING;ENABLE_SPRITES;ENABLE_SPRITE_POLYGON;ENABLE_TERRAIN;ENABLE_RAKNET;ENABLE_UNET;ENABLE_UNITYEVENTS;ENABLE_VR;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;INCLUDE_DYNAMIC_GI;INCLUDE_GI;INCLUDE_IL2CPP;INCLUDE_DIRECTX12;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;ENABLE_LOCALIZATION;ENABLE_ANDROID_ATLAS_ETC1_COMPRESSION;ENABLE_EDITOR_TESTS_RUNNER;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_SUBSTANCE;ENABLE_TEXTUREID_MAP;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_LOG_MIXED_STACKTRACE;ENABLE_UNITYWEBREQUEST;ENABLE_EVENT_QUEUE;ENABLE_CLUSTERINPUT;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;ENABLE_PROFILER;DEBUG;TRACE;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;UNITY_TEAM_LICENSE 41 | false 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | Library\UnityAssemblies\UnityEngine.dll 54 | 55 | 56 | Library\UnityAssemblies\UnityEngine.UI.dll 57 | 58 | 59 | Library\UnityAssemblies\UnityEngine.Networking.dll 60 | 61 | 62 | Library\UnityAssemblies\UnityEditor.dll 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | -------------------------------------------------------------------------------- /VirtualButtonBox.CSharp.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Debug 5 | AnyCPU 6 | 10.0.20506 7 | 2.0 8 | {0A812CA3-5FC4-226F-6D8F-E3305A02E1AF} 9 | Library 10 | Assembly-CSharp 11 | 512 12 | {E097FAD1-6243-4DAD-9C02-E9B9EFC3FFC1};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 13 | .NETFramework 14 | v3.5 15 | Unity Subset v3.5 16 | 17 | Game:1 18 | StandaloneWindows:5 19 | 5.3.6f1 20 | 21 | 4 22 | 23 | 24 | pdbonly 25 | false 26 | Temp\UnityVS_bin\Debug\ 27 | Temp\UnityVS_obj\Debug\ 28 | prompt 29 | 4 30 | DEBUG;TRACE;UNITY_5_3_OR_NEWER;UNITY_5_3_6;UNITY_5_3;UNITY_5;ENABLE_NEW_BUGREPORTER;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_FRAME_DEBUGGER;ENABLE_GENERICS;ENABLE_HOME_SCREEN;ENABLE_IMAGEEFFECTS;ENABLE_LIGHT_PROBES_LEGACY;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_PLUGIN_INSPECTOR;ENABLE_SHADOWS;ENABLE_SINGLE_INSTANCE_BUILD_SETTING;ENABLE_SPRITERENDERER_FLIPPING;ENABLE_SPRITES;ENABLE_SPRITE_POLYGON;ENABLE_TERRAIN;ENABLE_RAKNET;ENABLE_UNET;ENABLE_UNITYEVENTS;ENABLE_VR;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;INCLUDE_DYNAMIC_GI;INCLUDE_GI;INCLUDE_IL2CPP;INCLUDE_DIRECTX12;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;ENABLE_LOCALIZATION;ENABLE_ANDROID_ATLAS_ETC1_COMPRESSION;ENABLE_EDITOR_TESTS_RUNNER;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_SUBSTANCE;ENABLE_TEXTUREID_MAP;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_LOG_MIXED_STACKTRACE;ENABLE_UNITYWEBREQUEST;ENABLE_EVENT_QUEUE;ENABLE_CLUSTERINPUT;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;ENABLE_PROFILER;DEBUG;TRACE;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;UNITY_TEAM_LICENSE 31 | false 32 | 33 | 34 | pdbonly 35 | false 36 | Temp\UnityVS_bin\Release\ 37 | Temp\UnityVS_obj\Release\ 38 | prompt 39 | 4 40 | TRACE;UNITY_5_3_OR_NEWER;UNITY_5_3_6;UNITY_5_3;UNITY_5;ENABLE_NEW_BUGREPORTER;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_FRAME_DEBUGGER;ENABLE_GENERICS;ENABLE_HOME_SCREEN;ENABLE_IMAGEEFFECTS;ENABLE_LIGHT_PROBES_LEGACY;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_PLUGIN_INSPECTOR;ENABLE_SHADOWS;ENABLE_SINGLE_INSTANCE_BUILD_SETTING;ENABLE_SPRITERENDERER_FLIPPING;ENABLE_SPRITES;ENABLE_SPRITE_POLYGON;ENABLE_TERRAIN;ENABLE_RAKNET;ENABLE_UNET;ENABLE_UNITYEVENTS;ENABLE_VR;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;INCLUDE_DYNAMIC_GI;INCLUDE_GI;INCLUDE_IL2CPP;INCLUDE_DIRECTX12;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;ENABLE_LOCALIZATION;ENABLE_ANDROID_ATLAS_ETC1_COMPRESSION;ENABLE_EDITOR_TESTS_RUNNER;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_SUBSTANCE;ENABLE_TEXTUREID_MAP;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_LOG_MIXED_STACKTRACE;ENABLE_UNITYWEBREQUEST;ENABLE_EVENT_QUEUE;ENABLE_CLUSTERINPUT;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;ENABLE_PROFILER;DEBUG;TRACE;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;UNITY_TEAM_LICENSE 41 | false 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | Library\UnityAssemblies\UnityEngine.dll 54 | 55 | 56 | Library\UnityAssemblies\UnityEngine.UI.dll 57 | 58 | 59 | Library\UnityAssemblies\UnityEngine.Networking.dll 60 | 61 | 62 | Library\UnityAssemblies\UnityEditor.dll 63 | 64 | 65 | 66 | 67 | {42678B85-89CB-956A-9497-31EB985E1D93} 68 | VirtualButtonBox.CSharp.Plugins 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | -------------------------------------------------------------------------------- /VirtualButtonBox.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 2015 4 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VirtualButtonBox.CSharp.Plugins", "VirtualButtonBox.CSharp.Plugins.csproj", "{42678B85-89CB-956A-9497-31EB985E1D93}" 5 | EndProject 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VirtualButtonBox.CSharp", "VirtualButtonBox.CSharp.csproj", "{0A812CA3-5FC4-226F-6D8F-E3305A02E1AF}" 7 | EndProject 8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VirtualButtonBox.CSharp.Editor", "VirtualButtonBox.CSharp.Editor.csproj", "{238D0A8E-3A13-BE0E-8669-ED20F419B5C3}" 9 | EndProject 10 | Global 11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 12 | Debug|Any CPU = Debug|Any CPU 13 | Release|Any CPU = Release|Any CPU 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {42678B85-89CB-956A-9497-31EB985E1D93}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 17 | {42678B85-89CB-956A-9497-31EB985E1D93}.Debug|Any CPU.Build.0 = Debug|Any CPU 18 | {42678B85-89CB-956A-9497-31EB985E1D93}.Release|Any CPU.ActiveCfg = Release|Any CPU 19 | {42678B85-89CB-956A-9497-31EB985E1D93}.Release|Any CPU.Build.0 = Release|Any CPU 20 | {0A812CA3-5FC4-226F-6D8F-E3305A02E1AF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 21 | {0A812CA3-5FC4-226F-6D8F-E3305A02E1AF}.Debug|Any CPU.Build.0 = Debug|Any CPU 22 | {0A812CA3-5FC4-226F-6D8F-E3305A02E1AF}.Release|Any CPU.ActiveCfg = Release|Any CPU 23 | {0A812CA3-5FC4-226F-6D8F-E3305A02E1AF}.Release|Any CPU.Build.0 = Release|Any CPU 24 | {238D0A8E-3A13-BE0E-8669-ED20F419B5C3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 25 | {238D0A8E-3A13-BE0E-8669-ED20F419B5C3}.Debug|Any CPU.Build.0 = Debug|Any CPU 26 | {238D0A8E-3A13-BE0E-8669-ED20F419B5C3}.Release|Any CPU.ActiveCfg = Release|Any CPU 27 | {238D0A8E-3A13-BE0E-8669-ED20F419B5C3}.Release|Any CPU.Build.0 = Release|Any CPU 28 | EndGlobalSection 29 | GlobalSection(SolutionProperties) = preSolution 30 | HideSolutionNode = FALSE 31 | EndGlobalSection 32 | EndGlobal 33 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # Virtual Button Box 2 | 3 | Virtual Button Box is a program for the HTC Vive that lets you place flat panels in 3D space that contain buttons. Clicking a button sends a keyboard key press or key combination. The panels are defined using a separate profile editing program. 4 | 5 | It is designed with DCS World in mind, but will work in any VR game that accepts keyboard input. 6 | 7 | DCS A-10C Demonstration Video: 8 | https://www.youtube.com/watch?v=a7keXsamgZw&feature=youtu.be 9 | 10 | ## Download 11 | https://github.com/BManx2000/VirtualButtonBox/releases/download/1.1/Virtual.Button.Box.1.1.zip 12 | 13 | ## Documentation 14 | https://github.com/BManx2000/VirtualButtonBox/wiki 15 | --------------------------------------------------------------------------------