static void Main(string[] args)
        {
            CoordinateSystemUI UI          = new CoordinateSystemUI();
            List <Coordinate>  coordinates = UI.GetTestСoordinates();

            UI.ShowInformationRectangles(new CoordinateSystem().FindRectangles(coordinates), coordinates);
        }
Esempio n. 2
0
    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);
    }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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;
            }
        }
Esempio n. 5
0
        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();
            }
        }
Esempio n. 6
0
 private static void StartDrag(ref PCad.InteractionState interactionState,
                               CoordinateSystemUI coordinateSystemUI)
 {
     interactionState.draggedCoordinate = interactionState.hoveredCoordinate.Value.coordinate;
     CoordinateManipulation.TryGetCoordinateAtPosition(coordinateSystemUI);
 }