public void Rebuild(GraphicsDevice gd, bool force = false) { switch (MeshType) { case MeshType.Smooth: Meshes = new List <HexMapMesh> { new HexMapMeshSmooth(gd, Hexes, Texture) }; break; case MeshType.Flat: if (force) { Meshes = new List <HexMapMesh>(); for (var xp = 0; xp < Width; xp += PatchSize) { for (var yp = 0; yp < Height; yp += PatchSize) { var patchHexes = new List <Hexagon>(); for (var x = xp; x < xp + PatchSize; x++) { for (var y = yp; y < yp + PatchSize; y++) { var hex = GetHex(x, y); if (hex != null) { patchHexes.Add(hex); } } } Meshes.Add(new HexMapMeshFlat(gd, patchHexes, Texture)); } } } else { foreach (var dirtyPatch in DirtyPatches) { var mesh = Meshes.FirstOrDefault(m => m.PatchID == dirtyPatch); if (mesh == null) { continue; } Meshes.Remove(mesh); Meshes.Add(new HexMapMeshFlat(gd, mesh.Hexes, Texture)); } } break; default: throw new ArgumentOutOfRangeException(); } DirtyPatches.Clear(); }
void RemoveSelected() { while (_selectedMeshes.Count > 0) { Meshes.Remove(_selectedMeshes[0]); } _selectedMeshes.Clear(); Messenger.Default.Send <MvvmMessage, MeshRendererViewModel>(new MvvmMessage(MessageType.MeshUpdate, null)); ProperyChanged(); DebugLog.Log("Removed meshes", "Application"); }
public void DeleteSelectedMesh() { Meshes.Remove(SelectedMesh); }