void OnEnable() { EditorApplication.playmodeStateChanged += SerializeProcess; // Initialize sort data. _layerList = new List<SortingLayerInfo>(); // Initialize GUI data. _isFocus = false; if (_showSortingLayerContent == null) { _showSortingLayerContent = new Dictionary<string, bool>(); if (_showSortingLayerContentName.Length > 0) { for (int index = 0; index < _showSortingLayerContentName.Length; index++) _showSortingLayerContent[_showSortingLayerContentName[index]] = _showSortingLayerContentBoolean[index]; } } if (_selectRenderer == null) { _selectRenderer = new HashSet<Renderer>(); if (_selectRendererArray.Length > 0) { for (int index = 0; index < _selectRendererArray.Length; index++) _selectRenderer.Add(_selectRendererArray[index]); } } _isDragRight = false; _isDragLeft = false; _focusState = FocusState.None; _originMousePos = Vector2.zero; _originShiftPos = 0; _originOrder = 0; _guiTime = 0; _keyDampState = KeyBoardDamp.None; _warnContent = new GUIContent(TextureResources.warnIcon, "Unknowable order in same value."); }
/// <summary> /// Process the keyboard events. /// </summary> void KeyBoardProcess() { if (_focusSelectRenderer == null) return; if (Event.current.type == EventType.KeyDown) { if (Event.current.keyCode == KeyCode.UpArrow) { _editSelectRenderer = null; if (_keyDampState == KeyBoardDamp.None) { SortingRendererInfo rendererInfo = GetLastRendererInfo(_focusSelectRenderer); if (rendererInfo != null) { if (Event.current.control || Event.current.shift) { if (!_selectRenderer.Contains(rendererInfo.renderer)) _selectRenderer.Add(rendererInfo.renderer); else _selectRenderer.Remove(_focusSelectRenderer); } else { _selectRenderer.Clear(); _selectRenderer.Add(rendererInfo.renderer); } Repaint(); _focusSelectRenderer = rendererInfo.renderer; GUIUtility.hotControl = rendererInfo.controlID; GUIUtility.keyboardControl = 0; _keyDampState = KeyBoardDamp.Damp; _guiTime = Time.realtimeSinceStartup; ChangeSelectObject(); } } else if (_keyDampState == KeyBoardDamp.Damp) { if (Time.realtimeSinceStartup - _guiTime >= 0.5f) { _keyDampState = KeyBoardDamp.Continuous; _guiTime = Time.realtimeSinceStartup; } } else if (_keyDampState == KeyBoardDamp.Continuous) { if (Time.realtimeSinceStartup - _guiTime >= 0.05f) { SortingRendererInfo rendererInfo = GetLastRendererInfo(_focusSelectRenderer); if (rendererInfo != null) { if (Event.current.control || Event.current.shift) { if (!_selectRenderer.Contains(rendererInfo.renderer)) _selectRenderer.Add(rendererInfo.renderer); else _selectRenderer.Remove(_focusSelectRenderer); } else { _selectRenderer.Clear(); _selectRenderer.Add(rendererInfo.renderer); } Repaint(); _focusSelectRenderer = rendererInfo.renderer; GUIUtility.hotControl = rendererInfo.controlID; GUIUtility.keyboardControl = 0; _guiTime = Time.realtimeSinceStartup; ChangeSelectObject(); } } } Event.current.Use(); } else if (Event.current.keyCode == KeyCode.DownArrow) { _editSelectRenderer = null; if (_keyDampState == KeyBoardDamp.None) { SortingRendererInfo rendererInfo = GetNextRendererInfo(_focusSelectRenderer); if (rendererInfo != null) { if (Event.current.control || Event.current.shift) { if (!_selectRenderer.Contains(rendererInfo.renderer)) _selectRenderer.Add(rendererInfo.renderer); else _selectRenderer.Remove(_focusSelectRenderer); } else { _selectRenderer.Clear(); _selectRenderer.Add(rendererInfo.renderer); } Repaint(); _focusSelectRenderer = rendererInfo.renderer; GUIUtility.hotControl = rendererInfo.controlID; GUIUtility.keyboardControl = 0; _keyDampState = KeyBoardDamp.Damp; _guiTime = Time.realtimeSinceStartup; ChangeSelectObject(); } } else if (_keyDampState == KeyBoardDamp.Damp) { if (Time.realtimeSinceStartup - _guiTime >= 0.5f) { _keyDampState = KeyBoardDamp.Continuous; _guiTime = Time.realtimeSinceStartup; } } else if (_keyDampState == KeyBoardDamp.Continuous) { if (Time.realtimeSinceStartup - _guiTime >= 0.05f) { SortingRendererInfo rendererInfo = GetNextRendererInfo(_focusSelectRenderer); if (rendererInfo != null) { if (Event.current.control || Event.current.shift) { if (!_selectRenderer.Contains(rendererInfo.renderer)) _selectRenderer.Add(rendererInfo.renderer); else _selectRenderer.Remove(_focusSelectRenderer); } else { _selectRenderer.Clear(); _selectRenderer.Add(rendererInfo.renderer); } Repaint(); _focusSelectRenderer = rendererInfo.renderer; GUIUtility.hotControl = rendererInfo.controlID; GUIUtility.keyboardControl = 0; _guiTime = Time.realtimeSinceStartup; ChangeSelectObject(); } } } Event.current.Use(); } } else if (Event.current.type == EventType.KeyUp) { _guiTime = 0; _keyDampState = KeyBoardDamp.None; GUIUtility.hotControl = 0; } }