@galacean/engine-xr 2.0.0-alpha.5 → 2.0.0-alpha.50

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@galacean/engine-xr",
3
- "version": "2.0.0-alpha.5",
3
+ "version": "2.0.0-alpha.50",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "registry": "https://registry.npmjs.org"
@@ -11,8 +11,9 @@
11
11
  "license": "MIT",
12
12
  "main": "dist/main.js",
13
13
  "module": "dist/module.js",
14
+ "unpkg": "dist/browser.min.js",
15
+ "jsdelivr": "dist/browser.min.js",
14
16
  "debug": "src/index.ts",
15
- "browser": "dist/browser.js",
16
17
  "types": "types/index.d.ts",
17
18
  "umd": {
18
19
  "name": "Galacean.XR",
@@ -26,11 +27,11 @@
26
27
  "types/**/*"
27
28
  ],
28
29
  "devDependencies": {
29
- "@galacean/engine-design": "2.0.0-alpha.5",
30
- "@galacean/engine": "2.0.0-alpha.5"
30
+ "@galacean/engine-design": "2.0.0-alpha.50",
31
+ "@galacean/engine": "2.0.0-alpha.50"
31
32
  },
32
33
  "peerDependencies": {
33
- "@galacean/engine": "2.0.0-alpha.5"
34
+ "@galacean/engine": "2.0.0-alpha.50"
34
35
  },
