The XRInputSourceArray method forEach() executes the specified callback once for each input source in the array, starting at index 0 and progressing until the end of the list.
forEach(callback)
forEach(callback, thisArg)
This example snippet gets the list of inputs for a session and tries to handle each type of input device it supports using.
let inputSources = xrSession.inputSources;
inputSources.forEach((input) => {
if (input.gamepad) {
checkGamepad(input.gamepad);
} else if (
input.targetRayMode === "tracked-pointer" &&
input.handedness === player.handedness
) {
handleMainHandInput(input);
} else {
}
});
For each input in the list, the callback dispatches gamepad inputs to a checkGamepad() with the input's Gamepad object, taken from its gamepad property, as an input
For other devices, we look for tracked-pointer devices in the player's main hand, dispatching those to a handleMainHandInput() method.