dantman / elite-vr-cockpit

A SteamVR Overlay providing a virtual throttle and joystick and holographic buttons for ship functions, with custom integration into Elite Dangerous
Other
325 stars 36 forks source link

Joysticks don't appear #30

Open jblebrun17 opened 6 years ago

jblebrun17 commented 6 years ago

Hi, the joystick and throttle don't show up in-game? vJoy is configured properly, and the Elite-VR Cockpit seems to be working as well, but when I hop into a training mission, the joystick and throttle can't be interacted with. They don't even appear as labels or objects to grab on to. I can interact with the edit button to add buttons, but that's it.

dantman commented 6 years ago

Could you screenshot the desktop window when you are in one of the training mission's cockpits?

Also try backing up and deleting the {user}/AppData/LocalLow/Daniel Friesen/Elite VR Cockpit/SavedState.json to see if somehow the joystick/throttle got saved with a strange position you can't see.

jblebrun17 commented 6 years ago

I deleted the file you mentioned, but still nothing. So here's some screenshots. 20180915111601_1 20180915111607_1

jblebrun17 commented 6 years ago

And just in case you meant the Elite-VR-Cockpit window, here's a screen of that, too. :P capture

dantman commented 6 years ago

Ok, it is connected to OpenVR. No wait, I was wondering about ED.

The Elite Dangerous status is saying "Running", that is wrong. ED Status is only running when it doesn't know where you are. It should be displaying "Main Ship". Can you confirm that screenshot was taken when you were in the cockpit?

If so, can you start the game, jump into a copy, and then while you're in your ship open up your {user}/Saved Games/Frontier Developments/Elite Dangerous folder and look for the Status.json file and upload it for me to see.

jblebrun17 commented 6 years ago

I was definitely in the cockpit when the screenshot was taken. I also tried playing in solo play, outside of the training missions, and had the same issue. I can't upload the actual file through github, but here's the contents: { "timestamp":"2018-09-15T19:48:49Z", "event":"Status", "Flags":16842765, "Pips":[4,4,4], "FireGroup":0, "GuiFocus":0 }

If it's any help, I have Steam installed in my C: Drive, while ED, the Cockpit, and the Saved Games folder are located in my D: Drive.

dantman commented 6 years ago

How did you configure your saved games to be on the D: drive? Is it separate from your %USERPROFILE% folder?

If you feel like setting up Unity, you could add a UnityEngine.Debug.Log(StatusFilePath); before this line, to log what file the overlay is looking for to compare it to where the Status.json actually is: https://github.com/dantman/elite-vr-cockpit/blob/master/Assets/Scripts/EDStateManager.cs#L284

jblebrun17 commented 6 years ago

Honestly, I'm not sure how it ended up on the D: drive, but that's where the default was. I moved it to my C: drive and everything seems to be working now! I'll update you if the problem resurfaces, but it seems fixed for now.

olistreet commented 6 years ago

Hi Daniel, I saw your post on Reddit and I decided to try it, cause I think it's wonderful to have virtual buttons for all the functions of Elite, thanks for the good work! I have an issue similar to Jblebrun17.

I'm in windows 10, and Oculus. I had the installation of steam and elite in E drive, so I delete everything and Installed it in C drive, the issue is the following, in your program, I don't seem to be able to get the SavedState.json

2018-10-01 12_11_19-oculus

And in the directory {user}/AppData/LocalLow/Daniel Friesen/Elite VR Cockpit/SavedState.json I have no SavedState.json file

2018-10-01 12_15_16-elite vr cockpit

So I don't know what I have to do to make your overlay work.

When I start Elite, I don't see the two icons from your program, the edit menu button, and the other one, When I start Elite in Steamvr, or I choose start Elite horizons in Steam VR mode, I am in the steam vr lobby with your white htc vive wands but then when the game starts I no longer have them and as I mentioned before, I do not see the two icons.

Hope all this information is helpful to you.

