Пример #1
0
    void Update()
    {
        if (_currentModes.Count == 0 || _isDragging)
        {
            return;
        }

        EditmodeBase mode = _currentEditmode;

        if (CursorNotOverEditor())
        {
            SetCursorTexture(null);
            _currentEditmode = null;
            return;
        }

        bool overObject;

        if (_currentUpdater.OtherObjectHovered(out _hoveredObject, out overObject))
        {
            UpdateHoveredPathObject(_hoveredObject);
        }

        if (overObject)
        {
            _hovered = true;

            for (int i = 0; i < _currentModes.Count; i++)
            {
                if (_currentModes[i].Suscribed && _currentModes[i].CheckCondition(_hoveredObject))
                {
                    mode = _currentModes[i];

                    break;
                }
            }
        }
        else
        {
            if (_hovered)
            {
                _currentCollection.Hover(false);
                _hovered = false;
            }
            mode = _currentCollection.FreeSpaceEditmode;
        }

        if (_currentEditmode != mode)
        {
            _currentEditmode = mode;
            Cursor.SetCursor(_currentEditmode.cursor, _cursorPosition, CursorMode.Auto);

            SetCursorTexture(_currentEditmode.cursor);
        }

        _currentCollection.CheckKeyboardInput();
    }
Пример #2
0
    protected override void SetEditmodeOnUpActions(EditmodeBase mode)
    {
        EditmodeHandlesPoints handlesPoints = mode as EditmodeHandlesPoints;

        mode.SetUpFunction(delegate
        {
            _updater.UpdateInlineArea();
            _hoverData.UnHoverCurrentEverything();
            if (handlesPoints.mode == Mode.movePoint)
            {
                _handlePointsUpdater.UnselectMultiSelection();
            }
        });
    }
Пример #3
0
    /// <summary>
    /// Every mode has its own Condition which must be met before the mode's action is called.
    /// </summary>
    /// <param name="mode"></param>
    private void SetEditmodeCondition(EditmodeBase mode)
    {
        switch (mode.condition)
        {
        case PathCondition.CloseToPath:
            mode.SetPointer(delegate(PathObject item) { return(item.MouseOverPath(ref _hoverData)); }); break;

        case PathCondition.CloseToOtherEndPoint:
            mode.SetPointer(delegate(PathObject item) { return(item.CloseToOtherEndPoint(ref _hoverData)); }); break;

        case PathCondition.CloseToEndPoints:
            mode.SetPointer(delegate(PathObject item) { return(item.CloseToEndPoints(ref _hoverData)); }); break;

        case PathCondition.CloseToPathPoints:
            mode.SetPointer(delegate(PathObject item) { return(item.MouseOverPathPoints(ref _hoverData)); }); break;

        case PathCondition.CloseToPathHandles:
            mode.SetPointer(delegate(PathObject item) { return(item.Selected && item.MouseOverPathHandles(ref _hoverData)); }); break;

        case PathCondition.OverPathObject:
            mode.SetPointer(delegate(ScalableObject item) { return(item.OverPathObject()); }); break;

        case PathCondition.CloseToBoundingBoxUp:
            mode.SetPointer(delegate(ScalableObject item) { return(item.CloseToBoundingBoxPoints(5, 7)); }); break;

        case PathCondition.CloseToBoundingBoxRight:
            mode.SetPointer(delegate(ScalableObject item) { return(item.CloseToBoundingBoxPoints(4, 6)); }); break;

        case PathCondition.CloseToBoundingBoxDiagonal:
            mode.SetPointer(delegate(ScalableObject item) { return(item.CloseToBoundingBoxPoints(0, 1)); }); break;

        case PathCondition.CloseToBoundingBoxDiagonalInv:
            mode.SetPointer(delegate(ScalableObject item) { return(item.CloseToBoundingBoxPoints(2, 3)); }); break;

        case PathCondition.OverBouncingBox:
            mode.SetPointer(delegate(ScalableObject item) { return(item.MouseOverObject()); }); break;

        case PathCondition.FreeSpace:
            mode.SetPointer(delegate(ScalableObject item) { _hoverData.UnHoverCurrentEverything(); return(true); }); break;

        case PathCondition.PathObjectHovered:
            mode.SetPointer(delegate(ScalableObject item) { _hoverData.UnHoverCurrentEverything(); return(Program.Instance.PathObjectHovered()); }); break;
        }
    }
Пример #4
0
    protected override void SetEditmodeClickAndDragActions(EditmodeBase mode)
    {
        EditmodePathObject pathObject = mode as EditmodePathObject;

        switch (pathObject.mode)
        {
        case Mode.select:
            mode.SetClickFunction(_pathObjectUpdater.SelectToMove);
            mode.SetDragFunction(_pathObjectUpdater.Move); break;

        case Mode.scale:
            mode.SetClickFunction(_pathObjectUpdater.SelectToScale);
            mode.SetDragFunction(_pathObjectUpdater.Scale); break;

        case Mode.move:
            mode.SetClickFunction(_pathObjectUpdater.SelectToMove);
            mode.SetDragFunction(_pathObjectUpdater.Move); break;
        }
    }
    protected override void SetEditmodeClickAndDragActions(EditmodeBase mode)
    {
        // pathupdater must be inialized before!
        EditmodePath path = mode as EditmodePath;

        switch (path.mode)
        {
        case Mode.delete:
            mode.SetClickFunction(_pathUpdater.DeleteBezierSegment); break;

        case Mode.add:
            mode.SetClickFunction(_pathUpdater.InsertBezierSegment); break;

        case Mode.close:
            mode.SetClickFunction(_pathUpdater.CloseCurve); break;

        case Mode.selectEndPoint:
            mode.SetClickFunction(_pathUpdater.SelectEndPoint); break;
        }
    }
Пример #6
0
    protected override void SetEditmodeClickAndDragActions(EditmodeBase mode)
    {
        EditmodeHandlesPoints handlesPoints = mode as EditmodeHandlesPoints;

        switch (handlesPoints.mode)
        {
        case Mode.moveHandle:
            mode.SetClickFunction(delegate { _handlePointsUpdater.SelectPathObject(); _handlePointsUpdater.SelectBezierSegment(HandlesPointsUpdater.SelectionMode.Handle); });
            mode.SetDragFunction(delegate { _handlePointsUpdater.UpdateCurrentBezierHandles(); }); break;

        case Mode.movePoint:
            mode.SetClickFunction(delegate { _handlePointsUpdater.SelectPathObject(); _handlePointsUpdater.SelectBezierSegment(HandlesPointsUpdater.SelectionMode.Point); });
            mode.SetDragFunction(_handlePointsUpdater.MovePoint);
            break;

        case Mode.select:
            mode.SetClickFunction(_handlePointsUpdater.SelectPathObject);
            break;
        }
    }
 protected override void SetEditmodeOnUpActions(EditmodeBase mode)
 {
     mode.SetUpFunction(_updater.UpdateInlineArea);
 }
Пример #8
0
 protected override void SetEditmodeOnUpActions(EditmodeBase mode)
 {
     mode.SetUpFunction(_pathObjectUpdater.UpdateInlineAreaRenderer);
 }
Пример #9
0
 protected abstract void SetEditmodeOnUpActions(EditmodeBase mode);
Пример #10
0
 protected abstract void SetEditmodeClickAndDragActions(EditmodeBase mode);