@iwer/devui 0.2.1 → 1.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.
Files changed (119) hide show
  1. package/build/iwer-devui.js +5198 -2628
  2. package/build/iwer-devui.min.js +266 -130
  3. package/build/iwer-devui.module.js +5198 -2628
  4. package/build/iwer-devui.module.min.js +266 -130
  5. package/lib/components/analog.d.ts.map +1 -1
  6. package/lib/components/analog.js +11 -13
  7. package/lib/components/analog.js.map +1 -1
  8. package/lib/components/binary.d.ts.map +1 -1
  9. package/lib/components/binary.js +15 -17
  10. package/lib/components/binary.js.map +1 -1
  11. package/lib/components/controls.d.ts +11 -2
  12. package/lib/components/controls.d.ts.map +1 -1
  13. package/lib/components/controls.js +61 -27
  14. package/lib/components/controls.js.map +1 -1
  15. package/lib/components/fov.d.ts.map +1 -1
  16. package/lib/components/fov.js +0 -1
  17. package/lib/components/fov.js.map +1 -1
  18. package/lib/components/header.d.ts +0 -4
  19. package/lib/components/header.d.ts.map +1 -1
  20. package/lib/components/header.js +75 -61
  21. package/lib/components/header.js.map +1 -1
  22. package/lib/components/headset.d.ts +17 -0
  23. package/lib/components/headset.d.ts.map +1 -0
  24. package/lib/components/headset.js +91 -0
  25. package/lib/components/headset.js.map +1 -0
  26. package/lib/components/icons.d.ts +8 -1
  27. package/lib/components/icons.d.ts.map +1 -1
  28. package/lib/components/icons.js +53 -27
  29. package/lib/components/icons.js.map +1 -1
  30. package/lib/components/joystick.d.ts.map +1 -1
  31. package/lib/components/joystick.js +56 -60
  32. package/lib/components/joystick.js.map +1 -1
  33. package/lib/components/mapper.d.ts +7 -3
  34. package/lib/components/mapper.d.ts.map +1 -1
  35. package/lib/components/mapper.js +34 -60
  36. package/lib/components/mapper.js.map +1 -1
  37. package/lib/components/styled.d.ts +48 -7
  38. package/lib/components/styled.d.ts.map +1 -1
  39. package/lib/components/styled.js +213 -40
  40. package/lib/components/styled.js.map +1 -1
  41. package/lib/components/vec3.d.ts +25 -0
  42. package/lib/components/vec3.d.ts.map +1 -0
  43. package/lib/components/vec3.js +90 -0
  44. package/lib/components/vec3.js.map +1 -0
  45. package/lib/index.d.ts +8 -12
  46. package/lib/index.d.ts.map +1 -1
  47. package/lib/index.js +73 -51
  48. package/lib/index.js.map +1 -1
  49. package/lib/package.json +55 -0
  50. package/lib/scene.d.ts +23 -40
  51. package/lib/scene.d.ts.map +1 -1
  52. package/lib/scene.js +160 -192
  53. package/lib/scene.js.map +1 -1
  54. package/lib/src/components/analog.d.ts +17 -0
  55. package/lib/src/components/analog.d.ts.map +1 -0
  56. package/lib/src/components/analog.js +111 -0
  57. package/lib/src/components/analog.js.map +1 -0
  58. package/lib/src/components/binary.d.ts +17 -0
  59. package/lib/src/components/binary.d.ts.map +1 -0
  60. package/lib/src/components/binary.js +77 -0
  61. package/lib/src/components/binary.js.map +1 -0
  62. package/lib/src/components/controls.d.ts +29 -0
  63. package/lib/src/components/controls.d.ts.map +1 -0
  64. package/lib/src/components/controls.js +139 -0
  65. package/lib/src/components/controls.js.map +1 -0
  66. package/lib/src/components/fov.d.ts +16 -0
  67. package/lib/src/components/fov.d.ts.map +1 -0
  68. package/lib/src/components/fov.js +30 -0
  69. package/lib/src/components/fov.js.map +1 -0
  70. package/lib/src/components/header.d.ts +20 -0
  71. package/lib/src/components/header.d.ts.map +1 -0
  72. package/lib/src/components/header.js +47 -0
  73. package/lib/src/components/header.js.map +1 -0
  74. package/lib/src/components/headset.d.ts +17 -0
  75. package/lib/src/components/headset.d.ts.map +1 -0
  76. package/lib/src/components/headset.js +29 -0
  77. package/lib/src/components/headset.js.map +1 -0
  78. package/lib/src/components/icons.d.ts +37 -0
  79. package/lib/src/components/icons.d.ts.map +1 -0
  80. package/lib/src/components/icons.js +265 -0
  81. package/lib/src/components/icons.js.map +1 -0
  82. package/lib/src/components/joystick.d.ts +21 -0
  83. package/lib/src/components/joystick.d.ts.map +1 -0
  84. package/lib/src/components/joystick.js +245 -0
  85. package/lib/src/components/joystick.js.map +1 -0
  86. package/lib/src/components/keys.d.ts +10 -0
  87. package/lib/src/components/keys.d.ts.map +1 -0
  88. package/lib/src/components/keys.js +74 -0
  89. package/lib/src/components/keys.js.map +1 -0
  90. package/lib/src/components/mapper.d.ts +22 -0
  91. package/lib/src/components/mapper.d.ts.map +1 -0
  92. package/lib/src/components/mapper.js +108 -0
  93. package/lib/src/components/mapper.js.map +1 -0
  94. package/lib/src/components/styled.d.ts +70 -0
  95. package/lib/src/components/styled.d.ts.map +1 -0
  96. package/lib/src/components/styled.js +272 -0
  97. package/lib/src/components/styled.js.map +1 -0
  98. package/lib/src/components/vec3.d.ts +22 -0
  99. package/lib/src/components/vec3.d.ts.map +1 -0
  100. package/lib/src/components/vec3.js +123 -0
  101. package/lib/src/components/vec3.js.map +1 -0
  102. package/lib/src/index.d.ts +22 -0
  103. package/lib/src/index.d.ts.map +1 -0
  104. package/lib/src/index.js +92 -0
  105. package/lib/src/index.js.map +1 -0
  106. package/lib/src/scene.d.ts +51 -0
  107. package/lib/src/scene.d.ts.map +1 -0
  108. package/lib/src/scene.js +250 -0
  109. package/lib/src/scene.js.map +1 -0
  110. package/lib/version.d.ts +2 -0
  111. package/lib/version.d.ts.map +1 -0
  112. package/lib/version.js +2 -0
  113. package/lib/version.js.map +1 -0
  114. package/package.json +6 -3
  115. package/build/iwe.min.js +0 -180
  116. package/lib/components/settings.d.ts +0 -50
  117. package/lib/components/settings.d.ts.map +0 -1
  118. package/lib/components/settings.js +0 -103
  119. package/lib/components/settings.js.map +0 -1
