Guest User

Untitled

a guest
Oct 18th, 2018
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.80 KB | None | 0 0
  1. interface XRControllerBinding {
  2. readonly attribue DOMString binding;
  3. readonly attribue DOMString[] actions;
  4. readonly attribue DOMString valueType; // "boolean, double, Float32Array"
  5. }
  6.  
  7. partial interface XRInputSource {
  8. readonly attribue DOMString id;
  9. readonly attribue sequence<XRControllerBinding> bindings;
  10. readonly object getBindings();
  11.  
  12. // If it fails to bind actions, for example there's no this binding, it returns false.
  13. boolean registerActionBinding(DOMString action, DOMString binding);
  14.  
  15. boolean getAction(DOMString action);
  16. double getAction(DOMString action);
  17. short getAction(DOMString action);
  18. Float32Array getAction(DOMString action);
  19.  
  20. void setAction(DOMString action, double value);
  21. void setAction(DOMString action, boolean value);
  22. void setAction(DOMString action, Float32Array value);
  23. };
  24.  
  25. --------------
  26. In Javascript:
  27.  
  28. function init() {
  29. let input = xrSession.getInputSources()[0];
  30. let bindings = input.bindings;
  31.  
  32. // The binding format would be
  33. // "bodyPart: {hand, foot, etc}"/
  34. // "side: {left or right}"/
  35. // "from: {input or output}"/
  36. // "item: {btn, axis, joystick, trackpad}"/
  37. // "eventType: {click, touch, value}"
  38. input.registerActionBinding("menu_select", "hand/left/input/btn_A/click");
  39. input.registerActionBinding("trigger_press", "hand/left/input/trigger/value");
  40. input.registerActionBinding("pose_value", "hand/left/input/pose/value");
  41. input.registerActionBinding("bone_count", "hand/left/input/skeleton/count");
  42. input.registerActionBinding("bone_matrix", "hand/left/input/skeleton/transform");
  43. input.registerActionBinding("haptics_value", "hand/left/output/haptics/value");
  44.  
  45. console.log(input.getBindings());
  46. }
  47. ---
  48. {
  49. {
  50. "binding", "hand/left/input/btn_A/click",
  51. "actions" : ["menu_select"],
  52. "valueType", "boolean"
  53. },
  54. {
  55. "binding", "hand/left/input/btn_A/touched",
  56. "valueType", "boolean"
  57. },
  58. {
  59. "binding", "hand/left/input/trigger/value",
  60. "actions" : ["trigger_press"],
  61. "valueType", "double"
  62. },
  63. {
  64. "binding", "hand/left/input/pose/value",
  65. "actions" : ["pose_value"],
  66. "valueType", "Float32Array"
  67. },
  68. {
  69. "binding", "hand/left/input/bone/count",
  70. "actions" : ["bone_count"],
  71. "valueType", "short"
  72. },
  73. {
  74. "binding", "hand/left/input/bone/transform",
  75. "actions" : ["bone_matrix"],
  76. "valueType", "Float32Array"
  77. },
  78. {
  79. "binding", "hand/left/output/haptics/value",
  80. "actions" : ["haptics_value"],
  81. "valueType", "Float32Array"
  82. }
  83. }
  84. ---
  85.  
  86. function gameloop() {
  87. if (input.getAction("menu_select") == true) {
  88. // ...
  89. }
  90.  
  91. let trigger_value = input.getAction("trigger_value");
  92. let pose = input.getAction("pose_value");
  93. let bone_count = input.getAction("bone_count");
  94. let bone_matrix = input.getAction("bone_matrix");
  95.  
  96. input.setAction("haptics_value", new Float32Array([0.1, 3000]));
  97. }
Add Comment
Please, Sign In to add comment