Esempio n. 1
0
        private void Shape_MouseMove(ViewGeometry viewGeometry, object sender, MouseEventArgs e)
        {
            if (isDragging && sender != null)
            {
                FrameworkElement element = (FrameworkElement)sender;
                Point            point   = e.GetPosition(grdHolder);

                double xPosition = point.X - selectPosition.X;
                double yPosition = point.Y - selectPosition.Y;

                double maxWidth  = grdHolder.ActualWidth - 30;
                double maxHeight = grdHolder.ActualHeight - 50;

                dragDistance = Math.Abs(xPosition - refreshPosition.X) + Math.Abs(yPosition - refreshPosition.Y);
                viewGeometry.Move(Math.Min(maxWidth, Math.Max(0, xPosition)), Math.Min(maxHeight, Math.Max(0, yPosition)));

                if (dragDistance >= dragCollisionRefresh)
                {
                    refreshPosition = new Point(xPosition, yPosition);
                    viewGeometry.OnCheckCollision();
                    dragDistance = 0;
                }
                this.rectangleInfo.UpdateData(element.Name, viewGeometry);
            }
        }
Esempio n. 2
0
 private void OutlineEdges(ViewGeometry viewGeometry)
 {
     foreach (var vertex in viewGeometry.Geometry.Vertices)
     {
         foreach (var connection in vertex.VertexConnections)
         {
             DisplayRayLine(connection.Vertex1.Position.Point, connection.Vertex2.Position.Point, "TraceLine", connection.Name);
         }
     }
 }
Esempio n. 3
0
 public void UpdateData(string name, ViewGeometry viewGeometry)
 {
     this.lblName.Text   = "Name: " + name;
     this.lbl11.Text     = "11: X:" + viewGeometry.Geometry.Rect.TopLeft.X.ToString("0.0") + " Y:" + viewGeometry.Geometry.Rect.TopLeft.Y.ToString("0.0");
     this.lbl12.Text     = "12: X:" + viewGeometry.Geometry.Rect.TopRight.X.ToString("0.0") + " Y:" + viewGeometry.Geometry.Rect.TopRight.Y.ToString("0.0");
     this.lbl21.Text     = "21: X:" + viewGeometry.Geometry.Rect.BottomLeft.X.ToString("0.0") + " Y:" + viewGeometry.Geometry.Rect.BottomLeft.Y.ToString("0.0");
     this.lbl22.Text     = "22: X:" + viewGeometry.Geometry.Rect.BottomRight.X.ToString("0.0") + " Y:" + viewGeometry.Geometry.Rect.BottomRight.Y.ToString("0.0");
     this.lblHeight.Text = "Height: " + viewGeometry.Geometry.Rect.Height.ToString("0.0");
     this.lblWidth.Text  = "Width: " + viewGeometry.Geometry.Rect.Width.ToString("0.0");
 }
Esempio n. 4
0
        private void Shape_MouseUp(ViewGeometry viewGeometry, object sender, MouseButtonEventArgs e)
        {
            isDragging = false;
            FrameworkElement element = (FrameworkElement)sender;

            if (element != null)
            {
                OutlineEdges(viewGeometry);
                dragDistance = 0;

                element.ReleaseMouseCapture();

                this.rectangleInfo.UpdateData(element.Name, viewGeometry);
            }
        }
Esempio n. 5
0
        private void Shape_MouseDown(ViewGeometry viewGeometry, object sender, MouseButtonEventArgs e)
        {
            FrameworkElement element = (FrameworkElement)sender;

            if (element != null)
            {
                element.CaptureMouse();
                selectPosition  = e.GetPosition(element);
                refreshPosition = selectPosition;
                isDragging      = true;

                this.rectangleInfo.UpdateData(element.Name, viewGeometry);
                if (dragDistance > dragCollisionRefresh)
                {
                    dragDistance = 0;
                }
            }
        }
