mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-26 22:32:46 +00:00
129 lines
4.4 KiB
Plaintext
129 lines
4.4 KiB
Plaintext
/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
enum VREye {
|
|
"left",
|
|
"right"
|
|
};
|
|
|
|
[Pref="dom.vr.enabled",
|
|
HeaderFile="mozilla/dom/VRDevice.h"]
|
|
interface VRFieldOfViewReadOnly {
|
|
readonly attribute double upDegrees;
|
|
readonly attribute double rightDegrees;
|
|
readonly attribute double downDegrees;
|
|
readonly attribute double leftDegrees;
|
|
};
|
|
|
|
[Pref="dom.vr.enabled",
|
|
HeaderFile="mozilla/dom/VRDevice.h",
|
|
Constructor(optional VRFieldOfViewInit fov),
|
|
Constructor(double upDegrees, double rightDegrees, double downDegrees, double leftDegrees)]
|
|
interface VRFieldOfView : VRFieldOfViewReadOnly {
|
|
inherit attribute double upDegrees;
|
|
inherit attribute double rightDegrees;
|
|
inherit attribute double downDegrees;
|
|
inherit attribute double leftDegrees;
|
|
};
|
|
|
|
dictionary VRFieldOfViewInit {
|
|
double upDegrees = 0.0;
|
|
double rightDegrees = 0.0;
|
|
double downDegrees = 0.0;
|
|
double leftDegrees = 0.0;
|
|
};
|
|
|
|
[Pref="dom.vr.enabled",
|
|
HeaderFile="mozilla/dom/VRDevice.h"]
|
|
interface VRPositionState {
|
|
readonly attribute double timeStamp;
|
|
|
|
readonly attribute boolean hasPosition;
|
|
readonly attribute DOMPoint? position;
|
|
readonly attribute DOMPoint? linearVelocity;
|
|
readonly attribute DOMPoint? linearAcceleration;
|
|
|
|
readonly attribute boolean hasOrientation;
|
|
// XXX should be DOMQuaternion as soon as we add that
|
|
readonly attribute DOMPoint? orientation;
|
|
readonly attribute DOMPoint? angularVelocity;
|
|
readonly attribute DOMPoint? angularAcceleration;
|
|
};
|
|
|
|
[Pref="dom.vr.enabled"]
|
|
interface VRDevice {
|
|
/**
|
|
* An identifier for the distinct hardware unit that this
|
|
* VR Device is a part of. All VRDevice/Sensors that come
|
|
* from the same hardware will have the same hardwareId
|
|
*/
|
|
[Pure] readonly attribute DOMString hardwareUnitId;
|
|
|
|
/**
|
|
* An identifier for this distinct sensor/device on a physical
|
|
* hardware device. This shouldn't change across browser
|
|
* restrats, allowing configuration data to be saved based on it.
|
|
*/
|
|
[Pure] readonly attribute DOMString deviceId;
|
|
|
|
/**
|
|
* a device name, a user-readable name identifying it
|
|
*/
|
|
[Pure] readonly attribute DOMString deviceName;
|
|
};
|
|
|
|
[Pref="dom.vr.enabled",
|
|
HeaderFile="mozilla/dom/VRDevice.h"]
|
|
interface HMDVRDevice : VRDevice {
|
|
/* The translation that should be applied to the view matrix for rendering each eye */
|
|
DOMPoint getEyeTranslation(VREye whichEye);
|
|
|
|
// the FOV that the HMD was configured with
|
|
VRFieldOfView getCurrentEyeFieldOfView(VREye whichEye);
|
|
|
|
// the recommended FOV, per eye.
|
|
VRFieldOfView getRecommendedEyeFieldOfView(VREye whichEye);
|
|
|
|
// the maximum FOV, per eye. Above this, rendering will look broken.
|
|
VRFieldOfView getMaximumEyeFieldOfView(VREye whichEye);
|
|
|
|
// Set a field of view. If either of the fields of view is null,
|
|
// or if their values are all zeros, then the recommended field of view
|
|
// for that eye will be used.
|
|
void setFieldOfView(optional VRFieldOfViewInit leftFOV,
|
|
optional VRFieldOfViewInit rightFOV,
|
|
optional double zNear = 0.01,
|
|
optional double zFar = 10000.0);
|
|
|
|
// return a recommended rect for this eye. Only useful for Canvas rendering,
|
|
// the x/y coordinates will be the location in the canvas where this eye should
|
|
// begin, and the width/height are the dimensions. Any canvas in the appropriate
|
|
// ratio will work.
|
|
DOMRect getRecommendedEyeRenderRect(VREye whichEye);
|
|
|
|
// hack for testing
|
|
void xxxToggleElementVR(Element element);
|
|
};
|
|
|
|
[Pref="dom.vr.enabled" ,
|
|
HeaderFile="mozilla/dom/VRDevice.h"]
|
|
interface PositionSensorVRDevice : VRDevice {
|
|
/*
|
|
* Return a VRPositionState dictionary containing the state of this position sensor,
|
|
* at an optional past time or predicted for a future time if timeOffset is != 0.
|
|
*
|
|
* The VRPositionState will contain the position, orientation, and velocity
|
|
* and acceleration of each of these properties. Use "hasPosition" and "hasOrientation"
|
|
* to check if the associated members are valid; if these are false, those members
|
|
* will be null.
|
|
*/
|
|
VRPositionState getState(optional double timeOffset = 0.0);
|
|
|
|
/* Zero this sensor, treating its current position and orientation
|
|
* as the "origin/zero" values.
|
|
*/
|
|
void zeroSensor();
|
|
};
|