From 14436cbfbadd584b089dc63e790520f0abda6a72 Mon Sep 17 00:00:00 2001 From: Pascal Serrarens Date: Wed, 21 Jan 2026 13:41:50 +0100 Subject: [PATCH] Reliable output vector draw line --- .../VisualEditor/Editor/ClusterInspector.cs | 37 +++++++++++++++++-- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/Assets/NanoBrain/VisualEditor/Editor/ClusterInspector.cs b/Assets/NanoBrain/VisualEditor/Editor/ClusterInspector.cs index 072d8c1..9535e72 100644 --- a/Assets/NanoBrain/VisualEditor/Editor/ClusterInspector.cs +++ b/Assets/NanoBrain/VisualEditor/Editor/ClusterInspector.cs @@ -102,6 +102,25 @@ public class ClusterInspector : Editor { // RegisterCallback(OnMouseDown); // RegisterCallback(OnMouseMove); // RegisterCallback(OnMouseUp); + + // Subscribe when added to panel (editor UI ready) + RegisterCallback(evt => Subscribe()); + RegisterCallback(evt => Unsubscribe()); + } + + + bool subscribed = false; + void Subscribe() { + if (subscribed) return; + SceneView.duringSceneGui += OnSceneGUI; + subscribed = true; + SceneView.RepaintAll(); + } + + void Unsubscribe() { + if (!subscribed) return; + SceneView.duringSceneGui -= OnSceneGUI; + subscribed = false; } public void SetGraph(GameObject gameObject, Cluster brain, INucleus nucleus, VisualElement inspectorContainer) { @@ -542,15 +561,25 @@ public class ClusterInspector : Editor { DeleteNeuron(this.currentNucleus); - if (this.gameObject != null) { - Vector3 worldVector = this.gameObject.transform.TransformVector(this.currentNucleus.outputValue); - Debug.DrawRay(this.gameObject.transform.position, worldVector, Color.yellow); - } + // if (this.gameObject != null) { + // Vector3 worldVector = this.gameObject.transform.TransformVector(this.currentNucleus.outputValue); + // //Debug.DrawRay(this.gameObject.transform.position, worldVector, Color.yellow); + // Handles.color = Color.yellow; + // Handles.DrawLine(this.gameObject.transform.position, this.gameObject.transform.position + worldVector); + // } }); inspectorContainer.Add(container); } + void OnSceneGUI(SceneView sceneView) { + if (this.gameObject != null) { + Vector3 worldVector = this.gameObject.transform.TransformVector(this.currentNucleus.outputValue); + Handles.color = Color.yellow; + Handles.DrawLine(this.gameObject.transform.position, this.gameObject.transform.position + worldVector); + } + } + protected virtual void AddInputNeuron(INucleus nucleus) { Neuron newNeuroid = new(this.cluster.cluster, "New neuron"); newNeuroid.AddReceiver(nucleus);