@needle-tools/engine 2.31.1-pre → 2.32.0-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 (33) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/needle-engine.d.ts +111 -111
  3. package/dist/needle-engine.js +72 -72
  4. package/dist/needle-engine.js.map +3 -3
  5. package/dist/needle-engine.min.js +17 -17
  6. package/dist/needle-engine.min.js.map +3 -3
  7. package/lib/engine/debug/error_overlay.js +4 -4
  8. package/lib/engine/debug/error_overlay.js.map +1 -1
  9. package/lib/engine/engine_input.d.ts +87 -102
  10. package/lib/engine/engine_input.js +173 -99
  11. package/lib/engine/engine_input.js.map +1 -1
  12. package/lib/engine/engine_mainloop_utils.d.ts +2 -1
  13. package/lib/engine/engine_mainloop_utils.js +5 -2
  14. package/lib/engine/engine_mainloop_utils.js.map +1 -1
  15. package/lib/engine/engine_physics.d.ts +5 -1
  16. package/lib/engine/engine_physics.js +72 -22
  17. package/lib/engine/engine_physics.js.map +1 -1
  18. package/lib/engine/engine_setup.js +7 -3
  19. package/lib/engine/engine_setup.js.map +1 -1
  20. package/lib/engine-components/Component.d.ts +10 -3
  21. package/lib/engine-components/Component.js +98 -40
  22. package/lib/engine-components/Component.js.map +1 -1
  23. package/lib/engine-components/Rigidbody.d.ts +7 -4
  24. package/lib/engine-components/Rigidbody.js +43 -26
  25. package/lib/engine-components/Rigidbody.js.map +1 -1
  26. package/package.json +1 -1
  27. package/src/engine/debug/error_overlay.ts +3 -3
  28. package/src/engine/engine_input.ts +179 -103
  29. package/src/engine/engine_mainloop_utils.ts +6 -2
  30. package/src/engine/engine_physics.ts +86 -24
  31. package/src/engine/engine_setup.ts +8 -3
  32. package/src/engine-components/Component.ts +109 -40
  33. package/src/engine-components/RigidBody.ts +51 -29
package/CHANGELOG.md CHANGED
@@ -4,6 +4,15 @@ All notable changes to this package will be documented in this file.
4
4
  The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
5
5
  and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## [2.32.0-pre] - 2022-10-15
8
+ - Add: start implementing trigger callbacks for ``onTriggerEnter``, ``onTriggerExit`` and ``onTriggerStay``
9
+ - Change: ``GameObject.setActive`` now updates ``isActiveAndEnabled`` state and executes ``awake`` and ``onEnable`` calls when the object was activated for the first time (e.g. when instantiating from an previously inactive prefab)
10
+ - Change: improve collision callback events for components (``onCollisionEnter``, ``onCollisionExit`` and ``onCollisionStay``)
11
+ - Change: this.context.input keycode enums are now strings
12
+ - Fix: local dev error overlay now also displays errors that happen before web component is completely loaded (e.g. when script has import error)
13
+ - Fix: Rigidbody force is now correctly applied when the component was just instantiated (from inactive prefab) and added to the physics world for the first time
14
+ - Fix: DragControls component keyboard events ("space" and "d" for modifying height and rotation)
15
+
7
16
  ## [2.31.1-pre] - 2022-10-14
8
17
  - Change: Rigidbody now tracks position changes to detect when to update/override simulated physics body
9
18
  - Fix: loading relative font paths when exported via Asset context menu