Esempio n. 6
0
        private void Window_Loaded(object sender, EventArgs e)
        {
            CollisionMap = new List <ViewGeometry>();

            Action <ViewGeometry.ViewGeometryHolder> onMouseDown = (item) =>
            {
                Shape_MouseDown(item.ViewGeometry, item.Element, (MouseButtonEventArgs)item.MouseEventArgs);
                DrawBoundingBox("", item.ViewGeometry.Geometry.Rect);
            };
            Action <ViewGeometry.ViewGeometryHolder> onMouseUp = (item) =>
            {
                Shape_MouseUp(item.ViewGeometry, item.Element, (MouseButtonEventArgs)item.MouseEventArgs);
                OutlineEdges(item.ViewGeometry);
                DrawBoundingBox("", item.ViewGeometry.Geometry.Rect);
            };
            Action <ViewGeometry.ViewGeometryHolder> onMouseMove = (item) =>
            {
                Shape_MouseMove(item.ViewGeometry, item.Element, (MouseEventArgs)item.MouseEventArgs);
                if (isDragging)
                {
                    OutlineEdges(item.ViewGeometry);
                    DrawBoundingBox("", item.ViewGeometry.Geometry.Rect);
                }
            };

            CollisionManager collisionManager = new CollisionManager(2);

            collisionManager.OnRayLineCreated += DisplayRayLine;

            ViewGeometry viewGeometry1 = new ViewGeometry(CollisionMap, collisionManager).AddShape(rctOne, new DynamicShape(new GeometryViewAdapter(rctOne)));

            viewGeometry1.MouseDown += onMouseDown;
            viewGeometry1.MouseUp   += onMouseUp;
            viewGeometry1.MouseMove += onMouseMove;

            ViewGeometry viewGeometry2 = new ViewGeometry(CollisionMap, collisionManager).AddShape(rctThree, new DynamicShape(new GeometryViewAdapter(rctThree)));

            viewGeometry2.MouseDown += onMouseDown;
            viewGeometry2.MouseUp   += onMouseUp;
            viewGeometry2.MouseMove += onMouseMove;

            ViewGeometry viewGeometry3 = new ViewGeometry(CollisionMap, collisionManager).AddShape(rctFour, new DynamicShape(new GeometryViewAdapter(rctFour)));

            viewGeometry3.MouseDown += onMouseDown;
            viewGeometry3.MouseUp   += onMouseUp;
            viewGeometry3.MouseMove += onMouseMove;

            ViewGeometry viewGeometry4 = new ViewGeometry(CollisionMap, collisionManager).AddShape(polyTriangle, new DynamicShape(new GeometryViewAdapter(polyTriangle)));

            viewGeometry4.MouseDown += onMouseDown;
            viewGeometry4.MouseUp   += onMouseUp;
            viewGeometry4.MouseMove += onMouseMove;

            ViewGeometry viewGeometry5 = new ViewGeometry(CollisionMap, collisionManager).AddShape(polyOctagon, new DynamicShape(new GeometryViewAdapter(polyOctagon)));

            viewGeometry5.MouseDown += onMouseDown;
            viewGeometry5.MouseUp   += onMouseUp;
            viewGeometry5.MouseMove += onMouseMove;

            CollisionViewGeometry                 = new ViewGeometry(CollisionMap, collisionManager).AddShape(rctTwo, new DynamicShape(new GeometryViewAdapter(rctTwo))).AddShape(txtCollision, new DynamicShape(new GeometryViewAdapter(txtCollision)));
            CollisionViewGeometry.MouseDown      += onMouseDown;
            CollisionViewGeometry.MouseUp        += onMouseUp;
            CollisionViewGeometry.MouseMove      += onMouseMove;
            CollisionViewGeometry.CheckCollision += (results) =>
            {
                if (results.Count > 0)
                {
                    txtCollision.Text = "Colliding with " + results.Count() + " items";
                }
                else
                {
                    txtCollision.Text = "No collisions";
                }
            };

            CollisionViewGeometry2                 = new ViewGeometry(CollisionMap, collisionManager).AddShape(rctTwo2, new DynamicShape(new GeometryViewAdapter(rctTwo2))).AddShape(txtCollision2, new DynamicShape(new GeometryViewAdapter(txtCollision2)));
            CollisionViewGeometry2.MouseDown      += onMouseDown;
            CollisionViewGeometry2.MouseUp        += onMouseUp;
            CollisionViewGeometry2.MouseMove      += onMouseMove;
            CollisionViewGeometry2.CheckCollision += (results) =>
            {
                if (results.Count > 0)
                {
                    txtCollision2.Text = "Colliding with " + results.Count() + " items";
                }
                else
                {
                    txtCollision2.Text = "No collisions";
                }
            };

            CollisionViewGeometry3            = new ViewGeometry(CollisionMap, collisionManager).AddShape(rctTwo3, new DynamicShape(new GeometryViewAdapter(rctTwo3))).AddShape(txtCollision3, new DynamicShape(new GeometryViewAdapter(txtCollision3)));
            CollisionViewGeometry3.MouseDown += (result) => { Shape_MouseDown(result.ViewGeometry, result.Element, (MouseButtonEventArgs)result.MouseEventArgs); };
            CollisionViewGeometry3.MouseUp   += (result) => { Shape_MouseUp(result.ViewGeometry, result.Element, (MouseButtonEventArgs)result.MouseEventArgs); };
            CollisionViewGeometry3.MouseMove += (result) => { if (isDragging)
                                                              {
                                                                  Shape_MouseMove(result.ViewGeometry, result.Element, (MouseEventArgs)result.MouseEventArgs);
                                                              }
            };
            CollisionViewGeometry3.CheckCollision += (results) =>
            {
                if (results.Count > 0)
                {
                    txtCollision3.Text = "Colliding with " + results.Count() + " items";
                }
                else
                {
                    txtCollision3.Text = "No collisions";
                }
            };

            CollisionMap.Add(viewGeometry1);
            CollisionMap.Add(viewGeometry2);
            CollisionMap.Add(viewGeometry3);
            CollisionMap.Add(viewGeometry4);
            CollisionMap.Add(viewGeometry5);
            CollisionMap.Add(CollisionViewGeometry);
            CollisionMap.Add(CollisionViewGeometry2);
            CollisionMap.Add(CollisionViewGeometry3);

            foreach (var item in CollisionMap)
            {
                OutlineEdges(item);
            }

            Timer timer = new Timer(3);

            timer.Elapsed += (param1, param2) =>
            {
                //This way of invoking prevents crashing during shutdown.
                Dispatcher.Invoke(DispatcherPriority.Normal,
                                  new Action
                                  (
                                      () =>
                {
                    timer.Stop();

                    ViewGeometry.Shape shape = CollisionViewGeometry3.Shapes.FirstOrDefault(p => p.Element == rctTwo3);
                    CollisionViewGeometry3.Rotate(shape, 0.4f);
                    OutlineEdges(CollisionViewGeometry3);
                    CollisionViewGeometry3.OnCheckCollision();
                    DrawBoundingBox("rotating", CollisionViewGeometry3.Geometry.Rect);
                    timer.Start();
                }
                                  )
                                  );
            };
            timer.Enabled = true;
        }