/// <summary> /// OnGUI 후반부에 체크해준다. /// Event가 used가 아니라면 호출 가능 /// </summary> /// <param name=""></param> public HotKeyEvent CheckHotKeyEvent(KeyCode keyCode, bool isShift, bool isAlt, bool isCtrl) { if (!_isAnyEvent) { return(null); } HotKeyEvent hkEvent = null; for (int i = 0; i < _hotKeyEvents.Count; i++) { hkEvent = _hotKeyEvents[i]; if (hkEvent._keyCode == keyCode && hkEvent._isShift == isShift && hkEvent._isAlt == isAlt && hkEvent._isCtrl == isCtrl) { try { //저장된 이벤트를 실행하자 hkEvent._funcEvent(hkEvent._paramObject); return(hkEvent); } catch (Exception ex) { Debug.LogError("HotKey Event Exception : " + ex); return(null); } } } return(null); }
EventInfo[] ICustomEventDescriptor.GetEvents() { if (HotKeys.Count == 0) { return(new EventInfo[] { }); } else { EventInfo[] evs = new EventInfo[HotKeys.Count]; for (int i = 0; i < HotKeys.Count; i++) { evs[i] = new HotKeyEvent(HotKeys[i]); } return(evs); } }
/// <summary> /// OnGUI 후반부에 체크해준다. /// Event가 used가 아니라면 호출 가능 /// </summary> /// <param name=""></param> public HotKeyEvent CheckHotKeyEvent(KeyCode keyCode, bool isShift, bool isAlt, bool isCtrl, bool isPressed) { if (!_isAnyEvent) { return(null); } HotKeyEvent hkEvent = null; for (int i = 0; i < _hotKeyEvents_Live.Count; i++) { hkEvent = _hotKeyEvents_Live[i]; //Pressed 이벤트 = 단일 키 //Released 이벤트 = 조합 키 // 위조건이 안맞으면 continue if ((isPressed && hkEvent._isCombination) || (!isPressed && !hkEvent._isCombination)) { //조합키인데 Pressed 이벤트이거나 //단일키인데 Released 이벤트라면 //패스 continue; } if (hkEvent._keyCode == keyCode && hkEvent._isShift == isShift && hkEvent._isAlt == isAlt && hkEvent._isCtrl == isCtrl) { try { //저장된 이벤트를 실행하자 hkEvent._funcEvent(hkEvent._paramObject); return(hkEvent); } catch (Exception ex) { Debug.LogError("HotKey Event Exception : " + ex); return(null); } } } return(null); }
// 변경 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); }