export class HandPoseParams extends BasePoseParams { constructor(engine: any); myFixTrackedHandRotation: boolean; /** * This can be used to make it so that when you put down the gamepads and tracked hands would be picked, * the gamepads will still being used (if they exists) for a bit more before switching to hands (if they are still the best option) */ mySwitchToTrackedHandDelayEnabled: boolean; mySwitchToTrackedHandDelay: number; /** * Sadly, it can happen that when the game switches to hand tracking and we want to use the gamepad, the gamepad is * not available in the tracked sources for a few frames * * This make it so that, if the gamepad becomes available during this amount of frames, * it will be picked, otherwise it will switch to whatever input source is available at the moment * * In the meantime the input source will be `null` and not the tracked hand, to avoid activating tracked hand features, * just for a small amount of frames */ _mySwitchToTrackedHandDelayKeepCheckingForGamepadFrameCounter: number; /** * While {@link _mySwitchToTrackedHandDelayKeepCheckingForGamepadFrameCounter} is being used to check for the gamepad to become available, * you will end up with a `null` input source * * This "risky" fix keeps the gamepad previous references anyway for that amount of frames * * This reference might be not valid anymore tho, even if it seems to always be working, * which is why it is marked as "risky", even though it seems to normally be ok */ mySwitchToTrackedHandDelayNoInputSourceRiskyFixEnabled: boolean; } export class HandPose extends BasePose { constructor(handedness: any, handPoseParams?: HandPoseParams); _myHandedness: any; _myFixTrackedHandRotation: boolean; _myRealInputSource: any; _myInputSource: any; _myTrackedHand: boolean; _myInputSourcesChangeEventListener: (() => void) | null; _myVisibilityChangeEventListener: (() => void) | null; _mySwitchToTrackedHandDelayEnabled: boolean; _mySwitchToTrackedHandDelay: number; _mySwitchToTrackedHandDelayKeepCheckingForGamepadFrameCounter: number; _mySwitchToTrackedHandDelayNoInputSourceRiskyFixEnabled: boolean; _myDisableSwitchToTrackedHandDelaySessionChangeFrameCounter: number; _myDisableSwitchToTrackedHandDelaySessionChangeTimer: Timer; _myCurrentSwitchToTrackedHandDelayKeepCheckingForGamepadFrameCounter: number; _mySwitchToTrackedHandTimer: Timer; getHandedness(): any; getInputSource(): any; getInputSourceType(): InputSourceType | null; getInputSourceReal(): any; getInputSourceTypeReal(): InputSourceType | null; isFixTrackedHandRotation(): boolean; setFixTrackedHandRotation(fixTrackedHandRotation: any): void; isSwitchToTrackedHandDelayEnabled(): boolean; setSwitchToTrackedHandDelayEnabled(switchToTrackedHandDelayEnabled: any): void; getSwitchToTrackedHandDelay(): number; setSwitchToTrackedHandDelay(switchToTrackedHandDelay: any): void; getSwitchToTrackedHandDelayKeepCheckingForGamepadFrameCounter(): number; setSwitchToTrackedHandDelayKeepCheckingForGamepadFrameCounter(switchToTrackedHandDelayKeepCheckingForGamepadFrameCounter: any): void; isSwitchToTrackedHandDelayNoInputSourceRiskyFixEnabled(): boolean; setSwitchToTrackedHandDelayNoInputSourceRiskyFixEnabled(switchToTrackedHandDelayNoInputSourceRiskyFixEnabled: any): void; _getPose(xrFrame: any): any; _preUpdate(dt: any): void; } import { BasePoseParams } from "./base_pose.js"; import { BasePose } from "./base_pose.js"; import { Timer } from "../../cauldron/cauldron/timer.js"; import { InputSourceType } from "../cauldron/input_types.js";