Ejemplo n.º 1
0
        protected void Move()
        {
            if (_following != null && _following.RearPos - FrontPos < 0.5f)
            {
                return;
            }
            FrontPos += _speed * _elapsedTime;
            RearPos  += _speed * _elapsedTime;
            if (_lanes.Count > 0)
            {
                var rearLane = _lanes[0];
                if (RearPos > rearLane.Parent.Length)
                {
                    RearPos = 0;
                    rearLane.Depart(this);
                    _lanes.Remove(rearLane);
                    DepartedLane?.Invoke(this);

                    if (_nodes.Count > 0)
                    {
                        var node = _nodes[0];
                        RearNode = node;
                        _nodes.Remove(node);
                    }
                }
            }
        }
Ejemplo n.º 2
0
 private void ClearOccupied()
 {
     foreach (var lane in _lanes)
     {
         lane.Depart(this);
     }
     foreach (var node in _nodes)
     {
         node.Occupied = false;
     }
     _nodes.Clear();
     _lanes.Clear();
     DepartedLane?.Invoke(this);
 }