public void RemoveToolpaths(ToolpathSO sourceSO) { List <AnalysisViz> found; lock (SOToAnalysis) { if (SOToAnalysis.TryGetValue(sourceSO, out found)) { foreach (var analysis in found) { analysis.OnComputeUpdateRequired -= OnVisualizationRequestedUpdate; analysis.OnGeometryUpdateRequired -= OnVisualizationHasGeometryUpdate; analysis.Disconnect(); } SOToAnalysis.Remove(sourceSO); } } lock (DirtyList) { if (found != null) { foreach (var analysis in found) { DirtyList.Remove(analysis); } } } }
T find_by_type <T>(SceneObject so) where T : class, AnalysisViz { lock (SOToAnalysis) { List <AnalysisViz> l; if (SOToAnalysis.TryGetValue(so, out l)) { foreach (var a in l) { if (a is T) { return(a as T); } } } return(null); } }
void add_new_so_analysis(SceneObject so, AnalysisViz analysis) { lock (SOToAnalysis) { List <AnalysisViz> l; if (SOToAnalysis.TryGetValue(so, out l) == false) { l = new List <AnalysisViz>(); SOToAnalysis[so] = l; } l.Add(analysis); } analysis.OnComputeUpdateRequired += OnVisualizationRequestedUpdate; analysis.OnGeometryUpdateRequired += OnVisualizationHasGeometryUpdate; lock (DirtyList) { DirtyList.Add(analysis); processThreadEvent.Set(); } }
public void AddMesh(DMeshSO sourceSO) { // make sure we have this SO lock (SOToAnalysis) { List <AnalysisViz> l; if (SOToAnalysis.TryGetValue(sourceSO, out l) == false) { l = new List <AnalysisViz>(); SOToAnalysis[sourceSO] = l; } } if (EnableMeshBoundaries) { AnalysisViz boundaries = new MeshSOBoundaryViz(sourceSO); add_new_so_analysis(sourceSO, boundaries); } if (EnableCavities) { AnalysisViz interiorCavities = new MeshSOComponentsViz(sourceSO); add_new_so_analysis(sourceSO, interiorCavities); } }
public void RemoveMesh(DMeshSO sourceSO) { List <AnalysisViz> found; lock (SOToAnalysis) { if (SOToAnalysis.TryGetValue(sourceSO, out found)) { foreach (var analysis in found) { disconnect_analysis(analysis); } SOToAnalysis.Remove(sourceSO); } } lock (DirtyList) { if (found != null) { foreach (var analysis in found) { DirtyList.Remove(analysis); } } } }