@needle-tools/engine 4.4.0-alpha → 4.4.0-alpha.3

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 (39) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/dist/needle-engine.bundle.js +11268 -11281
  3. package/dist/needle-engine.bundle.light.js +11045 -11058
  4. package/dist/needle-engine.bundle.light.min.js +136 -132
  5. package/dist/needle-engine.bundle.light.umd.cjs +140 -136
  6. package/dist/needle-engine.bundle.min.js +136 -132
  7. package/dist/needle-engine.bundle.umd.cjs +140 -136
  8. package/dist/needle-engine.d.ts +9 -9
  9. package/dist/needle-engine.light.d.ts +9 -9
  10. package/lib/engine/codegen/register_types.js +0 -140
  11. package/lib/engine/codegen/register_types.js.map +1 -1
  12. package/lib/engine/engine_create_objects.d.ts +1 -1
  13. package/lib/engine/engine_create_objects.js +5 -1
  14. package/lib/engine/engine_create_objects.js.map +1 -1
  15. package/lib/engine/engine_utils_format.js +1 -0
  16. package/lib/engine/engine_utils_format.js.map +1 -1
  17. package/lib/engine/webcomponents/needle menu/needle-menu.js +4 -0
  18. package/lib/engine/webcomponents/needle menu/needle-menu.js.map +1 -1
  19. package/lib/engine-components/Camera.d.ts +1 -1
  20. package/lib/engine-components/Camera.js +13 -0
  21. package/lib/engine-components/Camera.js.map +1 -1
  22. package/lib/engine-components/CameraUtils.js +2 -1
  23. package/lib/engine-components/CameraUtils.js.map +1 -1
  24. package/lib/engine-components/postprocessing/Effects/Tonemapping.js +1 -1
  25. package/lib/engine-components/postprocessing/Effects/Tonemapping.js.map +1 -1
  26. package/lib/engine-components/postprocessing/PostProcessingHandler.d.ts +2 -0
  27. package/lib/engine-components/postprocessing/PostProcessingHandler.js +68 -4
  28. package/lib/engine-components/postprocessing/PostProcessingHandler.js.map +1 -1
  29. package/package.json +1 -1
  30. package/plugins/common/license.js +30 -6
  31. package/plugins/vite/build-pipeline.js +4 -3
  32. package/src/engine/codegen/register_types.ts +0 -140
  33. package/src/engine/engine_create_objects.ts +7 -2
  34. package/src/engine/engine_utils_format.ts +1 -0
  35. package/src/engine/webcomponents/needle menu/needle-menu.ts +4 -0
  36. package/src/engine-components/Camera.ts +16 -1
  37. package/src/engine-components/CameraUtils.ts +3 -2
  38. package/src/engine-components/postprocessing/Effects/Tonemapping.ts +2 -2
  39. package/src/engine-components/postprocessing/PostProcessingHandler.ts +77 -4
@@ -4,27 +4,20 @@ import { TypeStore } from "./../engine_typestore.js"
4
4
  // Import types
5
5
  import { AlignmentConstraint } from "../../engine-components/AlignmentConstraint.js";
6
6
  import { Animation } from "../../engine-components/Animation.js";
7
- import { Keyframe } from "../../engine-components/AnimationCurve.js";
8
- import { AnimationCurve } from "../../engine-components/AnimationCurve.js";
9
7
  import { Animator } from "../../engine-components/Animator.js";
10
- import { AnimatorController } from "../../engine-components/AnimatorController.js";
11
8
  import { AudioListener } from "../../engine-components/AudioListener.js";
12
9
  import { AudioSource } from "../../engine-components/AudioSource.js";
13
- import { Avatar_POI } from "../../engine-components/avatar/Avatar_Brain_LookAt.js";
14
10
  import { Avatar_Brain_LookAt } from "../../engine-components/avatar/Avatar_Brain_LookAt.js";
15
11
  import { Avatar_MouthShapes } from "../../engine-components/avatar/Avatar_MouthShapes.js";
16
12
  import { Avatar_MustacheShake } from "../../engine-components/avatar/Avatar_MustacheShake.js";
17
13
  import { AvatarBlink_Simple } from "../../engine-components/avatar/AvatarBlink_Simple.js";
18
14
  import { AvatarEyeLook_Rotation } from "../../engine-components/avatar/AvatarEyeLook_Rotation.js";
19
- import { AvatarModel } from "../../engine-components/AvatarLoader.js";
20
- import { AvatarLoader } from "../../engine-components/AvatarLoader.js";
21
15
  import { AxesHelper } from "../../engine-components/AxesHelper.js";
22
16
  import { BasicIKConstraint } from "../../engine-components/BasicIKConstraint.js";
23
17
  import { BoxHelperComponent } from "../../engine-components/BoxHelperComponent.js";
24
18
  import { Camera } from "../../engine-components/Camera.js";
25
19
  import { CharacterController } from "../../engine-components/CharacterController.js";
26
20
  import { CharacterControllerInput } from "../../engine-components/CharacterController.js";
27
- import { __Ignore } from "../../engine-components/codegen/components.js";
28
21
  import { Collider } from "../../engine-components/Collider.js";
29
22
  import { SphereCollider } from "../../engine-components/Collider.js";
30
23
  import { BoxCollider } from "../../engine-components/Collider.js";
