Mono ui input manager
This commit is contained in:
parent
b7aa670e70
commit
ab5a33742a
@ -1,4 +1,5 @@
|
|||||||
using UnityEngine;
|
using NEG.UI.UnityUi.Window;
|
||||||
|
using UnityEngine;
|
||||||
using UnityEngine.EventSystems;
|
using UnityEngine.EventSystems;
|
||||||
using UnityEngine.InputSystem;
|
using UnityEngine.InputSystem;
|
||||||
using UnityEngine.InputSystem.UI;
|
using UnityEngine.InputSystem.UI;
|
||||||
@ -31,9 +32,9 @@ namespace NEG.UI.UnityUi
|
|||||||
//var keyboardAction = new InputAction(binding: "/<Keyboard>/*");
|
//var keyboardAction = new InputAction(binding: "/<Keyboard>/*");
|
||||||
//keyboardAction.performed += (context) => CurrentInputSource = EInputSource.Keyboard;
|
//keyboardAction.performed += (context) => CurrentInputSource = EInputSource.Keyboard;
|
||||||
//keyboardAction.Enable();
|
//keyboardAction.Enable();
|
||||||
var gamepadAction = new InputAction(binding: "/<Gamepad>/*");
|
//var gamepadAction = new InputAction(binding: "/<Gamepad>/*");
|
||||||
gamepadAction.performed += (context) => OnSelectionChangeStarted();
|
//gamepadAction.performed += (context) => OnSelectionChangeStarted();
|
||||||
gamepadAction.Enable();
|
//gamepadAction.Enable();
|
||||||
|
|
||||||
var mouseAction = new InputAction(binding: "/<Mouse>/*");
|
var mouseAction = new InputAction(binding: "/<Mouse>/*");
|
||||||
mouseAction.performed += (context) =>
|
mouseAction.performed += (context) =>
|
||||||
@ -56,6 +57,20 @@ namespace NEG.UI.UnityUi
|
|||||||
{
|
{
|
||||||
CurrentSelectionSource = SelectionSource.Direction;
|
CurrentSelectionSource = SelectionSource.Direction;
|
||||||
Cursor.visible = false;
|
Cursor.visible = false;
|
||||||
|
if (EventSystem.current.currentSelectedGameObject == null)
|
||||||
|
{
|
||||||
|
EventSystem.current.SetSelectedGameObject(((MonoWindow)MonoUiManager.Instance.CurrentMainWindow).DefaultSelectedItem);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var data = new PointerEventData(EventSystem.current);
|
||||||
|
var currentSelected = EventSystem.current.currentSelectedGameObject;
|
||||||
|
for (var current = EventSystem.current.currentSelectedGameObject.transform;
|
||||||
|
current != null;
|
||||||
|
current = current.parent)
|
||||||
|
{
|
||||||
|
ExecuteEvents.Execute(current.gameObject, data, ExecuteEvents.pointerExitHandler);
|
||||||
|
}
|
||||||
|
EventSystem.current.SetSelectedGameObject(currentSelected);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SetPointerInput()
|
private void SetPointerInput()
|
||||||
|
|||||||
@ -24,6 +24,7 @@ namespace NEG.UI.UnityUi.Window
|
|||||||
public bool IsMainWindow { get; private set; }
|
public bool IsMainWindow { get; private set; }
|
||||||
|
|
||||||
private IWindowSlot DefaultWindowSlot => windowSlots[0];
|
private IWindowSlot DefaultWindowSlot => windowSlots[0];
|
||||||
|
public GameObject DefaultSelectedItem => defaultSelectedItem;
|
||||||
|
|
||||||
[SerializeField] private List<MonoWindowSlot> windowSlots;
|
[SerializeField] private List<MonoWindowSlot> windowSlots;
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,10 @@
|
|||||||
using NEG.UI.UnityUi.WindowSlot;
|
using NEG.UI;
|
||||||
|
using NEG.UI.UnityUi.Window;
|
||||||
|
using NEG.UI.UnityUi.WindowSlot;
|
||||||
using NEG.UI.Window;
|
using NEG.UI.Window;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using UnityEngine.EventSystems;
|
||||||
|
|
||||||
namespace NegUtils.NEG.UI.UnityUi.WindowSlot
|
namespace NegUtils.NEG.UI.UnityUi.WindowSlot
|
||||||
{
|
{
|
||||||
@ -41,8 +44,11 @@ namespace NegUtils.NEG.UI.UnityUi.WindowSlot
|
|||||||
window.SetClosedState();
|
window.SetClosedState();
|
||||||
windowsHistory.Remove(window);
|
windowsHistory.Remove(window);
|
||||||
if (window != currentWindow || windowsHistory.Count == 0) return;
|
if (window != currentWindow || windowsHistory.Count == 0) return;
|
||||||
windowsHistory[^1].SeVisibleState();
|
|
||||||
currentWindow = windowsHistory[^1];
|
currentWindow = windowsHistory[^1];
|
||||||
|
currentWindow.SeVisibleState();
|
||||||
|
if(UiManager.Instance.CurrentMainWindow == window)
|
||||||
|
UiManager.Instance.SetMainWindow(currentWindow);
|
||||||
|
EventSystem.current.SetSelectedGameObject(((MonoWindow)currentWindow).DefaultSelectedItem);
|
||||||
}
|
}
|
||||||
public override void CloseAllWindows()
|
public override void CloseAllWindows()
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user