diff --git a/Assembly-CSharp-Editor.csproj b/Assembly-CSharp-Editor.csproj
index 0750862..584a691 100644
--- a/Assembly-CSharp-Editor.csproj
+++ b/Assembly-CSharp-Editor.csproj
@@ -48,7 +48,7 @@
-
+
diff --git a/Assets/NanoBrain/Editor/GraphEditorWindow.cs b/Assets/NanoBrain/Editor/NeuroidWindow.cs
similarity index 93%
rename from Assets/NanoBrain/Editor/GraphEditorWindow.cs
rename to Assets/NanoBrain/Editor/NeuroidWindow.cs
index e66eddb..afef229 100644
--- a/Assets/NanoBrain/Editor/GraphEditorWindow.cs
+++ b/Assets/NanoBrain/Editor/NeuroidWindow.cs
@@ -3,7 +3,7 @@ using UnityEngine;
using System.Linq;
using System.Collections.Generic;
-public class Layer {
+public class NeuroidLayer {
public int ix = 0;
public List neuroids = new();
}
@@ -13,7 +13,7 @@ public class GraphEditorWindow : EditorWindow {
private List allNeuroids;
private Dictionary neuroidPositions = new();
- private List layers = new();
+ private List layers = new();
private void OnEnable() {
EditorApplication.update += EditorUpdate;
@@ -33,7 +33,7 @@ public class GraphEditorWindow : EditorWindow {
// While there are unvisited neuroid
while (neuroids.Any(neuroid => !neuronVisited.Contains(neuroid))) {
// Create the next layer
- Layer currentLayer = new() { ix = layerIx };
+ NeuroidLayer currentLayer = new() { ix = layerIx };
int neuroidIx = 0;
foreach (Neuroid neuroid in neuroids) {
@@ -82,7 +82,7 @@ public class GraphEditorWindow : EditorWindow {
if (currentNeuroid == null)
return;
- foreach (Layer layer in layers)
+ foreach (NeuroidLayer layer in layers)
DrawLayer(layer);
// int column = 100;
// int row = 200;
@@ -119,7 +119,7 @@ public class GraphEditorWindow : EditorWindow {
// }
// }
- private void DrawLayer(Layer layer) {
+ private void DrawLayer(NeuroidLayer layer) {
int column = layer.ix * 100;
int nodeCount = layer.neuroids.Count;
float maxValue = 0;
@@ -161,7 +161,7 @@ public class GraphEditorWindow : EditorWindow {
private void HandleMouseHover(Neuroid neuroid, Rect rect) {
// Draw the tooltip
- GUIContent tooltip = new($"{neuroid.name}\n Value: {neuroid.outputValue}");
+ GUIContent tooltip = new($"{neuroid.name}\n synapse count {neuroid.synapses.Count} \n Value: {neuroid.outputValue}");
Vector2 mousePosition = Event.current.mousePosition;
// Display tooltip with some offset
@@ -197,8 +197,8 @@ public class GraphEditorWindow : EditorWindow {
}
- [MenuItem("Window/Graph Visualizer")]
+ [MenuItem("Window/Neuroid Visualizer")]
public static void ShowWindow() {
- GetWindow("Graph Visualizer");
+ GetWindow("Neuroid Visualizer");
}
}
diff --git a/Assets/NanoBrain/Editor/GraphEditorWindow.cs.meta b/Assets/NanoBrain/Editor/NeuroidWindow.cs.meta
similarity index 100%
rename from Assets/NanoBrain/Editor/GraphEditorWindow.cs.meta
rename to Assets/NanoBrain/Editor/NeuroidWindow.cs.meta
diff --git a/Assets/NanoBrain/Neuroid.cs b/Assets/NanoBrain/Neuroid.cs
index 5a40f88..1650c1c 100644
--- a/Assets/NanoBrain/Neuroid.cs
+++ b/Assets/NanoBrain/Neuroid.cs
@@ -98,6 +98,10 @@ public class Neuroid {
}
Vector3 Activation(Vector3 sum) {
+ if (synapses.Count == 0 && mode == Mode.Average)
+ Debug.LogWarning($"{this.id} {this.name} has zero synapses for average");
+ if (float.IsNaN(sum.magnitude))
+ Debug.LogWarning($"{this.id} {this.name} sum is nan");
return mode switch {
Mode.Sum => sum,
Mode.Average => sum / synapses.Count,
diff --git a/Assets/Scenes/Boids/Boids.unity b/Assets/Scenes/Boids/Boids.unity
index e9b5a3b..85e18e2 100644
--- a/Assets/Scenes/Boids/Boids.unity
+++ b/Assets/Scenes/Boids/Boids.unity
@@ -373,12 +373,12 @@ MonoBehaviour:
m_EditorClassIdentifier: Assembly-CSharp::SwarmControl
speed: 0.5
inertia: 0.1
- alignmentForce: 0
+ alignmentForce: 1
cohesionForce: 10
separationForce: 5
separationDistance: 0.5
bodyForce: 20
- boundaryForce: 5
+ boundaryForce: 2
spaceSize: {x: 10, y: 10, z: 10}
boundaryWidth: {x: 1, y: 1, z: 1}
--- !u!114 &301943979
diff --git a/Assets/Scenes/Boids/Scripts/Boid.cs b/Assets/Scenes/Boids/Scripts/Boid.cs
index a6d660c..1f1c5d6 100644
--- a/Assets/Scenes/Boids/Scripts/Boid.cs
+++ b/Assets/Scenes/Boids/Scripts/Boid.cs
@@ -104,12 +104,9 @@ public class Boid : MonoBehaviour
// outside distances per axis (0 if inside on that axis)
Vector3 outside = Vector3.Max(Vector3.zero, Vector3.Max(below, above));
- Vector3 dir = Vector3.zero;
- dir.x = (below.x > 0f) ? 1f : ((above.x > 0f) ? -1f : 0f);
- dir.y = (below.y > 0f) ? 1f : ((above.y > 0f) ? -1f : 0f);
- dir.z = (below.z > 0f) ? 1f : ((above.z > 0f) ? -1f : 0f);
-
- outside = Vector3.Scale(outside, dir);
+ float magnitude = outside.magnitude;
+ Vector3 direction = (sc.transform.position - this.transform.position).normalized;
+ outside = direction * magnitude;
boundary.SetInput(id, outside, sc.boundaryForce);
Debug.Log($"boundary {this.transform.position} {outside} force = {outside * sc.boundaryForce}");