예제 #1
0
 public void InitializeModel(LayerViewModel model)
 {
     model.IsMouseCaptured     = () => this.IsMouseCaptured;
     model.CaptureMouse        = () => this.CaptureMouse();
     model.ReleaseMouseCapture = () => this.ReleaseMouseCapture();
     model.InvalidateVisual    = () => this.InvalidateVisual();
 }
예제 #2
0
        public IActionResult GetLayersPartial()
        {
            LayerViewModel model = new LayerViewModel();

            model.Layers = GetLayers();
            return(PartialView("LayerSummaryPartial", model.Layers));
        }
예제 #3
0
        private void CalculateHeightmapExportDimensions(bool scaleToUnrealLandscape, LayerViewModel heightMapLayer, out int exportWidth, out int exportHeight, out int imageWidth, out int imageHeight)
        {
            var upperLeftImage   = heightMapLayer.WorldToImage * PredictionUpperLeftWorld;
            var bottomRightImage = heightMapLayer.WorldToImage * PredictionBottomRightWorld;
            var upperLeftX       = (int)upperLeftImage[0];
            var upperLeftY       = (int)upperLeftImage[1];
            var bottomLeftX      = (int)bottomRightImage[0];
            var bottomLeftY      = (int)bottomRightImage[1];

            int predictionWidth  = bottomLeftX - upperLeftX;
            int predictionHeight = bottomLeftY - upperLeftY;

            imageWidth  = predictionWidth;
            imageHeight = predictionHeight;

            if (scaleToUnrealLandscape)
            {
                var outputSize = ComputeUnrealLandscapeSize(new Point2D(predictionWidth, predictionHeight));
                imageWidth  = outputSize.X;
                imageHeight = outputSize.Y;
            }

            exportWidth  = Math.Min(predictionWidth, imageWidth);
            exportHeight = Math.Min(predictionHeight, imageHeight);
        }
예제 #4
0
        private bool ReorderLayers()
        {
            // Get selected layer.
            LayerViewModel layerViewModel = GetSelectedLayer();

            // Return if no layer.
            if (layerViewModel == null)
            {
                return(false);
            }

            // Get current draw order value.
            int current = layerViewModel.DrawOrder;

            // Check if there is a layer with this draw order.
            LayerViewModel otherLayerViewModel = layersViewModel.Layers.FirstOrDefault(l => l.DrawOrder == current + 1);

            // If there is a layer with this draw order, swap their draw orders.
            if (otherLayerViewModel != null)
            {
                SwapDrawOrders(layerViewModel, otherLayerViewModel);

                return(true);
            }

            return(false);
        }
예제 #5
0
        public IActionResult GetDictsPartial()
        {
            LayerViewModel model = new LayerViewModel();

            model.Dictionaries = GetDictionaries();
            return(PartialView("DictSummaryPartial", model.Dictionaries));
        }
예제 #6
0
        private void SwapDrawOrders(LayerViewModel a, LayerViewModel b)
        {
            int aO = a.DrawOrder;
            int bO = b.DrawOrder;

            a.DrawOrder = bO;
            b.DrawOrder = aO;
        }
예제 #7
0
        public void Create(LayerViewModel LayerViewModel)
        {
            var Layer = new Layer
            {
                LayerName = LayerViewModel.LayerName
            };

            unitOfWork.LayerRepository.Insert(Layer);
            unitOfWork.Save();
        }
예제 #8
0
        public bool Update(LayerViewModel entity)
        {
            var layer = _repo.Find(x => x.Id == entity.Id && x.Deleted == false);

            if (layer != null)
            {
                return(_repo.Update(_mapper.Map <Layer>(entity)));
            }

            return(false);
        }
예제 #9
0
        protected void DrawBand(DrawingContext dc, LayerViewModel layer, Matrix <double> worldToScreen)
        {
            var worldToScreenScaled = _scaleMat * worldToScreen;

            var worldToView = _screenToViewMat * worldToScreenScaled;

            var upperLeft   = worldToView * layer.UpperLeftWorld;
            var bottomRight = worldToView * layer.BottomRightWorld;

            dc.DrawImage(layer.BandImage, new Rect(new Point(upperLeft[0], upperLeft[1]), new Point(bottomRight[0], bottomRight[1])));
        }