@@ -38,19 +31,11 @@ import { DeviceFlag } from "../../engine-components/DeviceFlag.js";
38
31
  import { DragControls } from "../../engine-components/DragControls.js";
39
32
  import { DropListener } from "../../engine-components/DropListener.js";
40
33
  import { Duplicatable } from "../../engine-components/Duplicatable.js";
41
- import { CallInfo } from "../../engine-components/EventList.js";
42
34
  import { EventListEvent } from "../../engine-components/EventList.js";
43
- import { EventList } from "../../engine-components/EventList.js";
44
35
  import { EventTrigger } from "../../engine-components/EventTrigger.js";
45
36
  import { GltfExportBox } from "../../engine-components/export/gltf/GltfExport.js";
46
37
  import { GltfExport } from "../../engine-components/export/gltf/GltfExport.js";
47
- import { RegisteredAnimationInfo } from "../../engine-components/export/usdz/extensions/Animation.js";
48
- import { TransformData } from "../../engine-components/export/usdz/extensions/Animation.js";
49
- import { AnimationExtension } from "../../engine-components/export/usdz/extensions/Animation.js";
50
38
  import { VariantAction } from "../../engine-components/export/usdz/extensions/behavior/Actions.js";
51
- import { ActionCollection } from "../../engine-components/export/usdz/extensions/behavior/Actions.js";
52
- import { AudioExtension } from "../../engine-components/export/usdz/extensions/behavior/AudioExtension.js";
53
- import { BehaviorExtension } from "../../engine-components/export/usdz/extensions/behavior/Behaviour.js";
54
39
  import { ChangeTransformOnClick } from "../../engine-components/export/usdz/extensions/behavior/BehaviourComponents.js";
55
40
  import { ChangeMaterialOnClick } from "../../engine-components/export/usdz/extensions/behavior/BehaviourComponents.js";
56
41
  import { SetActiveOnClick } from "../../engine-components/export/usdz/extensions/behavior/BehaviourComponents.js";
@@ -62,19 +47,6 @@ import { PreliminaryAction } from "../../engine-components/export/usdz/extension
62
47
  import { PreliminaryTrigger } from "../../engine-components/export/usdz/extensions/behavior/BehaviourComponents.js";
63
48
  import { VisibilityAction } from "../../engine-components/export/usdz/extensions/behavior/BehaviourComponents.js";
64
49
  import { TapGestureTrigger } from "../../engine-components/export/usdz/extensions/behavior/BehaviourComponents.js";
65
- import { BehaviorModel } from "../../engine-components/export/usdz/extensions/behavior/BehavioursBuilder.js";
66
- import { TriggerModel } from "../../engine-components/export/usdz/extensions/behavior/BehavioursBuilder.js";
67
- import { TriggerBuilder } from "../../engine-components/export/usdz/extensions/behavior/BehavioursBuilder.js";
68
- import { GroupActionModel } from "../../engine-components/export/usdz/extensions/behavior/BehavioursBuilder.js";
69
- import { ActionModel } from "../../engine-components/export/usdz/extensions/behavior/BehavioursBuilder.js";
70
- import { ActionBuilder } from "../../engine-components/export/usdz/extensions/behavior/BehavioursBuilder.js";
71
- import { PhysicsExtension } from "../../engine-components/export/usdz/extensions/behavior/PhysicsExtension.js";
72
- import { DocumentExtension } from "../../engine-components/export/usdz/extensions/DocumentExtension.js";
73
- import { USDZText } from "../../engine-components/export/usdz/extensions/USDZText.js";
74
- import { TextBuilder } from "../../engine-components/export/usdz/extensions/USDZText.js";
75
- import { TextExtension } from "../../engine-components/export/usdz/extensions/USDZText.js";
76
- import { USDZUIExtension } from "../../engine-components/export/usdz/extensions/USDZUI.js";
77
- import { CustomBranding } from "../../engine-components/export/usdz/USDZExporter.js";
78
50
  import { USDZExporter } from "../../engine-components/export/usdz/USDZExporter.js";
79
51
  import { Fog } from "../../engine-components/Fog.js";
80
52
  import { BoxGizmo } from "../../engine-components/Gizmos.js";
@@ -85,7 +57,6 @@ import { Interactable } from "../../engine-components/Interactable.js";
85
57
  import { FixedJoint } from "../../engine-components/Joints.js";
86
58
  import { HingeJoint } from "../../engine-components/Joints.js";
87
59
  import { Light } from "../../engine-components/Light.js";
88
- import { LODModel } from "../../engine-components/LODGroup.js";
89
60
  import { LODGroup } from "../../engine-components/LODGroup.js";
90
61
  import { LookAtConstraint } from "../../engine-components/LookAtConstraint.js";
91
62
  import { NeedleMenu } from "../../engine-components/NeedleMenu.js";
@@ -96,27 +67,6 @@ import { CameraTargetReachedEvent } from "../../engine-components/OrbitControls.
96
67
  import { OrbitControls } from "../../engine-components/OrbitControls.js";
97
68
  import { ParticleSystemRenderer } from "../../engine-components/particlesystem/ParticleSystem.js";
98
69
  import { ParticleSystem } from "../../engine-components/particlesystem/ParticleSystem.js";
