public void GenerateVoxelFieldExecuted() { var model = new GenerateVoxelFieldModel(); var position = ThePlayerCharacter != null ? ThePlayerCharacter.PositionAndOrientation.Value : new MyPositionAndOrientation(Vector3D.Zero, Vector3.Forward, Vector3.Up); model.Load(position); var loadVm = new GenerateVoxelFieldViewModel(this, model); var result = _dialogService.ShowDialog<WindowGenerateVoxelField>(this, loadVm); model.Unload(); if (result == true) { IsBusy = true; string[] sourceVoxelFiles; MyObjectBuilder_EntityBase[] newEntities; loadVm.BuildEntities(out sourceVoxelFiles, out newEntities); _selectNewStructure = true; ResetProgress(0, newEntities.Length); for (var i = 0; i < newEntities.Length; i++) { var structure = _dataModel.AddEntity(newEntities[i]); ((StructureVoxelModel)structure).SourceVoxelFilepath = sourceVoxelFiles[i]; // Set the temporary file location of the Source Voxel, as it hasn't been written yet. Progress++; } _selectNewStructure = false; IsBusy = false; ClearProgress(); } }