Esempio n. 1
0
        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);
        }