99
- import { SubEmitterSystem } from "../../engine-components/particlesystem/ParticleSystem.js";
100
- import { Gradient } from "../../engine-components/particlesystem/ParticleSystemModules.js";
101
- import { MinMaxCurve } from "../../engine-components/particlesystem/ParticleSystemModules.js";
102
- import { MinMaxGradient } from "../../engine-components/particlesystem/ParticleSystemModules.js";
103
- import { MainModule } from "../../engine-components/particlesystem/ParticleSystemModules.js";
104
- import { ParticleBurst } from "../../engine-components/particlesystem/ParticleSystemModules.js";
105
- import { EmissionModule } from "../../engine-components/particlesystem/ParticleSystemModules.js";
106
- import { ColorOverLifetimeModule } from "../../engine-components/particlesystem/ParticleSystemModules.js";
107
- import { SizeOverLifetimeModule } from "../../engine-components/particlesystem/ParticleSystemModules.js";
108
- import { ShapeModule } from "../../engine-components/particlesystem/ParticleSystemModules.js";
109
- import { NoiseModule } from "../../engine-components/particlesystem/ParticleSystemModules.js";
110
- import { TrailModule } from "../../engine-components/particlesystem/ParticleSystemModules.js";
111
- import { VelocityOverLifetimeModule } from "../../engine-components/particlesystem/ParticleSystemModules.js";
112
- import { TextureSheetAnimationModule } from "../../engine-components/particlesystem/ParticleSystemModules.js";
113
- import { RotationOverLifetimeModule } from "../../engine-components/particlesystem/ParticleSystemModules.js";
114
- import { RotationBySpeedModule } from "../../engine-components/particlesystem/ParticleSystemModules.js";
115
- import { LimitVelocityOverLifetimeModule } from "../../engine-components/particlesystem/ParticleSystemModules.js";
116
- import { InheritVelocityModule } from "../../engine-components/particlesystem/ParticleSystemModules.js";
117
- import { SizeBySpeedModule } from "../../engine-components/particlesystem/ParticleSystemModules.js";
118
- import { ColorBySpeedModule } from "../../engine-components/particlesystem/ParticleSystemModules.js";
119
- import { ParticleSubEmitter } from "../../engine-components/particlesystem/ParticleSystemSubEmitter.js";
120
70
  import { PlayerColor } from "../../engine-components/PlayerColor.js";
121
71
  import { Antialiasing } from "../../engine-components/postprocessing/Effects/Antialiasing.js";
122
72
  import { BloomEffect } from "../../engine-components/postprocessing/Effects/BloomEffect.js";
@@ -131,18 +81,11 @@ import { SharpeningEffect } from "../../engine-components/postprocessing/Effects
131
81
  import { TiltShiftEffect } from "../../engine-components/postprocessing/Effects/TiltShiftEffect.js";
132
82
  import { ToneMappingEffect } from "../../engine-components/postprocessing/Effects/Tonemapping.js";
133
83
  import { Vignette } from "../../engine-components/postprocessing/Effects/Vignette.js";
134
- import { PostProcessingHandler } from "../../engine-components/postprocessing/PostProcessingHandler.js";
135
84
  import { Volume } from "../../engine-components/postprocessing/Volume.js";
136
- import { VolumeParameter } from "../../engine-components/postprocessing/VolumeParameter.js";
137
- import { VolumeProfile } from "../../engine-components/postprocessing/VolumeProfile.js";
138
85
  import { ReflectionProbe } from "../../engine-components/ReflectionProbe.js";
139
- import { FieldWithDefault } from "../../engine-components/Renderer.js";
140
86
  import { Renderer } from "../../engine-components/Renderer.js";
141
87
  import { MeshRenderer } from "../../engine-components/Renderer.js";
142
88
  import { SkinnedMeshRenderer } from "../../engine-components/Renderer.js";
143
- import { InstancingHandler } from "../../engine-components/RendererInstancing.js";
144
- import { InstanceHandle } from "../../engine-components/RendererInstancing.js";
145
- import { RendererLightmap } from "../../engine-components/RendererLightmap.js";
146
89
  import { Rigidbody } from "../../engine-components/RigidBody.js";
147
90
  import { SceneSwitcher } from "../../engine-components/SceneSwitcher.js";
148
91
  import { ScreenCapture } from "../../engine-components/ScreenCapture.js";
@@ -152,9 +95,6 @@ import { SmoothFollow } from "../../engine-components/SmoothFollow.js";
152
95
  import { SpatialTriggerReceiver } from "../../engine-components/SpatialTrigger.js";
153
96
  import { SpatialTrigger } from "../../engine-components/SpatialTrigger.js";
154
97
  import { SpectatorCamera } from "../../engine-components/SpectatorCamera.js";
155
- import { Sprite } from "../../engine-components/SpriteRenderer.js";
156
- import { SpriteSheet } from "../../engine-components/SpriteRenderer.js";
157
- import { SpriteData } from "../../engine-components/SpriteRenderer.js";
158
98
  import { SpriteRenderer } from "../../engine-components/SpriteRenderer.js";
159
99
  import { SyncedCamera } from "../../engine-components/SyncedCamera.js";
160
100
  import { SyncedRoom } from "../../engine-components/SyncedRoom.js";
@@ -162,8 +102,6 @@ import { SyncedTransform } from "../../engine-components/SyncedTransform.js";
162
102
  import { TestRunner } from "../../engine-components/TestRunner.js";
