58 lines
1.3 KiB
C#

using System.Collections.Generic;
using Unity.Mathematics;
public interface INucleus {
#region static struct
// Cluster
public ClusterPrefab cluster { get; }
public Cluster parent { get; }
// Senders
public List<Synapse> synapses { get; }
public Synapse AddSynapse(INucleus sender, float weight = 1.0f);
public NucleusArray array { get; set; }
#endregion static struct
#region dynamic state
// public void UpdateState();
// public void UpdateState(float3 inputValue);
public void UpdateStateIsolated();
public void UpdateStateIsolated(float3 inputValue);
#endregion dynamic state
#region static
public string name { get; set; }
// Receivers
public List<INucleus> receivers { get; set; }
public void AddReceiver(INucleus receiver, float weight = 1);
public void RemoveReceiver(INucleus receiverNucleus);
#endregion static
#region dynamic
// float3 to prepare for SIMD
public float3 outputValue { get; }
public void UpdateNuclei();
public bool isSleeping { get; }
#endregion dynamic
public INucleus ShallowCloneTo(Cluster parent);
public INucleus Clone();
}
// public interface IReceptor {
// }