private void OnMouseDown(Event inputEvent) { if (inputEvent.button == 0) { inputEvent.Use(); _needsRepaint = true; OnLeftMouseDown(inputEvent); } else if (inputEvent.button == 1) { inputEvent.Use(); OnRightMouseDown(inputEvent); } else if (inputEvent.button == 2) { inputEvent.Use(); _needsRepaint = true; OnMiddleMouseDown(inputEvent); } else { _dragMode = eDragType.NotDragging; } }
protected virtual void OnLeftMouseDown(Event inputEvent) { JSONObjectEditorGUI <T> clickedOnObject = null; Vector2 gridPosition = GetEditorPosition(inputEvent.mousePosition); for (int i = 0; i < _editableObjects.Count; i++) { JSONObjectEditorGUI <T> evnt = (JSONObjectEditorGUI <T>)_editableObjects[i]; if (evnt.GetBounds().Contains(gridPosition)) { clickedOnObject = evnt; break; } } if (inputEvent.shift || inputEvent.control) { if (clickedOnObject != null) { if (_selectedObjects.Contains(clickedOnObject)) { _selectedObjects.Remove(clickedOnObject); clickedOnObject = null; } else { _selectedObjects.Add(clickedOnObject); } } } else if (clickedOnObject == null) { _selectedObjects.Clear(); } else if (!_selectedObjects.Contains(clickedOnObject)) { _selectedObjects = new List <ScriptableObject>() { clickedOnObject }; } //Dragging { GetEditorWindow().OnSelectObject(clickedOnObject); _draggedObject = clickedOnObject; _dragMode = eDragType.LeftClick; _dragPos = inputEvent.mousePosition; _dragAreaRect = new Rect(-1.0f, -1.0f, 0.0f, 0.0f); //Save state before dragging foreach (JSONObjectEditorGUI <T> evnt in _selectedObjects) { evnt.SaveUndoState(); } } }
protected virtual void OnStopDragging(Event inputEvent) { if (_dragMode != eDragType.NotDragging) { if (_dragMode == eDragType.LeftClick) { Undo.RegisterCompleteObjectUndo(_selectedObjects.ToArray(), "Move Objects(s)"); foreach (JSONObjectEditorGUI <T> evnt in _selectedObjects) { evnt.SaveUndoState(); } } SortObjects(); inputEvent.Use(); _dragMode = eDragType.NotDragging; _needsRepaint = true; } }
protected virtual void OnMiddleMouseDown(Event inputEvent) { _dragMode = eDragType.MiddleMouseClick; _dragPos = inputEvent.mousePosition; _dragAreaRect = new Rect(-1.0f, -1.0f, 0.0f, 0.0f); }