void ChangeScene(AugmentedScene NewScene)
 {
     if (gameObject.activeSelf && gameObject.activeInHierarchy)
     {
         // Disable all scenes
         foreach (AugmentedScene scene in Scenes)
         {
             scene.gameObject.SetActive(false);
         }
         // Set new scene as active scene
         Scene = NewScene;
         Scene.gameObject.SetActive(true);
     }
 }
 void Update()
 {
     if (GPS != null)
     {
         // Active last scene if GPS is available
         if (GPS.IsEnabled())
         {
             AugmentedScene NearScene = GetNearestScene();
             if (NearScene != Scene)
             {
                 ChangeScene(NearScene);
             }
         }
     }
 }
 void Start()
 {
     GPS    = FindObjectOfType <GPS>();
     Scenes = GetComponentsInChildren <AugmentedScene>();
     foreach (AugmentedScene sc in Scenes)
     {
         if (sc.name.Equals("Default") || sc.name.Equals("Default Scene"))
         {
             DefaultScene = sc;
         }
     }
     if (DefaultScene != null)
     {
         // Activate Default scene
         ChangeScene(DefaultScene);
     }
     else
     {
         Debug.Log("SceneManager --- Default Scene not found");
     }
 }
    AugmentedScene GetNearestScene()
    {
        AugmentedScene NearScene = Scene;
        float          dist      = -1;

        foreach (AugmentedScene scene in Scenes)
        {
            if (dist == -1)
            {
                dist      = GPS.GetDistance(scene.Latitude, scene.Longitude, GPS.Lat, GPS.Lng);
                NearScene = scene;
            }
            else
            {
                float distance = GPS.GetDistance(scene.Latitude, scene.Longitude, GPS.Lat, GPS.Lng);
                if (distance < dist)
                {
                    dist      = distance;
                    NearScene = scene;
                }
            }
        }

        // If near scene is not in the AR Scene Radius, we return the default scene
        if (DefaultScene != null)
        {
            if (dist > ARSceneRadius)
            {
                return(DefaultScene);
            }
        }
        else
        {
            Debug.Log("Missing Default Scene");
        }

        return(NearScene);
    }