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, Vector2 point) { var t = Document.Current.Container.AsWidget.LocalToWorldTransform; var hull = BonePresenter.CalcHull(bone) * t; return(hull.Contains(point)); }
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)); }
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)); }
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)); }