163
103
  import { TestSimulateUserData } from "../../engine-components/TestRunner.js";
164
104
  import { PlayableDirector } from "../../engine-components/timeline/PlayableDirector.js";
165
- import { SignalAsset } from "../../engine-components/timeline/SignalAsset.js";
166
- import { SignalReceiverEvent } from "../../engine-components/timeline/SignalAsset.js";
167
105
  import { SignalReceiver } from "../../engine-components/timeline/SignalAsset.js";
168
106
  import { AnimationTrackHandler } from "../../engine-components/timeline/TimelineTracks.js";
169
107
  import { AudioTrackHandler } from "../../engine-components/timeline/TimelineTracks.js";
@@ -181,18 +119,13 @@ import { MaskableGraphic } from "../../engine-components/ui/Graphic.js";
181
119
  import { Image } from "../../engine-components/ui/Image.js";
182
120
  import { RawImage } from "../../engine-components/ui/Image.js";
183
121
  import { InputField } from "../../engine-components/ui/InputField.js";
184
- import { Padding } from "../../engine-components/ui/Layout.js";
185
122
  import { VerticalLayoutGroup } from "../../engine-components/ui/Layout.js";
186
123
  import { HorizontalLayoutGroup } from "../../engine-components/ui/Layout.js";
187
124
  import { GridLayoutGroup } from "../../engine-components/ui/Layout.js";
188
125
  import { Outline } from "../../engine-components/ui/Outline.js";
189
- import { PointerEventData } from "../../engine-components/ui/PointerEvents.js";
190
126
  import { ObjectRaycaster } from "../../engine-components/ui/Raycaster.js";
191
127
  import { GraphicRaycaster } from "../../engine-components/ui/Raycaster.js";
192
128
  import { SpatialGrabRaycaster } from "../../engine-components/ui/Raycaster.js";
193
- import { UIRaycastUtils } from "../../engine-components/ui/RaycastUtils.js";
194
- import { Size } from "../../engine-components/ui/RectTransform.js";
195
- import { Rect } from "../../engine-components/ui/RectTransform.js";
196
129
  import { RectTransform } from "../../engine-components/ui/RectTransform.js";
197
130
  import { SpatialHtml } from "../../engine-components/ui/SpatialHtml.js";
198
131
  import { Text } from "../../engine-components/ui/Text.js";
@@ -209,12 +142,9 @@ import { WebARCameraBackground } from "../../engine-components/webxr/WebARCamera
209
142
  import { WebARSessionRoot } from "../../engine-components/webxr/WebARSessionRoot.js";
210
143
  import { WebXR } from "../../engine-components/webxr/WebXR.js";
211
144
  import { AvatarMarker } from "../../engine-components/webxr/WebXRAvatar.js";
212
- import { WebXRTrackedImage } from "../../engine-components/webxr/WebXRImageTracking.js";
213
- import { WebXRImageTrackingModel } from "../../engine-components/webxr/WebXRImageTracking.js";
214
145
  import { WebXRImageTracking } from "../../engine-components/webxr/WebXRImageTracking.js";
215
146
  import { WebXRPlaneTracking } from "../../engine-components/webxr/WebXRPlaneTracking.js";
216
147
  import { XRRig } from "../../engine-components/webxr/WebXRRig.js";
217
- import { XRState } from "../../engine-components/webxr/XRFlag.js";
218
148
  import { XRFlag } from "../../engine-components/webxr/XRFlag.js";
219
149
  import { PlayerSync } from "../../engine-components-experimental/networking/PlayerSync.js";
220
150
  import { PlayerState } from "../../engine-components-experimental/networking/PlayerSync.js";
@@ -223,27 +153,20 @@ import { PresentationMode } from "../../engine-components-experimental/Presentat
223
153
  // Register types
224
154
  TypeStore.add("AlignmentConstraint", AlignmentConstraint);
225
155
  TypeStore.add("Animation", Animation);
226
- TypeStore.add("Keyframe", Keyframe);
227
- TypeStore.add("AnimationCurve", AnimationCurve);
228
156
  TypeStore.add("Animator", Animator);
229
- TypeStore.add("AnimatorController", AnimatorController);
230
157
  TypeStore.add("AudioListener", AudioListener);
231
158
  TypeStore.add("AudioSource", AudioSource);
232
- TypeStore.add("Avatar_POI", Avatar_POI);
233
159
  TypeStore.add("Avatar_Brain_LookAt", Avatar_Brain_LookAt);
234
160
  TypeStore.add("Avatar_MouthShapes", Avatar_MouthShapes);
235
161
  TypeStore.add("Avatar_MustacheShake", Avatar_MustacheShake);
236
162
  TypeStore.add("AvatarBlink_Simple", AvatarBlink_Simple);
237
163
  TypeStore.add("AvatarEyeLook_Rotation", AvatarEyeLook_Rotation);
238
- TypeStore.add("AvatarModel", AvatarModel);
239
- TypeStore.add("AvatarLoader", AvatarLoader);
240
164
  TypeStore.add("AxesHelper", AxesHelper);
241
165
  TypeStore.add("BasicIKConstraint", BasicIKConstraint);
242
166
  TypeStore.add("BoxHelperComponent", BoxHelperComponent);
