//Add node based on the indexing of the typeOfNode, will determine what kind of node spawn at each index. //Insert the appropriate list of integers to spawn the appropriate node types for each node. protected void GenerateInitPlanet(GraphGenerator generator, List <int> nodeTypes, int numberOfNodes, float scale) { listOfNodes = new List <PlanetNode>(); listOfLinks = new List <PlanetLink>(); GraphGenerator.GraphData graphData = generator.Generate(numberOfNodes, scale, containerForBoth.transform.position); for (int i = 0; i < graphData.nodes.Count; i++) { if (i > nodeTypes.Count - 1) { break; } GameObject obj = Instantiate(typeOfNode[nodeTypes[i]], graphData.nodes[i], graphData.nodes_rot[i], containerForNodes.transform); PlanetNode node = obj.GetComponent <PlanetNode>(); node.index = i; listOfNodes.Add(node); } for (int i = 0; i < graphData.links.Count; i += 2) { //Will definetly have no direction links because i said so. if (!graphData.isLinksDirectional) { GameObject obj = Instantiate(typeOfLink, Vector3.zero, Quaternion.identity, containerForLinks.transform); PlanetLink link = obj.GetComponent <PlanetLink>(); int index1 = graphData.links[i]; int index2 = graphData.links[i + 1]; link.nodePrev = listOfNodes[index1]; link.nodeNext = listOfNodes[index2]; link.PlaceLinkAtNodes(); listOfLinks.Add(link); } } }
public void MakeLink(int fromNode, int toNode) { GameObject obj = Instantiate(typeOfLink, Vector3.zero, Quaternion.identity, containerForLinks.transform); PlanetLink link = obj.GetComponent <PlanetLink>(); link.nodePrev = listOfNodes[fromNode]; link.nodeNext = listOfNodes[toNode]; link.PlaceLinkAtNodes(); listOfLinks.Add(link); }