public void Display(int numNeurons) { UI_Network_Layer_Nodes nodeTemplate = nodes[0]; // Create all the nodes for our layer for (int i = 0; i < numNeurons - 1; i++) { UI_Network_Layer_Nodes node = Instantiate(nodeTemplate); node.transform.SetParent(contents.transform, false); nodes.Add(node); } }
private void PositionConnections(Image connection, UI_Network_Layer_Nodes otherNode, int nodeIndex, int connectedNodeIndex, double[,] weights, float scaleFactor) { //Set local position to 0 connection.transform.localPosition = Vector3.zero; //Set connection width Vector2 sizeDelta = connection.rectTransform.sizeDelta; double weight = weights[nodeIndex, connectedNodeIndex]; sizeDelta.x = (float)System.Math.Abs(weight * 4); if (sizeDelta.x < 1) { sizeDelta.x = 1; } //Set conenction color if (weight >= 0) { posColour.a = 1f; connection.color = posColour; } else { negColour.a = 1f; connection.color = negColour; } //Set connection length (height) Vector2 connectionVec = this.transform.position - otherNode.transform.position; sizeDelta.y = connectionVec.magnitude / scaleFactor; connection.rectTransform.sizeDelta = sizeDelta; //Set connection rotation float angle = Vector2.Angle(Vector2.up, connectionVec); connection.transform.rotation = Quaternion.AngleAxis(angle, new Vector3(0, 0, 1)); }