Regards,

Alexis

informatico-madrid commented 5 years ago

Hi. I have oculus rift. i tray working on oculus touch. y configure all ok. but i have always messages that Elite Dangerous its not runing. its like Elite VR Cockpit dont detect elite dangerous when i start the game.

informatico-madrid commented 5 years ago

I try start Elite VR cockpit from steam too. but not working. i see a yellow waring in oculus dashboard that tellmi waiting for elite start

dantman commented 5 years ago

@informatico-madrid Can you take a screenshot of the overlay's desktop window while ED is running. Also try running ED in Windows 7 compat mode, someone else said that works.

informatico-madrid commented 5 years ago

image image

informatico-madrid commented 5 years ago

i think this is somthing with oculus environment. i can switch with oculus dashboard betwen ed an elite vr app but i cant see vr cockpit buttons in ed

dantman commented 5 years ago

Ok, "App: " is blank. Which suggests the overlay can't find the name of the process that is currently rendering to SteamVR.

paramboy commented 5 years ago

i have the same issue, the overlay cant find the name of the process because for OculusRift owners ED is running through the native oculus app and not steamvr, even if you run it through Steam client, we need to figure out how to force run ED through SteamVR but for now i did not found any solution for this

dantman commented 5 years ago

Ultimately someone with an Oculus is going to have to run the overlay in the Unity editor, play around with the PID detection and find a way to detect the Elite PID and when it's running in VR.

I don't have access to a Rift so I cannot do this myself.

paramboy commented 5 years ago

have a guide link for learn PID detection? i can try but im still learning unity so i cant promise i can do it

dantman commented 5 years ago

Look at EDStateManager.cs. I get the PID from SteamVR, which tells us the PID of the application currently rendering to the VR compositor. And look at SetCurrentProcess in particular. I use Process.GetProcessById to get a Process object and use ProcessName to look at its name.

You'll have to play around with it and see if you can get a process name other than blank text. I recommend using Debug.Log(pid); to figure out what the PID of the process is when Elite starts rendering to VR. Then looking in the Windows task manager to first figure out what program it even is.

paramboy commented 5 years ago

im tryng to unsderstund the code but there is a lot i dont know, istead we can get a pop up windows so the user is going to set the PID manualy looking in taskmenager just for now? just for oculus owners. still tryng to find a way to do it

EDIT: can we do it with Process.GetProcessesByName("EliteDangerous64"); ? im very noob sorry

paramboy commented 5 years ago

i have a fix, i just find a way to force elite run on steamvr, just set EliteDangerous64.exe to run on Compatibility mode Windows 7 and all work. but still elite dont recognize touch input so for now is unplayable

atik1n commented 3 years ago

image Still having this issue Overlay app didn't get that I am in cockpit no matter what

Flags saying 1000000010000000000001000 and that's like... Shields up, Mass lock, In main ship. So IDK what's wrong

@dantman, any ideas? Game in Win7 compat and et cetera

dantman commented 3 years ago

That "Illegal Characters In Path" error is definitely breaking things. I'll need to know more about where you've installed ED, the overlay, and your user/SavedGames folder.

atik1n commented 3 years ago

That "Illegal Characters In Path" error is definitely breaking things. I'll need to know more about where you've installed ED, the overlay, and your user/SavedGames folder.

Game: "D:\Games\Steam\steamapps\common\Elite Dangerous" Overlay: "M:\Software\Elite VR Cockpit" SavedGames: "C:\Users\Salieri\Saved Games\Frontier Developments\Elite Dangerous" BUT. My Win in Russian and AFAIK this directory can be accessed also via Cyrillic name.

atik1n commented 3 years ago

FYI, there is a little problem for me to change source code and compile it, so I can't do that completely. It's system specific.

dantman commented 3 years ago

There is an output_log.txt inside the same folder as the SavedState.json. The logs tell you where that's being loaded from.

