Exemple #1
0
        public IEnumerator <object> Task()
        {
            while (true)
            {
                if (!SceneView.Instance.InputArea.IsMouseOverThisOrDescendant())
                {
                    yield return(null);

                    continue;
                }
                var grids         = Document.Current.SelectedNodes().Editable().OfType <NineGrid>();
                var mousePosition = sv.MousePosition;
                foreach (var grid in grids)
                {
                    foreach (var line in NineGridLine.GetForNineGrid(grid))
                    {
                        if (line.HitTest(mousePosition, sv.Scene))
                        {
                            Utils.ChangeCursorIfDefault(MouseCursor.Hand);
                            if (sv.Input.ConsumeKeyPress(Key.Mouse0))
                            {
                                yield return(Drag(line));
                            }
                            goto Next;
                        }
                    }
                }
Next:
                yield return(null);
            }
        }
        private static void Render(Widget canvas)
        {
            if (Document.Current.PreviewScene)
            {
                return;
            }
            var grids = Document.Current.SelectedNodes().Editable().OfType <NineGrid>();

            foreach (var grid in grids)
            {
                foreach (var line in NineGridLine.GetForNineGrid(grid))
                {
                    line.Render(canvas);
                }
            }
        }
Exemple #3
0
        private static void Render(Widget canvas)
        {
            if (Core.Document.Current.ExpositionMode || Core.Document.Current.PreviewAnimation)
            {
                return;
            }
            var grids = Core.Document.Current.SelectedNodes().Editable().OfType <NineGrid>();

            foreach (var grid in grids)
            {
                foreach (var line in NineGridLine.GetForNineGrid(grid))
                {
                    line.Render(canvas);
                }
            }
        }
Exemple #4
0
        private IEnumerator <object> Drag(NineGridLine nineGridLine)
        {
            var   transform     = sv.Scene.CalcTransitionToSpaceOf(Document.Current.Container.AsWidget);
            var   initMousePos  = sv.MousePosition * transform;
            var   dir           = nineGridLine.GetDirection();
            float value         = nineGridLine.Value;
            var   nineGrid      = nineGridLine.Owner;
            var   propertyName  = nineGridLine.PropertyName;
            var   maxValue      = nineGridLine.MaxValue;
            var   size          = nineGridLine.TextureSize * nineGridLine.Scale;
            float clipTolerance = 15 / size;

            float[] clipPositions = { 0, maxValue, maxValue / 3, maxValue / 3 * 2 };
            using (Document.Current.History.BeginTransaction()) {
                while (sv.Input.IsMousePressed())
                {
                    Document.Current.History.RollbackTransaction();

                    Utils.ChangeCursorIfDefault(MouseCursor.Hand);
                    var curMousePos = sv.MousePosition * transform;
                    var diff        = Vector2.DotProduct((curMousePos - initMousePos), dir) / size;
                    if (Mathf.Abs(diff) > Mathf.ZeroTolerance)
                    {
                        float newValue = value + diff;
                        newValue = Mathf.Clamp(newValue, Mathf.ZeroTolerance, maxValue);
                        if (sv.Input.IsKeyPressed(Key.Shift))
                        {
                            foreach (var origin in clipPositions)
                            {
                                newValue = newValue.Snap(origin, clipTolerance);
                            }
                        }
                        Core.Operations.SetAnimableProperty.Perform(nineGrid,
                                                                    propertyName, newValue, CoreUserPreferences.Instance.AutoKeyframes);
                    }
                    yield return(null);
                }
                sv.Input.ConsumeKey(Key.Mouse0);
                Document.Current.History.CommitTransaction();
            }
        }