Move to Spherical outputvalue
This commit is contained in:
parent
65359ecbfa
commit
a500a9e16e
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -54,7 +54,7 @@ public class NanoBrain_Editor : Editor {
|
|||||||
DrawGraph();
|
DrawGraph();
|
||||||
|
|
||||||
EditorGUILayout.TextField("Name", currentNucleus.name);
|
EditorGUILayout.TextField("Name", currentNucleus.name);
|
||||||
EditorGUILayout.Vector3Field("Output Value", currentNucleus.outputValue);
|
EditorGUILayout.Vector3Field("Output Value", currentNucleus.outputValue.ToVector3());
|
||||||
if (currentNucleus.synapses.Count > 0) {
|
if (currentNucleus.synapses.Count > 0) {
|
||||||
EditorGUI.indentLevel++;
|
EditorGUI.indentLevel++;
|
||||||
//foreach ((Nucleus nucleus, float weight) in currentNucleus.synapses) {
|
//foreach ((Nucleus nucleus, float weight) in currentNucleus.synapses) {
|
||||||
@ -65,7 +65,7 @@ public class NanoBrain_Editor : Editor {
|
|||||||
EditorGUI.BeginDisabledGroup(nucleus.isSleeping);
|
EditorGUI.BeginDisabledGroup(nucleus.isSleeping);
|
||||||
|
|
||||||
EditorGUILayout.BeginHorizontal();
|
EditorGUILayout.BeginHorizontal();
|
||||||
EditorGUILayout.Vector3Field(nucleus.name, nucleus.outputValue);
|
EditorGUILayout.Vector3Field(nucleus.name, nucleus.outputValue.ToVector3());
|
||||||
EditorGUILayout.FloatField(weight, GUILayout.Width(50));
|
EditorGUILayout.FloatField(weight, GUILayout.Width(50));
|
||||||
EditorGUILayout.EndHorizontal();
|
EditorGUILayout.EndHorizontal();
|
||||||
|
|
||||||
@ -265,7 +265,7 @@ public class NanoBrain_Editor : Editor {
|
|||||||
// Handles.color = Color.green;
|
// Handles.color = Color.green;
|
||||||
// Handles.DrawLine(brain.transform.position, brain.transform.position + Vector3.up);
|
// Handles.DrawLine(brain.transform.position, brain.transform.position + Vector3.up);
|
||||||
Handles.color = Color.yellow;
|
Handles.color = Color.yellow;
|
||||||
Vector3 worldForce = brain.transform.TransformDirection(this.currentNucleus.outputValue);
|
Vector3 worldForce = brain.transform.TransformDirection(this.currentNucleus.outputValue.ToVector3());
|
||||||
//Debug.DrawRay(position, worldForce * 10, Color.yellow);
|
//Debug.DrawRay(position, worldForce * 10, Color.yellow);
|
||||||
Handles.DrawLine(position, position + worldForce * 10);
|
Handles.DrawLine(position, position + worldForce * 10);
|
||||||
}
|
}
|
||||||
|
|||||||
8
Assets/NanoBrain/LinearAlgebra-csharp.meta
Normal file
8
Assets/NanoBrain/LinearAlgebra-csharp.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: b011ef22eaa3add3591b513363fbbd0a
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
12
Assets/NanoBrain/NanoBrain-Unity.code-workspace
Normal file
12
Assets/NanoBrain/NanoBrain-Unity.code-workspace
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"folders": [
|
||||||
|
{
|
||||||
|
"path": "../.."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "LinearAlgebra-csharp",
|
||||||
|
"path": "LinearAlgebra-csharp"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"settings": {}
|
||||||
|
}
|
||||||
7
Assets/NanoBrain/NanoBrain-Unity.code-workspace.meta
Normal file
7
Assets/NanoBrain/NanoBrain-Unity.code-workspace.meta
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: cfec45da5945b94d684a763d86b0dcf8
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -1,4 +1,5 @@
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
using LinearAlgebra;
|
||||||
|
|
||||||
[System.Serializable]
|
[System.Serializable]
|
||||||
public class Neuroid : Nucleus {
|
public class Neuroid : Nucleus {
|
||||||
@ -37,7 +38,6 @@ public class Neuroid : Nucleus {
|
|||||||
return Synapse.Presets.Reciprocal(1);
|
return Synapse.Presets.Reciprocal(1);
|
||||||
default:
|
default:
|
||||||
this.curveMax = 1;
|
this.curveMax = 1;
|
||||||
//return AnimationCurve.Constant(0, 1, 1);
|
|
||||||
return this.curve;
|
return this.curve;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -63,42 +63,34 @@ public class Neuroid : Nucleus {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void SetInput(Neuroid input) {
|
public void SetInput(Neuroid input) {
|
||||||
// if (this.synapses.ContainsKey(input) == false)
|
|
||||||
// this.synapses[input] = 1.0f;
|
|
||||||
if (this.SynapseExists(input) == false)
|
if (this.SynapseExists(input) == false)
|
||||||
this.SetWeight(input, 1.0f);
|
this.SetWeight(input, 1.0f);
|
||||||
UpdateState();
|
UpdateState();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetInput(Neuroid input, float weight) {
|
public void SetInput(Neuroid input, float weight) {
|
||||||
//this.synapses[input] = weight;
|
|
||||||
this.SetWeight(input, weight);
|
this.SetWeight(input, weight);
|
||||||
UpdateState();
|
UpdateState();
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void UpdateState() {
|
public virtual void UpdateState() {
|
||||||
Vector3 result = Vector3.zero;
|
Vector3 result = Vector3.zero;
|
||||||
//foreach ((Nucleus nucleus, float weight) in this.synapses) {
|
|
||||||
foreach (Synapse synapse in this.synapses) {
|
foreach (Synapse synapse in this.synapses) {
|
||||||
Nucleus synapseNucleus = synapse.nucleus;
|
Nucleus synapseNucleus = synapse.nucleus;
|
||||||
if (synapseNucleus is Neuroid neuroid && neuroid.isSleeping)
|
if (synapseNucleus is Neuroid neuroid && neuroid.isSleeping)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
Vector3 direction = synapseNucleus.outputValue.normalized;
|
Vector3 direction = synapseNucleus.outputValue.direction.ToVector3();
|
||||||
float magnitude = synapseNucleus.outputValue.magnitude;
|
|
||||||
|
|
||||||
float weight = synapse.weight;
|
float weight = synapse.weight;
|
||||||
magnitude = weight * curve.Evaluate(synapseNucleus.outputValue.magnitude);
|
float magnitude = weight * curve.Evaluate(synapseNucleus.outputValue.magnitude);
|
||||||
// magnitude = weight * Mathf.Pow(magnitude, exponent);
|
|
||||||
// if (inverse && magnitude > 0)
|
|
||||||
// magnitude = 1 / magnitude;
|
|
||||||
result += direction * magnitude;
|
|
||||||
|
|
||||||
|
result += direction * magnitude;
|
||||||
}
|
}
|
||||||
if (average && this.synapses.Count > 0)
|
if (average && this.synapses.Count > 0)
|
||||||
result /= this.synapses.Count;
|
result /= this.synapses.Count;
|
||||||
|
|
||||||
this.outputValue = result;
|
this.outputValue = Spherical.FromVector3(result);
|
||||||
this.stale = 0;
|
this.stale = 0;
|
||||||
|
|
||||||
foreach (Receiver receiver in this.receivers) {
|
foreach (Receiver receiver in this.receivers) {
|
||||||
@ -107,8 +99,5 @@ public class Neuroid : Nucleus {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// public bool IsStale() {
|
|
||||||
// return this.stale > 2;
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -2,6 +2,7 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEditor;
|
using UnityEditor;
|
||||||
|
using LinearAlgebra;
|
||||||
|
|
||||||
[System.Serializable]
|
[System.Serializable]
|
||||||
public class Nucleus {
|
public class Nucleus {
|
||||||
@ -63,7 +64,7 @@ public class Nucleus {
|
|||||||
|
|
||||||
public NanoBrainObj brain { get; set; }
|
public NanoBrainObj brain { get; set; }
|
||||||
|
|
||||||
public virtual Vector3 outputValue { get; set; }
|
public virtual Spherical outputValue { get; set; }
|
||||||
|
|
||||||
[System.NonSerialized]
|
[System.NonSerialized]
|
||||||
public int stale = 0;
|
public int stale = 0;
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
using LinearAlgebra;
|
||||||
|
|
||||||
[System.Serializable]
|
[System.Serializable]
|
||||||
public class Perceptoid : Neuroid {
|
public class Perceptoid : Neuroid {
|
||||||
@ -88,9 +89,9 @@ public class Perceptoid : Neuroid {
|
|||||||
|
|
||||||
this.thingType = thingType;
|
this.thingType = thingType;
|
||||||
this.receptor.thingType = thingType;
|
this.receptor.thingType = thingType;
|
||||||
this.receptor.localPosition = Vector3.zero;
|
this.receptor.localPosition = Spherical.zero;
|
||||||
|
|
||||||
this.outputValue = Vector3.zero;
|
this.outputValue = Spherical.zero;
|
||||||
this.receivers = new();
|
this.receivers = new();
|
||||||
this.AddReceiver(velocityNeuroid);
|
this.AddReceiver(velocityNeuroid);
|
||||||
|
|
||||||
@ -98,11 +99,11 @@ public class Perceptoid : Neuroid {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public override void UpdateState() {
|
public override void UpdateState() {
|
||||||
Vector3 result = receptor.localPosition;
|
Vector3 result = receptor.localPosition.ToVector3();
|
||||||
foreach (Synapse synapse in this.synapses) {
|
foreach (Synapse synapse in this.synapses) {
|
||||||
Nucleus nucleus = synapse.nucleus;
|
Nucleus nucleus = synapse.nucleus;
|
||||||
float weight = synapse.weight;
|
float weight = synapse.weight;
|
||||||
Vector3 direction = nucleus.outputValue.normalized;
|
Vector3 direction = nucleus.outputValue.normalized.ToVector3();
|
||||||
float magnitude = nucleus.outputValue.magnitude;
|
float magnitude = nucleus.outputValue.magnitude;
|
||||||
|
|
||||||
magnitude = weight * Mathf.Pow(magnitude, exponent);
|
magnitude = weight * Mathf.Pow(magnitude, exponent);
|
||||||
@ -113,16 +114,16 @@ public class Perceptoid : Neuroid {
|
|||||||
if (average && this.synapses.Count > 0)
|
if (average && this.synapses.Count > 0)
|
||||||
result /= this.synapses.Count + 1;
|
result /= this.synapses.Count + 1;
|
||||||
|
|
||||||
this.outputValue = result;
|
this.outputValue = Spherical.FromVector3(result);
|
||||||
foreach (Receiver receiver in this.receivers)
|
foreach (Receiver receiver in this.receivers)
|
||||||
if (receiver.nucleus is Neuroid neuroid)
|
if (receiver.nucleus is Neuroid neuroid)
|
||||||
neuroid.SetInput(this);
|
neuroid.SetInput(this);
|
||||||
this.stale = 0;
|
this.stale = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void UpdateState(int thingId, Vector3 receptorValue) {
|
public void UpdateState(int thingId, Spherical receptorValue) {
|
||||||
this.thingId = thingId;
|
this.thingId = thingId;
|
||||||
Vector3 result = receptorValue;
|
Spherical result = receptorValue;
|
||||||
// foreach (Synapse synapse in this.synapses) {
|
// foreach (Synapse synapse in this.synapses) {
|
||||||
// Nucleus nucleus = synapse.nucleus;
|
// Nucleus nucleus = synapse.nucleus;
|
||||||
// float weight = synapse.weight;
|
// float weight = synapse.weight;
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
using LinearAlgebra;
|
||||||
|
|
||||||
public class Receptor {
|
public class Receptor {
|
||||||
|
|
||||||
@ -9,7 +10,7 @@ public class Receptor {
|
|||||||
|
|
||||||
public int thingId;
|
public int thingId;
|
||||||
public int thingType;
|
public int thingType;
|
||||||
public Vector3 localPosition;
|
public Spherical localPosition;
|
||||||
|
|
||||||
public Receptor(Perceptoid perceptoid) {
|
public Receptor(Perceptoid perceptoid) {
|
||||||
this.perceptei.Add(perceptoid);
|
this.perceptei.Add(perceptoid);
|
||||||
@ -18,7 +19,7 @@ public class Receptor {
|
|||||||
|
|
||||||
public virtual void ProcessStimulus(int thingId, Vector3 localPosition) {
|
public virtual void ProcessStimulus(int thingId, Vector3 localPosition) {
|
||||||
this.thingId = thingId;
|
this.thingId = thingId;
|
||||||
this.localPosition = localPosition;
|
this.localPosition = Spherical.FromVector3(localPosition);
|
||||||
|
|
||||||
Perceptoid selectedPerceptoid = null;
|
Perceptoid selectedPerceptoid = null;
|
||||||
foreach (Perceptoid perceptoid in this.perceptei) {
|
foreach (Perceptoid perceptoid in this.perceptei) {
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
using LinearAlgebra;
|
||||||
|
|
||||||
// public class Receptor {
|
// public class Receptor {
|
||||||
|
|
||||||
@ -52,9 +53,9 @@ public class SensoryNeuroid : Neuroid {
|
|||||||
this.name = name + ": position";
|
this.name = name + ": position";
|
||||||
|
|
||||||
this.receptor.thingType = thingId;
|
this.receptor.thingType = thingId;
|
||||||
this.receptor.localPosition = Vector3.zero;
|
this.receptor.localPosition = Spherical.zero;
|
||||||
|
|
||||||
this.outputValue = Vector3.zero;
|
this.outputValue = Spherical.zero;
|
||||||
this.receivers = new();
|
this.receivers = new();
|
||||||
this.AddReceiver(velocityNeuroid);
|
this.AddReceiver(velocityNeuroid);
|
||||||
|
|
||||||
@ -64,13 +65,14 @@ public class SensoryNeuroid : Neuroid {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public override void UpdateState() {
|
public override void UpdateState() {
|
||||||
Vector3 result = receptor.localPosition;
|
Vector3 result = receptor.localPosition.ToVector3();
|
||||||
//foreach ((Nucleus nucleus, float weight) in this.synapses) {
|
//foreach ((Nucleus nucleus, float weight) in this.synapses) {
|
||||||
foreach (Synapse synapse in this.synapses) {
|
foreach (Synapse synapse in this.synapses) {
|
||||||
Nucleus nucleus = synapse.nucleus;
|
Nucleus nucleus = synapse.nucleus;
|
||||||
float weight = synapse.weight;
|
float weight = synapse.weight;
|
||||||
Vector3 direction = nucleus.outputValue.normalized;
|
Vector3 outputV3 = nucleus.outputValue.ToVector3();
|
||||||
float magnitude = nucleus.outputValue.magnitude;
|
Vector3 direction = outputV3.normalized;
|
||||||
|
float magnitude = outputV3.magnitude;
|
||||||
|
|
||||||
magnitude = weight * Mathf.Pow(magnitude, exponent);
|
magnitude = weight * Mathf.Pow(magnitude, exponent);
|
||||||
if (inverse)
|
if (inverse)
|
||||||
@ -80,7 +82,7 @@ public class SensoryNeuroid : Neuroid {
|
|||||||
if (average && this.synapses.Count > 0)
|
if (average && this.synapses.Count > 0)
|
||||||
result /= this.synapses.Count + 1;
|
result /= this.synapses.Count + 1;
|
||||||
|
|
||||||
this.outputValue = result;
|
this.outputValue = Spherical.FromVector3(result);
|
||||||
//foreach (Neuroid neuroid in this.receivers)
|
//foreach (Neuroid neuroid in this.receivers)
|
||||||
foreach (Receiver receiver in this.receivers)
|
foreach (Receiver receiver in this.receivers)
|
||||||
if (receiver.nucleus is Neuroid neuroid)
|
if (receiver.nucleus is Neuroid neuroid)
|
||||||
@ -107,16 +109,17 @@ public class VelocityNeuroid : Neuroid {
|
|||||||
public override void UpdateState() {
|
public override void UpdateState() {
|
||||||
// Assuming only one synapse for now....
|
// Assuming only one synapse for now....
|
||||||
//Vector3 currentPosition = this.synapses.First().Key.outputValue;
|
//Vector3 currentPosition = this.synapses.First().Key.outputValue;
|
||||||
Vector3 currentPosition = this.synapses.First().nucleus.outputValue;
|
Spherical currentPosition = this.synapses.First().nucleus.outputValue;
|
||||||
|
Vector3 currentPositionV3 = currentPosition.ToVector3();
|
||||||
float currentValueTime = Time.time;
|
float currentValueTime = Time.time;
|
||||||
|
|
||||||
if (lastValueTime != 0) {
|
if (lastValueTime != 0) {
|
||||||
float deltaTime = currentValueTime - lastValueTime;
|
float deltaTime = currentValueTime - lastValueTime;
|
||||||
Vector3 translation = currentPosition - lastPosition;
|
Vector3 translation = currentPositionV3 - lastPosition;
|
||||||
Vector3 velocity = translation / deltaTime;
|
Vector3 velocity = translation / deltaTime;
|
||||||
|
|
||||||
// No activation function...
|
// No activation function...
|
||||||
this.outputValue = velocity;
|
this.outputValue = Spherical.FromVector3(velocity);
|
||||||
this.stale = 0;
|
this.stale = 0;
|
||||||
|
|
||||||
//foreach (Neuroid receiver in receivers)
|
//foreach (Neuroid receiver in receivers)
|
||||||
@ -127,6 +130,6 @@ public class VelocityNeuroid : Neuroid {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.lastValueTime = currentValueTime;
|
this.lastValueTime = currentValueTime;
|
||||||
this.lastPosition = currentPosition;
|
this.lastPosition = currentPositionV3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -341,7 +341,7 @@ public class GraphBoardView : VisualElement {
|
|||||||
currentNucleus.name = EditorGUILayout.TextField(currentNucleus.name);
|
currentNucleus.name = EditorGUILayout.TextField(currentNucleus.name);
|
||||||
EditorGUILayout.BeginHorizontal();
|
EditorGUILayout.BeginHorizontal();
|
||||||
EditorGUILayout.LabelField("Output Value", GUILayout.Width(100));
|
EditorGUILayout.LabelField("Output Value", GUILayout.Width(100));
|
||||||
EditorGUILayout.Vector3Field(GUIContent.none, currentNucleus.outputValue);
|
EditorGUILayout.Vector3Field(GUIContent.none, currentNucleus.outputValue.ToVector3());
|
||||||
EditorGUILayout.EndHorizontal();
|
EditorGUILayout.EndHorizontal();
|
||||||
if (currentNucleus.synapses.Count > 0) {
|
if (currentNucleus.synapses.Count > 0) {
|
||||||
EditorGUILayout.LabelField("Synapses");
|
EditorGUILayout.LabelField("Synapses");
|
||||||
@ -360,7 +360,7 @@ public class GraphBoardView : VisualElement {
|
|||||||
// currentNucleus.synapses[nucleus] = EditorGUILayout.FloatField(weight, GUILayout.Width(40));
|
// currentNucleus.synapses[nucleus] = EditorGUILayout.FloatField(weight, GUILayout.Width(40));
|
||||||
synapse.weight = EditorGUILayout.FloatField(synapse.weight, GUILayout.Width(40));
|
synapse.weight = EditorGUILayout.FloatField(synapse.weight, GUILayout.Width(40));
|
||||||
EditorGUI.indentLevel++;
|
EditorGUI.indentLevel++;
|
||||||
EditorGUILayout.Vector3Field(GUIContent.none, synapse.nucleus.outputValue, GUILayout.Width(180));
|
EditorGUILayout.Vector3Field(GUIContent.none, synapse.nucleus.outputValue.ToVector3(), GUILayout.Width(180));
|
||||||
EditorGUILayout.EndHorizontal();
|
EditorGUILayout.EndHorizontal();
|
||||||
|
|
||||||
EditorGUI.EndDisabledGroup();
|
EditorGUI.EndDisabledGroup();
|
||||||
|
|||||||
@ -455,7 +455,7 @@ public class NanoBrainInspector : Editor {
|
|||||||
DisconnectNucleus(this.currentNucleus);
|
DisconnectNucleus(this.currentNucleus);
|
||||||
|
|
||||||
if (this.gameObject != null) {
|
if (this.gameObject != null) {
|
||||||
Vector3 worldVector = this.gameObject.transform.TransformVector(this.currentNucleus.outputValue);
|
Vector3 worldVector = this.gameObject.transform.TransformVector(this.currentNucleus.outputValue.ToVector3());
|
||||||
Debug.DrawRay(this.gameObject.transform.position, worldVector, Color.yellow);
|
Debug.DrawRay(this.gameObject.transform.position, worldVector, Color.yellow);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
using LinearAlgebra;
|
||||||
|
|
||||||
[CreateAssetMenu(menuName = "Passer/NanoBrain")]
|
[CreateAssetMenu(menuName = "Passer/NanoBrain")]
|
||||||
public class NanoBrainObj : ScriptableObject, ISerializationCallbackReceiver {
|
public class NanoBrainObj : ScriptableObject, ISerializationCallbackReceiver {
|
||||||
@ -33,12 +34,12 @@ public class NanoBrainObj : ScriptableObject, ISerializationCallbackReceiver {
|
|||||||
foreach (Nucleus nucleus in nuclei) {
|
foreach (Nucleus nucleus in nuclei) {
|
||||||
nucleus.stale++;
|
nucleus.stale++;
|
||||||
if (nucleus.isSleeping)
|
if (nucleus.isSleeping)
|
||||||
nucleus.outputValue = Vector3.zero;
|
nucleus.outputValue = Spherical.zero;
|
||||||
}
|
}
|
||||||
foreach (Perceptoid perception in perceptei) {
|
foreach (Perceptoid perception in perceptei) {
|
||||||
perception.stale++;
|
perception.stale++;
|
||||||
if (perception.isSleeping)
|
if (perception.isSleeping)
|
||||||
perception.outputValue = Vector3.zero;
|
perception.outputValue = Spherical.zero;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -55,7 +55,7 @@ public class Boid : MonoBehaviour {
|
|||||||
boundaryReceptor.ProcessStimulus(777, desiredLocalSpace);
|
boundaryReceptor.ProcessStimulus(777, desiredLocalSpace);
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector3 worldForce = this.transform.TransformDirection(nanoBrain.root.outputValue);
|
Vector3 worldForce = this.transform.TransformDirection(nanoBrain.root.outputValue.ToVector3());
|
||||||
|
|
||||||
this.velocity = (1 - sc.inertia) * (worldForce * Time.deltaTime) + sc.inertia * velocity;
|
this.velocity = (1 - sc.inertia) * (worldForce * Time.deltaTime) + sc.inertia * velocity;
|
||||||
if (this.velocity.magnitude > 0)
|
if (this.velocity.magnitude > 0)
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
using LinearAlgebra;
|
||||||
|
|
||||||
public class Swarming : Nucleus {
|
public class Swarming : Nucleus {
|
||||||
public Neuroid cohesion;
|
public Neuroid cohesion;
|
||||||
@ -8,7 +9,7 @@ public class Swarming : Nucleus {
|
|||||||
|
|
||||||
public Neuroid output;
|
public Neuroid output;
|
||||||
|
|
||||||
public override Vector3 outputValue { get => output.outputValue; set => output.outputValue = value; }
|
public override Spherical outputValue { get => output.outputValue; set => output.outputValue = value; }
|
||||||
|
|
||||||
public Swarming(NanoBrainObj brain, Perception perception, SwarmControl sc) : base("Swarming Nucleus") {
|
public Swarming(NanoBrainObj brain, Perception perception, SwarmControl sc) : base("Swarming Nucleus") {
|
||||||
this.cohesion = new(brain, "Cohesion") { inverse = false };
|
this.cohesion = new(brain, "Cohesion") { inverse = false };
|
||||||
|
|||||||
@ -4,13 +4,14 @@
|
|||||||
"com.unity.collab-proxy": "2.10.2",
|
"com.unity.collab-proxy": "2.10.2",
|
||||||
"com.unity.ide.rider": "3.0.38",
|
"com.unity.ide.rider": "3.0.38",
|
||||||
"com.unity.ide.visualstudio": "2.0.25",
|
"com.unity.ide.visualstudio": "2.0.25",
|
||||||
"com.unity.inputsystem": "1.14.2",
|
"com.unity.inputsystem": "1.17.0",
|
||||||
"com.unity.multiplayer.center": "1.0.0",
|
"com.unity.multiplayer.center": "1.0.1",
|
||||||
"com.unity.render-pipelines.universal": "17.2.0",
|
"com.unity.render-pipelines.universal": "17.3.0",
|
||||||
"com.unity.test-framework": "1.6.0",
|
"com.unity.test-framework": "1.6.0",
|
||||||
"com.unity.timeline": "1.8.9",
|
"com.unity.timeline": "1.8.9",
|
||||||
"com.unity.ugui": "2.0.0",
|
"com.unity.ugui": "2.0.0",
|
||||||
"com.unity.modules.accessibility": "1.0.0",
|
"com.unity.modules.accessibility": "1.0.0",
|
||||||
|
"com.unity.modules.adaptiveperformance": "1.0.0",
|
||||||
"com.unity.modules.ai": "1.0.0",
|
"com.unity.modules.ai": "1.0.0",
|
||||||
"com.unity.modules.androidjni": "1.0.0",
|
"com.unity.modules.androidjni": "1.0.0",
|
||||||
"com.unity.modules.animation": "1.0.0",
|
"com.unity.modules.animation": "1.0.0",
|
||||||
@ -37,6 +38,7 @@
|
|||||||
"com.unity.modules.unitywebrequestaudio": "1.0.0",
|
"com.unity.modules.unitywebrequestaudio": "1.0.0",
|
||||||
"com.unity.modules.unitywebrequesttexture": "1.0.0",
|
"com.unity.modules.unitywebrequesttexture": "1.0.0",
|
||||||
"com.unity.modules.unitywebrequestwww": "1.0.0",
|
"com.unity.modules.unitywebrequestwww": "1.0.0",
|
||||||
|
"com.unity.modules.vectorgraphics": "1.0.0",
|
||||||
"com.unity.modules.vehicles": "1.0.0",
|
"com.unity.modules.vehicles": "1.0.0",
|
||||||
"com.unity.modules.video": "1.0.0",
|
"com.unity.modules.video": "1.0.0",
|
||||||
"com.unity.modules.vr": "1.0.0",
|
"com.unity.modules.vr": "1.0.0",
|
||||||
|
|||||||
@ -10,7 +10,7 @@
|
|||||||
"url": "https://packages.unity.com"
|
"url": "https://packages.unity.com"
|
||||||
},
|
},
|
||||||
"com.unity.burst": {
|
"com.unity.burst": {
|
||||||
"version": "1.8.25",
|
"version": "1.8.26",
|
||||||
"depth": 2,
|
"depth": 2,
|
||||||
"source": "registry",
|
"source": "registry",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@ -33,8 +33,8 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"com.unity.burst": "1.8.23",
|
"com.unity.burst": "1.8.23",
|
||||||
"com.unity.mathematics": "1.3.2",
|
"com.unity.mathematics": "1.3.2",
|
||||||
"com.unity.nuget.mono-cecil": "1.11.5",
|
|
||||||
"com.unity.test-framework": "1.4.6",
|
"com.unity.test-framework": "1.4.6",
|
||||||
|
"com.unity.nuget.mono-cecil": "1.11.5",
|
||||||
"com.unity.test-framework.performance": "3.0.3"
|
"com.unity.test-framework.performance": "3.0.3"
|
||||||
},
|
},
|
||||||
"url": "https://packages.unity.com"
|
"url": "https://packages.unity.com"
|
||||||
@ -64,7 +64,7 @@
|
|||||||
"url": "https://packages.unity.com"
|
"url": "https://packages.unity.com"
|
||||||
},
|
},
|
||||||
"com.unity.inputsystem": {
|
"com.unity.inputsystem": {
|
||||||
"version": "1.14.2",
|
"version": "1.17.0",
|
||||||
"depth": 0,
|
"depth": 0,
|
||||||
"source": "registry",
|
"source": "registry",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@ -73,14 +73,14 @@
|
|||||||
"url": "https://packages.unity.com"
|
"url": "https://packages.unity.com"
|
||||||
},
|
},
|
||||||
"com.unity.mathematics": {
|
"com.unity.mathematics": {
|
||||||
"version": "1.3.2",
|
"version": "1.3.3",
|
||||||
"depth": 2,
|
"depth": 2,
|
||||||
"source": "registry",
|
"source": "registry",
|
||||||
"dependencies": {},
|
"dependencies": {},
|
||||||
"url": "https://packages.unity.com"
|
"url": "https://packages.unity.com"
|
||||||
},
|
},
|
||||||
"com.unity.multiplayer.center": {
|
"com.unity.multiplayer.center": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.1",
|
||||||
"depth": 0,
|
"depth": 0,
|
||||||
"source": "builtin",
|
"source": "builtin",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@ -88,14 +88,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"com.unity.nuget.mono-cecil": {
|
"com.unity.nuget.mono-cecil": {
|
||||||
"version": "1.11.5",
|
"version": "1.11.6",
|
||||||
"depth": 3,
|
"depth": 3,
|
||||||
"source": "registry",
|
"source": "registry",
|
||||||
"dependencies": {},
|
"dependencies": {},
|
||||||
"url": "https://packages.unity.com"
|
"url": "https://packages.unity.com"
|
||||||
},
|
},
|
||||||
"com.unity.render-pipelines.core": {
|
"com.unity.render-pipelines.core": {
|
||||||
"version": "17.2.0",
|
"version": "17.3.0",
|
||||||
"depth": 1,
|
"depth": 1,
|
||||||
"source": "builtin",
|
"source": "builtin",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@ -105,17 +105,16 @@
|
|||||||
"com.unity.collections": "2.4.3",
|
"com.unity.collections": "2.4.3",
|
||||||
"com.unity.modules.physics": "1.0.0",
|
"com.unity.modules.physics": "1.0.0",
|
||||||
"com.unity.modules.terrain": "1.0.0",
|
"com.unity.modules.terrain": "1.0.0",
|
||||||
"com.unity.modules.jsonserialize": "1.0.0",
|
"com.unity.modules.jsonserialize": "1.0.0"
|
||||||
"com.unity.rendering.light-transport": "1.0.1"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"com.unity.render-pipelines.universal": {
|
"com.unity.render-pipelines.universal": {
|
||||||
"version": "17.2.0",
|
"version": "17.3.0",
|
||||||
"depth": 0,
|
"depth": 0,
|
||||||
"source": "builtin",
|
"source": "builtin",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"com.unity.render-pipelines.core": "17.2.0",
|
"com.unity.render-pipelines.core": "17.3.0",
|
||||||
"com.unity.shadergraph": "17.2.0",
|
"com.unity.shadergraph": "17.3.0",
|
||||||
"com.unity.render-pipelines.universal-config": "17.0.3"
|
"com.unity.render-pipelines.universal-config": "17.0.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -127,29 +126,19 @@
|
|||||||
"com.unity.render-pipelines.core": "17.0.3"
|
"com.unity.render-pipelines.core": "17.0.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"com.unity.rendering.light-transport": {
|
|
||||||
"version": "1.0.1",
|
|
||||||
"depth": 2,
|
|
||||||
"source": "builtin",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.collections": "2.2.0",
|
|
||||||
"com.unity.mathematics": "1.2.4",
|
|
||||||
"com.unity.modules.terrain": "1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"com.unity.searcher": {
|
"com.unity.searcher": {
|
||||||
"version": "4.9.3",
|
"version": "4.9.4",
|
||||||
"depth": 2,
|
"depth": 2,
|
||||||
"source": "registry",
|
"source": "registry",
|
||||||
"dependencies": {},
|
"dependencies": {},
|
||||||
"url": "https://packages.unity.com"
|
"url": "https://packages.unity.com"
|
||||||
},
|
},
|
||||||
"com.unity.shadergraph": {
|
"com.unity.shadergraph": {
|
||||||
"version": "17.2.0",
|
"version": "17.3.0",
|
||||||
"depth": 1,
|
"depth": 1,
|
||||||
"source": "builtin",
|
"source": "builtin",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"com.unity.render-pipelines.core": "17.2.0",
|
"com.unity.render-pipelines.core": "17.3.0",
|
||||||
"com.unity.searcher": "4.9.3"
|
"com.unity.searcher": "4.9.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -178,9 +167,9 @@
|
|||||||
"depth": 0,
|
"depth": 0,
|
||||||
"source": "registry",
|
"source": "registry",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"com.unity.modules.audio": "1.0.0",
|
||||||
"com.unity.modules.director": "1.0.0",
|
"com.unity.modules.director": "1.0.0",
|
||||||
"com.unity.modules.animation": "1.0.0",
|
"com.unity.modules.animation": "1.0.0",
|
||||||
"com.unity.modules.audio": "1.0.0",
|
|
||||||
"com.unity.modules.particlesystem": "1.0.0"
|
"com.unity.modules.particlesystem": "1.0.0"
|
||||||
},
|
},
|
||||||
"url": "https://packages.unity.com"
|
"url": "https://packages.unity.com"
|
||||||
@ -200,6 +189,14 @@
|
|||||||
"source": "builtin",
|
"source": "builtin",
|
||||||
"dependencies": {}
|
"dependencies": {}
|
||||||
},
|
},
|
||||||
|
"com.unity.modules.adaptiveperformance": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.subsystems": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"com.unity.modules.ai": {
|
"com.unity.modules.ai": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"depth": 0,
|
"depth": 0,
|
||||||
@ -407,6 +404,16 @@
|
|||||||
"com.unity.modules.imageconversion": "1.0.0"
|
"com.unity.modules.imageconversion": "1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"com.unity.modules.vectorgraphics": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.uielements": "1.0.0",
|
||||||
|
"com.unity.modules.imageconversion": "1.0.0",
|
||||||
|
"com.unity.modules.imgui": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"com.unity.modules.vehicles": {
|
"com.unity.modules.vehicles": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"depth": 0,
|
"depth": 0,
|
||||||
|
|||||||
@ -58,7 +58,9 @@ GraphicsSettings:
|
|||||||
m_FogKeepExp2: 1
|
m_FogKeepExp2: 1
|
||||||
m_AlbedoSwatchInfos: []
|
m_AlbedoSwatchInfos: []
|
||||||
m_RenderPipelineGlobalSettingsMap:
|
m_RenderPipelineGlobalSettingsMap:
|
||||||
UnityEngine.Rendering.Universal.UniversalRenderPipeline: {fileID: 11400000, guid: 370d27fa5af5291e18529fa336759ac9, type: 2}
|
UnityEngine.Rendering.Universal.UniversalRenderPipeline: {fileID: 11400000, guid: 2acc6984d25d4a508a6d7042927d3083, type: 2}
|
||||||
|
m_ShaderBuildSettings:
|
||||||
|
keywordDeclarationOverrides: []
|
||||||
m_LightsUseLinearIntensity: 1
|
m_LightsUseLinearIntensity: 1
|
||||||
m_LightsUseColorTemperature: 1
|
m_LightsUseColorTemperature: 1
|
||||||
m_LogWhenShaderIsCompiled: 0
|
m_LogWhenShaderIsCompiled: 0
|
||||||
|
|||||||
@ -0,0 +1,17 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &1
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 53
|
||||||
|
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: 15023, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: UnityEditor.MultiplayerModule.dll::UnityEditor.Multiplayer.Internal.MultiplayerRolesSettings
|
||||||
|
m_MultiplayerRoleForClassicProfile:
|
||||||
|
m_Keys: []
|
||||||
|
m_Values:
|
||||||
@ -1,2 +1,2 @@
|
|||||||
m_EditorVersion: 6000.2.13f1
|
m_EditorVersion: 6000.3.2f1
|
||||||
m_EditorVersionWithRevision: 6000.2.13f1 (abdb44fca7f7)
|
m_EditorVersionWithRevision: 6000.3.2f1 (a9779f353c9b)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user