using versions to update instances in property drawer

This commit is contained in:
Pascal Serrarens 2026-05-27 12:44:50 +02:00
parent ca8cc526f6
commit d46b31a560
10 changed files with 244 additions and 116 deletions

View File

@ -22,6 +22,8 @@ namespace NanoBrain.Unity {
}
public override void OnInspectorGUI() {
EditorGUI.BeginChangeCheck();
// Begin horizontal split
EditorGUILayout.BeginHorizontal();
@ -45,6 +47,16 @@ namespace NanoBrain.Unity {
EditorGUIUtility.labelWidth = prevLabelWidth;
EditorGUILayout.EndVertical(); // end right column
EditorGUILayout.EndHorizontal(); // end split
if (EditorGUI.EndChangeCheck()) {
Undo.RecordObject(target, "Edit ClusterPrefab");
SerializedProperty versionProp = serializedObject.FindProperty("version");
versionProp.intValue++;
serializedObject.ApplyModifiedProperties();
EditorUtility.SetDirty(target);
Debug.Log($"{name} Prefab changed, version {versionProp.intValue}");
}
}
#region Inspector

View File

@ -12,10 +12,6 @@ namespace NanoBrain.Unity {
static Cluster_Drawer() {
if (Application.isPlaying)
SceneView.duringSceneGui += OnSceneGUI;
Selection.selectionChanged += OnSelectionChanged;
if (currentClusterView != null)
currentClusterView.initialized = false;
}
private const float graphHeight = 500f; // height reserved for the VisualElement
@ -31,7 +27,8 @@ namespace NanoBrain.Unity {
SerializedProperty prefabProp = property.FindPropertyRelative(nameof(Cluster.prefab));
if (prefabProp.objectReferenceValue != null && Cluster_Drawer.currentClusterView.isOpen) {
height = graphHeight;
} else {
}
else {
// Unclear why this is necessary,
// but without this, expanding the graph foldout is not possible
height += EditorGUIUtility.singleLineHeight;
@ -39,7 +36,7 @@ namespace NanoBrain.Unity {
return height;
}
private void InitializeCluster(SerializedProperty property, ClusterView clusterView) {
private void InstantiateCluster(SerializedProperty property, ClusterView clusterView) {
if (property == null || property.serializedObject == null || clusterView.initialized)
return;
@ -48,9 +45,8 @@ namespace NanoBrain.Unity {
if (targetObject == null)
return;
// Debug.Log($"Instantiate new Cluster for {targetObject.name}");
Debug.Log($"Instantiate new Cluster for {targetObject.name}");
// This does not work properly yet it seems
ClusterPrefab clusterPrefab = prefabProp.objectReferenceValue as ClusterPrefab;
Cluster cluster = new(clusterPrefab);
object parent = SerializedPropertyUtility.GetParentObjectAndMember(targetObject, property.propertyPath, out var memberInfo, out int outIndex);
@ -59,11 +55,9 @@ namespace NanoBrain.Unity {
EditorUtility.SetDirty(targetObject);
}
clusterView.initialized = true;
}
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) {
//Debug.Log(Event.current.type);
// Not sure if this works properly with multiple Clusters in a single gameObject
ClusterView clusterView = Cluster_Drawer.currentClusterView;
if (Cluster_Drawer.currentClusterView == null)
@ -104,12 +98,12 @@ namespace NanoBrain.Unity {
UnityEngine.Object targetObject = property.serializedObject.targetObject;
Cluster_Drawer.selectedTarget = targetObject;
Cluster cluster = null;
if (clusterView.initialized || Application.isPlaying) {
cluster = SerializedPropertyUtility.GetManagedObjectForProperty(targetObject, property.propertyPath) as Cluster;
Cluster cluster = SerializedPropertyUtility.GetManagedObjectForProperty(targetObject, property.propertyPath) as Cluster;
if (cluster.version != cluster.prefab.version) {
// Debug.Log($"prefab version: {cluster.prefab.version} cluster version: {cluster.version}");
clusterView.initialized = false;
EditorApplication.delayCall += () => InstantiateCluster(property, clusterView);
}
else
EditorApplication.delayCall += () => InitializeCluster(property, clusterView);
// foldout header rect
Rect headerRect = new(fieldRect.x, fieldRect.yMax + 4f, fieldRect.width, EditorGUIUtility.singleLineHeight);
@ -172,14 +166,6 @@ namespace NanoBrain.Unity {
}
}
private static void OnSelectionChanged() {
UnityEngine.Object active = Selection.activeObject;
if (active == null)
return;
foreach (ClusterView clusterView in ClusterView.clusterViews.Values)
clusterView.initialized = false;
}
}
public static class SerializedPropertyUtility {

View File

@ -1,4 +1,3 @@
using System.Collections.Generic;
using UnityEngine;
namespace NanoBrain.Unity {
@ -17,25 +16,43 @@ namespace NanoBrain.Unity {
//[HideInInspector]
public int version;
/// <summary>
/// Call this function to ensure that there is at least one nucleus
/// </summary>
/// his is an invariant and should be ensured before the nucleus is used
/// because output requires it.
// public void EnsureInitialization() {
// this.cluster.prefab = this;
// this.cluster.name = this.name;
// this.cluster.nuclei ??= new List<Nucleus>();
// if (this.cluster.nuclei.Count <= 0)
// new Neuron(this.cluster, "Output"); // Every cluster should have at least 1 neuron
// this.cluster.instanceCount = 1;
// #if UNITY_EDITOR
// private bool queuedIncrement = false;
// private void OnValidate() {
// Debug.Log("Validating...");
// if (queuedIncrement) {
// Debug.Log("Re-entry");
// return; // avoid re-entrancy
// }
#if UNITY_EDITOR
private void OnValidate() {
version++;
}
#endif
// queuedIncrement = true;
// // Defer so Unity finishes its internal serialization/validate cycle first
// UnityEditor.EditorApplication.update += IncrementVersion;
// }
// private void IncrementVersion() {
// UnityEditor.EditorApplication.update -= IncrementVersion;
// Debug.Log("updating version...");
// // Ensure object still exists and hasn't been destroyed
// if (this == null) {
// queuedIncrement = false;
// return;
// }
// // Record for Undo and mark dirty so change persists
// UnityEditor.Undo.RecordObject(this, $"Increment {name} version");
// version++;
// UnityEditor.EditorUtility.SetDirty(this);
// Debug.Log($"{name} Prefab changed, version {version}");
// // Optional: force Inspector repaint
// //UnityEditor.EditorUtility.SetDirty(this);
// // clear the flag
// queuedIncrement = false;
// }
// #endif
}
}

View File

@ -17,103 +17,60 @@ MonoBehaviour:
parent:
rid: -2
prefab: {fileID: 11400000}
version: 65
instances: []
instanceCount: 1
nuclei:
- rid: 4201949899492425781
- rid: 4201949899492425817
- rid: 4201950332465446972
- rid: 4201950332465446973
version: 506
references:
version: 2
RefIds:
- rid: -2
type: {class: , ns: , asm: }
- rid: 4201949899492425781
- rid: 4201950332465446972
type: {class: Neuron, ns: NanoBrain, asm: Assembly-CSharp}
data:
name: Output
parent:
rid: 4201950148723474519
rid: 4201950332465446974
bias: {x: 0, y: 0, z: 1}
_synapses:
- neuron:
rid: 4201949899492425817
rid: 4201950332465446973
weight: 4
combinator: 0
combinator: 1
_activator: 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
persistOutput: 0
lastUpdate: 19.870863
lastUpdate: 35.320103
breakOnUpdate: 0
_receivers: []
- rid: 4201949899492425817
- rid: 4201950332465446973
type: {class: Neuron, ns: NanoBrain, asm: Assembly-CSharp}
data:
name: Sensor
parent:
rid: 4201950148723474519
rid: 4201950332465446974
bias: {x: 0, y: 0, z: 0}
_synapses: []
combinator: 0
_activator: 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
persistOutput: 0
lastUpdate: 19.870863
lastUpdate: 35.320103
breakOnUpdate: 0
_receivers:
- rid: 4201949899492425781
- rid: 4201950148723474519
- rid: 4201950332465446972
- rid: 4201950332465446974
type: {class: Cluster, ns: NanoBrain, asm: Assembly-CSharp}
data:
name: Braitenberg 1
parent:
rid: -2
prefab: {fileID: 11400000}
version: 65
instances: []
instanceCount: 1
nuclei:
- rid: 4201949899492425781
- rid: 4201949899492425817
- rid: 4201950332465446972
- rid: 4201950332465446973

View File

@ -25,7 +25,7 @@ MonoBehaviour:
- rid: 4201949899492425817
- rid: 4201950127862317404
- rid: 4201950127862317405
version: 12
version: 21
references:
version: 2
RefIds:

View File

@ -25,7 +25,7 @@ MonoBehaviour:
- rid: 4201949899492425817
- rid: 4201950127862317404
- rid: 4201950127862317405
version: 3
version: 12
references:
version: 2
RefIds:

View File

@ -25,7 +25,7 @@ MonoBehaviour:
- rid: 4201949899492425817
- rid: 4201950127862317404
- rid: 4201950127862317405
version: 35
version: 44
references:
version: 2
RefIds:

View File

@ -25,7 +25,7 @@ MonoBehaviour:
- rid: 4201949899492425817
- rid: 4201950127862317404
- rid: 4201950127862317405
version: 32
version: 41
references:
version: 2
RefIds:

View File

@ -29,7 +29,7 @@ MonoBehaviour:
- rid: 4201950130928877961
- rid: 4201950130928878008
- rid: 4201950130928878009
version: 2
version: 11
references:
version: 2
RefIds:

View File

@ -86,7 +86,7 @@ PrefabInstance:
objectReference: {fileID: 11400000, guid: c2d142058a073d6fdba2c8fab05834e3, type: 2}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: brain.version
value: 8
value: 44
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: brain.instanceCount
@ -98,11 +98,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: 'brain.nuclei.Array.data[0]'
value: 4201950310209421437
value: 4201950330056344037
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: 'brain.nuclei.Array.data[1]'
value: 4201950310209421438
value: 4201950330056344038
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: 'managedReferences[4201950310209421372]'
@ -128,6 +128,18 @@ PrefabInstance:
propertyPath: 'managedReferences[4201950310209421439]'
value: Assembly-CSharp NanoBrain.Cluster
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: 'managedReferences[4201950330056344037]'
value: Assembly-CSharp NanoBrain.Neuron
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: 'managedReferences[4201950330056344038]'
value: Assembly-CSharp NanoBrain.Neuron
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: 'managedReferences[4201950330056344039]'
value: Assembly-CSharp NanoBrain.Cluster
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: managedReferences[4201950310209421372].name
value: Output
@ -152,6 +164,18 @@ PrefabInstance:
propertyPath: managedReferences[4201950310209421439].name
value: Braitenberg 1
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: managedReferences[4201950330056344037].name
value: Output
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: managedReferences[4201950330056344038].name
value: Sensor
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: managedReferences[4201950330056344039].name
value: Braitenberg 1
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: managedReferences[4201950310209421372].bias.x
value: 0
@ -232,6 +256,46 @@ PrefabInstance:
propertyPath: managedReferences[4201950310209421439].prefab
value:
objectReference: {fileID: 11400000, guid: c2d142058a073d6fdba2c8fab05834e3, type: 2}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: managedReferences[4201950330056344037].bias.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: managedReferences[4201950330056344037].bias.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: managedReferences[4201950330056344037].bias.z
value: 1
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: managedReferences[4201950330056344037].parent
value: 4201950330056344039
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: managedReferences[4201950330056344038].bias.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: managedReferences[4201950330056344038].bias.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: managedReferences[4201950330056344038].bias.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: managedReferences[4201950330056344038].parent
value: 4201950330056344039
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: managedReferences[4201950330056344039].parent
value: -2
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: managedReferences[4201950330056344039].prefab
value:
objectReference: {fileID: 11400000, guid: c2d142058a073d6fdba2c8fab05834e3, type: 2}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: managedReferences[4201950310209421374].version
value: 1
@ -240,6 +304,10 @@ PrefabInstance:
propertyPath: managedReferences[4201950310209421439].version
value: 8
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: managedReferences[4201950330056344039].version
value: 44
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: managedReferences[4201950310209421372]._activator
value: 0
@ -288,6 +356,30 @@ PrefabInstance:
propertyPath: managedReferences[4201950310209421438].lastUpdate
value: 305.44333
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: managedReferences[4201950330056344037]._activator
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: managedReferences[4201950330056344037].combinator
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: managedReferences[4201950330056344037].lastUpdate
value: 31.01318
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: managedReferences[4201950330056344038]._activator
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: managedReferences[4201950330056344038].combinator
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: managedReferences[4201950330056344038].lastUpdate
value: 31.01318
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: managedReferences[4201950310209421372].breakOnUpdate
value: 0
@ -328,6 +420,26 @@ PrefabInstance:
propertyPath: managedReferences[4201950310209421439].instanceCount
value: 1
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: managedReferences[4201950330056344037].breakOnUpdate
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: managedReferences[4201950330056344037].persistOutput
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: managedReferences[4201950330056344038].breakOnUpdate
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: managedReferences[4201950330056344038].persistOutput
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: managedReferences[4201950330056344039].instanceCount
value: 1
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: managedReferences[4201950310209421374].nuclei.Array.size
value: 2
@ -336,6 +448,10 @@ PrefabInstance:
propertyPath: managedReferences[4201950310209421439].nuclei.Array.size
value: 2
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: managedReferences[4201950330056344039].nuclei.Array.size
value: 2
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: managedReferences[4201950310209421372]._synapses.Array.size
value: 1
@ -376,6 +492,26 @@ PrefabInstance:
propertyPath: 'managedReferences[4201950310209421439].nuclei.Array.data[1]'
value: 4201950310209421438
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: managedReferences[4201950330056344037]._synapses.Array.size
value: 1
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: managedReferences[4201950330056344038]._synapses.Array.size
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: managedReferences[4201950330056344039].instances.Array.size
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: 'managedReferences[4201950330056344039].nuclei.Array.data[0]'
value: 4201950330056344037
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: 'managedReferences[4201950330056344039].nuclei.Array.data[1]'
value: 4201950330056344038
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: managedReferences[4201950310209421372]._receivers.Array.size
value: 0
@ -392,6 +528,14 @@ PrefabInstance:
propertyPath: managedReferences[4201950310209421438]._receivers.Array.size
value: 1
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: managedReferences[4201950330056344037]._receivers.Array.size
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: managedReferences[4201950330056344038]._receivers.Array.size
value: 1
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: 'managedReferences[4201950310209421373]._receivers.Array.data[0]'
value: 4201950310209421372
@ -400,6 +544,10 @@ PrefabInstance:
propertyPath: 'managedReferences[4201950310209421438]._receivers.Array.data[0]'
value: 4201950310209421437
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: 'managedReferences[4201950330056344038]._receivers.Array.data[0]'
value: 4201950330056344037
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: managedReferences[4201950310209421372]._synapses.Array.data[0].neuron
value: 4201950310209421373
@ -416,6 +564,14 @@ PrefabInstance:
propertyPath: managedReferences[4201950310209421437]._synapses.Array.data[0].weight
value: 4
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: managedReferences[4201950330056344037]._synapses.Array.data[0].neuron
value: 4201950330056344038
objectReference: {fileID: 0}
- target: {fileID: 8280937452374640854, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}
propertyPath: managedReferences[4201950330056344037]._synapses.Array.data[0].weight
value: 4
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects:
- {fileID: 449746320909641321, guid: c0398fc7a48853d47acb42e4e3498383, type: 3}