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); } } } }
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); }