243
167
  TypeStore.add("Camera", Camera);
244
168
  TypeStore.add("CharacterController", CharacterController);
245
169
  TypeStore.add("CharacterControllerInput", CharacterControllerInput);
246
- TypeStore.add("__Ignore", __Ignore);
247
170
  TypeStore.add("Collider", Collider);
248
171
  TypeStore.add("SphereCollider", SphereCollider);
249
172
  TypeStore.add("BoxCollider", BoxCollider);
@@ -257,19 +180,11 @@ TypeStore.add("DeviceFlag", DeviceFlag);
257
180
  TypeStore.add("DragControls", DragControls);
258
181
  TypeStore.add("DropListener", DropListener);
259
182
  TypeStore.add("Duplicatable", Duplicatable);
260
- TypeStore.add("CallInfo", CallInfo);
261
183
  TypeStore.add("EventListEvent", EventListEvent);
262
- TypeStore.add("EventList", EventList);
263
184
  TypeStore.add("EventTrigger", EventTrigger);
264
185
  TypeStore.add("GltfExportBox", GltfExportBox);
265
186
  TypeStore.add("GltfExport", GltfExport);
266
- TypeStore.add("RegisteredAnimationInfo", RegisteredAnimationInfo);
267
- TypeStore.add("TransformData", TransformData);
268
- TypeStore.add("AnimationExtension", AnimationExtension);
269
187
  TypeStore.add("VariantAction", VariantAction);
270
- TypeStore.add("ActionCollection", ActionCollection);
271
- TypeStore.add("AudioExtension", AudioExtension);
272
- TypeStore.add("BehaviorExtension", BehaviorExtension);
273
188
  TypeStore.add("ChangeTransformOnClick", ChangeTransformOnClick);
274
189
  TypeStore.add("ChangeMaterialOnClick", ChangeMaterialOnClick);
275
190
  TypeStore.add("SetActiveOnClick", SetActiveOnClick);
@@ -281,19 +196,6 @@ TypeStore.add("PreliminaryAction", PreliminaryAction);
281
196
  TypeStore.add("PreliminaryTrigger", PreliminaryTrigger);
282
197
  TypeStore.add("VisibilityAction", VisibilityAction);
283
198
  TypeStore.add("TapGestureTrigger", TapGestureTrigger);
284
- TypeStore.add("BehaviorModel", BehaviorModel);
285
- TypeStore.add("TriggerModel", TriggerModel);
286
- TypeStore.add("TriggerBuilder", TriggerBuilder);
287
- TypeStore.add("GroupActionModel", GroupActionModel);
288
- TypeStore.add("ActionModel", ActionModel);
289
- TypeStore.add("ActionBuilder", ActionBuilder);
290
- TypeStore.add("PhysicsExtension", PhysicsExtension);
291
- TypeStore.add("DocumentExtension", DocumentExtension);
292
- TypeStore.add("USDZText", USDZText);
293
- TypeStore.add("TextBuilder", TextBuilder);
294
- TypeStore.add("TextExtension", TextExtension);
295
- TypeStore.add("USDZUIExtension", USDZUIExtension);
296
- TypeStore.add("CustomBranding", CustomBranding);
297
199
  TypeStore.add("USDZExporter", USDZExporter);
298
200
  TypeStore.add("Fog", Fog);
299
201
  TypeStore.add("BoxGizmo", BoxGizmo);
@@ -304,7 +206,6 @@ TypeStore.add("Interactable", Interactable);
304
206
  TypeStore.add("FixedJoint", FixedJoint);
305
207
  TypeStore.add("HingeJoint", HingeJoint);
306
208
  TypeStore.add("Light", Light);
307
- TypeStore.add("LODModel", LODModel);
308
209
  TypeStore.add("LODGroup", LODGroup);
309
210
  TypeStore.add("LookAtConstraint", LookAtConstraint);
310
211
  TypeStore.add("NeedleMenu", NeedleMenu);
@@ -315,27 +216,6 @@ TypeStore.add("CameraTargetReachedEvent", CameraTargetReachedEvent);
315
216
  TypeStore.add("OrbitControls", OrbitControls);
316
217
  TypeStore.add("ParticleSystemRenderer", ParticleSystemRenderer);
317
218
  TypeStore.add("ParticleSystem", ParticleSystem);
318
- TypeStore.add("SubEmitterSystem", SubEmitterSystem);
319
- TypeStore.add("Gradient", Gradient);
320
- TypeStore.add("MinMaxCurve", MinMaxCurve);
321
- TypeStore.add("MinMaxGradient", MinMaxGradient);
322
- TypeStore.add("MainModule", MainModule);
323
- TypeStore.add("ParticleBurst", ParticleBurst);
324
- TypeStore.add("EmissionModule", EmissionModule);
325
- TypeStore.add("ColorOverLifetimeModule", ColorOverLifetimeModule);
326
- TypeStore.add("SizeOverLifetimeModule", SizeOverLifetimeModule);
327
- TypeStore.add("ShapeModule", ShapeModule);
328
- TypeStore.add("NoiseModule", NoiseModule);
329
- TypeStore.add("TrailModule", TrailModule);
330
- TypeStore.add("VelocityOverLifetimeModule", VelocityOverLifetimeModule);
331
- TypeStore.add("TextureSheetAnimationModule", TextureSheetAnimationModule);
332
- TypeStore.add("RotationOverLifetimeModule", RotationOverLifetimeModule);
333
- TypeStore.add("RotationBySpeedModule", RotationBySpeedModule);
334
- TypeStore.add("LimitVelocityOverLifetimeModule", LimitVelocityOverLifetimeModule);
335
- TypeStore.add("InheritVelocityModule", InheritVelocityModule);
336
- TypeStore.add("SizeBySpeedModule", SizeBySpeedModule);
337
- TypeStore.add("ColorBySpeedModule", ColorBySpeedModule);
338
- TypeStore.add("ParticleSubEmitter", ParticleSubEmitter);
339
219
  TypeStore.add("PlayerColor", PlayerColor);
