public void Tracking_GetInheritedEngine()
        {
            var engine = TrackingEngine.GetEngine(() => Tracking_GetInheritedEngine());

            Assert.IsNotNull(engine);
            Assert.IsInstanceOfType(engine, typeof(UniversalAnalytics));
        }
 /// <summary>
 /// Creates a new <see cref="PreparedTrackingRequest"/> which performs no additional
 /// finalization on a request object.
 /// </summary>
 /// <param name="engine">The <see cref="TrackingEngine"/> managing the tracking request</param>
 /// <param name="request">The <see cref="IRestRequest"/> representing the current request</param>
 /// <param name="requiredFinalizations">The <see cref="ITrackingModule"/>s which require finalization of the request before sending</param>
 public PreparedTrackingRequest(TrackingEngine engine, IRestRequest request, IEnumerable <ITrackingFinalize> requiredFinalizations)
 {
     Engine                = engine;
     RequestID             = Guid.NewGuid();
     RequiredFinalizations = requiredFinalizations;
     Request               = request;
 }
        public void Tracking_CreateEngine()
        {
            var engine = TrackingEngine.Create(Account, x => new UniversalAnalytics(x));

            Assert.IsNotNull(engine);
            Assert.IsInstanceOfType(engine, typeof(UniversalAnalytics));
            Assert.AreEqual(Account, engine.TrackingID);
        }
        /// <summary>
        /// Creates a <see cref="PreparedTrackingRequest"/> from a serialized <see cref="PreparedTrackingRequest"/> object.
        /// </summary>
        public PreparedTrackingRequest(SerializationInfo info, StreamingContext context)
        {
            Engine                = TrackingEngine.GetEngineByID(info.GetString("Engine"));
            RequestID             = (Guid)info.GetValue("RequestID", typeof(Guid));
            RequiredFinalizations = (IEnumerable <ITrackingFinalize>)info.GetValue("RequiredFinalizations", typeof(IEnumerable <ITrackingFinalize>));

            Request = DeserializeRequest(info, context);
        }
        public static void Main(string[] args)
        {
            // Setup the name of your application (used to persist events across sessions)
            BlobCache.ApplicationName = "SierraLib.Analytics.Example";

            Console.WriteLine("Sending events from previous session");
            TrackingEngine.ProcessStoredRequests();

            new Program().Run();
        }
        public void Tracking_SetUserAgent()
        {
            var engine = TrackingEngine.GetEngine(() => Tracking_SetUserAgent());

            Assert.IsNotNull(engine);
            Assert.IsInstanceOfType(engine, typeof(UniversalAnalytics));

            var oldUserAgent = engine.UserAgent;

            engine.UpdateUserAgent("SierraLib.Analytics.Test", "1.0.0", "CustomUA");
            Assert.IsTrue(engine.UserAgent.IndexOf("CustomUA") != -1, "Custom UserAgent not propagated");
            engine.UserAgent = oldUserAgent;
            Assert.AreEqual(oldUserAgent, engine.UserAgent);
        }
Example #7
0
        public void SetTrackingEngine(TrackingEngine engine)
        {
            trackingEngine = engine;
            if (currentTrackingEngine != trackingEngine)
            {
                if (currentTrackingEngine == TrackingEngine.ARCore)
                {
                    onARCoreStop.Invoke();
                }
                else if (currentTrackingEngine == TrackingEngine.ARKit)
                {
                    onARKitStop.Invoke();
                }
                else if (currentTrackingEngine == TrackingEngine.Vuforia)
                {
                    onVuforiaStop.Invoke();
                }
                else if (currentTrackingEngine == TrackingEngine.Other)
                {
                    onOtherStop.Invoke();
                }

                if (engine == TrackingEngine.ARCore)
                {
                    SetARCoreTracking();
                    onARCoreSet.Invoke();
                }
                else if (engine == TrackingEngine.ARKit)
                {
                    SetARKitTracking();
                    onARKitSet.Invoke();
                }
                else if (engine == TrackingEngine.Vuforia)
                {
                    SetVuforiaTracking();
                    onVuforiaSet.Invoke();
                }
                else if (engine == TrackingEngine.Other)
                {
                    SetOtherTracking();
                    onOtherSet.Invoke();
                }
                else
                {
                    currentTrackingTransform = null;
                    currentTrackingEngine    = TrackingEngine.None;
                }
            }
        }
