Esempio n. 1
0
    public void LoadTrack(int _currentIndex, int _endIndex)
    {
        currentTrackIndex = _endIndex;

        TrackSegment lastTrackSegment = null;

        if (presentedTrackSegment.Count > 0)
        {
            lastTrackSegment = presentedTrackSegment[presentedTrackSegment.Count - 1];
        }

        for (int i = _currentIndex; i < _endIndex; i++)
        {
            int index = i;
            if (levelConfig.randomTrack)
            {
                index = Random.Range(0, levelConfig.tracks.Count);
            }

            if (index >= levelConfig.tracks.Count)
            {
                Debug.LogError("Track not available!");
                index = levelConfig.tracks.Count - 1;
            }

            string       trackName       = levelConfig.tracks[index];
            ObjectPool   trackPool       = trackPoolList.Find(item => trackName.Equals(item.name));
            GameObject   trackGameObject = trackPool.Get();
            TrackSegment segment         = trackGameObject.GetComponent <TrackSegment>();
            segment.SetSegment(trackPool, i);

            Vector3 lastTrackExitPosition = new Vector3(0.0f, 0.0f, -1 * ((segment.endPoint.position.z + segment.startPoint.position.z) / 2.0f));
            if (lastTrackSegment != null)
            {
                lastTrackExitPosition = lastTrackSegment.endPoint.position;
            }
            trackGameObject.transform.position = new Vector3(trackGameObject.transform.position.x, trackGameObject.transform.position.y, lastTrackExitPosition.z + ((segment.endPoint.position.z + segment.startPoint.position.z) / 2.0f));
            presentedTrackSegment.Add(segment);
            lastTrackSegment = segment;
        }

        isTrackReady = true;
    }