using System.Collections.Generic; using Unity.Mathematics; public interface INucleus : IReceptor { #region static struct // Cluster public Cluster cluster { get; } // Senders public List synapses { get; } public Synapse AddSynapse(IReceptor sender, string nucleusName = null); // public Synapse AddClusterSynapse(Cluster clusterSender); public NucleusArray array { get; set; } #endregion static struct #region dynamic state public void UpdateState(); #endregion dynamic state public INucleus Clone(); } public interface IReceptor { #region static public string name { get; set; } // Receivers public List receivers { get; set; } // public List clusterReceivers { get; set; } // public IEnumerable allReceivers { get; } public void AddReceiver(INucleus receiver); // public void AddClusterReceiver(Cluster clusterReceiver); 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 }