Could you share that log, it'll have more details on where the error is being thrown from.

atik1n commented 3 years ago
ArgumentException: Illegal characters in path.
  at System.IO.Path.Combine (System.String path1, System.String path2) [0x00057] in <567df3e0919241ba98db88bec4c6696f>:0 
  at EVRC.EDStateManager.GetControlBindingsFilePaths () [0x00055] in <54aeff0c4da44cf6bd80a187876b572c>:0 
  at EVRC.EDStateManager.LoadControlBindings () [0x00000] in <54aeff0c4da44cf6bd80a187876b572c>:0 
  at EVRC.EDStateManager.SetIsEliteDangerousRunning (System.Boolean running) [0x0001f] in <54aeff0c4da44cf6bd80a187876b572c>:0 
  at EVRC.EDStateManager.SetCurrentProcess (System.UInt32 pid) [0x0007f] in <54aeff0c4da44cf6bd80a187876b572c>:0 
  at EVRC.EDStateManager.OnSteamVRInitialized (System.Boolean initialized) [0x0000e] in <54aeff0c4da44cf6bd80a187876b572c>:0 
  at EVRC.EDStateManager.OnEnable () [0x00039] in <54aeff0c4da44cf6bd80a187876b572c>:0 

AFAIK, it tries to read ED keybindings. They are laid under "C:\Users\Salieri\AppData\Local\Frontier Developments\Elite Dangerous\Options\Bindings"

atik1n commented 3 years ago

Important note. In RU version it can be either called image Or Users

dir says it's Users image

atik1n commented 3 years ago

Okay. I found the issue. It's Odyssey-related StartPreset.start:

KeyboardMouseOnly
Custom
Custom
Custom
atik1n commented 3 years ago

If we will expand some string in the code:

        /**
         * Get the potential paths for a user's bindings file
         */
        public string[] GetControlBindingsFilePaths()
        {
            string StartPreset = File.Exists("C:\Users\Salieri\AppData\Local\Frontier Developments\Elite Dangerous\Options\Bindings\StartPreset.start")
                ? File.ReadAllText("C:\Users\Salieri\AppData\Local\Frontier Developments\Elite Dangerous\Options\Bindings\StartPreset.start")
                : "";
            if ((StartPreset ?? "").Trim() == "")
                StartPreset = "Custom";

            /* After that StartPreset will be like
                KeyboardMouseOnly\nCustom\nCustom\nCustom
            */

            // Bindings from the user's Bindings directory
            var controlBindingsPaths = new List<string> {
                Path.Combine("C:\Users\Salieri\AppData\Local\Frontier Developments\Elite Dangerous\Options\Bindings", "KeyboardMouseOnly\nCustom\nCustom\nCustom" + ".3.0.binds"),
                Path.Combine("C:\Users\Salieri\AppData\Local\Frontier Developments\Elite Dangerous\Options\Bindings", "KeyboardMouseOnly\nCustom\nCustom\nCustom" + ".2.0.binds"),
                Path.Combine("C:\Users\Salieri\AppData\Local\Frontier Developments\Elite Dangerous\Options\Bindings", "KeyboardMouseOnly\nCustom\nCustom\nCustom" + ".1.8.binds"),
            };

            if (EDProcessDirectory != null)
            {
                // Built-in game bindings presets
                // @note These will only load after the game starts
                controlBindingsPaths.Add(Path.Combine(EDProcessDirectory, "ControlSchemes", StartPreset + ".binds"));
            }

            return controlBindingsPaths.ToArray();
        }
atik1n commented 3 years ago

Workaround for me will be like: Create new StartPreset.edh with

Custom

And create batch file

@echo off
if exist StartPreset.edh (
    ren StartPreset.start StartPreset.edo
    ren StartPreset.edh StartPreset.start
) else if exist StartPreset.edo (
    ren StartPreset.start StartPreset.edh
    ren StartPreset.edo StartPreset.start
)