예제 #10
0
        /// <summary>
        /// Initializes a new instance of the MainViewModel class.
        /// </summary>
        public MainViewModel()
        {
            //DatabaseHelper.ExportToDatabase(); //Uncomment this to generate the database

            LayerViewModel = ServiceLocator.Current.GetInstance<LayerViewModel>();
            MapViewModel = ServiceLocator.Current.GetInstance<MapViewModel>();
            //TileSelectionViewModel = ServiceLocator.Current.GetInstance<TileSelectionViewModel>();

            CreateCommands();
            _mainModel = Model.Model.Instance;
        }
예제 #11
0
        public void Update(LayerViewModel LayerViewModel)
        {
            var Layer = new Layer
            {
                LayerId   = LayerViewModel.LayerId,
                LayerName = LayerViewModel.LayerName
            };

            unitOfWork.LayerRepository.Update(Layer);
            unitOfWork.Save();
        }
 public ActionResult Edit(LayerViewModel layerViewModel)
 {
     try
     {
         // TODO: Add update logic here
         LayerServices.Update(layerViewModel);
         return(RedirectToAction("Index"));
     }
     catch
     {
         return(View());
     }
 }
 public ActionResult Create(LayerViewModel layerViewModel)
 {
     try
     {
         // TODO: Add insert logic here
         LayerServices.Create(layerViewModel);
         return(RedirectToAction("Index"));
     }
     catch
     {
         return(View());
     }
 }
예제 #14
0
        public MapViewModel()
        {
            CreateCommands();
            LayerViewModel = ServiceLocator.Current.GetInstance<LayerViewModel>();

            _mapCanvas = new Canvas();
            MousePosition = new Point();
            _tempTiles = new List<Tile>();
            _selectionRect = new Rectangle();
            _selectionPointEnd = new Point();
            _selectionPointStart = new Point();
            _tempSelectedTileList = new List<Tile>();

            _editor = _modelInstance._editor;
            _mapCanvas.HorizontalAlignment = HorizontalAlignment.Left;
            _mapCanvas.VerticalAlignment = VerticalAlignment.Top;

            _mapCanvas.Background = Brushes.Transparent;
            _mapCanvas.Width = _editor.GetMapWidth() * _editor.GetTileSize();
            _mapCanvas.Height = _editor.GetMapHeight() * _editor.GetTileSize();

            _mapCanvas.AddHandler(UIElement.MouseRightButtonDownEvent, (RoutedEventHandler)SelectBegin);
            _mapCanvas.AddHandler(UIElement.MouseRightButtonUpEvent, (RoutedEventHandler)SelectEnd);

            _mapCanvas.AddHandler(UIElement.MouseMoveEvent, (RoutedEventHandler)Click);
            _mapCanvas.AddHandler(UIElement.MouseDownEvent, (RoutedEventHandler)Click);
            _mapCanvas.AddHandler(UIElement.MouseLeftButtonUpEvent, (RoutedEventHandler)ClickEnd);

            int mapWidth = _editor.GetMapWidth();
            int mapHeight = _editor.GetMapHeight();

            for (int y = 0; y < mapHeight; y++)
            {
                for (int x = 0; x < mapWidth; x++)
                {
                    Tile t = _editor.GetTile(x, y);
                    _mapCanvas.Children.Add(t);
                    Canvas.SetTop(t, y * 32);
                    Canvas.SetLeft(t, x * 32);
                }
            }

            _selectionRect.Fill = new SolidColorBrush(Colors.Black);
            _selectionRect.Stroke = new SolidColorBrush(Colors.Black);
            _selectionRect.Width = 32;
            _selectionRect.Height = 32;
            _selectionRect.Opacity = 0.5;
        }
예제 #15
0
        public IActionResult Post([FromBody] LayerViewModel layerViewModel)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var layer = _service.Add(layerViewModel);

            if (layer is null)
            {
                return(NoContent());
            }

            return(CreatedAtAction(nameof(Get), new { layer.Id }, layer));
        }
예제 #16
0
        private void btnSave_Click(object sender, RoutedEventArgs e)
        {
            MaxLayer = numericFloors.IncrementText;
            if (MaxLayer.ToInt32() > numericFloors.MaxValue)
            {
                MsgBox.WarningShow("超出最大层配置", "");
                return;
            }

            LayerViewModel      = new LayerViewModel();
            LayerViewModel.Code = txtCode.Text;
            LayerViewModel.Name = txtName.Text;

            IsAllTC           = ckbAll.IsChecked.GetValueOrDefault();
            this.DialogResult = true;
        }
