@needle-tools/engine 3.5.9-beta.2 → 3.5.11-beta

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 (60) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/needle-engine.js +6859 -6813
  3. package/dist/needle-engine.light.js +8139 -7916
  4. package/dist/needle-engine.light.min.js +282 -281
  5. package/dist/needle-engine.light.umd.cjs +265 -264
  6. package/dist/needle-engine.min.js +288 -287
  7. package/dist/needle-engine.umd.cjs +262 -261
  8. package/lib/engine/api.d.ts +1 -1
  9. package/lib/engine/api.js +1 -1
  10. package/lib/engine/api.js.map +1 -1
  11. package/lib/engine/debug/debug_overlay.js +4 -1
  12. package/lib/engine/debug/debug_overlay.js.map +1 -1
  13. package/lib/engine/engine_context.js +9 -4
  14. package/lib/engine/engine_context.js.map +1 -1
  15. package/lib/engine/engine_element.d.ts +1 -0
  16. package/lib/engine/engine_element.js +9 -2
  17. package/lib/engine/engine_element.js.map +1 -1
  18. package/lib/engine/engine_element_loading.js +9 -10
  19. package/lib/engine/engine_element_loading.js.map +1 -1
  20. package/lib/engine/engine_hot_reload.d.ts +3 -3
  21. package/lib/engine/engine_hot_reload.js +6 -4
  22. package/lib/engine/engine_hot_reload.js.map +1 -1
  23. package/lib/engine/engine_license.js +6 -4
  24. package/lib/engine/engine_license.js.map +1 -1
  25. package/lib/engine/engine_physics_rapier.js +33 -30
  26. package/lib/engine/engine_physics_rapier.js.map +1 -1
  27. package/lib/engine/engine_typestore.d.ts +8 -0
  28. package/lib/engine/engine_typestore.js +11 -0
  29. package/lib/engine/engine_typestore.js.map +1 -1
  30. package/lib/engine-components/CameraUtils.js +5 -2
  31. package/lib/engine-components/CameraUtils.js.map +1 -1
  32. package/lib/engine-components/Component.d.ts +12 -12
  33. package/lib/engine-components/Component.js +4 -1
  34. package/lib/engine-components/Component.js.map +1 -1
  35. package/lib/engine-components/OrbitControls.js +1 -1
  36. package/lib/engine-components/OrbitControls.js.map +1 -1
  37. package/lib/engine-components/SpriteRenderer.d.ts +3 -0
  38. package/lib/engine-components/SpriteRenderer.js +18 -0
  39. package/lib/engine-components/SpriteRenderer.js.map +1 -1
  40. package/lib/engine-components/TransformGizmo.js +1 -1
  41. package/lib/engine-components/TransformGizmo.js.map +1 -1
  42. package/package.json +1 -1
  43. package/plugins/vite/config.js +8 -1
  44. package/plugins/vite/defines.js +1 -1
  45. package/plugins/vite/license.js +4 -1
  46. package/plugins/vite/reload.js +4 -4
  47. package/src/engine/api.ts +1 -1
  48. package/src/engine/debug/debug_overlay.ts +5 -2
  49. package/src/engine/engine_context.ts +11 -5
  50. package/src/engine/engine_element.ts +8 -3
  51. package/src/engine/engine_element_loading.ts +9 -10
  52. package/src/engine/engine_hot_reload.ts +5 -5
  53. package/src/engine/engine_license.ts +6 -4
  54. package/src/engine/engine_physics_rapier.ts +33 -31
  55. package/src/engine/engine_typestore.ts +14 -1
  56. package/src/engine-components/CameraUtils.ts +7 -3
  57. package/src/engine-components/Component.ts +16 -13
  58. package/src/engine-components/OrbitControls.ts +1 -1
  59. package/src/engine-components/SpriteRenderer.ts +13 -0
  60. package/src/engine-components/TransformGizmo.ts +1 -1
@@ -159,6 +159,10 @@ export class SpriteRenderer extends Behaviour {
159
159
  }
160
160
  _spriteSheet;
161
161
  _currentSprite;
