Page 1 of 1

Continue button not working after controller disconnect

Posted: Wed Jul 04, 2018 9:23 pm
by mgregoirelds
Hello Tony,

I'm having an issue where my controller turns off by itself while playing (I'm using an Xbox One wireless controller) and for some reason, when I turn it back on again, pressing to continue a dialogue doesn't work anymore. I'm using Rewired. What is funny is that everything else is working when I turn back my controller: I can run, attack and other stuff, so my guess is that something is happening with Dialogue System. It seems like "eventSystem.currentSelectedGameObject" is set to null at this point, so submitting the key doesn't work. Any idea?

Re: Continue button not working after controller disconnect

Posted: Wed Jul 04, 2018 9:32 pm
by mgregoirelds
Maybe it is related to the autofocus option? I can't find it anymore in 2.0. I've taken a look at calls within Dialogue System to UnityEngine.EventSystems.EventSystem.current.SetSelectedGameObject(null) and it is done in UnityUIDialogueUI. Could it be that the Continue button is never reselected? I'm using Standard Dialogue UI with TMP.

Re: Continue button not working after controller disconnect

Posted: Wed Jul 04, 2018 10:00 pm
by Tony Li
Hi Maxime,

In the Standard Dialogue UI, the Standard UI Subtitle Panel and Standard UI Menu Panel have a Navigation section. Make sure the Focus Check Frequency is non-zero. Try setting the Refresh Selectables Frequency to a non-zero value such as 1.

When the panel opens, it will cache a list of all buttons it contains. Then it will select the button assigned to First Selected, if assigned. If the Focus Check Frequency is non-zero, on a repeating frequency it will check that a button is selected; if not, it will select one of the buttons in its cache. If Refresh Selectables Frequency is non-zero, it will refresh the cache on a repeating frequency.

Image

However, it will not do this if the Input Device Manager's Input Device is set to Mouse or Touch. The Input Device Manager component is on the Dialogue Manager GameObject.

Note that if you move the mouse, it will change the Input Device to Mouse. (Unless you've unticked Detect Mouse Control. If your Input Device Manager doesn't have a Detect Mouse Control checkbox, you'll need to update to the patch if you want to get it.)

Image

To identify the issue, try this in the Unity editor:

1. Keep the inspector on the Input Device Manager. When the problem occurs, check the Input Device Manager's Input Device value. Make sure it's Joystick or Keyboard.

2. If that doesn't help, keep the inspector on the Event System. (Or open two Inspector windows, lock one on the Event System, and lock the other on the Input Device Manager.) When the problem occurs, check what the EventSystem thinks is selected:

Image

If neither of those help, it might be specific to the Rewired integration. I'm going to test that right now. Can you test it temporarily without the Rewired integration to see if there's a difference? I'll let you know what I find in my test.

Re: Continue button not working after controller disconnect

Posted: Wed Jul 04, 2018 10:04 pm
by mgregoirelds
At the same time you were writing your message, I tested out something and I think I found the problem. We had "Detect Mouse Control" checked, so when the controller was not connected, it did fall back to Mouse. Then, upon reconnecting, it stayed in Mouse mode. Why? I'm not sure... Maybe I'm missing some sort of proper Rewired integration, I'm not sure.

Re: Continue button not working after controller disconnect

Posted: Wed Jul 04, 2018 10:24 pm
by Tony Li
If you haven't already done this, please try it:

1. Import the Rewired Support package in Plugins / Pixel Crushers / Common / Third Party Support.

2. Add an Input Device Manager Rewired component to the Dialogue Manager.
mgregoirelds wrote: Wed Jul 04, 2018 10:04 pmWe had "Detect Mouse Control" checked, so when the controller was not connected, it did fall back to Mouse. Then, upon reconnecting, it stayed in Mouse mode. Why?
For efficiency, the Dialogue System's Input Device Manager doesn't continuously poll for a joystick. Instead, it switches back to Joystick mode only if the player presses any of the Joystick Key Codes To Check, or Joystick Buttons To Check (buttons defined in Unity's Input Manager), or Joystick Axes To Check (also defined in Unity's Input Manager). By default, the buttons and axes lists are empty, but the primary joystick key codes are in the list.


I made these changes to a default test scene, and it appears to work even with Detect Mouse Control ticked:

1. Imported Rewired. Set up joystick actions UIHorizontal, UIVertical, UISubmit, and UICancel.

2. Inspected the EventSystem. Removed the Standalone Input Module, and added a Rewired Standalone Input Module.

3. Set up the Rewired Support integration as described at the top of this post.

4. (Optional:) Inspected NPC Subtitle Panel, PC Subtitle Panel, and Response Menu Panel. Set Navigation > Refresh Selectables Frequency to 1. Setting it to 1 is a good safety measure. But it worked with the value set to 0 as well.

Re: Continue button not working after controller disconnect

Posted: Wed Jul 04, 2018 10:25 pm
by Tony Li
I'm finishing work for the day. If it's still giving you problems, please feel free to send me a reproduction scene. I can test it out here tomorrow morning and let you know what I find.

Re: Continue button not working after controller disconnect

Posted: Thu Jul 05, 2018 8:42 am
by mgregoirelds
Hello, we just shipped our demo with the Detect Mouse Control unticked. So far, it worked fine. I'll see about making the proposed changes later today. Thanks a lot Tony!

Re: Continue button not working after controller disconnect

Posted: Thu Jul 05, 2018 8:44 am
by Tony Li
Congratulations on shipping your demo!