Ejemplo n.º 1
0
    IEnumerator populateTrack(GameObject track)
    {
        Transform trackObjectsRoot = track.transform.Find("trackObjects");

        // No Track Objects
        if (trackObjectsRoot == null)
        {
            yield break;
        }

        // Activating Decor Animators
        DecorAnimation.activeTrackDecors(track.GetComponent <Track>().ID, true);

        populateTrackObjects(trackObjectsRoot);

        yield break;
    }
Ejemplo n.º 2
0
    public void disposeTrackAndTrackObjects(Track track, bool disposeTrackGeometry)
    {
        // Disabling Decor Animators
        DecorAnimation.activeTrackDecors(track.ID, false);

        if (disposeTrackGeometry == true)
        {
            track.positioned = false;
            track.gameObject.transform.position = rootPos;
            track.gameObject.SetActive(false);
        }


        List <Transform> objectsToClear = new List <Transform>();

        Transform currentTrackObjectsRoot = track.gameObject.transform.Find("trackObjects");

        if (currentTrackObjectsRoot != null)
        {
            foreach (Transform trackItem in currentTrackObjectsRoot.transform)
            {
                TrackObject curTrackObject = trackItem.GetComponent <TrackObject>();

                if (curTrackObject.placeHolder == false)
                {
                    objectsToClear.Add(trackItem);
                }
            }
        }

        if (objectsToClear.Count > 0)
        {
            foreach (Transform clearItem in objectsToClear)
            {
                TrackObject clearedTrackObject = clearItem.GetComponent <TrackObject>();
                if (clearedTrackObject != null)
                {
                    clearedTrackObject.positioned = false;

                    // Handle Track Object
                    switch (clearedTrackObject.objectType)
                    {
                    case TrackObject.ObjectType.PointsLine:
                        if (clearedTrackObject.gameObject.GetComponent <CoinLine>() != null)
                        {
                            clearedTrackObject.gameObject.GetComponent <CoinLine>().doDeactive();
                        }
                        break;

                    case TrackObject.ObjectType.PointsCurve:
                        if (clearedTrackObject.gameObject.GetComponent <CoinCurve>() != null)
                        {
                            clearedTrackObject.gameObject.GetComponent <CoinCurve>().doDeactive();
                        }
                        break;

                    case TrackObject.ObjectType.PointsMovingLine:
                        if (clearedTrackObject.gameObject.transform.Find("movingMesh").GetComponent <CoinLine>() != null)
                        {
                            clearedTrackObject.gameObject.transform.Find("movingMesh").GetComponent <CoinLine>().doDeactive();
                        }
                        if (clearedTrackObject.gameObject.transform.Find("movingMesh").GetComponent <CoinLine>() != null)
                        {
                            Destroy(clearedTrackObject.gameObject.transform.Find("movingMesh").GetComponent <CoinLine>());
                        }
                        if (clearedTrackObject.gameObject.GetComponent <MovingCoin>() != null)
                        {
                            clearedTrackObject.gameObject.GetComponent <MovingCoin>().doDeactive();
                        }
                        break;
                    }

                    switch (clearedTrackObject.objectGroup)
                    {
                    case TrackObject.ObjectGroup.CharacterObstacles:
                        if (clearedTrackObject.gameObject.GetComponent <CharacterObstacle>() != null)
                        {
                            clearedTrackObject.gameObject.GetComponent <CharacterObstacle>().doDeactive();
                        }
                        break;

                    case TrackObject.ObjectGroup.MovingObstaclesTrail3:
                        if (clearedTrackObject.gameObject.GetComponent <MovingObstacle>() != null)
                        {
                            clearedTrackObject.gameObject.GetComponent <MovingObstacle>().doDeactive();
                        }
                        break;

                    case TrackObject.ObjectGroup.MovingObstaclesTrail5:
                        if (clearedTrackObject.gameObject.GetComponent <MovingObstacle>() != null)
                        {
                            clearedTrackObject.gameObject.GetComponent <MovingObstacle>().doDeactive();
                        }
                        break;
                    }
                }

                clearItem.transform.parent = trackObjectsRoot.transform;
                clearItem.position         = rootPos;
                clearItem.gameObject.SetActive(false);
            }
        }
    }