WIP cluster redesign
This commit is contained in:
parent
c64ccb246c
commit
beb88f8214
@ -4,11 +4,11 @@ using UnityEngine;
|
||||
[CreateAssetMenu(menuName = "Passer/Cluster")]
|
||||
public class Cluster : ScriptableObject, INucleus {
|
||||
|
||||
private string _name;
|
||||
public string name {
|
||||
get { return _name; }
|
||||
set { _name = value; }
|
||||
}
|
||||
// private string _name;
|
||||
// public new string name {
|
||||
// get { return _name; }
|
||||
// set { _name = value; }
|
||||
// }
|
||||
|
||||
public Cluster cluster => this;
|
||||
|
||||
@ -16,10 +16,14 @@ public class Cluster : ScriptableObject, INucleus {
|
||||
|
||||
public Nucleus output => this.nuclei[0];
|
||||
|
||||
[SerializeField]
|
||||
private readonly List<Synapse> _synapses = new(); // = inputs, compare receptors in NanoBrain
|
||||
public List<Synapse> synapses => _synapses;
|
||||
|
||||
private void OnEnable() {
|
||||
// Call this function to ensure that there is at least one nucleus
|
||||
// This is an invariant and should be ensured before the nucleus is used
|
||||
// because output requires it.
|
||||
public void EnsureInitialization() {
|
||||
nuclei ??= new List<Nucleus>();
|
||||
if (nuclei.Count == 0)
|
||||
new Neuroid(this, "Output"); // Every cluster should have at least 1 neuroid
|
||||
@ -36,6 +40,11 @@ public class Cluster : ScriptableObject, INucleus {
|
||||
get => output.receivers;
|
||||
}
|
||||
|
||||
public void AddSynapse(INucleus sender) {
|
||||
Synapse synapse = new (sender, 1.0f);
|
||||
synapses.Add(synapse);
|
||||
}
|
||||
|
||||
public void GarbageCollection() {
|
||||
HashSet<INucleus> visitedNuclei = new();
|
||||
MarkNuclei(visitedNuclei, this.output);
|
||||
@ -79,6 +88,7 @@ public class Cluster : ScriptableObject, INucleus {
|
||||
public void UpdateState() {
|
||||
// Don't know if this is right
|
||||
this.output.UpdateState();
|
||||
// it is not, I should take inputs from the synapses and route them to the right internal nuclei
|
||||
}
|
||||
|
||||
#endregion Dynamics
|
||||
|
||||
@ -17,6 +17,7 @@ public interface INucleus {
|
||||
|
||||
// Senders
|
||||
public List<Synapse> synapses { get; }
|
||||
public void AddSynapse(INucleus sender);
|
||||
|
||||
#endregion static struct
|
||||
|
||||
|
||||
@ -148,6 +148,16 @@ namespace LinearAlgebra {
|
||||
return (v1.distance != v2.distance || v1.direction != v2.direction);
|
||||
}
|
||||
|
||||
public override readonly bool Equals(object o) {
|
||||
if (o is Spherical s)
|
||||
return this == s;
|
||||
return false;
|
||||
}
|
||||
|
||||
public override readonly int GetHashCode() {
|
||||
return HashCode.Combine(this.distance, this.direction);
|
||||
}
|
||||
|
||||
public static float Distance(Spherical v1, Spherical v2) {
|
||||
// Convert degrees to radians
|
||||
float thetaARadians = v1.direction.horizontal.inRadians;
|
||||
|
||||
@ -95,9 +95,10 @@ public class Nucleus : INucleus {
|
||||
this.id = this.GetHashCode();
|
||||
}
|
||||
|
||||
public virtual void AddReceiver(INucleus receiver) {
|
||||
this.receivers.Add(new Receiver(receiver));
|
||||
//receiver.SetWeight(this, 1.0f);
|
||||
public virtual void AddReceiver(INucleus receivingNucleus) {
|
||||
this.receivers.Add(new Receiver(receivingNucleus));
|
||||
//receivingNucleus.SetWeight(this, 1.0f);
|
||||
receivingNucleus.AddSynapse(this);
|
||||
}
|
||||
|
||||
public void RemoveReceiver(INucleus receiverNucleus) {
|
||||
@ -140,6 +141,10 @@ public class Nucleus : INucleus {
|
||||
return false;
|
||||
}
|
||||
|
||||
public void AddSynapse(INucleus sendingNucleus) {
|
||||
Synapse synapse = new(sendingNucleus, 1.0f);
|
||||
this.synapses.Add(synapse);
|
||||
}
|
||||
public void SetWeight(Nucleus nucleus, float weight) {
|
||||
foreach (Synapse synapse in synapses) {
|
||||
if (synapse.nucleus == nucleus) {
|
||||
@ -167,11 +172,11 @@ public class Nucleus : INucleus {
|
||||
}
|
||||
}
|
||||
|
||||
[System.Serializable]
|
||||
[Serializable]
|
||||
public class Synapse {
|
||||
[System.NonSerialized]
|
||||
[NonSerialized]
|
||||
public INucleus nucleus;
|
||||
public NanoBrain cluster;
|
||||
public Cluster cluster;
|
||||
public int nucleusId;
|
||||
public float weight;
|
||||
|
||||
@ -186,9 +191,9 @@ public class Synapse {
|
||||
// public AnimationCurve curve;
|
||||
public float curveMax = 1.0f;
|
||||
|
||||
public Synapse(Nucleus nucleus, float weight) {
|
||||
public Synapse(INucleus nucleus, float weight) {
|
||||
this.nucleus = nucleus;
|
||||
this.nucleusId = nucleus.id;
|
||||
//this.nucleusId = nucleus.id;
|
||||
this.weight = weight;
|
||||
}
|
||||
|
||||
|
||||
@ -58,8 +58,10 @@ public class ClusterInspector : Editor {
|
||||
UpdateLayout(evt.newRect.width);
|
||||
});
|
||||
|
||||
if (cluster != null)
|
||||
if (cluster != null) {
|
||||
cluster.EnsureInitialization();
|
||||
graph.SetGraph(null, cluster, cluster.output, inspectorContainer);
|
||||
}
|
||||
else
|
||||
Debug.LogWarning(" No brain!");
|
||||
|
||||
@ -68,7 +70,7 @@ public class ClusterInspector : Editor {
|
||||
}
|
||||
|
||||
public class GraphView : VisualElement {
|
||||
Cluster brain;
|
||||
Cluster cluster;
|
||||
SerializedObject serializedBrain;
|
||||
INucleus currentNucleus;
|
||||
GameObject gameObject;
|
||||
@ -101,7 +103,7 @@ public class ClusterInspector : Editor {
|
||||
|
||||
public void SetGraph(GameObject gameObject, Cluster brain, Nucleus nucleus, VisualElement inspectorContainer) {
|
||||
this.gameObject = gameObject;
|
||||
this.brain = brain;
|
||||
this.cluster = brain;
|
||||
if (Application.isPlaying == false)
|
||||
this.serializedBrain = new SerializedObject(brain);
|
||||
this.currentNucleus = nucleus;
|
||||
@ -118,7 +120,7 @@ public class ClusterInspector : Editor {
|
||||
|
||||
if (currentWrapper != null)
|
||||
DestroyImmediate(currentWrapper);
|
||||
currentWrapper = CreateInstance<ClusterWrapper>().Init(this.currentNucleus, brain);
|
||||
currentWrapper = CreateInstance<ClusterWrapper>().Init(this.currentNucleus, cluster);
|
||||
DrawInspector(inspectorContainer);
|
||||
}
|
||||
|
||||
@ -479,7 +481,7 @@ public class ClusterInspector : Editor {
|
||||
|
||||
EditorGUILayout.Space();
|
||||
|
||||
ConnectNucleus(this.currentNucleus);
|
||||
ConnectNucleus(cluster, this.currentNucleus);
|
||||
if (GUILayout.Button("Add Input Neuron"))
|
||||
AddInputNeuron(this.currentNucleus);
|
||||
// if (GUILayout.Button("Add Input Perceptoid"))
|
||||
@ -504,7 +506,7 @@ public class ClusterInspector : Editor {
|
||||
}
|
||||
|
||||
protected virtual void AddInputNeuron(INucleus nucleus) {
|
||||
Neuroid newNeuroid = new(this.brain.cluster, "New neuron");
|
||||
Neuroid newNeuroid = new(this.cluster.cluster, "New neuron");
|
||||
newNeuroid.AddReceiver(nucleus);
|
||||
this.currentNucleus = newNeuroid;
|
||||
BuildLayers();
|
||||
@ -541,13 +543,14 @@ public class ClusterInspector : Editor {
|
||||
brainInstance.AddReceiver(nucleus);
|
||||
}
|
||||
|
||||
protected virtual void ConnectNucleus(INucleus nucleus) {
|
||||
if (this.currentNucleus.cluster == null)
|
||||
// Connect to another nucleus in the same cluster
|
||||
protected virtual void ConnectNucleus(Cluster cluster, INucleus nucleus) {
|
||||
if (cluster == null)
|
||||
return;
|
||||
|
||||
IEnumerable<string> synapseNuclei = this.currentNucleus.synapses.Select(synapse => synapse.nucleus.name);
|
||||
//IEnumerable<string> perceptei = this.currentNucleus.brain.perceptei.Select(i => i.name).Except(synapseNuclei);
|
||||
IEnumerable<string> nuclei = this.currentNucleus.cluster.nuclei.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();
|
||||
int selectedIndex = -1;
|
||||
@ -561,7 +564,7 @@ public class ClusterInspector : Editor {
|
||||
// Nucleus n = this.currentNucleus.brain.nuclei[selectedIndex - perceptei.Count()];
|
||||
// n.AddReceiver(this.currentNucleus);
|
||||
// }
|
||||
Nucleus n = this.currentNucleus.cluster.nuclei[selectedIndex];
|
||||
Nucleus n = cluster.nuclei[selectedIndex];
|
||||
n.AddReceiver(this.currentNucleus);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
@ -7,7 +8,6 @@ public class NanoBrain : ScriptableObject, ISerializationCallbackReceiver {
|
||||
public List<Perceptoid> perceptei = new();
|
||||
public List<Receptor> receptors = new();
|
||||
|
||||
public Cluster cluster;
|
||||
|
||||
// This is probably always the first element in the nuclei list...
|
||||
[System.NonSerialized]
|
||||
@ -15,9 +15,11 @@ public class NanoBrain : ScriptableObject, ISerializationCallbackReceiver {
|
||||
public int rootId;
|
||||
|
||||
public NanoBrain() {
|
||||
this.output = new Neuroid(this.cluster, "Root");
|
||||
this.cluster = new();
|
||||
}
|
||||
// this.cluster = new();
|
||||
// this.output = new Neuroid(this.cluster, "Root");
|
||||
}
|
||||
|
||||
public Cluster cluster;
|
||||
|
||||
public void AddReceiver(INucleus receiver) {
|
||||
output.AddReceiver(receiver);
|
||||
@ -30,9 +32,9 @@ public class NanoBrain : ScriptableObject, ISerializationCallbackReceiver {
|
||||
|
||||
public void UpdateNuclei() {
|
||||
foreach (Nucleus nucleus in nuclei)
|
||||
nucleus.IncreaseAge();
|
||||
nucleus.IncreaseAge();
|
||||
foreach (Perceptoid perception in perceptei)
|
||||
perception.IncreaseAge();
|
||||
perception.IncreaseAge();
|
||||
}
|
||||
|
||||
public void OnBeforeSerialize() {
|
||||
@ -47,49 +49,50 @@ public class NanoBrain : ScriptableObject, ISerializationCallbackReceiver {
|
||||
}
|
||||
|
||||
foreach (Perceptoid perceptoid in this.perceptei.ToArray())
|
||||
perceptoid.Rebuild(this);
|
||||
perceptoid.Rebuild(this);
|
||||
}
|
||||
catch (System.Exception) { }
|
||||
this.cluster.GarbageCollection();
|
||||
if (this.cluster != null)
|
||||
this.cluster.GarbageCollection();
|
||||
}
|
||||
|
||||
/*
|
||||
public void GarbageCollection() {
|
||||
HashSet<INucleus> visitedNuclei = new();
|
||||
MarkNuclei(visitedNuclei, this.output);
|
||||
//Debug.Log($"Garbage collection found {visitedNuclei.Count} Nuclei");
|
||||
this.nuclei.RemoveAll(nucleus => visitedNuclei.Contains(nucleus) == false);
|
||||
this.perceptei.RemoveAll(perceptoid => visitedNuclei.Contains(perceptoid) == false);
|
||||
}
|
||||
|
||||
public void MarkNuclei(HashSet<INucleus> visitedNuclei, INucleus nucleus) {
|
||||
if (nucleus is null)
|
||||
return;
|
||||
|
||||
if (nucleus.brain == null)
|
||||
nucleus.brain = this;
|
||||
|
||||
visitedNuclei.Add(nucleus);
|
||||
if (nucleus.synapses != null) {
|
||||
HashSet<Synapse> visitedSynapses = new();
|
||||
foreach (Synapse synapse in nucleus.synapses) {
|
||||
if (synapse != null && synapse.nucleus != null) {
|
||||
visitedSynapses.Add(synapse);
|
||||
MarkNuclei(visitedNuclei, synapse.nucleus);
|
||||
}
|
||||
}
|
||||
nucleus.synapses.RemoveAll(synapse => visitedSynapses.Contains(synapse) == false);
|
||||
/*
|
||||
public void GarbageCollection() {
|
||||
HashSet<INucleus> visitedNuclei = new();
|
||||
MarkNuclei(visitedNuclei, this.output);
|
||||
//Debug.Log($"Garbage collection found {visitedNuclei.Count} Nuclei");
|
||||
this.nuclei.RemoveAll(nucleus => visitedNuclei.Contains(nucleus) == false);
|
||||
this.perceptei.RemoveAll(perceptoid => visitedNuclei.Contains(perceptoid) == false);
|
||||
}
|
||||
if (nucleus.receivers != null) {
|
||||
HashSet<Receiver> visitedReceivers = new();
|
||||
foreach (Receiver receiver in nucleus.receivers) {
|
||||
if (receiver != null && receiver.nucleus != null) {
|
||||
visitedReceivers.Add(receiver);
|
||||
visitedNuclei.Add(receiver.nucleus);
|
||||
|
||||
public void MarkNuclei(HashSet<INucleus> visitedNuclei, INucleus nucleus) {
|
||||
if (nucleus is null)
|
||||
return;
|
||||
|
||||
if (nucleus.brain == null)
|
||||
nucleus.brain = this;
|
||||
|
||||
visitedNuclei.Add(nucleus);
|
||||
if (nucleus.synapses != null) {
|
||||
HashSet<Synapse> visitedSynapses = new();
|
||||
foreach (Synapse synapse in nucleus.synapses) {
|
||||
if (synapse != null && synapse.nucleus != null) {
|
||||
visitedSynapses.Add(synapse);
|
||||
MarkNuclei(visitedNuclei, synapse.nucleus);
|
||||
}
|
||||
}
|
||||
nucleus.synapses.RemoveAll(synapse => visitedSynapses.Contains(synapse) == false);
|
||||
}
|
||||
if (nucleus.receivers != null) {
|
||||
HashSet<Receiver> visitedReceivers = new();
|
||||
foreach (Receiver receiver in nucleus.receivers) {
|
||||
if (receiver != null && receiver.nucleus != null) {
|
||||
visitedReceivers.Add(receiver);
|
||||
visitedNuclei.Add(receiver.nucleus);
|
||||
}
|
||||
}
|
||||
nucleus.receivers.RemoveAll(receiver => visitedReceivers.Contains(receiver) == false);
|
||||
}
|
||||
nucleus.receivers.RemoveAll(receiver => visitedReceivers.Contains(receiver) == false);
|
||||
}
|
||||
}
|
||||
*/
|
||||
*/
|
||||
}
|
||||
@ -1,20 +0,0 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 60a957541c24c57e78018c202ebb1d9b, type: 3}
|
||||
m_Name: New Cluster 1
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Cluster
|
||||
nuclei:
|
||||
- id: 949579472
|
||||
_name: Output
|
||||
_synapses: []
|
||||
_receivers: []
|
||||
nucleusType:
|
||||
@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ad89de17be687dbc18a57252cadda0f3
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -12,4 +12,9 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: 60a957541c24c57e78018c202ebb1d9b, type: 3}
|
||||
m_Name: New Cluster
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Cluster
|
||||
nuclei: []
|
||||
nuclei:
|
||||
- id: 764290112
|
||||
_name: Output
|
||||
_synapses: []
|
||||
_receivers: []
|
||||
nucleusType:
|
||||
|
||||
@ -1,59 +0,0 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 36081359186edfec998d891a1feeb17b, type: 3}
|
||||
m_Name: New Nano Brain
|
||||
m_EditorClassIdentifier: Assembly-CSharp::NanoBrain
|
||||
title:
|
||||
count: 0
|
||||
color: {r: 1, g: 1, b: 1, a: 1}
|
||||
texture: {fileID: 0}
|
||||
nuclei:
|
||||
- id: 2025140912
|
||||
_name: Root
|
||||
synapses: []
|
||||
receivers: []
|
||||
nucleusType:
|
||||
isSleeping: 0
|
||||
_curvePreset: 0
|
||||
curve:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- serializedVersion: 3
|
||||
time: 0
|
||||
value: 0
|
||||
inSlope: 0
|
||||
outSlope: 1
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0
|
||||
outWeight: 0
|
||||
- serializedVersion: 3
|
||||
time: 1000
|
||||
value: 1000
|
||||
inSlope: 1
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0
|
||||
outWeight: 0
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
curveMax: 1
|
||||
average: 0
|
||||
inverse: 0
|
||||
exponent: 1
|
||||
perceptei: []
|
||||
rootId: 2025140912
|
||||
references:
|
||||
version: 2
|
||||
RefIds: []
|
||||
@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: fab876d6bf7dc9b10a56541a7eeccdd2
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -12,29 +12,12 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: 36081359186edfec998d891a1feeb17b, type: 3}
|
||||
m_Name: SwarmingBrain
|
||||
m_EditorClassIdentifier: Assembly-CSharp::NanoBrainObj
|
||||
title:
|
||||
count: 0
|
||||
color: {r: 1, g: 1, b: 1, a: 1}
|
||||
texture: {fileID: 0}
|
||||
nuclei:
|
||||
- id: -1707533328
|
||||
_name: Root
|
||||
synapses:
|
||||
- nucleusId: -112538112
|
||||
weight: 1
|
||||
curveMax: -10
|
||||
- nucleusId: 1938577052
|
||||
weight: 2.2
|
||||
curveMax: 10
|
||||
- nucleusId: 1641120128
|
||||
weight: -5
|
||||
curveMax: 1000
|
||||
- nucleusId: -1857835930
|
||||
weight: 0.5
|
||||
curveMax: 1
|
||||
receivers: []
|
||||
_synapses: []
|
||||
_receivers: []
|
||||
nucleusType:
|
||||
isSleeping: 0
|
||||
_curvePreset: 0
|
||||
curve:
|
||||
serializedVersion: 2
|
||||
@ -66,14 +49,9 @@ MonoBehaviour:
|
||||
exponent: 1
|
||||
- id: -112538112
|
||||
_name: Avoidance
|
||||
synapses:
|
||||
- nucleusId: 407735232
|
||||
weight: -1
|
||||
curveMax: 0
|
||||
receivers:
|
||||
- nucleusId: -1707533328
|
||||
_synapses: []
|
||||
_receivers: []
|
||||
nucleusType:
|
||||
isSleeping: 0
|
||||
_curvePreset: 0
|
||||
curve:
|
||||
serializedVersion: 2
|
||||
@ -105,29 +83,9 @@ MonoBehaviour:
|
||||
exponent: 1
|
||||
- id: 1938577052
|
||||
_name: Cohesion
|
||||
synapses:
|
||||
- nucleusId: -1659429232
|
||||
weight: 1
|
||||
curveMax: 1
|
||||
- nucleusId: 839544896
|
||||
weight: 1
|
||||
curveMax: 1
|
||||
- nucleusId: -348340288
|
||||
weight: 1
|
||||
curveMax: 1
|
||||
- nucleusId: -1095934288
|
||||
weight: 1
|
||||
curveMax: 1
|
||||
- nucleusId: -1413006832
|
||||
weight: 1
|
||||
curveMax: 1
|
||||
- nucleusId: -61245040
|
||||
weight: 1
|
||||
curveMax: 1
|
||||
receivers:
|
||||
- nucleusId: -1707533328
|
||||
_synapses: []
|
||||
_receivers: []
|
||||
nucleusType:
|
||||
isSleeping: 0
|
||||
_curvePreset: 0
|
||||
curve:
|
||||
serializedVersion: 2
|
||||
@ -159,29 +117,9 @@ MonoBehaviour:
|
||||
exponent: 1
|
||||
- id: 1641120128
|
||||
_name: Separation
|
||||
synapses:
|
||||
- nucleusId: 1710403072
|
||||
weight: 1
|
||||
curveMax: 1
|
||||
- nucleusId: -916054576
|
||||
weight: 1
|
||||
curveMax: 1
|
||||
- nucleusId: -1391520368
|
||||
weight: 1
|
||||
curveMax: 1
|
||||
- nucleusId: 763145504
|
||||
weight: 1
|
||||
curveMax: 1
|
||||
- nucleusId: 1469392160
|
||||
weight: 1
|
||||
curveMax: 1
|
||||
- nucleusId: -1828317248
|
||||
weight: 1
|
||||
curveMax: 1
|
||||
receivers:
|
||||
- nucleusId: -1707533328
|
||||
_synapses: []
|
||||
_receivers: []
|
||||
nucleusType:
|
||||
isSleeping: 0
|
||||
_curvePreset: 0
|
||||
curve:
|
||||
serializedVersion: 2
|
||||
@ -213,29 +151,9 @@ MonoBehaviour:
|
||||
exponent: 1
|
||||
- id: -1857835930
|
||||
_name: Alignment
|
||||
synapses:
|
||||
- nucleusId: -1659687600
|
||||
weight: 1
|
||||
curveMax: 1
|
||||
- nucleusId: 1322333072
|
||||
weight: 1
|
||||
curveMax: 1
|
||||
- nucleusId: -1563920864
|
||||
weight: 1
|
||||
curveMax: 1
|
||||
- nucleusId: 182328688
|
||||
weight: 1
|
||||
curveMax: 1
|
||||
- nucleusId: -1666561744
|
||||
weight: 1
|
||||
curveMax: 1
|
||||
- nucleusId: -1884196224
|
||||
weight: 1
|
||||
curveMax: 1
|
||||
receivers:
|
||||
- nucleusId: -1707533328
|
||||
_synapses: []
|
||||
_receivers: []
|
||||
nucleusType:
|
||||
isSleeping: 0
|
||||
_curvePreset: 0
|
||||
curve:
|
||||
serializedVersion: 2
|
||||
@ -267,14 +185,9 @@ MonoBehaviour:
|
||||
exponent: 1
|
||||
- id: 1710403072
|
||||
_name: Inverse Boid A
|
||||
synapses:
|
||||
- nucleusId: -1659429232
|
||||
weight: 1
|
||||
curveMax: 1
|
||||
receivers:
|
||||
- nucleusId: 1641120128
|
||||
_synapses: []
|
||||
_receivers: []
|
||||
nucleusType:
|
||||
isSleeping: 0
|
||||
_curvePreset: 3
|
||||
curve:
|
||||
serializedVersion: 2
|
||||
@ -1440,14 +1353,9 @@ MonoBehaviour:
|
||||
exponent: 1
|
||||
- id: -916054576
|
||||
_name: Inverse Boid B
|
||||
synapses:
|
||||
- nucleusId: 839544896
|
||||
weight: 1
|
||||
curveMax: 1
|
||||
receivers:
|
||||
- nucleusId: 1641120128
|
||||
_synapses: []
|
||||
_receivers: []
|
||||
nucleusType:
|
||||
isSleeping: 0
|
||||
_curvePreset: 3
|
||||
curve:
|
||||
serializedVersion: 2
|
||||
@ -2613,14 +2521,9 @@ MonoBehaviour:
|
||||
exponent: 1
|
||||
- id: -1391520368
|
||||
_name: Inverse Boid C
|
||||
synapses:
|
||||
- nucleusId: -348340288
|
||||
weight: 1
|
||||
curveMax: 1
|
||||
receivers:
|
||||
- nucleusId: 1641120128
|
||||
_synapses: []
|
||||
_receivers: []
|
||||
nucleusType:
|
||||
isSleeping: 0
|
||||
_curvePreset: 3
|
||||
curve:
|
||||
serializedVersion: 2
|
||||
@ -3786,14 +3689,9 @@ MonoBehaviour:
|
||||
exponent: 1
|
||||
- id: 763145504
|
||||
_name: Inverse Boid D
|
||||
synapses:
|
||||
- nucleusId: -1095934288
|
||||
weight: 1
|
||||
curveMax: 1
|
||||
receivers:
|
||||
- nucleusId: 1641120128
|
||||
_synapses: []
|
||||
_receivers: []
|
||||
nucleusType:
|
||||
isSleeping: 0
|
||||
_curvePreset: 3
|
||||
curve:
|
||||
serializedVersion: 2
|
||||
@ -4959,14 +4857,9 @@ MonoBehaviour:
|
||||
exponent: 1
|
||||
- id: 1469392160
|
||||
_name: Inverse Boid E
|
||||
synapses:
|
||||
- nucleusId: -1413006832
|
||||
weight: 1
|
||||
curveMax: 1
|
||||
receivers:
|
||||
- nucleusId: 1641120128
|
||||
_synapses: []
|
||||
_receivers: []
|
||||
nucleusType:
|
||||
isSleeping: 0
|
||||
_curvePreset: 3
|
||||
curve:
|
||||
serializedVersion: 2
|
||||
@ -6132,14 +6025,9 @@ MonoBehaviour:
|
||||
exponent: 1
|
||||
- id: -1828317248
|
||||
_name: Inverse Bodi F
|
||||
synapses:
|
||||
- nucleusId: -61245040
|
||||
weight: 1
|
||||
curveMax: 1
|
||||
receivers:
|
||||
- nucleusId: 1641120128
|
||||
_synapses: []
|
||||
_receivers: []
|
||||
nucleusType:
|
||||
isSleeping: 0
|
||||
_curvePreset: 3
|
||||
curve:
|
||||
serializedVersion: 2
|
||||
@ -7306,11 +7194,9 @@ MonoBehaviour:
|
||||
perceptei:
|
||||
- id: 407735232
|
||||
_name: Boundary
|
||||
synapses: []
|
||||
receivers:
|
||||
- nucleusId: -112538112
|
||||
_synapses: []
|
||||
_receivers: []
|
||||
nucleusType: Perceptoid
|
||||
isSleeping: 0
|
||||
_curvePreset: 0
|
||||
curve:
|
||||
serializedVersion: 2
|
||||
@ -7322,17 +7208,17 @@ MonoBehaviour:
|
||||
average: 0
|
||||
inverse: 0
|
||||
exponent: 1
|
||||
baseName:
|
||||
thingType: 1
|
||||
brain: {fileID: 0}
|
||||
baseName: Boundary
|
||||
thingId: 0
|
||||
array:
|
||||
rid: -2
|
||||
thingType: 1
|
||||
- id: -1659429232
|
||||
_name: BoidA
|
||||
synapses: []
|
||||
receivers:
|
||||
- nucleusId: 1938577052
|
||||
- nucleusId: 1710403072
|
||||
_synapses: []
|
||||
_receivers: []
|
||||
nucleusType: Perceptoid
|
||||
isSleeping: 0
|
||||
_curvePreset: 0
|
||||
curve:
|
||||
serializedVersion: 2
|
||||
@ -7344,17 +7230,17 @@ MonoBehaviour:
|
||||
average: 0
|
||||
inverse: 0
|
||||
exponent: 1
|
||||
baseName:
|
||||
thingType: 2
|
||||
brain: {fileID: 0}
|
||||
baseName: BoidA
|
||||
thingId: 0
|
||||
array:
|
||||
rid: 2243600969536897085
|
||||
thingType: 2
|
||||
- id: 839544896
|
||||
_name: BoidB
|
||||
synapses: []
|
||||
receivers:
|
||||
- nucleusId: 1938577052
|
||||
- nucleusId: -916054576
|
||||
_synapses: []
|
||||
_receivers: []
|
||||
nucleusType: Perceptoid
|
||||
isSleeping: 0
|
||||
_curvePreset: 0
|
||||
curve:
|
||||
serializedVersion: 2
|
||||
@ -7366,17 +7252,17 @@ MonoBehaviour:
|
||||
average: 0
|
||||
inverse: 0
|
||||
exponent: 1
|
||||
baseName:
|
||||
thingType: 2
|
||||
brain: {fileID: 0}
|
||||
baseName: BoidB
|
||||
thingId: 0
|
||||
array:
|
||||
rid: 2243600969536897086
|
||||
thingType: 2
|
||||
- id: -348340288
|
||||
_name: BoidC
|
||||
synapses: []
|
||||
receivers:
|
||||
- nucleusId: 1938577052
|
||||
- nucleusId: -1391520368
|
||||
_synapses: []
|
||||
_receivers: []
|
||||
nucleusType: Perceptoid
|
||||
isSleeping: 0
|
||||
_curvePreset: 0
|
||||
curve:
|
||||
serializedVersion: 2
|
||||
@ -7388,17 +7274,17 @@ MonoBehaviour:
|
||||
average: 0
|
||||
inverse: 0
|
||||
exponent: 1
|
||||
baseName:
|
||||
thingType: 2
|
||||
brain: {fileID: 0}
|
||||
baseName: BoidC
|
||||
thingId: 0
|
||||
array:
|
||||
rid: 2243600969536897087
|
||||
thingType: 2
|
||||
- id: -1095934288
|
||||
_name: BoidD
|
||||
synapses: []
|
||||
receivers:
|
||||
- nucleusId: 1938577052
|
||||
- nucleusId: 763145504
|
||||
_synapses: []
|
||||
_receivers: []
|
||||
nucleusType: Perceptoid
|
||||
isSleeping: 0
|
||||
_curvePreset: 0
|
||||
curve:
|
||||
serializedVersion: 2
|
||||
@ -7410,17 +7296,17 @@ MonoBehaviour:
|
||||
average: 0
|
||||
inverse: 0
|
||||
exponent: 1
|
||||
baseName:
|
||||
thingType: 2
|
||||
brain: {fileID: 0}
|
||||
baseName: BoidD
|
||||
thingId: 0
|
||||
array:
|
||||
rid: 2243600969536897088
|
||||
thingType: 2
|
||||
- id: -1413006832
|
||||
_name: BoidE
|
||||
synapses: []
|
||||
receivers:
|
||||
- nucleusId: 1938577052
|
||||
- nucleusId: 1469392160
|
||||
_synapses: []
|
||||
_receivers: []
|
||||
nucleusType: Perceptoid
|
||||
isSleeping: 0
|
||||
_curvePreset: 0
|
||||
curve:
|
||||
serializedVersion: 2
|
||||
@ -7432,17 +7318,17 @@ MonoBehaviour:
|
||||
average: 0
|
||||
inverse: 0
|
||||
exponent: 1
|
||||
baseName:
|
||||
thingType: 2
|
||||
brain: {fileID: 0}
|
||||
baseName: BoidE
|
||||
thingId: 0
|
||||
array:
|
||||
rid: 2243600969536897089
|
||||
thingType: 2
|
||||
- id: -61245040
|
||||
_name: BoidF
|
||||
synapses: []
|
||||
receivers:
|
||||
- nucleusId: 1938577052
|
||||
- nucleusId: -1828317248
|
||||
_synapses: []
|
||||
_receivers: []
|
||||
nucleusType: Perceptoid
|
||||
isSleeping: 0
|
||||
_curvePreset: 0
|
||||
curve:
|
||||
serializedVersion: 2
|
||||
@ -7454,16 +7340,17 @@ MonoBehaviour:
|
||||
average: 0
|
||||
inverse: 0
|
||||
exponent: 1
|
||||
baseName:
|
||||
thingType: 2
|
||||
brain: {fileID: 0}
|
||||
baseName: BoidF
|
||||
thingId: 0
|
||||
array:
|
||||
rid: 2243600969536897090
|
||||
thingType: 2
|
||||
- id: -1659687600
|
||||
_name: BoidA Velocity
|
||||
synapses: []
|
||||
receivers:
|
||||
- nucleusId: -1857835930
|
||||
_synapses: []
|
||||
_receivers: []
|
||||
nucleusType: Perceptoid
|
||||
isSleeping: 0
|
||||
_curvePreset: 0
|
||||
curve:
|
||||
serializedVersion: 2
|
||||
@ -7475,16 +7362,17 @@ MonoBehaviour:
|
||||
average: 0
|
||||
inverse: 0
|
||||
exponent: 1
|
||||
baseName:
|
||||
thingType: 3
|
||||
brain: {fileID: 0}
|
||||
baseName: BoidA Velocity
|
||||
thingId: 0
|
||||
array:
|
||||
rid: -2
|
||||
thingType: 3
|
||||
- id: 1322333072
|
||||
_name: BoidB Velocity
|
||||
synapses: []
|
||||
receivers:
|
||||
- nucleusId: -1857835930
|
||||
_synapses: []
|
||||
_receivers: []
|
||||
nucleusType: Perceptoid
|
||||
isSleeping: 0
|
||||
_curvePreset: 0
|
||||
curve:
|
||||
serializedVersion: 2
|
||||
@ -7496,16 +7384,17 @@ MonoBehaviour:
|
||||
average: 0
|
||||
inverse: 0
|
||||
exponent: 1
|
||||
baseName:
|
||||
thingType: 3
|
||||
brain: {fileID: 0}
|
||||
baseName: BoidB Velocity
|
||||
thingId: 0
|
||||
array:
|
||||
rid: -2
|
||||
thingType: 3
|
||||
- id: -1563920864
|
||||
_name: BoidC Velocity
|
||||
synapses: []
|
||||
receivers:
|
||||
- nucleusId: -1857835930
|
||||
_synapses: []
|
||||
_receivers: []
|
||||
nucleusType: Perceptoid
|
||||
isSleeping: 0
|
||||
_curvePreset: 0
|
||||
curve:
|
||||
serializedVersion: 2
|
||||
@ -7517,16 +7406,17 @@ MonoBehaviour:
|
||||
average: 0
|
||||
inverse: 0
|
||||
exponent: 1
|
||||
baseName:
|
||||
thingType: 3
|
||||
brain: {fileID: 0}
|
||||
baseName: BoidC Velocity
|
||||
thingId: 0
|
||||
array:
|
||||
rid: -2
|
||||
thingType: 3
|
||||
- id: 182328688
|
||||
_name: BoidD Velocity
|
||||
synapses: []
|
||||
receivers:
|
||||
- nucleusId: -1857835930
|
||||
_synapses: []
|
||||
_receivers: []
|
||||
nucleusType: Perceptoid
|
||||
isSleeping: 0
|
||||
_curvePreset: 0
|
||||
curve:
|
||||
serializedVersion: 2
|
||||
@ -7538,16 +7428,17 @@ MonoBehaviour:
|
||||
average: 0
|
||||
inverse: 0
|
||||
exponent: 1
|
||||
baseName:
|
||||
thingType: 3
|
||||
brain: {fileID: 0}
|
||||
baseName: BoidD Velocity
|
||||
thingId: 0
|
||||
array:
|
||||
rid: -2
|
||||
thingType: 3
|
||||
- id: -1666561744
|
||||
_name: BoidE Velocity
|
||||
synapses: []
|
||||
receivers:
|
||||
- nucleusId: -1857835930
|
||||
_synapses: []
|
||||
_receivers: []
|
||||
nucleusType: Perceptoid
|
||||
isSleeping: 0
|
||||
_curvePreset: 0
|
||||
curve:
|
||||
serializedVersion: 2
|
||||
@ -7559,16 +7450,17 @@ MonoBehaviour:
|
||||
average: 0
|
||||
inverse: 0
|
||||
exponent: 1
|
||||
baseName:
|
||||
thingType: 3
|
||||
brain: {fileID: 0}
|
||||
baseName: BoidE Velocity
|
||||
thingId: 0
|
||||
array:
|
||||
rid: -2
|
||||
thingType: 3
|
||||
- id: -1884196224
|
||||
_name: BoidF Velocity
|
||||
synapses: []
|
||||
receivers:
|
||||
- nucleusId: -1857835930
|
||||
_synapses: []
|
||||
_receivers: []
|
||||
nucleusType: Perceptoid
|
||||
isSleeping: 0
|
||||
_curvePreset: 0
|
||||
curve:
|
||||
serializedVersion: 2
|
||||
@ -7580,7 +7472,202 @@ MonoBehaviour:
|
||||
average: 0
|
||||
inverse: 0
|
||||
exponent: 1
|
||||
baseName:
|
||||
thingType: 3
|
||||
brain: {fileID: 0}
|
||||
baseName: BoidF Velocity
|
||||
thingId: 0
|
||||
array:
|
||||
rid: -2
|
||||
thingType: 3
|
||||
cluster: {fileID: 0}
|
||||
rootId: -1707533328
|
||||
references:
|
||||
version: 2
|
||||
RefIds:
|
||||
- rid: -2
|
||||
type: {class: , ns: , asm: }
|
||||
- rid: 2243600969536897085
|
||||
type: {class: PercepteiArray, ns: , asm: Assembly-CSharp}
|
||||
data:
|
||||
perceptei:
|
||||
- rid: 2243600969536897091
|
||||
name: BoidA
|
||||
- rid: 2243600969536897086
|
||||
type: {class: PercepteiArray, ns: , asm: Assembly-CSharp}
|
||||
data:
|
||||
perceptei:
|
||||
- rid: 2243600969536897092
|
||||
name: BoidB
|
||||
- rid: 2243600969536897087
|
||||
type: {class: PercepteiArray, ns: , asm: Assembly-CSharp}
|
||||
data:
|
||||
perceptei:
|
||||
- rid: 2243600969536897093
|
||||
name: BoidC
|
||||
- rid: 2243600969536897088
|
||||
type: {class: PercepteiArray, ns: , asm: Assembly-CSharp}
|
||||
data:
|
||||
perceptei:
|
||||
- rid: 2243600969536897094
|
||||
name: BoidD
|
||||
- rid: 2243600969536897089
|
||||
type: {class: PercepteiArray, ns: , asm: Assembly-CSharp}
|
||||
data:
|
||||
perceptei:
|
||||
- rid: 2243600969536897095
|
||||
name: BoidE
|
||||
- rid: 2243600969536897090
|
||||
type: {class: PercepteiArray, ns: , asm: Assembly-CSharp}
|
||||
data:
|
||||
perceptei:
|
||||
- rid: 2243600969536897096
|
||||
name: BoidF
|
||||
- rid: 2243600969536897091
|
||||
type: {class: Perceptoid, ns: , asm: Assembly-CSharp}
|
||||
data:
|
||||
id: -1659429232
|
||||
_name: BoidA
|
||||
_synapses: []
|
||||
_receivers: []
|
||||
nucleusType: Perceptoid
|
||||
_curvePreset: 0
|
||||
curve:
|
||||
serializedVersion: 2
|
||||
m_Curve: []
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
curveMax: 1
|
||||
average: 0
|
||||
inverse: 0
|
||||
exponent: 1
|
||||
brain: {fileID: 0}
|
||||
baseName: BoidA
|
||||
thingId: 0
|
||||
array:
|
||||
rid: 2243600969536897085
|
||||
thingType: 2
|
||||
- rid: 2243600969536897092
|
||||
type: {class: Perceptoid, ns: , asm: Assembly-CSharp}
|
||||
data:
|
||||
id: 839544896
|
||||
_name: BoidB
|
||||
_synapses: []
|
||||
_receivers: []
|
||||
nucleusType: Perceptoid
|
||||
_curvePreset: 0
|
||||
curve:
|
||||
serializedVersion: 2
|
||||
m_Curve: []
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
curveMax: 1
|
||||
average: 0
|
||||
inverse: 0
|
||||
exponent: 1
|
||||
brain: {fileID: 0}
|
||||
baseName: BoidB
|
||||
thingId: 0
|
||||
array:
|
||||
rid: 2243600969536897086
|
||||
thingType: 2
|
||||
- rid: 2243600969536897093
|
||||
type: {class: Perceptoid, ns: , asm: Assembly-CSharp}
|
||||
data:
|
||||
id: -348340288
|
||||
_name: BoidC
|
||||
_synapses: []
|
||||
_receivers: []
|
||||
nucleusType: Perceptoid
|
||||
_curvePreset: 0
|
||||
curve:
|
||||
serializedVersion: 2
|
||||
m_Curve: []
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
curveMax: 1
|
||||
average: 0
|
||||
inverse: 0
|
||||
exponent: 1
|
||||
brain: {fileID: 0}
|
||||
baseName: BoidC
|
||||
thingId: 0
|
||||
array:
|
||||
rid: 2243600969536897087
|
||||
thingType: 2
|
||||
- rid: 2243600969536897094
|
||||
type: {class: Perceptoid, ns: , asm: Assembly-CSharp}
|
||||
data:
|
||||
id: -1095934288
|
||||
_name: BoidD
|
||||
_synapses: []
|
||||
_receivers: []
|
||||
nucleusType: Perceptoid
|
||||
_curvePreset: 0
|
||||
curve:
|
||||
serializedVersion: 2
|
||||
m_Curve: []
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
curveMax: 1
|
||||
average: 0
|
||||
inverse: 0
|
||||
exponent: 1
|
||||
brain: {fileID: 0}
|
||||
baseName: BoidD
|
||||
thingId: 0
|
||||
array:
|
||||
rid: 2243600969536897088
|
||||
thingType: 2
|
||||
- rid: 2243600969536897095
|
||||
type: {class: Perceptoid, ns: , asm: Assembly-CSharp}
|
||||
data:
|
||||
id: -1413006832
|
||||
_name: BoidE
|
||||
_synapses: []
|
||||
_receivers: []
|
||||
nucleusType: Perceptoid
|
||||
_curvePreset: 0
|
||||
curve:
|
||||
serializedVersion: 2
|
||||
m_Curve: []
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
curveMax: 1
|
||||
average: 0
|
||||
inverse: 0
|
||||
exponent: 1
|
||||
brain: {fileID: 0}
|
||||
baseName: BoidE
|
||||
thingId: 0
|
||||
array:
|
||||
rid: 2243600969536897089
|
||||
thingType: 2
|
||||
- rid: 2243600969536897096
|
||||
type: {class: Perceptoid, ns: , asm: Assembly-CSharp}
|
||||
data:
|
||||
id: -61245040
|
||||
_name: BoidF
|
||||
_synapses: []
|
||||
_receivers: []
|
||||
nucleusType: Perceptoid
|
||||
_curvePreset: 0
|
||||
curve:
|
||||
serializedVersion: 2
|
||||
m_Curve: []
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
curveMax: 1
|
||||
average: 0
|
||||
inverse: 0
|
||||
exponent: 1
|
||||
brain: {fileID: 0}
|
||||
baseName: BoidF
|
||||
thingId: 0
|
||||
array:
|
||||
rid: 2243600969536897090
|
||||
thingType: 2
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user