340
220
  TypeStore.add("Antialiasing", Antialiasing);
341
221
  TypeStore.add("BloomEffect", BloomEffect);
@@ -350,18 +230,11 @@ TypeStore.add("SharpeningEffect", SharpeningEffect);
350
230
  TypeStore.add("TiltShiftEffect", TiltShiftEffect);
351
231
  TypeStore.add("ToneMappingEffect", ToneMappingEffect);
352
232
  TypeStore.add("Vignette", Vignette);
353
- TypeStore.add("PostProcessingHandler", PostProcessingHandler);
354
233
  TypeStore.add("Volume", Volume);
355
- TypeStore.add("VolumeParameter", VolumeParameter);
356
- TypeStore.add("VolumeProfile", VolumeProfile);
357
234
  TypeStore.add("ReflectionProbe", ReflectionProbe);
358
- TypeStore.add("FieldWithDefault", FieldWithDefault);
359
235
  TypeStore.add("Renderer", Renderer);
360
236
  TypeStore.add("MeshRenderer", MeshRenderer);
361
237
  TypeStore.add("SkinnedMeshRenderer", SkinnedMeshRenderer);
362
- TypeStore.add("InstancingHandler", InstancingHandler);
363
- TypeStore.add("InstanceHandle", InstanceHandle);
364
- TypeStore.add("RendererLightmap", RendererLightmap);
365
238
  TypeStore.add("Rigidbody", Rigidbody);
366
239
  TypeStore.add("SceneSwitcher", SceneSwitcher);
367
240
  TypeStore.add("ScreenCapture", ScreenCapture);
@@ -371,9 +244,6 @@ TypeStore.add("SmoothFollow", SmoothFollow);
371
244
  TypeStore.add("SpatialTriggerReceiver", SpatialTriggerReceiver);
372
245
  TypeStore.add("SpatialTrigger", SpatialTrigger);
373
246
  TypeStore.add("SpectatorCamera", SpectatorCamera);
374
- TypeStore.add("Sprite", Sprite);
375
- TypeStore.add("SpriteSheet", SpriteSheet);
376
- TypeStore.add("SpriteData", SpriteData);
377
247
  TypeStore.add("SpriteRenderer", SpriteRenderer);
378
248
  TypeStore.add("SyncedCamera", SyncedCamera);
379
249
  TypeStore.add("SyncedRoom", SyncedRoom);
@@ -381,8 +251,6 @@ TypeStore.add("SyncedTransform", SyncedTransform);
381
251
  TypeStore.add("TestRunner", TestRunner);
382
252
  TypeStore.add("TestSimulateUserData", TestSimulateUserData);
383
253
  TypeStore.add("PlayableDirector", PlayableDirector);
384
- TypeStore.add("SignalAsset", SignalAsset);
385
- TypeStore.add("SignalReceiverEvent", SignalReceiverEvent);
386
254
  TypeStore.add("SignalReceiver", SignalReceiver);
387
255
  TypeStore.add("AnimationTrackHandler", AnimationTrackHandler);
388
256
  TypeStore.add("AudioTrackHandler", AudioTrackHandler);
@@ -400,18 +268,13 @@ TypeStore.add("MaskableGraphic", MaskableGraphic);
400
268
  TypeStore.add("Image", Image);
401
269
  TypeStore.add("RawImage", RawImage);
402
270
  TypeStore.add("InputField", InputField);
403
- TypeStore.add("Padding", Padding);
404
271
  TypeStore.add("VerticalLayoutGroup", VerticalLayoutGroup);
405
272
  TypeStore.add("HorizontalLayoutGroup", HorizontalLayoutGroup);
406
273
  TypeStore.add("GridLayoutGroup", GridLayoutGroup);
407
274
  TypeStore.add("Outline", Outline);
408
- TypeStore.add("PointerEventData", PointerEventData);
409
275
  TypeStore.add("ObjectRaycaster", ObjectRaycaster);
410
276
  TypeStore.add("GraphicRaycaster", GraphicRaycaster);
411
277
  TypeStore.add("SpatialGrabRaycaster", SpatialGrabRaycaster);
412
- TypeStore.add("UIRaycastUtils", UIRaycastUtils);
413
- TypeStore.add("Size", Size);
414
- TypeStore.add("Rect", Rect);
415
278
  TypeStore.add("RectTransform", RectTransform);
416
279
  TypeStore.add("SpatialHtml", SpatialHtml);
417
280
  TypeStore.add("Text", Text);
@@ -428,12 +291,9 @@ TypeStore.add("WebARCameraBackground", WebARCameraBackground);
428
291
  TypeStore.add("WebARSessionRoot", WebARSessionRoot);
