@needle-tools/engine 3.0.1-alpha.2 → 3.0.1-alpha.3

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 (41) hide show
  1. package/CHANGELOG.md +4 -1
  2. package/dist/needle-engine.js +7706 -7641
  3. package/dist/needle-engine.min.js +262 -262
  4. package/dist/needle-engine.umd.cjs +280 -280
  5. package/lib/engine/engine_input.d.ts +5 -89
  6. package/lib/engine/engine_input.js +49 -103
  7. package/lib/engine/engine_input.js.map +1 -1
  8. package/lib/engine/engine_physics.d.ts +5 -0
  9. package/lib/engine/engine_physics.js +39 -4
  10. package/lib/engine/engine_physics.js.map +1 -1
  11. package/lib/engine/engine_types.d.ts +1 -0
  12. package/lib/engine/engine_types.js.map +1 -1
  13. package/lib/engine/engine_utils.js +4 -8
  14. package/lib/engine/engine_utils.js.map +1 -1
  15. package/lib/engine-components/CharacterController.js +2 -2
  16. package/lib/engine-components/CharacterController.js.map +1 -1
  17. package/lib/engine-components/DragControls.js +3 -4
  18. package/lib/engine-components/DragControls.js.map +1 -1
  19. package/lib/engine-components/SpectatorCamera.js.map +1 -1
  20. package/lib/engine-components/WebXR.js +12 -2
  21. package/lib/engine-components/WebXR.js.map +1 -1
  22. package/lib/engine-components/WebXRController.js +1 -1
  23. package/lib/engine-components/WebXRController.js.map +1 -1
  24. package/lib/engine-components/ui/EventSystem.js +1 -3
  25. package/lib/engine-components/ui/EventSystem.js.map +1 -1
  26. package/lib/engine-components-experimental/Presentation.js +2 -3
  27. package/lib/engine-components-experimental/Presentation.js.map +1 -1
  28. package/lib/tsconfig.tsbuildinfo +1 -1
  29. package/package.json +2 -1
  30. package/plugins/vite/alias.js +5 -2
  31. package/src/engine/engine_input.ts +134 -108
  32. package/src/engine/engine_physics.ts +41 -4
  33. package/src/engine/engine_types.ts +1 -0
  34. package/src/engine/engine_utils.ts +4 -8
  35. package/src/engine-components/CharacterController.ts +2 -2
  36. package/src/engine-components/DragControls.ts +3 -4
  37. package/src/engine-components/SpectatorCamera.ts +1 -1
  38. package/src/engine-components/WebXR.ts +12 -3
  39. package/src/engine-components/WebXRController.ts +1 -1
  40. package/src/engine-components/ui/EventSystem.ts +2 -3
  41. package/src/engine-components-experimental/Presentation.ts +2 -2
