static void Main(string[] args) { CoordinateSystemUI UI = new CoordinateSystemUI(); List <Coordinate> coordinates = UI.GetTestСoordinates(); UI.ShowInformationRectangles(new CoordinateSystem().FindRectangles(coordinates), coordinates); }
public static (Coordinate coordinate, Vec.AxisID axis)? TryGetCoordinateAtPosition( CoordinateSystemUI coordinateSystemUI) { var dragged = TryToHitCoordinate( coordinateSystemUI, new Vector2(Input.mousePosition.x, Input.mousePosition.y) - 0.5f * new Vector2(Screen.width, Screen.height) ); return(dragged); }
public static void Update(ref PCad.Model model, CoordinateSystemUI coordinateSystemUI, bool isMouseOnDrawArea, Action saveToHistory) { model.InteractionState.hoveredCoordinate = CoordinateManipulation.TryGetCoordinateAtPosition(coordinateSystemUI); NumpadInput.UpdateNumpadInput(ref model.InteractionState.keyboardInputModel, model.Sketch.coordinateSystem.GetAllParameters() ); model.InteractionState.focusPosition = CoordinateCreation.UpdateCursorPosition( model.InteractionState.focusPosition, model.Sketch.coordinateSystem, model.InteractionState.keyboardInputModel ); if (model.InteractionState.focusPosition == null) { Debug.LogError($"Focus Position should always be != null if state == DrawRectangles"); return; } switch (model.InteractionState.CurrentMouseState) { case MouseInput.MouseState.None: case MouseInput.MouseState.PrimaryHold: case MouseInput.MouseState.PrimaryUp: break; case MouseInput.MouseState.PrimaryDown: if (isMouseOnDrawArea || Input.GetKeyDown(KeyCode.Return)) { AddPointToDrawing(ref model, saveToHistory); } break; case MouseInput.MouseState.SetAnchorDown: var mousePosition = MouseInput.RaycastPosition; model.Sketch.coordinateSystem.SetAnchorPosition(mousePosition); break; case MouseInput.MouseState.DeleteDown: CoordinateCreation.DeletePositionAtMousePosition(model.Sketch.coordinateSystem); break; default: throw new ArgumentOutOfRangeException(); } UpdateGeometry(ref model.InteractionState.incompleteGeometry, model.InteractionState.focusPosition); }
private static void UpdateHoveredCoordinate(ref PCad.InteractionState interactionState, CoordinateSystemUI coordinateSystemUI) { interactionState.hoveredCoordinate = CoordinateManipulation.TryGetCoordinateAtPosition(coordinateSystemUI); if (interactionState.hoveredCoordinate.HasValue && !(interactionState.hoveredCoordinate.Value.coordinate is Mue)) { // quick fix: only mue coordinates can be transformed interactionState.hoveredCoordinate = null; } }
public static void Update(ref PCad.InteractionState interactionState, ref SketchModel sketchModel, CoordinateSystemUI coordinateSystemUI, bool isMouseOnDrawArea, Action saveToHistory) { UpdateHoveredCoordinate(ref interactionState, coordinateSystemUI); switch (interactionState.CurrentMouseState) { case MouseInput.MouseState.None: case MouseInput.MouseState.SetAnchorDown: case MouseInput.MouseState.DeleteDown: break; case MouseInput.MouseState.PrimaryDown: if (interactionState.hoveredCoordinate.HasValue && isMouseOnDrawArea) { StartDrag(ref interactionState, coordinateSystemUI); } break; case MouseInput.MouseState.PrimaryHold: if (interactionState.draggedCoordinate != null) { UpdateDrag(ref interactionState, ref sketchModel); } break; case MouseInput.MouseState.PrimaryUp: if (interactionState.draggedCoordinate != null) { saveToHistory(); interactionState.draggedCoordinate = null; } break; default: throw new ArgumentOutOfRangeException(); } }
private static void StartDrag(ref PCad.InteractionState interactionState, CoordinateSystemUI coordinateSystemUI) { interactionState.draggedCoordinate = interactionState.hoveredCoordinate.Value.coordinate; CoordinateManipulation.TryGetCoordinateAtPosition(coordinateSystemUI); }