@needle-tools/engine 2.65.0-pre.1 → 2.65.2-pre

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 (29) hide show
  1. package/CHANGELOG.md +12 -1
  2. package/dist/needle-engine.js +9956 -9881
  3. package/dist/needle-engine.umd.cjs +211 -207
  4. package/lib/engine/engine_license.js +9 -5
  5. package/lib/engine/engine_license.js.map +1 -1
  6. package/lib/engine/extensions/NEEDLE_techniques_webgl.js +5 -2
  7. package/lib/engine/extensions/NEEDLE_techniques_webgl.js.map +1 -1
  8. package/lib/engine-components/Animator.d.ts +25 -1
  9. package/lib/engine-components/Animator.js +64 -37
  10. package/lib/engine-components/Animator.js.map +1 -1
  11. package/lib/engine-components/AnimatorController.d.ts +14 -12
  12. package/lib/engine-components/AnimatorController.js +15 -13
  13. package/lib/engine-components/AnimatorController.js.map +1 -1
  14. package/lib/engine-components/ParticleSystem.d.ts +12 -8
  15. package/lib/engine-components/ParticleSystem.js +59 -30
  16. package/lib/engine-components/ParticleSystem.js.map +1 -1
  17. package/lib/engine-components/ParticleSystemModules.d.ts +1 -0
  18. package/lib/engine-components/ParticleSystemModules.js +12 -5
  19. package/lib/engine-components/ParticleSystemModules.js.map +1 -1
  20. package/lib/engine-components/Skybox.js +18 -5
  21. package/lib/engine-components/Skybox.js.map +1 -1
  22. package/package.json +1 -1
  23. package/src/engine/engine_license.ts +9 -5
  24. package/src/engine/extensions/NEEDLE_techniques_webgl.ts +5 -2
  25. package/src/engine-components/Animator.ts +54 -27
  26. package/src/engine-components/AnimatorController.ts +15 -13
  27. package/src/engine-components/ParticleSystem.ts +68 -37
  28. package/src/engine-components/ParticleSystemModules.ts +12 -6
  29. package/src/engine-components/Skybox.ts +15 -5
@@ -5,6 +5,9 @@ import { EXRLoader } from "three/examples/jsm/loaders/EXRLoader";
5
5
  import { EquirectangularRefractionMapping, sRGBEncoding, Texture, TextureLoader } from "three"
6
6
  import { syncField } from "../engine/engine_networking_auto";
7
7
  import { Camera } from "./Camera";
8
+ import { getParam, getPath } from "../engine/engine_utils";
9
+
10
+ const debug = getParam("debugskybox");
8
11
 
9
12
  export class RemoteSkybox extends Behaviour {
10
13
 
@@ -44,10 +47,17 @@ export class RemoteSkybox extends Behaviour {
44
47
 
45
48
  async setSkybox(url: string | undefined | null) {
46
49
  if (!url) return;
47
- if (!url?.endsWith(".hdr") && !url.endsWith(".exr")) {
50
+ if (!url?.endsWith(".hdr") && !url.endsWith(".exr") && !url.endsWith(".jpg") && !url.endsWith(".png") && !url.endsWith(".jpeg")) {
48
51
  console.warn("Potentially invalid skybox url", this.url, "on", this.name);
49
52
  }
50
53
 
54
+ if(debug) console.log("Remote skybox url?: " + url);
55
+
56
+ if (!url.startsWith("http") && !url.startsWith("www.") && !url.startsWith("data:")) {
57
+ url = getPath(this.sourceId, url);
58
+ if(debug) console.log("Remote skybox resolved to " + url);
59
+ }
60
+
51
61
  if (this._prevUrl === url && this._prevLoadedEnvironment) {
52
62
  this.applySkybox();
53
63
  return;
@@ -74,7 +84,7 @@ export class RemoteSkybox extends Behaviour {
74
84
  this._loader = new TextureLoader();
75
85
  }
76
86
 
77
- console.log("Loading skybox: " + url);
87
+ if(debug) console.log("Loading skybox: " + url);
78
88
  const envMap = await this._loader.loadAsync(url);
79
89
  if (!envMap) return;
80
90
  // Check if we're still enabled
@@ -103,7 +113,7 @@ export class RemoteSkybox extends Behaviour {
103
113
  if (this.context.scene.environment !== envMap)
104
114
  this._prevEnvironment = this.context.scene.environment;
105
115
 
106
- console.log("Set remote skybox", this.url);
116
+ if(debug) console.log("Set remote skybox", this.url);
107
117
  if (this.environment)
108
118
  this.context.scene.environment = envMap;
109
119
  if (this.background && !Camera.backgroundShouldBeTransparent(this.context))
@@ -140,12 +150,12 @@ export class RemoteSkybox extends Behaviour {
140
150
  for (const type of e.dataTransfer.types) {
141
151
  if (type === "text/uri-list") {
142
152
  const url = e.dataTransfer.getData(type);
143
- console.log(type, url);
153
+ if(debug) console.log(type, url);
144
154
  let name = new RegExp(/polyhaven.com\/asset_img\/.+?\/(?<name>.+)\.png/).exec(url)?.groups?.name;
145
155
  if (!name) {
146
156
  name = new RegExp(/polyhaven\.com\/a\/(?<name>.+)/).exec(url)?.groups?.name;
147
157
  }
148
- console.log(name);
158
+ if(debug) console.log(name);
149
159
  if (name) {
150
160
  const envurl = "https://dl.polyhaven.org/file/ph-assets/HDRIs/exr/1k/" + name + "_1k.exr";
151
161
  this.setSkybox(envurl);