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

                    continue;
                }
                var bone = Document.Current.SelectedNodes().Editable().OfType <Bone>().FirstOrDefault();
                if (bone != null)
                {
                    var entry = bone.Parent.AsWidget.BoneArray[bone.Index];
                    var t     = Document.Current.Container.AsWidget.LocalToWorldTransform;
                    var hull  = BonePresenter.CalcRect(bone) * t;
                    if (hull.Contains(sv.MousePosition) && !sv.Input.IsKeyPressed(Key.Control))
                    {
                        Utils.ChangeCursorIfDefault(Cursors.Rotate);
                        if (sv.Input.ConsumeKeyPress(Key.Mouse0))
                        {
                            yield return(Rotate(bone, entry));
                        }
                    }
                }
                yield return(null);
            }
        }
            protected override bool ProbeInternal(Bone bone, Vector2 point)
            {
                var t    = Document.Current.Container.AsWidget.LocalToWorldTransform;
                var hull = BonePresenter.CalcHull(bone) * t;

                return(hull.Contains(point));
            }
Exemple #3
0
 public IEnumerator <object> Task()
 {
     while (true)
     {
         var bones = Document.Current.SelectedNodes().Editable().OfType <Bone>().ToList();
         if (bones.Count == 1)
         {
             var t    = Document.Current.Container.AsWidget.CalcTransitionToSpaceOf(sv.Scene);
             var hull = BonePresenter.CalcHull(bones.First());
             for (int i = 0; i < 4; i++)
             {
                 hull[i] = t * hull[i];
             }
             if (hull.Contains(sv.MousePosition) && sv.Input.IsKeyPressed(Key.Shift))
             {
                 Utils.ChangeCursorIfDefault(MouseCursor.SizeNS);
                 if (sv.Input.ConsumeKeyPress(Key.Mouse0))
                 {
                     yield return(Resize(bones.First()));
                 }
             }
         }
         yield return(null);
     }
 }
Exemple #4
0
            protected override bool ProbeInternal(Bone bone, Vector2 point)
            {
                var t    = SceneView.Instance.Scene.CalcTransitionToSpaceOf(Document.Current.Container.AsWidget).CalcInversed();
                var hull = BonePresenter.CalcHull(bone) * t;

                return(hull.Contains(point));
            }
        public IEnumerator <object> Task()
        {
            while (true)
            {
                if (!SceneView.Instance.InputArea.IsMouseOverThisOrDescendant())
                {
                    yield return(null);

                    continue;
                }
                var bones = Document.Current.SelectedNodes().Editable().OfType <Bone>().ToList();
                if (bones.Count == 1)
                {
                    var t    = Document.Current.Container.AsWidget.LocalToWorldTransform;
                    var hull = BonePresenter.CalcHull(bones.First());
                    for (int i = 0; i < 4; i++)
                    {
                        hull[i] = t * hull[i];
                    }
                    if (hull.Contains(sv.MousePosition) && sv.Input.IsKeyPressed(Key.Shift))
                    {
                        Utils.ChangeCursorIfDefault(MouseCursor.SizeNS);
                        if (sv.Input.ConsumeKeyPress(Key.Mouse0))
                        {
                            yield return(Resize(bones.First()));
                        }
                    }
                }
                yield return(null);
            }
        }
            protected override bool ProbeInternal(Bone bone, Rectangle rectangle)
            {
                var t    = Document.Current.Container.AsWidget.LocalToWorldTransform;
                var hull = BonePresenter.CalcHull(bone);

                for (int i = 0; i < 4; i++)
                {
                    if (rectangle.Contains(hull[i] * t))
                    {
                        return(true);
                    }
                }
                var center = (hull.V1 * t + hull.V3 * t) / 2;

                return(rectangle.Contains(center));
            }
Exemple #7
0
            protected override bool ProbeInternal(Bone bone, Rectangle rectangle)
            {
                var t    = SceneView.Instance.Scene.CalcTransitionToSpaceOf(Document.Current.Container.AsWidget).CalcInversed();
                var hull = BonePresenter.CalcHull(bone);

                for (int i = 0; i < 4; i++)
                {
                    if (rectangle.Contains(hull[i] * t))
                    {
                        return(true);
                    }
                }
                var center = (hull.V1 * t + hull.V3 * t) / 2;

                return(rectangle.Contains(center));
            }
Exemple #8
0
 public IEnumerator <object> Task()
 {
     while (true)
     {
         var bone = Document.Current.SelectedNodes().Editable().OfType <Bone>().FirstOrDefault();
         if (bone != null)
         {
             var entry = bone.Parent.AsWidget.BoneArray[bone.Index];
             var t     = Document.Current.Container.AsWidget.CalcTransitionToSpaceOf(sv.Scene);
             var hull  = BonePresenter.CalcRect(bone) * t;
             if (hull.Contains(sv.MousePosition) && !sv.Input.IsKeyPressed(Key.Control))
             {
                 Utils.ChangeCursorIfDefault(Cursors.Rotate);
                 if (sv.Input.ConsumeKeyPress(Key.Mouse0))
                 {
                     yield return(Rotate(bone, entry));
                 }
             }
         }
         yield return(null);
     }
 }