35
36
  "scripts": {
36
37
  "b:types": "tsc"
@@ -1,13 +1,59 @@
1
- import { Entity } from "@galacean/engine";
1
+ import { CameraClearFlags, CameraType, Engine, Entity, XRManager } from "@galacean/engine";
2
+ import { IXRDevice } from "@galacean/engine-design";
2
3
  import { XRFeature } from "./feature/XRFeature";
4
+ import { XRFeatureType } from "./feature/XRFeatureType";
3
5
  import { XRCameraManager } from "./feature/camera/XRCameraManager";
4
6
  import { XRInputManager } from "./input/XRInputManager";
5
7
  import { XRSessionManager } from "./session/XRSessionManager";
6
8
  import { XRSessionMode } from "./session/XRSessionMode";
7
- export interface IXRListener {
8
- fn: (...args: any[]) => any;
9
- destroyed?: boolean;
9
+ /**
10
+ * @internal
11
+ */
12
+ export declare class XRManagerExtended extends XRManager {
13
+ /** @internal */
14
+ static _featureMap: Map<TFeatureConstructor<XRFeature>, XRFeatureType>;
15
+ inputManager: XRInputManager;
16
+ sessionManager: XRSessionManager;
17
+ cameraManager: XRCameraManager;
18
+ /** @internal */
19
+ _platformDevice: IXRDevice;
20
+ private _features;
21
+ private _origin;
22
+ get features(): XRFeature[];
23
+ get origin(): Entity;
24
+ set origin(value: Entity);
25
+ isSupportedFeature<T extends XRFeature>(feature: TFeatureConstructor<T>): boolean;
26
+ addFeature<T extends new (xrManager: XRManagerExtended, ...args: any[]) => XRFeature>(type: T, ...args: TFeatureConstructorArguments<T>): InstanceType<T> | null;
27
+ getFeature<T extends XRFeature>(type: TFeatureConstructor<T>): T | undefined;
28
+ enterXR(sessionMode: XRSessionMode, autoRun?: boolean): Promise<void>;
29
+ exitXR(): Promise<void>;
30
+ _initialize(engine: Engine, xrDevice: IXRDevice): void;
31
+ _update(): void;
32
+ _destroy(): void;
33
+ _getRequestAnimationFrame(): (callback: FrameRequestCallback) => number;
34
+ _getCancelAnimationFrame(): (id: number) => void;
35
+ _getCameraIgnoreClearFlags(type: CameraType): CameraClearFlags;
36
+ /**
37
+ * @internal
38
+ */
39
+ _onSessionStop(): void;
40
+ /**
41
+ * @internal
42
+ */
43
+ _onSessionInit(): void;
44
+ /**
45
+ * @internal
46
+ */
47
+ _onSessionStart(): void;
48
+ /**
49
+ * @internal
50
+ */
51
+ _onSessionExit(): void;
10
52
  }
53
+ /**
54
+ * @internal
55
+ */
56
+ export declare function registerXRFeature<T extends XRFeature>(type: XRFeatureType): (feature: TFeatureConstructor<T>) => void;
11
57
  type TFeatureConstructor<T extends XRFeature> = new (xrManager: XRManagerExtended, ...args: any[]) => T;
12
58
  type TFeatureConstructorArguments<T extends new (xrManager: XRManagerExtended, ...args: any[]) => XRFeature> = T extends new (xrManager: XRManagerExtended, ...args: infer P) => XRFeature ? P : never;
13
59
  declare module "@galacean/engine" {
@@ -44,7 +90,7 @@ declare module "@galacean/engine" {
44
90
  * @param type - The type of the feature
45
91
  * @returns The feature which match type
46
92
  */
47
- getFeature<T extends XRFeature>(type: TFeatureConstructor<T>): T | null;
93
+ getFeature<T extends XRFeature>(type: TFeatureConstructor<T>): T | undefined;
48
94
  /**
49
95
  * Enter XR immersive mode, when you call this method, it will initialize and display the XR virtual world.
50
96
  * @param sessionMode - The mode of the session
@@ -57,6 +103,30 @@ declare module "@galacean/engine" {
57
103
  * @returns A promise that resolves if the XR virtual world is destroyed, otherwise rejects
58
104
  */
59
105
  exitXR(): Promise<void>;
106
+ /**
107
+ * @internal
108
+ */
109
+ _initialize(engine: Engine, xrDevice: IXRDevice): void;
110
+ /**
111
+ * @internal
112
+ */
113
+ _getRequestAnimationFrame(): (callback: FrameRequestCallback) => number;
114
+ /**
115
+ * @internal
116
+ */
117
+ _getCancelAnimationFrame(): (id: number) => void;
118
+ /**
119
+ * @internal
120
+ */
121
+ _getCameraIgnoreClearFlags(type: CameraType): CameraClearFlags;
122
+ /**
123
+ * @internal
124
+ */
125
+ _update(): void;
126
+ /**
127
+ * @internal
128
+ */
129
+ _destroy(): void;
60
130
  }
61
131
  }
62
132
  export {};
@@ -7,10 +7,48 @@ import { XRFeatureType } from "./XRFeatureType";
7
7
  export declare abstract class XRFeature<T extends IXRPlatformFeature = IXRPlatformFeature> {
8
8
  protected _xrManager: XRManagerExtended;
9
9
  protected _type: XRFeatureType;
10
+ /** @internal */
11
+ _platformFeature: T;
10
12
  protected _enabled: boolean;
11
13
  /**
12
14
  * Returns whether the feature is enabled.
13
15
  */
14
16
  get enabled(): boolean;
15
17
  set enabled(value: boolean);
18
+ /**
19
+ * @internal
20
+ */
21
+ constructor(_xrManager: XRManagerExtended, _type: XRFeatureType, ...args: any[]);
22
+ /**
23
+ * @internal
24
+ */
25
+ _onEnable(): void;
26
+ /**
27
+ * @internal
28
+ */
29
+ _onDisable(): void;
30
+ /**
31
+ * @internal
32
+ */
33
+ _onUpdate(): void;
34
+ /**
35
+ * @internal
36
+ */
37
+ _onSessionInit(): void;
38
+ /**
39
+ * @internal
40
+ */
41
+ _onSessionStart(): void;
42
+ /**
43
+ * @internal
44
+ */
45
+ _onSessionStop(): void;
46
+ /**
47
+ * @internal
48
+ */
49
+ _onSessionExit(): void;
50
+ /**
51
+ * @internal
52
+ */
53
+ _onDestroy(): void;
16
54
  }
@@ -1,4 +1,5 @@
1
- import { Camera } from "@galacean/engine";
1
+ import { Camera, CameraClearFlags, CameraType } from "@galacean/engine";
2
+ import { XRManagerExtended } from "../../XRManagerExtended";
2
3
  import { XRTrackedInputDevice } from "../../input/XRTrackedInputDevice";
3
4
  /**
4
5
  * The manager of XR camera.
@@ -6,10 +7,14 @@ import { XRTrackedInputDevice } from "../../input/XRTrackedInputDevice";
6
7
  export declare class XRCameraManager {
7
8
  private _xrManager;
8
9
  /**
9
- * The fixed foveation of the camera.
10
+ * Fixed foveation, or `undefined` if unsupported by the active session.
10
11
  */
11
- get fixedFoveation(): number;
12
+ get fixedFoveation(): number | undefined;
12
13
  set fixedFoveation(value: number);
14
+ /**
15
+ * @internal
16
+ */
17
+ constructor(_xrManager: XRManagerExtended);
13
18
  /**
14
19
  * Attach the camera to the specified input type(Camera, LeftCamera or RightCamera).
15
20
  * The camera entity need to be moved to the XROrigin entity.
@@ -22,5 +27,25 @@ export declare class XRCameraManager {
22
27
  * @param type - The input type
23
28
  * @returns The camera that was detached
24
29
  */
25
- detachCamera(type: XRTrackedInputDevice.Camera | XRTrackedInputDevice.LeftCamera | XRTrackedInputDevice.RightCamera): Camera;
30
+ detachCamera(type: XRTrackedInputDevice.Camera | XRTrackedInputDevice.LeftCamera | XRTrackedInputDevice.RightCamera): Camera | null;
31
+ /**
32
+ * @internal
33
+ */
34
+ _onSessionStart(): void;
35
+ /**
36
+ * @internal
37
+ */
38
+ _onUpdate(): void;
39
+ /**
40
+ * @internal
41
+ */
42
+ _onSessionExit(): void;
43
+ /**
44
+ * @internal
45
+ */
46
+ _getIgnoreClearFlags(cameraType: CameraType): CameraClearFlags;
47
+ /**
48
+ * @internal
49
+ */
50
+ _onDestroy(): void;
26
51
  }
@@ -1 +1,11 @@
1
- export {};
1
+ import { XRRequestTrackingState } from "./XRRequestTrackingState";
2
+ import { XRTracked } from "./XRTracked";
3
+ /**
4
+ * @internal
5
+ */
6
+ export declare abstract class XRRequestTracking<T extends XRTracked> {
7
+ /** The status of the current request tracking. */
8
+ state: XRRequestTrackingState;
9
+ /** Tracked instances, make up from the tracking data returned by Session. */
10
+ tracked: T[];
11
+ }
@@ -1,3 +1,4 @@
1
+ import { Signal } from "@galacean/engine";
1
2
  import { IXRTrackablePlatformFeature } from "@galacean/engine-design";
2
3
  import { XRTrackingState } from "../../input/XRTrackingState";
3
4
  import { XRFeature } from "../XRFeature";
@@ -8,28 +9,29 @@ import { XRTracked } from "./XRTracked";
8
9
  */
9
10
  export declare abstract class XRTrackableFeature<T extends XRTracked = XRTracked, K extends XRRequestTracking<T> = XRRequestTracking<T>> extends XRFeature<IXRTrackablePlatformFeature<T, K>> {
10
11
  protected static _uuid: number;
12
+ /** Signal emitted when tracked objects change. */
13
+ readonly onChanged: Signal<[readonly T[], readonly T[], readonly T[]]>;
11
14
  protected _requestTrackings: K[];
12
15
  protected _tracked: T[];
13
16
  protected _added: T[];
14
17
  protected _updated: T[];
15
18
  protected _removed: T[];
16
19
  protected _statusSnapshot: Record<number, XRTrackingState>;
17
- private _listeners;
20
+ _onUpdate(): void;
21
+ _onSessionStop(): void;
22
+ _onSessionExit(): void;
23
+ protected _addRequestTracking(requestTracking: K): void;
24
+ protected _removeRequestTracking(requestTracking: K): void;
25
+ protected _removeAllRequestTrackings(): void;
26
+ protected abstract _generateTracked(): T;
18
27
  /**
19
28
  * Add a listening function for tracked object changes.
20
- * @param listener - The listening function
29
+ * @deprecated Use `onChanged.on(listener)` instead.
21
30
  */
22
31
  addChangedListener(listener: (added: readonly T[], updated: readonly T[], removed: readonly T[]) => void): void;
23
32
  /**
24
33
  * Remove a listening function of tracked object changes.
25
- * @param listener - The listening function
34
+ * @deprecated Use `onChanged.off(listener)` instead.
26
35
  */
27
36
  removeChangedListener(listener: (added: readonly T[], updated: readonly T[], removed: readonly T[]) => void): void;
28
- _onUpdate(): void;
29
- _onSessionStop(): void;
30
- _onSessionExit(): void;
31
- protected _addRequestTracking(requestTracking: K): void;
32
- protected _removeRequestTracking(requestTracking: K): void;
33
- protected _removeAllRequestTrackings(): void;
34
- protected abstract _generateTracked(): T;
35
37
  }
@@ -1,5 +1,5 @@
1
1
  import { IXRCamera } from "@galacean/engine-design";
2
- import { Matrix, Rect } from "@galacean/engine";
2
+ import { Matrix, Rect, Camera } from "@galacean/engine";
3
3
  import { XRPose } from "../XRPose";
4
4
  import { XRInput } from "./XRInput";
5
5
  /**
@@ -12,4 +12,6 @@ export declare class XRCamera extends XRInput implements IXRCamera {
12
12
  viewport: Rect;
13
13
  /** The projection matrix of the camera. */
14
14
  projectionMatrix: Matrix;
15
+ /** @internal */
16
+ _camera: Camera | null;
15
17
  }
