private void UpdateClusterVisuals() { // See if they should be shown if (!chkShowClusters.IsChecked.Value) { if (_clusterVisuals != null) { _viewport.Children.Remove(_clusterVisuals.Visual); _clusterVisuals = null; } return; } // Get current clusters SwarmCluster[] clusters = _botClusters.Clusters; // Check for empty if (clusters == null || clusters.Length == 0) { if (_clusterVisuals != null) { _viewport.Children.Remove(_clusterVisuals.Visual); _clusterVisuals = null; } return; } // See if different if (_clusterVisuals != null && !SwarmCluster.IsSame(clusters, _clusterVisuals.Clusters)) { _viewport.Children.Remove(_clusterVisuals.Visual); _clusterVisuals = null; } if (_clusterVisuals == null) { // Create new _clusterVisuals = new ClusterVisuals(clusters, false); _viewport.Children.Add(_clusterVisuals.Visual); } else { // Update position, size _clusterVisuals.Update(); } }