public CNeuroNetWrapper(int numInputs, int numOutputs) { _cnet = CNeuroNetWrapperFunctions.__NewNeuroNet(numInputs, numOutputs); _numInputs = numInputs; _numOutputs = numOutputs; _connections = ConnectionsCollection.GetLinkedCollection(_cnet); _nodes = NodesCollection.GetLinkedConnection(_cnet); }
public static ConnectionsCollection GetLinkedCollection(IntPtr ptr) { ConnectionsCollection c = null; if (ptr != IntPtr.Zero) { c = new ConnectionsCollection(ptr); } return(c); }
public CNeuroNetWrapper(CNeuroNetWrapper copy) { _numInputs = copy._numInputs; _numOutputs = copy._numOutputs; _cnet = CNeuroNetWrapperFunctions.__NewNeuroNet(_numInputs, _numOutputs); foreach (var n in copy.Nodes) { if (n.ID > _numInputs + _numOutputs) { CNeuroNetWrapperFunctions.__AddNode(_cnet, n.ID); } } foreach (var c in copy.Connections) { CNeuroNetWrapperFunctions.__AddConnection(_cnet, c.From, c.To, c.Weight); } _connections = ConnectionsCollection.GetLinkedCollection(_cnet); _nodes = NodesCollection.GetLinkedConnection(_cnet); }
void OnGUI() { if (!CheckSelectedObject()){ EditorGUILayout.HelpBox("Please select scriptable object instance which has a [Graph] attribute", MessageType.Info,true); return; } if (Event.current.type == EventType.ValidateCommand && Event.current.commandName == "UndoRedoPerformed"){ Event.current.Use(); return; } if (Event.current.type == EventType.Used){ return; } bool firsDrawCallOnThisGraph = CurrentGraph != lastUsedGraph; JointHighlight = (JointHighlightHolder) GUIUtility.GetStateObject(typeof(JointHighlightHolder) ,GUIUtility.GetControlID(FocusType.Passive)); List<Node> nodes = new List<Node>(); OnGUIToolBar(); scrollPosition = EditorGUILayout.BeginScrollView(scrollPosition); GUILayoutUtility.GetRect(GUIContent.none, GUIStyle.none, GUILayout.Width(contentWidth), GUILayout.Height(contentHeight)); if (connectionCollection != null){ foreach (Connection connectionGUI in connectionCollection.allConnections) { connectionGUI.OnGUI(); } } foreach(var graphData in CurrentGraph.ItemList){ Node nodeGUI = Node.GetInstance((ScriptableObjectNode)graphData, this); nodes.Add(nodeGUI); } BeginWindows(); foreach (Node node in nodes){ node.OnGUI(); } EndWindows(); connectionCollection = new ConnectionsCollection (nodes, this); HandleDraggConnections(nodes, connectionCollection.LastDraggedConnection); EditorGUILayout.EndScrollView(); UpdateContentSize(nodes); if (firsDrawCallOnThisGraph ){ Repaint(); } lastUsedGraph = CurrentGraph; }