@needle-tools/engine 2.57.0-pre → 2.58.1-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 (54) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/needle-engine.d.ts +43 -4
  3. package/dist/needle-engine.js +240 -240
  4. package/dist/needle-engine.js.map +4 -4
  5. package/dist/needle-engine.min.js +26 -26
  6. package/dist/needle-engine.min.js.map +4 -4
  7. package/dist/needle-engine.tsbuildinfo +1 -1
  8. package/lib/engine/codegen/register_types.js +2 -0
  9. package/lib/engine/codegen/register_types.js.map +1 -1
  10. package/lib/engine/engine.d.ts +1 -0
  11. package/lib/engine/engine.js +1 -0
  12. package/lib/engine/engine.js.map +1 -1
  13. package/lib/engine/engine_hot_reload.d.ts +3 -0
  14. package/lib/engine/engine_hot_reload.js +168 -0
  15. package/lib/engine/engine_hot_reload.js.map +1 -0
  16. package/lib/engine/engine_input.js +1 -1
  17. package/lib/engine/engine_mainloop_utils.d.ts +3 -0
  18. package/lib/engine/engine_mainloop_utils.js +61 -0
  19. package/lib/engine/engine_mainloop_utils.js.map +1 -1
  20. package/lib/engine/engine_scenetools.js +3 -0
  21. package/lib/engine/engine_scenetools.js.map +1 -1
  22. package/lib/engine/engine_setup.js +42 -36
  23. package/lib/engine/engine_setup.js.map +1 -1
  24. package/lib/engine-components/Fog.d.ts +20 -0
  25. package/lib/engine-components/Fog.js +61 -0
  26. package/lib/engine-components/Fog.js.map +1 -0
  27. package/lib/engine-components/Renderer.d.ts +7 -2
  28. package/lib/engine-components/Renderer.js +62 -2
  29. package/lib/engine-components/Renderer.js.map +1 -1
  30. package/lib/engine-components/codegen/components.d.ts +1 -0
  31. package/lib/engine-components/codegen/components.js +1 -0
  32. package/lib/engine-components/codegen/components.js.map +1 -1
  33. package/lib/engine-components/ui/EventSystem.d.ts +1 -1
  34. package/lib/engine-components/ui/EventSystem.js +25 -10
  35. package/lib/engine-components/ui/EventSystem.js.map +1 -1
  36. package/lib/engine-components/ui/PointerEvents.d.ts +3 -1
  37. package/lib/engine-components/ui/PointerEvents.js +1 -0
  38. package/lib/engine-components/ui/PointerEvents.js.map +1 -1
  39. package/lib/engine-components/ui/Raycaster.js.map +1 -1
  40. package/lib/tsconfig.tsbuildinfo +1 -1
  41. package/package.json +1 -1
  42. package/src/engine/codegen/register_types.js +2 -0
  43. package/src/engine/engine.ts +2 -0
  44. package/src/engine/engine_hot_reload.ts +186 -0
  45. package/src/engine/engine_input.ts +1 -1
  46. package/src/engine/engine_mainloop_utils.ts +61 -1
  47. package/src/engine/engine_scenetools.ts +3 -0
  48. package/src/engine/engine_setup.ts +40 -36
  49. package/src/engine-components/Fog.ts +60 -0
  50. package/src/engine-components/Renderer.ts +59 -2
  51. package/src/engine-components/codegen/components.ts +1 -0
  52. package/src/engine-components/ui/EventSystem.ts +30 -15
  53. package/src/engine-components/ui/PointerEvents.ts +7 -4
  54. package/src/engine-components/ui/Raycaster.ts +6 -3
@@ -36,13 +36,12 @@ export class EventSystem extends Behaviour {
36
36
  GameObject.addNewComponent(go, EventSystem);
37
37
  context.scene.add(go);
38
38
  }
39
-
40
- static get systems(): EventSystem[]
41
- {
39
+
40
+ static get systems(): EventSystem[] {
42
41
  const context = Context.Current;
43
42
  if (!this._eventSystemMap.has(context)) {
44
43
  this._eventSystemMap.set(context, []);
45
- }
44
+ }
46
45
  return this._eventSystemMap.get(context)!;
47
46
  }
48
47
 
