Fix array decrease for clusters
This commit is contained in:
parent
e262447174
commit
b644d0fd5b
@ -66,14 +66,17 @@ public class ClusterPrefab : ScriptableObject {
|
||||
MarkNuclei(visitedNuclei, output);
|
||||
//MarkNuclei(visitedNuclei, this.output);
|
||||
//Debug.Log($"Garbage collection found {visitedNuclei.Count} Nuclei");
|
||||
this.nuclei.RemoveAll(nucleus => nucleus is Nucleus n && visitedNuclei.Contains(n) == false);
|
||||
this.nuclei.RemoveAll(nucleus => visitedNuclei.Contains(nucleus) == false);
|
||||
}
|
||||
|
||||
public void MarkNuclei(HashSet<Nucleus> visitedNuclei, Nucleus nucleus) {
|
||||
if (nucleus is null)
|
||||
return;
|
||||
|
||||
visitedNuclei.Add(nucleus);
|
||||
if (nucleus.parent != null && nucleus.parent.prefab != this)
|
||||
visitedNuclei.Add(nucleus.parent);
|
||||
else
|
||||
visitedNuclei.Add(nucleus);
|
||||
if (nucleus.synapses != null) {
|
||||
HashSet<Synapse> visitedSynapses = new();
|
||||
foreach (Synapse synapse in nucleus.synapses) {
|
||||
|
||||
@ -164,11 +164,19 @@ public class Neuron : Nucleus {
|
||||
if (receiver != null && receiver.synapses != null)
|
||||
receiver.synapses.RemoveAll(s => s.nucleus == nucleus);
|
||||
}
|
||||
} else if (nucleus is Cluster cluster) {
|
||||
// remove all receivers for this cluster
|
||||
foreach (Neuron output in cluster.outputs) {
|
||||
foreach (Nucleus receiver in output.receivers) {
|
||||
receiver.synapses.RemoveAll(s => s.nucleus == output);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (nucleus.clusterPrefab != null) {
|
||||
nucleus.clusterPrefab.nuclei.RemoveAll(n => n == nucleus);
|
||||
nucleus.clusterPrefab.RefreshOutputs();
|
||||
nucleus.clusterPrefab.GarbageCollection();
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user