///sky position public static void RecordGazePoint(double timestamp, Vector3 hmdpoint, Quaternion hmdrotation, Vector3 gpsloc, float compass, Vector3 floorPos) //looking at the camera far plane { gazebuilder.Append("{"); JsonUtil.SetDouble("time", timestamp, gazebuilder); gazebuilder.Append(","); JsonUtil.SetVector("p", hmdpoint, gazebuilder); gazebuilder.Append(","); JsonUtil.SetQuat("r", hmdrotation, gazebuilder); if (CognitiveVR_Preferences.Instance.TrackGPSLocation) { gazebuilder.Append(","); JsonUtil.SetVector("gpsloc", gpsloc, gazebuilder); gazebuilder.Append(","); JsonUtil.SetFloat("compass", compass, gazebuilder); } if (CognitiveVR_Preferences.Instance.RecordFloorPosition) { gazebuilder.Append(","); JsonUtil.SetVector("f", floorPos, gazebuilder); } gazebuilder.Append("}"); gazeCount++; if (gazeCount >= CognitiveVR_Preferences.Instance.GazeSnapshotCount) { SendGazeData(); } else { gazebuilder.Append(","); } }
//looking at a media dynamic object //mediatime is milliseconds since the start of the video public static void RecordGazePoint(double timestamp, string objectid, Vector3 localgazepoint, Vector3 hmdpoint, Quaternion hmdrotation, Vector3 gpsloc, float compass, string mediasource, int mediatimeMs, Vector2 uvs, Vector3 floorPos) { gazebuilder.Append("{"); JsonUtil.SetDouble("time", timestamp, gazebuilder); gazebuilder.Append(","); JsonUtil.SetString("o", objectid, gazebuilder); gazebuilder.Append(","); JsonUtil.SetVector("p", hmdpoint, gazebuilder); gazebuilder.Append(","); JsonUtil.SetQuat("r", hmdrotation, gazebuilder); gazebuilder.Append(","); JsonUtil.SetVector("g", localgazepoint, gazebuilder); gazebuilder.Append(","); JsonUtil.SetString("mediaId", mediasource, gazebuilder); gazebuilder.Append(","); JsonUtil.SetInt("mediatime", mediatimeMs, gazebuilder); gazebuilder.Append(","); JsonUtil.SetVector2("uvs", uvs, gazebuilder); if (CognitiveVR_Preferences.Instance.TrackGPSLocation) { gazebuilder.Append(","); JsonUtil.SetVector("gpsloc", gpsloc, gazebuilder); gazebuilder.Append(","); JsonUtil.SetFloat("compass", compass, gazebuilder); } if (CognitiveVR_Preferences.Instance.RecordFloorPosition) { gazebuilder.Append(","); JsonUtil.SetVector("f", floorPos, gazebuilder); } gazebuilder.Append("}"); gazeCount++; if (gazeCount >= CognitiveVR_Preferences.Instance.GazeSnapshotCount) { SendGazeData(); } else { gazebuilder.Append(","); } DynamicGazeRecordEvent(timestamp, objectid, localgazepoint, hmdpoint, hmdrotation); }
private static void Core_OnSendData() { if (Fixations.Count <= 0) { CognitiveVR.Util.logDebug("Fixations.SendData found no data"); return; } //TODO should hold until extreme batch size reached if (string.IsNullOrEmpty(Core.TrackingSceneId)) { CognitiveVR.Util.logDebug("Fixations.SendData could not find scene settings for scene! do not upload fixations to sceneexplorer"); Fixations.Clear(); return; } nextSendTime = Time.realtimeSinceStartup + CognitiveVR_Preferences.Instance.FixationSnapshotMaxTimer; lastSendTime = Time.realtimeSinceStartup; StringBuilder sb = new StringBuilder(1024); sb.Append("{"); JsonUtil.SetString("userid", Core.UniqueID, 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++; sb.Append("\"data\":["); for (int i = 0; i < Fixations.Count; i++) { sb.Append("{"); JsonUtil.SetDouble("time", System.Convert.ToDouble((double)Fixations[i].StartMs / 1000.0), sb); sb.Append(","); JsonUtil.SetLong("duration", Fixations[i].DurationMs, sb); sb.Append(","); JsonUtil.SetFloat("maxradius", Fixations[i].MaxRadius, sb); sb.Append(","); if (Fixations[i].IsLocal) { JsonUtil.SetString("objectid", Fixations[i].DynamicObjectId, sb); sb.Append(","); JsonUtil.SetVector("p", Fixations[i].LocalPosition, sb); } else { JsonUtil.SetVector("p", Fixations[i].WorldPosition, sb); } sb.Append("},"); } if (Fixations.Count > 0) { sb.Remove(sb.Length - 1, 1); //remove last comma from fixation object } sb.Append("]}"); Fixations.Clear(); string url = CognitiveStatics.POSTFIXATIONDATA(Core.TrackingSceneId, Core.TrackingSceneVersionNumber); NetworkManager.Post(url, sb.ToString()); }
private static void SendGazeData() { if (string.IsNullOrEmpty(Core.TrackingSceneId)) { Util.logDebug("Cognitive GazeCore.SendData could not find scene settings for scene! do not upload gaze to sceneexplorer"); return; } gazebuilder.Append("],"); gazeCount = 0; //header JsonUtil.SetString("userid", Core.UniqueID, gazebuilder); gazebuilder.Append(","); if (!string.IsNullOrEmpty(CognitiveVR_Preferences.LobbyId)) { JsonUtil.SetString("lobbyId", CognitiveVR_Preferences.LobbyId, gazebuilder); gazebuilder.Append(","); } JsonUtil.SetDouble("timestamp", (int)Core.SessionTimeStamp, gazebuilder); gazebuilder.Append(","); JsonUtil.SetString("sessionid", Core.SessionID, gazebuilder); gazebuilder.Append(","); JsonUtil.SetInt("part", jsonPart, gazebuilder); jsonPart++; gazebuilder.Append(","); JsonUtil.SetString("hmdtype", HMDName, gazebuilder); gazebuilder.Append(","); JsonUtil.SetFloat("interval", CognitiveVR.CognitiveVR_Preferences.Instance.SnapshotInterval, gazebuilder); gazebuilder.Append(","); JsonUtil.SetString("formatversion", "1.0", gazebuilder); if (Core.GetNewSessionProperties(false).Count > 0) { gazebuilder.Append(","); gazebuilder.Append("\"properties\":{"); foreach (var kvp in Core.GetNewSessionProperties(true)) { if (kvp.Value.GetType() == typeof(string)) { JsonUtil.SetString(kvp.Key, (string)kvp.Value, gazebuilder); } else { JsonUtil.SetObject(kvp.Key, kvp.Value, gazebuilder); } gazebuilder.Append(","); } gazebuilder.Remove(gazebuilder.Length - 1, 1); //remove comma gazebuilder.Append("}"); } gazebuilder.Append("}"); var sceneSettings = Core.TrackingScene; string url = Constants.POSTGAZEDATA(sceneSettings.SceneId, sceneSettings.VersionNumber); CognitiveVR.NetworkManager.Post(url, gazebuilder.ToString()); //gazebuilder = new StringBuilder(70 * CognitiveVR_Preferences.Instance.GazeSnapshotCount + 200); gazebuilder.Length = 9; //gazebuilder.Append("{\"data\":["); }
private static void SendGazeData() { if (gazeCount == 0) { return; } if (!Core.IsInitialized) { return; } if (string.IsNullOrEmpty(Core.TrackingSceneId)) { Util.logDebug("Cognitive GazeCore.SendData could not find scene settings for scene! do not upload gaze to sceneexplorer"); //dump gaze data gazebuilder.Length = 9; gazeCount = 0; return; } if (gazebuilder[gazebuilder.Length - 1] == ',') { gazebuilder = gazebuilder.Remove(gazebuilder.Length - 1, 1); } gazebuilder.Append("],"); gazeCount = 0; //header JsonUtil.SetString("userid", Core.DeviceId, gazebuilder); gazebuilder.Append(","); if (!string.IsNullOrEmpty(Core.LobbyId)) { JsonUtil.SetString("lobbyId", Core.LobbyId, gazebuilder); gazebuilder.Append(","); } JsonUtil.SetDouble("timestamp", (int)Core.SessionTimeStamp, gazebuilder); gazebuilder.Append(","); JsonUtil.SetString("sessionid", Core.SessionID, gazebuilder); gazebuilder.Append(","); JsonUtil.SetInt("part", jsonPart, gazebuilder); jsonPart++; gazebuilder.Append(","); JsonUtil.SetString("hmdtype", HMDName, gazebuilder); gazebuilder.Append(","); JsonUtil.SetFloat("interval", CognitiveVR.CognitiveVR_Preferences.Instance.SnapshotInterval, gazebuilder); gazebuilder.Append(","); JsonUtil.SetString("formatversion", "1.0", gazebuilder); if (Core.ForceWriteSessionMetadata) //if scene changed and haven't sent metadata recently { Core.ForceWriteSessionMetadata = false; gazebuilder.Append(","); gazebuilder.Append("\"properties\":{"); foreach (var kvp in Core.GetAllSessionProperties(true)) { if (kvp.Value.GetType() == typeof(string)) { JsonUtil.SetString(kvp.Key, (string)kvp.Value, gazebuilder); } else { JsonUtil.SetObject(kvp.Key, kvp.Value, gazebuilder); } gazebuilder.Append(","); } gazebuilder.Remove(gazebuilder.Length - 1, 1); //remove comma gazebuilder.Append("}"); } else if (Core.GetNewSessionProperties(false).Count > 0) //if a session property has changed { gazebuilder.Append(","); gazebuilder.Append("\"properties\":{"); foreach (var kvp in Core.GetNewSessionProperties(true)) { if (kvp.Value.GetType() == typeof(string)) { JsonUtil.SetString(kvp.Key, (string)kvp.Value, gazebuilder); } else { JsonUtil.SetObject(kvp.Key, kvp.Value, gazebuilder); } gazebuilder.Append(","); } gazebuilder.Remove(gazebuilder.Length - 1, 1); //remove comma gazebuilder.Append("}"); } gazebuilder.Append("}"); var sceneSettings = Core.TrackingScene; string url = CognitiveStatics.POSTGAZEDATA(sceneSettings.SceneId, sceneSettings.VersionNumber); CognitiveVR.NetworkManager.Post(url, gazebuilder.ToString()); if (OnGazeSend != null) { OnGazeSend.Invoke(); } //gazebuilder = new StringBuilder(70 * CognitiveVR_Preferences.Instance.GazeSnapshotCount + 200); gazebuilder.Length = 9; //gazebuilder.Append("{\"data\":["); }