예제 #17
0
        private void deleteLayerButton_Click(object sender, RoutedEventArgs e)
        {
            // Delete selected layer.

            LayerViewModel layerViewModel = GetSelectedLayer();

            if (layerViewModel == null)
            {
                return;
            }

            // TODO: action binding.

            editor.RemoveLayer(layerViewModel.Name);

            layersListView.SelectedItem = null;
        }
예제 #18
0
        public IActionResult Put(int id, [FromBody] LayerViewModel layerViewModel)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            layerViewModel.Id = id;
            bool updateResult = _service.Update(layerViewModel);

            if (!updateResult)
            {
                return(NoContent());
            }

            return(Ok());
        }
예제 #19
0
        private void InitializeEvents()
        {
            base.DataContextChanged += (s, e) =>
            {
                if (base.DataContext != null &&
                    base.DataContext is LayerViewModel)
                {
                    Model = base.DataContext as LayerViewModel;
                }
            };

            base.PreviewMouseLeftButtonDown += (s, e) =>
            {
                if (_model != null)
                {
                    Focus();
                    _model.MouseLeftButtonDown(e.GetPosition(this).ToPoint2());
                }
            };

            base.PreviewMouseLeftButtonUp += (s, e) =>
            {
                if (_model != null)
                {
                    _model.MouseLeftButtonUp(e.GetPosition(this).ToPoint2());
                }
            };

            base.PreviewMouseMove += (s, e) =>
            {
                if (_model != null)
                {
                    _model.MouseMove(e.GetPosition(this).ToPoint2());
                }
            };

            base.PreviewMouseRightButtonDown += (s, e) =>
            {
                if (_model != null)
                {
                    Focus();
                    _model.MouseRightButtonDown(e.GetPosition(this).ToPoint2());
                }
            };
        }
예제 #20
0
        private void layersListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            // Get the selected layer view model.
            LayerViewModel layerViewModel = null;

            foreach (object o in e.AddedItems)
            {
                layerViewModel = o as LayerViewModel;
            }

            // No layer, return.
            if (layerViewModel == null)
            {
                editor.SelectLayer(string.Empty);

                return;
            }

            // Notify tile editor that new layer has been selected.
            editor.SelectLayer(layerViewModel.Name);
        }
        public static ChooseLayerViewModel Create(LayerViewModel layer)
        {
            if (layer.Walls.Count < 1)
            {
                return(null);
            }

            MainPageViewport viewport = new MainPageViewport
            {
                IsHitTestVisible = false,
                Walls            = layer.Walls
            };

            viewport.FocusCameraOn(layer.Walls.Bounds());

            return(new ChooseLayerViewModel
            {
                Layer = layer,
                Description = $"Кол-во объектов: {layer.Walls.Count}",
                Viewport = viewport
            });
        }
예제 #22
0
        private void moveLayerUpButton_Click(object sender, RoutedEventArgs e)
        {
            // No other layers, return.
            if (layersViewModel.Layers.Count <= 1)
            {
                return;
            }

            LayerViewModel layerViewModel = GetSelectedLayer();

            if (layerViewModel == null)
            {
                return;
            }

            // Get current max draw order.
            int max = editor.Layers.Count();

            // Trying to rise topmost layer, just return.
            if (layerViewModel.DrawOrder >= max)
            {
                return;
            }

            // Draw order was changed by basic method, return.
            if (ReorderLayers())
            {
                return;
            }

            // Rise the layer.
            layerViewModel.DrawOrder += 1;

            CollectionView collectioView = (CollectionView)CollectionViewSource.GetDefaultView(layersListView.ItemsSource);

            collectioView.Refresh();
        }
예제 #23
0
        private void moveLayerDown_Click(object sender, RoutedEventArgs e)
        {
            // No other layers, return.
            if (layersViewModel.Layers.Count <= 1)
            {
                return;
            }

            LayerViewModel layerViewModel = GetSelectedLayer();

            if (layerViewModel == null)
            {
                return;
            }

            // Get current min draw order.
            int min = editor.Layers.Min(l => l.DrawOrder.Value);

            // Trying to go below zero, just return.
            if (layerViewModel.DrawOrder - 1 < 0)
            {
                return;
            }

            // Draw order was changed by basic method, return.
            if (ReorderLayers())
            {
                return;
            }

            layerViewModel.DrawOrder -= 1;

            CollectionView collectioView = (CollectionView)CollectionViewSource.GetDefaultView(layersListView.ItemsSource);

            collectioView.Refresh();
        }
예제 #24
0
 public LayerParamWindow(LayerViewModel layer)
 {
     InitializeComponent();
     this.layer   = layer;
     this.Loaded += LayerParamWindow_Loaded;
 }