@@ -5,4 +5,8 @@ export declare class XRInput implements IXRInput {
5
5
  type: XRTrackedInputDevice;
6
6
  /** The tracking state of xr input. */
7
7
  trackingState: XRTrackingState;
8
+ /**
9
+ * @internal
10
+ */
11
+ constructor(type: XRTrackedInputDevice);
8
12
  }
@@ -1,3 +1,7 @@
1
+ import { Engine, Signal } from "@galacean/engine";
2
+ import { XRManagerExtended } from "../XRManagerExtended";
3
+ import { XRCamera } from "./XRCamera";
4
+ import { XRController } from "./XRController";
1
5
  import { XRInput } from "./XRInput";
2
6
  import { XRTrackedInputDevice } from "./XRTrackedInputDevice";
3
7
  /**
@@ -6,27 +10,44 @@ import { XRTrackedInputDevice } from "./XRTrackedInputDevice";
6
10
  export declare class XRInputManager {
7
11
  private _xrManager;
8
12
  private _engine;
13
+ /** Signal emitted when tracked devices change. */
14
+ readonly onTrackedDeviceChanged: Signal<[readonly XRInput[], readonly XRInput[]]>;
15
+ /** @internal */
16
+ _cameras: XRCamera[];
17
+ /** @internal */
18
+ _controllers: XRController[];
9
19
  private _added;
