private void B_Clicked(object sender, EventArgs e) { var config = new TrackerConfig(); config.AppVersion = "1.0.0.0"; config.TrackingId = "UA-11111111-1"; config.AppId = "AppID"; config.AppName = "TEST"; config.AppInstallerId = Guid.NewGuid().ToString(); config.Debug = true; TrackerFactory.Config = config; Tracker tracker; try { tracker = new TrackerFactory().GetTracker(); tracker.SendView("MainPage"); } catch (Exception ex) { int a = 5; } }
// Handles OSC messages private void MessageReceived(object sender, OscMessageReceivedEventArgs oscMessageReceivedEventArgs) { OscMessage message = oscMessageReceivedEventArgs.Message; // Read the address part by part string[] address = message.Address.TrimStart('/').Split('/'); // Get the display via the address TrackerConfig tracker = PlatformConfig.current.trackers.Find(i => i.id == address[0]); // For the type of the message if (tracker != null) { foreach (var button in tracker.json["buttons"].Children) { if (button["id"].Value != address[2]) { continue; } if (tracker.json["mapping"].Count == 0) { _input[button["mapping"].Value] = message.Data[0]; } else { foreach (var map in button["mapping"].Children) { _input[map.Value] = message.Data[0]; } } } } }
private static void Main(string[] args) { var config = new TrackerConfig(); config.AppVersion = "1"; config.TrackingId = "2"; config.Debug = true; var x = new TrackerFactory(config); var y = x.GetTracker(); y.SendView("Main"); var trackerManager = new TrackerManager(new PlatformInfoProvider() { AnonymousClientId = "12321312", ScreenResolution = new Dimensions(1920, 1080), UserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko", UserLanguage = "en-us", ViewPortResolution = new Dimensions(1920, 1080) }); var tracker = trackerManager.GetTracker("UA-39959863-1"); // saves as default tracker.AppName = "My app"; tracker.AppVersion = "1.0.0.0"; // Log something to GA tracker.SendView("MainPage"); tracker.SendEvent("1", "1"); }
public void Init() { startId = new MockRiderIdUnit("StartId"); endId = new MockRiderIdUnit("EndId"); timer = new MockTimingUnit(); source = new CancellationTokenSource(); TrackerConfig config = new TrackerConfig { EndMatchTimeout = 20, StartTimingGateId = 0, EndTimingGateId = 1 }; //riders are addded in the SimulateRace method tracker = new RaceTracker(timer, startId, endId, config, new List <Rider>()); subject = new RaceManager(); subject.Start(tracker, new List <IDisplayUnit> { timer }); SimulateRace(); //wait for the tracker to process all events Thread.Sleep(2000); subject.Stop(); }
/// <summary> /// Constructor for general use. Riders will be collected from events /// </summary> public RaceSummary(List <RaceEvent> events, TrackerConfig config, string startId, string endId) { Events = events; Config = config; StartId = startId; EndId = endId; }
private Tracker CreateTracker(TrackerConfig trackerConfig) { Type trackerClass = Type.GetType(trackerConfig.ClassName()); Tracker tracker = (Tracker)trackerClass.GetConstructor(Type.EmptyTypes).Invoke(new object[] { }); tracker.SetEnv(defaultEnvironment); tracker.SetCookies(trackerConfig.CookiesList()); return(tracker); }
/// <summary> /// Sends the holoLen's transform to the master. /// </summary> public static void SendTransform(TrackerConfig tracker, TransformConfig transform) { Transmitter transmitter = GetTransmitter(((OSCTrackerData)tracker.data).port); // Send the transform data Vector3 rotate = transform.rotate.eulerAngles; transmitter.SendOSC("/" + tracker.id + "/transform", transform.translate.x, transform.translate.y, transform.translate.z, rotate.x, rotate.y, rotate.z, 1f, 1f, 1f); }
public void RaceSummary_ReadAndWrite_ShouldBeSymmetric() { Beacon martijnBeacon = new Beacon(new byte[] { 0, 0, 0, 0, 0, 1 }, 2); martijnBeacon.Rssi = 3; martijnBeacon.MeasuredPower = 4; Beacon bertBeacon = new Beacon(new byte[] { 0, 0, 0, 0, 0, 5 }, 6); bertBeacon.Rssi = 7; bertBeacon.MeasuredPower = 8; IdEvent entered = new IdEvent(new DateTime(2000, 1, 1), new Rider("Martijn", martijnBeacon), "StartId", Direction.Enter); TimingEvent timing = new TimingEvent(new DateTime(2000, 1, 1), new Rider("Bert", bertBeacon), 100, 1); TrackerConfig config = new TrackerConfig { EndMatchTimeout = 9, StartTimingGateId = 10, EndTimingGateId = 11 }; RaceSummary subject = new RaceSummary(new List <RaceEvent> { entered, timing }, config, "StartId", "EndId"); MemoryStream stream = new MemoryStream(); subject.WriteSummary(stream); stream.Seek(0, SeekOrigin.Begin); RaceSummary parsed = RaceSummary.ReadSummary(stream); foreach ((Rider r1, Rider r2) in subject.Riders.Zip(parsed.Riders)) { Assert.IsTrue(CompareRiders(r1, r2)); } CollectionAssert.AreEqual(subject.Events.Select(e => e.EventId).ToList(), parsed.Events.Select(e => e.EventId).ToList()); CollectionAssert.AreEqual(subject.Events.Select(e => e.GetType()).ToList(), parsed.Events.Select(e => e.GetType()).ToList()); foreach ((RaceEvent e1, RaceEvent e2) in subject.Events.Zip(parsed.Events)) { Assert.IsTrue(CompareRiders(e1.Rider, e2.Rider)); } Assert.AreEqual("StartId", parsed.StartId); Assert.AreEqual("EndId", parsed.EndId); Assert.AreEqual(config.StartTimingGateId, parsed.Config.StartTimingGateId); Assert.AreEqual(config.EndTimingGateId, parsed.Config.EndTimingGateId); Assert.AreEqual(config.EndMatchTimeout, parsed.Config.EndMatchTimeout); }
public InputHandler(TrackerConfig tracker, TrackerHandedness handedness) { _tracker = tracker; _handedness = handedness; #if UNITY_WSA _gestureRecognizer = new GestureRecognizer(); GestureSettings gestureMask = GetGestureMask(tracker); // Using gestures if (gestureMask != GestureSettings.None) { // Add tap to recognisor if (gestureMask.HasFlag(GestureSettings.Tap) || gestureMask.HasFlag(GestureSettings.DoubleTap)) { _gestureRecognizer.Tapped += GestureTapped; } // Add hold to recognisor if (gestureMask.HasFlag(GestureSettings.Hold)) { _gestureRecognizer.HoldStarted += GestureHoldStarted; _gestureRecognizer.HoldCompleted += GestureHoldCompleted; _gestureRecognizer.HoldCanceled += GestureHoldCanceled; } // Add manipulation to recognisor if (gestureMask.HasFlag(GestureSettings.ManipulationTranslate)) { _gestureRecognizer.ManipulationStarted += GestureManipulationStarted; _gestureRecognizer.ManipulationCompleted += GestureManipulationCompleted; _gestureRecognizer.ManipulationCanceled += GestureManipulationCanceled; _gestureRecognizer.ManipulationUpdated += GestureManipulationUpdated;; } // Add navigation to recognisor if (gestureMask.HasFlag(GestureSettings.NavigationX) || gestureMask.HasFlag(GestureSettings.NavigationY) || gestureMask.HasFlag(GestureSettings.NavigationZ)) { _gestureRecognizer.NavigationStarted += GestureNavigationStarted; _gestureRecognizer.NavigationCompleted += GestureNavigationCompleted; _gestureRecognizer.NavigationCanceled += GestureNavigationCanceled; _gestureRecognizer.NavigationUpdated += GestureNavigationUpdated;; } _gestureRecognizer.SetRecognizableGestures(gestureMask); _gestureRecognizer.StartCapturingGestures(); } #endif // Using speech recognition _speechRecognizer = new DictationRecognizer(); _speechRecognizer.DictationResult += SpeechRecognition; }
public void TestMethod1() { var config = new TrackerConfig(); config.AppVersion = "1"; config.TrackingId = "2"; config.Debug = true; var x = new TrackerFactory(config); var y = x.GetTracker(); y.SendView("Main"); }
// Get the gesture mask for a tracker private GestureSettings GetGestureMask(TrackerConfig tracker) { GestureSettings gestureMask = GestureSettings.None; // Check for gestures foreach (var axis in tracker.json["buttons"].Children) { switch (axis["id"]) { case "tap": gestureMask |= GestureSettings.Tap; break; case "double_tap": gestureMask |= GestureSettings.DoubleTap; break; case "hold": gestureMask |= GestureSettings.Hold; break; case "manipulation_x": case "manipulation_y": case "manipulation_z": gestureMask |= GestureSettings.ManipulationTranslate; break; case "navigation_x": gestureMask |= GestureSettings.NavigationX; break; case "navigation_y": gestureMask |= GestureSettings.NavigationY; break; case "navigation_z": gestureMask |= GestureSettings.NavigationZ; break; } } return(gestureMask); }
public void Init() { startId = new MockRiderIdUnit("StartId"); endId = new MockRiderIdUnit("EndId"); timer = new MockTimingUnit(); source = new CancellationTokenSource(); TrackerConfig config = new TrackerConfig { EndMatchTimeout = 10, StartTimingGateId = 0, EndTimingGateId = 1 }; subject = new RaceTracker(timer, startId, endId, config, new List <Rider> { }); race = subject.Run(source.Token); }
public IEnumerator OnAfterGameLoad() { TrackerConfig defaultTrackerConfig = new TrackerConfig(); defaultTrackerConfig.setStorageType(TrackerConfig.StorageType.LOCAL); defaultTrackerConfig.setTraceFormat(TrackerConfig.TraceFormat.XAPI); defaultTrackerConfig.setRawCopy(true); defaultTrackerConfig.setDebug(true); Debug.Log("[SIMVA] Starting..."); if (SimvaConf.Local == null) { SimvaConf.Local = new SimvaConf(); yield return(StartCoroutine(SimvaConf.Local.LoadAsync())); Debug.Log("[SIMVA] Conf Loaded..."); } if (!IsEnabled) { Debug.Log("[SIMVA] Study is not set! Stopping..."); yield return(StartTracker(defaultTrackerConfig, null)); yield break; } else if (IsActive) { Debug.Log("[SIMVA] Simva is already started..."); // No need to restart yield break; } else { Debug.Log("[SIMVA] Setting current target to Simva.Login..."); savedGameTarget = SceneManager.GetActiveScene().name; LoadManager.Instance.AutoStart = false; yield return(RunTarget("Simva.Login")); yield return(OnGameReady()); } }
public IEnumerator LaunchActivity(string activityId) { if (activityId == null || gameplay) { if (backupOperation != null && !backupOperation.IsCompletedSuccessfully) { AbortQuit(); yield return(RunTarget("Simva.Backup")); yield return(new WaitUntil(() => afterBackup)); } //yield return RunTarget("Simva.End"); allowedToQuit = true; schedule = null; } else { Activity activity = GetActivity(activityId); if (activity != null) { AbortQuit(); Debug.Log("[SIMVA] Schedule: " + activity.Type + ". Name: " + activity.Name + " activityId " + activityId); switch (activity.Type) { case "limesurvey": Debug.Log("[SIMVA] Starting Survey..."); yield return(RunTarget("Simva.Survey")); break; case "gameplay": default: var trackerConfig = new TrackerConfig(); trackerConfig.setStorageType(TrackerConfig.StorageType.LOCAL); trackerConfig.setTraceFormat(TrackerConfig.TraceFormat.XAPI); trackerConfig.setRawCopy(true); trackerConfig.setDebug(true); gameplay = true; if (ActivityHasDetails(activity, "realtime", "trace_storage")) { // Realtime trackerConfig.setStorageType(TrackerConfig.StorageType.NET); trackerConfig.setHost(simvaController.SimvaConf.URL); trackerConfig.setBasePath(""); trackerConfig.setLoginEndpoint("/users/login"); trackerConfig.setStartEndpoint("/activities/{0}/result"); trackerConfig.setTrackEndpoint("/activities/{0}/result"); trackerConfig.setTrackingCode(activityId); trackerConfig.setUseBearerOnTrackEndpoint(true); Debug.Log("TrackingCode: " + activity.Id + " settings " + trackerConfig.getTrackingCode()); } if (ActivityHasDetails(activity, "backup")) { // Local trackerConfig.setRawCopy(true); } if (ActivityHasDetails(activity, "realtime", "trace_storage", "backup")) { SimvaBridge = new SimvaBridge(API.ApiClient); Debug.Log("[SIMVA] Starting tracker..."); yield return(StartTracker(trackerConfig, auth.Username + "_" + activityId + "_backup.log", SimvaBridge)); } DestroyImmediate(runner.gameObject); SceneManager.UnloadSceneAsync("Simva"); Debug.Log("[SIMVA] Starting Gameplay..."); LoadManager.Instance.LoadScene("MenuScene"); break; } } } }
private void PrepareTracker(TrackerConfig config) { string domain = ""; int port = 80; bool secure = false; try { if (config.getHost() != "") { string[] splitted = config.getHost().Split('/'); if (splitted.Length > 1) { string[] host_splitted = splitted[2].Split(':'); if (host_splitted.Length > 0) { domain = host_splitted[0]; port = (host_splitted.Length > 1) ? int.Parse(host_splitted[1]) : (splitted[0] == "https:" ? 443 : 80); secure = splitted[0] == "https:"; } } } else { config.setHost("localhost"); } } catch (System.Exception e) { Debug.Log("Tracker error: Host bad format"); } TrackerAsset.TraceFormats format; switch (config.getTraceFormat()) { case TrackerConfig.TraceFormat.XAPI: format = TrackerAsset.TraceFormats.xapi; break; default: format = TrackerAsset.TraceFormats.csv; break; } TrackerAsset.StorageTypes storage; switch (config.getStorageType()) { case TrackerConfig.StorageType.NET: storage = TrackerAsset.StorageTypes.net; break; default: storage = TrackerAsset.StorageTypes.local; break; } TrackerAssetSettings tracker_settings = new TrackerAssetSettings() { Host = domain, TrackingCode = config.getTrackingCode(), BasePath = "/api", Port = port, Secure = secure, StorageType = storage, TraceFormat = format, BackupStorage = config.getRawCopy() }; TrackerAsset.Instance.Bridge = new UnityBridge(); TrackerAsset.Instance.Settings = tracker_settings; /* TODO: login disabled * if (!String.IsNullOrEmpty(username)) * TrackerAsset.Instance.Login(username, password); */ TrackerAsset.Instance.Start(); this.nextFlush = config.getFlushInterval(); }
public TrackerConfigDataControl(AdventureDataControl adventureData) { this.trackerConfig = adventureData.getAdventureData().getTrackerConfig(); }
public IEnumerator LaunchActivity(string activityId) { if (activityId == null) { if (backupOperation != null && !backupOperation.IsCompletedSuccessfully) { Game.Instance.AbortQuit(); DisableAutoSave(); Game.Instance.RunTarget("Simva.Backup", null, false); } else { DisableAutoSave(); Game.Instance.RunTarget("Simva.End", null, false); schedule = null; } } else { Activity activity = GetActivity(activityId); if (activity != null) { Game.Instance.AbortQuit(); Debug.Log("[SIMVA] Schedule: " + activity.Type + ". Name: " + activity.Name + " activityId " + activityId); switch (activity.Type) { case "limesurvey": Debug.Log("[SIMVA] Starting Survey..."); DisableAutoSave(); Game.Instance.RunTarget("Simva.Survey", null, false); break; case "gameplay": default: var trackerConfig = new TrackerConfig(); trackerConfig.setStorageType(TrackerConfig.StorageType.LOCAL); trackerConfig.setTraceFormat(TrackerConfig.TraceFormat.XAPI); trackerConfig.setRawCopy(true); trackerConfig.setDebug(true); if (ActivityHasDetails(activity, "realtime", "trace_storage")) { // Realtime trackerConfig.setStorageType(TrackerConfig.StorageType.NET); trackerConfig.setHost(simvaController.SimvaConf.URL); trackerConfig.setBasePath(""); trackerConfig.setLoginEndpoint("/users/login"); trackerConfig.setStartEndpoint("/activities/{0}/result"); trackerConfig.setTrackEndpoint("/activities/{0}/result"); trackerConfig.setTrackingCode(activityId); trackerConfig.setUseBearerOnTrackEndpoint(true); Debug.Log("TrackingCode: " + activity.Id + " settings " + trackerConfig.getTrackingCode()); } if (ActivityHasDetails(activity, "backup")) { // Local trackerConfig.setRawCopy(true); } if (ActivityHasDetails(activity, "realtime", "trace_storage", "backup")) { SimvaBridge = new SimvaBridge(API.ApiClient); Debug.Log("[SIMVA] Starting tracker..."); yield return(StartCoroutine(AnalyticsExtension.Instance.StartTracker(trackerConfig, auth.Username + "_" + activityId + "_backup.log", SimvaBridge))); } Debug.Log("[SIMVA] Starting Gameplay..."); RestoreAutoSave(); Game.Instance.RunTarget(savedGameTarget, this); if (Game.Instance.GameState.CheckFlag("DisclaimerEnabled") == FlagCondition.FLAG_ACTIVE) { Game.Instance.GameState.SetFlag("SeeingDisclaimer", FlagCondition.FLAG_ACTIVE); } break; } } } }
static GoogleAnalyticsImplementation() { StaticConfig = new TrackerConfig(); }
public IEnumerator LaunchActivity(string activityId) { if (activityId == null) { Game.Instance.RunTarget("Simva.End", null, false); } else { Activity activity = GetActivity(activityId); if (activity != null) { Debug.Log("[SIMVA] Schedule: " + activity.Type + ". Name: " + activity.Name + " activityId " + activityId); switch (activity.Type) { case "limesurvey": Debug.Log("[SIMVA] Starting Survey..."); Game.Instance.RunTarget("Simva.Survey", null, false); break; case "gameplay": default: var trackerConfig = new TrackerConfig(); trackerConfig.setStorageType(TrackerConfig.StorageType.LOCAL); trackerConfig.setTraceFormat(TrackerConfig.TraceFormat.XAPI); trackerConfig.setRawCopy(true); trackerConfig.setDebug(true); if (ActivityHasDetails(activity, "realtime", "trace_storage")) { // Realtime trackerConfig.setStorageType(TrackerConfig.StorageType.NET); trackerConfig.setHost(simvaController.SimvaConf.URL); trackerConfig.setBasePath(""); trackerConfig.setLoginEndpoint("/users/login"); trackerConfig.setStartEndpoint("/activities/{0}/result"); trackerConfig.setTrackEndpoint("/activities/{0}/result"); trackerConfig.setTrackingCode(activityId); trackerConfig.setUseBearerOnTrackEndpoint(true); Debug.Log("TrackingCode: " + activity.Id + " settings " + trackerConfig.getTrackingCode()); } if (ActivityHasDetails(activity, "backup")) { // Local trackerConfig.setRawCopy(true); } if (ActivityHasDetails(activity, "realtime", "trace_storage", "backup")) { SimvaBridge = new SimvaBridge(API.ApiClient); Debug.Log("[SIMVA] Starting tracker..."); yield return(StartCoroutine(AnalyticsExtension.Instance.StartTracker(trackerConfig, SimvaBridge))); } Debug.Log("[SIMVA] Starting Gameplay..."); Game.Instance.RunTarget(Game.Instance.GameState.InitialChapterTarget.getId(), this); break; } } } }
public InputHandler(TrackerConfig tracker) : this(tracker, TrackerHandedness.Left | TrackerHandedness.Right) { }
public IEnumerator StartTracker(TrackerConfig config, string backupFilename, IBridge bridge = null) { trackerConfig = config; string domain = ""; int port = 80; bool secure = false; Debug.Log("[ANALYTICS] Setting up tracker..."); try { if (config.getHost() != "") { string[] splitted = config.getHost().Split('/'); if (splitted.Length > 1) { string[] host_splitted = splitted[2].Split(':'); if (host_splitted.Length > 0) { domain = host_splitted[0]; port = (host_splitted.Length > 1) ? int.Parse(host_splitted[1]) : (splitted[0] == "https:" ? 443 : 80); secure = splitted[0] == "https:"; } } } else { config.setHost("localhost"); } Debug.Log("[ANALYTICS] Config: " + JsonConvert.SerializeObject(config)); } catch (System.Exception e) { Debug.Log("Tracker error: Host bad format"); } TrackerAsset.TraceFormats format; switch (config.getTraceFormat()) { case TrackerConfig.TraceFormat.XAPI: format = TrackerAsset.TraceFormats.xapi; break; default: format = TrackerAsset.TraceFormats.csv; break; } Debug.Log("[ANALYTICS] Format: " + format); TrackerAsset.StorageTypes storage; switch (config.getStorageType()) { case TrackerConfig.StorageType.NET: storage = TrackerAsset.StorageTypes.net; break; default: storage = TrackerAsset.StorageTypes.local; break; } Debug.Log("[ANALYTICS] Storage: " + storage); TrackerAssetSettings tracker_settings = new TrackerAssetSettings() { Host = domain, TrackingCode = config.getTrackingCode(), BasePath = trackerConfig.getBasePath() ?? "/api", LoginEndpoint = trackerConfig.getLoginEndpoint() ?? "login", StartEndpoint = trackerConfig.getStartEndpoint() ?? "proxy/gleaner/collector/start/{0}", TrackEndpoint = trackerConfig.getStartEndpoint() ?? "proxy/gleaner/collector/track", Port = port, Secure = secure, StorageType = storage, TraceFormat = format, BackupStorage = config.getRawCopy(), UseBearerOnTrackEndpoint = trackerConfig.getUseBearerOnTrackEndpoint() }; if (!string.IsNullOrEmpty(backupFilename)) { tracker_settings.BackupFile = backupFilename; } Debug.Log("[ANALYTICS] Settings: " + JsonConvert.SerializeObject(tracker_settings)); TrackerAsset.Instance.StrictMode = false; TrackerAsset.Instance.Bridge = bridge ?? new UnityBridge(); TrackerAsset.Instance.Settings = tracker_settings; TrackerAsset.Instance.StrictMode = false; var done = false; Debug.Log("[ANALYTICS] Starting tracker without login..."); TrackerAsset.Instance.StartAsync(() => done = true); this.nextFlush = config.getFlushInterval(); Debug.Log("[ANALYTICS] Waiting until start"); yield return(new WaitUntil(() => done)); Debug.Log("[ANALYTICS] Start done, result: " + TrackerAsset.Instance.Started); }
/// <summary> /// Sends the holoLen's input to the master. /// </summary> public static void SendButton(TrackerConfig tracker, string button, object value) { Transmitter transmitter = GetTransmitter(((OSCTrackerData)tracker.data).port); transmitter.SendOSCX("/" + tracker.id + "/button/" + button, value); }