Example #1
0
    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);
    }
Example #2
0
 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);
 }
Example #3
0
 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;
     }
 }
Example #4
0
    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);
    }