private static GeometryModel3D CreateVoxelModel3D(RoomVoxel v) { double size = 0.98*v.Scale; var m = new GeometryModel3D(); var mb = new MeshBuilder(); mb.AddBox(new Point3D(0, 0, 0), size, size, size); m.Geometry = mb.ToMesh(); m.Material = MaterialHelper.CreateMaterial(v.Colour, v.Scale*.7); m.Transform = new TranslateTransform3D(v.Position.X, v.Position.Y, v.Position.Z); return m; }
/// <summary> /// Shows a preview voxel adjacent to the specified model (source). /// If source is null, hide the preview. /// </summary> /// <param name="source">The source.</param> /// <param name="normal">The normal.</param> public void PreviewVoxel(Model3D source, Vector3D normal = default(Vector3D)) { if (PreviewModel != null) { Model.Children.Remove(PreviewModel); } PreviewModel = null; if (source == null) { return; } if (!ModelToVoxel.ContainsKey(source)) { return; } RoomVoxel v = ModelToVoxel[source]; Color previewColor = Color.FromArgb(0x80, CurrentColor.R, CurrentColor.G, CurrentColor.B); var pv = new RoomVoxel(v.Position + normal, previewColor); PreviewModel = CreateVoxelModel3D(pv); Model.Children.Add(PreviewModel); }