Beispiel #1
0
        public void Configure(UserControl view, CurveGraphViewModel viewModel)
        {
            base.Configure(view, viewModel);
            ToolHandler = new GraphView_ToolHandler();

            ((GraphView_MainView)view).ResizeEnd += View_SizeChanged;
            viewModel.UpdateRender += ResumeRender;

            SetContext();
        }
        /// <summary>
        /// Draws rectangles on control points
        /// </summary>
        /// <param name="vm"></param>
        /// <returns></returns>
        public static List <FrameworkElement> DrawRectangles(CurveGraphViewModel vm, List <Point> list, int curveNr)
        {
            var curveList = vm.ModelItems.Item.Curve;
            List <FrameworkElement> elementList = new List <FrameworkElement>();
            int originalPos = 0;
            int smoothPos   = 0;

            for (int j = 0; j < curveList.Count; j++)
            {
                var curve = curveList[j];
                //Draws point rectangles
                for (int i = 0; i < curveList[j].Points.Count - 1; i++)
                {
                    Rectangle rect = new Rectangle();

                    rect.Height = 5;
                    rect.Width  = 5;
                    rect.Fill   = Brushes.DarkBlue;

                    if (i == originalPos && smoothPos < curve.Smoothness.Count || i == curve.Points.Count - 1)
                    {
                        //_Curve.Original[smoothPos] = _Curve.Points[i];

                        if (smoothPos < curve.Smoothness.Count)
                        {
                            originalPos += curve.Smoothness[smoothPos] + 1;
                        }


                        smoothPos++;
                        rect.Fill = Brushes.Yellow;
                    }

                    string name = String.Format("curve{1} point{0}", i, curveNr);
                    rect.Tag = name;

                    elementList.Add(rect);

                    try {
                        var pos    = vm.Camera.OffsetPosition(new Point(list[i].X + vm.Camera.GetTransform(0, 0) - 2.5f, list[i].Y + vm.Camera.GetTransform(0, 1) - 2.5f));
                        var camera = vm.Camera;

                        Canvas.SetTop(rect, pos.Y);
                        Canvas.SetLeft(rect, pos.X);
                    }
                    catch (IndexOutOfRangeException) {
                        throw;
                    }
                }
            }



            return(elementList);
        }
        public void sodoff(object sender, MouseEventArgs e)
        {
            GraphView_StateManager manager = ProjectStateManager.Instance.StateManagers.OfType <GraphView_StateManager>().First();
            CurveGraphViewModel    vm      = ((CurveGraphViewModel)manager.ViewModel);

            if (vm == null)
            {
                return;
            }

            Point pos = e.GetPosition(sender as Canvas);

            pos.X -= vm.Camera.GetTransform(0, 0);
            pos.Y -= vm.Camera.GetTransform(0, 1);

            double value = 0;

            for (int x = 0; x < vm.ModelItems.Item.Curve.Count; x++)
            {
                var curve = vm.ModelItems.Item.Curve[x].Points;

                for (int i = 0; i < curve.Count; i++)
                {
                    if (i != 0 && pos.X < curve[i].X)
                    {
                        Point point1 = curve[i - 1];
                        Point point2 = curve[i];

                        value = LerpMath.Lerp(point1, point2, pos.X / point2.X).Y;
                        break;
                    }
                }
            }

            double[] camCoords = new double[] {
                vm.Camera.GetTransform(0, 0),
                vm.Camera.GetTransform(0, 1)
            };
            double scale = vm.Camera.GetScale;

            xLabel.Content = String.Format("Mouse: {0:N2} {1:N2} | Camera: {2:N2} {3:N2} | Scale: {4:N2} |  Curve value: {5:N2}",
                                           (e.GetPosition(_View.GraphView).X - camCoords[0]) * scale,
                                           (e.GetPosition(_View.GraphView).Y - camCoords[1]) * scale,
                                           camCoords[0],
                                           camCoords[1],
                                           scale,
                                           value
                                           );
        }
Beispiel #4
0
        public void CreateGraphView()
        {
            List <System.Windows.Point> pList  = new List <System.Windows.Point>();
            List <System.Windows.Point> pList2 = new List <System.Windows.Point>();

            GraphView_MainView  _GraphView      = new GraphView_MainView();
            CurveGraphViewModel _GraphViewModel = new CurveGraphViewModel();

            pList.Add(new System.Windows.Point(0, 0));
            pList.Add(new System.Windows.Point(250, 400));
            pList.Add(new System.Windows.Point(500, 200));
            pList.Add(new System.Windows.Point(700, 400));
            pList.Add(new System.Windows.Point(900, 350));

            pList2.Add(new System.Windows.Point(0, 100));
            pList2.Add(new System.Windows.Point(250, 500));
            pList2.Add(new System.Windows.Point(500, 300));
            pList2.Add(new System.Windows.Point(700, 500));
            pList2.Add(new System.Windows.Point(900, 450));

            // TODO: Replace Camera with Camera once integrated with GameEditor
            _GraphViewModel.Camera = new Camera();
            _GraphViewModel.Camera.SetTransform(0, 0);

            BezierCurveModelItem item = new BezierCurveModelItem(new BezierCurve(pList));

            item.Add(new BezierCurve(pList2));

            CurveGraphModel model = new CurveGraphModel();

            model.Item = item;


            _GraphViewModel.Add(model);

            Configure(_GraphView, _GraphViewModel);

            StartD2D(_GraphView.GraphView);
        }