@@ -86,9 +86,10 @@ export declare class Input extends EventTarget {
86
86
  private _pointerEvent;
87
87
  getKeyDown(): string | null;
88
88
  getKeyPressed(): string | null;
89
- isKeyDown(keyCode: KeyCode | string | number): any;
90
- isKeyUp(keyCode: KeyCode | string | number): boolean;
91
- isKeyPressed(keyCode: KeyCode | string | number): any;
89
+ isKeyDown(keyCode: KeyCode | string): boolean;
90
+ isKeyUp(keyCode: KeyCode | string): boolean;
91
+ isKeyPressed(keyCode: KeyCode | string): boolean;
92
+ private getCodeForCommonKeyName;
92
93
  createPointerDown(args: PointerEventArgs): void;
93
94
  createPointerMove(args: PointerEventArgs): void;
94
95
  createPointerUp(args: PointerEventArgs): void;
@@ -120,89 +121,4 @@ export declare class Input extends EventTarget {
120
121
  private setPointerStateT;
121
122
  private onDispatchEvent;
122
123
  }
123
- export declare enum KeyCode {
124
- BACKSPACE = "Backspace",
125
- TAB = "Tab",
126
- ENTER = "Enter",
127
- SHIFT = "Shift",
128
- CTRL = "Control",
129
- ALT = "Alt",
130
- PAUSE = "Pause",
131
- CAPS_LOCK = "CapsLock",
132
- ESCAPE = "Escape",
133
- SPACE = " ",
134
- PAGE_UP = "PageUp",
135
- PAGE_DOWN = "PageDown",
136
- END = "End",
137
- HOME = "Home",
138
- LEFT_ARROW = "ArrowLeft",
139
- UP_ARROW = "ArrowUp",
140
- RIGHT_ARROW = "ArrowRight",
141
- DOWN_ARROW = "ArrowDown",
142
- INSERT = "Insert",
143
- DELETE = "Delete",
144
- KEY_0 = "0",
145
- KEY_1 = "1",
146
- KEY_2 = "2",
147
- KEY_3 = "3",
148
- KEY_4 = "4",
149
- KEY_5 = "5",
150
- KEY_6 = "6",
151
- KEY_7 = "7",
152
- KEY_8 = "8",
153
- KEY_9 = "9",
154
- KEY_A = "a",
155
- KEY_B = "b",
156
- KEY_C = "c",
157
- KEY_D = "d",
158
- KEY_E = "e",
159
- KEY_F = "f",
160
- KEY_G = "g",
161
- KEY_H = "h",
162
- KEY_I = "i",
163
- KEY_K = "k",
164
- KEY_J = "j",
165
- KEY_L = "l",
166
- KEY_M = "m",
167
- KEY_N = "n",
168
- KEY_O = "o",
169
- KEY_P = "p",
170
- KEY_Q = "q",
171
- KEY_R = "r",
172
- KEY_S = "s",
173
- KEY_T = "t",
174
- KEY_U = "u",
175
- KEY_V = "v",
176
- KEY_W = "w",
177
- KEY_X = "x",
178
- KEY_Z = "z",
179
- KEY_Y = "y",
180
- SELECT = "Select",
181
- NUMPAD_0 = "Numpad0",
182
- NUMPAD_1 = "Numpad1",
183
- NUMPAD_2 = "Numpad2",
184
- NUMPAD_3 = "Numpad3",
185
- NUMPAD_4 = "Numpad4",
186
- NUMPAD_5 = "Numpad5",
187
- NUMPAD_6 = "Numpad6",
188
- NUMPAD_7 = "Numpad7",
189
- NUMPAD_8 = "Numpad8",
190
- NUMPAD_9 = "Numpad9",
191
- MULTIPLY = "Multiply",
192
- ADD = "Add",
193
- SUBTRACT = "Subtract",
194
- DECIMAL = "Decimal",
195
- DIVIDE = "Divide",
196
- F1 = "F1",
197
- F2 = "F2",
198
- F3 = "F3",
199
- F4 = "F4",
200
- F5 = "F5",
201
- F6 = "F6",
202
- F7 = "F7",
203
- F8 = "F8",
204
- F9 = "F9",
205
- F10 = "F10",
206
- F11 = "F11",
207
- F12 = "F12"
208
- }
124
+ export declare type KeyCode = "Tab" | "Enter" | "ShiftLeft" | "ShiftRight" | "ControlLeft" | "ControlRight" | "AltLeft" | "AltRight" | "Pause" | "CapsLock" | "Escape" | "Space" | "PageUp" | "PageDown" | "End" | "Home" | "ArrowLeft" | "ArrowUp" | "ArrowRight" | "ArrowDown" | "Insert" | "Delete" | "Digit0" | "Digit1" | "Digit2" | "Digit3" | "Digit4" | "Digit5" | "Digit6" | "Digit7" | "Digit8" | "Digit9" | "KeyA" | "KeyB" | "KeyC" | "KeyD" | "KeyE" | "KeyF" | "KeyG" | "KeyH" | "KeyI" | "KeyJ" | "KeyK" | "KeyL" | "KeyM" | "KeyN" | "KeyO" | "KeyP" | "KeyQ" | "KeyR" | "KeyS" | "KeyT" | "KeyU" | "KeyV" | "KeyW" | "KeyX" | "KeyY" | "KeyZ" | "Select" | "Numpad0" | "Numpad1" | "Numpad2" | "Numpad3" | "Numpad4" | "Numpad5" | "Numpad6" | "Numpad7" | "Numpad8" | "Numpad9" | "Multiply" | "Add" | "Subtract" | "Decimal" | "Divide" | "F1" | "F2" | "F3" | "F4" | "F5" | "F6" | "F7" | "F8" | "F9" | "F10" | "F11" | "F12";
@@ -239,26 +239,57 @@ export class Input extends EventTarget {
239
239
  return null;
240
240
  }
241
241
  isKeyDown(keyCode) {
242
- if (typeof keyCode === "number") {
243
- console.warn("Use of keycode as number is not recommended, please use KeyCode or string instead");
244
- keyCode = String.fromCharCode(keyCode);
242
+ const codes = this.getCodeForCommonKeyName(keyCode);
243
+ if (codes !== null) {
244
+ for (const code of codes)
245
+ if (this.isKeyDown(code))
246
+ return true;
247
+ return false;
245
248
  }
246
- // console.log( this.keysPressed[keyCode]?.frame, time.frameCount);
247
249
  return this.context.application.isVisible && this.context.application.hasFocus && this.keysPressed[keyCode]?.startFrame === this.context.time.frameCount && this.keysPressed[keyCode].pressed;
248
250
  }
249
251
  isKeyUp(keyCode) {
250
- if (typeof keyCode === "number") {
251
- console.warn("Use of keycode as number is not recommended, please use KeyCode or string instead");
252
- keyCode = String.fromCharCode(keyCode);
252
+ const codes = this.getCodeForCommonKeyName(keyCode);
253
+ if (codes !== null) {
254
+ for (const code of codes)
255
+ if (this.isKeyUp(code))
256
+ return true;
257
+ return false;
253
258
  }
254
259
  return this.context.application.isVisible && this.context.application.hasFocus && this.keysPressed[keyCode]?.frame === this.context.time.frameCount && !this.keysPressed[keyCode].pressed;
255
260
  }
256
261
  isKeyPressed(keyCode) {
257
- if (typeof keyCode === "number") {
258
- keyCode = String.fromCharCode(keyCode);
262
+ const codes = this.getCodeForCommonKeyName(keyCode);
263
+ if (codes !== null) {
264
+ for (const code of codes)
265
+ if (this.isKeyPressed(code))
266
+ return true;
267
+ return false;
259
268
  }
260
269
  return this.context.application.isVisible && this.context.application.hasFocus && this.keysPressed[keyCode]?.pressed; // && time.frameCount - this.keysPressed[keyCode].frame < 100;
261
270
  }
271
+ // utility helper for mapping common names to actual codes; e.g. "Shift" -> "ShiftLeft" and "ShiftRight" or "a" -> "KeyA"
272
+ getCodeForCommonKeyName(keyName) {
273
+ if (keyName.length === 1) {
274
+ // check if this is a digit
275
+ if (keyName >= "0" && keyName <= "9")
276
+ return ["Digit" + keyName];
277
+ // check if this is a letter
278
+ if (keyName >= "a" && keyName <= "z")
279
+ return ["Key" + keyName.toUpperCase()];
280
+ if (keyName == " ")
281
+ return ["Space"];
282
+ }
283
+ switch (keyName) {
284
+ case "Shift":
285
+ return ["ShiftLeft", "ShiftRight"];
286
+ case "Control":
287
+ return ["ControlLeft", "ControlRight"];
288
+ case "Alt":
289
+ return ["AltLeft", "AltRight"];
290
+ }
291
+ return null;
292
+ }
262
293
  createPointerDown(args) {
263
294
  if (debug)
264
295
  showBalloonMessage("Create Pointer down");
@@ -337,16 +368,16 @@ export class Input extends EventTarget {
337
368
  onKeyDown(evt) {
338
369
  if (!this.context.application.hasFocus)
339
370
  return;
340
- const ex = this.keysPressed[evt.key];
371
+ const ex = this.keysPressed[evt.code];
341
372
  if (ex && ex.pressed)
342
373
  return;
343
- this.keysPressed[evt.key] = { pressed: true, frame: this.context.time.frameCount + 1, startFrame: this.context.time.frameCount + 1, key: evt.key };
374
+ this.keysPressed[evt.code] = { pressed: true, frame: this.context.time.frameCount + 1, startFrame: this.context.time.frameCount + 1, key: evt.key, code: evt.code };
344
375
  this.onDispatchEvent(InputEvents.KeyDown, new KeyEventArgs(evt));
345
376
  }
346
377
  onKeyPressed(evt) {
347
378
  if (!this.context.application.hasFocus)
348
379
  return;
349
- const p = this.keysPressed[evt.key];
380
+ const p = this.keysPressed[evt.code];
350
381
  if (!p)
351
382
  return;
352
383
  p.pressed = true;
@@ -356,7 +387,7 @@ export class Input extends EventTarget {
356
387
  onKeyUp(evt) {
357
388
  if (!this.context.application.hasFocus)
358
389
  return;
359
- const p = this.keysPressed[evt.key];
390
+ const p = this.keysPressed[evt.code];
360
391
  if (!p)
361
392
  return;
362
393
  p.pressed = false;
@@ -469,6 +500,9 @@ export class Input extends EventTarget {
469
500
  while (evt.button >= this._pointerPositionDown.length)
470
501
  this._pointerPositionDown.push(new THREE.Vector2());
471
502
  this._pointerPositionDown[evt.button].set(evt.clientX, evt.clientY);
503
+ while (evt.button >= this._pointerPositions.length)
504
+ this._pointerPositions.push(new THREE.Vector2());
505
+ this._pointerPositions[evt.button].set(evt.clientX, evt.clientY);
472
506
  if (evt.button >= this._pointerDownTime.length)
473
507
  this._pointerDownTime.push(0);
474
508
  this._pointerDownTime[evt.button] = this.context.time.time;
@@ -542,8 +576,8 @@ export class Input extends EventTarget {
542
576
  this._pointerPositionsDelta.push(new THREE.Vector2());
543
577
  const lf = this._pointerPositionsLastFrame[evt.button];
544
578
  lf.copy(this._pointerPositions[evt.button]);
545
- const dx = evt.movementX !== undefined ? evt.movementX : evt.clientX - lf.x;
546
- const dy = evt.movementY !== undefined ? evt.movementY : evt.clientY - lf.y;
579
+ const dx = evt.clientX - lf.x;
580
+ const dy = evt.clientY - lf.y;
547
581
  this._pointerPositionsDelta[evt.button].set(dx, dy);
548
582
  this._pointerPositions[evt.button].x = evt.clientX;
549
583
  this._pointerPositions[evt.button].y = evt.clientY;
@@ -602,94 +636,6 @@ export class Input extends EventTarget {
602
636
  }
603
637
  }
604
638
  }
605
- export var KeyCode;
606
- (function (KeyCode) {
607
- KeyCode["BACKSPACE"] = "Backspace";
608
- KeyCode["TAB"] = "Tab";
609
- KeyCode["ENTER"] = "Enter";
610
- KeyCode["SHIFT"] = "Shift";
611
- KeyCode["CTRL"] = "Control";
612
- KeyCode["ALT"] = "Alt";
613
- KeyCode["PAUSE"] = "Pause";
614
- KeyCode["CAPS_LOCK"] = "CapsLock";
615
- KeyCode["ESCAPE"] = "Escape";
616
- KeyCode["SPACE"] = " ";
617
- KeyCode["PAGE_UP"] = "PageUp";
618
- KeyCode["PAGE_DOWN"] = "PageDown";
619
- KeyCode["END"] = "End";
620
- KeyCode["HOME"] = "Home";
621
- KeyCode["LEFT_ARROW"] = "ArrowLeft";
622
- KeyCode["UP_ARROW"] = "ArrowUp";
623
- KeyCode["RIGHT_ARROW"] = "ArrowRight";
624
- KeyCode["DOWN_ARROW"] = "ArrowDown";
625
- KeyCode["INSERT"] = "Insert";
626
- KeyCode["DELETE"] = "Delete";
627
- KeyCode["KEY_0"] = "0";
628
- KeyCode["KEY_1"] = "1";
629
- KeyCode["KEY_2"] = "2";
630
- KeyCode["KEY_3"] = "3";
631
- KeyCode["KEY_4"] = "4";
632
- KeyCode["KEY_5"] = "5";
633
- KeyCode["KEY_6"] = "6";
634
- KeyCode["KEY_7"] = "7";
635
- KeyCode["KEY_8"] = "8";
636
- KeyCode["KEY_9"] = "9";
637
- KeyCode["KEY_A"] = "a";
638
- KeyCode["KEY_B"] = "b";
639
- KeyCode["KEY_C"] = "c";
640
- KeyCode["KEY_D"] = "d";
641
- KeyCode["KEY_E"] = "e";
642
- KeyCode["KEY_F"] = "f";
643
- KeyCode["KEY_G"] = "g";
644
- KeyCode["KEY_H"] = "h";
645
- KeyCode["KEY_I"] = "i";
646
- KeyCode["KEY_K"] = "k";
647
- KeyCode["KEY_J"] = "j";
648
- KeyCode["KEY_L"] = "l";
649
- KeyCode["KEY_M"] = "m";
650
- KeyCode["KEY_N"] = "n";
651
- KeyCode["KEY_O"] = "o";
652
- KeyCode["KEY_P"] = "p";
653
- KeyCode["KEY_Q"] = "q";
654
- KeyCode["KEY_R"] = "r";
655
- KeyCode["KEY_S"] = "s";
656
- KeyCode["KEY_T"] = "t";
657
- KeyCode["KEY_U"] = "u";
658
- KeyCode["KEY_V"] = "v";
659
- KeyCode["KEY_W"] = "w";
660
- KeyCode["KEY_X"] = "x";
661
- KeyCode["KEY_Z"] = "z";
662
- KeyCode["KEY_Y"] = "y";
663
- KeyCode["SELECT"] = "Select";
664
- KeyCode["NUMPAD_0"] = "Numpad0";
665
- KeyCode["NUMPAD_1"] = "Numpad1";
666
- KeyCode["NUMPAD_2"] = "Numpad2";
667
- KeyCode["NUMPAD_3"] = "Numpad3";
668
- KeyCode["NUMPAD_4"] = "Numpad4";
669
- KeyCode["NUMPAD_5"] = "Numpad5";
670
- KeyCode["NUMPAD_6"] = "Numpad6";
671
- KeyCode["NUMPAD_7"] = "Numpad7";
672
- KeyCode["NUMPAD_8"] = "Numpad8";
673
- KeyCode["NUMPAD_9"] = "Numpad9";
674
- KeyCode["MULTIPLY"] = "Multiply";
675
- KeyCode["ADD"] = "Add";
676
- KeyCode["SUBTRACT"] = "Subtract";
677
- KeyCode["DECIMAL"] = "Decimal";
678
- KeyCode["DIVIDE"] = "Divide";
679
- KeyCode["F1"] = "F1";
680
- KeyCode["F2"] = "F2";
681
- KeyCode["F3"] = "F3";
682
- KeyCode["F4"] = "F4";
683
- KeyCode["F5"] = "F5";
684
- KeyCode["F6"] = "F6";
685
- KeyCode["F7"] = "F7";
686
- KeyCode["F8"] = "F8";
687
- KeyCode["F9"] = "F9";
688
- KeyCode["F10"] = "F10";
689
- KeyCode["F11"] = "F11";
690
- KeyCode["F12"] = "F12";
691
- })(KeyCode || (KeyCode = {}));
692
- ;
693
639
  // KEY_1 = 49,
694
640
  // KEY_2 = 50,
695
641
  // KEY_3 = 51,
@@ -1 +1 @@
1
- {"version":3,"file":"engine_input.js","sourceRoot":"","sources":["../../src/engine/engine_input.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine_input.js","sourceRoot":"","sources":["../../src/engine/engine_input.ts"],"names":[],"mappings":"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"}
@@ -71,6 +71,11 @@ export declare class Physics {
71
71
  point: Vector3;
72
72
  collider: ICollider;
73
73
  };
74
+ raycastPhysicsFastAndGetNormal(origin: Vec2 | Vec3, direction?: Vec3 | undefined, maxDistance?: number, solid?: boolean): null | {
75
+ point: Vector3;
76
+ normal: Vector3;
77
+ collider: ICollider;
78
+ };
74
79
  private getPhysicsRay;
75
80
  private rapierSphere;
76
81
  private rapierColliderArray;
@@ -221,7 +221,10 @@ export class Physics {
221
221
  const ray = this.getPhysicsRay(this.rapierRay, origin, direction);
222
222
  if (!ray)
223
223
  return null;
224
- const hit = this.world?.castRay(ray, maxDistance, solid);
224
+ const hit = this.world?.castRay(ray, maxDistance, solid, undefined, undefined, undefined, undefined, (c) => {
225
+ // ignore objects in the IgnoreRaycast=2 layer
226
+ return !c[$componentKey]?.gameObject.layers.isEnabled(2);
227
+ });
225
228
  if (hit) {
226
229
  const point = ray.pointAt(hit.toi);
227
230
  const vec = this.raycastVectorsBuffer.get();
@@ -230,6 +233,25 @@ export class Physics {
230
233
  }
231
234
  return null;
232
235
  }
236
+ raycastPhysicsFastAndGetNormal(origin, direction = undefined, maxDistance = Infinity, solid = true) {
237
+ const ray = this.getPhysicsRay(this.rapierRay, origin, direction);
238
+ if (!ray)
239
+ return null;
240
+ const hit = this.world?.castRayAndGetNormal(ray, maxDistance, solid, undefined, undefined, undefined, undefined, (c) => {
241
+ // ignore objects in the IgnoreRaycast=2 layer
242
+ return !c[$componentKey]?.gameObject.layers.isEnabled(2);
243
+ });
244
+ if (hit) {
245
+ const point = ray.pointAt(hit.toi);
246
+ const normal = hit.normal;
247
+ const vec = this.raycastVectorsBuffer.get();
248
+ const nor = this.raycastVectorsBuffer.get();
249
+ vec.set(point.x, point.y, point.z);
250
+ nor.set(normal.x, normal.y, normal.z);
251
+ return { point: vec, normal: nor, collider: hit.collider[$componentKey] };
252
+ }
253
+ return null;
254
+ }
233
255
  getPhysicsRay(ray, origin, direction = undefined) {
234
256
  const cam = this.context.mainCamera;
235
257
  // if we get origin in 2d space we need to project it to 3d space
@@ -239,11 +261,13 @@ export class Physics {
239
261
  return null;
240
262
  }
241
263
  const vec3 = this.raycastVectorsBuffer.get();
264
+ vec3.x = origin.x;
265
+ vec3.y = origin.y;
266
+ vec3.z = 0;
242
267
  // if the origin is in screen space we need to convert it to raycaster space
243
- if (origin.x > 1 || origin.y > 1 || origin.y < -1 || origin.x < -1) {
244
- this.context.input.convertScreenspaceToRaycastSpace(origin);
268
+ if (vec3.x > 1 || vec3.y > 1 || vec3.y < -1 || vec3.x < -1) {
269
+ this.context.input.convertScreenspaceToRaycastSpace(vec3);
245
270
  }
246
- vec3.set(origin.x, origin.y, -1);
247
271
  vec3.unproject(cam);
248
272
  origin = vec3;
249
273
  }
@@ -392,9 +416,17 @@ export class Physics {
392
416
  scale.y = Math.abs(scale.y);
393
417
  if (scale.z < 0)
394
418
  scale.z = Math.abs(scale.z);
419
+ // prevent zero scale - seems normals are flipped otherwise
420
+ if (scale.x == 0)
421
+ scale.x = 0.0000001;
422
+ if (scale.y == 0)
423
+ scale.y = 0.0000001;
424
+ if (scale.z == 0)
425
+ scale.z = 0.0000001;
395
426
  const desc = ColliderDesc.cuboid(scale.x, scale.y, scale.z);
396
427
  // const objectLayerMask = collider.gameObject.layers.mask;
397
428
  // const mask = objectLayerMask & ~2;
429
+ // TODO: https://rapier.rs/docs/user_guides/javascript/colliders/#collision-groups-and-solver-groups
398
430
  // desc.setCollisionGroups(objectLayerMask);
399
431
  this.createCollider(collider, desc, center);
400
432
  }
@@ -528,6 +560,9 @@ export class Physics {
528
560
  col[$componentKey] = collider;
529
561
  collider[$bodyKey] = col;
530
562
  col.setActiveEvents(ActiveEvents.COLLISION_EVENTS);
563
+ // const objectLayerMask = collider.gameObject.layers.mask;
564
+ // const mask = objectLayerMask & ~2;
565
+ // col.setCollisionGroups(objectLayerMask);
531
566
  this.objects.push(collider);
532
567
  this.bodies.push(col);
533
568
  return col;