429
292
  TypeStore.add("WebXR", WebXR);
430
293
  TypeStore.add("AvatarMarker", AvatarMarker);
431
- TypeStore.add("WebXRTrackedImage", WebXRTrackedImage);
432
- TypeStore.add("WebXRImageTrackingModel", WebXRImageTrackingModel);
433
294
  TypeStore.add("WebXRImageTracking", WebXRImageTracking);
434
295
  TypeStore.add("WebXRPlaneTracking", WebXRPlaneTracking);
435
296
  TypeStore.add("XRRig", XRRig);
436
- TypeStore.add("XRState", XRState);
437
297
  TypeStore.add("XRFlag", XRFlag);
438
298
  TypeStore.add("PlayerSync", PlayerSync);
439
299
  TypeStore.add("PlayerState", PlayerState);
@@ -47,7 +47,7 @@ export type ObjectOptions = {
47
47
  /**
48
48
  * The scale of the object in local space
49
49
  */
50
- scale?: Vec3 | number,
50
+ scale?: Vec3 | number | [number, number, number],
51
51
  /**
52
52
  * If the object should receive shadows
53
53
  * @default true
@@ -250,8 +250,13 @@ export class ObjectUtils {
250
250
  if (opts?.scale) {
251
251
  if (typeof opts.scale === "number")
252
252
  obj.scale.set(opts.scale, opts.scale, opts.scale);
253
- else
253
+ else if (Array.isArray(opts.scale)) {
254
+ obj.scale.set(opts.scale[0], opts.scale[1], opts.scale[2]);
255
+ }
256
+ else {
254
257
  obj.scale.set(opts.scale.x, opts.scale.y, opts.scale.z);
258
+
259
+ }
255
260
  }
256
261
 
257
262
  if (opts?.receiveShadow != undefined) {
@@ -157,6 +157,7 @@ export function tryDetermineFileTypeFromBinary(data: ArrayBuffer, response: Resp
157
157
  case "model/vnd.usda+zip":
158
158
  return "usda";
159
159
  case "model/fbx":
160
+ case "model/vnd.autodesk.fbx":
160
161
  return "fbx";
161
162
  case "model/obj":
162
163
  return "obj";
@@ -343,6 +343,10 @@ export class NeedleMenuElement extends HTMLElement {
343
343
  color: rgb(20,20,20);
344
344
  }
345
345
 
346
+ .options > select[multiple]:hover {
347
+ max-height: 300px;
348
+ }
349
+
346
350
  .floating-panel-style {
347
351
  background: rgba(255, 255, 255, .4);
348
352
  outline: rgb(0 0 0 / 5%) 1px solid;
@@ -147,7 +147,22 @@ export class Camera extends Behaviour implements ICamera {
147
147
  public get clearFlags(): ClearFlags {
148
148
  return this._clearFlags;
149
149
  }
150
- public set clearFlags(val: ClearFlags) {
150
+ public set clearFlags(val: ClearFlags | "skybox" | "solidcolor") {
151
+
152
+ if (typeof val === "string") {
153
+ switch (val) {
154
+ case "skybox":
155
+ val = ClearFlags.Skybox;
156
+ break;
157
+ case "solidcolor":
158
+ val = ClearFlags.SolidColor;
159
+ break;
160
+ default:
161
+ val = ClearFlags.None;
162
+ break;
163
+ }
164
+ }
165
+
151
166
  if (val === this._clearFlags) return;
152
167
  this._clearFlags = val;
153
168
  this.applyClearFlagsIfIsActiveCamera();
@@ -32,9 +32,10 @@ ContextRegistry.registerCallback(ContextEvent.MissingCamera, (evt) => {
32
32
  camInstance.sourceId = evt.files?.[0]?.src ?? "unknown"
33
33
 
34
34
  // Set the clearFlags to a skybox if we have one OR if the user set a skybox image attribute
35
- if(evt.context.domElement.getAttribute("skybox-image")?.length || 0 > 0 || (evt.context as Context).lightmaps.tryGetSkybox(camInstance.sourceId))
35
+ if (evt.context.domElement.getAttribute("skybox-image")?.length || evt.context.domElement.getAttribute("background-image")?.length || (evt.context as Context).lightmaps.tryGetSkybox(camInstance.sourceId)) {
36
36
  camInstance.clearFlags = ClearFlags.Skybox;
37
- else
37
+ }
38
+ else
38
39
  // TODO provide a nice default skybox
39
40
  camInstance.clearFlags = ClearFlags.SolidColor;
40
41
  camInstance.backgroundColor = new RGBAColor(0.5, 0.5, 0.5, 1);
@@ -146,8 +146,8 @@ export class ToneMappingEffect extends PostProcessingEffect {
146
146
  onBeforeRender(): void {
147
147
  if (this.mode.overrideState)
148
148
  this.context.renderer.toneMapping = toThreeToneMapping(this.mode.value);
149
- if (this.exposure.overrideState)
150
- this.context.renderer.toneMappingExposure = this.exposure.value;
149
+ if (this.exposure.overrideState && this.exposure.value !== undefined)
150
+ this.context.renderer.toneMappingExposure = this.exposure.value
151
151
  }
152
152
 
153
153
 
@@ -15,6 +15,7 @@ globalThis["NEEDLE_USE_POSTPROCESSING"] = globalThis["NEEDLE_USE_POSTPROCESSING"
15
15
 
16
16
 
17
17
  const debug = getParam("debugpost");
18
+ const dontMergePasses = getParam("debugpostpasses");
18
19
 
19
20
  const activeKey = Symbol("needle:postprocessing-handler");
20
21
  const autoclearSetting = Symbol("needle:previous-autoclear-state");
@@ -168,6 +169,7 @@ export class PostProcessingHandler {
168
169
  private applyEffects(context: Context) {
169
170
 
170
171
  const effectsOrPasses = this._effects;
172
+
171
173
  if (effectsOrPasses.length <= 0) return;
172
174
 
173
175
  const camera = context.mainCameraComponent as Camera;
@@ -209,7 +211,7 @@ export class PostProcessingHandler {
209
211
  composer.addPass(screenpass);
210
212
 
211
213
  const automaticEffectsOrdering = true;
212
- if (automaticEffectsOrdering) {
214
+ if (automaticEffectsOrdering && !dontMergePasses) {
213
215
  try {
214
216
  this.orderEffects();
215
217
 
@@ -243,9 +245,16 @@ export class PostProcessingHandler {
243
245
  }
244
246
  }
245
247
  else {
248
+ // we still want to sort passes, but we do not want to merge them for debugging
249
+ if (automaticEffectsOrdering)
250
+ this.orderEffects();
251
+
246
252
  for (const ef of effectsOrPasses) {
247
- if (ef instanceof MODULES.POSTPROCESSING.MODULE.Effect)
248
- composer.addPass(new MODULES.POSTPROCESSING.MODULE.EffectPass(cam, ef as Effect));
253
+ if (ef instanceof MODULES.POSTPROCESSING.MODULE.Effect) {
254
+ const pass = new MODULES.POSTPROCESSING.MODULE.EffectPass(cam, ef as Effect);
255
+ pass.name = ef.name;
256
+ composer.addPass(pass);
257
+ }
249
258
  else if (ef instanceof MODULES.POSTPROCESSING.MODULE.Pass)
250
259
  composer.addPass(ef as Pass);
251
260
  else
@@ -255,10 +264,74 @@ export class PostProcessingHandler {
255
264
  }
256
265
  }
257
266
 
258
- if (debug)
267
+ if (debug) {
268
+
259
269
  console.log("[PostProcessing] Passes →", composer.passes);
270
+
271
+ // DepthEffect for debugging purposes, disabled by default, can be selected in the debug pass select
272
+ const depthEffect = new MODULES.POSTPROCESSING.MODULE.DepthEffect({
273
+ blendFunction: MODULES.POSTPROCESSING.MODULE.BlendFunction.NORMAL,
274
+ inverted: true,
275
+ });
276
+ depthEffect.name = "Depth Effect";
277
+ const depthPass = new MODULES.POSTPROCESSING.MODULE.EffectPass(cam, depthEffect);
278
+ depthPass.name = "Depth Effect Pass";
279
+ depthPass.enabled = false;
280
+ composer.passes.push(depthPass);
281
+
282
+ if (this._passIndices !== null) {
283
+ const newPasses = [composer.passes[0]];
284
+ if (this._passIndices.length > 0 && this._passIndices[0] !== 0) {
285
+ newPasses.push(...this._passIndices.map(index => composer.passes[index]).filter(pass => pass));
286
+ }
287
+ if (newPasses.length > 0) {
288
+ console.log("[PostProcessing] Passes (selected) →", newPasses);
289
+ }
290
+ composer.passes.length = 0;
291
+ for (const pass of newPasses) {
292
+ pass.enabled = true;
293
+ composer.addPass(pass);
294
+ }
295
+ }
296
+
297
+ const menu = this.context.menu;
298
+ if (menu && this._passIndices === null) {
299
+ if (this._menuEntry)
300
+ this._menuEntry.remove();
301
+
302
+ const select = document.createElement("select");
303
+ select.multiple = true;
304
+ const defaultOpt = document.createElement("option");
305
+ defaultOpt.innerText = "Final Output";
306
+ defaultOpt.value = "-1";
307
+ select.appendChild(defaultOpt);
308
+ for (const eff of composer.passes) {
309
+ const opt = document.createElement("option");
310
+ opt.innerText = eff.name;
311
+ opt.value = `${composer.passes.indexOf(eff)}`;
312
+ opt.title = eff.name;
313
+ select.appendChild(opt);
314
+ }
315
+ menu.appendChild(select);
316
+ this._menuEntry = select;
317
+ select.addEventListener("change", () => {
318
+ const indices = Array.from(select.selectedOptions).map(option => parseInt(option.value));
319
+ if (indices.length === 1 && indices[0] === -1) {
320
+ this._passIndices = null;
321
+ }
322
+ else {
323
+ this._passIndices = indices;
324
+ }
325
+
326
+ this.applyEffects(context);
327
+ });
328
+ }
329
+ }
260
330
  }
261
331
 
332
+ private _menuEntry: HTMLSelectElement | null = null;
333
+ private _passIndices: number[] | null = null;
334
+
262
335
  private orderEffects() {
263
336
  if (debug) console.log("Before ordering effects", [...this._effects]);
264
337