51 lines
1.7 KiB
C#
51 lines
1.7 KiB
C#
using UnityEngine;
|
|
|
|
public interface IReceptor {
|
|
public string GetName();
|
|
|
|
// public NucleusArray array {
|
|
// get; set;
|
|
// }
|
|
public Nucleus[] nucleiArray { get; set; }
|
|
|
|
public void AddReceptorElement(ClusterPrefab prefab);
|
|
public void RemoveReceptorElement();
|
|
|
|
public void ProcessStimulus(Vector3 inputValue, int thingId = 0, string thingName = null);
|
|
}
|
|
|
|
public static class IReceptorHelpers {
|
|
public static Nucleus[] AddReceptorElement(Nucleus[] nucleiArray, ClusterPrefab prefab) {
|
|
if (nucleiArray.Length == 0) {
|
|
Debug.LogError("Empty perceptoid array, cannot add");
|
|
return null;
|
|
}
|
|
int newLength = nucleiArray.Length + 1;
|
|
Nucleus[] newArray = new Nucleus[newLength];
|
|
|
|
for (int i = 0; i < nucleiArray.Length; i++)
|
|
newArray[i] = nucleiArray[i];
|
|
if (nucleiArray[0] is Nucleus nucleus) {
|
|
newArray[newLength - 1] = nucleus.Clone(prefab);
|
|
newArray[newLength - 1].name += $": {newLength - 1}";
|
|
}
|
|
|
|
return newArray;
|
|
}
|
|
|
|
public static Nucleus[] RemoveReceptorElement(Nucleus[] nucleiArray) {
|
|
int newLength = nucleiArray.Length - 1;
|
|
if (newLength == 0) {
|
|
Debug.LogWarning("Perceptoid array cannot be empty");
|
|
return null;
|
|
}
|
|
Nucleus[] newPerceptei = new Nucleus[newLength];
|
|
for (int i = 0; i < newLength; i++)
|
|
newPerceptei[i] = nucleiArray[i];
|
|
// Delete the last perception
|
|
if (nucleiArray[newLength] is Nucleus nucleus)
|
|
Neuron.Delete(nucleus); //this._nuclei[newLength]);
|
|
|
|
return newPerceptei;
|
|
}
|
|
} |