43 lines
1.3 KiB
C#

using UnityEngine;
using Unity.Mathematics;
using static Unity.Mathematics.math;
[System.Serializable]
public class Receptor : Neuron {
public Receptor(Cluster parent, string name) : base(parent, name) { }
public Receptor(ClusterPrefab prefab, string name) : base(prefab, name) { }
public override Nucleus ShallowCloneTo(Cluster parent) {
Receptor clone = new(parent, name);
return clone;
}
public override Nucleus Clone(ClusterPrefab prefab) {
Receptor clone = new(prefab, name);
CloneFields(clone);
// Adding receivers will also add synapses to the receivers
foreach (Nucleus receiver in this.receivers)
clone.AddReceiver(receiver);
return clone;
}
// [SerializeReference]
// private NucleusArray _array;
// public NucleusArray array {
// get { return _array; }
// set { _array = value; }
// }
public override void UpdateStateIsolated() {
this.outputValue = this.bias;
}
public override void UpdateNuclei() {
this.stale++;
if (this.stale > staleValueForSleep && lengthsq(this.bias) > 0) {
this.bias = new float3(0, 0, 0);
this.parent.UpdateFromNucleus(this);
}
}
}