75 lines
2.0 KiB
C
75 lines
2.0 KiB
C
#pragma once
|
|
|
|
#include <kinc/global.h>
|
|
|
|
#include <kinc/math/matrix.h>
|
|
#include <kinc/math/quaternion.h>
|
|
#include <kinc/math/vector.h>
|
|
|
|
/*! \file vrinterface.h
|
|
\brief The C-API for VR is currently deactivated and needs some work. Please use the Kore/C++-API in the meantime or send pull-requests.
|
|
*/
|
|
|
|
#ifdef KINC_VR
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
typedef enum { KINC_TRACKING_ORIGIN_STAND, KINC_TRACKING_ORIGIN_SIT } kinc_tracking_origin_t;
|
|
|
|
typedef enum { KINC_TRACKED_DEVICE_HMD, KINC_TRACKED_DEVICE_CONTROLLER, KINC_TRACKED_DEVICE_VIVE_TRACKER } kinc_tracked_device_t;
|
|
|
|
typedef struct kinc_vr_pose {
|
|
kinc_quaternion_t orientation;
|
|
kinc_vector3_t position;
|
|
|
|
kinc_matrix4x4_t eye;
|
|
kinc_matrix4x4_t projection;
|
|
|
|
// fov
|
|
float left;
|
|
float right;
|
|
float bottom;
|
|
float top;
|
|
} kinc_vr_pose_t;
|
|
|
|
typedef struct kinc_vr_pose_state {
|
|
kinc_vr_pose_t vrPose;
|
|
kinc_vector3_t angularVelocity; // Angular velocity in radians per second
|
|
kinc_vector3_t linearVelocity; // Velocity in meters per second
|
|
kinc_vector3_t angularAcceleration; // Angular acceleration in radians per second per second
|
|
kinc_vector3_t linearAcceleration; // Acceleration in meters per second per second
|
|
|
|
kinc_tracked_device_t trackedDevice;
|
|
|
|
// Sensor status
|
|
bool isVisible;
|
|
bool hmdPresenting;
|
|
bool hmdMounted;
|
|
bool displayLost;
|
|
bool shouldQuit;
|
|
bool shouldRecenter;
|
|
} kinc_vr_pose_state_t;
|
|
|
|
typedef struct kinc_vr_sensor_state {
|
|
kinc_vr_pose_state_t pose;
|
|
} kinc_vr_sensor_state_t;
|
|
|
|
void *kinc_vr_interface_init(void *hinst, const char *title, const char *windowClassName);
|
|
void kinc_vr_interface_begin();
|
|
void kinc_vr_interface_begin_render(int eye);
|
|
void kinc_vr_interface_end_render(int eye);
|
|
kinc_vr_sensor_state_t kinc_vr_interface_get_sensor_state(int eye);
|
|
kinc_vr_pose_state_t kinc_vr_interface_get_controller(int index);
|
|
void kinc_vr_interface_warp_swap();
|
|
void kinc_vr_interface_update_tracking_origin(kinc_tracking_origin_t origin);
|
|
void kinc_vr_interface_reset_hmd_pose();
|
|
void kinc_vr_interface_ovr_shutdown();
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|