@@ -81,9 +81,10 @@ declare module "engine/engine_constants" {
81
81
  declare module "engine/engine_mainloop_utils" {
82
82
  import { Context } from "engine/engine_setup";
83
83
  import { Component } from "engine-components/Component";
84
+ import { Object3D } from 'three';
84
85
  export function processNewScripts(context: Context): void;
85
86
  export function processRemoveFromScene(script: Component): void;
86
- export function processStart(context: Context): void;
87
+ export function processStart(context: Context, object?: Object3D): void;
87
88
  export function addScriptToArrays(script: any, context: Context): void;
88
89
  export function removeScriptFromContext(script: any, context: Context): void;
89
90
  export function updateIsActive(): void;
@@ -367,6 +368,7 @@ declare module "engine-components/Rigidbody" {
367
368
  import { Behaviour } from "engine-components/Component";
368
369
  import * as CANNON from 'cannon-es';
369
370
  import * as THREE from 'three';
371
+ import { Vector3 } from "three";
370
372
  export class Rigidbody extends Behaviour {
371
373
  mass: number;
372
374
  set isKinematic(kinematic: boolean);
@@ -385,20 +387,22 @@ declare module "engine-components/Rigidbody" {
385
387
  private _ignoreChange;
386
388
  private _dirty;
387
389
  private _positionWatch?;
390
+ private _matrixWatch?;
388
391
  private _setMatrix;
389
392
  constructor();
390
393
  awake(): void;
391
- start(): void;
392
394
  onEnable(): void;
393
395
  onDisable(): void;
394
396
  onDestroy(): void;
395
- earlyUpdate(): void;
396
397
  onBeforeRender(): void;
397
398
  initialize(): void;
398
399
  wakeUp(): void;
399
- applyForce(vec: THREE.Vector3, rel: THREE.Vector3 | undefined): void;
400
+ applyForce(vec: THREE.Vector3, rel?: THREE.Vector3): void;
401
+ setForce(x: number, y: number, z: number): void;
400
402
  getVelocity(): THREE.Vector3;
401
- setVelocity(x: number, y: number, z: number): void;
403
+ setVelocity(x: number | Vector3, y: number, z: number): void;
404
+ getTorque(): THREE.Vector3;
405
+ setTorque(x: number | Vector3, y: number, z: number): void;
402
406
  get smoothedVelocity(): THREE.Vector3;
403
407
  setAngularVelocity(x: number, y: number, z: number): void;
404
408
  private static copyVector3;
@@ -650,6 +654,8 @@ declare module "engine/engine_physics" {
650
654
  addSphereCollider(obj: THREE.Object3D, center: THREE.Vector3, radius: number, rb: Rigidbody | null): CANNON.Shape;
651
655
  addMeshCollider(_obj: THREE.Object3D): void;
652
656
  private isAlreadyRegistered;
657
+ private readonly tempMat1;
658
+ private readonly tempMat2;
653
659
  private addShape;
654
660
  step(deltaTime: number): void;
655
661
  private temp;
@@ -663,14 +669,16 @@ declare module "engine/engine_physics" {
663
669
  private onEndContact;
664
670
  }
665
671
  export class Collision {
672
+ private readonly invert;
666
673
  private readonly collision;
674
+ private readonly targetBody;
667
675
  readonly me: Object3D;
668
676
  private _normal?;
669
677
  get normal(): Vector3;
670
678
  private _collider?;
671
679
  get collider(): Collider;
672
680
  get gameObject(): Object3D;
673
- constructor(obj: Object3D, collision: CannonCollision);
681
+ constructor(obj: Object3D, collision: CannonCollision, invert?: boolean);
674
682
  }
675
683
  }
676
684
  declare module "engine-components/Component" {
@@ -713,7 +721,7 @@ declare module "engine-components/Component" {
713
721
  }
714
722
  abstract class GameObject extends THREE.Object3D implements THREE.Object3D {
715
723
  guid: string | undefined;
716
- static setActive(go: THREE.Object3D, active: boolean): void;
724
+ static setActive(go: THREE.Object3D, active: boolean, processStart?: boolean): void;
717
725
  static isActiveSelf(go: THREE.Object3D): boolean;
718
726
  static isActiveInHierarchy(go: THREE.Object3D): boolean;
719
727
  static markAsInstancedRendered(go: THREE.Object3D, instanced: boolean): void;
@@ -796,7 +804,11 @@ declare module "engine-components/Component" {
796
804
  onAfterRender?(): void;
797
805
  onCollisionEnter?(col: Collision): any;
798
806
  onCollisionExit?(col: Collision): any;
807
+ onCollisionExitRaw?(col: Collision): any;
799
808
  onCollisionStay?(col: Collision): any;
809
+ onTriggerEnter?(col: Collision): any;
810
+ onTriggerStay?(col: Collision): any;
811
+ onTriggerExit?(col: Collision): any;
800
812
  startCoroutine(routine: Generator, evt?: FrameEvent): Generator;
801
813
  stopCoroutine(routine: Generator, evt?: FrameEvent): void;
802
814
  get destroyed(): boolean;
@@ -814,9 +826,12 @@ declare module "engine-components/Component" {
814
826
  constructor();
815
827
  private _collisionExitRoutine;
816
828
  private _collisions;
829
+ private _triggerExitRoutine;
830
+ private _triggerCollisions;
831
+ get collisionsCount(): number;
817
832
  private __internalResetsCachedPhysicsData;
818
- __internalHandleCollision(col: Collision): void;
819
- sendExitCollisionEvent(obj: Object3D): void;
833
+ __internalHandleCollision(col: Collision, isTriggerCollision: boolean): void;
834
+ __internalHandleExitCollisionEvent(obj: Object3D, isTriggerCollision: boolean): void;
820
835
  private __waitForCollisionExit;
821
836
  private static _worldPositionBuffer;
822
837
  private static _worldQuaternionBuffer;
@@ -1032,9 +1047,9 @@ declare module "engine/engine_input" {
1032
1047
  private _pointerEvent;
1033
1048
  getKeyDown(): string | null;
1034
1049
  getKeyPressed(): string | null;
1035
- isKeyDown(keyCode: number): boolean;
1036
- isKeyUp(keyCode: number): boolean;
1037
- isKeyPressed(keyCode: number): boolean;
1050
+ isKeyDown(keyCode: KeyCode | string | number): any;
1051
+ isKeyUp(keyCode: KeyCode | string | number): boolean;
1052
+ isKeyPressed(keyCode: KeyCode | string | number): any;
1038
1053
  createPointerDown(args: PointerEventArgs): void;
1039
1054
  createPointerMove(args: PointerEventArgs): void;
1040
1055
  createPointerUp(args: PointerEventArgs): void;
@@ -1062,105 +1077,90 @@ declare module "engine/engine_input" {
1062
1077
  private onDispatchEvent;
1063
1078
  }
1064
1079
  export enum KeyCode {
1065
- BACKSPACE = 8,
1066
- TAB = 9,
1067
- ENTER = 13,
1068
- SHIFT = 16,
1069
- CTRL = 17,
1070
- ALT = 18,
1071
- PAUSE = 19,
1072
- CAPS_LOCK = 20,
1073
- ESCAPE = 27,
1074
- SPACE = 32,
1075
- PAGE_UP = 33,
1076
- PAGE_DOWN = 34,
1077
- END = 35,
1078
- HOME = 36,
1079
- LEFT_ARROW = 37,
1080
- UP_ARROW = 38,
1081
- RIGHT_ARROW = 39,
1082
- DOWN_ARROW = 40,
1083
- INSERT = 45,
1084
- DELETE = 46,
1085
- KEY_0 = 48,
1086
- KEY_1 = 49,
1087
- KEY_2 = 50,
1088
- KEY_3 = 51,
1089
- KEY_4 = 52,
1090
- KEY_5 = 53,
1091
- KEY_6 = 54,
1092
- KEY_7 = 55,
1093
- KEY_8 = 56,
1094
- KEY_9 = 57,
1095
- KEY_A = 65,
1096
- KEY_B = 66,
1097
- KEY_C = 67,
1098
- KEY_D = 68,
1099
- KEY_E = 69,
1100
- KEY_F = 70,
1101
- KEY_G = 71,
1102
- KEY_H = 72,
1103
- KEY_I = 73,
1104
- KEY_J = 74,
1105
- KEY_K = 75,
1106
- KEY_L = 76,
1107
- KEY_M = 77,
1108
- KEY_N = 78,
1109
- KEY_O = 79,
1110
- KEY_P = 80,
1111
- KEY_Q = 81,
1112
- KEY_R = 82,
1113
- KEY_S = 83,
1114
- KEY_T = 84,
1115
- KEY_U = 85,
1116
- KEY_V = 86,
1117
- KEY_W = 87,
1118
- KEY_X = 88,
1119
- KEY_Y = 89,
1120
- KEY_Z = 90,
1121
- LEFT_META = 91,
1122
- RIGHT_META = 92,
1123
- SELECT = 93,
1124
- NUMPAD_0 = 96,
1125
- NUMPAD_1 = 97,
1126
- NUMPAD_2 = 98,
1127
- NUMPAD_3 = 99,
1128
- NUMPAD_4 = 100,
1129
- NUMPAD_5 = 101,
1130
- NUMPAD_6 = 102,
1131
- NUMPAD_7 = 103,
1132
- NUMPAD_8 = 104,
1133
- NUMPAD_9 = 105,
1134
- MULTIPLY = 106,
1135
- ADD = 107,
1136
- SUBTRACT = 109,
1137
- DECIMAL = 110,
1138
- DIVIDE = 111,
1139
- F1 = 112,
1140
- F2 = 113,
1141
- F3 = 114,
1142
- F4 = 115,
1143
- F5 = 116,
1144
- F6 = 117,
1145
- F7 = 118,
1146
- F8 = 119,
1147
- F9 = 120,
1148
- F10 = 121,
1149
- F11 = 122,
1150
- F12 = 123,
1151
- NUM_LOCK = 144,
1152
- SCROLL_LOCK = 145,
1153
- SEMICOLON = 186,
1154
- EQUALS = 187,
1155
- COMMA = 188,
1156
- DASH = 189,
1157
- PERIOD = 190,
1158
- FORWARD_SLASH = 191,
1159
- GRAVE_ACCENT = 192,
1160
- OPEN_BRACKET = 219,
1161
- BACK_SLASH = 220,
1162
- CLOSE_BRACKET = 221,
1163
- SINGLE_QUOTE = 222
1080
+ BACKSPACE = "Backspace",
1081
+ TAB = "Tab",
1082
+ ENTER = "Enter",
1083
+ SHIFT = "Shift",
1084
+ CTRL = "Control",
1085
+ ALT = "Alt",
1086
+ PAUSE = "Pause",
1087
+ CAPS_LOCK = "CapsLock",
1088
+ ESCAPE = "Escape",
1089
+ SPACE = " ",
1090
+ PAGE_UP = "PageUp",
1091
+ PAGE_DOWN = "PageDown",
1092
+ END = "End",
1093
+ HOME = "Home",
1094
+ LEFT_ARROW = "ArrowLeft",
1095
+ UP_ARROW = "ArrowUp",
1096
+ RIGHT_ARROW = "ArrowRight",
1097
+ DOWN_ARROW = "ArrowDown",
1098
+ INSERT = "Insert",
1099
+ DELETE = "Delete",
1100
+ KEY_0 = "0",
1101
+ KEY_1 = "1",
1102
+ KEY_2 = "2",
1103
+ KEY_3 = "3",
1104
+ KEY_4 = "4",
1105
+ KEY_5 = "5",
1106
+ KEY_6 = "6",
1107
+ KEY_7 = "7",
1108
+ KEY_8 = "8",
1109
+ KEY_9 = "9",
1110
+ KEY_A = "a",
1111
+ KEY_B = "b",
1112
+ KEY_C = "c",
1113
+ KEY_D = "d",
1114
+ KEY_E = "e",
1115
+ KEY_F = "f",
1116
+ KEY_G = "g",
1117
+ KEY_H = "h",
1118
+ KEY_I = "i",
1119
+ KEY_K = "k",
1120
+ KEY_J = "j",
1121
+ KEY_L = "l",
1122
+ KEY_M = "m",
1123
+ KEY_N = "n",
1124
+ KEY_O = "o",
1125
+ KEY_P = "p",
1126
+ KEY_Q = "q",
1127
+ KEY_R = "r",
1128
+ KEY_S = "s",
1129
+ KEY_T = "t",
1130
+ KEY_U = "u",
1131
+ KEY_V = "v",
1132
+ KEY_W = "w",
1133
+ KEY_X = "x",
1134
+ KEY_Z = "z",
1135
+ KEY_Y = "y",
1136
+ SELECT = "Select",
1137
+ NUMPAD_0 = "Numpad0",
1138
+ NUMPAD_1 = "Numpad1",
1139
+ NUMPAD_2 = "Numpad2",
1140
+ NUMPAD_3 = "Numpad3",
1141
+ NUMPAD_4 = "Numpad4",
1142
+ NUMPAD_5 = "Numpad5",
1143
+ NUMPAD_6 = "Numpad6",
1144
+ NUMPAD_7 = "Numpad7",
1145
+ NUMPAD_8 = "Numpad8",
1146
+ NUMPAD_9 = "Numpad9",
1147
+ MULTIPLY = "Multiply",
1148
+ ADD = "Add",
1149
+ SUBTRACT = "Subtract",
1150
+ DECIMAL = "Decimal",
1151
+ DIVIDE = "Divide",
1152
+ F1 = "F1",
1153
+ F2 = "F2",
1154
+ F3 = "F3",
1155
+ F4 = "F4",
1156
+ F5 = "F5",
1157
+ F6 = "F6",
1158
+ F7 = "F7",
1159
+ F8 = "F8",
1160
+ F9 = "F9",
1161
+ F10 = "F10",
1162
+ F11 = "F11",
1163
+ F12 = "F12"
1164
1164
  }
1165
1165
  }
1166
1166
  declare module "engine/engine_time" {