mirror of
https://github.com/servo/servo.git
synced 2025-08-03 20:50:07 +01:00
webxr: Update hand input to match latest spec (#32958)
* Update IDLs Signed-off-by: Daniel Adams <msub2official@gmail.com> * Update XRHand and XRJointSpace methods/bindings Signed-off-by: Daniel Adams <msub2official@gmail.com> * Implement fillJointRadii Signed-off-by: Daniel Adams <msub2official@gmail.com> * Implement fillPoses Signed-off-by: Daniel Adams <msub2official@gmail.com> * Formatting Signed-off-by: Daniel Adams <msub2official@gmail.com> * Update test expectations Signed-off-by: Daniel Adams <msub2official@gmail.com> * Tidy, missing spec link Signed-off-by: Daniel Adams <msub2official@gmail.com> * Remove idlharness expectation files, update hands pref Signed-off-by: Daniel Adams <msub2official@gmail.com> * Update interfaces Signed-off-by: Daniel Adams <msub2official@gmail.com> * XRJointPose interface Signed-off-by: Daniel Adams <msub2official@gmail.com> * XRHand interface Signed-off-by: Daniel Adams <msub2official@gmail.com> --------- Signed-off-by: Daniel Adams <msub2official@gmail.com>
This commit is contained in:
parent
057873c94a
commit
825d6f10e9
12 changed files with 314 additions and 553 deletions
|
@ -10,6 +10,16 @@ interface XRFrame {
|
|||
|
||||
[Throws] XRViewerPose? getViewerPose(XRReferenceSpace referenceSpace);
|
||||
[Throws] XRPose? getPose(XRSpace space, XRSpace relativeTo);
|
||||
[Pref="dom.webxr.hands.enabled", Throws] XRJointPose? getJointPose(XRJointSpace space, XRSpace relativeTo);
|
||||
|
||||
// WebXR Hand Input
|
||||
[Pref="dom.webxr.hands.enabled", Throws]
|
||||
XRJointPose? getJointPose(XRJointSpace joint, XRSpace baseSpace);
|
||||
[Pref="dom.webxr.hands.enabled", Throws]
|
||||
boolean fillJointRadii(sequence<XRJointSpace> jointSpaces, Float32Array radii);
|
||||
|
||||
[Pref="dom.webxr.hands.enabled", Throws]
|
||||
boolean fillPoses(sequence<XRSpace> spaces, XRSpace baseSpace, Float32Array transforms);
|
||||
|
||||
// WebXR Hit Test
|
||||
sequence<XRHitTestResult> getHitTestResults(XRHitTestSource hitTestSource);
|
||||
};
|
||||
|
|
|
@ -4,38 +4,43 @@
|
|||
|
||||
// https://github.com/immersive-web/webxr-hands-input/blob/master/explainer.md
|
||||
|
||||
enum XRHandJoint {
|
||||
"wrist",
|
||||
|
||||
"thumb-metacarpal",
|
||||
"thumb-phalanx-proximal",
|
||||
"thumb-phalanx-distal",
|
||||
"thumb-tip",
|
||||
|
||||
"index-finger-metacarpal",
|
||||
"index-finger-phalanx-proximal",
|
||||
"index-finger-phalanx-intermediate",
|
||||
"index-finger-phalanx-distal",
|
||||
"index-finger-tip",
|
||||
|
||||
"middle-finger-metacarpal",
|
||||
"middle-finger-phalanx-proximal",
|
||||
"middle-finger-phalanx-intermediate",
|
||||
"middle-finger-phalanx-distal",
|
||||
"middle-finger-tip",
|
||||
|
||||
"ring-finger-metacarpal",
|
||||
"ring-finger-phalanx-proximal",
|
||||
"ring-finger-phalanx-intermediate",
|
||||
"ring-finger-phalanx-distal",
|
||||
"ring-finger-tip",
|
||||
|
||||
"pinky-finger-metacarpal",
|
||||
"pinky-finger-phalanx-proximal",
|
||||
"pinky-finger-phalanx-intermediate",
|
||||
"pinky-finger-phalanx-distal",
|
||||
"pinky-finger-tip"
|
||||
};
|
||||
|
||||
[SecureContext, Exposed=Window, Pref="dom.webxr.hands.enabled"]
|
||||
interface XRHand {
|
||||
readonly attribute long length;
|
||||
getter XRJointSpace(unsigned long index);
|
||||
iterable<XRHandJoint, XRJointSpace>;
|
||||
|
||||
const unsigned long WRIST = 0;
|
||||
const unsigned long THUMB_METACARPAL = 1;
|
||||
const unsigned long THUMB_PHALANX_PROXIMAL = 2;
|
||||
const unsigned long THUMB_PHALANX_DISTAL = 3;
|
||||
const unsigned long THUMB_PHALANX_TIP = 4;
|
||||
|
||||
const unsigned long INDEX_METACARPAL = 5;
|
||||
const unsigned long INDEX_PHALANX_PROXIMAL = 6;
|
||||
const unsigned long INDEX_PHALANX_INTERMEDIATE = 7;
|
||||
const unsigned long INDEX_PHALANX_DISTAL = 8;
|
||||
const unsigned long INDEX_PHALANX_TIP = 9;
|
||||
|
||||
const unsigned long MIDDLE_METACARPAL = 10;
|
||||
const unsigned long MIDDLE_PHALANX_PROXIMAL = 11;
|
||||
const unsigned long MIDDLE_PHALANX_INTERMEDIATE = 12;
|
||||
const unsigned long MIDDLE_PHALANX_DISTAL = 13;
|
||||
const unsigned long MIDDLE_PHALANX_TIP = 14;
|
||||
|
||||
const unsigned long RING_METACARPAL = 15;
|
||||
const unsigned long RING_PHALANX_PROXIMAL = 16;
|
||||
const unsigned long RING_PHALANX_INTERMEDIATE = 17;
|
||||
const unsigned long RING_PHALANX_DISTAL = 18;
|
||||
const unsigned long RING_PHALANX_TIP = 19;
|
||||
|
||||
const unsigned long LITTLE_METACARPAL = 20;
|
||||
const unsigned long LITTLE_PHALANX_PROXIMAL = 21;
|
||||
const unsigned long LITTLE_PHALANX_INTERMEDIATE = 22;
|
||||
const unsigned long LITTLE_PHALANX_DISTAL = 23;
|
||||
const unsigned long LITTLE_PHALANX_TIP = 24;
|
||||
readonly attribute unsigned long size;
|
||||
XRJointSpace get(XRHandJoint key);
|
||||
};
|
||||
|
|
|
@ -5,4 +5,6 @@
|
|||
// https://github.com/immersive-web/webxr-hands-input/blob/master/explainer.md
|
||||
|
||||
[SecureContext, Exposed=Window, Pref="dom.webxr.hands.enabled"]
|
||||
interface XRJointSpace: XRSpace {};
|
||||
interface XRJointSpace: XRSpace {
|
||||
readonly attribute XRHandJoint jointName;
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue