1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- #if UNITY_EDITOR
- using UnityEngine;
- using System.Collections.Generic;
- namespace O3DWB
- {
- public class KeyboardButtonStates : Singleton<KeyboardButtonStates>
- {
- #region Private Variables
- private Dictionary<KeyCode, bool> _keyboardButtonStates = new Dictionary<KeyCode, bool>();
- #endregion
- #region Public Methods
- public void ClearStates()
- {
- _keyboardButtonStates.Clear();
- }
- public void OnKeyboardButtonPressed(KeyCode keyCode)
- {
- AddKeyCodeEntryIfNecessary(keyCode);
- _keyboardButtonStates[keyCode] = true;
- }
- public void OnKeyboardButtonReleased(KeyCode keyCode)
- {
- AddKeyCodeEntryIfNecessary(keyCode);
- _keyboardButtonStates[keyCode] = false;
- }
- public bool IsKeyboardButtonPressed(KeyCode keyCode)
- {
- if (keyCode == KeyCode.LeftShift || keyCode == KeyCode.RightShift) return Event.current.shift;
- if (keyCode == KeyCode.LeftControl || keyCode == KeyCode.RightControl) return Event.current.control;
- if (keyCode == KeyCode.LeftCommand || keyCode == KeyCode.RightCommand) return Event.current.command;
- if (!DoesKeyCodeEntryExist(keyCode)) return false;
- return _keyboardButtonStates[keyCode];
- }
- public void RepairCTRLAndCMDStates()
- {
- if(!Event.current.control)
- {
- if (IsKeyboardButtonPressed(KeyCode.LeftControl)) SetKeyPressed(KeyCode.LeftControl, false);
- if (IsKeyboardButtonPressed(KeyCode.RightControl)) SetKeyPressed(KeyCode.RightControl, false);
- }
- if(!Event.current.command)
- {
- if (IsKeyboardButtonPressed(KeyCode.LeftCommand)) SetKeyPressed(KeyCode.LeftCommand, false);
- if (IsKeyboardButtonPressed(KeyCode.RightCommand)) SetKeyPressed(KeyCode.RightCommand, false);
- }
- }
- public bool IsAnyShiftKeyPressed()
- {
- return Event.current.shift;
- }
- public bool IsAnyCtrlKeyPressed()
- {
- return Event.current.control;
- }
- public bool IsAnyAltKeyPressed()
- {
- return Event.current.alt;
- }
- #endregion
- #region Private Methods
- private void AddKeyCodeEntryIfNecessary(KeyCode keyCode)
- {
- if (!DoesKeyCodeEntryExist(keyCode)) _keyboardButtonStates.Add(keyCode, false);
- }
- private bool DoesKeyCodeEntryExist(KeyCode keyCode)
- {
- return _keyboardButtonStates.ContainsKey(keyCode);
- }
- private void SetKeyPressed(KeyCode keyCode, bool pressed)
- {
- AddKeyCodeEntryIfNecessary(keyCode);
- _keyboardButtonStates[keyCode] = pressed;
- }
- #endregion
- }
- }
- #endif
|