Get subcluster nucleus

This commit is contained in:
Pascal Serrarens 2026-03-03 08:51:09 +01:00
parent 96b240ad6c
commit bd24e6e19b

View File

@ -414,16 +414,32 @@ public class Cluster : Nucleus {
} }
public Nucleus GetNucleus(string nucleusName) { public Nucleus GetNucleus(string nucleusName) {
string nucleusName0 = nucleusName + ": 0"; int dotPosition = nucleusName.IndexOf('.');
foreach (Nucleus nucleus in this.clusterNuclei) { if (dotPosition >= 0) {
if (nucleus is IReceptor receptor) { string clusterName = nucleusName[..dotPosition];
if (nucleus.name == nucleusName | nucleus.name == nucleusName0) 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; return nucleus;
} }
else if (nucleus.name == nucleusName) return null;
return nucleus;
} }
return null;
} }
[Obsolete("Use GetNucleus instead")] [Obsolete("Use GetNucleus instead")]
@ -440,7 +456,7 @@ public class Cluster : Nucleus {
// Only add receivers outside this cluster // Only add receivers outside this cluster
if (receiver.clusterPrefab != this.prefab) if (receiver.clusterPrefab != this.prefab)
receivers.Add(receiver); receivers.Add(receiver);
//receivers.AddRange(output.receivers); //receivers.AddRange(output.receivers);
} }
} }
return receivers; return receivers;