public static EditState GetState() { if (state == null) { state = new EditState(); } return(state); }
private void ComputeFocus(int x, int y) { focusObject = (focusObject == null) ? drawingCanvas.GetLastIntersection(x, y) : focusObject; if (focusObject != null) { if (lastFocusObject == null || focusObject == lastFocusObject && prepareComposite.Count < 2) { propertiesPanel.SetDrawable(focusObject); focusObject.SetState(EditState.GetState()); if (focusObject.ChildCount > 0) { OnCompositeReady(); } } else { lastFocusObject?.SetState(ActiveState.GetState()); } if (!prepareComposite.Contains(focusObject)) { prepareComposite.AddLast(focusObject); if (prepareComposite.Count > 1) { propertiesPanel.Hide(); OnCompositeReady(); focusObject.SetState(ActiveState.GetState()); } } } else { propertiesPanel.Hide(); SetPreparedState(IdleState.GetState()); prepareComposite.Clear(); OnCompositeNotReady?.Invoke(); } }