HighPolyAntPasser, improved leg detection

This commit is contained in:
Pascal Serrarens 2026-05-28 17:56:18 +02:00
parent 6bc6f19637
commit 7032a2229c

View File

@ -233,7 +233,7 @@ namespace NanoBrain.Unity {
Dag.Node to = dag.nodes.FirstOrDefault(x => x.id == e.toId); Dag.Node to = dag.nodes.FirstOrDefault(x => x.id == e.toId);
if (from == null || to == null) if (from == null || to == null)
continue; continue;
Vector2 fromPosition = from.position; Vector2 fromPosition = from.position;
Vector2 toPosition = to.position; Vector2 toPosition = to.position;
DrawEdge(fromPosition, toPosition); DrawEdge(fromPosition, toPosition);
@ -316,6 +316,7 @@ namespace NanoBrain.Unity {
foreach (Synapse synapse in receiverNeuron.synapses) { foreach (Synapse synapse in receiverNeuron.synapses) {
Nucleus nucleus = synapse.neuron; Nucleus nucleus = synapse.neuron;
if (nucleus.parent != null && currentNucleus != null && nucleus.parent != currentNucleus.parent) { if (nucleus.parent != null && currentNucleus != null && nucleus.parent != currentNucleus.parent) {
// if (nucleus.parent != null && nucleus.parent != currentCluster) {
nucleus = nucleus.parent; nucleus = nucleus.parent;
} }
string nucleusName = nucleus.name; string nucleusName = nucleus.name;
@ -507,11 +508,11 @@ namespace NanoBrain.Unity {
} }
Vector3 labelPos = position - Vector3.down * (discRadius + 5); // below neuron Vector3 labelPos = position - Vector3.down * (discRadius + 5); // below neuron
string name = $"{nucleus.parent.instances[0].baseName}\n{nucleus.name}"; string name = $"{nucleus.parent.instances[0].baseName}\n{nucleus.name}";
GUIStyle style = new(EditorStyles.label) { GUIStyle style = new(EditorStyles.label) {
alignment = TextAnchor.UpperCenter, alignment = TextAnchor.UpperCenter,
normal = { textColor = Color.white }, normal = { textColor = Color.white },
fontStyle = FontStyle.Bold, fontStyle = FontStyle.Bold,
}; };
Handles.Label(labelPos, name, style); Handles.Label(labelPos, name, style);
expandArray = false; expandArray = false;
} }
@ -624,14 +625,27 @@ namespace NanoBrain.Unity {
if (nucleus.parent != null && this.currentNucleus != null && nucleus.parent != this.currentNucleus.parent && nucleus.parent is Cluster parentCluster1) { if (nucleus.parent != null && this.currentNucleus != null && nucleus.parent != this.currentNucleus.parent && nucleus.parent is Cluster parentCluster1) {
// This neuron is part of another cluster // This neuron is part of another cluster
parentCluster1.name ??= ""; if (nucleus is Cluster cluster) {
int colonPos = parentCluster1.name.IndexOf(":"); string clusterName = cluster.prefab.name;
string baseName;
if (colonPos > 0 && colonPos < parentCluster1.name.Length - 2) int colonPos = clusterName.IndexOf(":");
baseName = parentCluster1.name[..colonPos] + "\n"; string baseName;
else if (colonPos > 0 && colonPos < clusterName.Length - 2)
baseName = parentCluster1.name + "\n"; baseName = clusterName[..colonPos] + "\n";
Handles.Label(labelPos, baseName + nucleus.name, style); else
baseName = clusterName + "\n";
Handles.Label(labelPos, baseName + nucleus.name, style);
}
else {
parentCluster1.name ??= "";
int colonPos = parentCluster1.name.IndexOf(":");
string baseName;
if (colonPos > 0 && colonPos < parentCluster1.name.Length - 2)
baseName = parentCluster1.name[..colonPos] + "\n";
else
baseName = parentCluster1.name + "\n";
Handles.Label(labelPos, baseName + nucleus.name, style);
}
} }
else { else {
nucleus.name ??= ""; nucleus.name ??= "";