コード例 #1
0
 private void Instance_HeadMeasurement(object sender, HeadMeasurementEventArgs e)
 {
     this.Dispatcher.Invoke((Action)(() =>
     {
         HeadTracker tracker = HeadTracker.Instance;
         this.yawOffsetLabel.Content = e.X - tracker.OriginX;
         this.pitchOffsetLabel.Content = e.Y - tracker.OriginY;
         this.rollOffsetLabel.Content = e.Z - tracker.OriginZ;
     }));
 }
コード例 #2
0
        private void Init(Context context)
        {
            SetEGLContextClientVersion(2);
            PreserveEGLContextOnPause = true;

            IWindowManager windowManager = (IWindowManager)context.GetSystemService(Context.WindowService).JavaCast <IWindowManager>();

            mHeadTracker = new HeadTracker(context);
            mHmd         = new HeadMountedDisplay(windowManager.DefaultDisplay);
        }
コード例 #3
0
        public async void StartListening(Action <Vector3Dto> listener)
        {
            headTracker = HeadTracker.CreateFromContext(Android.App.Application.Context);
            headTracker.StartTracking();
            await Task.Delay(1000);

            while (true)
            {
                await Task.Delay(16);

                var view = new float[16];
                headTracker.GetLastHeadView(view, 0);
                var m4 = new Matrix4(
                    view[0], view[1], view[2], view[3],
                    view[4], view[5], view[6], view[7],
                    view[8], view[9], view[10], view[11],
                    view[12], view[13], view[14], view[15]);
                var rot = m4.Rotation;
                listener(new Vector3Dto(-rot.PitchAngle - 90, rot.YawAngle, 0));
            }
        }