blob: 2d81ec70a11571e6758028b0ea075ffeb7f726d0 [file] [log] [blame]
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
module content;
struct VRVector3 {
float x;
float y;
float z;
};
struct VRVector4 {
float x;
float y;
float z;
float w;
};
struct VRRect {
int32 x;
int32 y;
int32 width;
int32 height;
};
// A field of view, given by 4 degrees describing the view from a center point.
struct VRFieldOfView {
float upDegrees;
float downDegrees;
float leftDegrees;
float rightDegrees;
};
// A sensor's position, orientation, velocity, and acceleration state at the
// given timestamp.
struct VRSensorState {
double timestamp;
uint32 frameIndex;
VRVector4? orientation;
VRVector3? position;
VRVector3? angularVelocity;
VRVector3? linearVelocity;
VRVector3? angularAcceleration;
VRVector3? linearAcceleration;
};
// Information about the optical properties for an eye in an HMD.
struct VREyeParameters {
VRFieldOfView minimumFieldOfView;
VRFieldOfView maximumFieldOfView;
VRFieldOfView recommendedFieldOfView;
VRVector3 eyeTranslation;
VRRect renderRect;
};
// Information pertaining to Head Mounted Displays.
struct VRHMDInfo {
VREyeParameters leftEye;
VREyeParameters rightEye;
};
struct VRDeviceInfo {
uint32 index;
string deviceName;
VRHMDInfo? hmdInfo;
};
interface VRService {
GetDevices() => (array<VRDeviceInfo> devices);
GetSensorState(uint32 index) => (VRSensorState state);
ResetSensor(uint32 index);
};