Skip to content

Commit 353ff46

Browse files
committed
fix for cutter and connect's
1 parent 88a6fb2 commit 353ff46

8 files changed

Lines changed: 45 additions & 14 deletions

File tree

SimpleStateMachineNodeEditor/Helpers/MyUtils.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,6 @@ private static double[] cubicRoots(double a, double b, double c, double d)
201201
//Check on intersections curve Bezier and line
202202
public static bool ComputeIntersections(MyPoint bezierStartPoint, MyPoint bezierPoint1, MyPoint bezierPoint2, MyPoint bezierEndPoint, MyPoint lineStartPoint, MyPoint lineEndPoint)
203203
{
204-
205204
// coefficients of line
206205
double A = lineEndPoint.Y - lineStartPoint.Y;// A = y2 - y1
207206
double B = lineStartPoint.X - lineEndPoint.X;// B = x1 - x2
@@ -251,6 +250,7 @@ public static bool ComputeIntersections(MyPoint bezierStartPoint, MyPoint bezier
251250
if (t < 0 || t > 1.0 || s < 0 || s > 1.0)
252251
{
253252
continue;
253+
254254
}
255255

256256
X.Add(p);

SimpleStateMachineNodeEditor/Styles/Colors.xaml

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,17 +53,26 @@
5353

5454
<SolidColorBrush x:Key="ColorRightConnectorEllipseStaticBackground" Color="#FFF4F4F5"/>
5555
<SolidColorBrush x:Key="ColorRightConnectorEllipseStaticBorder" Color="Black"/>
56-
<SolidColorBrush x:Key="ColorRightConnectorEllipseMouseOverBackground" Color="#FFF4F4F5"/>
56+
<!--<SolidColorBrush x:Key="ColorRightConnectorEllipseMouseOverBackground" Color="#FFF4F4F5"/>
5757
<SolidColorBrush x:Key="ColorRightConnectorEllipseMouseOverBorder" Color="#FFF4F4F5"/>
5858
5959
<SolidColorBrush x:Key="ColorRightConnectorEllipseMouseEnterBackground" Color="#FFF4F4F5"/>
6060
<SolidColorBrush x:Key="ColorRightConnectorEllipseMouseEnterBorder" Color="#FFF4F4F5"/>
61-
<SolidColorBrush x:Key="ColorRightConnectorEllipseMouseLeaveBackground" Color="#FFF4F4F5"/>
61+
<SolidColorBrush x:Key="ColorRightConnectorEllipseMouseLeaveBackground" Color="#FFF4F4F5"/>-->
62+
63+
<SolidColorBrush x:Key="ColorRightConnectorEllipseMouseOverBackground" Color="Red"/>
64+
<SolidColorBrush x:Key="ColorRightConnectorEllipseMouseOverBorder" Color="Red"/>
65+
<SolidColorBrush x:Key="ColorRightConnectorEllipseMouseEnterBackground" Color="Red"/>
66+
<SolidColorBrush x:Key="ColorRightConnectorEllipseMouseEnterBorder" Color="Red"/>
67+
<SolidColorBrush x:Key="ColorRightConnectorEllipseMouseLeaveBackground" Color="Red"/>
6268
<SolidColorBrush x:Key="ColorRightConnectorEllipseMouseLeaveBorder" Color="Black"/>
63-
<SolidColorBrush x:Key="ColorRightConnectorEllipseDropEnterBackground" Color="#FFF4F4F5"/>
69+
<!--<SolidColorBrush x:Key="ColorRightConnectorEllipseDropEnterBackground" Color="#FFF4F4F5"/>
6470
<SolidColorBrush x:Key="ColorRightConnectorEllipseDropEnterBorder" Color="#FFF4F4F5"/>
65-
<SolidColorBrush x:Key="ColorRightConnectorEllipseDropLeaveBackground" Color="#FFF4F4F5"/>
66-
<SolidColorBrush x:Key="ColorRightConnectorEllipseDropLeaveBorder" Color="Black"/>
71+
<SolidColorBrush x:Key="ColorRightConnectorEllipseDropLeaveBackground" Color="#FFF4F4F5"/>-->
72+
<SolidColorBrush x:Key="ColorRightConnectorEllipseDropEnterBackground" Color="Red"/>
73+
<SolidColorBrush x:Key="ColorRightConnectorEllipseDropEnterBorder" Color="Red"/>
74+
<SolidColorBrush x:Key="ColorRightConnectorEllipseDropLeaveBackground" Color="Red"/>
75+
<SolidColorBrush x:Key="ColorRightConnectorEllipseDropLeaveBorder" Color="Black"/>
6776

6877
<!--#endregion RightConnectorEllipse-->
6978

SimpleStateMachineNodeEditor/View/ViewConnect.xaml.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ public ViewConnect()
5151
this.OneWayBind(this.ViewModel, x => x.StrokeDashArray, x => x.Path.StrokeDashArray).DisposeWith(disposable);
5252

5353
this.OneWayBind(this.ViewModel, x => x.StrokeThickness, x => x.Path.StrokeThickness).DisposeWith(disposable);
54+
5455
});
5556
}
5657
}

