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; })); }
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); }
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)); } }