@iwsdk/core 0.4.2 → 0.5.0

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 (314) hide show
  1. package/README.md +4 -7
  2. package/dist/asset/asset-manager.d.ts +136 -8
  3. package/dist/asset/asset-manager.d.ts.map +1 -1
  4. package/dist/asset/asset-manager.js +491 -47
  5. package/dist/asset/asset-manager.js.map +1 -1
  6. package/dist/asset/cache-manager.d.ts +4 -2
  7. package/dist/asset/cache-manager.d.ts.map +1 -1
  8. package/dist/asset/cache-manager.js +10 -3
  9. package/dist/asset/cache-manager.js.map +1 -1
  10. package/dist/asset/loaders/audio-loader.d.ts +1 -1
  11. package/dist/asset/loaders/audio-loader.d.ts.map +1 -1
  12. package/dist/asset/loaders/audio-loader.js +8 -26
  13. package/dist/asset/loaders/audio-loader.js.map +1 -1
  14. package/dist/asset/loaders/cached-asset-load.d.ts +35 -0
  15. package/dist/asset/loaders/cached-asset-load.d.ts.map +1 -0
  16. package/dist/asset/loaders/cached-asset-load.js +100 -0
  17. package/dist/asset/loaders/cached-asset-load.js.map +1 -0
  18. package/dist/asset/loaders/gltf-loader.d.ts +28 -1
  19. package/dist/asset/loaders/gltf-loader.d.ts.map +1 -1
  20. package/dist/asset/loaders/gltf-loader.js +254 -33
  21. package/dist/asset/loaders/gltf-loader.js.map +1 -1
  22. package/dist/asset/loaders/hdr-texture-loader.d.ts +1 -1
  23. package/dist/asset/loaders/hdr-texture-loader.d.ts.map +1 -1
  24. package/dist/asset/loaders/hdr-texture-loader.js +19 -29
  25. package/dist/asset/loaders/hdr-texture-loader.js.map +1 -1
  26. package/dist/asset/loaders/texture-loader.d.ts +1 -1
  27. package/dist/asset/loaders/texture-loader.d.ts.map +1 -1
  28. package/dist/asset/loaders/texture-loader.js +9 -26
  29. package/dist/asset/loaders/texture-loader.js.map +1 -1
  30. package/dist/asset/loaders/uikitml-loader.d.ts +12 -0
  31. package/dist/asset/loaders/uikitml-loader.d.ts.map +1 -0
  32. package/dist/asset/loaders/uikitml-loader.js +44 -0
  33. package/dist/asset/loaders/uikitml-loader.js.map +1 -0
  34. package/dist/audio/audio-pool.d.ts +7 -0
  35. package/dist/audio/audio-pool.d.ts.map +1 -1
  36. package/dist/audio/audio-pool.js.map +1 -1
  37. package/dist/audio/audio-system.d.ts +1 -0
  38. package/dist/audio/audio-system.d.ts.map +1 -1
  39. package/dist/audio/audio-system.js +16 -2
  40. package/dist/audio/audio-system.js.map +1 -1
  41. package/dist/camera/camera-system.d.ts.map +1 -1
  42. package/dist/camera/camera-system.js +5 -3
  43. package/dist/camera/camera-system.js.map +1 -1
  44. package/dist/depth/depth-sensing-system.d.ts.map +1 -1
  45. package/dist/depth/depth-sensing-system.js +31 -10
  46. package/dist/depth/depth-sensing-system.js.map +1 -1
  47. package/dist/ecs/builtin-components.d.ts +1239 -0
  48. package/dist/ecs/builtin-components.d.ts.map +1 -0
  49. package/dist/ecs/builtin-components.js +87 -0
  50. package/dist/ecs/builtin-components.js.map +1 -0
  51. package/dist/ecs/component-editor-metadata.d.ts +19 -0
  52. package/dist/ecs/component-editor-metadata.d.ts.map +1 -0
  53. package/dist/ecs/component-editor-metadata.js +19 -0
  54. package/dist/ecs/component-editor-metadata.js.map +1 -0
  55. package/dist/ecs/component-manifest.d.ts +24 -0
  56. package/dist/ecs/component-manifest.d.ts.map +1 -0
  57. package/dist/ecs/component-manifest.js +121 -0
  58. package/dist/ecs/component-manifest.js.map +1 -0
  59. package/dist/ecs/component.d.ts +1 -0
  60. package/dist/ecs/component.d.ts.map +1 -1
  61. package/dist/ecs/entity.d.ts +20 -2
  62. package/dist/ecs/entity.d.ts.map +1 -1
  63. package/dist/ecs/entity.js +59 -3
  64. package/dist/ecs/entity.js.map +1 -1
  65. package/dist/ecs/index.d.ts +3 -1
  66. package/dist/ecs/index.d.ts.map +1 -1
  67. package/dist/ecs/system.d.ts +9 -0
  68. package/dist/ecs/system.d.ts.map +1 -1
  69. package/dist/ecs/system.js.map +1 -1
  70. package/dist/ecs/world.d.ts +158 -4
  71. package/dist/ecs/world.d.ts.map +1 -1
  72. package/dist/ecs/world.js +304 -5
  73. package/dist/ecs/world.js.map +1 -1
  74. package/dist/environment/dome-gradient.d.ts +2 -1
  75. package/dist/environment/dome-gradient.d.ts.map +1 -1
  76. package/dist/environment/dome-gradient.js +2 -1
  77. package/dist/environment/dome-gradient.js.map +1 -1
  78. package/dist/environment/environment-system.d.ts +19 -3
  79. package/dist/environment/environment-system.d.ts.map +1 -1
  80. package/dist/environment/environment-system.js +78 -48
  81. package/dist/environment/environment-system.js.map +1 -1
  82. package/dist/environment/gradient-environment.d.ts.map +1 -1
  83. package/dist/environment/gradient-environment.js +13 -7
  84. package/dist/environment/gradient-environment.js.map +1 -1
  85. package/dist/environment/scene-ar-environment.d.ts +39 -0
  86. package/dist/environment/scene-ar-environment.d.ts.map +1 -0
  87. package/dist/environment/scene-ar-environment.js +93 -0
  88. package/dist/environment/scene-ar-environment.js.map +1 -0
  89. package/dist/grab/grab-helpers.d.ts +39 -0
  90. package/dist/grab/grab-helpers.d.ts.map +1 -0
  91. package/dist/grab/grab-helpers.js +59 -0
  92. package/dist/grab/grab-helpers.js.map +1 -0
  93. package/dist/grab/grab-system.d.ts +45 -0
  94. package/dist/grab/grab-system.d.ts.map +1 -1
  95. package/dist/grab/grab-system.js +67 -5
  96. package/dist/grab/grab-system.js.map +1 -1
  97. package/dist/grab/grab-warnings.d.ts +14 -0
  98. package/dist/grab/grab-warnings.d.ts.map +1 -0
  99. package/dist/grab/grab-warnings.js +53 -0
  100. package/dist/grab/grab-warnings.js.map +1 -0
  101. package/dist/grab/handles.d.ts.map +1 -1
  102. package/dist/grab/handles.js +8 -3
  103. package/dist/grab/handles.js.map +1 -1
  104. package/dist/index.d.ts +4 -0
  105. package/dist/index.d.ts.map +1 -1
  106. package/dist/index.js +42 -16
  107. package/dist/index.js.map +1 -1
  108. package/dist/init/world-initializer.d.ts +11 -7
  109. package/dist/init/world-initializer.d.ts.map +1 -1
  110. package/dist/init/world-initializer.js +118 -57
  111. package/dist/init/world-initializer.js.map +1 -1
  112. package/dist/init/xr.d.ts +0 -1
  113. package/dist/init/xr.d.ts.map +1 -1
  114. package/dist/init/xr.js +12 -3
  115. package/dist/init/xr.js.map +1 -1
  116. package/dist/input/input-system.d.ts.map +1 -1
  117. package/dist/input/input-system.js +26 -11
  118. package/dist/input/input-system.js.map +1 -1
  119. package/dist/layers/xr-layer-state.d.ts +47 -0
  120. package/dist/layers/xr-layer-state.d.ts.map +1 -0
  121. package/dist/layers/xr-layer-state.js +23 -0
  122. package/dist/layers/xr-layer-state.js.map +1 -0
  123. package/dist/layers/xr-layer-system.d.ts +45 -93
  124. package/dist/layers/xr-layer-system.d.ts.map +1 -1
  125. package/dist/layers/xr-layer-system.js +4 -25
  126. package/dist/layers/xr-layer-system.js.map +1 -1
  127. package/dist/level/index.d.ts +6 -2
  128. package/dist/level/index.d.ts.map +1 -1
  129. package/dist/level/level-component-applier.d.ts +24 -0
  130. package/dist/level/level-component-applier.d.ts.map +1 -0
  131. package/dist/level/level-component-applier.js +199 -0
  132. package/dist/level/level-component-applier.js.map +1 -0
  133. package/dist/level/level-player-rig.d.ts +17 -0
  134. package/dist/level/level-player-rig.d.ts.map +1 -0
  135. package/dist/level/level-player-rig.js +113 -0
  136. package/dist/level/level-player-rig.js.map +1 -0
  137. package/dist/level/level-scene-environment.d.ts +28 -0
  138. package/dist/level/level-scene-environment.d.ts.map +1 -0
  139. package/dist/level/level-scene-environment.js +121 -0
  140. package/dist/level/level-scene-environment.js.map +1 -0
  141. package/dist/level/level-scene-json-importer.d.ts +53 -0
  142. package/dist/level/level-scene-json-importer.d.ts.map +1 -0
  143. package/dist/level/level-scene-json-importer.js +256 -0
  144. package/dist/level/level-scene-json-importer.js.map +1 -0
  145. package/dist/level/level-scene-material.d.ts +22 -0
  146. package/dist/level/level-scene-material.d.ts.map +1 -0
  147. package/dist/level/level-scene-material.js +231 -0
  148. package/dist/level/level-scene-material.js.map +1 -0
  149. package/dist/level/level-scene-object.d.ts +49 -0
  150. package/dist/level/level-scene-object.d.ts.map +1 -0
  151. package/dist/level/level-scene-object.js +396 -0
  152. package/dist/level/level-scene-object.js.map +1 -0
  153. package/dist/level/level-scene-primitive.d.ts +21 -0
  154. package/dist/level/level-scene-primitive.d.ts.map +1 -0
  155. package/dist/level/level-scene-primitive.js +159 -0
  156. package/dist/level/level-scene-primitive.js.map +1 -0
  157. package/dist/level/level-system.d.ts +14 -20
  158. package/dist/level/level-system.d.ts.map +1 -1
  159. package/dist/level/level-system.js +114 -49
  160. package/dist/level/level-system.js.map +1 -1
  161. package/dist/lighting/index.d.ts +10 -0
  162. package/dist/lighting/index.d.ts.map +1 -0
  163. package/dist/lighting/index.js +4 -0
  164. package/dist/lighting/index.js.map +1 -0
  165. package/dist/lighting/light-binding.d.ts +76 -0
  166. package/dist/lighting/light-binding.d.ts.map +1 -0
  167. package/dist/lighting/light-binding.js +229 -0
  168. package/dist/lighting/light-binding.js.map +1 -0
  169. package/dist/lighting/light-components.d.ts +885 -0
  170. package/dist/lighting/light-components.d.ts.map +1 -0
  171. package/dist/lighting/light-components.js +146 -0
  172. package/dist/lighting/light-components.js.map +1 -0
  173. package/dist/lighting/light-system.d.ts +919 -0
  174. package/dist/lighting/light-system.d.ts.map +1 -0
  175. package/dist/lighting/light-system.js +244 -0
  176. package/dist/lighting/light-system.js.map +1 -0
  177. package/dist/locomotion/locomotion-environment.d.ts +27 -0
  178. package/dist/locomotion/locomotion-environment.d.ts.map +1 -0
  179. package/dist/locomotion/locomotion-environment.js +22 -0
  180. package/dist/locomotion/locomotion-environment.js.map +1 -0
  181. package/dist/locomotion/locomotion.d.ts +5 -34
  182. package/dist/locomotion/locomotion.d.ts.map +1 -1
  183. package/dist/locomotion/locomotion.js +33 -31
  184. package/dist/locomotion/locomotion.js.map +1 -1
  185. package/dist/locomotion/materials/line.js +1 -1
  186. package/dist/locomotion/slide.d.ts.map +1 -1
  187. package/dist/locomotion/slide.js +2 -2
  188. package/dist/locomotion/slide.js.map +1 -1
  189. package/dist/mcp/ecs-debug-tools.d.ts.map +1 -1
  190. package/dist/mcp/ecs-debug-tools.js +10 -2
  191. package/dist/mcp/ecs-debug-tools.js.map +1 -1
  192. package/dist/mcp/mcp-runtime.d.ts.map +1 -1
  193. package/dist/mcp/mcp-runtime.js +4 -1
  194. package/dist/mcp/mcp-runtime.js.map +1 -1
  195. package/dist/mcp/scene-tools.d.ts +152 -1
  196. package/dist/mcp/scene-tools.d.ts.map +1 -1
  197. package/dist/mcp/scene-tools.js +538 -8
  198. package/dist/mcp/scene-tools.js.map +1 -1
  199. package/dist/physics/index.js +11 -4
  200. package/dist/physics/index.js.map +1 -1
  201. package/dist/physics/physics-system.d.ts +704 -11
  202. package/dist/physics/physics-system.d.ts.map +1 -1
  203. package/dist/physics/physics-system.js +307 -25
  204. package/dist/physics/physics-system.js.map +1 -1
  205. package/dist/physics/physicsBody.d.ts +40 -1
  206. package/dist/physics/physicsBody.d.ts.map +1 -1
  207. package/dist/physics/physicsBody.js +39 -0
  208. package/dist/physics/physicsBody.js.map +1 -1
  209. package/dist/physics/physicsManipulation.d.ts +1 -1
  210. package/dist/physics/physicsManipulation.d.ts.map +1 -1
  211. package/dist/physics/physicsShape.d.ts +5 -3
  212. package/dist/physics/physicsShape.d.ts.map +1 -1
  213. package/dist/physics/physicsShape.js +2 -1
  214. package/dist/physics/physicsShape.js.map +1 -1
  215. package/dist/physics/utils.d.ts +10 -0
  216. package/dist/physics/utils.d.ts.map +1 -1
  217. package/dist/physics/utils.js +82 -48
  218. package/dist/physics/utils.js.map +1 -1
  219. package/dist/project/index.d.ts +11 -0
  220. package/dist/project/index.d.ts.map +1 -0
  221. package/dist/project/index.js +5 -0
  222. package/dist/project/index.js.map +1 -0
  223. package/dist/project/normalize.d.ts +19 -0
  224. package/dist/project/normalize.d.ts.map +1 -0
  225. package/dist/project/normalize.js +206 -0
  226. package/dist/project/normalize.js.map +1 -0
  227. package/dist/project/paths.d.ts +21 -0
  228. package/dist/project/paths.d.ts.map +1 -0
  229. package/dist/project/paths.js +75 -0
  230. package/dist/project/paths.js.map +1 -0
  231. package/dist/project/types.d.ts +159 -0
  232. package/dist/project/types.d.ts.map +1 -0
  233. package/dist/project/types.js +11 -0
  234. package/dist/project/types.js.map +1 -0
  235. package/dist/project/validation.d.ts +17 -0
  236. package/dist/project/validation.d.ts.map +1 -0
  237. package/dist/project/validation.js +501 -0
  238. package/dist/project/validation.js.map +1 -0
  239. package/dist/scene-understanding/scene-understanding-system.d.ts +23 -2
  240. package/dist/scene-understanding/scene-understanding-system.d.ts.map +1 -1
  241. package/dist/scene-understanding/scene-understanding-system.js +76 -54
  242. package/dist/scene-understanding/scene-understanding-system.js.map +1 -1
  243. package/dist/schemas/iwsdk-project.v1.schema.json +305 -0
  244. package/dist/transform/transform-component.d.ts +32 -0
  245. package/dist/transform/transform-component.d.ts.map +1 -0
  246. package/dist/transform/transform-component.js +24 -0
  247. package/dist/transform/transform-component.js.map +1 -0
  248. package/dist/transform/transform.d.ts +9 -42
  249. package/dist/transform/transform.d.ts.map +1 -1
  250. package/dist/transform/transform.js +8 -25
  251. package/dist/transform/transform.js.map +1 -1
  252. package/dist/ui/document.d.ts +9 -2
  253. package/dist/ui/document.d.ts.map +1 -1
  254. package/dist/ui/document.js +30 -5
  255. package/dist/ui/document.js.map +1 -1
  256. package/dist/ui/follow-component.d.ts +57 -0
  257. package/dist/ui/follow-component.d.ts.map +1 -0
  258. package/dist/ui/follow-component.js +38 -0
  259. package/dist/ui/follow-component.js.map +1 -0
  260. package/dist/ui/follow.d.ts +28 -102
  261. package/dist/ui/follow.d.ts.map +1 -1
  262. package/dist/ui/follow.js +10 -48
  263. package/dist/ui/follow.js.map +1 -1
  264. package/dist/ui/index.d.ts +3 -0
  265. package/dist/ui/index.d.ts.map +1 -1
  266. package/dist/ui/panel-components.d.ts +29 -0
  267. package/dist/ui/panel-components.d.ts.map +1 -0
  268. package/dist/ui/panel-components.js +22 -0
  269. package/dist/ui/panel-components.js.map +1 -0
  270. package/dist/ui/screenspace-component.d.ts +39 -0
  271. package/dist/ui/screenspace-component.d.ts.map +1 -0
  272. package/dist/ui/screenspace-component.js +21 -0
  273. package/dist/ui/screenspace-component.js.map +1 -0
  274. package/dist/ui/screenspace.d.ts +47 -135
  275. package/dist/ui/screenspace.d.ts.map +1 -1
  276. package/dist/ui/screenspace.js +127 -65
  277. package/dist/ui/screenspace.js.map +1 -1
  278. package/dist/ui/ui.d.ts +20 -122
  279. package/dist/ui/ui.d.ts.map +1 -1
  280. package/dist/ui/ui.js +44 -107
  281. package/dist/ui/ui.js.map +1 -1
  282. package/dist/ui/uikitml-asset.d.ts +25 -0
  283. package/dist/ui/uikitml-asset.d.ts.map +1 -0
  284. package/dist/ui/uikitml-asset.js +56 -0
  285. package/dist/ui/uikitml-asset.js.map +1 -0
  286. package/dist/ui/uikitml.d.ts +41 -0
  287. package/dist/ui/uikitml.d.ts.map +1 -0
  288. package/dist/ui/uikitml.js +119 -0
  289. package/dist/ui/uikitml.js.map +1 -0
  290. package/dist/vendor/draco/gltf/draco_encoder.js +0 -0
  291. package/dist/version.d.ts +1 -1
  292. package/dist/version.js +1 -1
  293. package/dist/visibility/visibility-component.d.ts +14 -0
  294. package/dist/visibility/visibility-component.d.ts.map +1 -0
  295. package/dist/visibility/visibility-component.js +15 -0
  296. package/dist/visibility/visibility-component.js.map +1 -0
  297. package/dist/visibility/visibility.d.ts +3 -10
  298. package/dist/visibility/visibility.d.ts.map +1 -1
  299. package/dist/visibility/visibility.js +9 -12
  300. package/dist/visibility/visibility.js.map +1 -1
  301. package/package.json +48 -19
  302. package/LICENSE +0 -21
  303. package/dist/ecs/component-registry.d.ts +0 -54
  304. package/dist/ecs/component-registry.d.ts.map +0 -1
  305. package/dist/ecs/component-registry.js +0 -86
  306. package/dist/ecs/component-registry.js.map +0 -1
  307. package/dist/level/level-entity-creator.d.ts +0 -27
  308. package/dist/level/level-entity-creator.d.ts.map +0 -1
  309. package/dist/level/level-entity-creator.js +0 -108
  310. package/dist/level/level-entity-creator.js.map +0 -1
  311. package/dist/level/level-glxf-importer.d.ts +0 -23
  312. package/dist/level/level-glxf-importer.d.ts.map +0 -1
  313. package/dist/level/level-glxf-importer.js +0 -40
  314. package/dist/level/level-glxf-importer.js.map +0 -1
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ import type { Entity } from '../ecs/entity.js';
8
+ import type { World } from '../ecs/world.js';
9
+ /** Canonical component id prefix used by native scene JSON. */
10
+ export declare const LEVEL_COMPONENT_PREFIX = "com.iwsdk.components.";
11
+ export interface LevelComponentApplyOptions {
12
+ allowUnprefixedComponents?: boolean;
13
+ nodeId?: string;
14
+ resolveEntityReference?: (reference: unknown) => Entity | undefined;
15
+ strict?: boolean;
16
+ }
17
+ export declare class LevelComponentApplier {
18
+ static applyComponents(entity: Entity, components: Record<string, unknown>, world: World, options?: LevelComponentApplyOptions): void;
19
+ static removeComponents(entity: Entity, components: Record<string, unknown> | undefined): void;
20
+ private static updateComponent;
21
+ private static mapComponentDataToProps;
22
+ private static handlePanelComponents;
23
+ }
24
+ //# sourceMappingURL=level-component-applier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"level-component-applier.d.ts","sourceRoot":"","sources":["../../src/level/level-component-applier.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAG7C,+DAA+D;AAC/D,eAAO,MAAM,sBAAsB,0BAA0B,CAAC;AAM9D,MAAM,WAAW,0BAA0B;IACzC,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sBAAsB,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,MAAM,GAAG,SAAS,CAAC;IACpE,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,qBAAa,qBAAqB;IAChC,MAAM,CAAC,eAAe,CACpB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE,0BAA+B,GACvC,IAAI;IAuDP,MAAM,CAAC,gBAAgB,CACrB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAC9C,IAAI;IAsBP,OAAO,CAAC,MAAM,CAAC,eAAe;IAyB9B,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAmDtC,OAAO,CAAC,MAAM,CAAC,qBAAqB;CAoCrC"}
@@ -0,0 +1,199 @@
1
+ import { getComponentEditorMetadata } from '../ecs/component-editor-metadata.js';
2
+ import { ComponentRegistry, Types } from 'elics';
3
+ import '@pmndrs/uikit';
4
+ import '@preact/signals-core';
5
+ import 'three';
6
+ import '../runtime/three.js';
7
+ import '../ui/ui.js';
8
+ import '@drawcall/uikitml';
9
+ import '../asset/asset-manager.js';
10
+ import '../asset/cache-manager.js';
11
+ import '../ui/follow.js';
12
+ import '../ui/screenspace.js';
13
+ import { PanelUI } from '../ui/panel-components.js';
14
+
15
+ /**
16
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
17
+ *
18
+ * This source code is licensed under the MIT license found in the
19
+ * LICENSE file in the root directory of this source tree.
20
+ */
21
+ /** Canonical component id prefix used by native scene JSON. */
22
+ const LEVEL_COMPONENT_PREFIX = 'com.iwsdk.components.';
23
+ const LEVEL_COMPONENT_ALIASES = {
24
+ Interactable: 'RayInteractable',
25
+ };
26
+ class LevelComponentApplier {
27
+ static applyComponents(entity, components, world, options = {}) {
28
+ const allComponents = ComponentRegistry.getAllComponents();
29
+ this.handlePanelComponents(entity, components, world, options);
30
+ Object.entries(components).forEach(([componentName, componentData]) => {
31
+ var _a;
32
+ const hasPackagePrefix = componentName.startsWith(LEVEL_COMPONENT_PREFIX);
33
+ const allowUnprefixed = options.allowUnprefixedComponents === true || options.strict === true;
34
+ if (!hasPackagePrefix && !allowUnprefixed) {
35
+ return;
36
+ }
37
+ const componentKey = stripComponentPrefix(componentName);
38
+ const targetId = normalizeComponentId(componentKey);
39
+ if (targetId === 'PanelUI') {
40
+ return;
41
+ }
42
+ const component = allComponents.find((comp) => comp.id === targetId);
43
+ if (component) {
44
+ const componentProps = this.mapComponentDataToProps(component, componentData, options);
45
+ if (!component.bitmask) {
46
+ world.registerComponent(component);
47
+ }
48
+ if (entity.hasComponent(component) &&
49
+ ((_a = getComponentEditorMetadata(component)) === null || _a === void 0 ? void 0 : _a.intrinsic) === true) {
50
+ this.updateComponent(entity, component, componentProps);
51
+ }
52
+ else {
53
+ entity.addComponent(component, componentProps);
54
+ }
55
+ }
56
+ else if (options.strict) {
57
+ throw new Error(withSceneComponentContext(`Unknown component "${componentName}". Available components: ${allComponents
58
+ .map((comp) => comp.id)
59
+ .join(', ')}`, options.nodeId, componentName));
60
+ }
61
+ else if (componentName.startsWith(LEVEL_COMPONENT_PREFIX)) {
62
+ console.warn(`Component "${componentName}" not found in registry. Available components:`, allComponents.map((comp) => comp.id));
63
+ }
64
+ });
65
+ }
66
+ static removeComponents(entity, components) {
67
+ var _a;
68
+ if (components == null) {
69
+ return;
70
+ }
71
+ const allComponents = ComponentRegistry.getAllComponents();
72
+ for (const componentName of Object.keys(components)) {
73
+ const targetId = normalizeComponentId(stripComponentPrefix(componentName));
74
+ const component = allComponents.find((entry) => entry.id === targetId);
75
+ if (component && entity.hasComponent(component)) {
76
+ if (((_a = getComponentEditorMetadata(component)) === null || _a === void 0 ? void 0 : _a.intrinsic) === true) {
77
+ if (component.id === 'Visibility') {
78
+ entity.setValue(component, 'isVisible', true);
79
+ }
80
+ }
81
+ else {
82
+ entity.removeComponent(component);
83
+ }
84
+ }
85
+ }
86
+ }
87
+ static updateComponent(entity, component, props) {
88
+ for (const [key, value] of Object.entries(props)) {
89
+ const field = component.schema[key];
90
+ if (field == null) {
91
+ continue;
92
+ }
93
+ if (field.type === Types.Vec2 ||
94
+ field.type === Types.Vec3 ||
95
+ field.type === Types.Vec4 ||
96
+ field.type === Types.Color) {
97
+ if (Array.isArray(value)) {
98
+ entity.getVectorView(component, key).set(value);
99
+ }
100
+ continue;
101
+ }
102
+ entity.setValue(component, key, value);
103
+ }
104
+ }
105
+ static mapComponentDataToProps(component, componentData, options) {
106
+ if (!isRecord(componentData)) {
107
+ return {};
108
+ }
109
+ const props = {};
110
+ Object.entries(componentData).forEach(([key, fieldData]) => {
111
+ var _a;
112
+ const field = component.schema[key];
113
+ if (!field) {
114
+ return;
115
+ }
116
+ if (isRecord(fieldData)) {
117
+ if ((field.type === Types.Entity || field.widget === 'entity') &&
118
+ isSceneEntityReference(fieldData)) {
119
+ const referencedEntity = (_a = options.resolveEntityReference) === null || _a === void 0 ? void 0 : _a.call(options, fieldData);
120
+ if (referencedEntity == null) {
121
+ if (options.strict) {
122
+ throw new Error(`Unable to resolve entity reference ${JSON.stringify(fieldData)}`);
123
+ }
124
+ props[key] = fieldData;
125
+ }
126
+ else {
127
+ props[key] =
128
+ field.type === Types.Entity
129
+ ? referencedEntity
130
+ : referencedEntity.object3D;
131
+ }
132
+ }
133
+ else if (field.type === Types.Enum && 'alias' in fieldData) {
134
+ props[key] = fieldData.alias;
135
+ }
136
+ else if ('value' in fieldData) {
137
+ props[key] = fieldData.value;
138
+ }
139
+ else {
140
+ props[key] = fieldData;
141
+ }
142
+ }
143
+ else {
144
+ props[key] = fieldData;
145
+ }
146
+ });
147
+ return props;
148
+ }
149
+ static handlePanelComponents(entity, components, world, options) {
150
+ const panelComponentName = canUseUnprefixedComponents(options) && components.PanelUI != null
151
+ ? 'PanelUI'
152
+ : `${LEVEL_COMPONENT_PREFIX}PanelUI`;
153
+ const panelComponent = panelComponentName === 'PanelUI'
154
+ ? components.PanelUI
155
+ : components[`${LEVEL_COMPONENT_PREFIX}PanelUI`];
156
+ const resolvedPanelComponent = panelComponent;
157
+ if (!isRecord(resolvedPanelComponent)) {
158
+ return;
159
+ }
160
+ const props = this.mapComponentDataToProps(PanelUI, resolvedPanelComponent, options);
161
+ if (typeof props.config !== 'string' || props.config.length === 0) {
162
+ return;
163
+ }
164
+ if (!PanelUI.bitmask) {
165
+ world.registerComponent(PanelUI);
166
+ }
167
+ entity.addComponent(PanelUI, {
168
+ config: props.config,
169
+ });
170
+ }
171
+ }
172
+ function isSceneEntityReference(value) {
173
+ return ((value.type === 'node' && typeof value.id === 'string') ||
174
+ (value.type === 'player-space' && typeof value.target === 'string') ||
175
+ value.type === 'level-root');
176
+ }
177
+ function canUseUnprefixedComponents(options) {
178
+ return options.allowUnprefixedComponents === true || options.strict === true;
179
+ }
180
+ function stripComponentPrefix(componentName) {
181
+ return componentName.startsWith(LEVEL_COMPONENT_PREFIX)
182
+ ? componentName.slice(LEVEL_COMPONENT_PREFIX.length)
183
+ : componentName;
184
+ }
185
+ function normalizeComponentId(componentId) {
186
+ var _a;
187
+ return (_a = LEVEL_COMPONENT_ALIASES[componentId]) !== null && _a !== void 0 ? _a : componentId;
188
+ }
189
+ function withSceneComponentContext(message, nodeId, componentName) {
190
+ return nodeId == null
191
+ ? `Component "${componentName}": ${message}`
192
+ : `Scene node "${nodeId}" component "${componentName}": ${message}`;
193
+ }
194
+ function isRecord(value) {
195
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
196
+ }
197
+
198
+ export { LEVEL_COMPONENT_PREFIX, LevelComponentApplier };
199
+ //# sourceMappingURL=level-component-applier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"level-component-applier.js","sources":["../../src/level/level-component-applier.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ import type { ScenePlayerRig, ScenePlayerTarget } from '@iwsdk/scene-composition';
8
+ import type { Entity } from '../ecs/entity.js';
9
+ import type { World } from '../ecs/world.js';
10
+ export interface ApplyScenePlayerRigOptions {
11
+ resolveEntityReference?: (reference: unknown) => Entity | undefined;
12
+ }
13
+ /** Reconcile scene-authored components on persistent player-rig entities. */
14
+ export declare function applyScenePlayerRig(world: World, nextRig: ScenePlayerRig | undefined, options?: ApplyScenePlayerRigOptions): void;
15
+ /** Resolve one persistent runtime player-space entity. */
16
+ export declare function getScenePlayerTargetEntity(world: World, target: ScenePlayerTarget): Entity;
17
+ //# sourceMappingURL=level-player-rig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"level-player-rig.d.ts","sourceRoot":"","sources":["../../src/level/level-player-rig.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAEV,cAAc,EACd,iBAAiB,EAElB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAW7C,MAAM,WAAW,0BAA0B;IACzC,sBAAsB,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,MAAM,GAAG,SAAS,CAAC;CACrE;AAID,6EAA6E;AAC7E,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,cAAc,GAAG,SAAS,EACnC,OAAO,GAAE,0BAA+B,GACvC,IAAI,CAkBN;AAqGD,0DAA0D;AAC1D,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,iBAAiB,GACxB,MAAM,CAQR"}
@@ -0,0 +1,113 @@
1
+ import '../runtime/three.js';
2
+ import { LevelComponentApplier } from './level-component-applier.js';
3
+ import { applySceneTransform } from './level-scene-object.js';
4
+ import { MathUtils } from 'three';
5
+
6
+ /**
7
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
8
+ *
9
+ * This source code is licensed under the MIT license found in the
10
+ * LICENSE file in the root directory of this source tree.
11
+ */
12
+ const appliedPlayerRigs = new WeakMap();
13
+ /** Reconcile scene-authored components on persistent player-rig entities. */
14
+ function applyScenePlayerRig(world, nextRig, options = {}) {
15
+ var _a;
16
+ const state = (_a = appliedPlayerRigs.get(world)) !== null && _a !== void 0 ? _a : createPlayerRigState(world);
17
+ const previousRig = state.rig;
18
+ removePlayerRigComponents(world, previousRig);
19
+ restorePlayerTransform(world, state.baseline);
20
+ try {
21
+ applyPlayerRig(world, nextRig, options.resolveEntityReference);
22
+ syncLocomotionPlayerPosition(world);
23
+ state.rig = nextRig == null ? undefined : structuredClone(nextRig);
24
+ state.resolveEntityReference = options.resolveEntityReference;
25
+ appliedPlayerRigs.set(world, state);
26
+ }
27
+ catch (error) {
28
+ removePlayerRigComponents(world, nextRig);
29
+ restorePlayerTransform(world, state.baseline);
30
+ applyPlayerRig(world, previousRig, state.resolveEntityReference);
31
+ syncLocomotionPlayerPosition(world);
32
+ throw error;
33
+ }
34
+ }
35
+ function applyPlayerRig(world, rig, resolveEntityReference) {
36
+ var _a;
37
+ if (((_a = world.playerEntity) === null || _a === void 0 ? void 0 : _a.object3D) != null) {
38
+ applySceneTransform(world.playerEntity.object3D, rig === null || rig === void 0 ? void 0 : rig.transform);
39
+ }
40
+ for (const [label, entity, descriptor] of playerRigTargets(world, rig)) {
41
+ if ((descriptor === null || descriptor === void 0 ? void 0 : descriptor.components) == null) {
42
+ continue;
43
+ }
44
+ LevelComponentApplier.applyComponents(entity, descriptor.components, world, {
45
+ nodeId: `$player/${label}`,
46
+ resolveEntityReference,
47
+ strict: true,
48
+ });
49
+ }
50
+ }
51
+ function createPlayerRigState(world) {
52
+ var _a;
53
+ return {
54
+ baseline: ((_a = world.playerEntity) === null || _a === void 0 ? void 0 : _a.object3D) == null
55
+ ? undefined
56
+ : captureTransform(world.playerEntity),
57
+ };
58
+ }
59
+ function captureTransform(entity) {
60
+ const object = entity.object3D;
61
+ return {
62
+ position: object.position.toArray(),
63
+ rotationDeg: [
64
+ MathUtils.radToDeg(object.rotation.x),
65
+ MathUtils.radToDeg(object.rotation.y),
66
+ MathUtils.radToDeg(object.rotation.z),
67
+ ],
68
+ scale: object.scale.toArray(),
69
+ };
70
+ }
71
+ function restorePlayerTransform(world, baseline) {
72
+ var _a;
73
+ if (((_a = world.playerEntity) === null || _a === void 0 ? void 0 : _a.object3D) != null && baseline != null) {
74
+ applySceneTransform(world.playerEntity.object3D, baseline);
75
+ }
76
+ }
77
+ function syncLocomotionPlayerPosition(world) {
78
+ var _a;
79
+ const player = (_a = world.playerEntity) === null || _a === void 0 ? void 0 : _a.object3D;
80
+ if (player == null) {
81
+ return;
82
+ }
83
+ world.setAuthoredPlayerPosition(player.position);
84
+ }
85
+ function removePlayerRigComponents(world, rig) {
86
+ for (const [, entity, descriptor] of playerRigTargets(world, rig)) {
87
+ LevelComponentApplier.removeComponents(entity, descriptor === null || descriptor === void 0 ? void 0 : descriptor.components);
88
+ }
89
+ }
90
+ function playerRigTargets(world, rig) {
91
+ const spaces = world.playerSpaceEntities;
92
+ const targets = [
93
+ ['player', world.playerEntity, rig],
94
+ ['camera', world.cameraEntity, rig === null || rig === void 0 ? void 0 : rig.camera],
95
+ ['head', world.playerHeadEntity, rig === null || rig === void 0 ? void 0 : rig.head],
96
+ ['left-target-ray', spaces === null || spaces === void 0 ? void 0 : spaces.raySpaces.left, rig === null || rig === void 0 ? void 0 : rig.leftTargetRay],
97
+ ['right-target-ray', spaces === null || spaces === void 0 ? void 0 : spaces.raySpaces.right, rig === null || rig === void 0 ? void 0 : rig.rightTargetRay],
98
+ ['left-grip', spaces === null || spaces === void 0 ? void 0 : spaces.gripSpaces.left, rig === null || rig === void 0 ? void 0 : rig.leftGrip],
99
+ ['right-grip', spaces === null || spaces === void 0 ? void 0 : spaces.gripSpaces.right, rig === null || rig === void 0 ? void 0 : rig.rightGrip],
100
+ ];
101
+ return targets.filter((entry) => { var _a; return ((_a = entry[1]) === null || _a === void 0 ? void 0 : _a.object3D) != null; });
102
+ }
103
+ /** Resolve one persistent runtime player-space entity. */
104
+ function getScenePlayerTargetEntity(world, target) {
105
+ const match = playerRigTargets(world, undefined).find(([candidate]) => candidate === target);
106
+ if (match == null) {
107
+ throw new Error(`Player-space target "${target}" is unavailable`);
108
+ }
109
+ return match[1];
110
+ }
111
+
112
+ export { applyScenePlayerRig, getScenePlayerTargetEntity };
113
+ //# sourceMappingURL=level-player-rig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"level-player-rig.js","sources":["../../src/level/level-player-rig.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ import type { SceneEnvironment } from '@iwsdk/scene-composition';
8
+ import { Scene, WebGLRenderer } from '../runtime/index.js';
9
+ export interface SceneEnvironmentState {
10
+ fog: Scene['fog'];
11
+ shadows: boolean;
12
+ shadowMapType: WebGLRenderer['shadowMap']['type'];
13
+ toneMapping: WebGLRenderer['toneMapping'];
14
+ toneMappingExposure: number;
15
+ userDataEnvironment: unknown;
16
+ }
17
+ /** Capture every renderer-global value changed by applySceneEnvironment. */
18
+ export declare function captureSceneEnvironment(scene: Scene, renderer: WebGLRenderer): SceneEnvironmentState;
19
+ /**
20
+ * Atomically apply scene environment fields and return the exact prior state.
21
+ *
22
+ * A supplied base state supplies values for omitted fields, allowing a level swap
23
+ * to replace the active authored environment without first detaching it.
24
+ */
25
+ export declare function applySceneEnvironment(scene: Scene, renderer: WebGLRenderer, environment: SceneEnvironment | undefined, baseState?: SceneEnvironmentState): SceneEnvironmentState;
26
+ /** Restore a state captured before a staged or committed scene was applied. */
27
+ export declare function restoreSceneEnvironment(scene: Scene, renderer: WebGLRenderer, state: SceneEnvironmentState): void;
28
+ //# sourceMappingURL=level-scene-environment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"level-scene-environment.d.ts","sourceRoot":"","sources":["../../src/level/level-scene-environment.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAWL,KAAK,EACL,aAAa,EACd,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;IAClD,WAAW,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;IAC1C,mBAAmB,EAAE,MAAM,CAAC;IAC5B,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAED,4EAA4E;AAC5E,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,aAAa,GACtB,qBAAqB,CASvB;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,aAAa,EACvB,WAAW,EAAE,gBAAgB,GAAG,SAAS,EACzC,SAAS,CAAC,EAAE,qBAAqB,GAChC,qBAAqB,CAavB;AAED,+EAA+E;AAC/E,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,qBAAqB,GAC3B,IAAI,CAQN"}
@@ -0,0 +1,121 @@
1
+ import '../runtime/three.js';
2
+ import { Fog, FogExp2, ACESFilmicToneMapping, CineonToneMapping, ReinhardToneMapping, LinearToneMapping, NoToneMapping, PCFSoftShadowMap, PCFShadowMap, BasicShadowMap } from 'three';
3
+
4
+ /**
5
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */
10
+ /** Capture every renderer-global value changed by applySceneEnvironment. */
11
+ function captureSceneEnvironment(scene, renderer) {
12
+ return {
13
+ fog: scene.fog,
14
+ shadows: renderer.shadowMap.enabled,
15
+ shadowMapType: renderer.shadowMap.type,
16
+ toneMapping: renderer.toneMapping,
17
+ toneMappingExposure: renderer.toneMappingExposure,
18
+ userDataEnvironment: scene.userData.iwsdkSceneEnvironment,
19
+ };
20
+ }
21
+ /**
22
+ * Atomically apply scene environment fields and return the exact prior state.
23
+ *
24
+ * A supplied base state supplies values for omitted fields, allowing a level swap
25
+ * to replace the active authored environment without first detaching it.
26
+ */
27
+ function applySceneEnvironment(scene, renderer, environment, baseState) {
28
+ const previous = captureSceneEnvironment(scene, renderer);
29
+ if (environment == null && baseState == null) {
30
+ return previous;
31
+ }
32
+ const prepared = prepareSceneEnvironment(environment, baseState !== null && baseState !== void 0 ? baseState : previous);
33
+ try {
34
+ installSceneEnvironmentState(scene, renderer, prepared);
35
+ }
36
+ catch (error) {
37
+ installSceneEnvironmentState(scene, renderer, previous);
38
+ throw error;
39
+ }
40
+ return previous;
41
+ }
42
+ /** Restore a state captured before a staged or committed scene was applied. */
43
+ function restoreSceneEnvironment(scene, renderer, state) {
44
+ const current = captureSceneEnvironment(scene, renderer);
45
+ try {
46
+ installSceneEnvironmentState(scene, renderer, state);
47
+ }
48
+ catch (error) {
49
+ installSceneEnvironmentState(scene, renderer, current);
50
+ throw error;
51
+ }
52
+ }
53
+ function prepareSceneEnvironment(environment, base) {
54
+ var _a, _b, _c, _d;
55
+ const state = {
56
+ ...base,
57
+ userDataEnvironment: environment == null ? base.userDataEnvironment : cloneJson(environment),
58
+ };
59
+ if (((_a = environment === null || environment === void 0 ? void 0 : environment.fog) === null || _a === void 0 ? void 0 : _a.type) === 'linear') {
60
+ state.fog = new Fog((_b = environment.fog.color) !== null && _b !== void 0 ? _b : '#000000', environment.fog.near, environment.fog.far);
61
+ }
62
+ else if (((_c = environment === null || environment === void 0 ? void 0 : environment.fog) === null || _c === void 0 ? void 0 : _c.type) === 'exponential') {
63
+ state.fog = new FogExp2((_d = environment.fog.color) !== null && _d !== void 0 ? _d : '#000000', environment.fog.density);
64
+ }
65
+ if ((environment === null || environment === void 0 ? void 0 : environment.toneMapping) != null) {
66
+ state.toneMapping = resolveToneMapping(environment.toneMapping);
67
+ }
68
+ if ((environment === null || environment === void 0 ? void 0 : environment.exposure) != null) {
69
+ state.toneMappingExposure = environment.exposure;
70
+ }
71
+ if ((environment === null || environment === void 0 ? void 0 : environment.shadows) != null) {
72
+ state.shadows = environment.shadows;
73
+ }
74
+ if ((environment === null || environment === void 0 ? void 0 : environment.shadowMapType) != null) {
75
+ state.shadowMapType = resolveShadowMapType(environment.shadowMapType);
76
+ }
77
+ return state;
78
+ }
79
+ function installSceneEnvironmentState(scene, renderer, state) {
80
+ scene.fog = state.fog;
81
+ renderer.shadowMap.enabled = state.shadows;
82
+ renderer.shadowMap.type = state.shadowMapType;
83
+ renderer.toneMapping = state.toneMapping;
84
+ renderer.toneMappingExposure = state.toneMappingExposure;
85
+ if (state.userDataEnvironment === undefined) {
86
+ delete scene.userData.iwsdkSceneEnvironment;
87
+ }
88
+ else {
89
+ scene.userData.iwsdkSceneEnvironment = state.userDataEnvironment;
90
+ }
91
+ }
92
+ function resolveShadowMapType(type) {
93
+ switch (type) {
94
+ case 'basic':
95
+ return BasicShadowMap;
96
+ case 'pcf':
97
+ return PCFShadowMap;
98
+ case 'pcf-soft':
99
+ return PCFSoftShadowMap;
100
+ }
101
+ }
102
+ function resolveToneMapping(mode) {
103
+ switch (mode) {
104
+ case 'none':
105
+ return NoToneMapping;
106
+ case 'linear':
107
+ return LinearToneMapping;
108
+ case 'reinhard':
109
+ return ReinhardToneMapping;
110
+ case 'cineon':
111
+ return CineonToneMapping;
112
+ case 'aces':
113
+ return ACESFilmicToneMapping;
114
+ }
115
+ }
116
+ function cloneJson(value) {
117
+ return JSON.parse(JSON.stringify(value));
118
+ }
119
+
120
+ export { applySceneEnvironment, captureSceneEnvironment, restoreSceneEnvironment };
121
+ //# sourceMappingURL=level-scene-environment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"level-scene-environment.js","sources":["../../src/level/level-scene-environment.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ import { type JsonObject, type SceneDocument, type SceneCompositionDependency, type SceneNode, type SceneNodeContent, type SceneNodeFramingRole, type Sha256 } from '@iwsdk/scene-composition';
8
+ import type { Entity } from '../ecs/entity.js';
9
+ import type { World } from '../ecs/world.js';
10
+ import { Object3D } from '../runtime/index.js';
11
+ export interface SceneJSONImportedNode {
12
+ assetId?: string;
13
+ componentTypes: string[];
14
+ contentType?: SceneNodeContent['type'];
15
+ entity: Entity;
16
+ framingRole: SceneNodeFramingRole;
17
+ instanceIndex?: number;
18
+ metadata?: JsonObject;
19
+ node: SceneNode;
20
+ nodeId: string;
21
+ object: Object3D;
22
+ parentNodeId?: string;
23
+ runtimeHash: Sha256;
24
+ sourceNodeId: string;
25
+ }
26
+ export interface SceneJSONLoadResult {
27
+ dependencies: SceneCompositionDependency[];
28
+ document: SceneDocument;
29
+ nodes: Map<string, SceneJSONImportedNode>;
30
+ playerAttachments: Entity[];
31
+ rootEntities: Entity[];
32
+ runtimeHash: Sha256;
33
+ }
34
+ export interface SceneJSONImportOptions {
35
+ }
36
+ /**
37
+ * Loads native IWSDK scene JSON documents into a level root.
38
+ *
39
+ * @category Scene
40
+ */
41
+ export declare class SceneJSONImporter {
42
+ static canLoadUrl(url: string): boolean;
43
+ static load(world: World, url: string, parentEntity: Entity, _options?: SceneJSONImportOptions): Promise<SceneJSONLoadResult>;
44
+ static loadDocument(world: World, document: SceneDocument, parentEntity: Entity, documentUrl?: string, _options?: SceneJSONImportOptions): Promise<SceneJSONLoadResult>;
45
+ private static createEntityForLoweredNode;
46
+ }
47
+ /** Resolve stable scene JSON entity references after all scene entities exist. */
48
+ export declare function createSceneEntityReferenceResolver(world: World, levelRoot: Entity, nodes: ReadonlyMap<string, {
49
+ entity: Entity;
50
+ }>): (reference: unknown) => Entity | undefined;
51
+ /** Reveal player-space attachments after their replacement level commits. */
52
+ export declare function activateScenePlayerAttachments(result: SceneJSONLoadResult | undefined): void;
53
+ //# sourceMappingURL=level-scene-json-importer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"level-scene-json-importer.d.ts","sourceRoot":"","sources":["../../src/level/level-scene-json-importer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAGL,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,0BAA0B,EAE/B,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,MAAM,EACZ,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAc/C,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,WAAW,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,oBAAoB,CAAC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,QAAQ,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,0BAA0B,EAAE,CAAC;IAC3C,QAAQ,EAAE,aAAa,CAAC;IACxB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAC1C,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,sBAAsB;CAAG;AAQ1C;;;;GAIG;AACH,qBAAa,iBAAiB;IAC5B,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;WAO1B,IAAI,CACf,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,EACpB,QAAQ,GAAE,sBAA2B,GACpC,OAAO,CAAC,mBAAmB,CAAC;WAsBlB,YAAY,CACvB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,aAAa,EACvB,YAAY,EAAE,MAAM,EACpB,WAAW,CAAC,EAAE,MAAM,EACpB,QAAQ,GAAE,sBAA2B,GACpC,OAAO,CAAC,mBAAmB,CAAC;IAqH/B,OAAO,CAAC,MAAM,CAAC,0BAA0B;CA8C1C;AAiBD,kFAAkF;AAClF,wBAAgB,kCAAkC,CAChD,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,GAC7C,CAAC,SAAS,EAAE,OAAO,KAAK,MAAM,GAAG,SAAS,CAa5C;AAeD,6EAA6E;AAC7E,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,mBAAmB,GAAG,SAAS,GACtC,IAAI,CASN"}