From 22fe85478bb28564de482088139208b130072d25 Mon Sep 17 00:00:00 2001 From: Pascal Serrarens Date: Tue, 11 Aug 2026 16:43:36 +0200 Subject: [PATCH] Score on returning with food --- Runtime/Scripts/Core/Cluster.cs | 21 ++++++++++++++------- Runtime/Scripts/Core/Neuron.cs | 4 ++++ Runtime/Scripts/Core/Synapse.cs | 5 ++++- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/Runtime/Scripts/Core/Cluster.cs b/Runtime/Scripts/Core/Cluster.cs index 39f874f..7b9566b 100644 --- a/Runtime/Scripts/Core/Cluster.cs +++ b/Runtime/Scripts/Core/Cluster.cs @@ -188,14 +188,19 @@ namespace NanoBrain { else { uint instanceCount = 1; foreach (ExternalClusterData externalCluster in clusterData.clusters) { - if (externalCluster.name == synapseData.clusterName) + if (externalCluster.clusterName == synapseData.clusterName) { instanceCount = externalCluster.instanceCount; + //extPrefab.name = externalCluster.name; + if (this.nuclei.Find(nucleus => nucleus.name == synapseData.clusterName) is not Cluster extCluster) { + extCluster = new(extPrefab, this, instanceCount); + //extCluster.name = clusterData.name; + extCluster.name = externalCluster.name; + } + Neuron extNeuron = extCluster.GetNeuron(synapseData.neuronName); + Debug.Log("Add receiver for external"); + extNeuron.AddReceiver(receiver); + } } - if (this.nuclei.Find(nucleus => nucleus.name == synapseData.clusterName) is not Cluster extCluster) - extCluster = new(extPrefab, this, instanceCount); - Neuron extNeuron = extCluster.GetNeuron(synapseData.neuronName); - Debug.Log("Add receiver for external"); - extNeuron.AddReceiver(receiver); } } else { @@ -387,7 +392,7 @@ namespace NanoBrain { foreach (Synapse synapse in neuron.synapses) { if (synapse.trainable) { synapse.weight = (float)randomGenerator.NextDouble() * 2.0f - 1.0f; - //Debug.Log($"{neuron.name}-{synapse.neuron.name} weight = {synapse.weight}"); + // Debug.Log($"{neuron.name}-{synapse.neuron.name} weight = {synapse.weight}"); } } } @@ -934,10 +939,12 @@ namespace NanoBrain { [Serializable] public class ExternalClusterData { public string name; + public string clusterName; public uint instanceCount; public ExternalClusterData(Cluster cluster) { this.name = cluster.name; + this.clusterName = cluster.prefab.name; this.instanceCount = (uint)cluster.instanceCount; } } diff --git a/Runtime/Scripts/Core/Neuron.cs b/Runtime/Scripts/Core/Neuron.cs index 9a62534..7261f2c 100644 --- a/Runtime/Scripts/Core/Neuron.cs +++ b/Runtime/Scripts/Core/Neuron.cs @@ -180,6 +180,8 @@ namespace NanoBrain { _outputValue = value; if (this.isFiring) WhenFiring?.Invoke(); + else + WhenNotFiring?.Invoke(); } } public float3 activation => outputValue; @@ -228,6 +230,8 @@ namespace NanoBrain { /// public Action WhenFiring; + public Action WhenNotFiring; + /// /// When true, the value will not be reset after timeToSleep. /// diff --git a/Runtime/Scripts/Core/Synapse.cs b/Runtime/Scripts/Core/Synapse.cs index 8a5f83c..481d663 100644 --- a/Runtime/Scripts/Core/Synapse.cs +++ b/Runtime/Scripts/Core/Synapse.cs @@ -120,7 +120,10 @@ namespace NanoBrain { public bool trainable; public SynapseData(Synapse synapse) { - this.clusterName = synapse.neuron.parent.name; + if (synapse.neuron.parent.prefab != null) + this.clusterName = synapse.neuron.parent.prefab.name; + else + this.clusterName = synapse.neuron.parent.name; this.neuronName = synapse.neuron.name; this.weight = synapse.weight; this.trainable = synapse.trainable;