10
20
  private _removed;
11
21
  private _trackedDevices;
12
22
  private _statusSnapshot;
13
- private _listeners;
23
+ /**
24
+ * @internal
25
+ */
26
+ constructor(_xrManager: XRManagerExtended, _engine: Engine);
14
27
  /**
15
28
  * Returns the tracked device instance.
16
29
  * @param type - The tracked input device type
17
30
  * @returns The input instance
18
31
  */
19
32
  getTrackedDevice<T extends XRInput>(type: XRTrackedInputDevice): T;
33
+ /**
34
+ * @internal
35
+ */
36
+ _onUpdate(): void;
37
+ /**
38
+ * @internal
39
+ */
40
+ _onDestroy(): void;
41
+ private _handleEvent;
42
+ private _makeUpPointerEvent;
20
43
  /**
21
44
  * Add a listener for tracked device changes.
22
- * @param listener - The listener to add
45
+ * @deprecated Use `onTrackedDeviceChanged.on(listener)` instead.
23
46
  */
24
47
  addTrackedDeviceChangedListener(listener: (added: readonly XRInput[], removed: readonly XRInput[]) => void): void;
25
48
  /**
26
49
  * Remove a listener of tracked device changes.
27
- * @param listener - The listener to remove
50
+ * @deprecated Use `onTrackedDeviceChanged.off(listener)` instead.
28
51
  */
