public List <ConveyerNode> createArm(Direction dir, bool inside, ConveyerNode connection) { // Danger : untested Vector3 from = transform.position; Vector3 to = from + Directions.toVector(dir) * distance; ConveyerNode prevNode = middle; Vector3 prevPosition = middle.from; List <ConveyerNode> arm = new List <ConveyerNode>(); for (int i = 1; i <= numberOfNodes; i++) { Vector3 currentPosition = Vector3.Lerp(from, to, i / numberOfNodes); ConveyerNode currentNode = new ConveyerNode(currentPosition, speed); link(currentNode, prevNode, inside); arm.Add(currentNode); prevNode = currentNode; prevPosition = currentPosition; } if (connection != null) { link(prevNode, connection, inside); } return(arm); }
public void init(Direction output, Direction input, ConveyerNode inConnection) { this.output = output; this.middle = new ConveyerNode(transform.position, speed); outArm = createArm(output, false, null); inArm = createArm(input, true, inConnection); }
private void link(ConveyerNode fromNode, ConveyerNode toNode, bool forward) { if (forward) { fromNode.to = toNode.from; fromNode.output = toNode; } else { toNode.to = fromNode.from; toNode.output = fromNode; } }
private ResourceTaker createBelt(Vector3 from, Vector3 to, ResourceTaker resourceTaker) { //TODO: fix - create tiles not nodes Vector3 position = Vector3.Lerp(from, to, 0.5f); GameObject gameObject = (GameObject)GameObject.Instantiate(beltPrefab, position, Quaternion.identity); ConveyerNode belt = gameObject.GetComponent <ConveyerNode>(); belt.from = from; belt.to = to; belt.speed = 1; belt.output = resourceTaker; return(belt); }