public SelectCubeViewModel(BaseViewModel parentViewModel, SelectCubeModel dataModel) : base(parentViewModel) { _dataModel = dataModel; // Will bubble property change events from the Model to the ViewModel. _dataModel.PropertyChanged += (sender, e) => OnPropertyChanged(e.PropertyName); }
public void ReplaceCubesExecuted() { var model = new SelectCubeModel(); var loadVm = new SelectCubeViewModel(this, model); model.Load(GridSize, SelectedCubeItem.Cube.TypeId, SelectedCubeItem.SubtypeId); var result = _dialogService.ShowDialog <WindowSelectCube>(this, loadVm); if (result == true) { MainViewModel.IsBusy = true; var contentPath = ToolboxUpdater.GetApplicationContentPath(); var change = false; MainViewModel.ResetProgress(0, Selections.Count); foreach (var cube in Selections) { MainViewModel.Progress++; if (cube.TypeId != model.CubeItem.TypeId || cube.SubtypeId != model.CubeItem.SubtypeId) { var idx = DataModel.CubeGrid.CubeBlocks.IndexOf(cube.Cube); DataModel.CubeGrid.CubeBlocks.RemoveAt(idx); var cubeDefinition = SpaceEngineersApi.GetCubeDefinition(model.CubeItem.TypeId, GridSize, model.CubeItem.SubtypeId); var newCube = cube.CreateCube(model.CubeItem.TypeId, model.CubeItem.SubtypeId, cubeDefinition); cube.TextureFile = SpaceEngineersCore.GetDataPathOrDefault(cubeDefinition.Icon, Path.Combine(contentPath, cubeDefinition.Icon)); DataModel.CubeGrid.CubeBlocks.Insert(idx, newCube); change = true; } } MainViewModel.ClearProgress(); if (change) { MainViewModel.IsModified = true; } MainViewModel.IsBusy = false; } }