162
+ // additional data
163
+ transparent = true;
164
+ cutoutThreshold = 0;
165
+ castShadows = false;
162
166
  awake() {
163
167
  this._currentSprite = undefined;
164
168
  if (debug) {
@@ -217,6 +221,11 @@ export class SpriteRenderer extends Behaviour {
217
221
  if (this._currentSprite) {
218
222
  this._currentSprite.layers.set(this.layer);
219
223
  }
224
+ if (this.sharedMaterial) {
225
+ this.sharedMaterial.alphaTest = this.cutoutThreshold;
226
+ this.sharedMaterial.transparent = this.transparent;
227
+ }
228
+ this._currentSprite.castShadow = this.castShadows;
220
229
  this._spriteSheet?.update();
221
230
  }
222
231
  }
@@ -232,4 +241,13 @@ __decorate([
232
241
  __decorate([
233
242
  serializable(SpriteData)
234
243
  ], SpriteRenderer.prototype, "sprite", null);
244
+ __decorate([
245
+ serializable()
246
+ ], SpriteRenderer.prototype, "transparent", void 0);
247
+ __decorate([
248
+ serializable()
249
+ ], SpriteRenderer.prototype, "cutoutThreshold", void 0);
250
+ __decorate([
251
+ serializable()
252
+ ], SpriteRenderer.prototype, "castShadows", void 0);
235
253
  //# sourceMappingURL=SpriteRenderer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SpriteRenderer.js","sourceRoot":"","sources":["../../src/engine-components/SpriteRenderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SpriteRenderer.js","sourceRoot":"","sources":["../../src/engine-components/SpriteRenderer.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,7 @@ import { serializable } from "../engine/engine_serialization_decorator";
10
10
  import * as params from "../engine/engine_default_parameters";
11
11
  import { MathUtils } from "three";
12
12
  import { TransformControls } from "three/examples/jsm/controls/TransformControls";
13
- import { OrbitControls } from "three/examples/jsm/controls/OrbitControls";
13
+ import { OrbitControls } from "./OrbitControls";
14
14
  export class TransformGizmo extends Behaviour {
15
15
  isGizmo = false;
16
16
  translationSnap = 1;
@@ -1 +1 @@
1
- {"version":3,"file":"TransformGizmo.js","sourceRoot":"","sources":["../../src/engine-components/TransformGizmo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TransformGizmo.js","sourceRoot":"","sources":["../../src/engine-components/TransformGizmo.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@needle-tools/engine",
3
- "version": "3.5.9-beta.2",
3
+ "version": "3.5.11-beta",
4
4
  "description": "Needle Engine is a web-based runtime for 3D apps. It runs on your machine for development with great integrations into editors like Unity or Blender - and can be deployed onto any device! It is flexible, extensible and networking and XR are built-in",
5
5
  "main": "dist/needle-engine.umd.cjs",
6
6
  "type": "module",
@@ -1,5 +1,7 @@
1
1
  import { existsSync, readFileSync } from 'fs';
2
2
 
3
+ let didLogCanNotFindConfig = false;
4
+
3
5
  /** the codegen meta file */
4
6
  export async function loadConfig(path) {
5
7
  try {
@@ -21,7 +23,12 @@ export async function loadConfig(path) {
21
23
  const meta = JSON.parse(text);
22
24
  return meta;
23
25
  }
24
- else console.error("Could not find config file at " + path);
26
+ else {
27
+ if(!didLogCanNotFindConfig){
28
+ didLogCanNotFindConfig = true;
29
+ console.error("Could not find config file at " + path);
30
+ }
31
+ }
25
32
  return null;
26
33
  }
27
34
  catch (err) {
@@ -27,7 +27,7 @@ export const needleDefines = (command, needleEngineConfig, userSettings) => {
27
27
  if (!viteConfig.define) viteConfig.define = {};
28
28
  viteConfig.define.NEEDLE_ENGINE_META = {
29
29
  version: tryGetNeedleEngineVersion(),
30
- generator: needleEngineConfig.generator,
30
+ generator: needleEngineConfig?.generator,
31
31
  }
32
32
 
33
33
  if (useRapier && userSettings?.useRapier !== true) {
@@ -32,7 +32,10 @@ export const needleLicense = (command, config, userSettings) => {
32
32
  }
33
33
  }
34
34
  else {
35
- console.log("No config found - can not apply license");
35
+ if (!didLog) {
36
+ didLog = true;
37
+ console.log("No config found - can not apply license");
38
+ }
36
39
  }
37
40
  }
38
41
  }
@@ -274,7 +274,7 @@ function insertScriptRegisterHotReloadCode(src, filePath) {
274
274
  // this code injects a register call into the component method
275
275
  const code = `
276
276
 
277
- import { register, unregister } from "./engine/engine_hot_reload";
277
+ import { registerHotReloadType as register, unregisterHotReloadType as unregister } from "./engine/engine_hot_reload";
278
278
  import { Component as ComponentType } from "./engine-components/Component";
279
279
 
280
280
  const prototype = ComponentType.prototype;
@@ -334,14 +334,14 @@ function insertScriptHotReloadCode(src, filePath) {
334
334
 
335
335
  // ${HOT_RELOAD_START_MARKER}
336
336
  // Inserted by needle reload plugin (vite)
337
- import { applyChanges } from "${importPath}";
337
+ import { applyHMRChanges } from "${importPath}";
338
338
  //@ts-ignore
339
339
  if (import.meta.hot) {
340
340
  //@ts-ignore
341
- import.meta.hot.accept((newModule) => {
341
+ import.meta.hot.accept((newModule, oldModule) => {
342
342
  if (newModule) {
343
343
 
344
- const success = applyChanges(newModule);
344
+ const success = applyHMRChanges(newModule, oldModule);
345
345
  if(success === false){
346
346
  //@ts-ignore
347
347
  import.meta.hot.invalidate()
package/src/engine/api.ts CHANGED
@@ -44,7 +44,7 @@ export * from "./engine_utils_screenshot";
44
44
  export * from "./engine_web_api";
45
45
  export * from "./engine_utils";
46
46
 
47
- export { TypeStore } from "./engine_typestore";
47
+ export { TypeStore, registerType } from "./engine_typestore";
48
48
 
49
49
  export { InstancingUtil } from "./engine_instancing";
50
50
  export { validate, prefix } from "./engine_util_decorator"
@@ -104,7 +104,9 @@ export function addLog(type: LogType, message: string | any[], _file?: string |
104
104
 
105
105
  const currentMessages = new Set<string>();
106
106
 
107
- function showMessage(type: LogType, element: HTMLElement, msg: string) {
107
+ function showMessage(type: LogType, element: HTMLElement, msg: string | null | undefined) {
108
+ if (msg === null || msg === undefined) return;
109
+
108
110
  const container = getLogsContainer(element);
109
111
  if (container.childElementCount >= 20) {
110
112
  const last = container.lastElementChild;
@@ -117,8 +119,9 @@ function showMessage(type: LogType, element: HTMLElement, msg: string) {
117
119
  const msgcontainer = getMessageContainer(type, msg);
118
120
  container.prepend(msgcontainer);
119
121
 
122
+ const _msg = msg;
120
123
  setTimeout(() => {
121
- currentMessages.delete(msg);
124
+ currentMessages.delete(_msg);
122
125
  returnMessageContainer(msgcontainer);
123
126
  }, 10000);
124
127
  }
@@ -2,7 +2,7 @@ import {
2
2
  BufferGeometry, Camera, Clock, Color, DepthTexture, Group,
3
3
  Material, NearestFilter, NoToneMapping, Object3D, PCFSoftShadowMap,
4
4
  PerspectiveCamera, RGBAFormat, Scene, sRGBEncoding,
5
- Texture, WebGLRenderer, WebGLRenderTarget
5
+ Texture, WebGLRenderer, WebGLRendererParameters, WebGLRenderTarget
6
6
  } from 'three'
7
7
  import { Input } from './engine_input';
8
8
  import { Physics } from './engine_physics';
@@ -259,9 +259,15 @@ export class Context implements IContext {
259
259
  this.isManagedExternally = true;
260
260
  }
261
261
  else {
262
- this.renderer = new WebGLRenderer({
263
- antialias: true
264
- });
262
+ const params: WebGLRendererParameters = {
263
+ antialias: true,
264
+ };
265
+
266
+ // get canvas already configured in the Needle Engine Web Component
267
+ const canvas = args?.domElement?.shadowRoot?.querySelector("canvas");
268
+ if (canvas) params.canvas = canvas;
269
+
270
+ this.renderer = new WebGLRenderer(params);
265
271
 
266
272
  // some tonemapping other than "NONE" is required for adjusting exposure with EXR environments
267
273
  this.renderer.toneMappingExposure = 1; // range [0...inf] instead of the usual -15..15
@@ -551,7 +557,7 @@ export class Context implements IContext {
551
557
 
552
558
  // console.log(prepare_succeeded);
553
559
 
554
- if (!this.isManagedExternally)
560
+ if (!this.isManagedExternally && !this.domElement.shadowRoot)
555
561
  this.domElement.prepend(this.renderer.domElement);
556
562
 
557
563
  Context.Current = this;
@@ -276,18 +276,22 @@ export class NeedleEngineHTMLElement extends HTMLElement implements INeedleEngin
276
276
  if (currentHash !== null && currentHash !== undefined)
277
277
  this._context.hash = currentHash;
278
278
  this._context.alias = alias;
279
- if (!this._context.isCreated)
279
+ const contextWasCreated = this._context.isCreated;
280
+ if (!contextWasCreated) {
280
281
  await this._context.onCreate(loadFunction);
282
+ }
281
283
  else {
282
284
  await loadFunction(this._context);
283
285
  }
284
286
 
285
287
 
286
288
 
287
-
289
+ console.log("Needle Engine: finished loading", alias ?? "")
288
290
  this._loadingProgress01 = 1;
289
- if (useDefaultLoading)
291
+ if (useDefaultLoading) {
290
292
  this._loadingView?.onLoadingUpdate(1, "creating scene");
293
+ if (contextWasCreated) this.onReady();
294
+ }
291
295
  this.classList.remove("loading");
292
296
  this.classList.add("loading-finished");
293
297
  if (debug)
@@ -301,6 +305,7 @@ export class NeedleEngineHTMLElement extends HTMLElement implements INeedleEngin
301
305
 
302
306
  }
303
307
 
308
+ /** called by the context when the first frame has been rendered */
304
309
  private onReady = () => this._loadingView?.onLoadingFinished();
305
310
 
306
311
 
@@ -73,14 +73,15 @@ export class EngineLoadingView implements ILoadingViewHandler {
73
73
  }
74
74
 
75
75
  onLoadingBegin(message?: string) {
76
+ const _element = this._element.shadowRoot || this._element;
76
77
  if (debug) console.warn("Begin Loading")
77
78
  if (!this._loadingElement) {
78
- for (let i = 0; i < this._element.children.length; i++) {
79
- const el = this._element.children[i] as HTMLElement;
79
+ for (let i = 0; i < _element.children.length; i++) {
80
+ const el = _element.children[i] as HTMLElement;
80
81
  if (el.classList.contains(EngineLoadingView.LoadingContainerClassName)) {
81
82
  if (!this._allowCustomLoadingElement) {
82
83
  if (debug) console.warn("Remove custom loading container")
83
- this._element.removeChild(el);
84
+ _element.removeChild(el);
84
85
  continue;
85
86
  }
86
87
  this._loadingElement = this.createLoadingElement(el);
@@ -92,7 +93,7 @@ export class EngineLoadingView implements ILoadingViewHandler {
92
93
  this._progress = 0;
93
94
  this.loadingProgress = 0;
94
95
  this._loadingElement.style.display = "flex";
95
- this._element.appendChild(this._loadingElement);
96
+ _element.appendChild(this._loadingElement);
96
97
  this.smoothProgressLoop();
97
98
  this.setMessage(message ?? "");
98
99
  }
@@ -141,7 +142,7 @@ export class EngineLoadingView implements ILoadingViewHandler {
141
142
  if (typeof debugRendering === "number") dt *= debugRendering;
142
143
  }
143
144
  this._progressLoop = setInterval(() => {
144
- // increate loading speed when almost done
145
+ // increase loading speed when almost done
145
146
  if (this.loadingProgress >= .95 && !debugRendering) dt = .9;
146
147
  this._progress = Mathf.lerp(this._progress, this.loadingProgress, dt * this.loadingProgress);
147
148
  this.updateDisplay();
@@ -229,15 +230,12 @@ export class EngineLoadingView implements ILoadingViewHandler {
229
230
  else
230
231
  loadingBarContainer.style.backgroundColor = "rgba(255,255,255,.2)"
231
232
  // loadingBarContainer.style.alignItems = "center";
232
- this._loadingElement.appendChild(loadingBarContainer);
233
233
 
234
234
  const logo = document.createElement("img");
235
235
  const logoSize = 64;
236
236
  logo.style.width = `${logoSize}px`;
237
237
  logo.style.height = `${logoSize}px`;
238
- logo.style.position = "absolute";
239
- logo.style.left = "50%";
240
- logo.style.transform = `translate(-${logoSize * .5}px, -${logoSize + 32}px)`;
238
+ logo.style.marginBottom = "20px";
241
239
  logo.addEventListener("click", () => window.open("https://needle.tools", "_blank"));
242
240
  logo.style.cursor = "pointer";
243
241
  logo.style.userSelect = "none";
@@ -250,7 +248,8 @@ export class EngineLoadingView implements ILoadingViewHandler {
250
248
  logo.src = customLogo;
251
249
  }
252
250
  }
253
- loadingBarContainer.appendChild(logo);
251
+ this._loadingElement.appendChild(logo);
252
+ this._loadingElement.appendChild(loadingBarContainer);
254
253
 
255
254
 
256
255
  this._loadingBar = document.createElement("div");
@@ -33,7 +33,7 @@ export function isHotReloading() {
33
33
  return isApplyingChanges;
34
34
  }
35
35
 
36
- export function register(instance: object) {
36
+ export function registerHotReloadType(instance: object) {
37
37
  if (isApplyingChanges) return;
38
38
  const type = instance.constructor;
39
39
  const name = type.name;
@@ -45,7 +45,7 @@ export function register(instance: object) {
45
45
  }
46
46
  }
47
47
 
48
- export function unregister(instance: object) {
48
+ export function unregisterHotReloadType(instance: object) {
49
49
  if (isApplyingChanges) return;
50
50
  const type = instance.constructor;
51
51
  const name = type.name;
@@ -81,10 +81,10 @@ function reloadPageOnHotReloadError() {
81
81
  }
82
82
 
83
83
 
84
- export function applyChanges(newModule): boolean {
84
+ export function applyHMRChanges(newModule): boolean {
85
85
 
86
86
  if (debug)
87
- console.log("Hot Reload - apply changes");
87
+ console.log("[HMR] Apply changes", newModule, Object.keys(newModule));
88
88
 
89
89
  reloadPageOnHotReloadError();
90
90
 
@@ -96,6 +96,7 @@ export function applyChanges(newModule): boolean {
96
96
 
97
97
  const typeToUpdate = TypeStore.get(key);
98
98
  if (!typeToUpdate) {
99
+ if(debug) console.log("[HMR] Type not found: " + key)
99
100
  continue;
100
101
  }
101
102
  const newType = newModule[key];
@@ -194,4 +195,3 @@ export function applyChanges(newModule): boolean {
194
195
  return true;
195
196
  }
196
197
 
197
-
@@ -64,9 +64,10 @@ function insertNonCommercialUseHint(ctx: IContext) {
64
64
 
65
65
  const interval = setInterval(() => {
66
66
  if (!licenseElement) return;
67
- if (licenseElement.parentElement !== ctx.domElement) {
68
- ctx.domElement.appendChild(licenseElement);
69
- if (style) ctx.domElement.appendChild(style);
67
+ const parent = ctx.domElement.shadowRoot || ctx.domElement;
68
+ if (licenseElement.parentNode !== parent) {
69
+ parent.appendChild(licenseElement);
70
+ if (style) parent.appendChild(style);
70
71
  }
71
72
  }, 100);
72
73
 
@@ -121,7 +122,7 @@ async function logNonCommercialUse(_logo?: string) {
121
122
  function createLicenseElement() {
122
123
  const licenseElement = document.createElement("div");
123
124
  licenseElement.setAttribute(licenseElementIdentifier, "");
124
- licenseElement.style.position = "fixed";
125
+ licenseElement.style.position = "absolute";
125
126
  licenseElement.style.bottom = "12px";
126
127
  licenseElement.style.right = "15px";
127
128
 
@@ -141,6 +142,7 @@ function createLicenseStyle() {
141
142
  font-weight: 300;
142
143
  transition: all 0.1s ease-in-out !important;
143
144
  pointer-events: all;
145
+ overflow: hidden;
144
146
  }
145
147
 
146
148
  ${selector}:hover {
@@ -21,6 +21,7 @@ import { Gizmos } from './engine_gizmos';
21
21
  import { Mathf } from './engine_math';
22
22
  import { SphereOverlapResult } from './engine_types';
23
23
  import { ContextEvent, ContextRegistry } from './engine_context_registry';
24
+ import { isDevEnvironment } from './debug/debug';
24
25
 
25
26
  const debugPhysics = getParam("debugphysics");
26
27
  const debugColliderPlacement = getParam("debugphysicscolliders");
@@ -61,48 +62,49 @@ declare type PhysicsBody = {
61
62
  export class RapierPhysics implements IPhysicsEngine {
62
63
 
63
64
  removeBody(obj: IComponent) {
65
+ if (!obj) return;
64
66
  this.validate();
65
67
  const body = obj[$bodyKey];
66
68
  obj[$bodyKey] = null;
67
69
  if (body && this.world) {
68
70
  const index = this.objects.findIndex(o => o === obj);
69
71
  if (index >= 0) {
70
- const body = this.bodies[index];
72
+ const rapierBody = this.bodies[index];
73
+ // Remove references
71
74
  this.bodies.splice(index, 1);
72
75
  this.objects.splice(index, 1);
73
76
 
74
- if (body instanceof Collider) {
75
- const collider = body as Collider;
76
- this.world?.removeCollider(collider, true);
77
+ // Remove the collider from the physics world
78
+ if (rapierBody instanceof Collider) {
79
+ const rapierCollider = rapierBody as Collider;
80
+ this.world?.removeCollider(rapierCollider, true);
77
81
 
78
- // remove the rigidbody if it doesnt have colliders anymore
79
- const rb = collider.parent();
80
- if (rb && rb.numColliders() <= 0) {
81
- this.world?.removeRigidBody(rb);
82
+ // also remove the rigidbody if it doesnt have colliders anymore
83
+ const rapierRigidbody: RigidBody | null = rapierCollider.parent();
84
+ if (rapierRigidbody && rapierRigidbody.numColliders() <= 0) {
85
+ const rigidbody = rapierRigidbody[$componentKey] as IRigidbody;
86
+ this.removeBody(rigidbody);
82
87
  }
83
88
  }
84
- else if (body instanceof RigidBody) {
85
- // TODO: running this code below causes a crash in rapier
86
- // const rb = body as RigidBody;
87
- // console.log("colliders", rb.numColliders())
88
- // for (let i = 0; i < rb.numColliders(); i++) {
89
- // const col = rb.collider(i);
90
- // this.world?.removeCollider(col, true);
91
- // }
92
- // console.log("colliders", rb.numColliders(), rb)
93
- // console.log(rb.handle, rb.userData);
94
- // if (rb.userData === undefined)
95
- // this.world?.removeRigidBody(rb);
96
- }
89
+ // Remove the rigidbody from the physics world
90
+ else if (rapierBody instanceof RigidBody) {
91
+ if (rapierBody.numColliders() <= 0) {
92
+ this.world?.removeRigidBody(rapierBody);
93
+ }
94
+ else {
95
+ if (isDevEnvironment()) {
96
+ if (!rapierBody["did_log_removing"]) {
97
+ setTimeout(() => {
98
+ if (rapierBody.numColliders() > 0) {
99
+ rapierBody["did_log_removing"] = true;
100
+ console.warn("RapierPhysics: removing rigidbody with colliders from the physics world is not possible right now, please remove the colliders first");
101
+ }
102
+ }, 1);
97
103
 
98
- // check if we need to remove the rigidbody too
99
- // const col = obj as ICollider;
100
- // if (col.isCollider && col.attachedRigidbody) {
101
- // const rb = col.attachedRigidbody[$bodyKey] as RigidBody;
102
- // if (rb && rb.numColliders() <= 0) {
103
- // // this.world?.removeRigidBody(rb);
104
- // }
105
- // }
104
+ }
105
+ }
106
+ }
107
+ }
106
108
  }
107
109
  }
108
110
  }
@@ -128,7 +130,7 @@ export class RapierPhysics implements IPhysicsEngine {
128
130
 
129
131
  updateProperties(rigidbody: IRigidbody) {
130
132
  this.validate();
131
- const physicsBody = rigidbody[$bodyKey];
133
+ const physicsBody = this.internal_getRigidbody(rigidbody);
132
134
  if (physicsBody) {
133
135
  this.internalUpdateProperties(rigidbody, physicsBody);
134
136
  }
@@ -206,7 +208,7 @@ export class RapierPhysics implements IPhysicsEngine {
206
208
 
207
209
  private async internalInitialization() {
208
210
  // NEEDLE_PHYSICS_INIT_START
209
- // use .env file with VITE_NEEDLE_USE_RAPIER=false to treeshape rapier
211
+ // use .env file with VITE_NEEDLE_USE_RAPIER=false to treeshake rapier
210
212
  // @ts-ignore
211
213
  if ("env" in import.meta && import.meta.env.VITE_NEEDLE_USE_RAPIER === "false") {
212
214
  return false;
@@ -20,4 +20,17 @@ class _TypeStore {
20
20
 
21
21
  export const $BuiltInTypeFlag = Symbol("BuiltInType");
22
22
 
23
- export const TypeStore = new _TypeStore();
23
+ export const TypeStore = new _TypeStore();
24
+
25
+
26
+ /**
27
+ * add to a class declaration to automatically register it to the TypeStore (required for HMR right now)
28
+ *
29
+ * `@registerType`
30
+ *
31
+ * `export class MyType extends Behaviour { ... }`
32
+ */
33
+ export const registerType = function (constructor: Function) {
34
+ if (!TypeStore.get(constructor.name))
35
+ TypeStore.add(constructor.name, constructor);
36
+ }
@@ -16,14 +16,15 @@ ContextRegistry.registerCallback(ContextEvent.MissingCamera, (evt) => {
16
16
  scene.add(cameraObject);
17
17
 
18
18
  const camInstance = new Camera();
19
- const cam = addNewComponent(cameraObject, camInstance, true) as ICamera
19
+ const cam = addNewComponent(cameraObject, camInstance, true) as ICamera;
20
20
  cam.sourceId = srcId;
21
21
  cam.clearFlags = 2;
22
22
  cam.backgroundColor = new RGBAColor(0.5, 0.5, 0.5, 1);
23
23
 
24
- cameraObject.position.x = -2;
25
- cameraObject.position.y = 2;
24
+ cameraObject.position.x = 0;
25
+ cameraObject.position.y = 1;
26
26
  cameraObject.position.z = 2;
27
+
27
28
  return cam;
28
29
  });
29
30
 
@@ -46,6 +47,9 @@ ContextRegistry.registerCallback(ContextEvent.ContextCreated, (evt) => {
46
47
  if (cameraObject) {
47
48
  const orbit = addNewComponent(cameraObject, new OrbitControls(), false) as OrbitControls;
48
49
  orbit.sourceId = "unknown";
50
+ setTimeout(() => {
51
+ orbit.fitCameraToObjects(evt.context.scene.children, 1);
52
+ }, 100);
49
53
  }
50
54
  else {
51
55
  console.warn("Missing camera object, can not add orbit controls")