package/lib/index.js CHANGED
@@ -5,66 +5,60 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
5
  * This source code is licensed under the MIT license found in the
6
6
  * LICENSE file in the root directory of this source tree.
7
7
  */
8
- import { DEFAULT_KEYMAP, KeyMapMenu } from './components/mapper.js';
9
- import { createContext, useContext, useEffect, useState } from 'react';
8
+ import { HeaderButton, HeaderButtonsContainer } from './components/styled.js';
9
+ import React, { useEffect, useState } from 'react';
10
10
  import { ControlsUI } from './components/controls.js';
11
- import { FOVMenu } from './components/fov.js';
12
11
  import { HeaderUI } from './components/header.js';
12
+ import { HeadsetUI } from './components/headset.js';
13
+ import { IWERIcon } from './components/icons.js';
13
14
  import { InputLayer } from './scene.js';
15
+ import { StyleSheetManager } from 'styled-components';
16
+ import { VERSION } from './version.js';
14
17
  import { createRoot } from 'react-dom/client';
15
- const PRIVATE = Symbol('@@iwer/devui/devui');
16
- const DefaultConfig = {
17
- buttonPressDuration: 250,
18
- };
19
- const DevUIConfigContext = createContext(DefaultConfig);
20
- export const useDevUIConfig = () => {
21
- return useContext(DevUIConfigContext);
22
- };
23
18
  export class DevUI {
24
- constructor(xrDevice, options = {}) {
19
+ constructor(xrDevice) {
20
+ this.version = VERSION;
25
21
  xrDevice.ipd = 0;
26
- const canvasContainer = xrDevice.canvasContainer;
27
- const devuiContainer = document.createElement('div');
28
- devuiContainer.style.position = 'fixed';
29
- devuiContainer.style.width = '100%';
30
- devuiContainer.style.height = '100%';
31
- devuiContainer.style.top = '0';
32
- devuiContainer.style.left = '0';
33
- devuiContainer.style.display = 'flex';
34
- devuiContainer.style.justifyContent = 'center';
35
- devuiContainer.style.alignItems = 'center';
36
- devuiContainer.style.overflow = 'hidden';
37
- devuiContainer.style.pointerEvents = 'none';
38
- devuiContainer.style.zIndex = '3';
39
- canvasContainer.appendChild(devuiContainer);
40
- const inputLayer = new InputLayer(xrDevice);
41
- const inputLayerElement = inputLayer.domElement;
42
- inputLayerElement.style.position = 'fixed';
43
- inputLayerElement.style.width = '100%';
44
- inputLayerElement.style.height = '100%';
45
- inputLayerElement.style.top = '0';
46
- inputLayerElement.style.left = '0';
47
- inputLayerElement.style.zIndex = '2';
48
- canvasContainer.appendChild(inputLayerElement);
49
- const root = createRoot(devuiContainer);
50
- root.render(_jsx(Overlay, { xrDevice: xrDevice, inputLayer: inputLayer, options: options }));
51
- this[PRIVATE] = {
52
- xrDevice,
53
- inputLayer,
22
+ this.devUIContainer = document.createElement('div');
23
+ this.devUIContainer.style.position = 'fixed';
24
+ this.devUIContainer.style.width = '100vw';
25
+ this.devUIContainer.style.height = '100vh';
26
+ this.devUIContainer.style.top = '50vh';
27
+ this.devUIContainer.style.left = '50vw';
28
+ this.devUIContainer.style.transform = 'translate(-50%, -50%)';
29
+ this.devUIContainer.style.pointerEvents = 'none';
30
+ const devUIShadowRoot = this.devUIContainer.attachShadow({
31
+ mode: 'open',
32
+ });
33
+ this.inputLayer = new InputLayer(xrDevice);
34
+ const root = createRoot(devUIShadowRoot);
35
+ root.render(_jsx(Overlay, { xrDevice: xrDevice, inputLayer: this.inputLayer, shadowRoot: devUIShadowRoot }));
36
+ const installOfferSessionUI = () => {
37
+ const offerSessionUIContainer = document.createElement('div');
38
+ document.body.appendChild(offerSessionUIContainer);
39
+ const offerSessionShadowRoot = offerSessionUIContainer.attachShadow({
40
+ mode: 'open',
41
+ });
42
+ const offerSessionRoot = createRoot(offerSessionShadowRoot);
43
+ offerSessionRoot.render(_jsx(OfferSessionUI, { xrDevice: xrDevice, shadowRoot: offerSessionShadowRoot }));
54
44
  };
45
+ if (document.body) {
46
+ installOfferSessionUI();
47
+ }
48
+ else {
49
+ window.onload = installOfferSessionUI;
50
+ }
51
+ }
52
+ render(time) {
53
+ this.inputLayer.renderScene(time);
54
+ }
55
+ get devUICanvas() {
56
+ return this.inputLayer.domElement;
55
57
  }
56
58
  }
57
- const Overlay = ({ xrDevice, inputLayer, options }) => {
59
+ const Overlay = ({ xrDevice, inputLayer, shadowRoot, }) => {
58
60
  const [pointerLocked, setPointerLocked] = useState(false);
59
- const [keyMap, setKeyMap] = useState(DEFAULT_KEYMAP);
60
- const [keyMapOpen, setKeyMapOpen] = useState(false);
61
- const [fovSettingOpen, setFovSettingOpen] = useState(false);
62
- const [devuiConfig, setConfig] = useState(DefaultConfig);
63
61
  useEffect(() => {
64
- var _a;
65
- setConfig({
66
- buttonPressDuration: (_a = options.buttonPressDuration) !== null && _a !== void 0 ? _a : DefaultConfig.buttonPressDuration,
67
- });
68
62
  const pointerLockChangeHandler = () => {
69
63
  const locked = document.pointerLockElement ||
70
64
  // @ts-ignore
@@ -82,12 +76,40 @@ const Overlay = ({ xrDevice, inputLayer, options }) => {
82
76
  document.removeEventListener('webkitpointerlockchange', pointerLockChangeHandler, false);
83
77
  };
84
78
  }, []);
85
- return (_jsx(DevUIConfigContext.Provider, { value: devuiConfig, children: _jsxs("div", { style: {
79
+ return (_jsx(StyleSheetManager, { target: shadowRoot, disableCSSOMInjection: true, children: _jsxs("div", { style: {
86
80
  width: '100vw',
87
81
  height: '100vh',
88
82
  display: 'flex',
89
83
  flexDirection: 'column',
90
84
  justifyContent: 'space-between',
91
- }, children: [_jsx(HeaderUI, { xrDevice: xrDevice, inputLayer: inputLayer, keyMapOpen: keyMapOpen, setKeyMapOpen: setKeyMapOpen, fovSettingOpen: fovSettingOpen, setFovSettingOpen: setFovSettingOpen }), keyMapOpen && _jsx(KeyMapMenu, { keyMap: keyMap, setKeyMap: setKeyMap }), fovSettingOpen && (_jsx(FOVMenu, { xrDevice: xrDevice, inputLayer: inputLayer })), _jsx(ControlsUI, { xrDevice: xrDevice, keyMap: keyMap, pointerLocked: pointerLocked })] }) }));
85
+ pointerEvents: 'none',
86
+ }, children: [_jsx(HeaderUI, { xrDevice: xrDevice, inputLayer: inputLayer }), _jsx(HeadsetUI, { xrDevice: xrDevice, inputLayer: inputLayer, pointerLocked: pointerLocked }), _jsx(ControlsUI, { xrDevice: xrDevice, inputLayer: inputLayer, pointerLocked: pointerLocked })] }) }));
87
+ };
88
+ const OfferSessionUI = ({ xrDevice, shadowRoot, }) => {
89
+ const [showOffer, setShowOffer] = React.useState(xrDevice.sessionOffered && !xrDevice.activeSession);
90
+ React.useEffect(() => {
91
+ setInterval(() => {
92
+ setShowOffer(xrDevice.sessionOffered && !xrDevice.activeSession);
93
+ }, 1000);
94
+ }, []);
95
+ return (_jsx(StyleSheetManager, { target: shadowRoot, disableCSSOMInjection: true, children: _jsxs(HeaderButtonsContainer, { style: {
96
+ zIndex: 899,
97
+ position: 'fixed',
98
+ top: showOffer ? '8px' : '-30px',
99
+ display: 'flex',
100
+ flexDirection: 'row',
101
+ alignItems: 'center',
102
+ justifyItems: 'space-between',
103
+ left: '50vw',
104
+ transform: 'translateX(-50%)',
105
+ transition: 'all 0.2s ease-in-out',
106
+ paddingLeft: '5px',
107
+ gap: '3px',
108
+ }, children: [_jsx(IWERIcon, { size: 24 }), _jsx(HeaderButton, { onClick: () => {
109
+ xrDevice.grantOfferedSession();
110
+ }, style: {
111
+ fontSize: '16px',
112
+ }, children: "Enter XR" })] }) }));
92
113
  };
114
+ export { VERSION };
93
115
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ {
2
+ "name": "@iwer/devui",
3
+ "version": "0.2.1",
4
+ "description": "Dev UI for IWER",
5
+ "type": "module",
6
+ "main": "lib/index.js",
7
+ "types": "lib/index.d.ts",
8
+ "files": [
9
+ "build",
10
+ "lib"
11
+ ],
12
+ "scripts": {
13
+ "build": "tsc && rollup -c"
14
+ },
15
+ "repository": {
16
+ "type": "git",
17
+ "url": "git+https://github.com/meta-quest/immersive-web-emulation-runtime.git"
18
+ },
19
+ "keywords": [],
20
+ "author": "Felix Zhang <fe1ix@meta.com>",
21
+ "license": "MIT",
22
+ "bugs": {
23
+ "url": "https://github.com/meta-quest/immersive-web-emulation-runtime/issues"
24
+ },
25
+ "homepage": "https://github.com/meta-quest/immersive-web-emulation-runtime#readme",
26
+ "dependencies": {
27
+ "@fortawesome/fontawesome-svg-core": "6.6.0",
28
+ "@fortawesome/free-solid-svg-icons": "6.6.0",
29
+ "@fortawesome/react-fontawesome": "0.2.2",
30
+ "@pmndrs/handle": "^6.5.2",
31
+ "@pmndrs/pointer-events": "^6.5.2",
32
+ "react": "18.3.1",
33
+ "react-dom": "18.3.1",
34
+ "styled-components": "6.1.13",
35
+ "three": "0.172.0",
36
+ "zustand": "^5.0.3"
37
+ },
38
+ "peerDependencies": {
39
+ "iwer": "^1.0.3"
40
+ },
41
+ "devDependencies": {
42
+ "@rollup/plugin-babel": "^6.0.4",
43
+ "@rollup/plugin-commonjs": "^28.0.1",
44
+ "@rollup/plugin-node-resolve": "^15.3.0",
45
+ "@rollup/plugin-replace": "^6.0.1",
46
+ "@rollup/plugin-terser": "^0.4.4",
47
+ "@types/react": "^18.3.12",
48
+ "@types/react-dom": "^18.3.1",
49
+ "@types/styled-components": "^5.1.34",
50
+ "@types/three": "^0.172.0",
51
+ "rollup": "^4.24.3",
52
+ "rollup-plugin-peer-deps-external": "^2.2.4",
53
+ "typescript": "^5.6.3"
54
+ }
55
+ }
package/lib/scene.d.ts CHANGED
@@ -4,56 +4,39 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
- import { Group, Mesh, PerspectiveCamera, Quaternion, Scene, Vector3, WebGLRenderer } from 'three';
8
- import { TransformControls } from 'three/examples/jsm/controls/TransformControls.js';
7
+ import { Vector3 } from 'three';
8
+ import { TransformHandles } from '@pmndrs/handle';
9
9
  import { XRDevice } from 'iwer';
10
- declare const PRIVATE: unique symbol;
10
+ export declare const PRIVATE: unique symbol;
11
+ type Handedness = 'left' | 'right';
11
12
  export declare class InputLayer {
12
- [PRIVATE]: {
13
- canvasContainer: HTMLDivElement;
14
- renderer: WebGLRenderer;
15
- scene: Scene;
16
- camera: PerspectiveCamera;
17
- playerRig: Group;
18
- cameraRig: Group;
19
- resizeObserver: ResizeObserver;
20
- xrDevice: XRDevice;
21
- controllerIndicators: {
22
- [key in 'left' | 'right']: Mesh;
23
- };
24
- transformControls: {
25
- [key in 'left' | 'right']: TransformControls;
26
- };
27
- isPointerLocked: boolean;
28
- vec3: Vector3;
29
- quat: Quaternion;
30
- mouseMoveHandler: (event: MouseEvent) => void;
31
- headsetDefaultPosition: Vector3;
32
- headsetDefaultQuaternion: Quaternion;
33
- controllerDefaultPositions: {
34
- [key in 'left' | 'right']: Vector3;
35
- };
36
- controllerDefaultQuaternions: {
37
- [key in 'left' | 'right']: Quaternion;
38
- };
39
- keyState: {
40
- [key: string]: boolean;
41
- };
42
- movePlayerRig: () => void;
43
- moveInterval: number | null;
44
- };
13
+ private xrDevice;
14
+ transformHandles: Map<Handedness, TransformHandles>;
15
+ combinedCameraPosition: Vector3;
16
+ private renderer;
17
+ private scene;
18
+ private camera;
19
+ private playerRig;
20
+ private cameraRig;
21
+ private isPointerLocked;
22
+ private vec3;
23
+ private quat;
24
+ private mouseMoveHandler;
25
+ private headsetDefaultPosition;
26
+ private headsetDefaultQuaternion;
27
+ private keyState;
28
+ private forwardHtmlEvents;
29
+ private lastTime;
45
30
  constructor(xrDevice: XRDevice);
46
31
  lockPointer(): void;
47
32
  pointerLockChangeHandler(): void;
48
33
  keyDownHandler(event: KeyboardEvent): void;
49
34
  keyUpHandler(event: KeyboardEvent): void;
50
- movePlayerRig(): void;
51
- syncFovy(): void;
35
+ movePlayerRig(delta: number): void;
52
36
  resetDeviceTransforms(): void;
53
37
  syncDeviceTransforms(): void;
54
- renderScene(): void;
38
+ renderScene(time: number): void;
55
39
  get domElement(): HTMLCanvasElement;
56
- resize(): void;
57
40
  dispose(): void;
58
41
  }
59
42
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"scene.d.ts","sourceRoot":"","sources":["../src/scene.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAGN,KAAK,EACL,IAAI,EAEJ,iBAAiB,EACjB,UAAU,EAEV,KAAK,EACL,OAAO,EACP,aAAa,EACb,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,iBAAiB,EAAE,MAAM,kDAAkD,CAAC;AACrF,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAEhC,QAAA,MAAM,OAAO,eAAqC,CAAC;AAGnD,qBAAa,UAAU;IACtB,CAAC,OAAO,CAAC,EAAE;QACV,eAAe,EAAE,cAAc,CAAC;QAChC,QAAQ,EAAE,aAAa,CAAC;QACxB,KAAK,EAAE,KAAK,CAAC;QACb,MAAM,EAAE,iBAAiB,CAAC;QAC1B,SAAS,EAAE,KAAK,CAAC;QACjB,SAAS,EAAE,KAAK,CAAC;QACjB,cAAc,EAAE,cAAc,CAAC;QAC/B,QAAQ,EAAE,QAAQ,CAAC;QACnB,oBAAoB,EAAE;aAAG,GAAG,IAAI,MAAM,GAAG,OAAO,GAAG,IAAI;SAAE,CAAC;QAC1D,iBAAiB,EAAE;aAAG,GAAG,IAAI,MAAM,GAAG,OAAO,GAAG,iBAAiB;SAAE,CAAC;QACpE,eAAe,EAAE,OAAO,CAAC;QACzB,IAAI,EAAE,OAAO,CAAC;QACd,IAAI,EAAE,UAAU,CAAC;QACjB,gBAAgB,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;QAC9C,sBAAsB,EAAE,OAAO,CAAC;QAChC,wBAAwB,EAAE,UAAU,CAAC;QACrC,0BAA0B,EAAE;aAAG,GAAG,IAAI,MAAM,GAAG,OAAO,GAAG,OAAO;SAAE,CAAC;QACnE,4BAA4B,EAAE;aAAG,GAAG,IAAI,MAAM,GAAG,OAAO,GAAG,UAAU;SAAE,CAAC;QACxE,QAAQ,EAAE;YAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;SAAE,CAAC;QACrC,aAAa,EAAE,MAAM,IAAI,CAAC;QAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;KAC5B,CAAC;gBAEU,QAAQ,EAAE,QAAQ;IAqL9B,WAAW;IAUX,wBAAwB;IAmCxB,cAAc,CAAC,KAAK,EAAE,aAAa;IA2BnC,YAAY,CAAC,KAAK,EAAE,aAAa;IAkBjC,aAAa;IAkBb,QAAQ;IAKR,qBAAqB;IAsBrB,oBAAoB;IAsBpB,WAAW;IAKX,IAAI,UAAU,sBAEb;IAED,MAAM;IASN,OAAO;CA8BP"}
1
+ {"version":3,"file":"scene.d.ts","sourceRoot":"","sources":["../src/scene.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EASN,OAAO,EAEP,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,gBAAgB,EAAwB,MAAM,gBAAgB,CAAC;AAExE,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAGhC,eAAO,MAAM,OAAO,eAAqC,CAAC;AAG1D,KAAK,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC;AAEnC,qBAAa,UAAU;IA2BV,OAAO,CAAC,QAAQ;IA1BrB,gBAAgB,EAAE,GAAG,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;IACpD,sBAAsB,EAAE,OAAO,CAAiB;IAEvD,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,IAAI,CAA0B;IACtC,OAAO,CAAC,IAAI,CAAgC;IAC5C,OAAO,CAAC,gBAAgB,CAA8B;IACtD,OAAO,CAAC,sBAAsB,CAAU;IACxC,OAAO,CAAC,wBAAwB,CAAa;IAC7C,OAAO,CAAC,QAAQ,CAQd;IACF,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,QAAQ,CAAa;gBAET,QAAQ,EAAE,QAAQ;IAwHtC,WAAW;IAUX,wBAAwB;IAqBxB,cAAc,CAAC,KAAK,EAAE,aAAa;IAgBnC,YAAY,CAAC,KAAK,EAAE,aAAa;IAQjC,aAAa,CAAC,KAAK,EAAE,MAAM;IAgB3B,qBAAqB;IAgBrB,oBAAoB;IAcpB,WAAW,CAAC,IAAI,EAAE,MAAM;IAkDxB,IAAI,UAAU,sBAEb;IAED,OAAO;CAyBP"}