private static void Core_OnSendData() { if (CachedSnapshots.Keys.Count <= 0) { CognitiveVR.Util.logDebug("Sensor.SendData found no data"); return; } //TODO should hold until extreme batch size reached if (string.IsNullOrEmpty(Core.TrackingSceneId)) { CognitiveVR.Util.logDebug("Sensor.SendData could not find scene settings for scene! do not upload sensors to sceneexplorer"); CachedSnapshots.Clear(); currentSensorSnapshots = 0; return; } if (!Core.IsInitialized) { return; } nextSendTime = Time.realtimeSinceStartup + CognitiveVR_Preferences.Instance.SensorSnapshotMaxTimer; lastSendTime = Time.realtimeSinceStartup; StringBuilder sb = new StringBuilder(1024); sb.Append("{"); JsonUtil.SetString("name", Core.DeviceId, sb); sb.Append(","); if (!string.IsNullOrEmpty(Core.LobbyId)) { JsonUtil.SetString("lobbyId", Core.LobbyId, sb); sb.Append(","); } JsonUtil.SetString("sessionid", Core.SessionID, sb); sb.Append(","); JsonUtil.SetInt("timestamp", (int)Core.SessionTimeStamp, sb); sb.Append(","); JsonUtil.SetInt("part", jsonPart, sb); sb.Append(","); jsonPart++; JsonUtil.SetString("formatversion", "1.0", sb); sb.Append(","); sb.Append("\"data\":["); foreach (var k in CachedSnapshots.Keys) { sb.Append("{"); JsonUtil.SetString("name", k, sb); sb.Append(","); sb.Append("\"data\":["); foreach (var v in CachedSnapshots[k]) { sb.Append(v); sb.Append(","); } if (CachedSnapshots.Values.Count > 0) { sb.Remove(sb.Length - 1, 1); //remove last comma from data array } sb.Append("]"); sb.Append("}"); sb.Append(","); } if (CachedSnapshots.Keys.Count > 0) { sb.Remove(sb.Length - 1, 1); //remove last comma from sensor object } sb.Append("]}"); CachedSnapshots.Clear(); currentSensorSnapshots = 0; string url = CognitiveStatics.POSTSENSORDATA(Core.TrackingSceneId, Core.TrackingSceneVersionNumber); //byte[] outBytes = System.Text.UTF8Encoding.UTF8.GetBytes(); //CognitiveVR_Manager.Instance.StartCoroutine(CognitiveVR_Manager.Instance.PostJsonRequest(outBytes, url)); NetworkManager.Post(url, sb.ToString()); if (OnSensorSend != null) { OnSensorSend.Invoke(); } }