From bd24e6e19bea6b795c380125fdf8486bf5c8a130 Mon Sep 17 00:00:00 2001 From: Pascal Serrarens Date: Tue, 3 Mar 2026 08:51:09 +0100 Subject: [PATCH] Get subcluster nucleus --- Cluster.cs | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/Cluster.cs b/Cluster.cs index e240d58..ac9f2db 100644 --- a/Cluster.cs +++ b/Cluster.cs @@ -414,16 +414,32 @@ public class Cluster : Nucleus { } public Nucleus GetNucleus(string nucleusName) { - string nucleusName0 = nucleusName + ": 0"; - foreach (Nucleus nucleus in this.clusterNuclei) { - if (nucleus is IReceptor receptor) { - if (nucleus.name == nucleusName | nucleus.name == nucleusName0) + int dotPosition = nucleusName.IndexOf('.'); + if (dotPosition >= 0) { + string clusterName = nucleusName[..dotPosition]; + string clusterName0 = clusterName + ": 0"; + foreach (Nucleus nucleus in this.clusterNuclei) { + if (nucleus is Cluster cluster) { + if (cluster.name == clusterName || cluster.name == clusterName0) { + string subNucleusName = nucleusName[(dotPosition + 1)..]; + return cluster.GetNucleus(subNucleusName); + } + } + } + return null; + } + else { + string nucleusName0 = nucleusName + ": 0"; + foreach (Nucleus nucleus in this.clusterNuclei) { + if (nucleus is IReceptor receptor) { + if (nucleus.name == nucleusName | nucleus.name == nucleusName0) + return nucleus; + } + else if (nucleus.name == nucleusName) return nucleus; } - else if (nucleus.name == nucleusName) - return nucleus; + return null; } - return null; } [Obsolete("Use GetNucleus instead")] @@ -440,7 +456,7 @@ public class Cluster : Nucleus { // Only add receivers outside this cluster if (receiver.clusterPrefab != this.prefab) receivers.Add(receiver); - //receivers.AddRange(output.receivers); + //receivers.AddRange(output.receivers); } } return receivers;