예제 #25
0
        public override void OnFrameworkInitializationCompleted()
        {
            if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktopLifetime)
            {
                var disposable = new CompositeDisposable();

                // Model

                object owner = new object();

                var layer1 = new Layer(owner, "layer1");

                var start11 = new PointShape(owner, "start11", 100, 100);
                var end11   = new PointShape(owner, "end11", 200, 100);
                var line1   = new LineShape(layer1, "line1", start11, end11);
                start11.Owner = line1;
                end11.Owner   = line1;
                layer1.Shapes.Add(line1);

                var start21 = new PointShape(owner, "start21", 100, 200);
                var end21   = new PointShape(owner, "end21", 200, 200);
                var line2   = new LineShape(layer1, "line2", start21, end21);
                start21.Owner = line2;
                line2.Owner   = line2;
                layer1.Shapes.Add(line2);

                // ViewModel

                var history        = new StackHistory().AddTo(disposable);
                var layerViewModel = new LayerViewModel(layer1, history).AddTo(disposable);

                // Window

                var mainWindow = new MainWindow()
                {
                    DataContext = layerViewModel
                };

                var layerCanvas = mainWindow.FindControl <LayerCanvas>("layerCanvas");

                LineShape?line = null;

                layerCanvas.PointerPressed += (sender, e) =>
                {
                    if (e.GetCurrentPoint(layerCanvas).Properties.IsLeftButtonPressed)
                    {
                        var point = e.GetPosition(layerCanvas);
                        if (line == null)
                        {
                            var start = new PointShape(layer1.Owner, "start", point.X, point.Y);
                            var end   = new PointShape(layer1.Owner, "end", point.X, point.Y);
                            line             = new LineShape(layer1, "line", start, end);
                            line.Start.Owner = line;
                            line.End.Owner   = line;
                            //layer1.Shapes.AddWithHistory(line, history);
                            layer1.Shapes.Add(line);
                            //history.IsPaused = true;
                            layerCanvas.InvalidateVisual();
                        }
                        else
                        {
                            line.End.X = point.X;
                            line.End.Y = point.Y;
                            layer1.Shapes.Remove(line);
                            layer1.Shapes.AddWithHistory(line, history);
                            //history.IsPaused = false;
                            line = null;
                            layerCanvas.InvalidateVisual();
                        }
                    }
                    else if (e.GetCurrentPoint(layerCanvas).Properties.IsRightButtonPressed)
                    {
                        if (line != null)
                        {
                            layer1.Shapes.Remove(line);
                            line = null;
                            layerCanvas.InvalidateVisual();
                        }
                    }
                };

                layerCanvas.PointerMoved += (sender, args) =>
                {
                    var point = args.GetPosition(layerCanvas);
                    if (line != null)
                    {
                        line.End.X = point.X;
                        line.End.Y = point.Y;
                        layerCanvas.InvalidateVisual();
                    }
                };

                history.CanClear.Subscribe(_ => layerCanvas.InvalidateVisual()).AddTo(disposable);

                desktopLifetime.MainWindow = mainWindow;

                desktopLifetime.Exit += (sennder, e) =>
                {
                    disposable.Dispose();
                };
            }
            else if (ApplicationLifetime is ISingleViewApplicationLifetime singleViewLifetime)
            {
                //singleViewLifetime.MainView = new MainView();
            }
            base.OnFrameworkInitializationCompleted();
        }
예제 #26
0
        public LayerViewModel Add(LayerViewModel entity)
        {
            var layer = _repo.Add(_mapper.Map <Layer>(entity));

            return(_mapper.Map <LayerViewModel>(layer));
        }