SimpleStateMachineNodeEditor/View/ViewCutter.xaml.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@ private void SetupBinding()
6161
// Точка в которую приходит линия среза
6262
this.OneWayBind(this.ViewModel, x => x.EndPoint.Value.Y, x => x.Line.Y2).DisposeWith(disposable);
6363

64+
this.OneWayBind(this.ViewModel, x => x.StrokeThickness, x => x.Line.StrokeThickness).DisposeWith(disposable);
65+
6466
this.WhenAnyValue(x => x.Visibility).Subscribe(_ => Update()).DisposeWith(disposable);
6567

6668
});
@@ -92,7 +94,7 @@ private void OnMouseMoves(MouseEventArgs e)
9294
{
9395
//Ищем Canvas
9496
ViewNodesCanvas NodesCanvas = MyUtils.FindParent<ViewNodesCanvas>(this);
95-
ViewModel.EndPoint.Set(e.GetPosition(NodesCanvas));
97+
ViewModel.EndPoint.Set(e.GetPosition(NodesCanvas.Grid));
9698
e.Handled = true;
9799

98100
}

SimpleStateMachineNodeEditor/View/ViewLeftConnector.xaml.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ private void OnEventDrop(DragEventArgs e)
9494
void UpdatePosition()
9595
{
9696
// Координата центра
97-
Point InputCenter = Form.TranslatePoint(new Point(Form.Width / 2, Form.Height / 2), this);
97+
Point InputCenter = Form.TranslatePoint(new Point(1, Form.Height / 2), this);
9898

9999
//Ищем Canvas
100100
ViewNodesCanvas NodesCanvas = MyUtils.FindParent<ViewNodesCanvas>(this);

SimpleStateMachineNodeEditor/View/ViewRightConnector.xaml.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ void UpdatePositionConnectPoin()
234234
if (this.IsVisible)
235235
{
236236
// Координата центра
237-
positionConnectPoint = Form.TranslatePoint(new Point(Form.Width / 2, Form.Height / 2), this);
237+
positionConnectPoint = Form.TranslatePoint(new Point(Form.Width-1, Form.Height/2), this);
238238

239239
//Ищем Canvas
240240
ViewNodesCanvas NodesCanvas = MyUtils.FindParent<ViewNodesCanvas>(this);

SimpleStateMachineNodeEditor/ViewModel/ViewModelCutter.cs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
using ReactiveUI;
22
using ReactiveUI.Fody.Helpers;
33

4+
5+
using System;
6+
using System.Reactive.Linq;
7+
48
using SimpleStateMachineNodeEditor.Helpers;
59
using SimpleStateMachineNodeEditor.Helpers.Commands;
610

@@ -23,9 +27,17 @@ public class ViewModelCutter : ReactiveObject
2327
/// </summary>
2428
[Reactive] public MyPoint EndPoint { get; set; } = new MyPoint();
2529

26-
public ViewModelCutter()
30+
[Reactive] public ViewModelNodesCanvas NodesCanvas { get; set; }
31+
32+
[Reactive] public double StrokeThickness { get; set; } = 1;
33+
34+
public ViewModelCutter(ViewModelNodesCanvas nodesCanvas)
2735
{
2836
SetupCommands();
37+
38+
this.WhenAnyValue(x => x.NodesCanvas.Scale.Value).Subscribe(value => StrokeThickness = value);
39+
40+
NodesCanvas = nodesCanvas;
2941
}
3042
#region Setup Commands
3143
public SimpleCommandWithParameter<MyPoint> CommandStartCut { get; set; }

SimpleStateMachineNodeEditor/ViewModel/ViewModelNodesCanvas.cs

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
using SimpleStateMachineNodeEditor.Helpers;
1313
using SimpleStateMachineNodeEditor.Helpers.Commands;
1414
using SimpleStateMachineNodeEditor.Helpers.Transformations;
15+
using System.IO;
1516

1617
namespace SimpleStateMachineNodeEditor.ViewModel
1718
{
@@ -20,7 +21,7 @@ public class ViewModelNodesCanvas : ReactiveObject
2021
public IObservableCollection<ViewModelConnect> Connects = new ObservableCollectionExtended<ViewModelConnect>();
2122
public IObservableCollection<ViewModelNode> Nodes = new ObservableCollectionExtended<ViewModelNode>();
2223
[Reactive] public ViewModelSelector Selector { get; set; } = new ViewModelSelector();
23-
[Reactive] public ViewModelCutter Cutter { get; set; } = new ViewModelCutter();
24+
[Reactive] public ViewModelCutter Cutter { get; set; }
2425
[Reactive] public ViewModelConnect DraggedConnect { get; set; }
2526
[Reactive] public ViewModelConnector ConnectorPreviewForDrop { get; set; }
2627
[Reactive] public ViewModelNode CurrentNode { get; set; }
@@ -34,6 +35,8 @@ public ViewModelNodesCanvas()
3435
{
3536
SetupCommands();
3637
SetupNodes();
38+
39+
Cutter = new ViewModelCutter(this);
3740
}
3841

3942
#region Setup Nodes
@@ -243,10 +246,14 @@ private void Zoom(object delta)
243246
}
244247
private void CutterIntersect()
245248
{
246-
MyPoint cutterStartPointDiagonal = MyUtils.GetStartPointDiagonal(Cutter.StartPoint, Cutter.EndPoint) / Scale.Value;
247-
MyPoint cutterEndPointDiagonal = MyUtils.GetEndPointDiagonal(Cutter.StartPoint, Cutter.EndPoint) / Scale.Value;
249+
//MyPoint cutterStartPoint = Cutter.StartPoint / Scale.Value;
250+
//MyPoint cutterEndPoint = Cutter.EndPoint / Scale.Value;
251+
MyPoint cutterStartPoint = Cutter.StartPoint;
252+
MyPoint cutterEndPoint = Cutter.EndPoint;
253+
//some optimizations
248254
var connects = Connects.Where(x => MyUtils.Intersect(MyUtils.GetStartPointDiagonal(x.StartPoint, x.EndPoint), MyUtils.GetEndPointDiagonal(x.StartPoint, x.EndPoint),
249-
cutterStartPointDiagonal, cutterEndPointDiagonal));
255+
MyUtils.GetStartPointDiagonal(Cutter.StartPoint, Cutter.EndPoint), MyUtils.GetEndPointDiagonal(Cutter.StartPoint, Cutter.EndPoint)));
256+
//var connects = Connects;
250257
foreach (var connect in Connects)
251258
{
252259
connect.Selected = false;

0 commit comments

Comments
 (0)