@needle-tools/engine 3.2.5-alpha → 3.2.6-alpha

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 (64) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/needle-engine.js +7125 -6981
  3. package/dist/needle-engine.min.js +277 -277
  4. package/dist/needle-engine.umd.cjs +275 -275
  5. package/lib/engine/api.d.ts +4 -1
  6. package/lib/engine/api.js +3 -1
  7. package/lib/engine/api.js.map +1 -1
  8. package/lib/engine/engine_context.d.ts +4 -2
  9. package/lib/engine/engine_context.js +5 -3
  10. package/lib/engine/engine_context.js.map +1 -1
  11. package/lib/engine/engine_element_loading.js +0 -1
  12. package/lib/engine/engine_element_loading.js.map +1 -1
  13. package/lib/engine/engine_mainloop_utils.js +4 -2
  14. package/lib/engine/engine_mainloop_utils.js.map +1 -1
  15. package/lib/engine/engine_scenelighting.d.ts +68 -0
  16. package/lib/engine/{engine_rendererdata.js → engine_scenelighting.js} +102 -30
  17. package/lib/engine/engine_scenelighting.js.map +1 -0
  18. package/lib/engine/engine_serialization_core.d.ts +5 -8
  19. package/lib/engine/engine_serialization_core.js.map +1 -1
  20. package/lib/engine/extensions/NEEDLE_lighting_settings.d.ts +3 -1
  21. package/lib/engine/extensions/NEEDLE_lighting_settings.js +32 -20
  22. package/lib/engine/extensions/NEEDLE_lighting_settings.js.map +1 -1
  23. package/lib/engine/extensions/NEEDLE_techniques_webgl.js +3 -3
  24. package/lib/engine/extensions/NEEDLE_techniques_webgl.js.map +1 -1
  25. package/lib/engine/extensions/index.d.ts +5 -0
  26. package/lib/engine/extensions/index.js +6 -0
  27. package/lib/engine/extensions/index.js.map +1 -0
  28. package/lib/engine-components/Component.js +15 -3
  29. package/lib/engine-components/Component.js.map +1 -1
  30. package/lib/engine-components/Renderer.js +1 -1
  31. package/lib/engine-components/Renderer.js.map +1 -1
  32. package/lib/engine-components/SceneSwitcher.d.ts +2 -0
  33. package/lib/engine-components/SceneSwitcher.js +16 -4
  34. package/lib/engine-components/SceneSwitcher.js.map +1 -1
  35. package/lib/engine-components/api.d.ts +1 -0
  36. package/lib/engine-components/api.js +1 -0
  37. package/lib/engine-components/api.js.map +1 -1
  38. package/lib/engine-components/postprocessing/PostProcessingHandler.d.ts +1 -1
  39. package/lib/engine-components/postprocessing/VolumeParameter.d.ts +1 -1
  40. package/lib/engine-components/postprocessing/VolumeParameter.js +7 -6
  41. package/lib/engine-components/postprocessing/VolumeParameter.js.map +1 -1
  42. package/lib/engine-components/webxr/index.d.ts +2 -0
  43. package/lib/engine-components/webxr/index.js +2 -0
  44. package/lib/engine-components/webxr/index.js.map +1 -1
  45. package/lib/tsconfig.tsbuildinfo +1 -1
  46. package/package.json +1 -1
  47. package/src/engine/api.ts +4 -1
  48. package/src/engine/engine_context.ts +5 -3
  49. package/src/engine/engine_element_loading.ts +0 -1
  50. package/src/engine/engine_mainloop_utils.ts +4 -2
  51. package/src/engine/{engine_rendererdata.ts → engine_scenelighting.ts} +109 -36
  52. package/src/engine/engine_serialization_core.ts +7 -8
  53. package/src/engine/extensions/NEEDLE_lighting_settings.ts +40 -25
  54. package/src/engine/extensions/NEEDLE_techniques_webgl.ts +3 -3
  55. package/src/engine/extensions/index.ts +5 -0
  56. package/src/engine-components/Component.ts +15 -3
  57. package/src/engine-components/Renderer.ts +1 -1
  58. package/src/engine-components/SceneSwitcher.ts +14 -4
  59. package/src/engine-components/api.ts +1 -0
  60. package/src/engine-components/postprocessing/PostProcessingHandler.ts +1 -1
  61. package/src/engine-components/postprocessing/VolumeParameter.ts +7 -6
  62. package/src/engine-components/webxr/index.ts +3 -1
  63. package/lib/engine/engine_rendererdata.d.ts +0 -49
  64. package/lib/engine/engine_rendererdata.js.map +0 -1
