Fix brain prefab cloning
This commit is contained in:
parent
00dea149f3
commit
8eb1cbea1a
@ -42,13 +42,13 @@ public class Cluster : Nucleus {
|
||||
|
||||
// Now clone the connections
|
||||
for (int nucleusIx = 0; nucleusIx < prefabNuclei.Length; nucleusIx++) {
|
||||
Nucleus receptor = prefabNuclei[nucleusIx];
|
||||
Nucleus prefabNucleus = prefabNuclei[nucleusIx];
|
||||
Nucleus clonedReceptor = clonedNuclei[nucleusIx];
|
||||
if (clonedReceptor == null)
|
||||
continue;
|
||||
|
||||
// Copy the receivers, which will also create the synapses
|
||||
foreach (Nucleus receiver in receptor.receivers) {
|
||||
foreach (Nucleus receiver in prefabNucleus.receivers) {
|
||||
int ix = GetNucleusIndex(prefabNuclei, receiver);
|
||||
if (ix < 0)
|
||||
continue;
|
||||
@ -60,7 +60,7 @@ public class Cluster : Nucleus {
|
||||
float weight = 1;
|
||||
foreach (Synapse synapse in receiver.synapses) {
|
||||
// Find the weight for this synapse
|
||||
if (synapse.nucleus == receptor) {
|
||||
if (synapse.nucleus == prefabNucleus) {
|
||||
weight = synapse.weight;
|
||||
break;
|
||||
}
|
||||
|
||||
@ -676,23 +676,19 @@ public class ClusterInspector : Editor {
|
||||
if (cluster == null)
|
||||
return;
|
||||
|
||||
IEnumerable<string> synapseNuclei = this.currentNucleus.synapses.Select(synapse => synapse.nucleus != null ? synapse.nucleus.name : "");
|
||||
//IEnumerable<string> perceptei = this.currentNucleus.brain.perceptei.Select(i => i.name).Except(synapseNuclei);
|
||||
IEnumerable<string> nuclei = cluster.nuclei.Select(i => i.name).Except(synapseNuclei);
|
||||
//string[] names = perceptei.Concat(nuclei).ToArray();
|
||||
string[] names = nuclei.ToArray();
|
||||
IEnumerable<Nucleus> synapseNuclei = this.currentNucleus.synapses
|
||||
.Where(synapse => synapse.nucleus != null)
|
||||
.Select(synapse => synapse.nucleus);
|
||||
|
||||
IEnumerable<Nucleus> nuclei = cluster.nuclei
|
||||
.Except(synapseNuclei);
|
||||
IEnumerable<string> nucleiNames = nuclei.Select(n => n.name);
|
||||
|
||||
string[] names = nucleiNames.ToArray();
|
||||
int selectedIndex = -1;
|
||||
selectedIndex = EditorGUILayout.Popup("Connect to", selectedIndex, names);
|
||||
if (selectedIndex >= 0) {
|
||||
// if (selectedIndex < perceptei.Count()) {
|
||||
// Nucleus n = this.currentNucleus.brain.perceptei[selectedIndex];
|
||||
// n.AddReceiver(this.currentNucleus);
|
||||
// }
|
||||
// else {
|
||||
// Nucleus n = this.currentNucleus.brain.nuclei[selectedIndex - perceptei.Count()];
|
||||
// n.AddReceiver(this.currentNucleus);
|
||||
// }
|
||||
Nucleus receptor = cluster.nuclei[selectedIndex];
|
||||
Nucleus receptor = nuclei.ElementAt(selectedIndex);
|
||||
receptor.AddReceiver(this.currentNucleus);
|
||||
}
|
||||
}
|
||||
|
||||
@ -91,8 +91,9 @@ public abstract class Nucleus {
|
||||
UpdateStateIsolated(new float3(0, 0, 0));
|
||||
}
|
||||
|
||||
public virtual void UpdateStateIsolated(float3 bias) {
|
||||
}
|
||||
public abstract void UpdateStateIsolated(float3 bias);
|
||||
// public virtual void UpdateStateIsolated(float3 bias) {
|
||||
// }
|
||||
|
||||
public virtual void UpdateNuclei() {
|
||||
this.stale++;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user