public void LinkNodes() { //TODO: Change this to the initial point where we want the map to end/start? m_RoomNodeList[0].gameObject.transform.position = new Vector3(0, 0, m_RoomNodeList[0].gameObject.transform.position.z); for (int i = 0; i < m_RoomNodeList.Count; i++) { GenericMapNodeController node = m_RoomNodeList[i].GetComponent <GenericMapNodeController>(); NODE_PLACEMENT_DIRECTION drawDirection = NODE_PLACEMENT_DIRECTION.NONE; if ((node.GetRightNodeID() != -1 && node.GetLeftNodeID() == -1) || (node.GetRightNodeID() == -1 && node.GetLeftNodeID() != -1)) { drawDirection = NODE_PLACEMENT_DIRECTION.MIDDLE; int nodeID = node.GetRightNodeID() == -1 ? node.GetLeftNodeID() : node.GetRightNodeID(); MoveLinkedNodePosition(m_RoomNodeList[i], GetNodeWithID(nodeID), drawDirection); } else if (node.GetRightNodeID() != -1 && node.GetLeftNodeID() == -1) { drawDirection = NODE_PLACEMENT_DIRECTION.RIGHT; MoveLinkedNodePosition(m_RoomNodeList[i], GetNodeWithID(node.GetRightNodeID()), drawDirection); } else if (node.GetRightNodeID() == -1 && node.GetLeftNodeID() != -1) { drawDirection = NODE_PLACEMENT_DIRECTION.LEFT; MoveLinkedNodePosition(m_RoomNodeList[i], GetNodeWithID(node.GetLeftNodeID()), drawDirection); } else if (node.GetRightNodeID() != -1 && node.GetLeftNodeID() != -1) { MoveLinkedNodePosition(m_RoomNodeList[i], GetNodeWithID(node.GetRightNodeID()), NODE_PLACEMENT_DIRECTION.RIGHT); MoveLinkedNodePosition(m_RoomNodeList[i], GetNodeWithID(node.GetLeftNodeID()), NODE_PLACEMENT_DIRECTION.LEFT); } } }
public void MoveLinkedNodePosition(GameObject aStationaryNode, GameObject linkedNode, NODE_PLACEMENT_DIRECTION direction) { float distance = 20.0f; float xMovement; if (direction != NODE_PLACEMENT_DIRECTION.NONE) { if (direction == NODE_PLACEMENT_DIRECTION.MIDDLE) { xMovement = 0.0f; } else { xMovement = direction == NODE_PLACEMENT_DIRECTION.RIGHT ? distance / 2 : -distance / 2; } Vector3 movementVector = new Vector3(xMovement, distance, 0); linkedNode.transform.position = aStationaryNode.transform.position + movementVector; LineRenderer line = GetComponent <LineRenderer>() == null?gameObject.AddComponent <LineRenderer>() : GetComponent <LineRenderer>(); line.SetPosition(0, aStationaryNode.transform.position); line.SetPosition(1, linkedNode.transform.position); line.startColor = Color.blue; line.endColor = Color.red; line.startWidth = 2.0f; line.endWidth = 2.0f; line.enabled = true; } }