public void EndSlicing() { if (pickingController.SelectedMeshes.Count > 0 && pickingController.SelectedMeshes.All(x => x.meshType == MeshType.Hair)) { if (!sliceController.IsEmpty()) { sliceController.EndSlice(Width, Height, camera); var historyItem = new HistoryMeshes(); foreach (var mesh in pickingController.SelectedMeshes) { var historyMesh = historyItem.AddMesh(mesh); historyMesh.ToDelete.Add(mesh.Id); sliceController.Slice(mesh, camera); var color = pickingController.SelectedColor.ContainsKey(mesh) ? pickingController.SelectedColor[mesh] : Vector4.Zero; for (var i = 0; i < sliceController.ResultMeshes.Count; i++) { var resMesh = sliceController.ResultMeshes[i]; resMesh.Title = mesh.Title + "_" + i; resMesh.Material.DiffuseColor = color; pickingController.HairMeshes.Add(resMesh); historyMesh.ToDelete.Add(resMesh.Id); } } historyController.Add(historyItem); } sliceController.BeginSlice(ToolsMode == ToolsMode.HairArc); } }
internal void DeleteSelectedHair() { pickingController.SelectedMeshes.BeginInit(); try { var historyItems = new HistoryMeshes(pickingController.SelectedMeshes.Where(x => x.meshType == MeshType.Hair)); historyController.Add(historyItems); var title = string.Empty; for (var i = pickingController.SelectedMeshes.Count - 1; i >= 0; i--) { var selectedMesh = pickingController.SelectedMeshes[i]; if (selectedMesh.meshType != MeshType.Hair) continue; pickingController.HairMeshes.Remove(selectedMesh); title = selectedMesh.Title; selectedMesh.Destroy(); pickingController.SelectedMeshes.RemoveAt(i); } RemoveMeshFromPartLibrary(title); } finally { pickingController.SelectedMeshes.EndInit(true); } }