public bool Init(NodeGraph g, INode upstream, Vector3 start, INode downstream, Vector3 end) { if (upstream == null || downstream == null) { return(false); } // Create transport connector var connector = new Connector(upstream.GetNode(), downstream.GetNode()); if (!g.AddConnector(connector)) { return(false); } startPosition = start; endPosition = end; sqrMagnitude = (end - start).sqrMagnitude; length = Graph.DistanceToConnectorLength(Vector3.Distance(start, end)); step = Vector3.Lerp(Vector3.zero, end - start, (float)1 / length); velocity = step * ((float)speed / ticker.UpdatesPerTick); transporter = new SupplyChain.Transporter(connector, ticker, length, rate.Get(), speed); transporter.PacketsMoved += TransporterOnPacketsMoved; transporter.Disconnected += TransporterOnDisconnected; // Set collider lineCollider.SetCollider(start, end, transform.position.z); // Display line lr.enabled = false; lr.positionCount = 2; lr.SetPosition(0, start); lr.SetPosition(1, end); lr.enabled = true; rotation = Quaternion.FromToRotation(Vector2.up, end - start); return(true); }