示例#1
0
 private void IsometricPanel_Click(DependencyObject sender, IsometricEventArgs e)
 {
     if (Click != null)
     {
         Click(sender, e);
     }
 }
示例#2
0
 private void IsometricPanel_Hover(DependencyObject sender, IsometricEventArgs e)
 {
     if (Hover != null)
     {
         Hover(sender, e);
     }
 }
示例#3
0
 private void GridView_Hover(DependencyObject sender, IsometricEventArgs e)
 {
     if (DocumentViewModel == null)
     {
         return;
     }
     DocumentViewModel.HoverX = e.X; DocumentViewModel.HoverY = e.Y; DocumentViewModel.HoverZ = e.Z; DocumentViewModel.HoverFace = e.Face;
 }
示例#4
0
        protected async Task OnLeftClickAsync(IsometricEventArgs e)
        {
            int            x, y, z;
            VoxelViewModel viewModel;
            Voxel          model;



            viewModel = DocumentViewModel.Voxels.GetVoxelAtPos(e.X, e.Y, e.Z);
            if ((viewModel != null) && (Keyboard.Modifiers == ModifierKeys.Control))
            {
                viewModel.ColorID = DocumentViewModel.Palette.Colors.SelectedItem?.ID ?? 0;
                return;
            }

            switch (e.Face)
            {
            case Faces.Top:
                x = e.X; y = e.Y; z = e.Z + 1;
                break;

            case Faces.Right:
                x = e.X; y = e.Y + 1; z = e.Z;
                break;

            case Faces.Front:
                x = e.X + 1; y = e.Y; z = e.Z;
                break;

            default:
                x = e.X; y = e.Y; z = e.Z;
                break;
            }

            if ((x < 0) || (y < 0) || (z < 0) || (x >= DocumentViewModel.SizeX) || (y >= DocumentViewModel.SizeY) || (z >= DocumentViewModel.SizeZ))
            {
                return;
            }

            if (DocumentViewModel.Voxels.ContainsVoxelAtPos(x, y, z))
            {
                return;
            }

            model = new Voxel()
            {
                X = x, Y = y, Z = z, ColorID = DocumentViewModel.Palette.Colors.SelectedItem?.ID ?? 0
            };
            try
            {
                await DocumentViewModel.Voxels.AddAsync(null, model);
            }
            catch
            {
                DocumentViewModel.ErrorMessage = "Failed to add voxel";
            }
        }
示例#5
0
        protected async Task OnRightClickAsync(IsometricEventArgs e)
        {
            VoxelViewModel viewModel;

            viewModel = DocumentViewModel.Voxels.GetVoxelAtPos(e.X, e.Y, e.Z);
            if (viewModel == null)
            {
                return;
            }
            try
            {
                await DocumentViewModel.Voxels.RemoveAsync(null, viewModel);
            }
            catch
            {
                DocumentViewModel.ErrorMessage = "Failed to remove voxel";
            }
        }
示例#6
0
        private async void GridView_Click(DependencyObject sender, IsometricEventArgs e)
        {
            if (DocumentViewModel == null)
            {
                return;
            }
            if ((e.X < 0) || (e.Y < 0) || (e.Z < 0) || (e.X >= DocumentViewModel.SizeX) || (e.Y >= DocumentViewModel.SizeY) || (e.Z >= DocumentViewModel.SizeZ))
            {
                return;
            }

            if (Mouse.LeftButton == MouseButtonState.Pressed)
            {
                await OnLeftClickAsync(e);
            }
            else if (Mouse.RightButton == MouseButtonState.Pressed)
            {
                await OnRightClickAsync(e);
            }
        }