@@ -91,6 +90,7 @@ export class EventSystem extends Behaviour {
91
90
  private _selectStartFn?: any;
92
91
  private _selectEndFn?: any;
93
92
  private _selectUpdateFn?: any;
93
+ private _onBeforeUpdateFn?: any;
94
94
 
95
95
  onEnable(): void {
96
96
 
@@ -118,7 +118,7 @@ export class EventSystem extends Behaviour {
118
118
  opts.isPressed = ctrl.selectionPressed;
119
119
  opts.isClicked = ctrl.selectionClick;
120
120
  this.handleEvents(args.grab, opts);
121
-
121
+
122
122
  const prevGrabbed = grabbed.get(ctrl);
123
123
  grabbed.set(ctrl, null);
124
124
  if (prevGrabbed) {
@@ -149,20 +149,22 @@ export class EventSystem extends Behaviour {
149
149
  WebXRController.addEventListener(ControllerEvents.SelectEnd, this._selectEndFn);
150
150
  WebXRController.addEventListener(ControllerEvents.Update, this._selectUpdateFn);
151
151
 
152
- this.context.pre_update_callbacks.push(this.onBeforeUpdate.bind(this));
153
- this.context.input.addEventListener(InputEvents.PointerDown, this.onPointerDown.bind(this));
152
+ // TODO: unregister
153
+ this._onBeforeUpdateFn ??= this.onBeforeUpdate.bind(this);
154
+ this.context.pre_update_callbacks.push(this._onBeforeUpdateFn);
155
+ this.context.input.addEventListener(InputEvents.PointerDown, this._onBeforeUpdateFn);
154
156
  }
155
157
 
156
158
  onDisable(): void {
157
159
  WebXRController.removeEventListener(ControllerEvents.SelectStart, this._selectStartFn);
158
160
  WebXRController.removeEventListener(ControllerEvents.SelectEnd, this._selectEndFn);
159
161
  WebXRController.removeEventListener(ControllerEvents.Update, this._selectUpdateFn);
160
- }
161
162
 
162
- onPointerDown() {
163
- this.onBeforeUpdate();
163
+ this.context.pre_update_callbacks.splice(this.context.pre_update_callbacks.indexOf(this._onBeforeUpdateFn), 1);
164
+ this.context.input.removeEventListener(InputEvents.PointerDown, this._onBeforeUpdateFn);
164
165
  }
165
166
 
167
+
166
168
  // doesnt work in dist
167
169
  // onBeforeRender() {
168
170
  // MeshUIHelper.update(this.context);
@@ -195,12 +197,25 @@ export class EventSystem extends Behaviour {
195
197
  }
196
198
 
197
199
  const hits = this.performRaycast(null);
198
- const args: PointerEventData = new PointerEventData(this.context.input.getPointerEvent(0));
200
+ let pointerId = 0;
201
+ for (const i of this.context.input.foreachPointerId()) {
202
+ const isDown = this.context.input.getPointerDown(i);
203
+ const isUp = this.context.input.getPointerUp(i);
204
+ if (isDown || isUp) {
205
+ pointerId = i;
206
+ break;
207
+ }
208
+ }
209
+ const ptr = this.context.input.getPointerEvent(pointerId);
210
+ // console.log(ptr);
211
+ const args: PointerEventData = new PointerEventData(ptr);
199
212
  args.inputSource = this.context.input;
200
- args.isClicked = this.context.input.mouseClick;
201
- args.isDown = this.context.input.mouseDown;
202
- args.isUp = this.context.input.mouseUp;
203
- args.isPressed = this.context.input.mousePressed;
213
+ args.pointerId = pointerId;
214
+ args.isClicked = this.context.input.getPointerClicked(pointerId)
215
+ args.isDown = this.context.input.getPointerDown(pointerId);
216
+ args.isUp = this.context.input.getPointerUp(pointerId);
217
+ args.isPressed = this.context.input.getPointerPressed(pointerId);
218
+ // if(args.isClicked || args.isUp) console.log("clicked", args);
204
219
  this.lastPointerEvent = args;
205
220
  if (!hits) return;
206
221
 
@@ -1,3 +1,5 @@
1
+ import { Input } from "../../engine/engine_input";
2
+
1
3
  export interface IInputEventArgs {
2
4
  get used(): boolean;
3
5
  Use(): void;
@@ -5,7 +7,7 @@ export interface IInputEventArgs {
5
7
  }
6
8
 
7
9
  export class PointerEventData implements IInputEventArgs {
8
- used: boolean = false;
10
+ used: boolean = false;
9
11
 
10
12
  Use() {
11
13
  this.used = true;
@@ -15,17 +17,18 @@ export class PointerEventData implements IInputEventArgs {
15
17
  this.event?.stopImmediatePropagation();
16
18
  }
17
19
 
18
- inputSource: any;
20
+ inputSource: Input | any;
19
21
  object!: THREE.Object3D;
20
22
 
23
+ pointerId: number | undefined;
21
24
  isDown: boolean | undefined;
22
25
  isUp: boolean | undefined;
23
26
  isPressed: boolean | undefined;
24
27
  isClicked: boolean | undefined;
25
28
 
26
- private event?:Event;
29
+ private event?: Event;
27
30
 
28
- constructor(events?:Event){
31
+ constructor(events?: Event) {
29
32
  this.event = events;
30
33
  }
31
34
  }
@@ -1,8 +1,8 @@
1
- import { Camera } from "three";
2
1
  import { RaycastOptions } from "../../engine/engine_physics";
3
- import { Behaviour } from "../Component";
2
+ import { Behaviour, Component } from "../Component";
4
3
  import { EventSystem } from "./EventSystem";
5
4
 
5
+
6
6
  export class Raycaster extends Behaviour {
7
7
  awake(): void {
8
8
  EventSystem.createIfNoneExists(this.context);
@@ -21,6 +21,7 @@ export class Raycaster extends Behaviour {
21
21
  }
22
22
  }
23
23
 
24
+
24
25
  export class ObjectRaycaster extends Raycaster {
25
26
  private targets: THREE.Object3D[] | null = null;
26
27
  private raycastHits: THREE.Intersection[] = [];
@@ -44,4 +45,6 @@ export class GraphicRaycaster extends ObjectRaycaster {
44
45
  // eventCamera: Camera | null = null;
45
46
  // ignoreReversedGraphics: boolean = false;
46
47
  // rootRaycaster: GraphicRaycaster | null = null;
47
- }
48
+ }
49
+
50
+