Example #8
0
 private void SetOtherTracking()
 {
     if (useOther)
     {
         currentTrackingTransform = otherTransform;
         trackingEngine           = TrackingEngine.Other;
         currentTrackingEngine    = trackingEngine;
         if (aryzonMode)
         {
             onOtherStart.Invoke();
         }
     }
     else
     {
         trackingEngine = currentTrackingEngine;
     }
 }
Example #9
0
 private void SetVuforiaTracking()
 {
     if (useVuforia)
     {
         currentTrackingTransform = vuforiaTransform;
         trackingEngine           = TrackingEngine.Vuforia;
         currentTrackingEngine    = trackingEngine;
         if (aryzonMode)
         {
             onVuforiaStart.Invoke();
         }
     }
     else
     {
         trackingEngine = currentTrackingEngine;
     }
 }
Example #10
0
 private void SetARKitTracking()
 {
     if (useARKit)
     {
         currentTrackingTransform = arKitTransform;
         trackingEngine           = TrackingEngine.ARKit;
         currentTrackingEngine    = trackingEngine;
         if (aryzonMode)
         {
             onARKitStart.Invoke();
         }
     }
     else
     {
         trackingEngine = currentTrackingEngine;
     }
 }
Example #11
0
        public void Start()
        {
            var stopwatch = new Stopwatch();

            stopwatch.Start();

            Loggers.Current.Log(LogLevel.Info, $"Starting TwometerVR v{Version}");


            Loggers.Current.Log(LogLevel.Debug, "Opening video stream");
            var videoConfig = configProvider.VideoSourceConfig;

            videoSource           = VideoSourceFactory.Create(videoConfig.VideoSourceType, videoConfig.VideoSourceIndex);
            videoSource.Width     = videoConfig.FrameWidth;
            videoSource.Height    = videoConfig.FrameHeight;
            videoSource.Framerate = videoConfig.Framerate;
            videoSource.Open();


            Loggers.Current.Log(LogLevel.Debug, "Initializing tracking engine");
            trackingEngine = new TrackingEngine(trackerManager, configProvider, videoSource);


            Loggers.Current.Log(LogLevel.Debug, "Setting up network");
            discoveryClient = new DiscoveryClient();
            driverClient    = new DriverClient(trackerManager);
            trackerClient   = new TrackerClient(trackerManager);
            watchdog        = new TrackerWatchdog(trackerManager, configProvider);


            Loggers.Current.Log(LogLevel.Debug, "Initializing update timer");
            updateTimer = new Timer(Update, null, 0, 1 / configProvider.UserConfig.Input.RefreshRate);


            Loggers.Current.Log(LogLevel.Debug, "Starting video procecssing thread");
            videoThread = new Thread(VideoLoop);
            videoThread.Start();


            stopwatch.Stop();
            Loggers.Current.Log(LogLevel.Info, $"Done after {stopwatch.Elapsed}");
        }
        public void Tracking_Serialization()
        {
            var engine  = TrackingEngine.GetEngine(() => Tracking_Serialization()) as UniversalAnalytics;
            var request = new RestRequest()
            {
                Resource = "/collect",
                Method   = Method.POST
            };

            request.AddParameter("q", "Test", ParameterType.GetOrPost);
            request.AddParameter("r", "Yargh!", ParameterType.GetOrPost);
            var pendingRequest = new PreparedTrackingRequest(engine, request, Array.Empty <Implementation.ITrackingFinalize>());
            var formatter      = new BinaryFormatter();

            PreparedTrackingRequest deserialized = null;

            using (var ms = new MemoryStream())
            {
                formatter.Serialize(ms, pendingRequest);
                ms.Seek(0, SeekOrigin.Begin);
                deserialized = formatter.Deserialize(ms) as PreparedTrackingRequest;
            }

            Assert.IsNotNull(deserialized);
            Assert.IsNotNull(deserialized.Request);
            Assert.AreEqual(pendingRequest.Generated, deserialized.Generated);
            Assert.AreEqual(pendingRequest.Engine, deserialized.Engine);

            Assert.AreEqual(pendingRequest.Request.Parameters.Count, request.Parameters.Count);
            for (int i = 0; i < pendingRequest.Request.Parameters.Count; i++)
            {
                var got      = pendingRequest.Request.Parameters[i];
                var expected = request.Parameters[i];
                Assert.AreEqual(expected.Type, got.Type);
                Assert.AreEqual(expected.Name, got.Name);
                Assert.AreEqual(expected.Value, got.Value);
            }
        }
    private void AddCameraEventsForTrackingEngine(TrackingEngine engine)
    {
        Camera     camera     = null;
        UnityEvent startEvent = null;
        UnityEvent stopEvent  = null;

        if (engine == TrackingEngine.ARCore)
        {
            if (aryzonTracking.arCoreTransform)
            {
                camera     = aryzonTracking.arCoreTransform.gameObject.GetComponent <Camera> ();
                startEvent = aryzonTracking.onARCoreStart;
                stopEvent  = aryzonTracking.onARCoreStop;
            }
            else
            {
                return;
            }
        }
        else if (engine == TrackingEngine.ARKit)
        {
            if (aryzonTracking.arKitTransform)
            {
                camera     = aryzonTracking.arKitTransform.gameObject.GetComponent <Camera> ();
                startEvent = aryzonTracking.onARKitStart;
                stopEvent  = aryzonTracking.onARKitStop;
            }
            else
            {
                return;
            }
        }
        else if (engine == TrackingEngine.Vuforia)
        {
            if (aryzonTracking.vuforiaTransform)
            {
                camera     = aryzonTracking.vuforiaTransform.gameObject.GetComponent <Camera> ();
                startEvent = aryzonTracking.onVuforiaStart;
                stopEvent  = aryzonTracking.onVuforiaStop;
            }
            else
            {
                return;
            }
        }
        else if (engine == TrackingEngine.Other)
        {
            if (aryzonTracking.otherTransform)
            {
                camera     = aryzonTracking.otherTransform.gameObject.GetComponent <Camera> ();
                startEvent = aryzonTracking.onOtherStart;
                stopEvent  = aryzonTracking.onOtherStop;
            }
            else
            {
                return;
            }
        }
        else if (engine == TrackingEngine.None)
        {
            return;
        }

        if (camera == null)
        {
            return;
        }

        int startCount = startEvent.GetPersistentEventCount();
        int stopCount  = stopEvent.GetPersistentEventCount();

        bool startEventFound = false;
        bool stopEventFound  = false;

        for (int i = 0; i < startCount; i++)
        {
            if (startEvent.GetPersistentTarget(i) == camera && startEvent.GetPersistentMethodName(i) == "set_enabled")
            {
                startEventFound = true;
                break;
            }
        }

        for (int i = 0; i < stopCount; i++)
        {
            if (stopEvent.GetPersistentTarget(i) == camera && stopEvent.GetPersistentMethodName(i) == "set_enabled")
            {
                stopEventFound = true;
                break;
            }
        }

        MethodInfo method = null;

        if (!startEventFound || !stopEventFound)
        {
            method = typeof(UnityEngine.Camera).GetMethod("set_enabled");
            if (engine == TrackingEngine.ARCore)
            {
                //aryzonTracking.showARCoreEvents = true;
                EditorPrefs.SetBool("showARCoreEvents", true);
            }
            else if (engine == TrackingEngine.ARKit)
            {
                //aryzonTracking.showARKitEvents = true;
                EditorPrefs.SetBool("showARKitEvents", true);
            }
            else if (engine == TrackingEngine.Vuforia)
            {
                //aryzonTracking.showVuforiaEvents = true;
                EditorPrefs.SetBool("showVuforiaEvents", true);
            }
            else if (engine == TrackingEngine.Other)
            {
                //aryzonTracking.showOtherEvents = true;
                EditorPrefs.SetBool("showOtherEvents", true);
            }
        }

        if (!startEventFound)
        {
            UnityAction <bool> startAction = System.Delegate.CreateDelegate(typeof(UnityAction <bool>), camera, method) as UnityAction <bool>;
            UnityEventTools.AddBoolPersistentListener(startEvent, startAction, false);
        }

        if (!stopEventFound)
        {
            UnityAction <bool> stopAction = System.Delegate.CreateDelegate(typeof(UnityAction <bool>), camera, method) as UnityAction <bool>;
            UnityEventTools.AddBoolPersistentListener(stopEvent, stopAction, true);
        }
    }
 public void Tracking_BasicEvent()
 {
     TrackingEngine.TrackDefaultAsync(() => Tracking_BasicEvent(), TrackOn.Entry);
 }