@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.
- package/README.md +4 -7
- package/dist/asset/asset-manager.d.ts +136 -8
- package/dist/asset/asset-manager.d.ts.map +1 -1
- package/dist/asset/asset-manager.js +491 -47
- package/dist/asset/asset-manager.js.map +1 -1
- package/dist/asset/cache-manager.d.ts +4 -2
- package/dist/asset/cache-manager.d.ts.map +1 -1
- package/dist/asset/cache-manager.js +10 -3
- package/dist/asset/cache-manager.js.map +1 -1
- package/dist/asset/loaders/audio-loader.d.ts +1 -1
- package/dist/asset/loaders/audio-loader.d.ts.map +1 -1
- package/dist/asset/loaders/audio-loader.js +8 -26
- package/dist/asset/loaders/audio-loader.js.map +1 -1
- package/dist/asset/loaders/cached-asset-load.d.ts +35 -0
- package/dist/asset/loaders/cached-asset-load.d.ts.map +1 -0
- package/dist/asset/loaders/cached-asset-load.js +100 -0
- package/dist/asset/loaders/cached-asset-load.js.map +1 -0
- package/dist/asset/loaders/gltf-loader.d.ts +28 -1
- package/dist/asset/loaders/gltf-loader.d.ts.map +1 -1
- package/dist/asset/loaders/gltf-loader.js +254 -33
- package/dist/asset/loaders/gltf-loader.js.map +1 -1
- package/dist/asset/loaders/hdr-texture-loader.d.ts +1 -1
- package/dist/asset/loaders/hdr-texture-loader.d.ts.map +1 -1
- package/dist/asset/loaders/hdr-texture-loader.js +19 -29
- package/dist/asset/loaders/hdr-texture-loader.js.map +1 -1
- package/dist/asset/loaders/texture-loader.d.ts +1 -1
- package/dist/asset/loaders/texture-loader.d.ts.map +1 -1
- package/dist/asset/loaders/texture-loader.js +9 -26
- package/dist/asset/loaders/texture-loader.js.map +1 -1
- package/dist/asset/loaders/uikitml-loader.d.ts +12 -0
- package/dist/asset/loaders/uikitml-loader.d.ts.map +1 -0
- package/dist/asset/loaders/uikitml-loader.js +44 -0
- package/dist/asset/loaders/uikitml-loader.js.map +1 -0
- package/dist/audio/audio-pool.d.ts +7 -0
- package/dist/audio/audio-pool.d.ts.map +1 -1
- package/dist/audio/audio-pool.js.map +1 -1
- package/dist/audio/audio-system.d.ts +1 -0
- package/dist/audio/audio-system.d.ts.map +1 -1
- package/dist/audio/audio-system.js +16 -2
- package/dist/audio/audio-system.js.map +1 -1
- package/dist/camera/camera-system.d.ts.map +1 -1
- package/dist/camera/camera-system.js +5 -3
- package/dist/camera/camera-system.js.map +1 -1
- package/dist/depth/depth-sensing-system.d.ts.map +1 -1
- package/dist/depth/depth-sensing-system.js +31 -10
- package/dist/depth/depth-sensing-system.js.map +1 -1
- package/dist/ecs/builtin-components.d.ts +1239 -0
- package/dist/ecs/builtin-components.d.ts.map +1 -0
- package/dist/ecs/builtin-components.js +87 -0
- package/dist/ecs/builtin-components.js.map +1 -0
- package/dist/ecs/component-editor-metadata.d.ts +19 -0
- package/dist/ecs/component-editor-metadata.d.ts.map +1 -0
- package/dist/ecs/component-editor-metadata.js +19 -0
- package/dist/ecs/component-editor-metadata.js.map +1 -0
- package/dist/ecs/component-manifest.d.ts +24 -0
- package/dist/ecs/component-manifest.d.ts.map +1 -0
- package/dist/ecs/component-manifest.js +121 -0
- package/dist/ecs/component-manifest.js.map +1 -0
- package/dist/ecs/component.d.ts +1 -0
- package/dist/ecs/component.d.ts.map +1 -1
- package/dist/ecs/entity.d.ts +20 -2
- package/dist/ecs/entity.d.ts.map +1 -1
- package/dist/ecs/entity.js +59 -3
- package/dist/ecs/entity.js.map +1 -1
- package/dist/ecs/index.d.ts +3 -1
- package/dist/ecs/index.d.ts.map +1 -1
- package/dist/ecs/system.d.ts +9 -0
- package/dist/ecs/system.d.ts.map +1 -1
- package/dist/ecs/system.js.map +1 -1
- package/dist/ecs/world.d.ts +158 -4
- package/dist/ecs/world.d.ts.map +1 -1
- package/dist/ecs/world.js +304 -5
- package/dist/ecs/world.js.map +1 -1
- package/dist/environment/dome-gradient.d.ts +2 -1
- package/dist/environment/dome-gradient.d.ts.map +1 -1
- package/dist/environment/dome-gradient.js +2 -1
- package/dist/environment/dome-gradient.js.map +1 -1
- package/dist/environment/environment-system.d.ts +19 -3
- package/dist/environment/environment-system.d.ts.map +1 -1
- package/dist/environment/environment-system.js +78 -48
- package/dist/environment/environment-system.js.map +1 -1
- package/dist/environment/gradient-environment.d.ts.map +1 -1
- package/dist/environment/gradient-environment.js +13 -7
- package/dist/environment/gradient-environment.js.map +1 -1
- package/dist/environment/scene-ar-environment.d.ts +39 -0
- package/dist/environment/scene-ar-environment.d.ts.map +1 -0
- package/dist/environment/scene-ar-environment.js +93 -0
- package/dist/environment/scene-ar-environment.js.map +1 -0
- package/dist/grab/grab-helpers.d.ts +39 -0
- package/dist/grab/grab-helpers.d.ts.map +1 -0
- package/dist/grab/grab-helpers.js +59 -0
- package/dist/grab/grab-helpers.js.map +1 -0
- package/dist/grab/grab-system.d.ts +45 -0
- package/dist/grab/grab-system.d.ts.map +1 -1
- package/dist/grab/grab-system.js +67 -5
- package/dist/grab/grab-system.js.map +1 -1
- package/dist/grab/grab-warnings.d.ts +14 -0
- package/dist/grab/grab-warnings.d.ts.map +1 -0
- package/dist/grab/grab-warnings.js +53 -0
- package/dist/grab/grab-warnings.js.map +1 -0
- package/dist/grab/handles.d.ts.map +1 -1
- package/dist/grab/handles.js +8 -3
- package/dist/grab/handles.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +42 -16
- package/dist/index.js.map +1 -1
- package/dist/init/world-initializer.d.ts +11 -7
- package/dist/init/world-initializer.d.ts.map +1 -1
- package/dist/init/world-initializer.js +118 -57
- package/dist/init/world-initializer.js.map +1 -1
- package/dist/init/xr.d.ts +0 -1
- package/dist/init/xr.d.ts.map +1 -1
- package/dist/init/xr.js +12 -3
- package/dist/init/xr.js.map +1 -1
- package/dist/input/input-system.d.ts.map +1 -1
- package/dist/input/input-system.js +26 -11
- package/dist/input/input-system.js.map +1 -1
- package/dist/layers/xr-layer-state.d.ts +47 -0
- package/dist/layers/xr-layer-state.d.ts.map +1 -0
- package/dist/layers/xr-layer-state.js +23 -0
- package/dist/layers/xr-layer-state.js.map +1 -0
- package/dist/layers/xr-layer-system.d.ts +45 -93
- package/dist/layers/xr-layer-system.d.ts.map +1 -1
- package/dist/layers/xr-layer-system.js +4 -25
- package/dist/layers/xr-layer-system.js.map +1 -1
- package/dist/level/index.d.ts +6 -2
- package/dist/level/index.d.ts.map +1 -1
- package/dist/level/level-component-applier.d.ts +24 -0
- package/dist/level/level-component-applier.d.ts.map +1 -0
- package/dist/level/level-component-applier.js +199 -0
- package/dist/level/level-component-applier.js.map +1 -0
- package/dist/level/level-player-rig.d.ts +17 -0
- package/dist/level/level-player-rig.d.ts.map +1 -0
- package/dist/level/level-player-rig.js +113 -0
- package/dist/level/level-player-rig.js.map +1 -0
- package/dist/level/level-scene-environment.d.ts +28 -0
- package/dist/level/level-scene-environment.d.ts.map +1 -0
- package/dist/level/level-scene-environment.js +121 -0
- package/dist/level/level-scene-environment.js.map +1 -0
- package/dist/level/level-scene-json-importer.d.ts +53 -0
- package/dist/level/level-scene-json-importer.d.ts.map +1 -0
- package/dist/level/level-scene-json-importer.js +256 -0
- package/dist/level/level-scene-json-importer.js.map +1 -0
- package/dist/level/level-scene-material.d.ts +22 -0
- package/dist/level/level-scene-material.d.ts.map +1 -0
- package/dist/level/level-scene-material.js +231 -0
- package/dist/level/level-scene-material.js.map +1 -0
- package/dist/level/level-scene-object.d.ts +49 -0
- package/dist/level/level-scene-object.d.ts.map +1 -0
- package/dist/level/level-scene-object.js +396 -0
- package/dist/level/level-scene-object.js.map +1 -0
- package/dist/level/level-scene-primitive.d.ts +21 -0
- package/dist/level/level-scene-primitive.d.ts.map +1 -0
- package/dist/level/level-scene-primitive.js +159 -0
- package/dist/level/level-scene-primitive.js.map +1 -0
- package/dist/level/level-system.d.ts +14 -20
- package/dist/level/level-system.d.ts.map +1 -1
- package/dist/level/level-system.js +114 -49
- package/dist/level/level-system.js.map +1 -1
- package/dist/lighting/index.d.ts +10 -0
- package/dist/lighting/index.d.ts.map +1 -0
- package/dist/lighting/index.js +4 -0
- package/dist/lighting/index.js.map +1 -0
- package/dist/lighting/light-binding.d.ts +76 -0
- package/dist/lighting/light-binding.d.ts.map +1 -0
- package/dist/lighting/light-binding.js +229 -0
- package/dist/lighting/light-binding.js.map +1 -0
- package/dist/lighting/light-components.d.ts +885 -0
- package/dist/lighting/light-components.d.ts.map +1 -0
- package/dist/lighting/light-components.js +146 -0
- package/dist/lighting/light-components.js.map +1 -0
- package/dist/lighting/light-system.d.ts +919 -0
- package/dist/lighting/light-system.d.ts.map +1 -0
- package/dist/lighting/light-system.js +244 -0
- package/dist/lighting/light-system.js.map +1 -0
- package/dist/locomotion/locomotion-environment.d.ts +27 -0
- package/dist/locomotion/locomotion-environment.d.ts.map +1 -0
- package/dist/locomotion/locomotion-environment.js +22 -0
- package/dist/locomotion/locomotion-environment.js.map +1 -0
- package/dist/locomotion/locomotion.d.ts +5 -34
- package/dist/locomotion/locomotion.d.ts.map +1 -1
- package/dist/locomotion/locomotion.js +33 -31
- package/dist/locomotion/locomotion.js.map +1 -1
- package/dist/locomotion/materials/line.js +1 -1
- package/dist/locomotion/slide.d.ts.map +1 -1
- package/dist/locomotion/slide.js +2 -2
- package/dist/locomotion/slide.js.map +1 -1
- package/dist/mcp/ecs-debug-tools.d.ts.map +1 -1
- package/dist/mcp/ecs-debug-tools.js +10 -2
- package/dist/mcp/ecs-debug-tools.js.map +1 -1
- package/dist/mcp/mcp-runtime.d.ts.map +1 -1
- package/dist/mcp/mcp-runtime.js +4 -1
- package/dist/mcp/mcp-runtime.js.map +1 -1
- package/dist/mcp/scene-tools.d.ts +152 -1
- package/dist/mcp/scene-tools.d.ts.map +1 -1
- package/dist/mcp/scene-tools.js +538 -8
- package/dist/mcp/scene-tools.js.map +1 -1
- package/dist/physics/index.js +11 -4
- package/dist/physics/index.js.map +1 -1
- package/dist/physics/physics-system.d.ts +704 -11
- package/dist/physics/physics-system.d.ts.map +1 -1
- package/dist/physics/physics-system.js +307 -25
- package/dist/physics/physics-system.js.map +1 -1
- package/dist/physics/physicsBody.d.ts +40 -1
- package/dist/physics/physicsBody.d.ts.map +1 -1
- package/dist/physics/physicsBody.js +39 -0
- package/dist/physics/physicsBody.js.map +1 -1
- package/dist/physics/physicsManipulation.d.ts +1 -1
- package/dist/physics/physicsManipulation.d.ts.map +1 -1
- package/dist/physics/physicsShape.d.ts +5 -3
- package/dist/physics/physicsShape.d.ts.map +1 -1
- package/dist/physics/physicsShape.js +2 -1
- package/dist/physics/physicsShape.js.map +1 -1
- package/dist/physics/utils.d.ts +10 -0
- package/dist/physics/utils.d.ts.map +1 -1
- package/dist/physics/utils.js +82 -48
- package/dist/physics/utils.js.map +1 -1
- package/dist/project/index.d.ts +11 -0
- package/dist/project/index.d.ts.map +1 -0
- package/dist/project/index.js +5 -0
- package/dist/project/index.js.map +1 -0
- package/dist/project/normalize.d.ts +19 -0
- package/dist/project/normalize.d.ts.map +1 -0
- package/dist/project/normalize.js +206 -0
- package/dist/project/normalize.js.map +1 -0
- package/dist/project/paths.d.ts +21 -0
- package/dist/project/paths.d.ts.map +1 -0
- package/dist/project/paths.js +75 -0
- package/dist/project/paths.js.map +1 -0
- package/dist/project/types.d.ts +159 -0
- package/dist/project/types.d.ts.map +1 -0
- package/dist/project/types.js +11 -0
- package/dist/project/types.js.map +1 -0
- package/dist/project/validation.d.ts +17 -0
- package/dist/project/validation.d.ts.map +1 -0
- package/dist/project/validation.js +501 -0
- package/dist/project/validation.js.map +1 -0
- package/dist/scene-understanding/scene-understanding-system.d.ts +23 -2
- package/dist/scene-understanding/scene-understanding-system.d.ts.map +1 -1
- package/dist/scene-understanding/scene-understanding-system.js +76 -54
- package/dist/scene-understanding/scene-understanding-system.js.map +1 -1
- package/dist/schemas/iwsdk-project.v1.schema.json +305 -0
- package/dist/transform/transform-component.d.ts +32 -0
- package/dist/transform/transform-component.d.ts.map +1 -0
- package/dist/transform/transform-component.js +24 -0
- package/dist/transform/transform-component.js.map +1 -0
- package/dist/transform/transform.d.ts +9 -42
- package/dist/transform/transform.d.ts.map +1 -1
- package/dist/transform/transform.js +8 -25
- package/dist/transform/transform.js.map +1 -1
- package/dist/ui/document.d.ts +9 -2
- package/dist/ui/document.d.ts.map +1 -1
- package/dist/ui/document.js +30 -5
- package/dist/ui/document.js.map +1 -1
- package/dist/ui/follow-component.d.ts +57 -0
- package/dist/ui/follow-component.d.ts.map +1 -0
- package/dist/ui/follow-component.js +38 -0
- package/dist/ui/follow-component.js.map +1 -0
- package/dist/ui/follow.d.ts +28 -102
- package/dist/ui/follow.d.ts.map +1 -1
- package/dist/ui/follow.js +10 -48
- package/dist/ui/follow.js.map +1 -1
- package/dist/ui/index.d.ts +3 -0
- package/dist/ui/index.d.ts.map +1 -1
- package/dist/ui/panel-components.d.ts +29 -0
- package/dist/ui/panel-components.d.ts.map +1 -0
- package/dist/ui/panel-components.js +22 -0
- package/dist/ui/panel-components.js.map +1 -0
- package/dist/ui/screenspace-component.d.ts +39 -0
- package/dist/ui/screenspace-component.d.ts.map +1 -0
- package/dist/ui/screenspace-component.js +21 -0
- package/dist/ui/screenspace-component.js.map +1 -0
- package/dist/ui/screenspace.d.ts +47 -135
- package/dist/ui/screenspace.d.ts.map +1 -1
- package/dist/ui/screenspace.js +127 -65
- package/dist/ui/screenspace.js.map +1 -1
- package/dist/ui/ui.d.ts +20 -122
- package/dist/ui/ui.d.ts.map +1 -1
- package/dist/ui/ui.js +44 -107
- package/dist/ui/ui.js.map +1 -1
- package/dist/ui/uikitml-asset.d.ts +25 -0
- package/dist/ui/uikitml-asset.d.ts.map +1 -0
- package/dist/ui/uikitml-asset.js +56 -0
- package/dist/ui/uikitml-asset.js.map +1 -0
- package/dist/ui/uikitml.d.ts +41 -0
- package/dist/ui/uikitml.d.ts.map +1 -0
- package/dist/ui/uikitml.js +119 -0
- package/dist/ui/uikitml.js.map +1 -0
- package/dist/vendor/draco/gltf/draco_encoder.js +0 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/visibility/visibility-component.d.ts +14 -0
- package/dist/visibility/visibility-component.d.ts.map +1 -0
- package/dist/visibility/visibility-component.js +15 -0
- package/dist/visibility/visibility-component.js.map +1 -0
- package/dist/visibility/visibility.d.ts +3 -10
- package/dist/visibility/visibility.d.ts.map +1 -1
- package/dist/visibility/visibility.js +9 -12
- package/dist/visibility/visibility.js.map +1 -1
- package/package.json +48 -19
- package/LICENSE +0 -21
- package/dist/ecs/component-registry.d.ts +0 -54
- package/dist/ecs/component-registry.d.ts.map +0 -1
- package/dist/ecs/component-registry.js +0 -86
- package/dist/ecs/component-registry.js.map +0 -1
- package/dist/level/level-entity-creator.d.ts +0 -27
- package/dist/level/level-entity-creator.d.ts.map +0 -1
- package/dist/level/level-entity-creator.js +0 -108
- package/dist/level/level-entity-creator.js.map +0 -1
- package/dist/level/level-glxf-importer.d.ts +0 -23
- package/dist/level/level-glxf-importer.d.ts.map +0 -1
- package/dist/level/level-glxf-importer.js +0 -40
- package/dist/level/level-glxf-importer.js.map +0 -1
|
@@ -0,0 +1,396 @@
|
|
|
1
|
+
import { resolveSceneAuthoringTransforms, MAX_SCENE_PATTERN_INSTANCES, deriveSceneInstanceNodeId, resolveScenePrefabRoot, getSceneNodeCollisionRadius, generateScenePatternTransforms, deriveScenePatternNodeId, deriveScenePatternInstanceNamespace } from '@iwsdk/scene-composition';
|
|
2
|
+
export { MAX_SCENE_PATTERN_INSTANCES, deriveSceneInstanceNodeId, deriveScenePatternNodeId, generateScenePatternTransforms } from '@iwsdk/scene-composition';
|
|
3
|
+
import '../runtime/three.js';
|
|
4
|
+
import { disposeScenePrimitiveObject } from './level-scene-primitive.js';
|
|
5
|
+
import { InstancedMesh, Object3D, Mesh, Vector3, Quaternion, Matrix4 } from 'three';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
9
|
+
*
|
|
10
|
+
* This source code is licensed under the MIT license found in the
|
|
11
|
+
* LICENSE file in the root directory of this source tree.
|
|
12
|
+
*/
|
|
13
|
+
/** Lower one authored node, including prefab and pattern content, to Object3D. */
|
|
14
|
+
async function lowerSceneNodeObject(document, node, options = {}) {
|
|
15
|
+
var _a;
|
|
16
|
+
const resolvedDocument = resolveSceneDocumentForLowering(document);
|
|
17
|
+
const resolvedNode = (_a = findSceneNode(resolvedDocument.nodes, node.id)) !== null && _a !== void 0 ? _a : resolveSceneNodeConstraints(document, node);
|
|
18
|
+
const context = createLoweringContext(resolvedDocument, options);
|
|
19
|
+
try {
|
|
20
|
+
const lowered = await lowerNode(context, resolvedNode, {
|
|
21
|
+
derived: false,
|
|
22
|
+
prefabStack: [],
|
|
23
|
+
});
|
|
24
|
+
return lowered;
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
disposeSceneObjectResources(...context.createdObjects);
|
|
28
|
+
throw error;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/** Lower all top-level nodes while sharing one deterministic expansion budget. */
|
|
32
|
+
async function lowerSceneDocumentObjects(document, options = {}) {
|
|
33
|
+
const resolvedDocument = resolveSceneDocumentForLowering(document);
|
|
34
|
+
const context = createLoweringContext(resolvedDocument, options);
|
|
35
|
+
const roots = [];
|
|
36
|
+
try {
|
|
37
|
+
for (const node of resolvedDocument.nodes) {
|
|
38
|
+
roots.push(await lowerNode(context, node, { derived: false, prefabStack: [] }));
|
|
39
|
+
}
|
|
40
|
+
return roots;
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
disposeSceneObjectResources(...context.createdObjects);
|
|
44
|
+
throw error;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/** Resolve document-scoped constraints exactly as the shared object lowerer does. */
|
|
48
|
+
function resolveSceneDocumentForLowering(document) {
|
|
49
|
+
return resolveSceneAuthoringTransforms(document);
|
|
50
|
+
}
|
|
51
|
+
/** Create only a node's direct render content, without its transform or children. */
|
|
52
|
+
async function createSceneContentObject(document, node, options = {}) {
|
|
53
|
+
const context = createLoweringContext(document, options);
|
|
54
|
+
try {
|
|
55
|
+
const object = await createDirectContentObject(context, node);
|
|
56
|
+
return object;
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
throw error;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/** Apply a scene transform to an Object3D using Three.js' XYZ Euler convention. */
|
|
63
|
+
function applySceneTransform(object, transform) {
|
|
64
|
+
if ((transform === null || transform === void 0 ? void 0 : transform.position) != null) {
|
|
65
|
+
object.position.set(...transform.position);
|
|
66
|
+
}
|
|
67
|
+
if ((transform === null || transform === void 0 ? void 0 : transform.rotationDeg) != null) {
|
|
68
|
+
object.rotation.set(degreesToRadians(transform.rotationDeg[0]), degreesToRadians(transform.rotationDeg[1]), degreesToRadians(transform.rotationDeg[2]));
|
|
69
|
+
}
|
|
70
|
+
if ((transform === null || transform === void 0 ? void 0 : transform.scale) != null) {
|
|
71
|
+
object.scale.set(...scaleToVec3(transform.scale));
|
|
72
|
+
}
|
|
73
|
+
object.updateMatrix();
|
|
74
|
+
object.updateMatrixWorld(true);
|
|
75
|
+
}
|
|
76
|
+
/** Release lowering-owned instance state without disposing shared asset resources. */
|
|
77
|
+
function disposeSceneObjectResources(...roots) {
|
|
78
|
+
for (const root of roots) {
|
|
79
|
+
root.traverse((object) => {
|
|
80
|
+
const disposeAsset = object.userData.iwsdkDisposeAsset;
|
|
81
|
+
if (typeof disposeAsset === 'function') {
|
|
82
|
+
object.userData.iwsdkDisposeAsset = null;
|
|
83
|
+
disposeAsset();
|
|
84
|
+
}
|
|
85
|
+
if (object instanceof InstancedMesh) {
|
|
86
|
+
object.dispose();
|
|
87
|
+
}
|
|
88
|
+
disposeScenePrimitiveObject(object);
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/** Dispose all resources owned by one or more returned lowering trees. */
|
|
93
|
+
function disposeLoweredSceneNodes(...nodes) {
|
|
94
|
+
disposeSceneObjectResources(...nodes.map((node) => node.object));
|
|
95
|
+
}
|
|
96
|
+
function createLoweringContext(document, options) {
|
|
97
|
+
var _a, _b;
|
|
98
|
+
return {
|
|
99
|
+
createdObjects: new Set(),
|
|
100
|
+
document,
|
|
101
|
+
expandedNodeCount: 0,
|
|
102
|
+
loadAsset: options.loadAsset,
|
|
103
|
+
maxPatternInstances: (_a = options.maxPatternInstances) !== null && _a !== void 0 ? _a : MAX_SCENE_PATTERN_INSTANCES,
|
|
104
|
+
resolveAssetBounds: options.resolveAssetBounds,
|
|
105
|
+
runtimeHash: options.runtimeHash,
|
|
106
|
+
useInstancing: (_b = options.useInstancing) !== null && _b !== void 0 ? _b : true,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
async function lowerNode(context, sourceNode, options) {
|
|
110
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
111
|
+
if (options.derived) {
|
|
112
|
+
claimExpandedNodes(context, 1);
|
|
113
|
+
}
|
|
114
|
+
const id = options.namespace == null
|
|
115
|
+
? sourceNode.id
|
|
116
|
+
: deriveSceneInstanceNodeId(options.namespace, sourceNode.id);
|
|
117
|
+
const override = (_a = options.overrides) === null || _a === void 0 ? void 0 : _a[sourceNode.id];
|
|
118
|
+
const node = options.overridesApplied
|
|
119
|
+
? applyDerivedNodeId(sourceNode, id)
|
|
120
|
+
: applyPrefabOverride(sourceNode, id, override);
|
|
121
|
+
const inheritedFramingRole = (_b = node.framingRole) !== null && _b !== void 0 ? _b : options.framingRole;
|
|
122
|
+
const object = await createDirectContentObject(context, node);
|
|
123
|
+
context.createdObjects.add(object);
|
|
124
|
+
object.name = (_c = node.name) !== null && _c !== void 0 ? _c : id;
|
|
125
|
+
object.visible = (_d = override === null || override === void 0 ? void 0 : override.visible) !== null && _d !== void 0 ? _d : sceneNodeVisible(node);
|
|
126
|
+
applyLoweredTransform(object, node.transform, options.prefixMatrix);
|
|
127
|
+
markSceneObject(object, node, sourceNode.id, context.runtimeHash, inheritedFramingRole !== null && inheritedFramingRole !== void 0 ? inheritedFramingRole : 'content');
|
|
128
|
+
const lowered = {
|
|
129
|
+
children: [],
|
|
130
|
+
id,
|
|
131
|
+
node,
|
|
132
|
+
object,
|
|
133
|
+
parentNodeId: options.parentNodeId,
|
|
134
|
+
sourceNodeId: sourceNode.id,
|
|
135
|
+
virtualNodes: [],
|
|
136
|
+
};
|
|
137
|
+
if (((_e = node.content) === null || _e === void 0 ? void 0 : _e.type) === 'instance') {
|
|
138
|
+
const prefab = findRequiredPrefab(context.document, node.content.prefab);
|
|
139
|
+
assertPrefabNotRecursive(options.prefabStack, prefab.id);
|
|
140
|
+
const root = resolveScenePrefabRoot(context.document, prefab.root, node.content.overrides);
|
|
141
|
+
const child = await lowerNode(context, root, {
|
|
142
|
+
derived: true,
|
|
143
|
+
framingRole: inheritedFramingRole,
|
|
144
|
+
namespace: id,
|
|
145
|
+
overrides: node.content.overrides,
|
|
146
|
+
overridesApplied: true,
|
|
147
|
+
parentNodeId: id,
|
|
148
|
+
prefabStack: [...options.prefabStack, prefab.id],
|
|
149
|
+
});
|
|
150
|
+
object.add(child.object);
|
|
151
|
+
lowered.children.push(child);
|
|
152
|
+
}
|
|
153
|
+
else if (((_f = node.content) === null || _f === void 0 ? void 0 : _f.type) === 'pattern') {
|
|
154
|
+
await lowerPatternContent(context, lowered, options.prefabStack, inheritedFramingRole);
|
|
155
|
+
}
|
|
156
|
+
for (const childNode of (_g = sourceNode.children) !== null && _g !== void 0 ? _g : []) {
|
|
157
|
+
const child = await lowerNode(context, childNode, {
|
|
158
|
+
derived: options.derived,
|
|
159
|
+
framingRole: inheritedFramingRole,
|
|
160
|
+
namespace: options.namespace,
|
|
161
|
+
overrides: options.overrides,
|
|
162
|
+
overridesApplied: options.overridesApplied,
|
|
163
|
+
parentNodeId: id,
|
|
164
|
+
prefabStack: options.prefabStack,
|
|
165
|
+
});
|
|
166
|
+
object.add(child.object);
|
|
167
|
+
lowered.children.push(child);
|
|
168
|
+
}
|
|
169
|
+
return lowered;
|
|
170
|
+
}
|
|
171
|
+
async function createDirectContentObject(context, node) {
|
|
172
|
+
const content = node.content;
|
|
173
|
+
if (content == null ||
|
|
174
|
+
content.type === 'group' ||
|
|
175
|
+
content.type === 'instance' ||
|
|
176
|
+
content.type === 'pattern') {
|
|
177
|
+
return new Object3D();
|
|
178
|
+
}
|
|
179
|
+
return createAssetContentObject(context, content);
|
|
180
|
+
}
|
|
181
|
+
async function createAssetContentObject(context, content) {
|
|
182
|
+
if (context.loadAsset == null) {
|
|
183
|
+
throw new Error(`Scene asset "${content.asset}" requires an asset registry`);
|
|
184
|
+
}
|
|
185
|
+
const object = await context.loadAsset(content.asset);
|
|
186
|
+
if (object == null || object.isObject3D !== true) {
|
|
187
|
+
throw new Error(`Scene asset registry returned an invalid object for "${content.asset}"`);
|
|
188
|
+
}
|
|
189
|
+
if (object.parent != null) {
|
|
190
|
+
throw new Error(`Scene asset registry returned a parented object for "${content.asset}"`);
|
|
191
|
+
}
|
|
192
|
+
object.traverse((child) => {
|
|
193
|
+
var _a, _b;
|
|
194
|
+
if (child instanceof Mesh) {
|
|
195
|
+
child.castShadow = (_a = content.castShadow) !== null && _a !== void 0 ? _a : false;
|
|
196
|
+
child.receiveShadow = (_b = content.receiveShadow) !== null && _b !== void 0 ? _b : false;
|
|
197
|
+
}
|
|
198
|
+
});
|
|
199
|
+
object.userData.iwsdkSceneAssetId = content.asset;
|
|
200
|
+
return object;
|
|
201
|
+
}
|
|
202
|
+
async function lowerPatternContent(context, lowered, prefabStack, framingRole) {
|
|
203
|
+
var _a, _b, _c, _d, _e;
|
|
204
|
+
const content = lowered.node.content;
|
|
205
|
+
if ((content === null || content === void 0 ? void 0 : content.type) !== 'pattern') {
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
const prefab = findRequiredPrefab(context.document, content.prefab);
|
|
209
|
+
assertPrefabNotRecursive(prefabStack, prefab.id);
|
|
210
|
+
const root = resolveScenePrefabRoot(context.document, prefab.root, content.overrides);
|
|
211
|
+
const collisionRadius = getSceneNodeCollisionRadius(context.document, root, {
|
|
212
|
+
resolveAssetBounds: context.resolveAssetBounds,
|
|
213
|
+
});
|
|
214
|
+
const transforms = generateScenePatternTransforms(content.distribution, {
|
|
215
|
+
collisionRadius,
|
|
216
|
+
maxInstances: context.maxPatternInstances,
|
|
217
|
+
seedKey: lowered.id,
|
|
218
|
+
});
|
|
219
|
+
const nextStack = [...prefabStack, prefab.id];
|
|
220
|
+
if (context.useInstancing && isPrefabSafeToInstance(root)) {
|
|
221
|
+
const template = await createDirectContentObject(context, root);
|
|
222
|
+
if (template instanceof Mesh && template.children.length === 0) {
|
|
223
|
+
claimExpandedNodes(context, transforms.length);
|
|
224
|
+
const instances = new InstancedMesh(template.geometry, template.material, transforms.length);
|
|
225
|
+
instances.name = `${lowered.id}:instances`;
|
|
226
|
+
instances.castShadow = template.castShadow;
|
|
227
|
+
instances.receiveShadow = template.receiveShadow;
|
|
228
|
+
instances.visible =
|
|
229
|
+
(_c = (_b = (_a = content.overrides) === null || _a === void 0 ? void 0 : _a[root.id]) === null || _b === void 0 ? void 0 : _b.visible) !== null && _c !== void 0 ? _c : sceneNodeVisible(root);
|
|
230
|
+
instances.userData.iwsdkSceneFramingRole =
|
|
231
|
+
(_e = (_d = root.framingRole) !== null && _d !== void 0 ? _d : framingRole) !== null && _e !== void 0 ? _e : 'content';
|
|
232
|
+
const localMatrix = sceneTransformMatrix(root.transform);
|
|
233
|
+
const ids = [];
|
|
234
|
+
for (let index = 0; index < transforms.length; index += 1) {
|
|
235
|
+
const id = deriveScenePatternNodeId(lowered.id, index, root.id);
|
|
236
|
+
const matrix = sceneTransformMatrix(transforms[index]).multiply(localMatrix);
|
|
237
|
+
instances.setMatrixAt(index, matrix);
|
|
238
|
+
ids.push(id);
|
|
239
|
+
lowered.virtualNodes.push({
|
|
240
|
+
id,
|
|
241
|
+
instanceIndex: index,
|
|
242
|
+
node: { ...cloneJson(root), id },
|
|
243
|
+
object: instances,
|
|
244
|
+
parentNodeId: lowered.id,
|
|
245
|
+
sourceNodeId: root.id,
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
instances.instanceMatrix.needsUpdate = true;
|
|
249
|
+
instances.userData.iwsdkSceneInstanceIds = ids;
|
|
250
|
+
instances.userData.iwsdkSceneNodeId = lowered.id;
|
|
251
|
+
instances.userData.iwsdkSceneRuntimeHash = context.runtimeHash;
|
|
252
|
+
lowered.object.add(instances);
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
for (let index = 0; index < transforms.length; index += 1) {
|
|
257
|
+
const namespace = deriveScenePatternInstanceNamespace(lowered.id, index);
|
|
258
|
+
const child = await lowerNode(context, root, {
|
|
259
|
+
derived: true,
|
|
260
|
+
framingRole,
|
|
261
|
+
namespace,
|
|
262
|
+
overrides: content.overrides,
|
|
263
|
+
overridesApplied: true,
|
|
264
|
+
parentNodeId: lowered.id,
|
|
265
|
+
prefixMatrix: sceneTransformMatrix(transforms[index]),
|
|
266
|
+
prefabStack: nextStack,
|
|
267
|
+
});
|
|
268
|
+
lowered.object.add(child.object);
|
|
269
|
+
lowered.children.push(child);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
function applyPrefabOverride(source, id, override) {
|
|
273
|
+
var _a, _b;
|
|
274
|
+
const node = cloneJson(source);
|
|
275
|
+
node.id = id;
|
|
276
|
+
if ((override === null || override === void 0 ? void 0 : override.transform) != null) {
|
|
277
|
+
node.transform = { ...((_a = node.transform) !== null && _a !== void 0 ? _a : {}), ...override.transform };
|
|
278
|
+
}
|
|
279
|
+
if ((override === null || override === void 0 ? void 0 : override.components) != null) {
|
|
280
|
+
node.components = {
|
|
281
|
+
...((_b = node.components) !== null && _b !== void 0 ? _b : {}),
|
|
282
|
+
...cloneJson(override.components),
|
|
283
|
+
};
|
|
284
|
+
}
|
|
285
|
+
return node;
|
|
286
|
+
}
|
|
287
|
+
function applyDerivedNodeId(source, id) {
|
|
288
|
+
const node = cloneJson(source);
|
|
289
|
+
node.id = id;
|
|
290
|
+
return node;
|
|
291
|
+
}
|
|
292
|
+
function resolveSceneNodeConstraints(document, root) {
|
|
293
|
+
const scope = {
|
|
294
|
+
nodes: [root],
|
|
295
|
+
resources: {},
|
|
296
|
+
units: document.units,
|
|
297
|
+
version: document.version,
|
|
298
|
+
};
|
|
299
|
+
return resolveSceneAuthoringTransforms(scope).nodes[0];
|
|
300
|
+
}
|
|
301
|
+
function findSceneNode(nodes, nodeId) {
|
|
302
|
+
var _a;
|
|
303
|
+
for (const node of nodes) {
|
|
304
|
+
if (node.id === nodeId) {
|
|
305
|
+
return node;
|
|
306
|
+
}
|
|
307
|
+
const child = findSceneNode((_a = node.children) !== null && _a !== void 0 ? _a : [], nodeId);
|
|
308
|
+
if (child != null) {
|
|
309
|
+
return child;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
return undefined;
|
|
313
|
+
}
|
|
314
|
+
function markSceneObject(object, node, sourceNodeId, runtimeHash, framingRole) {
|
|
315
|
+
var _a;
|
|
316
|
+
const values = {
|
|
317
|
+
iwsdkSceneContent: cloneJson(node.content),
|
|
318
|
+
iwsdkSceneContentType: (_a = node.content) === null || _a === void 0 ? void 0 : _a.type,
|
|
319
|
+
iwsdkSceneFramingRole: framingRole,
|
|
320
|
+
iwsdkSceneMetadata: cloneJson(node.metadata),
|
|
321
|
+
iwsdkSceneNodeId: node.id,
|
|
322
|
+
iwsdkSceneRuntimeHash: runtimeHash,
|
|
323
|
+
iwsdkSceneSourceNodeId: sourceNodeId,
|
|
324
|
+
};
|
|
325
|
+
object.traverse((child) => Object.assign(child.userData, values));
|
|
326
|
+
}
|
|
327
|
+
function applyLoweredTransform(object, transform, prefixMatrix) {
|
|
328
|
+
if (prefixMatrix == null) {
|
|
329
|
+
applySceneTransform(object, transform);
|
|
330
|
+
return;
|
|
331
|
+
}
|
|
332
|
+
object.matrix.copy(prefixMatrix).multiply(sceneTransformMatrix(transform));
|
|
333
|
+
object.matrix.decompose(object.position, object.quaternion, object.scale);
|
|
334
|
+
object.matrixAutoUpdate = false;
|
|
335
|
+
object.updateMatrixWorld(true);
|
|
336
|
+
}
|
|
337
|
+
function sceneTransformMatrix(transform) {
|
|
338
|
+
var _a, _b;
|
|
339
|
+
const position = new Vector3(...((_a = transform === null || transform === void 0 ? void 0 : transform.position) !== null && _a !== void 0 ? _a : [0, 0, 0]));
|
|
340
|
+
const rotation = (_b = transform === null || transform === void 0 ? void 0 : transform.rotationDeg) !== null && _b !== void 0 ? _b : [0, 0, 0];
|
|
341
|
+
const quaternion = new Quaternion().setFromEuler(new Object3D().rotation.set(degreesToRadians(rotation[0]), degreesToRadians(rotation[1]), degreesToRadians(rotation[2])));
|
|
342
|
+
const scale = new Vector3(...scaleToVec3(transform === null || transform === void 0 ? void 0 : transform.scale));
|
|
343
|
+
return new Matrix4().compose(position, quaternion, scale);
|
|
344
|
+
}
|
|
345
|
+
function isPrefabSafeToInstance(root) {
|
|
346
|
+
var _a, _b, _c;
|
|
347
|
+
return (((_a = root.content) === null || _a === void 0 ? void 0 : _a.type) === 'asset' &&
|
|
348
|
+
((_c = (_b = root.children) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0) === 0 &&
|
|
349
|
+
(root.components == null || Object.keys(root.components).length === 0) &&
|
|
350
|
+
root.constraints == null);
|
|
351
|
+
}
|
|
352
|
+
function findRequiredPrefab(document, prefabId) {
|
|
353
|
+
var _a;
|
|
354
|
+
const prefab = (_a = document.resources.prefabs) === null || _a === void 0 ? void 0 : _a.find((entry) => entry.id === prefabId);
|
|
355
|
+
if (prefab == null) {
|
|
356
|
+
throw new Error(`Scene references unknown prefab "${prefabId}"`);
|
|
357
|
+
}
|
|
358
|
+
return prefab;
|
|
359
|
+
}
|
|
360
|
+
function assertPrefabNotRecursive(stack, prefabId) {
|
|
361
|
+
if (stack.includes(prefabId)) {
|
|
362
|
+
throw new Error(`Recursive scene prefab expansion: ${[...stack, prefabId].join(' -> ')}`);
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
function claimExpandedNodes(context, count) {
|
|
366
|
+
context.expandedNodeCount += count;
|
|
367
|
+
if (context.expandedNodeCount > context.maxPatternInstances) {
|
|
368
|
+
throw new Error(`Scene derived-node expansion exceeds the limit of ${context.maxPatternInstances}`);
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
function scaleToVec3(scale) {
|
|
372
|
+
if (scale == null) {
|
|
373
|
+
return [1, 1, 1];
|
|
374
|
+
}
|
|
375
|
+
return typeof scale === 'number' ? [scale, scale, scale] : scale;
|
|
376
|
+
}
|
|
377
|
+
function sceneNodeVisible(node) {
|
|
378
|
+
var _a, _b, _c;
|
|
379
|
+
if (typeof node.visible === 'boolean') {
|
|
380
|
+
return node.visible;
|
|
381
|
+
}
|
|
382
|
+
const legacy = (_b = (_a = node.components) === null || _a === void 0 ? void 0 : _a.Visibility) !== null && _b !== void 0 ? _b : (_c = node.components) === null || _c === void 0 ? void 0 : _c['com.iwsdk.components.Visibility'];
|
|
383
|
+
return (legacy === null || legacy === void 0 ? void 0 : legacy.isVisible) !== false;
|
|
384
|
+
}
|
|
385
|
+
function degreesToRadians(degrees) {
|
|
386
|
+
return (degrees * Math.PI) / 180;
|
|
387
|
+
}
|
|
388
|
+
function cloneJson(value) {
|
|
389
|
+
if (value === undefined) {
|
|
390
|
+
return value;
|
|
391
|
+
}
|
|
392
|
+
return JSON.parse(JSON.stringify(value));
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
export { applySceneTransform, createSceneContentObject, disposeLoweredSceneNodes, disposeSceneObjectResources, lowerSceneDocumentObjects, lowerSceneNodeObject, resolveSceneDocumentForLowering };
|
|
396
|
+
//# sourceMappingURL=level-scene-object.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"level-scene-object.js","sources":["../../src/level/level-scene-object.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
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 SceneGeometry, type SceneMaterial } from '@iwsdk/scene-composition';
|
|
8
|
+
import { BufferGeometry, Material, Mesh, Object3D } from '../runtime/index.js';
|
|
9
|
+
export { createSceneMaterial } from './level-scene-material.js';
|
|
10
|
+
export interface SceneProceduralMeshDescriptor {
|
|
11
|
+
geometry: SceneGeometry;
|
|
12
|
+
castShadow?: boolean;
|
|
13
|
+
receiveShadow?: boolean;
|
|
14
|
+
}
|
|
15
|
+
/** Build a Three.js geometry from a scene geometry recipe. */
|
|
16
|
+
export declare function createSceneGeometry(geometry: SceneGeometry): BufferGeometry;
|
|
17
|
+
/** Create a renderable Three.js mesh from a scene primitive descriptor. */
|
|
18
|
+
export declare function createScenePrimitiveObject(primitive: SceneProceduralMeshDescriptor, material: SceneMaterial | Material): Mesh;
|
|
19
|
+
/** Dispose only the resources owned directly by a scene primitive mesh. */
|
|
20
|
+
export declare function disposeScenePrimitiveObject(object: Object3D): void;
|
|
21
|
+
//# sourceMappingURL=level-scene-primitive.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"level-scene-primitive.d.ts","sourceRoot":"","sources":["../../src/level/level-scene-primitive.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,aAAa,EAGnB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAEL,cAAc,EAOd,QAAQ,EACR,IAAI,EACJ,QAAQ,EAST,MAAM,qBAAqB,CAAC;AAM7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AA2BhE,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,EAAE,aAAa,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,8DAA8D;AAC9D,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,aAAa,GAAG,cAAc,CA4G3E;AAED,2EAA2E;AAC3E,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,6BAA6B,EACxC,QAAQ,EAAE,aAAa,GAAG,QAAQ,GACjC,IAAI,CAaN;AAED,2EAA2E;AAC3E,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI,CAmBlE"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { DEFAULT_SCENE_PRIMITIVE_SEGMENTS } from '@iwsdk/scene-composition';
|
|
2
|
+
import { RoundedBoxGeometry } from 'three/examples/jsm/geometries/RoundedBoxGeometry.js';
|
|
3
|
+
import '../runtime/three.js';
|
|
4
|
+
import { disposeStandaloneSceneMaterial, createSceneMaterial } from './level-scene-material.js';
|
|
5
|
+
import { TorusGeometry, LatheGeometry, Vector2, CatmullRomCurve3, Vector3, TubeGeometry, ExtrudeGeometry, CapsuleGeometry, PlaneGeometry, ConeGeometry, CylinderGeometry, SphereGeometry, BoxGeometry, Mesh, Shape, Path, Material } from 'three';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
9
|
+
*
|
|
10
|
+
* This source code is licensed under the MIT license found in the
|
|
11
|
+
* LICENSE file in the root directory of this source tree.
|
|
12
|
+
*/
|
|
13
|
+
/** Build a Three.js geometry from a scene geometry recipe. */
|
|
14
|
+
function createSceneGeometry(geometry) {
|
|
15
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y;
|
|
16
|
+
const descriptor = geometry;
|
|
17
|
+
switch (descriptor.type) {
|
|
18
|
+
case 'box':
|
|
19
|
+
return new BoxGeometry(...descriptor.size);
|
|
20
|
+
case 'roundedBox':
|
|
21
|
+
return new RoundedBoxGeometry(descriptor.size[0], descriptor.size[1], descriptor.size[2], (_a = descriptor.segments) !== null && _a !== void 0 ? _a : 4, descriptor.radius);
|
|
22
|
+
case 'sphere': {
|
|
23
|
+
const segments = (_b = descriptor.segments) !== null && _b !== void 0 ? _b : DEFAULT_SCENE_PRIMITIVE_SEGMENTS;
|
|
24
|
+
return new SphereGeometry(descriptor.radius, segments, Math.max(3, Math.floor(segments / 2)));
|
|
25
|
+
}
|
|
26
|
+
case 'cylinder': {
|
|
27
|
+
const radiusTop = 'radius' in descriptor ? descriptor.radius : descriptor.radiusTop;
|
|
28
|
+
const radiusBottom = 'radius' in descriptor ? descriptor.radius : descriptor.radiusBottom;
|
|
29
|
+
return new CylinderGeometry(radiusTop, radiusBottom, descriptor.height, (_c = descriptor.segments) !== null && _c !== void 0 ? _c : DEFAULT_SCENE_PRIMITIVE_SEGMENTS);
|
|
30
|
+
}
|
|
31
|
+
case 'cone':
|
|
32
|
+
return new ConeGeometry(descriptor.radius, descriptor.height, (_d = descriptor.segments) !== null && _d !== void 0 ? _d : DEFAULT_SCENE_PRIMITIVE_SEGMENTS);
|
|
33
|
+
case 'plane':
|
|
34
|
+
return new PlaneGeometry(...descriptor.size);
|
|
35
|
+
case 'capsule':
|
|
36
|
+
return new CapsuleGeometry(descriptor.radius, descriptor.length, (_e = descriptor.capSegments) !== null && _e !== void 0 ? _e : 4, (_f = descriptor.radialSegments) !== null && _f !== void 0 ? _f : 8);
|
|
37
|
+
case 'extrude': {
|
|
38
|
+
const shape = createShape(descriptor.points);
|
|
39
|
+
for (const hole of (_g = descriptor.holes) !== null && _g !== void 0 ? _g : []) {
|
|
40
|
+
shape.holes.push(createPath(hole));
|
|
41
|
+
}
|
|
42
|
+
const bevel = descriptor.bevel;
|
|
43
|
+
const result = new ExtrudeGeometry(shape, {
|
|
44
|
+
bevelEnabled: (_h = bevel === null || bevel === void 0 ? void 0 : bevel.enabled) !== null && _h !== void 0 ? _h : false,
|
|
45
|
+
bevelSegments: (_j = bevel === null || bevel === void 0 ? void 0 : bevel.segments) !== null && _j !== void 0 ? _j : 1,
|
|
46
|
+
bevelSize: (_k = bevel === null || bevel === void 0 ? void 0 : bevel.size) !== null && _k !== void 0 ? _k : 0,
|
|
47
|
+
bevelThickness: (_l = bevel === null || bevel === void 0 ? void 0 : bevel.thickness) !== null && _l !== void 0 ? _l : 0,
|
|
48
|
+
depth: descriptor.depth,
|
|
49
|
+
});
|
|
50
|
+
result.translate(0, 0, -descriptor.depth / 2);
|
|
51
|
+
return result;
|
|
52
|
+
}
|
|
53
|
+
case 'tube': {
|
|
54
|
+
const curve = new CatmullRomCurve3(descriptor.points.map((point) => new Vector3(...point)), (_m = descriptor.closed) !== null && _m !== void 0 ? _m : false);
|
|
55
|
+
return new TubeGeometry(curve, (_o = descriptor.tubularSegments) !== null && _o !== void 0 ? _o : 64, descriptor.radius, (_p = descriptor.radialSegments) !== null && _p !== void 0 ? _p : 8, (_q = descriptor.closed) !== null && _q !== void 0 ? _q : false);
|
|
56
|
+
}
|
|
57
|
+
case 'lathe': {
|
|
58
|
+
const geometry = new LatheGeometry(descriptor.profile.map((point) => new Vector2(...point)), (_r = descriptor.segments) !== null && _r !== void 0 ? _r : DEFAULT_SCENE_PRIMITIVE_SEGMENTS, degreesToRadians((_s = descriptor.phiStartDeg) !== null && _s !== void 0 ? _s : 0), degreesToRadians((_t = descriptor.phiLengthDeg) !== null && _t !== void 0 ? _t : 360));
|
|
59
|
+
if (Math.abs(((_u = descriptor.phiLengthDeg) !== null && _u !== void 0 ? _u : 360) - 360) < 1e-9) {
|
|
60
|
+
averageLatheSeamNormals(geometry, descriptor.profile.length, (_v = descriptor.segments) !== null && _v !== void 0 ? _v : DEFAULT_SCENE_PRIMITIVE_SEGMENTS);
|
|
61
|
+
}
|
|
62
|
+
return geometry;
|
|
63
|
+
}
|
|
64
|
+
case 'torus':
|
|
65
|
+
return new TorusGeometry(descriptor.radius, descriptor.tube, (_w = descriptor.radialSegments) !== null && _w !== void 0 ? _w : 12, (_x = descriptor.tubularSegments) !== null && _x !== void 0 ? _x : 48, degreesToRadians((_y = descriptor.arcDeg) !== null && _y !== void 0 ? _y : 360));
|
|
66
|
+
default:
|
|
67
|
+
throw new Error(`Unsupported scene geometry type "${String(descriptor.type)}"`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/** Create a renderable Three.js mesh from a scene primitive descriptor. */
|
|
71
|
+
function createScenePrimitiveObject(primitive, material) {
|
|
72
|
+
var _a, _b;
|
|
73
|
+
const suppliedRuntimeMaterial = material instanceof Material;
|
|
74
|
+
const geometrySpec = primitive.geometry;
|
|
75
|
+
const resolvedMaterial = resolveMaterialArgument(material);
|
|
76
|
+
const object = new Mesh(createSceneGeometry(geometrySpec), resolvedMaterial);
|
|
77
|
+
object.castShadow = (_a = primitive.castShadow) !== null && _a !== void 0 ? _a : false;
|
|
78
|
+
object.receiveShadow = (_b = primitive.receiveShadow) !== null && _b !== void 0 ? _b : false;
|
|
79
|
+
object.userData.iwsdkSceneGeometry = cloneJson(geometrySpec);
|
|
80
|
+
object.userData.iwsdkScenePrimitive = cloneJson(primitive);
|
|
81
|
+
object.userData.iwsdkOwnsPrimitiveGeometry = true;
|
|
82
|
+
object.userData.iwsdkOwnsPrimitiveMaterial = !suppliedRuntimeMaterial;
|
|
83
|
+
object.userData.iwsdkOwnsPrimitiveResources = true;
|
|
84
|
+
return object;
|
|
85
|
+
}
|
|
86
|
+
/** Dispose only the resources owned directly by a scene primitive mesh. */
|
|
87
|
+
function disposeScenePrimitiveObject(object) {
|
|
88
|
+
var _a;
|
|
89
|
+
if (object.userData.iwsdkOwnsPrimitiveResources !== true) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
const primitiveMesh = object;
|
|
93
|
+
(_a = primitiveMesh.geometry) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
94
|
+
const materials = Array.isArray(primitiveMesh.material)
|
|
95
|
+
? primitiveMesh.material
|
|
96
|
+
: primitiveMesh.material
|
|
97
|
+
? [primitiveMesh.material]
|
|
98
|
+
: [];
|
|
99
|
+
if (object.userData.iwsdkOwnsPrimitiveMaterial === true) {
|
|
100
|
+
for (const material of new Set(materials)) {
|
|
101
|
+
disposeStandaloneSceneMaterial(material);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
delete object.userData.iwsdkOwnsPrimitiveGeometry;
|
|
105
|
+
delete object.userData.iwsdkOwnsPrimitiveMaterial;
|
|
106
|
+
delete object.userData.iwsdkOwnsPrimitiveResources;
|
|
107
|
+
}
|
|
108
|
+
function createShape(points) {
|
|
109
|
+
const shape = new Shape();
|
|
110
|
+
appendPathPoints(shape, points);
|
|
111
|
+
return shape;
|
|
112
|
+
}
|
|
113
|
+
function createPath(points) {
|
|
114
|
+
const path = new Path();
|
|
115
|
+
appendPathPoints(path, points);
|
|
116
|
+
return path;
|
|
117
|
+
}
|
|
118
|
+
function appendPathPoints(path, points) {
|
|
119
|
+
const first = points[0];
|
|
120
|
+
if (first == null) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
path.moveTo(first[0], first[1]);
|
|
124
|
+
for (let index = 1; index < points.length; index += 1) {
|
|
125
|
+
path.lineTo(points[index][0], points[index][1]);
|
|
126
|
+
}
|
|
127
|
+
path.closePath();
|
|
128
|
+
}
|
|
129
|
+
function resolveMaterialArgument(material) {
|
|
130
|
+
if (material == null) {
|
|
131
|
+
throw new Error('A scene primitive requires a resolved material resource');
|
|
132
|
+
}
|
|
133
|
+
return material instanceof Material
|
|
134
|
+
? material
|
|
135
|
+
: createSceneMaterial(material);
|
|
136
|
+
}
|
|
137
|
+
function averageLatheSeamNormals(geometry, profilePointCount, radialSegments) {
|
|
138
|
+
const normal = geometry.getAttribute('normal');
|
|
139
|
+
if (normal == null) {
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
for (let point = 0; point < profilePointCount; point += 1) {
|
|
143
|
+
const first = point;
|
|
144
|
+
const last = radialSegments * profilePointCount + point;
|
|
145
|
+
const averaged = new Vector3(normal.getX(first) + normal.getX(last), normal.getY(first) + normal.getY(last), normal.getZ(first) + normal.getZ(last)).normalize();
|
|
146
|
+
normal.setXYZ(first, averaged.x, averaged.y, averaged.z);
|
|
147
|
+
normal.setXYZ(last, averaged.x, averaged.y, averaged.z);
|
|
148
|
+
}
|
|
149
|
+
normal.needsUpdate = true;
|
|
150
|
+
}
|
|
151
|
+
function degreesToRadians(degrees) {
|
|
152
|
+
return (degrees * Math.PI) / 180;
|
|
153
|
+
}
|
|
154
|
+
function cloneJson(value) {
|
|
155
|
+
return JSON.parse(JSON.stringify(value));
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
export { createSceneGeometry, createSceneMaterial, createScenePrimitiveObject, disposeScenePrimitiveObject };
|
|
159
|
+
//# sourceMappingURL=level-scene-primitive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"level-scene-primitive.js","sources":["../../src/level/level-scene-primitive.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|