Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- interface XRControllerBinding {
- readonly attribue DOMString binding;
- readonly attribue DOMString[] actions;
- readonly attribue DOMString valueType; // "boolean, double, Float32Array"
- }
- partial interface XRInputSource {
- readonly attribue DOMString id;
- readonly attribue sequence<XRControllerBinding> bindings;
- readonly object getBindings();
- // If it fails to bind actions, for example there's no this binding, it returns false.
- boolean registerActionBinding(DOMString action, DOMString binding);
- boolean getAction(DOMString action);
- double getAction(DOMString action);
- short getAction(DOMString action);
- Float32Array getAction(DOMString action);
- void setAction(DOMString action, double value);
- void setAction(DOMString action, boolean value);
- void setAction(DOMString action, Float32Array value);
- };
- --------------
- In Javascript:
- function init() {
- let input = xrSession.getInputSources()[0];
- let bindings = input.bindings;
- // The binding format would be
- // "bodyPart: {hand, foot, etc}"/
- // "side: {left or right}"/
- // "from: {input or output}"/
- // "item: {btn, axis, joystick, trackpad}"/
- // "eventType: {click, touch, value}"
- input.registerActionBinding("menu_select", "hand/left/input/btn_A/click");
- input.registerActionBinding("trigger_press", "hand/left/input/trigger/value");
- input.registerActionBinding("pose_value", "hand/left/input/pose/value");
- input.registerActionBinding("bone_count", "hand/left/input/skeleton/count");
- input.registerActionBinding("bone_matrix", "hand/left/input/skeleton/transform");
- input.registerActionBinding("haptics_value", "hand/left/output/haptics/value");
- console.log(input.getBindings());
- }
- ---
- {
- {
- "binding", "hand/left/input/btn_A/click",
- "actions" : ["menu_select"],
- "valueType", "boolean"
- },
- {
- "binding", "hand/left/input/btn_A/touched",
- "valueType", "boolean"
- },
- {
- "binding", "hand/left/input/trigger/value",
- "actions" : ["trigger_press"],
- "valueType", "double"
- },
- {
- "binding", "hand/left/input/pose/value",
- "actions" : ["pose_value"],
- "valueType", "Float32Array"
- },
- {
- "binding", "hand/left/input/bone/count",
- "actions" : ["bone_count"],
- "valueType", "short"
- },
- {
- "binding", "hand/left/input/bone/transform",
- "actions" : ["bone_matrix"],
- "valueType", "Float32Array"
- },
- {
- "binding", "hand/left/output/haptics/value",
- "actions" : ["haptics_value"],
- "valueType", "Float32Array"
- }
- }
- ---
- function gameloop() {
- if (input.getAction("menu_select") == true) {
- // ...
- }
- let trigger_value = input.getAction("trigger_value");
- let pose = input.getAction("pose_value");
- let bone_count = input.getAction("bone_count");
- let bone_matrix = input.getAction("bone_matrix");
- input.setAction("haptics_value", new Float32Array([0.1, 3000]));
- }
Add Comment
Please, Sign In to add comment