void OnControllerDisconnect(int instanceId)
    {
        Debug.Log("Removed controller device " + instanceId);

        IntPtr removedController = SDL.SDL_GameControllerFromInstanceID(instanceId);

        Debug.Assert(removedController != IntPtr.Zero);

        for (int i = 0; i < controllers.Count; ++i)
        {
            if (controllers[i].sdlHandle == removedController)
            {
                IInputDevice device = controllers[i];

                controllers[i].Disconnect();
                SDL.SDL_GameControllerClose(removedController);

                bool deviceRemoved = devices.Remove(controllers[i]);
                Debug.Assert(deviceRemoved);
                controllers.RemoveAt(i);
                disconnectEvent.Fire(device);

                Debug.Log("Controller count = " + controllers.Count);
                Debug.Log("Device count = " + devices.Count);

                return;
            }
        }

        Debug.Assert(false, "Unable to find controller " + instanceId + " to remove");
    }
Ejemplo n.º 2
0
    void Close(bool rebindSuccess)
    {
        this.device = null;
        if (!rebindSuccess && rebinder != null)
        {
            rebinder.RevertMapBeingRebound();
        }

        rebinder = null;
        gameObject.SetActive(false);
        rebindCompleteEvent.Fire();

        if (ChartEditor.Instance)
        {
            ChartEditor.Instance.uiServices.SetPopupBlockingEnabled(false);
        }

        Localiser.LocaliseScene();
    }
Ejemplo n.º 3
0
 // Update is called once per frame
 void Update()
 {
     if (MSChartEditorInput.GetInputDown(MSChartEditorInputActions.CloseMenu))
     {
         Close(false);
     }
     else
     {
         InputAction conflict;
         IInputMap   attemptedInput;
         if (!device.Connected || rebinder.TryMap(out conflict, out attemptedInput))
         {
             Close(true);
         }
         else if (conflict != null)
         {
             inputConflictEvent.Fire(conflict);
             conflictNotificationText.text    = string.Format(conflictFormatStr, attemptedInput.GetInputStr(), conflict.properties.displayName);
             conflictNotificationText.enabled = true;
         }
     }
 }