#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct gvr_context_ {
_unused: [u8; 0],
}
pub type gvr_context = gvr_context_;
#[repr(u32)]
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub enum gvr_eye {
GVR_LEFT_EYE = 0,
GVR_RIGHT_EYE = 1,
GVR_NUM_EYES = 2,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub enum gvr_viewer_type {
GVR_VIEWER_TYPE_CARDBOARD = 0,
GVR_VIEWER_TYPE_DAYDREAM = 1,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub enum gvr_feature {
GVR_FEATURE_ASYNC_REPROJECTION = 0,
GVR_FEATURE_MULTIVIEW = 1,
GVR_FEATURE_EXTERNAL_SURFACE = 2,
GVR_FEATURE_HEAD_POSE_6DOF = 3,
GVR_FEATURE_HARDWARE_BUFFERS = 4,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct gvr_version_ {
pub major: i32,
pub minor: i32,
pub patch: i32,
}
#[test]
fn bindgen_test_layout_gvr_version_() {
assert_eq!(
::std::mem::size_of::<gvr_version_>(),
12usize,
concat!("Size of: ", stringify!(gvr_version_))
);
assert_eq!(
::std::mem::align_of::<gvr_version_>(),
4usize,
concat!("Alignment of ", stringify!(gvr_version_))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<gvr_version_>())).major as *const _ as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(gvr_version_),
"::",
stringify!(major)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<gvr_version_>())).minor as *const _ as usize },
4usize,
concat!(
"Offset of field: ",
stringify!(gvr_version_),
"::",
stringify!(minor)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<gvr_version_>())).patch as *const _ as usize },
8usize,
concat!(
"Offset of field: ",
stringify!(gvr_version_),
"::",
stringify!(patch)
)
);
}
pub type gvr_version = gvr_version_;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct gvr_sizei {
pub width: i32,
pub height: i32,
}
#[test]
fn bindgen_test_layout_gvr_sizei() {
assert_eq!(
::std::mem::size_of::<gvr_sizei>(),
8usize,
concat!("Size of: ", stringify!(gvr_sizei))
);
assert_eq!(
::std::mem::align_of::<gvr_sizei>(),
4usize,
concat!("Alignment of ", stringify!(gvr_sizei))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<gvr_sizei>())).width as *const _ as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(gvr_sizei),
"::",
stringify!(width)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<gvr_sizei>())).height as *const _ as usize },
4usize,
concat!(
"Offset of field: ",
stringify!(gvr_sizei),
"::",
stringify!(height)
)
);
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct gvr_recti {
pub left: i32,
pub right: i32,
pub bottom: i32,
pub top: i32,
}
#[test]
fn bindgen_test_layout_gvr_recti() {
assert_eq!(
::std::mem::size_of::<gvr_recti>(),
16usize,
concat!("Size of: ", stringify!(gvr_recti))
);
assert_eq!(
::std::mem::align_of::<gvr_recti>(),
4usize,
concat!("Alignment of ", stringify!(gvr_recti))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<gvr_recti>())).left as *const _ as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(gvr_recti),
"::",
stringify!(left)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<gvr_recti>())).right as *const _ as usize },
4usize,
concat!(
"Offset of field: ",
stringify!(gvr_recti),
"::",
stringify!(right)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<gvr_recti>())).bottom as *const _ as usize },
8usize,
concat!(
"Offset of field: ",
stringify!(gvr_recti),
"::",
stringify!(bottom)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<gvr_recti>())).top as *const _ as usize },
12usize,
concat!(
"Offset of field: ",
stringify!(gvr_recti),
"::",
stringify!(top)
)
);
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct gvr_rectf {
pub left: f32,
pub right: f32,
pub bottom: f32,
pub top: f32,
}
#[test]
fn bindgen_test_layout_gvr_rectf() {
assert_eq!(
::std::mem::size_of::<gvr_rectf>(),
16usize,
concat!("Size of: ", stringify!(gvr_rectf))
);
assert_eq!(
::std::mem::align_of::<gvr_rectf>(),
4usize,
concat!("Alignment of ", stringify!(gvr_rectf))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<gvr_rectf>())).left as *const _ as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(gvr_rectf),
"::",
stringify!(left)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<gvr_rectf>())).right as *const _ as usize },
4usize,
concat!(
"Offset of field: ",
stringify!(gvr_rectf),
"::",
stringify!(right)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<gvr_rectf>())).bottom as *const _ as usize },
8usize,
concat!(
"Offset of field: ",
stringify!(gvr_rectf),
"::",
stringify!(bottom)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<gvr_rectf>())).top as *const _ as usize },
12usize,
concat!(
"Offset of field: ",
stringify!(gvr_rectf),
"::",
stringify!(top)
)
);
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct gvr_vec2f {
pub x: f32,
pub y: f32,
}
#[test]
fn bindgen_test_layout_gvr_vec2f() {
assert_eq!(
::std::mem::size_of::<gvr_vec2f>(),
8usize,
concat!("Size of: ", stringify!(gvr_vec2f))
);
assert_eq!(
::std::mem::align_of::<gvr_vec2f>(),
4usize,
concat!("Alignment of ", stringify!(gvr_vec2f))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<gvr_vec2f>())).x as *const _ as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(gvr_vec2f),
"::",
stringify!(x)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<gvr_vec2f>())).y as *const _ as usize },
4usize,
concat!(
"Offset of field: ",
stringify!(gvr_vec2f),
"::",
stringify!(y)
)
);
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct gvr_vec3f {
pub x: f32,
pub y: f32,
pub z: f32,
}
#[test]
fn bindgen_test_layout_gvr_vec3f() {
assert_eq!(
::std::mem::size_of::<gvr_vec3f>(),
12usize,
concat!("Size of: ", stringify!(gvr_vec3f))
);
assert_eq!(
::std::mem::align_of::<gvr_vec3f>(),
4usize,
concat!("Alignment of ", stringify!(gvr_vec3f))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<gvr_vec3f>())).x as *const _ as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(gvr_vec3f),
"::",
stringify!(x)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<gvr_vec3f>())).y as *const _ as usize },
4usize,
concat!(
"Offset of field: ",
stringify!(gvr_vec3f),
"::",
stringify!(y)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<gvr_vec3f>())).z as *const _ as usize },
8usize,
concat!(
"Offset of field: ",
stringify!(gvr_vec3f),
"::",
stringify!(z)
)
);
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct gvr_mat4f {
pub m: [[f32; 4usize]; 4usize],
}
#[test]
fn bindgen_test_layout_gvr_mat4f() {
assert_eq!(
::std::mem::size_of::<gvr_mat4f>(),
64usize,
concat!("Size of: ", stringify!(gvr_mat4f))
);
assert_eq!(
::std::mem::align_of::<gvr_mat4f>(),
4usize,
concat!("Alignment of ", stringify!(gvr_mat4f))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<gvr_mat4f>())).m as *const _ as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(gvr_mat4f),
"::",
stringify!(m)
)
);
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct gvr_quatf {
pub qx: f32,
pub qy: f32,
pub qz: f32,
pub qw: f32,
}
#[test]
fn bindgen_test_layout_gvr_quatf() {
assert_eq!(
::std::mem::size_of::<gvr_quatf>(),
16usize,
concat!("Size of: ", stringify!(gvr_quatf))
);
assert_eq!(
::std::mem::align_of::<gvr_quatf>(),
4usize,
concat!("Alignment of ", stringify!(gvr_quatf))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<gvr_quatf>())).qx as *const _ as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(gvr_quatf),
"::",
stringify!(qx)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<gvr_quatf>())).qy as *const _ as usize },
4usize,
concat!(
"Offset of field: ",
stringify!(gvr_quatf),
"::",
stringify!(qy)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<gvr_quatf>())).qz as *const _ as usize },
8usize,
concat!(
"Offset of field: ",
stringify!(gvr_quatf),
"::",
stringify!(qz)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<gvr_quatf>())).qw as *const _ as usize },
12usize,
concat!(
"Offset of field: ",
stringify!(gvr_quatf),
"::",
stringify!(qw)
)
);
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct gvr_clock_time_point {
pub monotonic_system_time_nanos: i64,
}
#[test]
fn bindgen_test_layout_gvr_clock_time_point() {
assert_eq!(
::std::mem::size_of::<gvr_clock_time_point>(),
8usize,
concat!("Size of: ", stringify!(gvr_clock_time_point))
);
assert_eq!(
::std::mem::align_of::<gvr_clock_time_point>(),
8usize,
concat!("Alignment of ", stringify!(gvr_clock_time_point))
);
assert_eq!(
unsafe {
&(*(::std::ptr::null::<gvr_clock_time_point>())).monotonic_system_time_nanos as *const _
as usize
},
0usize,
concat!(
"Offset of field: ",
stringify!(gvr_clock_time_point),
"::",
stringify!(monotonic_system_time_nanos)
)
);
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct gvr_buffer_viewport_ {
_unused: [u8; 0],
}
pub type gvr_buffer_viewport = gvr_buffer_viewport_;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct gvr_buffer_viewport_list_ {
_unused: [u8; 0],
}
pub type gvr_buffer_viewport_list = gvr_buffer_viewport_list_;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct gvr_buffer_spec_ {
_unused: [u8; 0],
}
pub type gvr_buffer_spec = gvr_buffer_spec_;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct gvr_swap_chain_ {
_unused: [u8; 0],
}
pub type gvr_swap_chain = gvr_swap_chain_;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct gvr_frame_ {
_unused: [u8; 0],
}
pub type gvr_frame = gvr_frame_;
pub type gvr_flags = u32;
pub type gvr_flags64 = u64;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct gvr_properties_ {
_unused: [u8; 0],
}
pub type gvr_properties = gvr_properties_;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct gvr_controller_context_ {
_unused: [u8; 0],
}
pub type gvr_controller_context = gvr_controller_context_;
#[repr(C)]
#[derive(Copy, Clone)]
pub struct gvr_value {
pub value_type: i32,
pub flags: gvr_flags,
pub __bindgen_anon_1: gvr_value__bindgen_ty_1,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub union gvr_value__bindgen_ty_1 {
pub f: f32,
pub d: f64,
pub i: i32,
pub i64: i64,
pub fl: gvr_flags,
pub fl64: gvr_flags64,
pub si: gvr_sizei,
pub ri: gvr_recti,
pub rf: gvr_rectf,
pub v2f: gvr_vec2f,
pub v3f: gvr_vec3f,
pub qf: gvr_quatf,
pub m4f: gvr_mat4f,
pub t: gvr_clock_time_point,
pub padding: [u8; 248usize],
_bindgen_union_align: [u64; 31usize],
}
#[test]
fn bindgen_test_layout_gvr_value__bindgen_ty_1() {
assert_eq!(
::std::mem::size_of::<gvr_value__bindgen_ty_1>(),
248usize,
concat!("Size of: ", stringify!(gvr_value__bindgen_ty_1))
);
assert_eq!(
::std::mem::align_of::<gvr_value__bindgen_ty_1>(),
8usize,
concat!("Alignment of ", stringify!(gvr_value__bindgen_ty_1))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<gvr_value__bindgen_ty_1>())).f as *const _ as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(gvr_value__bindgen_ty_1),
"::",
stringify!(f)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<gvr_value__bindgen_ty_1>())).d as *const _ as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(gvr_value__bindgen_ty_1),
"::",
stringify!(d)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<gvr_value__bindgen_ty_1>())).i as *const _ as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(gvr_value__bindgen_ty_1),
"::",
stringify!(i)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<gvr_value__bindgen_ty_1>())).i64 as *const _ as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(gvr_value__bindgen_ty_1),
"::",
stringify!(i64)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<gvr_value__bindgen_ty_1>())).fl as *const _ as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(gvr_value__bindgen_ty_1),
"::",
stringify!(fl)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<gvr_value__bindgen_ty_1>())).fl64 as *const _ as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(gvr_value__bindgen_ty_1),
"::",
stringify!(fl64)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<gvr_value__bindgen_ty_1>())).si as *const _ as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(gvr_value__bindgen_ty_1),
"::",
stringify!(si)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<gvr_value__bindgen_ty_1>())).ri as *const _ as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(gvr_value__bindgen_ty_1),
"::",
stringify!(ri)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<gvr_value__bindgen_ty_1>())).rf as *const _ as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(gvr_value__bindgen_ty_1),
"::",
stringify!(rf)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<gvr_value__bindgen_ty_1>())).v2f as *const _ as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(gvr_value__bindgen_ty_1),
"::",
stringify!(v2f)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<gvr_value__bindgen_ty_1>())).v3f as *const _ as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(gvr_value__bindgen_ty_1),
"::",
stringify!(v3f)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<gvr_value__bindgen_ty_1>())).qf as *const _ as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(gvr_value__bindgen_ty_1),
"::",
stringify!(qf)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<gvr_value__bindgen_ty_1>())).m4f as *const _ as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(gvr_value__bindgen_ty_1),
"::",
stringify!(m4f)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<gvr_value__bindgen_ty_1>())).t as *const _ as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(gvr_value__bindgen_ty_1),
"::",
stringify!(t)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<gvr_value__bindgen_ty_1>())).padding as *const _ as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(gvr_value__bindgen_ty_1),
"::",
stringify!(padding)
)
);
}
#[test]
fn bindgen_test_layout_gvr_value() {
assert_eq!(
::std::mem::size_of::<gvr_value>(),
256usize,
concat!("Size of: ", stringify!(gvr_value))
);
assert_eq!(
::std::mem::align_of::<gvr_value>(),
8usize,
concat!("Alignment of ", stringify!(gvr_value))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<gvr_value>())).value_type as *const _ as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(gvr_value),
"::",
stringify!(value_type)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<gvr_value>())).flags as *const _ as usize },
4usize,
concat!(
"Offset of field: ",
stringify!(gvr_value),
"::",
stringify!(flags)
)
);
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub enum gvr_recenter_event_type {
GVR_RECENTER_EVENT_RESTART = 1,
GVR_RECENTER_EVENT_ALIGNED = 2,
GVR_RECENTER_EVENT_DON = 3,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct gvr_recenter_event_data {
pub recenter_type: i32,
pub recenter_event_flags: gvr_flags,
pub start_space_from_tracking_space_transform: gvr_mat4f,
}
#[test]
fn bindgen_test_layout_gvr_recenter_event_data() {
assert_eq!(
::std::mem::size_of::<gvr_recenter_event_data>(),
72usize,
concat!("Size of: ", stringify!(gvr_recenter_event_data))
);
assert_eq!(
::std::mem::align_of::<gvr_recenter_event_data>(),
4usize,
concat!("Alignment of ", stringify!(gvr_recenter_event_data))
);
assert_eq!(
unsafe {
&(*(::std::ptr::null::<gvr_recenter_event_data>())).recenter_type as *const _ as usize
},
0usize,
concat!(
"Offset of field: ",
stringify!(gvr_recenter_event_data),
"::",
stringify!(recenter_type)
)
);
assert_eq!(
unsafe {
&(*(::std::ptr::null::<gvr_recenter_event_data>())).recenter_event_flags as *const _
as usize
},
4usize,
concat!(
"Offset of field: ",
stringify!(gvr_recenter_event_data),
"::",
stringify!(recenter_event_flags)
)
);
assert_eq!(
unsafe {
&(*(::std::ptr::null::<gvr_recenter_event_data>()))
.start_space_from_tracking_space_transform as *const _ as usize
},
8usize,
concat!(
"Offset of field: ",
stringify!(gvr_recenter_event_data),
"::",
stringify!(start_space_from_tracking_space_transform)
)
);
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct gvr_event {
pub timestamp: gvr_clock_time_point,
pub type_: i32,
pub flags: gvr_flags,
pub __bindgen_anon_1: gvr_event__bindgen_ty_1,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub union gvr_event__bindgen_ty_1 {
pub recenter_event_data: gvr_recenter_event_data,
pub padding: [u8; 496usize],
_bindgen_union_align: [u32; 124usize],
}
#[test]
fn bindgen_test_layout_gvr_event__bindgen_ty_1() {
assert_eq!(
::std::mem::size_of::<gvr_event__bindgen_ty_1>(),
496usize,
concat!("Size of: ", stringify!(gvr_event__bindgen_ty_1))
);
assert_eq!(
::std::mem::align_of::<gvr_event__bindgen_ty_1>(),
4usize,
concat!("Alignment of ", stringify!(gvr_event__bindgen_ty_1))
);
assert_eq!(
unsafe {
&(*(::std::ptr::null::<gvr_event__bindgen_ty_1>())).recenter_event_data as *const _
as usize
},
0usize,
concat!(
"Offset of field: ",
stringify!(gvr_event__bindgen_ty_1),
"::",
stringify!(recenter_event_data)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<gvr_event__bindgen_ty_1>())).padding as *const _ as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(gvr_event__bindgen_ty_1),
"::",
stringify!(padding)
)
);
}
#[test]
fn bindgen_test_layout_gvr_event() {
assert_eq!(
::std::mem::size_of::<gvr_event>(),
512usize,
concat!("Size of: ", stringify!(gvr_event))
);
assert_eq!(
::std::mem::align_of::<gvr_event>(),
8usize,
concat!("Alignment of ", stringify!(gvr_event))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<gvr_event>())).timestamp as *const _ as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(gvr_event),
"::",
stringify!(timestamp)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<gvr_event>())).type_ as *const _ as usize },
8usize,
concat!(
"Offset of field: ",
stringify!(gvr_event),
"::",
stringify!(type_)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<gvr_event>())).flags as *const _ as usize },
12usize,
concat!(
"Offset of field: ",
stringify!(gvr_event),
"::",
stringify!(flags)
)
);
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub enum gvr_error {
GVR_ERROR_NONE = 0,
GVR_ERROR_CONTROLLER_CREATE_FAILED = 2,
GVR_ERROR_NO_FRAME_AVAILABLE = 3,
GVR_ERROR_NO_EVENT_AVAILABLE = 1000000,
GVR_ERROR_NO_PROPERTY_AVAILABLE = 1000001,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub enum gvr_controller_api_status {
GVR_CONTROLLER_API_OK = 0,
GVR_CONTROLLER_API_UNSUPPORTED = 1,
GVR_CONTROLLER_API_NOT_AUTHORIZED = 2,
GVR_CONTROLLER_API_UNAVAILABLE = 3,
GVR_CONTROLLER_API_SERVICE_OBSOLETE = 4,
GVR_CONTROLLER_API_CLIENT_OBSOLETE = 5,
GVR_CONTROLLER_API_MALFUNCTION = 6,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub enum gvr_controller_connection_state {
GVR_CONTROLLER_DISCONNECTED = 0,
GVR_CONTROLLER_SCANNING = 1,
GVR_CONTROLLER_CONNECTING = 2,
GVR_CONTROLLER_CONNECTED = 3,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub enum gvr_controller_button {
GVR_CONTROLLER_BUTTON_NONE = 0,
GVR_CONTROLLER_BUTTON_CLICK = 1,
GVR_CONTROLLER_BUTTON_HOME = 2,
GVR_CONTROLLER_BUTTON_APP = 3,
GVR_CONTROLLER_BUTTON_VOLUME_UP = 4,
GVR_CONTROLLER_BUTTON_VOLUME_DOWN = 5,
GVR_CONTROLLER_BUTTON_COUNT = 6,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub enum gvr_controller_battery_level {
GVR_CONTROLLER_BATTERY_LEVEL_UNKNOWN = 0,
GVR_CONTROLLER_BATTERY_LEVEL_CRITICAL_LOW = 1,
GVR_CONTROLLER_BATTERY_LEVEL_LOW = 2,
GVR_CONTROLLER_BATTERY_LEVEL_MEDIUM = 3,
GVR_CONTROLLER_BATTERY_LEVEL_ALMOST_FULL = 4,
GVR_CONTROLLER_BATTERY_LEVEL_FULL = 5,
GVR_CONTROLLER_BATTERY_LEVEL_COUNT = 6,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct gvr_controller_state_ {
_unused: [u8; 0],
}
pub type gvr_controller_state = gvr_controller_state_;
#[repr(u32)]
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub enum gvr_audio_rendering_mode {
GVR_AUDIO_RENDERING_STEREO_PANNING = 0,
GVR_AUDIO_RENDERING_BINAURAL_LOW_QUALITY = 1,
GVR_AUDIO_RENDERING_BINAURAL_HIGH_QUALITY = 2,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub enum gvr_audio_material_type {
GVR_AUDIO_MATERIAL_TRANSPARENT = 0,
GVR_AUDIO_MATERIAL_ACOUSTIC_CEILING_TILES = 1,
GVR_AUDIO_MATERIAL_BRICK_BARE = 2,
GVR_AUDIO_MATERIAL_BRICK_PAINTED = 3,
GVR_AUDIO_MATERIAL_CONCRETE_BLOCK_COARSE = 4,
GVR_AUDIO_MATERIAL_CONCRETE_BLOCK_PAINTED = 5,
GVR_AUDIO_MATERIAL_CURTAIN_HEAVY = 6,
GVR_AUDIO_MATERIAL_FIBER_GLASS_INSULATION = 7,
GVR_AUDIO_MATERIAL_GLASS_THIN = 8,
GVR_AUDIO_MATERIAL_GLASS_THICK = 9,
GVR_AUDIO_MATERIAL_GRASS = 10,
GVR_AUDIO_MATERIAL_LINOLEUM_ON_CONCRETE = 11,
GVR_AUDIO_MATERIAL_MARBLE = 12,
GVR_AUDIO_MATERIAL_METAL = 13,
GVR_AUDIO_MATERIAL_PARQUET_ON_CONCRETE = 14,
GVR_AUDIO_MATERIAL_PLASTER_ROUGH = 15,
GVR_AUDIO_MATERIAL_PLASTER_SMOOTH = 16,
GVR_AUDIO_MATERIAL_PLYWOOD_PANEL = 17,
GVR_AUDIO_MATERIAL_POLISHED_CONCRETE_OR_TILE = 18,
GVR_AUDIO_MATERIAL_SHEET_ROCK = 19,
GVR_AUDIO_MATERIAL_WATER_OR_ICE_SURFACE = 20,
GVR_AUDIO_MATERIAL_WOOD_CEILING = 21,
GVR_AUDIO_MATERIAL_WOOD_PANEL = 22,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub enum gvr_audio_distance_rolloff_type {
GVR_AUDIO_ROLLOFF_LOGARITHMIC = 0,
GVR_AUDIO_ROLLOFF_LINEAR = 1,
GVR_AUDIO_ROLLOFF_NONE = 2,
}
pub type gvr_audio_source_id = i32;
#[repr(u32)]
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub enum gvr_audio_surround_format_type {
GVR_AUDIO_SURROUND_FORMAT_INVALID = 0,
GVR_AUDIO_SURROUND_FORMAT_SURROUND_MONO = 1,
GVR_AUDIO_SURROUND_FORMAT_SURROUND_STEREO = 2,
GVR_AUDIO_SURROUND_FORMAT_SURROUND_FIVE_DOT_ONE = 3,
GVR_AUDIO_SURROUND_FORMAT_SURROUND_SEVEN_DOT_ONE = 10,
GVR_AUDIO_SURROUND_FORMAT_FIRST_ORDER_AMBISONICS = 4,
GVR_AUDIO_SURROUND_FORMAT_SECOND_ORDER_AMBISONICS = 5,
GVR_AUDIO_SURROUND_FORMAT_THIRD_ORDER_AMBISONICS = 6,
GVR_AUDIO_SURROUND_FORMAT_FIRST_ORDER_AMBISONICS_WITH_NON_DIEGETIC_STEREO = 7,
GVR_AUDIO_SURROUND_FORMAT_SECOND_ORDER_AMBISONICS_WITH_NON_DIEGETIC_STEREO = 8,
GVR_AUDIO_SURROUND_FORMAT_THIRD_ORDER_AMBISONICS_WITH_NON_DIEGETIC_STEREO = 9,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub enum gvr_color_format_type {
GVR_COLOR_FORMAT_RGBA_8888 = 0,
GVR_COLOR_FORMAT_RGB_565 = 1,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub enum gvr_depth_stencil_format_type {
GVR_DEPTH_STENCIL_FORMAT_NONE = 255,
GVR_DEPTH_STENCIL_FORMAT_DEPTH_16 = 0,
GVR_DEPTH_STENCIL_FORMAT_DEPTH_24 = 1,
GVR_DEPTH_STENCIL_FORMAT_DEPTH_24_STENCIL_8 = 2,
GVR_DEPTH_STENCIL_FORMAT_DEPTH_32_F = 3,
GVR_DEPTH_STENCIL_FORMAT_DEPTH_32_F_STENCIL_8 = 4,
GVR_DEPTH_STENCIL_FORMAT_STENCIL_8 = 5,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub enum gvr_reprojection {
GVR_REPROJECTION_NONE = 0,
GVR_REPROJECTION_FULL = 1,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub enum gvr_controller_handedness {
GVR_CONTROLLER_RIGHT_HANDED = 0,
GVR_CONTROLLER_LEFT_HANDED = 1,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub enum gvr_arm_model_behavior {
GVR_ARM_MODEL_SYNC_GAZE = 0,
GVR_ARM_MODEL_FOLLOW_GAZE = 1,
GVR_ARM_MODEL_IGNORE_GAZE = 2,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct gvr_user_prefs_ {
_unused: [u8; 0],
}
pub type gvr_user_prefs = gvr_user_prefs_;
#[repr(u32)]
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub enum gvr_property_type {
GVR_PROPERTY_TRACKING_FLOOR_HEIGHT = 1,
GVR_PROPERTY_RECENTER_TRANSFORM = 2,
GVR_PROPERTY_SAFETY_REGION = 3,
GVR_PROPERTY_SAFETY_CYLINDER_ENTER_RADIUS = 4,
GVR_PROPERTY_SAFETY_CYLINDER_EXIT_RADIUS = 5,
GVR_PROPERTY_TRACKING_STATUS = 6,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub enum gvr_safety_region_type {
GVR_SAFETY_REGION_NONE = 0,
GVR_SAFETY_REGION_CYLINDER = 1,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub enum gvr_value_type {
GVR_VALUE_TYPE_NONE = 0,
GVR_VALUE_TYPE_FLOAT = 1,
GVR_VALUE_TYPE_DOUBLE = 2,
GVR_VALUE_TYPE_INT = 3,
GVR_VALUE_TYPE_INT64 = 4,
GVR_VALUE_TYPE_FLAGS = 5,
GVR_VALUE_TYPE_SIZEI = 6,
GVR_VALUE_TYPE_RECTI = 7,
GVR_VALUE_TYPE_RECTF = 8,
GVR_VALUE_TYPE_VEC2F = 9,
GVR_VALUE_TYPE_VEC3F = 10,
GVR_VALUE_TYPE_QUATF = 11,
GVR_VALUE_TYPE_MAT4F = 12,
GVR_VALUE_TYPE_CLOCK_TIME_POINT = 13,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub enum gvr_event_type {
GVR_EVENT_RECENTER = 1,
GVR_EVENT_SAFETY_REGION_EXIT = 2,
GVR_EVENT_SAFETY_REGION_ENTER = 3,
GVR_EVENT_HEAD_TRACKING_RESUMED = 4,
GVR_EVENT_HEAD_TRACKING_PAUSED = 5,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AHardwareBuffer {
_unused: [u8; 0],
}
extern "C" {
pub fn gvr_create() -> *mut gvr_context;
}
extern "C" {
pub fn gvr_get_version() -> gvr_version;
}
extern "C" {
pub fn gvr_get_version_string() -> *const ::std::os::raw::c_char;
}
extern "C" {
pub fn gvr_get_error(gvr: *mut gvr_context) -> i32;
}
extern "C" {
pub fn gvr_clear_error(gvr: *mut gvr_context) -> i32;
}
extern "C" {
pub fn gvr_get_error_string(error_code: i32) -> *const ::std::os::raw::c_char;
}
extern "C" {
pub fn gvr_poll_event(gvr: *mut gvr_context, event_out: *mut gvr_event) -> i32;
}
extern "C" {
pub fn gvr_get_current_properties(gvr: *mut gvr_context) -> *const gvr_properties;
}
extern "C" {
pub fn gvr_properties_get(
properties: *const gvr_properties,
property_key: i32,
value_out: *mut gvr_value,
) -> i32;
}
extern "C" {
pub fn gvr_get_user_prefs(gvr: *mut gvr_context) -> *const gvr_user_prefs;
}
extern "C" {
pub fn gvr_user_prefs_get_controller_handedness(user_prefs: *const gvr_user_prefs) -> i32;
}
extern "C" {
pub fn gvr_destroy(gvr: *mut *mut gvr_context);
}
extern "C" {
pub fn gvr_initialize_gl(gvr: *mut gvr_context);
}
extern "C" {
pub fn gvr_get_async_reprojection_enabled(gvr: *const gvr_context) -> bool;
}
extern "C" {
pub fn gvr_get_recommended_buffer_viewports(
gvr: *const gvr_context,
viewport_list: *mut gvr_buffer_viewport_list,
);
}
extern "C" {
pub fn gvr_get_screen_buffer_viewports(
gvr: *const gvr_context,
viewport_list: *mut gvr_buffer_viewport_list,
);
}
extern "C" {
pub fn gvr_get_maximum_effective_render_target_size(gvr: *const gvr_context) -> gvr_sizei;
}
extern "C" {
pub fn gvr_get_screen_target_size(gvr: *const gvr_context) -> gvr_sizei;
}
extern "C" {
pub fn gvr_set_surface_size(gvr: *mut gvr_context, surface_size_pixels: gvr_sizei);
}
extern "C" {
pub fn gvr_distort_to_screen(
gvr: *mut gvr_context,
texture_id: i32,
viewport_list: *const gvr_buffer_viewport_list,
head_space_from_start_space: gvr_mat4f,
target_presentation_time: gvr_clock_time_point,
);
}
extern "C" {
pub fn gvr_is_feature_supported(gvr: *const gvr_context, feature: i32) -> bool;
}
extern "C" {
pub fn gvr_buffer_viewport_create(gvr: *mut gvr_context) -> *mut gvr_buffer_viewport;
}
extern "C" {
pub fn gvr_buffer_viewport_destroy(viewport: *mut *mut gvr_buffer_viewport);
}
extern "C" {
pub fn gvr_buffer_viewport_get_source_uv(viewport: *const gvr_buffer_viewport) -> gvr_rectf;
}
extern "C" {
pub fn gvr_buffer_viewport_set_source_uv(viewport: *mut gvr_buffer_viewport, uv: gvr_rectf);
}
extern "C" {
pub fn gvr_buffer_viewport_get_source_fov(viewport: *const gvr_buffer_viewport) -> gvr_rectf;
}
extern "C" {
pub fn gvr_buffer_viewport_set_source_fov(viewport: *mut gvr_buffer_viewport, fov: gvr_rectf);
}
extern "C" {
pub fn gvr_buffer_viewport_get_transform(viewport: *const gvr_buffer_viewport) -> gvr_mat4f;
}
extern "C" {
pub fn gvr_buffer_viewport_set_transform(
viewport: *mut gvr_buffer_viewport,
transform: gvr_mat4f,
);
}
extern "C" {
pub fn gvr_buffer_viewport_get_target_eye(viewport: *const gvr_buffer_viewport) -> i32;
}
extern "C" {
pub fn gvr_buffer_viewport_set_target_eye(viewport: *mut gvr_buffer_viewport, index: i32);
}
extern "C" {
pub fn gvr_buffer_viewport_get_source_buffer_index(viewport: *const gvr_buffer_viewport)
-> i32;
}
extern "C" {
pub fn gvr_buffer_viewport_set_source_buffer_index(
viewport: *mut gvr_buffer_viewport,
buffer_index: i32,
);
}
extern "C" {
pub fn gvr_buffer_viewport_get_external_surface_id(viewport: *const gvr_buffer_viewport)
-> i32;
}
extern "C" {
pub fn gvr_buffer_viewport_set_external_surface_id(
viewport: *mut gvr_buffer_viewport,
external_surface_id: i32,
);
}
extern "C" {
pub fn gvr_buffer_viewport_get_reprojection(viewport: *const gvr_buffer_viewport) -> i32;
}
extern "C" {
pub fn gvr_buffer_viewport_set_reprojection(
viewport: *mut gvr_buffer_viewport,
reprojection: i32,
);
}
extern "C" {
pub fn gvr_buffer_viewport_set_source_layer(
viewport: *mut gvr_buffer_viewport,
layer_index: i32,
);
}
extern "C" {
pub fn gvr_buffer_viewport_get_opacity(viewport: *const gvr_buffer_viewport) -> f32;
}
extern "C" {
pub fn gvr_buffer_viewport_set_opacity(viewport: *mut gvr_buffer_viewport, opacity: f32);
}
extern "C" {
pub fn gvr_buffer_viewport_equal(
a: *const gvr_buffer_viewport,
b: *const gvr_buffer_viewport,
) -> bool;
}
extern "C" {
pub fn gvr_buffer_viewport_list_create(
gvr: *const gvr_context,
) -> *mut gvr_buffer_viewport_list;
}
extern "C" {
pub fn gvr_buffer_viewport_list_destroy(viewport_list: *mut *mut gvr_buffer_viewport_list);
}
extern "C" {
pub fn gvr_buffer_viewport_list_get_size(
viewport_list: *const gvr_buffer_viewport_list,
) -> usize;
}
extern "C" {
pub fn gvr_buffer_viewport_list_get_item(
viewport_list: *const gvr_buffer_viewport_list,
index: usize,
viewport: *mut gvr_buffer_viewport,
);
}
extern "C" {
pub fn gvr_buffer_viewport_list_set_item(
viewport_list: *mut gvr_buffer_viewport_list,
index: usize,
viewport: *const gvr_buffer_viewport,
);
}
extern "C" {
pub fn gvr_buffer_spec_create(gvr: *mut gvr_context) -> *mut gvr_buffer_spec;
}
extern "C" {
pub fn gvr_buffer_spec_destroy(spec: *mut *mut gvr_buffer_spec);
}
extern "C" {
pub fn gvr_buffer_spec_get_size(spec: *const gvr_buffer_spec) -> gvr_sizei;
}
extern "C" {
pub fn gvr_buffer_spec_set_size(spec: *mut gvr_buffer_spec, size: gvr_sizei);
}
extern "C" {
pub fn gvr_buffer_spec_get_samples(spec: *const gvr_buffer_spec) -> i32;
}
extern "C" {
pub fn gvr_buffer_spec_set_samples(spec: *mut gvr_buffer_spec, num_samples: i32);
}
extern "C" {
pub fn gvr_buffer_spec_set_color_format(spec: *mut gvr_buffer_spec, color_format: i32);
}
extern "C" {
pub fn gvr_buffer_spec_set_depth_stencil_format(
spec: *mut gvr_buffer_spec,
depth_stencil_format: i32,
);
}
extern "C" {
pub fn gvr_buffer_spec_set_multiview_layers(spec: *mut gvr_buffer_spec, num_layers: i32);
}
extern "C" {
pub fn gvr_swap_chain_create(
gvr: *mut gvr_context,
buffers: *mut *const gvr_buffer_spec,
count: i32,
) -> *mut gvr_swap_chain;
}
extern "C" {
pub fn gvr_swap_chain_destroy(swap_chain: *mut *mut gvr_swap_chain);
}
extern "C" {
pub fn gvr_swap_chain_get_buffer_count(swap_chain: *const gvr_swap_chain) -> i32;
}
extern "C" {
pub fn gvr_swap_chain_get_buffer_size(
swap_chain: *const gvr_swap_chain,
index: i32,
) -> gvr_sizei;
}
extern "C" {
pub fn gvr_swap_chain_resize_buffer(
swap_chain: *mut gvr_swap_chain,
index: i32,
size: gvr_sizei,
);
}
extern "C" {
pub fn gvr_swap_chain_acquire_frame(swap_chain: *mut gvr_swap_chain) -> *mut gvr_frame;
}
extern "C" {
pub fn gvr_frame_bind_buffer(frame: *mut gvr_frame, index: i32);
}
extern "C" {
pub fn gvr_frame_unbind(frame: *mut gvr_frame);
}
extern "C" {
pub fn gvr_frame_get_buffer_size(frame: *const gvr_frame, index: i32) -> gvr_sizei;
}
extern "C" {
pub fn gvr_frame_get_framebuffer_object(frame: *const gvr_frame, index: i32) -> i32;
}
extern "C" {
pub fn gvr_frame_get_hardware_buffer(
frame: *const gvr_frame,
index: i32,
) -> *mut AHardwareBuffer;
}
extern "C" {
pub fn gvr_frame_submit(
frame: *mut *mut gvr_frame,
list: *const gvr_buffer_viewport_list,
head_space_from_start_space: gvr_mat4f,
);
}
extern "C" {
pub fn gvr_bind_default_framebuffer(gvr: *mut gvr_context);
}
extern "C" {
pub fn gvr_get_time_point_now() -> gvr_clock_time_point;
}
extern "C" {
pub fn gvr_get_head_space_from_start_space_rotation(
gvr: *const gvr_context,
time: gvr_clock_time_point,
) -> gvr_mat4f;
}
extern "C" {
pub fn gvr_get_head_space_from_start_space_transform(
gvr: *const gvr_context,
time: gvr_clock_time_point,
) -> gvr_mat4f;
}
extern "C" {
pub fn gvr_apply_neck_model(
gvr: *const gvr_context,
head_space_from_start_space_rotation: gvr_mat4f,
factor: f32,
) -> gvr_mat4f;
}
extern "C" {
pub fn gvr_pause_tracking(gvr: *mut gvr_context);
}
extern "C" {
pub fn gvr_resume_tracking(gvr: *mut gvr_context);
}
extern "C" {
pub fn gvr_reset_tracking(gvr: *mut gvr_context);
}
extern "C" {
pub fn gvr_recenter_tracking(gvr: *mut gvr_context);
}
extern "C" {
pub fn gvr_set_default_viewer_profile(
gvr: *mut gvr_context,
viewer_profile_uri: *const ::std::os::raw::c_char,
) -> bool;
}
extern "C" {
pub fn gvr_refresh_viewer_profile(gvr: *mut gvr_context);
}
extern "C" {
pub fn gvr_get_viewer_vendor(gvr: *const gvr_context) -> *const ::std::os::raw::c_char;
}
extern "C" {
pub fn gvr_get_viewer_model(gvr: *const gvr_context) -> *const ::std::os::raw::c_char;
}
extern "C" {
pub fn gvr_get_viewer_type(gvr: *const gvr_context) -> i32;
}
extern "C" {
pub fn gvr_get_eye_from_head_matrix(gvr: *const gvr_context, eye: i32) -> gvr_mat4f;
}
extern "C" {
pub fn gvr_get_window_bounds(gvr: *const gvr_context) -> gvr_recti;
}
extern "C" {
pub fn gvr_compute_distorted_point(
gvr: *const gvr_context,
eye: i32,
uv_in: gvr_vec2f,
uv_out: *mut gvr_vec2f,
);
}
extern "C" {
pub fn gvr_controller_get_default_options() -> i32;
}
extern "C" {
pub fn gvr_controller_create_and_init(
options: i32,
context: *mut gvr_context,
) -> *mut gvr_controller_context;
}
extern "C" {
pub fn gvr_controller_destroy(api: *mut *mut gvr_controller_context);
}
extern "C" {
pub fn gvr_controller_pause(api: *mut gvr_controller_context);
}
extern "C" {
pub fn gvr_controller_resume(api: *mut gvr_controller_context);
}
extern "C" {
pub fn gvr_controller_get_count(api: *mut gvr_controller_context) -> i32;
}
extern "C" {
pub fn gvr_controller_api_status_to_string(status: i32) -> *const ::std::os::raw::c_char;
}
extern "C" {
pub fn gvr_controller_connection_state_to_string(state: i32) -> *const ::std::os::raw::c_char;
}
extern "C" {
pub fn gvr_controller_button_to_string(button: i32) -> *const ::std::os::raw::c_char;
}
extern "C" {
pub fn gvr_controller_state_create() -> *mut gvr_controller_state;
}
extern "C" {
pub fn gvr_controller_state_destroy(state: *mut *mut gvr_controller_state);
}
extern "C" {
pub fn gvr_controller_state_update(
api: *mut gvr_controller_context,
controller_index: i32,
out_state: *mut gvr_controller_state,
);
}
extern "C" {
pub fn gvr_controller_apply_arm_model(
api: *mut gvr_controller_context,
controller_index: i32,
handedness: i32,
behavior: i32,
head_space_from_start_space_rotation: gvr_mat4f,
);
}
extern "C" {
pub fn gvr_controller_state_get_api_status(state: *const gvr_controller_state) -> i32;
}
extern "C" {
pub fn gvr_controller_state_get_connection_state(state: *const gvr_controller_state) -> i32;
}
extern "C" {
pub fn gvr_controller_state_get_orientation(state: *const gvr_controller_state) -> gvr_quatf;
}
extern "C" {
pub fn gvr_controller_state_get_gyro(state: *const gvr_controller_state) -> gvr_vec3f;
}
extern "C" {
pub fn gvr_controller_state_get_accel(state: *const gvr_controller_state) -> gvr_vec3f;
}
extern "C" {
pub fn gvr_controller_state_is_touching(state: *const gvr_controller_state) -> bool;
}
extern "C" {
pub fn gvr_controller_state_get_touch_pos(state: *const gvr_controller_state) -> gvr_vec2f;
}
extern "C" {
pub fn gvr_controller_state_get_touch_down(state: *const gvr_controller_state) -> bool;
}
extern "C" {
pub fn gvr_controller_state_get_touch_up(state: *const gvr_controller_state) -> bool;
}
extern "C" {
pub fn gvr_controller_state_get_recentered(state: *const gvr_controller_state) -> bool;
}
extern "C" {
pub fn gvr_controller_state_get_recentering(state: *const gvr_controller_state) -> bool;
}
extern "C" {
pub fn gvr_controller_state_get_button_state(
state: *const gvr_controller_state,
button: i32,
) -> bool;
}
extern "C" {
pub fn gvr_controller_state_get_button_down(
state: *const gvr_controller_state,
button: i32,
) -> bool;
}
extern "C" {
pub fn gvr_controller_state_get_button_up(
state: *const gvr_controller_state,
button: i32,
) -> bool;
}
extern "C" {
pub fn gvr_controller_state_get_last_orientation_timestamp(
state: *const gvr_controller_state,
) -> i64;
}
extern "C" {
pub fn gvr_controller_state_get_last_gyro_timestamp(state: *const gvr_controller_state) -> i64;
}
extern "C" {
pub fn gvr_controller_state_get_last_accel_timestamp(state: *const gvr_controller_state)
-> i64;
}
extern "C" {
pub fn gvr_controller_state_get_last_touch_timestamp(state: *const gvr_controller_state)
-> i64;
}
extern "C" {
pub fn gvr_controller_state_get_last_button_timestamp(
state: *const gvr_controller_state,
) -> i64;
}
extern "C" {
pub fn gvr_controller_state_get_position(state: *const gvr_controller_state) -> gvr_vec3f;
}
extern "C" {
pub fn gvr_controller_state_get_last_position_timestamp(
state: *const gvr_controller_state,
) -> i64;
}
extern "C" {
pub fn gvr_controller_state_get_battery_charging(state: *const gvr_controller_state) -> bool;
}
extern "C" {
pub fn gvr_controller_state_get_battery_level(state: *const gvr_controller_state) -> i32;
}
extern "C" {
pub fn gvr_controller_state_get_last_battery_timestamp(
state: *const gvr_controller_state,
) -> i64;
}
extern "C" {
pub fn gvr_controller_battery_level_to_string(level: i32) -> *const ::std::os::raw::c_char;
}