public void LoadLocalMarkersOnStartup(bool isRecognitionManagerRunning, string[] markerIds, string[] discoverIds) { LoadLocalDiscoverModelsOnStartUp(discoverIds); if (markerIds.Length < 1) { return; } string srcMarkerPath = Application.streamingAssetsPath + "/markers/"; #if UNITY_EDITOR || UNITY_IOS if (!Directory.Exists(Application.streamingAssetsPath) || !Directory.Exists(srcMarkerPath)) { return; } #endif string dstMarkerPath = RecognitionManager.GetAppDataPath() + "markers/"; if (!Directory.Exists(dstMarkerPath)) { Directory.CreateDirectory(dstMarkerPath); } else { string[] files = Directory.GetFiles(dstMarkerPath); foreach (string ff in files) { File.Delete(ff); } } foreach (string markerId in markerIds) { Debug.Log("Loading marker " + markerId); if (markerId == "") { continue; } string markerString = null; #if UNITY_EDITOR || UNITY_IOS markerString = File.ReadAllText(srcMarkerPath + markerId + ".dat"); #else WWW reader = new WWW(srcMarkerPath + markerId + ".dat"); while (!reader.isDone) { } if (!String.IsNullOrEmpty(reader.error)) { continue; } markerString = reader.text; #endif if (markerString.Length > 0) { Debug.Log("Loading marker save " + markerId); WSMarkerResponse.WSMarker markerData = JsonUtilities.ToObject <WSMarkerResponse.WSMarker>(markerString); DateTime now = DateTime.Now.ToUniversalTime(); Marker marker = new Marker(markerData.markerId, markerData.markerDescriptor, markerData.markerCustomData, DateTime.Parse(markerData.markerUpdateDate), now, now, markerData.publishedFrom != null ? (DateTime?)DateTime.Parse(markerData.publishedFrom) : null, markerData.publishedTo != null ? (DateTime?)DateTime.Parse(markerData.publishedTo) : null, markerData.cacheEnabled, new MarkerDatabase(markerData.markerDatabase.id, markerData.markerDatabase.code, markerData.markerDatabase.customData, markerData.markerDatabase.cloud, now, now), markerData.arLogoEnabled); SaveLocalMarker(marker, isRecognitionManagerRunning, true, false); } } PikkartARCore.SyncMarkersWithFolder(); }
/// <summary> /// Web service request coroutine. /// </summary> /// <param name="url">URL.</param> /// <param name="requestBody">Request body.</param> /// <param name="callbackWithResponse">Callback with response.</param> /// <param name="errorCallback">Error callback.</param> /// <typeparam name="T">Response type.</typeparam> public IEnumerator CallWS <T> ( string url, Dictionary <string, string> requestBody = null, SuccessCallbackWithResponse <T> callbackWithResponse = null, ErrorCallback errorCallback = null) { m_www = null; yield return(0); byte[] requestBodyBytes = null; byte[] escapedRequestBodyBytes = null; if (requestBody != null) { requestBodyBytes = NetUtilites.GetRequestBody(requestBody); escapedRequestBodyBytes = NetUtilites.GetEscapedRequestBody(requestBody); } yield return(0); Dictionary <string, string> headers = NetUtilites.GetHeaders( requestBodyBytes == null ? GET : POST, new Uri(url).PathAndQuery, requestBodyBytes); yield return(0); m_www = new WWW(url, escapedRequestBodyBytes, headers); PikkartARHelper.Instance.LaunchCoroutine(StartTimeout()); yield return(0); #if UNITY_IPHONE while (m_www != null && !m_www.isDone) { yield return(null); } #else yield return(m_www); // Cannot be interrupted by m_www.Dispose() on iOS #endif if (m_www == null) { Debug.LogWarning("WWW timed out!"); if (errorCallback != null) { errorCallback("timeout"); } } else { if (m_www.error == null || m_www.error.Length == 0) { //Debug.Log ("WWW Ok: " + m_www.text); try { WSResponse response = JsonUtilities.ToObject <WSResponse> (m_www.text); //Debug.Log ("CallWS deserialized response to object"); if (response.result.code == 200) { //Debug.Log ("Response result code is 200"); T specificResponse = JsonUtilities.ToObject <T> (m_www.text); //Debug.Log ("CallWS deserialized response to specific object"); if (callbackWithResponse != null) { callbackWithResponse(specificResponse); } } else { Debug.LogWarning(response.result.message); if (errorCallback != null) { errorCallback(response.result.message); } } } catch (Exception e) { Debug.LogError("CallWS exception catched: " + e.Message); if (errorCallback != null) { errorCallback(e.Message); } } } else { Debug.LogWarning("WWW Error: " + m_www.error); if (errorCallback != null) { errorCallback(m_www.error); } } } yield return(0); ClearWWW(); }