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