public static ChildConnection Configuration(ItemConnector connector, Transform target, Interactable addTo)
    {
        ChildConnection conn = addTo.gameObject.AddComponent <ChildConnection>();

        conn.Connector = connector;
        conn.target    = target.transform;

        conn.Init();

        return(conn);
    }
Beispiel #2
0
 public void AddLastChild(double degree = 0, double length = 100)
 {
     if (ChildConnection != null)
     {
         ChildConnection.AddLastChild(degree, length);
     }
     else
     {
         AddChild(degree, length);
     }
 }
Beispiel #3
0
 public static ChildConnection AddChildConnection(ItemConnector connector, Transform target, Interactable addTo)
 {
     return(ChildConnection.Configuration(connector, target, addTo));
 }
Beispiel #4
0
        public IEnumerable <UIElement> GetDrawing()
        {
            var DrawingElements = new List <UIElement>();

            var            tran      = new TranslateTransform(Anchor.X - Length / 10, Anchor.Y - height / 2);
            var            transform = new RotateTransform(RotationDegree, Anchor.X, Anchor.Y);
            TransformGroup t         = new TransformGroup
            {
                Children = new TransformCollection(new Transform[] { tran, transform })
            };
            var rect = new Rectangle()
            {
                Width = Length, Height = height, Fill = Brushes.LightCoral, RenderTransform = t
            };

            DrawingElements.Add(rect);
            var pin = new Ellipse()
            {
                Tag = StickPointInfos[0], Width = 10, Height = 10, Fill = StickPointInfos[0].IsSelected ? Brushes.Orange : Brushes.DarkSlateBlue, Margin = new Thickness(Anchor.X - 5, Anchor.Y - 5, 0, 0)
            };

            pin.MouseEnter += (sender, args) =>
            {
                if (((StickPointInfo)pin.Tag).IsSelected == false)
                {
                    pin.Fill = Brushes.LightCyan;
                }
            };
            pin.MouseLeave += (sender, args) =>
            {
                if (((StickPointInfo)pin.Tag).IsSelected == false)
                {
                    pin.Fill = Brushes.DarkSlateBlue;
                }
            };
            pin.MouseUp += (sender, args) =>
            {
                if (((StickPointInfo)pin.Tag).IsSelected == false)
                {
                    pin.Fill = Brushes.Orange;
                    ((StickPointInfo)pin.Tag).IsSelected = true;
                }
                else
                {
                    pin.Fill = Brushes.DarkSlateBlue;
                    ((StickPointInfo)pin.Tag).IsSelected = false;
                }
                //((StickPointInfo)pin.Tag).IsSelected = !((StickPointInfo)pin.Tag).IsSelected;
            };

            DrawingElements.Add(pin);

            if (ChildConnection != null)
            {
                DrawingElements.AddRange(ChildConnection.GetDrawing());
            }
            else
            {
                var endPoint = new Point(Anchor.X + Length * 0.8 * Math.Cos(RotationDegree * Math.PI / 180),
                                         Anchor.Y + Length * 0.8 * Math.Sin(RotationDegree * Math.PI / 180));
                var pinEnd = new Ellipse()
                {
                    Tag = StickPointInfos[1], Width = 10, Height = 10, Fill = StickPointInfos[1].IsSelected ? Brushes.Orange : Brushes.DarkSlateBlue, Margin = new Thickness(endPoint.X - 5, endPoint.Y - 5, 0, 0)
                };

                pinEnd.MouseEnter += (sender, args) =>
                {
                    if (((StickPointInfo)pinEnd.Tag).IsSelected == false)
                    {
                        pinEnd.Fill = Brushes.LightCyan;
                    }
                };
                pinEnd.MouseLeave += (sender, args) =>
                {
                    if (((StickPointInfo)pinEnd.Tag).IsSelected == false)
                    {
                        pinEnd.Fill = Brushes.DarkSlateBlue;
                    }
                };
                pinEnd.MouseUp += (sender, args) =>
                {
                    if (((StickPointInfo)pinEnd.Tag).IsSelected == false)
                    {
                        pinEnd.Fill = Brushes.Orange;
                        ((StickPointInfo)pinEnd.Tag).IsSelected = true;
                    }
                    else
                    {
                        pinEnd.Fill = Brushes.DarkSlateBlue;
                        ((StickPointInfo)pinEnd.Tag).IsSelected = false;
                    }
                    //((StickPointInfo)pinEnd.Tag).IsSelected = !((StickPointInfo)pinEnd.Tag).IsSelected;
                };

                DrawingElements.Add(pinEnd);
            }

            return(DrawingElements);
        }