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
 |