private IEnumerator initProcess() { GameObject compassMover = Instantiate(compassMoverData, null); CompassMover mover = compassMover.GetComponent <CompassMover>(); // 좋은 각도가 나올때까지 대기. while (!mover.isGoodDegree) { yield return(new WaitForSeconds(0.1f)); } // mover 삭제 mover.isDone = true; foreach (var g in UnityEngine.SceneManagement.SceneManager.GetActiveScene().GetRootGameObjects()) { if (g.name == "EventHandler") { eventHandler = g.GetComponent <EventHandler>(); } else if (g.name == "ServerManager") { serverManager = g.GetComponent <ServerManager>(); } } StartCoroutine(loadWayPoints()); //Invoke("test", 3.0f); Debug.Log(Camera.main.transform.position); arrow = Camera.main.transform.Find("arrows").gameObject; arrow.SetActive(true); //arrow = Instantiate(NavPrefab, new Vector3(0, - 0.55f, 0), NavPrefab.transform.rotation, Camera.main.transform); InvokeRepeating("CheckDegree", 5, 5); InvokeRepeating("CheckDistance", 7.0f, 0.5f); }
private IEnumerator loadRestaurants() { degreesLongitudeInMetersAtEquator = 111319.9f; loadingManager.state = "GPS 신호 수신 중..."; loadingManager.step = 30f; loadingManager.ToggleUpdateFlag(); while (!GPSManager.Instance.isReady) { yield return(new WaitForSeconds(1.0f)); } loadingManager.state = "서버로부터 주변 식당 정보 받는 중..."; loadingManager.step = 60f; loadingManager.ToggleUpdateFlag(); //Real GPS Position - This will be the world origin. //var gpsLat = "36.1380077"; //var gpsLon = "128.4166394"; float[] Lats = new float[5]; float[] Lons = new float[5]; float gpsLat = 0.0f; float gpsLon = 0.0f; for (int i = 0; i < 5; i++) { Lats[i] = float.Parse(GPSManager.Instance.latitude); Lons[i] = float.Parse(GPSManager.Instance.longitude); } for (int j = 0; j < 5; j++) { gpsLat = gpsLat + Lats[j]; gpsLon = gpsLon + Lons[j]; } gpsLat = gpsLat / 5; gpsLon = gpsLon / 5; dic.Clear(); dic.Add("url", "restaurants/near2"); dic.Add("method", "GET"); dic.Add("lat", gpsLat.ToString()); dic.Add("lon", gpsLon.ToString()); dic.Add("email", Login.userId); dic.Add("radius", "500"); //IEnumerator sender = serverManager.SendRequest(dic); eventHandler.onClick(this, serverManager.SendRequest(dic), EventHandler.HandlingType.Restaurants); while (!flagWakeUp) { yield return(new WaitForSeconds(1.0f)); } restaurants = eventHandler.result as Dictionary <string, Restaurant>; Debug.Log("Count : " + restaurants.Count); // GPS position converted into unity coordinates GameObject compassMover = Instantiate(compassMoverData, null); CompassMover mover = compassMover.GetComponent <CompassMover>(); loadingBar.SetActive(false); // 좋은 각도가 나올때까지 대기. while (!mover.isGoodDegree) { yield return(new WaitForSeconds(0.1f)); } // mover 삭제 mover.isDone = true; loadingBar.SetActive(true); ToastMaker.instance.ShowToast("Heading : " + GPSManager.Instance.heading); foreach (string k in restaurants.Keys) { Restaurant restaurant = restaurants[k]; var latOffset = (restaurant.y - gpsLat) * degreesLatitudeInMeters; var lonOffset = (restaurant.x - gpsLon) * GetLongitudeDegreeDistance(restaurant.x); Debug.Log("============="); Debug.Log("lat : " + gpsLat); Debug.Log("lon : " + gpsLon); Debug.Log("latOffset : " + latOffset); Debug.Log("lonOffset : " + lonOffset); Debug.Log("============="); //var distance = gpsCalc.distance(float.Parse(gpsLat), float.Parse(gpsLon), restaurant.y, restaurant.x); //var degree = gpsCalc.bearingP1toP2(float.Parse(gpsLat), float.Parse(gpsLon), restaurant.y, restaurant.x); Vector3 vector3 = new Vector3(latOffset, 0, lonOffset); //Vector3 vector3 = Vector3.forward * (float)distance; //Quaternion qRotate = Quaternion.Euler(0f, 180, 0f); //vector3 = qRotate * vector3; //heading = Quaternion.LookRotation(Camera.main.transform.TransformDirection(GPSManager.Instance.headingVector)).eulerAngles.y; //vector3 = Quaternion.AngleAxis(degree, Vector3.up) * vector3; if (vector3.magnitude < 100.0f) { vector3.y = -20.0f; } else if (vector3.magnitude < 150.0f) { vector3.y = 10.0f; } else if (vector3.magnitude < 200.0f) { vector3.y = 40.0f; } else if (vector3.magnitude < 250.0f) { vector3.y = 90.0f; } else if (vector3.magnitude < 300.0f) { vector3.y = 150.0f; } else if (vector3.magnitude < 350.0f) { vector3.y = 220.0f; } else if (vector3.magnitude < 400.0f) { vector3.y = 310.0f; } else if (vector3.magnitude < 450.0f) { vector3.y = 380.0f; } else { vector3.y = 460.0f; } Debug.Log(vector3); vectors.Add(vector3); } Destroy(loadingBar.gameObject); Draw(); //yield return new WaitUntil(() => flagWakeUp == true); }