diff --git a/Editor/ClusterViewer.cs b/Editor/ClusterViewer.cs index 46e303c..41dee0c 100644 --- a/Editor/ClusterViewer.cs +++ b/Editor/ClusterViewer.cs @@ -327,7 +327,7 @@ namespace NanoBrain { if (nucleus is Neuron neuron) receivers = neuron.receivers; else if (nucleus is Cluster cluster) - receivers = cluster.CollectReceivers(); + receivers = cluster.CollectReceivers(true); else return; @@ -357,7 +357,6 @@ namespace NanoBrain { float margin = 10 + spacing / 2; int row = 0; - List drawnArrays = new(); foreach (Nucleus receiver in receivers) { Nucleus receiverNucleus = receiver; if (receiverNucleus == null) @@ -733,7 +732,7 @@ namespace NanoBrain { if (nucleus == this.currentNucleus) { if (Application.isPlaying) { if (nucleus is Cluster) - expandArray = !expandArray; + expandArray = !expandArray; else expandArray = false; } diff --git a/Runtime/Scripts/Core/Cluster.cs b/Runtime/Scripts/Core/Cluster.cs index 2f061ab..c358f14 100644 --- a/Runtime/Scripts/Core/Cluster.cs +++ b/Runtime/Scripts/Core/Cluster.cs @@ -716,7 +716,7 @@ namespace NanoBrain { #region Receivers - public virtual List CollectReceivers() { + public virtual List CollectReceivers(bool removeDuplicates = false) { List receivers = new(); foreach (Nucleus outputNucleus in this.clusterNuclei) { if (outputNucleus is not Neuron output) @@ -725,10 +725,11 @@ namespace NanoBrain { // Debug.Log($"output {this.name} {outputNucleus.name}"); foreach (Nucleus receiver in output.receivers) { // Debug.Log($"output {receiver.name}"); - // Only add receivers outside this cluster + // Only add receivers outside this cluster if (receiver.clusterPrefab != this.prefab) { - // Debug.Log($" YES"); - receivers.Add(receiver); + if (removeDuplicates && receivers.Contains(receiver) == false) + // Debug.Log($" YES"); + receivers.Add(receiver); } } }