29
52
  removeTrackedDeviceChangedListener(listener: (added: readonly XRInput[], removed: readonly XRInput[]) => void): void;
30
- private _handleEvent;
31
- private _makeUpPointerEvent;
32
53
  }
@@ -1,3 +1,7 @@
1
+ import { Engine, Signal } from "@galacean/engine";
2
+ import { IXRSession } from "@galacean/engine-design";
3
+ import { XRManagerExtended } from "../XRManagerExtended";
4
+ import { XRFeature } from "../feature/XRFeature";
1
5
  import { XRSessionMode } from "./XRSessionMode";
2
6
  import { XRSessionState } from "./XRSessionState";
3
7
  /**
@@ -6,12 +10,15 @@ import { XRSessionState } from "./XRSessionState";
6
10
  export declare class XRSessionManager {
7
11
  private _xrManager;
8
12
  private _engine;
13
+ /** Signal emitted when session state changes. */
14
+ readonly onStateChanged: Signal<[XRSessionState]>;
15
+ /** @internal */
16
+ _platformSession: IXRSession | null;
9
17
  private _mode;
10
18
  private _state;
11
19
  private _rhi;
12
20
  private _raf;
13
21
  private _caf;
14
- private _listeners;
15
22
  /**
16
23
  * The current session mode( AR or VR ).
17
24
  */
@@ -21,13 +28,17 @@ export declare class XRSessionManager {
21
28
  */
22
29
  get state(): XRSessionState;
23
30
  /**
24
- * Return a list of supported frame rates.(only available in-session)
31
+ * Supported frame rates, or `undefined` if unsupported. Only available in-session.
25
32
  */
26
- get supportedFrameRate(): Float32Array;
33
+ get supportedFrameRate(): Float32Array | undefined;
27
34
  /**
28
- * Return the current frame rate as reported by the device.
35
+ * Current frame rate, or `undefined` if unsupported. Only available in-session.
29
36
  */
30
- get frameRate(): number;
37
+ get frameRate(): number | undefined;
38
+ /**
39
+ * @internal
40
+ */
41
+ constructor(_xrManager: XRManagerExtended, _engine: Engine);
31
42
  /**
32
43
  * Check if the specified mode is supported.
33
44
  * @param mode - The mode to check
@@ -42,15 +53,43 @@ export declare class XRSessionManager {
42
53
  * Stop the session.
43
54
  */
44
55
  stop(): void;
56
+ /**
57
+ * @internal
58
+ */
59
+ _setState(value: XRSessionState): void;
60
+ /**
61
+ * @internal
62
+ */
63
+ _initialize(mode: XRSessionMode, features: XRFeature[]): Promise<void>;
64
+ /**
65
+ * @internal
66
+ */
67
+ _onUpdate(): void;
68
+ /**
69
+ * @internal
70
+ */
71
+ _getRequestAnimationFrame(): (callback: FrameRequestCallback) => number;
72
+ /**
73
+ * @internal
74
+ */
75
+ _getCancelAnimationFrame(): (id: number) => void;
76
+ /**
77
+ * @internal
78
+ */
79
+ _exit(): Promise<void>;
80
+ private _onSessionExit;
81
+ /**
82
+ * @internal
83
+ */
84
+ _onDestroy(): void;
45
85
  /**
46
86
  * Add a listening function for session state changes.
47
- * @param listener - The listening function
87
+ * @deprecated Use `onStateChanged.on(listener)` instead.
48
88
  */
49
89
  addStateChangedListener(listener: (state: XRSessionState) => void): void;
50
90
  /**
51
91
  * Remove a listening function of session state changes.
52
- * @param listener - The listening function
92
+ * @deprecated Use `onStateChanged.off(listener)` instead.
53
93
  */
54
94
  removeStateChangedListener(listener: (state: XRSessionState) => void): void;
55
- private _onSessionExit;
56
95
  }