@aura3d/input 2.0.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import { InputSnapshot } from "./InputSnapshot";
1
+ import { InputSnapshot } from "./InputSnapshot.js";
2
2
  export type ActionBinding = {
3
3
  readonly type: "keyboard";
4
4
  readonly code: string;
@@ -1,4 +1,4 @@
1
- import type { GamepadSnapshot } from "./InputSnapshot";
1
+ import type { GamepadSnapshot } from "./InputSnapshot.js";
2
2
  export interface GamepadButtonLike {
3
3
  readonly pressed: boolean;
4
4
  readonly value: number;
@@ -1,3 +1,3 @@
1
- export { GamepadDevice as GamepadInput } from "./GamepadDevice";
2
- export type { GamepadButtonLike, GamepadLike } from "./GamepadDevice";
1
+ export { GamepadDevice as GamepadInput } from "./GamepadDevice.js";
2
+ export type { GamepadButtonLike, GamepadLike } from "./GamepadDevice.js";
3
3
  //# sourceMappingURL=GamepadInput.d.ts.map
@@ -1,3 +1,3 @@
1
- export { GestureRecognizer as GestureControls } from "./GestureRecognizer";
2
- export type { Gesture } from "./GestureRecognizer";
1
+ export { GestureRecognizer as GestureControls } from "./GestureRecognizer.js";
2
+ export type { Gesture } from "./GestureRecognizer.js";
3
3
  //# sourceMappingURL=GestureControls.d.ts.map
@@ -1,4 +1,4 @@
1
- import type { InputSnapshot } from "./InputSnapshot";
1
+ import type { InputSnapshot } from "./InputSnapshot.js";
2
2
  export type Gesture = {
3
3
  readonly type: "tap";
4
4
  readonly x: number;
@@ -1,8 +1,8 @@
1
- import { ActionMap } from "./ActionMap";
2
- import { GamepadDevice, type GamepadLike } from "./GamepadDevice";
3
- import { InputSnapshot } from "./InputSnapshot";
4
- import { KeyboardDevice } from "./KeyboardDevice";
5
- import { PointerDevice } from "./PointerDevice";
1
+ import { ActionMap } from "./ActionMap.js";
2
+ import { GamepadDevice, type GamepadLike } from "./GamepadDevice.js";
3
+ import { InputSnapshot } from "./InputSnapshot.js";
4
+ import { KeyboardDevice } from "./KeyboardDevice.js";
5
+ import { PointerDevice } from "./PointerDevice.js";
6
6
  export interface InputEventTargetLike {
7
7
  addEventListener(type: string, listener: EventListener): void;
8
8
  removeEventListener(type: string, listener: EventListener): void;
@@ -1,6 +1,6 @@
1
1
  import type { Ray } from "@aura3d/math";
2
2
  import type { SceneNode } from "@aura3d/scene";
3
- import type { InputSnapshot } from "./InputSnapshot";
3
+ import type { InputSnapshot } from "./InputSnapshot.js";
4
4
  type Tuple3 = readonly [number, number, number];
5
5
  export interface InteractionBounds {
6
6
  readonly min: Tuple3;
@@ -1,4 +1,4 @@
1
- import type { PointerTouch } from "./InputSnapshot";
1
+ import type { PointerTouch } from "./InputSnapshot.js";
2
2
  export interface PointerEventLike {
3
3
  readonly clientX: number;
4
4
  readonly clientY: number;
@@ -1,4 +1,4 @@
1
- import type { CameraTransformLike, Vec3Like } from "./ControlTypes";
1
+ import type { CameraTransformLike, Vec3Like } from "./ControlTypes.js";
2
2
  export interface CameraRigState {
3
3
  readonly position: Vec3Like;
4
4
  readonly target?: Vec3Like;
@@ -1,5 +1,5 @@
1
- import type { InputSnapshot } from "../InputSnapshot";
2
- import { type CameraTransformLike } from "./ControlTypes";
1
+ import type { InputSnapshot } from "../InputSnapshot.js";
2
+ import { type CameraTransformLike } from "./ControlTypes.js";
3
3
  export interface EditorFlyControlsOptions {
4
4
  readonly baseSpeed?: number;
5
5
  readonly fastMultiplier?: number;
@@ -1,5 +1,5 @@
1
- import type { InputSnapshot } from "../InputSnapshot";
2
- import { type CameraTransformLike } from "./ControlTypes";
1
+ import type { InputSnapshot } from "../InputSnapshot.js";
2
+ import { type CameraTransformLike } from "./ControlTypes.js";
3
3
  export interface FirstPersonControlsOptions {
4
4
  readonly moveSpeed?: number;
5
5
  readonly lookSpeed?: number;
@@ -1,5 +1,5 @@
1
- import type { InputSnapshot } from "../InputSnapshot";
2
- import { type CameraTransformLike, type Vec3Like } from "./ControlTypes";
1
+ import type { InputSnapshot } from "../InputSnapshot.js";
2
+ import { type CameraTransformLike, type Vec3Like } from "./ControlTypes.js";
3
3
  export declare const DEFAULT_ORBIT_MAX_POLAR: number;
4
4
  export interface OrbitControlsOptions {
5
5
  readonly enabled?: boolean;
@@ -1,6 +1,6 @@
1
- import { InputSnapshot } from "../InputSnapshot";
2
- import { FirstPersonControls, type FirstPersonControlsOptions } from "./FirstPersonControls";
3
- import type { CameraTransformLike } from "./ControlTypes";
1
+ import { InputSnapshot } from "../InputSnapshot.js";
2
+ import { FirstPersonControls, type FirstPersonControlsOptions } from "./FirstPersonControls.js";
3
+ import type { CameraTransformLike } from "./ControlTypes.js";
4
4
  export declare class PointerLockControls extends FirstPersonControls {
5
5
  locked: boolean;
6
6
  constructor(camera: CameraTransformLike, options?: FirstPersonControlsOptions);
@@ -1,5 +1,5 @@
1
1
  import { type Camera } from "@aura3d/scene";
2
- import { type CameraTransformLike, type EulerLike, type Vec3Like } from "./ControlTypes";
2
+ import { type CameraTransformLike, type EulerLike, type Vec3Like } from "./ControlTypes.js";
3
3
  export interface SceneCameraControlAdapter extends CameraTransformLike {
4
4
  readonly camera: Camera;
5
5
  readonly position: Vec3Like;
@@ -1,4 +1,4 @@
1
- import { type CameraTransformLike, type Vec3Like } from "./ControlTypes";
1
+ import { type CameraTransformLike, type Vec3Like } from "./ControlTypes.js";
2
2
  export interface ThirdPersonFollowControlsOptions {
3
3
  readonly offset?: Vec3Like;
4
4
  readonly damping?: number;
package/dist/index.d.ts CHANGED
@@ -1,43 +1,43 @@
1
- export { ActionMap } from "./ActionMap";
2
- export type { ActionBinding, AxisBinding } from "./ActionMap";
3
- export { GamepadDevice } from "./GamepadDevice";
4
- export type { GamepadButtonLike, GamepadLike } from "./GamepadDevice";
5
- export { GestureRecognizer } from "./GestureRecognizer";
6
- export type { Gesture } from "./GestureRecognizer";
7
- export { InputSnapshot } from "./InputSnapshot";
8
- export type { ButtonState, GamepadSnapshot, InputSnapshotOptions, PointerSnapshot, PointerTouch } from "./InputSnapshot";
9
- export { processInputValue } from "./InputValueProcessors";
10
- export type { InputValueProcessor } from "./InputValueProcessors";
11
- export { InputPlayback, InputRecorder, parseInputRecording } from "./InputReplay";
12
- export type { InputPlaybackOptions, InputPlaybackSnapshot, InputRecording, InputRecordingMetadata, InputReplayEvent, InputReplayEventType } from "./InputReplay";
13
- export { InputSystem } from "./InputSystem";
14
- export type { InputEventTargetLike } from "./InputSystem";
15
- export { InteractionSystem } from "./InteractionSystem";
16
- export type { InteractionBounds, InteractionEvent, InteractionEventType, InteractionHit, InteractionListener, InteractionRayProvider, InteractionTarget, InteractionTargetProvider } from "./InteractionSystem";
17
- export { KeyboardDevice } from "./KeyboardDevice";
18
- export type { KeyboardEventLike } from "./KeyboardDevice";
19
- export { pickingRayFromCamera } from "./PickingRay";
20
- export type { PickingRayViewport } from "./PickingRay";
21
- export { PointerDevice } from "./PointerDevice";
22
- export type { PointerEventLike, WheelEventLike } from "./PointerDevice";
23
- export { VirtualTouchJoystick, sampleVirtualTouchJoystickFixture } from "./VirtualTouchControls";
24
- export type { VirtualJoystickConfig, VirtualTouchJoystickSnapshot, VirtualTouchPoint } from "./VirtualTouchControls";
25
- export { WebXRSessionController } from "./WebXRSessionController";
26
- export type { A3DXRFrameLike, A3DXRHandedness, A3DXRHitTestResultLike, A3DXRInputSourceLike, A3DXRPoseLike, A3DXRReferenceSpaceLike, A3DXRReferenceSpaceType, A3DXRSessionInit, A3DXRSessionLike, A3DXRSessionMode, A3DXRSystemLike, WebXRControllerSample, WebXRFrameSample, WebXRHitTestSample, WebXRSessionControllerOptions, WebXRSessionStartResult } from "./WebXRSessionController";
1
+ export { ActionMap } from "./ActionMap.js";
2
+ export type { ActionBinding, AxisBinding } from "./ActionMap.js";
3
+ export { GamepadDevice } from "./GamepadDevice.js";
4
+ export type { GamepadButtonLike, GamepadLike } from "./GamepadDevice.js";
5
+ export { GestureRecognizer } from "./GestureRecognizer.js";
6
+ export type { Gesture } from "./GestureRecognizer.js";
7
+ export { InputSnapshot } from "./InputSnapshot.js";
8
+ export type { ButtonState, GamepadSnapshot, InputSnapshotOptions, PointerSnapshot, PointerTouch } from "./InputSnapshot.js";
9
+ export { processInputValue } from "./InputValueProcessors.js";
10
+ export type { InputValueProcessor } from "./InputValueProcessors.js";
11
+ export { InputPlayback, InputRecorder, parseInputRecording } from "./InputReplay.js";
12
+ export type { InputPlaybackOptions, InputPlaybackSnapshot, InputRecording, InputRecordingMetadata, InputReplayEvent, InputReplayEventType } from "./InputReplay.js";
13
+ export { InputSystem } from "./InputSystem.js";
14
+ export type { InputEventTargetLike } from "./InputSystem.js";
15
+ export { InteractionSystem } from "./InteractionSystem.js";
16
+ export type { InteractionBounds, InteractionEvent, InteractionEventType, InteractionHit, InteractionListener, InteractionRayProvider, InteractionTarget, InteractionTargetProvider } from "./InteractionSystem.js";
17
+ export { KeyboardDevice } from "./KeyboardDevice.js";
18
+ export type { KeyboardEventLike } from "./KeyboardDevice.js";
19
+ export { pickingRayFromCamera } from "./PickingRay.js";
20
+ export type { PickingRayViewport } from "./PickingRay.js";
21
+ export { PointerDevice } from "./PointerDevice.js";
22
+ export type { PointerEventLike, WheelEventLike } from "./PointerDevice.js";
23
+ export { VirtualTouchJoystick, sampleVirtualTouchJoystickFixture } from "./VirtualTouchControls.js";
24
+ export type { VirtualJoystickConfig, VirtualTouchJoystickSnapshot, VirtualTouchPoint } from "./VirtualTouchControls.js";
25
+ export { WebXRSessionController } from "./WebXRSessionController.js";
26
+ export type { A3DXRFrameLike, A3DXRHandedness, A3DXRHitTestResultLike, A3DXRInputSourceLike, A3DXRPoseLike, A3DXRReferenceSpaceLike, A3DXRReferenceSpaceType, A3DXRSessionInit, A3DXRSessionLike, A3DXRSessionMode, A3DXRSystemLike, WebXRControllerSample, WebXRFrameSample, WebXRHitTestSample, WebXRSessionControllerOptions, WebXRSessionStartResult } from "./WebXRSessionController.js";
27
27
  export * from "./GamepadInput.js";
28
28
  export * from "./GestureControls.js";
29
29
  export * from "./controls/PointerLockControls.js";
30
- export { CameraRig } from "./controls/CameraRig";
31
- export type { CameraRigState } from "./controls/CameraRig";
32
- export type { CameraTransformLike, EulerLike, Vec3Like } from "./controls/ControlTypes";
33
- export { createSceneCameraControlAdapter } from "./controls/SceneCameraAdapter";
34
- export type { SceneCameraControlAdapter } from "./controls/SceneCameraAdapter";
35
- export { EditorFlyControls } from "./controls/EditorFlyControls";
36
- export type { EditorFlyControlsOptions } from "./controls/EditorFlyControls";
37
- export { FirstPersonControls } from "./controls/FirstPersonControls";
38
- export type { FirstPersonControlsOptions } from "./controls/FirstPersonControls";
39
- export { DEFAULT_ORBIT_MAX_POLAR, OrbitControls } from "./controls/OrbitControls";
40
- export type { OrbitControlsOptions } from "./controls/OrbitControls";
41
- export { ThirdPersonFollowControls } from "./controls/ThirdPersonFollowControls";
42
- export type { ThirdPersonFollowControlsOptions } from "./controls/ThirdPersonFollowControls";
30
+ export { CameraRig } from "./controls/CameraRig.js";
31
+ export type { CameraRigState } from "./controls/CameraRig.js";
32
+ export type { CameraTransformLike, EulerLike, Vec3Like } from "./controls/ControlTypes.js";
33
+ export { createSceneCameraControlAdapter } from "./controls/SceneCameraAdapter.js";
34
+ export type { SceneCameraControlAdapter } from "./controls/SceneCameraAdapter.js";
35
+ export { EditorFlyControls } from "./controls/EditorFlyControls.js";
36
+ export type { EditorFlyControlsOptions } from "./controls/EditorFlyControls.js";
37
+ export { FirstPersonControls } from "./controls/FirstPersonControls.js";
38
+ export type { FirstPersonControlsOptions } from "./controls/FirstPersonControls.js";
39
+ export { DEFAULT_ORBIT_MAX_POLAR, OrbitControls } from "./controls/OrbitControls.js";
40
+ export type { OrbitControlsOptions } from "./controls/OrbitControls.js";
41
+ export { ThirdPersonFollowControls } from "./controls/ThirdPersonFollowControls.js";
42
+ export type { ThirdPersonFollowControlsOptions } from "./controls/ThirdPersonFollowControls.js";
43
43
  //# sourceMappingURL=index.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aura3d/input",
3
- "version": "2.0.0",
3
+ "version": "2.0.1",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -11,8 +11,8 @@
11
11
  "main": "./dist/index.js",
12
12
  "types": "./dist/index.d.ts",
13
13
  "dependencies": {
14
- "@aura3d/math": "2.0.0",
15
- "@aura3d/scene": "2.0.0"
14
+ "@aura3d/math": "2.0.1",
15
+ "@aura3d/scene": "2.0.1"
16
16
  },
17
17
  "description": "Keyboard, pointer, gamepad, gesture, action-map, picking-ray, interaction, and camera-control runtime contracts for Aura3D.",
18
18
  "keywords": [
@@ -1,57 +0,0 @@
1
- export type GestureHapticsGestureType = "tap" | "pan" | "pinch" | "swipe" | "rotate";
2
- export type GestureHapticsPatternName = "tap" | "impact" | "damage" | "success" | "engine";
3
- export interface GestureHapticsFixtureOptions {
4
- readonly seed?: number;
5
- readonly pointerDeltaX?: number;
6
- readonly pointerDeltaY?: number;
7
- readonly pinchStartDistance?: number;
8
- readonly pinchEndDistance?: number;
9
- readonly rotateDegrees?: number;
10
- readonly gamepadConnected?: boolean;
11
- }
12
- export interface GestureHapticsFixture {
13
- readonly source: "origin-master-input-gesture-rumble-adapted";
14
- readonly gestures: readonly {
15
- readonly type: GestureHapticsGestureType;
16
- readonly state: "possible" | "began" | "changed" | "ended";
17
- readonly touchCount: number;
18
- readonly center: readonly [number, number];
19
- readonly distance?: number;
20
- readonly velocity?: readonly [number, number];
21
- readonly scale?: number;
22
- readonly rotationDegrees?: number;
23
- }[];
24
- readonly gestureSummary: {
25
- readonly tapDetected: boolean;
26
- readonly panDistance: number;
27
- readonly pinchScale: number;
28
- readonly swipeDirection: "left" | "right" | "up" | "down";
29
- readonly rotateDegrees: number;
30
- };
31
- readonly haptics: {
32
- readonly gamepadConnected: boolean;
33
- readonly hapticsClaimed: false;
34
- readonly patterns: readonly {
35
- readonly name: GestureHapticsPatternName;
36
- readonly steps: number;
37
- readonly totalDurationMs: number;
38
- readonly peakWeak: number;
39
- readonly peakStrong: number;
40
- readonly loop: boolean;
41
- }[];
42
- readonly queuedPatterns: number;
43
- readonly totalDurationMs: number;
44
- readonly intensityMultiplier: number;
45
- };
46
- readonly productionReadiness: {
47
- readonly gestureTelemetry: true;
48
- readonly swipeRotateTelemetry: true;
49
- readonly hapticPatternTelemetry: true;
50
- readonly hapticClaimBoundaryTelemetry: true;
51
- };
52
- readonly blockedClaims: readonly string[];
53
- readonly claimBoundary: string;
54
- readonly hash: string;
55
- }
56
- export declare function sampleGestureHapticsFixture(options?: GestureHapticsFixtureOptions): GestureHapticsFixture;
57
- //# sourceMappingURL=GestureHapticsFixtures.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GestureHapticsFixtures.d.ts","sourceRoot":"","sources":["../../../../packages/input/src/GestureHapticsFixtures.ts"],"names":[],"mappings":"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"}
@@ -1,115 +0,0 @@
1
- export function sampleGestureHapticsFixture(options = {}) {
2
- const seed = normalizeSeed(options.seed ?? 0x9e57);
3
- const pointerDeltaX = finite(options.pointerDeltaX ?? 84, "pointerDeltaX");
4
- const pointerDeltaY = finite(options.pointerDeltaY ?? 18, "pointerDeltaY");
5
- const pinchStartDistance = positive(options.pinchStartDistance ?? 42, "pinchStartDistance");
6
- const pinchEndDistance = positive(options.pinchEndDistance ?? 76, "pinchEndDistance");
7
- const rotateDegrees = finite(options.rotateDegrees ?? 28, "rotateDegrees");
8
- const panDistance = Number(Math.hypot(pointerDeltaX, pointerDeltaY).toFixed(3));
9
- const pinchScale = Number((pinchEndDistance / pinchStartDistance).toFixed(3));
10
- const swipeDirection = Math.abs(pointerDeltaX) >= Math.abs(pointerDeltaY)
11
- ? pointerDeltaX >= 0 ? "right" : "left"
12
- : pointerDeltaY >= 0 ? "down" : "up";
13
- const patterns = [
14
- hapticPattern("tap", [{ weak: 0.3, strong: 0.2, duration: 50 }], false),
15
- hapticPattern("impact", [{ weak: 0.7, strong: 0.8, duration: 100 }], false),
16
- hapticPattern("damage", [
17
- { weak: 0.8, strong: 0.9, duration: 80 },
18
- { weak: 0, strong: 0, duration: 40 },
19
- { weak: 0.6, strong: 0.7, duration: 60 }
20
- ], false),
21
- hapticPattern("success", [
22
- { weak: 0.3, strong: 0.3, duration: 80 },
23
- { weak: 0, strong: 0, duration: 50 },
24
- { weak: 0.4, strong: 0.4, duration: 100 }
25
- ], false),
26
- hapticPattern("engine", [
27
- { weak: 0.3, strong: 0.2, duration: 50 },
28
- { weak: 0.35, strong: 0.25, duration: 50 }
29
- ], true)
30
- ];
31
- const fixture = {
32
- source: "origin-master-input-gesture-rumble-adapted",
33
- gestures: [
34
- { type: "tap", state: "ended", touchCount: 1, center: [16, 22] },
35
- { type: "pan", state: "changed", touchCount: 1, center: [42, 38], distance: panDistance, velocity: [pointerDeltaX, pointerDeltaY] },
36
- { type: "pinch", state: "changed", touchCount: 2, center: [64, 64], distance: pinchEndDistance, scale: pinchScale },
37
- { type: "swipe", state: "ended", touchCount: 1, center: [120, 64], distance: panDistance, velocity: [pointerDeltaX * 8, pointerDeltaY * 8] },
38
- { type: "rotate", state: "changed", touchCount: 2, center: [64, 64], rotationDegrees: Number(rotateDegrees.toFixed(3)) }
39
- ],
40
- gestureSummary: {
41
- tapDetected: true,
42
- panDistance,
43
- pinchScale,
44
- swipeDirection,
45
- rotateDegrees: Number(rotateDegrees.toFixed(3))
46
- },
47
- haptics: {
48
- gamepadConnected: options.gamepadConnected ?? true,
49
- hapticsClaimed: false,
50
- patterns,
51
- queuedPatterns: 3 + Math.floor(seededUnit(seed) * 2),
52
- totalDurationMs: patterns.reduce((sum, pattern) => sum + pattern.totalDurationMs, 0),
53
- intensityMultiplier: Number((0.65 + seededUnit(seed ^ 0x54c) * 0.25).toFixed(3))
54
- },
55
- productionReadiness: {
56
- gestureTelemetry: true,
57
- swipeRotateTelemetry: true,
58
- hapticPatternTelemetry: true,
59
- hapticClaimBoundaryTelemetry: true
60
- },
61
- blockedClaims: [
62
- "native mobile gesture recognizer parity",
63
- "gamepad haptic actuator delivery guarantee",
64
- "platform vibration permission handling",
65
- "Unity Input System haptics parity",
66
- "Unreal Enhanced Input haptics parity"
67
- ],
68
- claimBoundary: "This fixture ports old swipe/rotate gesture and rumble-pattern concepts into deterministic local input telemetry. It does not vibrate hardware, guarantee platform haptic delivery, or claim Unity Input System or Unreal Enhanced Input parity."
69
- };
70
- return {
71
- ...fixture,
72
- hash: stableHash(JSON.stringify(fixture))
73
- };
74
- }
75
- function hapticPattern(name, steps, loop) {
76
- return {
77
- name,
78
- steps: steps.length,
79
- totalDurationMs: steps.reduce((sum, step) => sum + step.duration, 0),
80
- peakWeak: Math.max(...steps.map((step) => step.weak)),
81
- peakStrong: Math.max(...steps.map((step) => step.strong)),
82
- loop
83
- };
84
- }
85
- function normalizeSeed(seed) {
86
- if (!Number.isInteger(seed) || seed < 0)
87
- throw new Error("seed must be a non-negative integer.");
88
- return seed >>> 0;
89
- }
90
- function finite(value, name) {
91
- if (!Number.isFinite(value))
92
- throw new Error(`${name} must be finite.`);
93
- return value;
94
- }
95
- function positive(value, name) {
96
- if (!Number.isFinite(value) || value <= 0)
97
- throw new Error(`${name} must be positive.`);
98
- return value;
99
- }
100
- function seededUnit(seed) {
101
- let value = seed >>> 0;
102
- value ^= value << 13;
103
- value ^= value >>> 17;
104
- value ^= value << 5;
105
- return (value >>> 0) / 0xffffffff;
106
- }
107
- function stableHash(value) {
108
- let hash = 2166136261;
109
- for (let index = 0; index < value.length; index += 1) {
110
- hash ^= value.charCodeAt(index);
111
- hash = Math.imul(hash, 16777619);
112
- }
113
- return (hash >>> 0).toString(16).padStart(8, "0");
114
- }
115
- //# sourceMappingURL=GestureHapticsFixtures.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GestureHapticsFixtures.js","sourceRoot":"","sources":["../../../../packages/input/src/GestureHapticsFixtures.ts"],"names":[],"mappings":"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"}
@@ -1,44 +0,0 @@
1
- export type InputValueProcessor = {
2
- readonly type: "deadzone";
3
- readonly threshold: number;
4
- } | {
5
- readonly type: "scale";
6
- readonly factor: number;
7
- } | {
8
- readonly type: "invert";
9
- } | {
10
- readonly type: "clamp";
11
- readonly min: number;
12
- readonly max: number;
13
- } | {
14
- readonly type: "exponential";
15
- readonly exponent: number;
16
- };
17
- export interface InputActionBindingFixture {
18
- readonly source: "origin-master-input-action-binding-adapted";
19
- readonly evidence: {
20
- readonly oldCodebasePort: true;
21
- readonly actionBindings: true;
22
- readonly processors: true;
23
- readonly holdTapDoubleTap: true;
24
- readonly compositeAxis: true;
25
- readonly modifierChord: true;
26
- };
27
- readonly actionCount: number;
28
- readonly bindingCount: number;
29
- readonly processorCount: number;
30
- readonly processedAxis: number;
31
- readonly deadzoneFilteredAxis: number;
32
- readonly compositeX: number;
33
- readonly compositeY: number;
34
- readonly compositeMagnitude: number;
35
- readonly holdTriggered: boolean;
36
- readonly holdDurationSeconds: number;
37
- readonly tapTriggered: boolean;
38
- readonly doubleTapTriggered: boolean;
39
- readonly modifierChordPressed: boolean;
40
- readonly claimBoundary: string;
41
- }
42
- export declare function processInputValue(value: number, processors: readonly InputValueProcessor[], deltaSeconds?: number): number;
43
- export declare function sampleInputActionBindingFixture(): InputActionBindingFixture;
44
- //# sourceMappingURL=InputActionBinding.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"InputActionBinding.d.ts","sourceRoot":"","sources":["../../../../packages/input/src/InputActionBinding.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,mBAAmB,GAC3B;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACzD;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GAC3B;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GACtE;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhE,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,MAAM,EAAE,4CAA4C,CAAC;IAC9D,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAC;QAC/B,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC;QAC9B,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC;QAC1B,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC;QAChC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC;QAC7B,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC;KAC9B,CAAC;IACF,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;IACrC,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAC;IACvC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,mBAAmB,EAAE,EAAE,YAAY,SAAS,GAAG,MAAM,CAiB1H;AAED,wBAAgB,+BAA+B,IAAI,yBAAyB,CAiD3E"}
@@ -1,86 +0,0 @@
1
- import { InputSnapshot } from "./InputSnapshot.js";
2
- export function processInputValue(value, processors, deltaSeconds = 1 / 60) {
3
- let result = finite(value, 0);
4
- for (const processor of processors) {
5
- if (processor.type === "deadzone") {
6
- result = Math.abs(result) < Math.max(0, processor.threshold) ? 0 : result;
7
- }
8
- else if (processor.type === "scale") {
9
- result *= finite(processor.factor, 1);
10
- }
11
- else if (processor.type === "invert") {
12
- result *= -1;
13
- }
14
- else if (processor.type === "clamp") {
15
- result = clamp(result, processor.min, processor.max);
16
- }
17
- else {
18
- const sign = Math.sign(result);
19
- result = sign * Math.pow(Math.abs(result), Math.max(0.01, finite(processor.exponent, 1))) * Math.max(0.001, deltaSeconds / (1 / 60));
20
- }
21
- }
22
- return Number(result.toFixed(4));
23
- }
24
- export function sampleInputActionBindingFixture() {
25
- const activeSnapshot = new InputSnapshot({
26
- keys: new Set(["ControlLeft", "KeyW", "KeyD"]),
27
- previousKeys: new Set(["ControlLeft", "KeyW"]),
28
- gamepads: [{
29
- id: "fixture-pad",
30
- index: 0,
31
- axes: [0.42, -0.74],
32
- buttons: [{ down: true, pressed: true, released: false }]
33
- }]
34
- });
35
- const processedAxis = processInputValue(activeSnapshot.gamepads[0]?.axes[0] ?? 0, [
36
- { type: "deadzone", threshold: 0.2 },
37
- { type: "scale", factor: 1.8 },
38
- { type: "clamp", min: -1, max: 1 }
39
- ]);
40
- const deadzoneFilteredAxis = processInputValue(0.08, [{ type: "deadzone", threshold: 0.2 }]);
41
- const compositeX = (activeSnapshot.key("KeyD").down ? 1 : 0) - (activeSnapshot.key("KeyA").down ? 1 : 0);
42
- const compositeY = (activeSnapshot.key("KeyW").down ? 1 : 0) - (activeSnapshot.key("KeyS").down ? 1 : 0);
43
- const holdDurationSeconds = Number((5 * 0.12).toFixed(2));
44
- const tapTriggered = evaluateTap(1.2, 1.34, 0.2);
45
- const doubleTapTriggered = evaluateDoubleTap([1.2, 1.34], 0.25);
46
- const modifierChordPressed = activeSnapshot.key("ControlLeft").down && activeSnapshot.key("KeyD").pressed;
47
- return {
48
- source: "origin-master-input-action-binding-adapted",
49
- evidence: {
50
- oldCodebasePort: true,
51
- actionBindings: true,
52
- processors: true,
53
- holdTapDoubleTap: true,
54
- compositeAxis: true,
55
- modifierChord: true
56
- },
57
- actionCount: 4,
58
- bindingCount: 8,
59
- processorCount: 3,
60
- processedAxis,
61
- deadzoneFilteredAxis,
62
- compositeX,
63
- compositeY,
64
- compositeMagnitude: Number(Math.hypot(compositeX, compositeY).toFixed(4)),
65
- holdTriggered: holdDurationSeconds >= 0.5,
66
- holdDurationSeconds,
67
- tapTriggered,
68
- doubleTapTriggered,
69
- modifierChordPressed,
70
- claimBoundary: "Bounded deterministic current-input evidence for old InputAction/InputBinding processors and interactions; this does not claim full input action asset, rebinding UI, or Unity Input System parity."
71
- };
72
- }
73
- function evaluateTap(pressedAtSeconds, releasedAtSeconds, tapSpeedSeconds) {
74
- return releasedAtSeconds >= pressedAtSeconds && releasedAtSeconds - pressedAtSeconds <= tapSpeedSeconds;
75
- }
76
- function evaluateDoubleTap(pressTimesSeconds, maxIntervalSeconds) {
77
- return pressTimesSeconds.length >= 2 && (pressTimesSeconds.at(-1) ?? 0) - (pressTimesSeconds.at(-2) ?? 0) <= maxIntervalSeconds;
78
- }
79
- function finite(value, fallback) {
80
- const number = Number(value);
81
- return Number.isFinite(number) ? number : fallback;
82
- }
83
- function clamp(value, min, max) {
84
- return Math.max(min, Math.min(max, value));
85
- }
86
- //# sourceMappingURL=InputActionBinding.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"InputActionBinding.js","sourceRoot":"","sources":["../../../../packages/input/src/InputActionBinding.ts"],"names":[],"mappings":"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"}
@@ -1,52 +0,0 @@
1
- export type InputValueProcessor = {
2
- readonly type: "deadzone";
3
- readonly threshold: number;
4
- } | {
5
- readonly type: "scale";
6
- readonly factor: number;
7
- } | {
8
- readonly type: "invert";
9
- } | {
10
- readonly type: "clamp";
11
- readonly min: number;
12
- readonly max: number;
13
- } | {
14
- readonly type: "exponential";
15
- readonly exponent: number;
16
- };
17
- export interface InputActionBindingFixture {
18
- readonly source: "origin-master-input-action-binding-adapted";
19
- readonly evidence: {
20
- readonly oldCodebasePort: true;
21
- readonly actionBindings: true;
22
- readonly processors: true;
23
- readonly holdTapDoubleTap: true;
24
- readonly compositeAxis: true;
25
- readonly modifierChord: true;
26
- };
27
- readonly actionCount: number;
28
- readonly bindingCount: number;
29
- readonly processorCount: number;
30
- readonly processedAxis: number;
31
- readonly deadzoneFilteredAxis: number;
32
- readonly compositeX: number;
33
- readonly compositeY: number;
34
- readonly compositeMagnitude: number;
35
- readonly holdTriggered: boolean;
36
- readonly holdDurationSeconds: number;
37
- readonly tapTriggered: boolean;
38
- readonly doubleTapTriggered: boolean;
39
- readonly modifierChordPressed: boolean;
40
- readonly claimBoundary: string;
41
- }
42
- /**
43
- * @deprecated Retained for v1.x compatibility. Prefer `ActionMap` bindings for
44
- * runtime input; this helper only applies a deterministic processor sequence.
45
- */
46
- export declare function processInputValue(value: number, processors: readonly InputValueProcessor[], deltaSeconds?: number): number;
47
- /**
48
- * @deprecated Retained so the published v1.5 API remains import-compatible.
49
- * This deterministic sample is diagnostic evidence, not a runtime parity claim.
50
- */
51
- export declare function sampleInputActionBindingFixture(): InputActionBindingFixture;
52
- //# sourceMappingURL=InputActionBindingFixtures.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"InputActionBindingFixtures.d.ts","sourceRoot":"","sources":["../../../../packages/input/src/InputActionBindingFixtures.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,mBAAmB,GAC3B;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACzD;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GAC3B;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GACtE;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhE,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,MAAM,EAAE,4CAA4C,CAAC;IAC9D,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAC;QAC/B,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC;QAC9B,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC;QAC1B,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC;QAChC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC;QAC7B,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC;KAC9B,CAAC;IACF,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;IACrC,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAC;IACvC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,mBAAmB,EAAE,EAAE,YAAY,SAAS,GAAG,MAAM,CAiB1H;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,IAAI,yBAAyB,CAiD3E"}
@@ -1,94 +0,0 @@
1
- import { InputSnapshot } from "./InputSnapshot.js";
2
- /**
3
- * @deprecated Retained for v1.x compatibility. Prefer `ActionMap` bindings for
4
- * runtime input; this helper only applies a deterministic processor sequence.
5
- */
6
- export function processInputValue(value, processors, deltaSeconds = 1 / 60) {
7
- let result = finite(value, 0);
8
- for (const processor of processors) {
9
- if (processor.type === "deadzone") {
10
- result = Math.abs(result) < Math.max(0, processor.threshold) ? 0 : result;
11
- }
12
- else if (processor.type === "scale") {
13
- result *= finite(processor.factor, 1);
14
- }
15
- else if (processor.type === "invert") {
16
- result *= -1;
17
- }
18
- else if (processor.type === "clamp") {
19
- result = clamp(result, processor.min, processor.max);
20
- }
21
- else {
22
- const sign = Math.sign(result);
23
- result = sign * Math.pow(Math.abs(result), Math.max(0.01, finite(processor.exponent, 1))) * Math.max(0.001, deltaSeconds / (1 / 60));
24
- }
25
- }
26
- return Number(result.toFixed(4));
27
- }
28
- /**
29
- * @deprecated Retained so the published v1.5 API remains import-compatible.
30
- * This deterministic sample is diagnostic evidence, not a runtime parity claim.
31
- */
32
- export function sampleInputActionBindingFixture() {
33
- const activeSnapshot = new InputSnapshot({
34
- keys: new Set(["ControlLeft", "KeyW", "KeyD"]),
35
- previousKeys: new Set(["ControlLeft", "KeyW"]),
36
- gamepads: [{
37
- id: "fixture-pad",
38
- index: 0,
39
- axes: [0.42, -0.74],
40
- buttons: [{ down: true, pressed: true, released: false }]
41
- }]
42
- });
43
- const processedAxis = processInputValue(activeSnapshot.gamepads[0]?.axes[0] ?? 0, [
44
- { type: "deadzone", threshold: 0.2 },
45
- { type: "scale", factor: 1.8 },
46
- { type: "clamp", min: -1, max: 1 }
47
- ]);
48
- const deadzoneFilteredAxis = processInputValue(0.08, [{ type: "deadzone", threshold: 0.2 }]);
49
- const compositeX = (activeSnapshot.key("KeyD").down ? 1 : 0) - (activeSnapshot.key("KeyA").down ? 1 : 0);
50
- const compositeY = (activeSnapshot.key("KeyW").down ? 1 : 0) - (activeSnapshot.key("KeyS").down ? 1 : 0);
51
- const holdDurationSeconds = Number((5 * 0.12).toFixed(2));
52
- const tapTriggered = evaluateTap(1.2, 1.34, 0.2);
53
- const doubleTapTriggered = evaluateDoubleTap([1.2, 1.34], 0.25);
54
- const modifierChordPressed = activeSnapshot.key("ControlLeft").down && activeSnapshot.key("KeyD").pressed;
55
- return {
56
- source: "origin-master-input-action-binding-adapted",
57
- evidence: {
58
- oldCodebasePort: true,
59
- actionBindings: true,
60
- processors: true,
61
- holdTapDoubleTap: true,
62
- compositeAxis: true,
63
- modifierChord: true
64
- },
65
- actionCount: 4,
66
- bindingCount: 8,
67
- processorCount: 3,
68
- processedAxis,
69
- deadzoneFilteredAxis,
70
- compositeX,
71
- compositeY,
72
- compositeMagnitude: Number(Math.hypot(compositeX, compositeY).toFixed(4)),
73
- holdTriggered: holdDurationSeconds >= 0.5,
74
- holdDurationSeconds,
75
- tapTriggered,
76
- doubleTapTriggered,
77
- modifierChordPressed,
78
- claimBoundary: "Bounded deterministic current-input evidence for old InputAction/InputBinding processors and interactions; this does not claim full input action asset, rebinding UI, or Unity Input System parity."
79
- };
80
- }
81
- function evaluateTap(pressedAtSeconds, releasedAtSeconds, tapSpeedSeconds) {
82
- return releasedAtSeconds >= pressedAtSeconds && releasedAtSeconds - pressedAtSeconds <= tapSpeedSeconds;
83
- }
84
- function evaluateDoubleTap(pressTimesSeconds, maxIntervalSeconds) {
85
- return pressTimesSeconds.length >= 2 && (pressTimesSeconds.at(-1) ?? 0) - (pressTimesSeconds.at(-2) ?? 0) <= maxIntervalSeconds;
86
- }
87
- function finite(value, fallback) {
88
- const number = Number(value);
89
- return Number.isFinite(number) ? number : fallback;
90
- }
91
- function clamp(value, min, max) {
92
- return Math.max(min, Math.min(max, value));
93
- }
94
- //# sourceMappingURL=InputActionBindingFixtures.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"InputActionBindingFixtures.js","sourceRoot":"","sources":["../../../../packages/input/src/InputActionBindingFixtures.ts"],"names":[],"mappings":"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"}
@@ -1,65 +0,0 @@
1
- export type XRFixtureSessionMode = "inline" | "immersive-vr" | "immersive-ar";
2
- export type XRFixtureLodLevel = "high" | "medium" | "low" | "culled";
3
- export interface XRFixtureOptions {
4
- readonly requestedMode?: XRFixtureSessionMode;
5
- readonly gaze?: readonly [number, number];
6
- readonly objectCount?: number;
7
- }
8
- export interface XRRuntimeFixture {
9
- readonly source: "origin-master-xr-session-input-foveated-adapted";
10
- readonly requestedMode: XRFixtureSessionMode;
11
- readonly fallbackMode: "inline";
12
- readonly sessionSupported: boolean;
13
- readonly fallbackUsed: boolean;
14
- readonly webXRSessionClaimed: false;
15
- readonly deviceRuntimeClaimed: false;
16
- readonly evidence: {
17
- readonly oldCodebasePort: true;
18
- readonly sessionCapabilityNegotiation: true;
19
- readonly gracefulInlineFallback: true;
20
- readonly controllerInputTelemetry: true;
21
- readonly handGestureTelemetry: true;
22
- readonly gazeBasedLodTelemetry: true;
23
- };
24
- readonly capabilities: {
25
- readonly supportedModes: readonly XRFixtureSessionMode[];
26
- readonly requestedFeatures: readonly string[];
27
- readonly optionalFeatures: readonly string[];
28
- readonly unsupportedFeatures: readonly string[];
29
- readonly referenceSpaces: readonly string[];
30
- readonly depthSensing: false;
31
- readonly handTracking: false;
32
- readonly eyeTracking: false;
33
- readonly domOverlay: false;
34
- };
35
- readonly input: {
36
- readonly controllerCount: number;
37
- readonly handedness: readonly ["left", "right"];
38
- readonly triggerPressed: boolean;
39
- readonly squeezePressed: boolean;
40
- readonly thumbstickMagnitude: number;
41
- readonly hapticsClaimed: false;
42
- readonly pinchDetected: boolean;
43
- readonly pinchStrength: number;
44
- readonly pinchDistanceMeters: number;
45
- readonly pointDetected: boolean;
46
- readonly pointConfidence: number;
47
- };
48
- readonly gazeLod: {
49
- readonly gaze: readonly [number, number];
50
- readonly objectCount: number;
51
- readonly performanceBudget: number;
52
- readonly updatedObjects: number;
53
- readonly highDetailCount: number;
54
- readonly mediumDetailCount: number;
55
- readonly lowDetailCount: number;
56
- readonly culledCount: number;
57
- readonly transitionsPerFrame: number;
58
- readonly selectedLevels: readonly XRFixtureLodLevel[];
59
- };
60
- readonly blockedClaims: readonly string[];
61
- readonly hash: string;
62
- readonly claimBoundary: string;
63
- }
64
- export declare function sampleXRRuntimeFixture(options?: XRFixtureOptions): XRRuntimeFixture;
65
- //# sourceMappingURL=XRFixtures.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"XRFixtures.d.ts","sourceRoot":"","sources":["../../../../packages/input/src/XRFixtures.ts"],"names":[],"mappings":"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"}
@@ -1,136 +0,0 @@
1
- export function sampleXRRuntimeFixture(options = {}) {
2
- const requestedMode = options.requestedMode ?? "immersive-vr";
3
- const gaze = options.gaze ?? [0.48, 0.44];
4
- const objectCount = Math.max(6, Math.min(48, Math.trunc(options.objectCount ?? 14)));
5
- const supportedModes = ["inline"];
6
- const sessionSupported = supportedModes.includes(requestedMode);
7
- const objects = Array.from({ length: objectCount }, (_, index) => {
8
- const column = index % 7;
9
- const row = Math.floor(index / 7);
10
- const x = 0.12 + column * 0.13;
11
- const y = 0.18 + row * 0.21;
12
- const distance = Math.hypot(x - gaze[0], y - gaze[1]);
13
- return { index, distance, lod: lodForDistance(distance) };
14
- });
15
- const performanceBudget = Math.min(10, objectCount);
16
- const updatedObjects = objects
17
- .slice()
18
- .sort((left, right) => left.distance - right.distance)
19
- .slice(0, performanceBudget);
20
- const selectedLevels = uniqueLevels(objects.map((object) => object.lod));
21
- const pinchDistanceMeters = 0.024;
22
- const pointConfidence = 0.82;
23
- const unsupportedFeatures = [
24
- "local-floor",
25
- "bounded-floor",
26
- "hand-tracking",
27
- "eye-tracking",
28
- "depth-sensing",
29
- "dom-overlay",
30
- "hit-test",
31
- "anchors",
32
- "plane-detection",
33
- "mesh-detection",
34
- "light-estimation"
35
- ];
36
- const blockedClaims = [
37
- "real WebXR headset session evidence",
38
- "AR hit-test anchor platform parity",
39
- "device hand-tracking runtime parity",
40
- "eye-tracked foveated rendering",
41
- "Unity XR Interaction Toolkit parity",
42
- "Unreal XR framework parity"
43
- ];
44
- const hash = hashStrings([
45
- requestedMode,
46
- String(sessionSupported),
47
- ...selectedLevels,
48
- String(updatedObjects.length),
49
- String(pinchDistanceMeters),
50
- String(pointConfidence),
51
- ...blockedClaims
52
- ]);
53
- return {
54
- source: "origin-master-xr-session-input-foveated-adapted",
55
- requestedMode,
56
- fallbackMode: "inline",
57
- sessionSupported,
58
- fallbackUsed: !sessionSupported,
59
- webXRSessionClaimed: false,
60
- deviceRuntimeClaimed: false,
61
- evidence: {
62
- oldCodebasePort: true,
63
- sessionCapabilityNegotiation: true,
64
- gracefulInlineFallback: true,
65
- controllerInputTelemetry: true,
66
- handGestureTelemetry: true,
67
- gazeBasedLodTelemetry: true
68
- },
69
- capabilities: {
70
- supportedModes,
71
- requestedFeatures: ["local-floor"],
72
- optionalFeatures: unsupportedFeatures.slice(2),
73
- unsupportedFeatures,
74
- referenceSpaces: ["viewer"],
75
- depthSensing: false,
76
- handTracking: false,
77
- eyeTracking: false,
78
- domOverlay: false
79
- },
80
- input: {
81
- controllerCount: 2,
82
- handedness: ["left", "right"],
83
- triggerPressed: true,
84
- squeezePressed: false,
85
- thumbstickMagnitude: round(Math.hypot(0.42, -0.36)),
86
- hapticsClaimed: false,
87
- pinchDetected: pinchDistanceMeters <= 0.03,
88
- pinchStrength: round((0.05 - pinchDistanceMeters) / 0.05),
89
- pinchDistanceMeters,
90
- pointDetected: true,
91
- pointConfidence
92
- },
93
- gazeLod: {
94
- gaze: [round(gaze[0]), round(gaze[1])],
95
- objectCount,
96
- performanceBudget,
97
- updatedObjects: updatedObjects.length,
98
- highDetailCount: objects.filter((object) => object.lod === "high").length,
99
- mediumDetailCount: objects.filter((object) => object.lod === "medium").length,
100
- lowDetailCount: objects.filter((object) => object.lod === "low").length,
101
- culledCount: objects.filter((object) => object.lod === "culled").length,
102
- transitionsPerFrame: updatedObjects.filter((object) => object.lod !== "medium").length,
103
- selectedLevels
104
- },
105
- blockedClaims,
106
- hash,
107
- claimBoundary: "Bounded deterministic fixture adapted from old XR session/input/foveated concepts. It does not claim a real WebXR headset session, AR platform support, eye-tracked foveated rendering, Unity XR parity, or Unreal XR parity."
108
- };
109
- }
110
- function lodForDistance(distance) {
111
- if (distance <= 0.18)
112
- return "high";
113
- if (distance <= 0.36)
114
- return "medium";
115
- if (distance <= 0.58)
116
- return "low";
117
- return "culled";
118
- }
119
- function uniqueLevels(levels) {
120
- const order = ["high", "medium", "low", "culled"];
121
- return order.filter((level) => levels.includes(level));
122
- }
123
- function hashStrings(values) {
124
- let hash = 0x811c9dc5;
125
- for (const value of values) {
126
- for (let index = 0; index < value.length; index += 1) {
127
- hash ^= value.charCodeAt(index);
128
- hash = Math.imul(hash, 0x01000193);
129
- }
130
- }
131
- return (hash >>> 0).toString(16).padStart(8, "0");
132
- }
133
- function round(value) {
134
- return Number(value.toFixed(4));
135
- }
136
- //# sourceMappingURL=XRFixtures.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"XRFixtures.js","sourceRoot":"","sources":["../../../../packages/input/src/XRFixtures.ts"],"names":[],"mappings":"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"}