@@ -1,5 +1,4 @@
1
1
  import { AssetReference } from "../engine/engine_addressables";
2
- import { NeedleEngineHTMLElement } from "../engine/engine_element";
3
2
  import { InputEvents } from "../engine/engine_input";
4
3
  import { isLocalNetwork } from "../engine/engine_networking_utils";
5
4
  import { ContextEvent, ContextRegistry } from "../engine/engine_context_registry";
@@ -11,9 +10,14 @@ const debug = getParam("debugsceneswitcher");
11
10
 
12
11
  const ENGINE_ELEMENT_SCENE_ATTRIBUTE_NAME = "scene";
13
12
 
14
- ContextRegistry.registerCallback(ContextEvent.ContextRegistered, _ => {
15
- if (!NeedleEngineHTMLElement.observedAttributes.includes(ENGINE_ELEMENT_SCENE_ATTRIBUTE_NAME))
16
- NeedleEngineHTMLElement.observedAttributes.push(ENGINE_ELEMENT_SCENE_ATTRIBUTE_NAME);
13
+ ContextRegistry.registerCallback(ContextEvent.ContextRegistered, async _ => {
14
+ // We need to defer import to not get issues with circular dependencies
15
+ import("../engine/engine_element").then(res => {
16
+ const webcomponent = res.NeedleEngineHTMLElement;
17
+ if(debug) console.log("SceneSwitcher: registering scene attribute", webcomponent.observedAttributes);
18
+ if (!webcomponent.observedAttributes.includes(ENGINE_ELEMENT_SCENE_ATTRIBUTE_NAME))
19
+ webcomponent.observedAttributes.push(ENGINE_ELEMENT_SCENE_ATTRIBUTE_NAME);
20
+ });
17
21
  });
18
22
 
19
23
  const couldNotLoadScenePromise = Promise.resolve(false);
@@ -42,6 +46,10 @@ export class SceneSwitcher extends Behaviour {
42
46
  @serializable()
43
47
  useSwipe: boolean = true;
44
48
 
49
+ /** when enabled will automatically apply the environment scene lights */
50
+ @serializable()
51
+ useSceneLighting: boolean = true;
52
+
45
53
 
46
54
  private _currentIndex: number = -1;
47
55
  private _currentScene: AssetReference | undefined = undefined;
@@ -191,6 +199,8 @@ export class SceneSwitcher extends Behaviour {
191
199
  }
192
200
  if (this._currentIndex === index) {
193
201
  GameObject.add(scene.asset, this.gameObject);
202
+ if (this.useSceneLighting)
203
+ this.context.sceneLighting.enable(scene)
194
204
  // save the loaded scene as an url parameter
195
205
  if (this.queryParameterName?.length)
196
206
  setParamWithoutReload(this.queryParameterName, index.toString(), this.useHistory);
@@ -4,6 +4,7 @@ export * from "./codegen/components";
4
4
  // We dont want to export everything in the extensions
5
5
  export * from "./js-extensions/RGBAColor";
6
6
  export * from "./js-extensions/Object3D";
7
+ export * from "./XRFlag"
7
8
 
8
9
  export * from "./export"
9
10
  export * from "./postprocessing"
@@ -5,7 +5,7 @@ import { BloomEffect, BrightnessContrastEffect, ChromaticAberrationEffect, Depth
5
5
  import { showBalloonWarning } from "../../engine/debug/debug";
6
6
  import { Camera } from "../Camera";
7
7
  import { PostProcessingEffect } from "./PostProcessingEffect";
8
- import { Constructor } from "../../engine/engine_serialization_core";
8
+ import { Constructor } from "../../engine/engine_types";
9
9
 
10
10
  const debug = getParam("debugpost");
11
11
 
@@ -17,7 +17,7 @@ export class VolumeParameter {
17
17
  set overrideState(val: boolean) {
18
18
  if (this._active === val) return;
19
19
  this._active = val;
20
- const value = val ? this._lastActiveSetValue : this._defaultValue;
20
+ const value = val ? this._valueRaw : this._defaultValue;
21
21
  this.processValue(value, true);
22
22
  }
23
23
  private _active: boolean = true;
@@ -26,13 +26,13 @@ export class VolumeParameter {
26
26
 
27
27
  @serializable()
28
28
  get value() {
29
- return this._value;
29
+ return this._valueRaw;
30
30
  }
31
31
  set value(val: any) {
32
32
  this.processValue(val, false);
33
33
  }
34
34
  private _value: any;
35
- private _lastActiveSetValue?: any;
35
+ private _valueRaw?: any;
36
36
 
37
37
 
38
38
  set defaultValue(val: any) {
@@ -43,7 +43,7 @@ export class VolumeParameter {
43
43
 
44
44
  /** enforce the value to be set and onValueChanged to be called if assigned */
45
45
  __init() {
46
- this.processValue(this._lastActiveSetValue, true);
46
+ this.processValue(this._valueRaw, true);
47
47
  }
48
48
 
49
49
  /** called to modify a changing value before it is saved */
@@ -65,9 +65,10 @@ export class VolumeParameter {
65
65
  // with the value that is expected to received when the parameter is disabled)
66
66
  this._value = this._defaultValue;
67
67
  val = this._defaultValue;
68
+ this._valueRaw = val;
68
69
  }
69
70
  else {
70
- this._lastActiveSetValue = val;
71
+ this._valueRaw = val;
71
72
  if (this._active && this.valueProcessor)
72
73
  val = this.valueProcessor(val);
73
74
  this._value = val;
@@ -80,7 +81,7 @@ export class VolumeParameter {
80
81
 
81
82
  private testIfValueChanged(newValue: any): boolean {
82
83
 
83
- if (this._lastActiveSetValue === newValue)
84
+ if (this._valueRaw === newValue)
84
85
  return false;
85
86
 
86
87
  // TODO: may need checks for colors or vectors (check by xyz,rgb because they might come in as anonymous objects via editor modifications)
@@ -1,2 +1,4 @@
1
1
  export * from "./WebXR";
2
- export * from "./WebXRPlaneTracking";
2
+ export * from "./WebXRPlaneTracking";
3
+ export * from "./WebXRImageTracking";
4
+ export * from "./WebXRController";
@@ -1,49 +0,0 @@
1
- import { Vector4, Texture, LightProbe } from "three";
2
- import { Context } from "./engine_setup";
3
- import { SceneLightSettings } from "./extensions/NEEDLE_lighting_settings";
4
- import { SourceIdentifier } from "./engine_types";
5
- export declare type SphericalHarmonicsData = {
6
- array: number[];
7
- texture: THREE.WebGLCubeRenderTarget | THREE.Texture;
8
- lightProbe?: LightProbe;
9
- };
10
- export declare enum AmbientMode {
11
- Skybox = 0,
12
- Trilight = 1,
13
- Flat = 3,
14
- Custom = 4
15
- }
16
- export declare enum DefaultReflectionMode {
17
- Skybox = 0,
18
- Custom = 1
19
- }
20
- export declare class RendererData {
21
- private context;
22
- constructor(context: Context);
23
- private _currentReflectionId?;
24
- private sceneLightSettings?;
25
- private preUpdate;
26
- private _timevec4;
27
- get timeVec4(): Vector4;
28
- get environmentIntensity(): number;
29
- registerSceneLightSettings(sceneLightSettings: SceneLightSettings): void;
30
- registerReflection(sourceId: SourceIdentifier, reflectionTexture: Texture): void;
31
- getReflection(sourceId: SourceIdentifier): LightData | null | undefined;
32
- enableReflection(sourceId: SourceIdentifier): void;
33
- disableReflection(sourceId?: SourceIdentifier): void;
34
- getSceneLightingData(sourceId: SourceIdentifier): Promise<SphericalHarmonicsData>;
35
- private _waitPromise?;
36
- private _lighting;
37
- }
38
- export declare class LightData {
39
- get Source(): Texture;
40
- get Array(): number[] | undefined;
41
- private _context;
42
- private _source;
43
- private _sphericalHarmonics;
44
- private _sphericalHarmonicsArray?;
45
- private _ambientScale;
46
- private _lightProbe?;
47
- constructor(context: Context, tex: THREE.Texture, ambientScale?: number);
48
- getSphericalHarmonicsArray(intensityFactor?: number): SphericalHarmonicsData | null;
49
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"engine_rendererdata.js","sourceRoot":"","sources":["../../src/engine/engine_rendererdata.ts"],"names":[],"mappings":"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"}