예제 #27
0
        protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);

            using (var disposable = new CompositeDisposable())
            {
                // Model

                var layer1 = new Layer("layer1");

                var line1 = new LineShape(layer1, "line1");
                line1.Start = new PointShape(100, 100, line1, "start11");
                line1.End   = new PointShape(200, 100, line1, "end11");
                layer1.Shapes.Add(line1);

                var line2 = new LineShape(layer1, "line2");
                line2.Start = new PointShape(100, 200, line2, "start21");
                line2.End   = new PointShape(200, 200, line2, "end21");
                layer1.Shapes.Add(line2);

                // ViewModel

                var history        = new StackHistory().AddTo(disposable);
                var layerViewModel = new LayerViewModel(layer1, history).AddTo(disposable);

                // Window

                var mainWindow  = new MainWindow();
                var layerCanvas = mainWindow.layerCanvas;

                LineShape line = null;

                layerCanvas.PreviewMouseLeftButtonDown += (sender, args) =>
                {
                    var point = args.GetPosition(layerCanvas);
                    if (line == null)
                    {
                        line       = new LineShape(layer1, "line");
                        line.Start = new PointShape(point.X, point.Y, line1, "start");
                        line.End   = new PointShape(point.X, point.Y, line1, "end");
                        //layer1.Shapes.AddWithHistory(line, history);
                        layer1.Shapes.Add(line);
                        //history.IsPaused = true;
                        layerCanvas.InvalidateVisual();
                    }
                    else
                    {
                        line.End.X = point.X;
                        line.End.Y = point.Y;
                        layer1.Shapes.Remove(line);
                        layer1.Shapes.AddWithHistory(line, history);
                        //history.IsPaused = false;
                        line = null;
                        layerCanvas.InvalidateVisual();
                    }
                };

                layerCanvas.PreviewMouseRightButtonDown += (sender, args) =>
                {
                    if (line != null)
                    {
                        layer1.Shapes.Remove(line);
                        line = null;
                        layerCanvas.InvalidateVisual();
                    }
                };

                layerCanvas.PreviewMouseMove += (sender, args) =>
                {
                    var point = args.GetPosition(layerCanvas);
                    if (line != null)
                    {
                        line.End.X = point.X;
                        line.End.Y = point.Y;
                        layerCanvas.InvalidateVisual();
                    }
                };

                history.CanClear.Subscribe(_ => layerCanvas.InvalidateVisual()).AddTo(disposable);

                mainWindow.DataContext = layerViewModel;
                mainWindow.ShowDialog();
            }
        }
예제 #28
0
        public void Start()
        {
            using (var disposable = new CompositeDisposable())
            {
                // Model

                var layer1 = new Layer("layer1");

                var line1 = new LineShape(layer1, "line1");
                line1.Start = new PointShape(100, 100, line1, "start11");
                line1.End   = new PointShape(200, 100, line1, "end11");
                layer1.Shapes.Add(line1);

                var line2 = new LineShape(layer1, "line2");
                line2.Start = new PointShape(100, 200, line2, "start21");
                line2.End   = new PointShape(200, 200, line2, "end21");
                layer1.Shapes.Add(line2);

                // ViewModel

                var history        = new StackHistory().AddTo(disposable);
                var layerViewModel = new LayerViewModel(layer1, history).AddTo(disposable);

                // Window

                var mainWindow  = new MainWindow();
                var layerCanvas = mainWindow.FindControl <LayerCanvas>("layerCanvas");

                LineShape line = null;

                layerCanvas.PointerPressed += (sender, args) =>
                {
                    if (args.MouseButton == MouseButton.Left)
                    {
                        var point = args.GetPosition(layerCanvas);
                        if (line == null)
                        {
                            line       = new LineShape(layer1, "line");
                            line.Start = new PointShape(point.X, point.Y, line1, "start");
                            line.End   = new PointShape(point.X, point.Y, line1, "end");
                            //layer1.Shapes.AddWithHistory(line, history);
                            layer1.Shapes.Add(line);
                            //history.IsPaused = true;
                            layerCanvas.InvalidateVisual();
                        }
                        else
                        {
                            line.End.X = point.X;
                            line.End.Y = point.Y;
                            layer1.Shapes.Remove(line);
                            layer1.Shapes.AddWithHistory(line, history);
                            //history.IsPaused = false;
                            line = null;
                            layerCanvas.InvalidateVisual();
                        }
                    }
                    else if (args.MouseButton == MouseButton.Right)
                    {
                        if (line != null)
                        {
                            layer1.Shapes.Remove(line);
                            line = null;
                            layerCanvas.InvalidateVisual();
                        }
                    }
                };

                layerCanvas.PointerMoved += (sender, args) =>
                {
                    var point = args.GetPosition(layerCanvas);
                    if (line != null)
                    {
                        line.End.X = point.X;
                        line.End.Y = point.Y;
                        layerCanvas.InvalidateVisual();
                    }
                };

                history.CanClear.Subscribe(_ => layerCanvas.InvalidateVisual()).AddTo(disposable);

                mainWindow.DataContext = layerViewModel;
                mainWindow.Show();
                Run(mainWindow);
            }
        }
 public ExportLayerViewModel(LayerViewModel layer)
 {
     Layer = layer;
 }