public HotKeyEvent(FUNC_HOTKEY_EVENT funcEvent, string label, KeyCode keyCode, bool isShift, bool isAlt, bool isCtrl) { _funcEvent = funcEvent; _label = label; _keyCode = keyCode; _isShift = isShift; _isAlt = isAlt; _isCtrl = isCtrl; }
public HotKeyEvent() { _keyCode = KeyCode.Space; //_label; _isShift = false; _isAlt = false; _isCtrl = false; _paramObject = null; _funcEvent = null; _isCombination = false; }
public void SetEvent(FUNC_HOTKEY_EVENT funcEvent, string label, KeyCode keyCode, bool isShift, bool isAlt, bool isCtrl, object paramObject) { _funcEvent = funcEvent; _label = label; _keyCode = keyCode; _isShift = isShift; _isAlt = isAlt; _isCtrl = isCtrl; _isCombination = _isShift || _isAlt || _isCtrl; _paramObject = paramObject; }
// 변경 3.25 : 매번 생성하는 방식에서 Pop 방식으로 변경 private HotKeyEvent PopEvent(FUNC_HOTKEY_EVENT funcEvent, string label, KeyCode keyCode, bool isShift, bool isAlt, bool isCtrl, object paramObject) { if (_iEvent >= _hotKeyEvents_Pool.Count) { //두개씩 늘리자 for (int i = 0; i < 2; i++) { _hotKeyEvents_Pool.Add(new HotKeyEvent()); } //Debug.Log("입력 풀 부족 : " + _hotKeyEvents_Pool.Count + " [" + label + "]"); } HotKeyEvent result = _hotKeyEvents_Pool[_iEvent]; _iEvent++; result.SetEvent(funcEvent, label, keyCode, isShift, isAlt, isCtrl, paramObject); return(result); }
// public apHotKey.HotKeyEvent OnKeyDown(KeyCode keyCode, bool isCtrl, bool isShift, bool isAlt) // { // Debug.Log("OnKeyDown : " + keyCode); // if(keyCode == KeyCode.None) // { // return null; // } // if(_isLock) // { // Debug.LogWarning("키 입력 되었으나 Lock [" + keyCode + "]"); // return null; // } // if(_prevKey == keyCode) // { // Debug.Log(">> 이전 키와 같음 : " + keyCode); // return null; // } // _prevKey = keyCode; // Debug.LogWarning("Key Down : " + keyCode); // //추가적으로, 유니티에서 제공하는 값에 따라서도 변동 // if(isCtrl) // { // _isSpecialKey_Ctrl = true; // } // if(isShift) // { // _isSpecialKey_Shift = true; // } // if (isAlt) // { // _isSpecialKey_Alt = true; // } // switch (keyCode) // { // // Special Key //#if UNITY_EDITOR_OSX // case KeyCode.LeftCommand: // case KeyCode.RightCommand: //#else // case KeyCode.LeftControl: // case KeyCode.RightControl: //#endif // _isSpecialKey_Ctrl = true; // break; // case KeyCode.LeftShift: // case KeyCode.RightShift: // _isSpecialKey_Shift = true; // break; // case KeyCode.LeftAlt: // case KeyCode.RightAlt: // _isSpecialKey_Alt = true; // break; // default: // //그 외의 키값이라면.. // _mainKey = keyCode; // //해당하는 이벤트가 있는가? // apHotKey.HotKeyEvent hotkeyEvent = CheckHotKeyEvent(_mainKey, _isSpecialKey_Shift, _isSpecialKey_Alt, _isSpecialKey_Ctrl); // if(hotkeyEvent != null) // { // //일단 이 메인 키를 누른 상태에서 Lock을 건다. // _isLock = true; // return hotkeyEvent; // } // break; // } // return null; // } // public void OnKeyUp(KeyCode keyCode, bool isCtrl, bool isShift, bool isAlt) // { // if(keyCode == KeyCode.None) // { // return; // } // //추가적으로, 유니티에서 제공하는 값에 따라서도 변동 (False로만) // if(!isCtrl) // { // _isSpecialKey_Ctrl = false; // } // if(!isShift) // { // _isSpecialKey_Shift = false; // } // if (!isAlt) // { // _isSpecialKey_Alt = false; // } // Debug.LogError("Key Up : " + keyCode); // _prevKey = KeyCode.None; // //Lock을 풀 수 있을까 // switch (keyCode) // { // // Special Key //#if UNITY_EDITOR_OSX // case KeyCode.LeftCommand: // case KeyCode.RightCommand: //#else // case KeyCode.LeftControl: // case KeyCode.RightControl: //#endif // _isSpecialKey_Ctrl = false; // break; // case KeyCode.LeftShift: // case KeyCode.RightShift: // _isSpecialKey_Shift = false; // break; // case KeyCode.LeftAlt: // case KeyCode.RightAlt: // _isSpecialKey_Alt = false; // break; // default: // if(keyCode == _mainKey) // { // //Lock을 풀자 // _isLock = false; // Debug.Log("[" + _mainKey + "] 단축키 Lock 해제됨"); // _mainKey = KeyCode.ScrollLock; // } // break; // } // } #endregion // Functions //------------------------------------------------------------------------------ public void AddHotKeyEvent(FUNC_HOTKEY_EVENT funcEvent, string label, KeyCode keyCode, bool isShift, bool isAlt, bool isCtrl, object paramObject) { _hotKeyEvents_Live.Add(PopEvent(funcEvent, label, keyCode, isShift, isAlt, isCtrl, paramObject)); _isAnyEvent = true; }
// Functions //--------------------------------------------- public void AddHotKeyEvent(FUNC_HOTKEY_EVENT funcEvent, string label, KeyCode keyCode, bool isShift, bool isAlt, bool isCtrl) { _hotKeyEvents.Add(new HotKeyEvent(funcEvent, label, keyCode, isShift, isAlt, isCtrl)); _isAnyEvent = true; }