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 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 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 { // }