1
0
mirror of https://github.com/Siccity/xNode.git synced 2025-12-20 09:16:01 +08:00

Bug fixes

This commit is contained in:
Thor Kramer Brigsted 2017-11-02 16:17:28 +01:00
parent cfccc4f89a
commit 8eff75fa7f
6 changed files with 17 additions and 12 deletions

View File

@ -127,7 +127,7 @@ public partial class NodeEditorWindow {
if (!_portConnectionPoints.ContainsKey(draggedOutput)) return; if (!_portConnectionPoints.ContainsKey(draggedOutput)) return;
Vector2 from = _portConnectionPoints[draggedOutput].center; Vector2 from = _portConnectionPoints[draggedOutput].center;
Vector2 to = draggedOutputTarget != null ? portConnectionPoints[draggedOutputTarget].center : WindowToGridPosition(Event.current.mousePosition); Vector2 to = draggedOutputTarget != null ? portConnectionPoints[draggedOutputTarget].center : WindowToGridPosition(Event.current.mousePosition);
Color col = NodeEditorPreferences.GetTypeColor(draggedOutput.type); Color col = NodeEditorPreferences.GetTypeColor(draggedOutput.ValueType);
col.a = 0.6f; col.a = 0.6f;
DrawConnection(from, to, col); DrawConnection(from, to, col);
} }

View File

@ -129,7 +129,7 @@ public partial class NodeEditorWindow {
if (!input.IsConnectedTo(output)) input.Connect(output); if (!input.IsConnectedTo(output)) input.Connect(output);
if (!_portConnectionPoints.ContainsKey(input)) continue; if (!_portConnectionPoints.ContainsKey(input)) continue;
Vector2 to = _portConnectionPoints[input].center; Vector2 to = _portConnectionPoints[input].center;
DrawConnection(from, to, NodeEditorPreferences.GetTypeColor(output.type)); DrawConnection(from, to, NodeEditorPreferences.GetTypeColor(output.ValueType));
} }
} }
} }
@ -235,7 +235,7 @@ public partial class NodeEditorWindow {
private void DrawTooltip() { private void DrawTooltip() {
if (hoveredPort != null) { if (hoveredPort != null) {
Type type = hoveredPort.type; Type type = hoveredPort.ValueType;
GUIContent content = new GUIContent(); GUIContent content = new GUIContent();
content.text = TypeToString(type); content.text = TypeToString(type);
Vector2 size = NodeEditorResources.styles.tooltip.CalcSize(content); Vector2 size = NodeEditorResources.styles.tooltip.CalcSize(content);
@ -246,6 +246,7 @@ public partial class NodeEditorWindow {
} }
private string TypeToString(Type type) { private string TypeToString(Type type) {
if (type == null) return "null";
if (type == typeof(float)) return "float"; if (type == typeof(float)) return "float";
else if (type == typeof(int)) return "int"; else if (type == typeof(int)) return "int";
else if (type == typeof(long)) return "long"; else if (type == typeof(long)) return "long";
@ -276,6 +277,6 @@ public partial class NodeEditorWindow {
int i = s.IndexOf('['); int i = s.IndexOf('[');
return s.Substring(0,i) + "["+rank+"]" + s.Substring(i); return s.Substring(0,i) + "["+rank+"]" + s.Substring(i);
} }
} else return hoveredPort.type.ToString(); } else return hoveredPort.ValueType.ToString();
} }
} }

View File

@ -38,7 +38,7 @@ public static class NodeEditorGUILayout {
rect.size = new Vector2(16, 16); rect.size = new Vector2(16, 16);
DrawPortHandle(rect, port.type); DrawPortHandle(rect, port.ValueType);
// Register the handle position // Register the handle position
Vector2 portPos = rect.center; Vector2 portPos = rect.center;

View File

@ -74,6 +74,7 @@ public abstract class Node : ScriptableObject {
public bool RemoveInstancePort(string fieldName) { public bool RemoveInstancePort(string fieldName) {
NodePort port = GetPort(fieldName); NodePort port = GetPort(fieldName);
if (port == null || port.IsStatic) return false; if (port == null || port.IsStatic) return false;
port.ClearConnections();
ports.Remove(fieldName); ports.Remove(fieldName);
return true; return true;
} }

View File

@ -23,14 +23,12 @@ public static class NodeDataCache {
} }
// Cleanup port dict - Remove nonexisting static ports - update static port types // Cleanup port dict - Remove nonexisting static ports - update static port types
foreach (NodePort port in ports.Values) { foreach (NodePort port in ports.Values.ToList()) {
if (staticPorts.ContainsKey(port.fieldName)) { if (staticPorts.ContainsKey(port.fieldName)) {
NodePort staticPort = staticPorts[port.fieldName]; NodePort staticPort = staticPorts[port.fieldName];
if (port.IsDynamic || port.direction != staticPort.direction) ports.Remove(port.fieldName); if (port.IsDynamic || port.direction != staticPort.direction) ports.Remove(port.fieldName);
else port.type = staticPort.type; else port.ValueType = staticPort.ValueType;
} else { } else if (port.IsStatic) ports.Remove(port.fieldName);
ports.Remove(port.fieldName);
}
} }
// Add missing ports // Add missing ports
foreach (NodePort staticPort in staticPorts.Values) { foreach (NodePort staticPort in staticPorts.Values) {

View File

@ -103,6 +103,11 @@ public class NodePort {
object[] objs = new object[ConnectionCount]; object[] objs = new object[ConnectionCount];
for (int i = 0; i < ConnectionCount; i++) { for (int i = 0; i < ConnectionCount; i++) {
NodePort connectedPort = connections[i].Port; NodePort connectedPort = connections[i].Port;
if (connectedPort == null) { // if we happen to find a null port, remove it and look again
connections.RemoveAt(i);
i--;
continue;
}
objs[i] = connectedPort.GetOutputValue(); objs[i] = connectedPort.GetOutputValue();
} }
return objs; return objs;