public static void Main(string[] args) { OSVR.ClientKit.ClientContext context = new OSVR.ClientKit.ClientContext("org.opengoggles.exampleclients.managed.TrackerCallback"); // This is just one of the paths. You can also use: // /me/hands/right // /me/head Interface lefthand = context.getInterface("/me/hands/left"); TrackerCallbacks callbacks = new TrackerCallbacks(); // The coordinate system is right-handed, withX to the right, Y up, and Z near. OSVR.ClientKit.PoseCallback poseCb = new PoseCallback(TrackerCallbacks.myTrackerCallback); lefthand.registerCallback(poseCb, IntPtr.Zero); // If you just want orientation OSVR.ClientKit.OrientationCallback oriCb = new OrientationCallback(TrackerCallbacks.myOrientationCallback); lefthand.registerCallback(oriCb, IntPtr.Zero); // or position OSVR.ClientKit.PositionCallback posCb = new PositionCallback(TrackerCallbacks.myPositionCallback); lefthand.registerCallback(posCb, IntPtr.Zero); // Pretend that this is your application's main loop for (int i = 0; i < 1000000; ++i) { context.update(); } Console.WriteLine("Library shut down; exiting."); }
static void Main(string[] args) { ClientContext.PreloadNativeLibraries(); using (OSVR.ClientKit.ClientContext context = new OSVR.ClientKit.ClientContext("com.osvr.exampleclients.managed.AnalogCallback")) { // This is just one of the paths: specifically, the Hydra's left // controller's analog trigger. More are in the docs and/or listed on // startup #if NET20 using (var analogTrigger = AnalogInterface.GetInterface(context, "/controller/left/trigger")) #else using (var analogTrigger = context.GetAnalogInterface("/controller/left/trigger")) #endif { analogTrigger.StateChanged += analogTrigger_StateChanged; // Pretend that this is your application's main loop for (int i = 0; i < 1000000; ++i) { context.update(); } Console.WriteLine("Library shut down; exiting."); } } }
static void Main(string[] args) { ClientContext.PreloadNativeLibraries(); using (ServerAutoStarter serverAutoStarter = new ServerAutoStarter()) using (OSVR.ClientKit.ClientContext context = new OSVR.ClientKit.ClientContext("com.osvr.exampleclients.managed.ButtonCallback")) { // This is just one of the paths: specifically, the Hydra's left // controller's button labelled "1". More are in the docs and/or listed on // startup #if NET20 using (var button1 = ButtonInterface.GetInterface(context, "/controller/left/1")) #else using (var button1 = context.GetButtonInterface("/controller/left/1")) #endif { button1.StateChanged += button1_StateChanged; // Pretend that this is your application's main loop for (int i = 0; i < 1000000; ++i) { context.update(); } Console.WriteLine("Library shut down; exiting."); } } }
static void Main(string[] args) { ClientContext.PreloadNativeLibraries(); using (OSVR.ClientKit.ClientContext context = new OSVR.ClientKit.ClientContext("com.osvr.exampleclients.managed.Locomotion")) { #if NET20 using (var naviPosition = NaviPositionInterface.GetInterface(context, "/me/feet/both")) using (var naviVelocity = NaviVelocityInterface.GetInterface(context, "/me/feet/both")) #else using (var naviPosition = context.GetNaviPositionInterface("/me/feet/both")) using (var naviVelocity = context.GetNaviVelocityInterface("/me/feet/both")) #endif { naviPosition.StateChanged += locomotionPosition_StateChanged; naviVelocity.StateChanged += locomotionVelocity_StateChanged; // Pretend that this is your application's main loop for (int i = 0; i < 1000000; ++i) { context.update(); } Console.WriteLine("Library shut down; exiting."); } } }
static void Main(string[] args) { ClientContext.PreloadNativeLibraries(); using (OSVR.ClientKit.ClientContext context = new OSVR.ClientKit.ClientContext("com.osvr.exampleclients.managed.Direction")) { #if NET20 using (var direction = DirectionInterface.GetInterface(context, Path)) #else using (var direction = context.GetDirectionInterface(Path)) #endif { direction.StateChanged += direction_StateChanged; // Pretend that this is your application's main loop for (int i = 0; i < 1000000; ++i) { context.update(); var directionState = direction.GetState(); Console.WriteLine("Direction State: {0}", FormatDirectionReport(directionState.Value)); } Console.WriteLine("Library shut down; exiting."); } } }
static void Main(string[] args) { ClientContext.PreloadNativeLibraries(); using (ServerAutoStarter serverAutoStarter = new ServerAutoStarter()) using (OSVR.ClientKit.ClientContext context = new OSVR.ClientKit.ClientContext("com.osvr.exampleclients.managed.Direction")) { #if NET20 using (var direction = DirectionInterface.GetInterface(context, Path)) #else using (var direction = context.GetDirectionInterface(Path)) #endif { direction.StateChanged += direction_StateChanged; // Pretend that this is your application's main loop for (int i = 0; i < 1000000; ++i) { context.update(); var directionState = direction.GetState(); Console.WriteLine("Direction State: {0}", FormatDirectionReport(directionState.Value)); } Console.WriteLine("Library shut down; exiting."); } } }
static void Main(string[] args) { ClientContext.PreloadNativeLibraries(); using (ServerAutoStarter serverAutoStarter = new ServerAutoStarter()) using (OSVR.ClientKit.ClientContext context = new OSVR.ClientKit.ClientContext("com.osvr.exampleclients.managed.Locomotion")) { #if NET20 using (var naviPosition = NaviPositionInterface.GetInterface(context, "/me/feet/both")) using (var naviVelocity = NaviVelocityInterface.GetInterface(context, "/me/feet/both")) #else using (var naviPosition = context.GetNaviPositionInterface("/me/feet/both")) using (var naviVelocity = context.GetNaviVelocityInterface("/me/feet/both")) #endif { naviPosition.StateChanged += locomotionPosition_StateChanged; naviVelocity.StateChanged += locomotionVelocity_StateChanged; // Pretend that this is your application's main loop for (int i = 0; i < 1000000; ++i) { context.update(); } Console.WriteLine("Library shut down; exiting."); } } }
static void Main(string[] args) { ClientContext.PreloadNativeLibraries(); using (ServerAutoStarter serverAutoStarter = new ServerAutoStarter()) using (OSVR.ClientKit.ClientContext context = new OSVR.ClientKit.ClientContext("com.osvr.exampleclients.managed.Imaging")) { // there are three types of interfaces for eye tracking, 2D, 3D, and blinking #if NET20 using (var imaging = ImagingInterface.GetInterface(context, "/camera")) #else using (var imaging = context.GetImagingInterface("/camera")) #endif { imaging.StateChanged += imaging_StateChanged; // Pretend that this is your application's main loop for (int i = 0; i < 10000000; ++i) { context.update(); } Console.WriteLine("Library shut down; exiting."); } } }
static void Main(string[] args) { OSVR.ClientKit.ClientContext context = new OSVR.ClientKit.ClientContext("org.opengoggles.exampleclients.managed.ButtonCallback"); // This is just one of the paths: specifically, the Hydra's left // controller's button labelled "1". More are in the docs and/or listed on // startup Interface button1 = context.getInterface("/controller/left/1"); OSVR.ClientKit.ButtonCallback mycb = new OSVR.ClientKit.ButtonCallback(myButtonCallback); button1.registerCallback(mycb, IntPtr.Zero); // Pretend that this is your application's main loop for (int i = 0; i < 1000000; ++i) { context.update(); } Console.WriteLine("Library shut down; exiting."); }
static void Main(string[] args) { ClientContext.PreloadNativeLibraries(); using (ServerAutoStarter serverAutoStarter = new ServerAutoStarter()) using (OSVR.ClientKit.ClientContext context = new OSVR.ClientKit.ClientContext("com.osvr.exampleclients.managed.EyeTracker")) { // there are three types of interfaces for eye tracking, 2D, 3D, and blinking #if NET20 using (var eyeTracker2D = EyeTracker2DInterface.GetInterface(context, EyeTrackerPath)) using (var eyeTracker3D = EyeTracker3DInterface.GetInterface(context, EyeTrackerPath)) using (var eyeTrackerBlink = EyeTrackerBlinkInterface.GetInterface(context, EyeTrackerPath)) #else using (var eyeTracker2D = context.GetEyeTracker2DInterface(EyeTrackerPath)) using (var eyeTracker3D = context.GetEyeTracker3DInterface(EyeTrackerPath)) using (var eyeTrackerBlink = context.GetEyeTrackerBlinkInterface(EyeTrackerPath)) #endif { eyeTracker2D.StateChanged += eyeTracker2D_StateChanged; eyeTracker3D.StateChanged += eyeTracker3D_StateChanged; eyeTrackerBlink.StateChanged += eyeTrackerBlink_StateChanged; // Pretend that this is your application's main loop for (int i = 0; i < 1000000; ++i) { context.update(); var eyeTracker2DState = eyeTracker2D.GetState(); var eyeTracker3DState = eyeTracker3D.GetState(); var eyeTrackerBlinkState = eyeTrackerBlink.GetState(); Console.WriteLine("Getting state:"); Console.WriteLine("EyeTracker2D: {0}", FormatEyeTracker2DReport(eyeTracker2DState.Value)); Console.WriteLine("EyeTracker3D: {0}", FormatEyeTracker3DReport(eyeTracker3DState.Value)); Console.WriteLine("EyeTrackerBlink: {0}", eyeTrackerBlinkState.Value); } Console.WriteLine("Library shut down; exiting."); } } }
static void Main(string[] args) { ClientContext.PreloadNativeLibraries(); using (OSVR.ClientKit.ClientContext context = new OSVR.ClientKit.ClientContext("com.osvr.exampleclients.managed.Imaging")) { // there are three types of interfaces for eye tracking, 2D, 3D, and blinking #if NET20 using (var imaging = ImagingInterface.GetInterface(context, "/camera")) #else using (var imaging = context.GetImagingInterface("/camera")) #endif { imaging.StateChanged += imaging_StateChanged; // Pretend that this is your application's main loop for (int i = 0; i < 10000000; ++i) { context.update(); } Console.WriteLine("Library shut down; exiting."); } } }
static void Main(string[] args) { ClientContext.PreloadNativeLibraries(); using (OSVR.ClientKit.ClientContext context = new OSVR.ClientKit.ClientContext("com.osvr.exampleclients.managed.EyeTracker")) { // there are three types of interfaces for eye tracking, 2D, 3D, and blinking #if NET20 using (var eyeTracker2D = EyeTracker2DInterface.GetInterface(context, EyeTrackerPath)) using (var eyeTracker3D = EyeTracker3DInterface.GetInterface(context, EyeTrackerPath)) using (var eyeTrackerBlink = EyeTrackerBlinkInterface.GetInterface(context, EyeTrackerPath)) #else using (var eyeTracker2D = context.GetEyeTracker2DInterface(EyeTrackerPath)) using (var eyeTracker3D = context.GetEyeTracker3DInterface(EyeTrackerPath)) using (var eyeTrackerBlink = context.GetEyeTrackerBlinkInterface(EyeTrackerPath)) #endif { eyeTracker2D.StateChanged += eyeTracker2D_StateChanged; eyeTracker3D.StateChanged += eyeTracker3D_StateChanged; eyeTrackerBlink.StateChanged += eyeTrackerBlink_StateChanged; // Pretend that this is your application's main loop for (int i = 0; i < 1000000; ++i) { context.update(); var eyeTracker2DState = eyeTracker2D.GetState(); var eyeTracker3DState = eyeTracker3D.GetState(); var eyeTrackerBlinkState = eyeTrackerBlink.GetState(); Console.WriteLine("Getting state:"); Console.WriteLine("EyeTracker2D: {0}", FormatEyeTracker2DReport(eyeTracker2DState.Value)); Console.WriteLine("EyeTracker3D: {0}", FormatEyeTracker3DReport(eyeTracker3DState.Value)); Console.WriteLine("EyeTrackerBlink: {0}", eyeTrackerBlinkState.Value); } Console.WriteLine("Library shut down; exiting."); } } }
static void Main(string[] args) { ClientContext.PreloadNativeLibraries(); using (OSVR.ClientKit.ClientContext context = new OSVR.ClientKit.ClientContext("com.osvr.exampleclients.managed.DisplayParameter")) { string displayDescription = context.getStringParameter("/display"); Console.WriteLine("Got value of /display:"); Console.WriteLine(displayDescription); for (var i = 0; i < 100000; i++) { context.update(); using(var displayConfig = context.GetDisplayConfig()) { // GetDisplayConfig can sometimes fail, returning null if (displayConfig != null) { Console.WriteLine("Waiting for the display config to be initialized and receive its first pose..."); do { context.update(); } while (!displayConfig.CheckDisplayStartup()); var numDisplayInputs = displayConfig.GetNumDisplayInputs(); Console.WriteLine("There are {0} display inputs.", numDisplayInputs); for(byte displayInputIndex = 0; displayInputIndex < numDisplayInputs; displayInputIndex++) { var displayDimensions = displayConfig.GetDisplayDimensions(displayInputIndex); Console.WriteLine("Display input {0} is width {1} and height {2}", displayInputIndex, displayDimensions.Width, displayDimensions.Height); } var numViewers = displayConfig.GetNumViewers(); Console.WriteLine("There are {0} viewers for this display configuration.", numViewers); for (uint viewer = 0; viewer < numViewers; viewer++) { var numEyes = displayConfig.GetNumEyesForViewer(viewer); Console.WriteLine("There are {0} eyes for viewer {1}.", numEyes, viewer); var viewerPose = displayConfig.GetViewerPose(viewer); Console.WriteLine("Viewer pose for viewer {0}: {1}", viewer, GetPoseDisplay(viewerPose)); for (byte eye = 0; eye < numEyes; eye++) { var numSurfaces = displayConfig.GetNumSurfacesForViewerEye(viewer, eye); Console.WriteLine("There are {0} surfaces for eye {1} on viewer {2}.", numSurfaces, eye, viewer); var viewerEyePose = displayConfig.GetViewerEyePose(viewer, eye); Console.WriteLine("Viewer eye pose for eye {0} on viewer {1}: {2}.", eye, viewer, GetPoseDisplay(viewerEyePose)); var viewerEyeMatrixd = displayConfig.GetViewerEyeViewMatrixd(viewer, eye, MatrixConventionsFlags.Default); Console.WriteLine("Viewer eye view-matrix (double) for eye {0} on viewer {1}: {2}", eye, viewer, viewerEyeMatrixd.ToString()); var viewerEyeMatrixf = displayConfig.GetViewerEyeViewMatrixf(viewer, eye, MatrixConventionsFlags.Default); Console.WriteLine("Viewer eye view-matrix (float) for eye {0} on viewer {1}: {2}", eye, viewer, viewerEyeMatrixf.ToString()); for (uint surface = 0; surface < numSurfaces; surface++) { Console.WriteLine("surface {0} for eye {1} for viewer {2}:", surface, eye, viewer); var viewport = displayConfig.GetRelativeViewportForViewerEyeSurface( viewer, eye, surface); Console.WriteLine("Relative viewport: {0}", viewport.ToString()); var wantsDistortion = displayConfig.DoesViewerEyeSurfaceWantDistortion( viewer, eye, surface); Console.WriteLine("Surface wants distortion? {0}", wantsDistortion); if(wantsDistortion) { var radialDistortionPriority = displayConfig.GetViewerEyeSurfaceRadialDistortionPriority( viewer, eye, surface); Console.WriteLine("Radial Distortion priority: {0}", radialDistortionPriority); if (radialDistortionPriority >= 0) { var distortionParameters = displayConfig.GetViewerEyeSurfaceRadialDistortion( viewer, eye, surface); Console.WriteLine("Surface radial distortion parameters: {0}", distortionParameters.ToString()); } } var projectiond = displayConfig.GetProjectionMatrixForViewerEyeSurfaced( viewer, eye, surface, 1.0, 1000.0, MatrixConventionsFlags.Default); Console.WriteLine("Projection (double): {0}", projectiond.ToString()); var projectionf = displayConfig.GetProjectionMatrixForViewerEyeSurfacef( viewer, eye, surface, 1.0f, 1000.0f, MatrixConventionsFlags.Default); Console.WriteLine("Projection (float): {0}", projectionf.ToString()); var projectionClippingPlanes = displayConfig.GetViewerEyeSurfaceProjectionClippingPlanes(viewer, eye, surface); Console.WriteLine("Projection clipping planes: left: {0} right: {1} top: {2} bottom: {3}", projectionClippingPlanes.Left, projectionClippingPlanes.Right, projectionClippingPlanes.Top, projectionClippingPlanes.Bottom); var displayInputIndex = displayConfig.GetViewerEyeSurfaceDisplayInputIndex(viewer, eye, surface); Console.WriteLine("Display input index: {0}", displayInputIndex); } } } break; } } } Console.WriteLine("Library shut down; exiting."); } }
static void Main(string[] args) { ClientContext.PreloadNativeLibraries(); using (ServerAutoStarter serverAutoStarter = new ServerAutoStarter()) using (OSVR.ClientKit.ClientContext context = new OSVR.ClientKit.ClientContext("com.osvr.exampleclients.managed.DisplayParameter")) { string displayDescription = context.getStringParameter("/display"); Console.WriteLine("Got value of /display:"); Console.WriteLine(displayDescription); for (var i = 0; i < 100000; i++) { context.update(); using (var displayConfig = context.GetDisplayConfig()) { // GetDisplayConfig can sometimes fail, returning null if (displayConfig != null) { Console.WriteLine("Waiting for the display config to be initialized and receive its first pose..."); do { context.update(); } while (!displayConfig.CheckDisplayStartup()); var numDisplayInputs = displayConfig.GetNumDisplayInputs(); Console.WriteLine("There are {0} display inputs.", numDisplayInputs); for (byte displayInputIndex = 0; displayInputIndex < numDisplayInputs; displayInputIndex++) { var displayDimensions = displayConfig.GetDisplayDimensions(displayInputIndex); Console.WriteLine("Display input {0} is width {1} and height {2}", displayInputIndex, displayDimensions.Width, displayDimensions.Height); } var numViewers = displayConfig.GetNumViewers(); Console.WriteLine("There are {0} viewers for this display configuration.", numViewers); for (uint viewer = 0; viewer < numViewers; viewer++) { var numEyes = displayConfig.GetNumEyesForViewer(viewer); Console.WriteLine("There are {0} eyes for viewer {1}.", numEyes, viewer); var viewerPose = displayConfig.GetViewerPose(viewer); Console.WriteLine("Viewer pose for viewer {0}: {1}", viewer, GetPoseDisplay(viewerPose)); for (byte eye = 0; eye < numEyes; eye++) { var numSurfaces = displayConfig.GetNumSurfacesForViewerEye(viewer, eye); Console.WriteLine("There are {0} surfaces for eye {1} on viewer {2}.", numSurfaces, eye, viewer); var viewerEyePose = displayConfig.GetViewerEyePose(viewer, eye); Console.WriteLine("Viewer eye pose for eye {0} on viewer {1}: {2}.", eye, viewer, GetPoseDisplay(viewerEyePose)); var viewerEyeMatrixd = displayConfig.GetViewerEyeViewMatrixd(viewer, eye, MatrixConventionsFlags.Default); Console.WriteLine("Viewer eye view-matrix (double) for eye {0} on viewer {1}: {2}", eye, viewer, viewerEyeMatrixd.ToString()); var viewerEyeMatrixf = displayConfig.GetViewerEyeViewMatrixf(viewer, eye, MatrixConventionsFlags.Default); Console.WriteLine("Viewer eye view-matrix (float) for eye {0} on viewer {1}: {2}", eye, viewer, viewerEyeMatrixf.ToString()); for (uint surface = 0; surface < numSurfaces; surface++) { Console.WriteLine("surface {0} for eye {1} for viewer {2}:", surface, eye, viewer); var viewport = displayConfig.GetRelativeViewportForViewerEyeSurface( viewer, eye, surface); Console.WriteLine("Relative viewport: {0}", viewport.ToString()); var wantsDistortion = displayConfig.DoesViewerEyeSurfaceWantDistortion( viewer, eye, surface); Console.WriteLine("Surface wants distortion? {0}", wantsDistortion); if (wantsDistortion) { var radialDistortionPriority = displayConfig.GetViewerEyeSurfaceRadialDistortionPriority( viewer, eye, surface); Console.WriteLine("Radial Distortion priority: {0}", radialDistortionPriority); if (radialDistortionPriority >= 0) { var distortionParameters = displayConfig.GetViewerEyeSurfaceRadialDistortion( viewer, eye, surface); Console.WriteLine("Surface radial distortion parameters: {0}", distortionParameters.ToString()); } } var projectiond = displayConfig.GetProjectionMatrixForViewerEyeSurfaced( viewer, eye, surface, 1.0, 1000.0, MatrixConventionsFlags.Default); Console.WriteLine("Projection (double): {0}", projectiond.ToString()); var projectionf = displayConfig.GetProjectionMatrixForViewerEyeSurfacef( viewer, eye, surface, 1.0f, 1000.0f, MatrixConventionsFlags.Default); Console.WriteLine("Projection (float): {0}", projectionf.ToString()); var projectionClippingPlanes = displayConfig.GetViewerEyeSurfaceProjectionClippingPlanes(viewer, eye, surface); Console.WriteLine("Projection clipping planes: left: {0} right: {1} top: {2} bottom: {3}", projectionClippingPlanes.Left, projectionClippingPlanes.Right, projectionClippingPlanes.Top, projectionClippingPlanes.Bottom); var displayInputIndex = displayConfig.GetViewerEyeSurfaceDisplayInputIndex(viewer, eye, surface); Console.WriteLine("Display input index: {0}", displayInputIndex); } } } break; } } } Console.WriteLine("Library shut down; exiting."); } }