@needle-tools/engine 2.37.0-pre → 2.38.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.
- package/CHANGELOG.md +21 -0
- package/dist/needle-engine.d.ts +80 -13
- package/dist/needle-engine.js +349 -349
- package/dist/needle-engine.js.map +4 -4
- package/dist/needle-engine.min.js +25 -25
- package/dist/needle-engine.min.js.map +4 -4
- package/lib/engine/engine_addressables.d.ts +3 -1
- package/lib/engine/engine_addressables.js +12 -5
- package/lib/engine/engine_addressables.js.map +1 -1
- package/lib/engine/engine_element.js +3 -2
- package/lib/engine/engine_element.js.map +1 -1
- package/lib/engine/engine_element_overlay.js +4 -3
- package/lib/engine/engine_element_overlay.js.map +1 -1
- package/lib/engine/engine_input.d.ts +2 -0
- package/lib/engine/engine_input.js +14 -3
- package/lib/engine/engine_input.js.map +1 -1
- package/lib/engine/engine_physics.d.ts +2 -4
- package/lib/engine/engine_physics.js +75 -30
- package/lib/engine/engine_physics.js.map +1 -1
- package/lib/engine/engine_physics.types.d.ts +7 -0
- package/lib/engine/engine_physics.types.js +8 -0
- package/lib/engine/engine_physics.types.js.map +1 -1
- package/lib/engine/engine_setup.d.ts +7 -1
- package/lib/engine/engine_setup.js +10 -2
- package/lib/engine/engine_setup.js.map +1 -1
- package/lib/engine/engine_types.d.ts +1 -1
- package/lib/engine/engine_types.js.map +1 -1
- package/lib/engine-components/Animation.d.ts +1 -0
- package/lib/engine-components/Animation.js +7 -0
- package/lib/engine-components/Animation.js.map +1 -1
- package/lib/engine-components/AnimatorController.js +14 -7
- package/lib/engine-components/AnimatorController.js.map +1 -1
- package/lib/engine-components/Camera.d.ts +1 -0
- package/lib/engine-components/Camera.js +20 -5
- package/lib/engine-components/Camera.js.map +1 -1
- package/lib/engine-components/CharacterController.d.ts +31 -0
- package/lib/engine-components/CharacterController.js +167 -0
- package/lib/engine-components/CharacterController.js.map +1 -0
- package/lib/engine-components/Collider.d.ts +10 -4
- package/lib/engine-components/Collider.js +18 -8
- package/lib/engine-components/Collider.js.map +1 -1
- package/lib/engine-components/Light.d.ts +2 -0
- package/lib/engine-components/Light.js +13 -2
- package/lib/engine-components/Light.js.map +1 -1
- package/lib/engine-components/Renderer.js +4 -0
- package/lib/engine-components/Renderer.js.map +1 -1
- package/lib/engine-components/RigidBody.d.ts +6 -1
- package/lib/engine-components/RigidBody.js +62 -25
- package/lib/engine-components/RigidBody.js.map +1 -1
- package/lib/engine-components/SmoothFollow.d.ts +2 -1
- package/lib/engine-components/SmoothFollow.js +25 -17
- package/lib/engine-components/SmoothFollow.js.map +1 -1
- package/lib/engine-components/WebXR.js +3 -4
- package/lib/engine-components/WebXR.js.map +1 -1
- package/lib/engine-components/codegen/components.d.ts +3 -0
- package/lib/engine-components/codegen/components.js +3 -0
- package/lib/engine-components/codegen/components.js.map +1 -1
- package/package.json +1 -1
- package/src/engine/codegen/register_types.js +12 -0
- package/src/engine/dist/engine_physics.js +739 -0
- package/src/engine/dist/engine_setup.js +777 -0
- package/src/engine/engine_addressables.ts +18 -8
- package/src/engine/engine_element.ts +3 -2
- package/src/engine/engine_element_overlay.ts +4 -3
- package/src/engine/engine_input.ts +12 -3
- package/src/engine/engine_physics.ts +82 -47
- package/src/engine/engine_physics.types.ts +9 -0
- package/src/engine/engine_setup.ts +26 -17
- package/src/engine/engine_types.ts +2 -1
- package/src/engine-components/Animation.ts +8 -0
- package/src/engine-components/AnimatorController.ts +16 -11
- package/src/engine-components/Camera.ts +21 -4
- package/src/engine-components/CharacterController.ts +171 -0
- package/src/engine-components/Collider.ts +22 -12
- package/src/engine-components/Light.ts +17 -3
- package/src/engine-components/Renderer.ts +5 -1
- package/src/engine-components/RigidBody.ts +63 -29
- package/src/engine-components/SmoothFollow.ts +21 -18
- package/src/engine-components/WebXR.ts +3 -4
- package/src/engine-components/codegen/components.ts +3 -0
- package/src/engine-components/dist/CharacterController.js +123 -0
- package/src/engine-components/dist/RigidBody.js +458 -0
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,27 @@ 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.38.0-pre] - 2022-11-02
|
|
8
|
+
- Add ``context.isInAR`` and ``context.isInVR`` properties
|
|
9
|
+
- Add physics capsule collider support
|
|
10
|
+
- Add basic character controller implementation (experimental)
|
|
11
|
+
- Add ``context.input.getMouseWheelDeltaY()``
|
|
12
|
+
- Add: SmoothFollow option to restrict following on certain axes only for position
|
|
13
|
+
- Add: ``Rigidbody.teleport`` method to properly reset internal state
|
|
14
|
+
- Add: load glbs using build hash (appended as ``?v=123``)
|
|
15
|
+
- Change: Collision event args now exposes contacts array
|
|
16
|
+
- Fix Exit AR (X) button not showing up
|
|
17
|
+
- Fix physics collider center offset
|
|
18
|
+
- Fix removing colliders and rigidbodies throwing error (when trying to access properties for already removed bodies)
|
|
19
|
+
- Fix bug in AnimatorController causing broken animations when the same clip is used in multiple states (caused by ``mixer.uncacheCip``)
|
|
20
|
+
- Fix rigidbody friction allowing for physical bodies being transported on e.g. platforms
|
|
21
|
+
- Fix ``onTriggerStay`` being invoked with the correct collider argument
|
|
22
|
+
- Fix AnimatorController exit time not being used properly
|
|
23
|
+
- Fix AnimatorController not checking all possible transitions if one transition did match conditions but could not be made due to exit time setting
|
|
24
|
+
- Fix ``Renderer.sharedMaterials`` not handling SkinnedMeshRenderer
|
|
25
|
+
- Fix environment blend mode for mozilla XR browser on iOS
|
|
26
|
+
- Fix: Camera now removing self from being set as currently rendering in ``onDisable``
|
|
27
|
+
|
|
7
28
|
## [2.37.0-pre] - 2022-10-28
|
|
8
29
|
- Add: rapier physics backend and overall improved physics system like constraint support, fixed physics collider updates and synchronization between rendering and physics world or animation of physical bodies
|
|
9
30
|
- Remove: cannon-es
|
package/dist/needle-engine.d.ts
CHANGED
|
@@ -40,6 +40,13 @@ declare module "engine/engine_physics.types" {
|
|
|
40
40
|
FreezeRotation = 112,
|
|
41
41
|
FreezeAll = 126
|
|
42
42
|
}
|
|
43
|
+
export enum Axes {
|
|
44
|
+
None = 0,
|
|
45
|
+
X = 2,
|
|
46
|
+
Y = 4,
|
|
47
|
+
Z = 8,
|
|
48
|
+
All = -1
|
|
49
|
+
}
|
|
43
50
|
}
|
|
44
51
|
declare module "engine/engine_types" {
|
|
45
52
|
import { Camera, Color, Material, Object3D, Vector3, Quaternion } from "three";
|
|
@@ -167,7 +174,7 @@ declare module "engine/engine_types" {
|
|
|
167
174
|
constructor(localPt: Vec3, dist: number, normal: Vec3);
|
|
168
175
|
}
|
|
169
176
|
export class Collision {
|
|
170
|
-
|
|
177
|
+
readonly contacts: ContactPoint[];
|
|
171
178
|
constructor(obj: Object3D, otherCollider: ICollider, contacts: ContactPoint[]);
|
|
172
179
|
readonly me: Object3D;
|
|
173
180
|
private _collider;
|
|
@@ -423,6 +430,7 @@ declare module "engine/engine_input" {
|
|
|
423
430
|
getIsTouch(i: number): boolean;
|
|
424
431
|
getTouchesPressedCount(): number;
|
|
425
432
|
getMouseWheelChanged(i?: number): boolean;
|
|
433
|
+
getMouseWheelDeltaY(i?: number): number;
|
|
426
434
|
getPointerEvent(i: number): Event | undefined;
|
|
427
435
|
private context;
|
|
428
436
|
private _pointerDown;
|
|
@@ -440,6 +448,7 @@ declare module "engine/engine_input" {
|
|
|
440
448
|
private _pointerIds;
|
|
441
449
|
private _pointerTypes;
|
|
442
450
|
private _mouseWheelChanged;
|
|
451
|
+
private _mouseWheelDeltaY;
|
|
443
452
|
private _pointerEvent;
|
|
444
453
|
getKeyDown(): string | null;
|
|
445
454
|
getKeyPressed(): string | null;
|
|
@@ -768,6 +777,7 @@ declare module "engine/engine_physics" {
|
|
|
768
777
|
raycast(options?: RaycastOptions | null): Array<Intersection>;
|
|
769
778
|
private _tempPosition;
|
|
770
779
|
private _tempQuaternion;
|
|
780
|
+
private _tempScale;
|
|
771
781
|
private _tempMatrix;
|
|
772
782
|
private static _didLoadPhysicsEngine;
|
|
773
783
|
private _isUpdatingPhysicsWorld;
|
|
@@ -783,6 +793,7 @@ declare module "engine/engine_physics" {
|
|
|
783
793
|
createWorld(): Promise<void>;
|
|
784
794
|
addBoxCollider(collider: ICollider, center: Vector3, size: Vector3): void;
|
|
785
795
|
addSphereCollider(collider: ICollider, center: Vector3, radius: number): void;
|
|
796
|
+
addCapsuleCollider(collider: ICollider, center: Vector3, height: number, radius: number): void;
|
|
786
797
|
addMeshCollider(collider: ICollider, mesh: Mesh, convex: boolean): void;
|
|
787
798
|
private createCollider;
|
|
788
799
|
private getRigidbody;
|
|
@@ -801,10 +812,6 @@ declare module "engine/engine_physics" {
|
|
|
801
812
|
private static _matricesBuffer;
|
|
802
813
|
private getRigidbodyRelativeMatrix;
|
|
803
814
|
}
|
|
804
|
-
export interface IColliderProvider {
|
|
805
|
-
getCollider(obj: Object3D): ICollider;
|
|
806
|
-
}
|
|
807
|
-
export function registerColliderProvider(prov: IColliderProvider): void;
|
|
808
815
|
}
|
|
809
816
|
declare module "engine/engine_time" {
|
|
810
817
|
export class Time {
|
|
@@ -1563,9 +1570,11 @@ declare module "engine/engine_addressables" {
|
|
|
1563
1570
|
private _glbRoot?;
|
|
1564
1571
|
private _uri;
|
|
1565
1572
|
private _progressListeners;
|
|
1573
|
+
private _hash?;
|
|
1574
|
+
private _hashedUri;
|
|
1566
1575
|
private _isLoadingRawBinary;
|
|
1567
1576
|
private _rawBinary?;
|
|
1568
|
-
constructor(uri: string);
|
|
1577
|
+
constructor(uri: string, hash?: string);
|
|
1569
1578
|
private onResolvePrefab;
|
|
1570
1579
|
private get mustLoad();
|
|
1571
1580
|
isLoaded(): boolean | ArrayBuffer;
|
|
@@ -1666,6 +1675,7 @@ declare module "engine/engine_setup" {
|
|
|
1666
1675
|
alias: string | undefined | null;
|
|
1667
1676
|
domElement: HTMLElement | null;
|
|
1668
1677
|
renderer?: THREE.WebGLRenderer;
|
|
1678
|
+
hash?: string;
|
|
1669
1679
|
constructor(domElement: HTMLElement | null);
|
|
1670
1680
|
}
|
|
1671
1681
|
export enum FrameEvent {
|
|
@@ -1674,7 +1684,8 @@ declare module "engine/engine_setup" {
|
|
|
1674
1684
|
LateUpdate = 2,
|
|
1675
1685
|
OnBeforeRender = 3,
|
|
1676
1686
|
OnAfterRender = 4,
|
|
1677
|
-
|
|
1687
|
+
PrePhysicsStep = 9,
|
|
1688
|
+
PostPhysicsStep = 10
|
|
1678
1689
|
}
|
|
1679
1690
|
export enum XRSessionMode {
|
|
1680
1691
|
ImmersiveVR = "immersive-vr",
|
|
@@ -1689,6 +1700,8 @@ declare module "engine/engine_setup" {
|
|
|
1689
1700
|
name: string;
|
|
1690
1701
|
alias: string | undefined | null;
|
|
1691
1702
|
isManagedExternally: boolean;
|
|
1703
|
+
/** used to append to loaded assets */
|
|
1704
|
+
hash?: string;
|
|
1692
1705
|
domElement: HTMLElement;
|
|
1693
1706
|
get resolutionScaleFactor(): number;
|
|
1694
1707
|
/** use to scale the resolution up or down of the renderer. default is 1 */
|
|
@@ -1700,6 +1713,8 @@ declare module "engine/engine_setup" {
|
|
|
1700
1713
|
get domY(): number;
|
|
1701
1714
|
get isInXR(): boolean;
|
|
1702
1715
|
xrSessionMode: XRSessionMode | undefined;
|
|
1716
|
+
get isInVR(): boolean;
|
|
1717
|
+
get isInAR(): boolean;
|
|
1703
1718
|
get xrSession(): THREE.XRSession | null;
|
|
1704
1719
|
get arOverlayElement(): HTMLElement;
|
|
1705
1720
|
scene: THREE.Scene;
|
|
@@ -2070,6 +2085,7 @@ declare module "engine-components/Animation" {
|
|
|
2070
2085
|
start(): void;
|
|
2071
2086
|
update(): void;
|
|
2072
2087
|
getAction(name: string): THREE.AnimationAction | undefined | null;
|
|
2088
|
+
get isPlaying(): boolean;
|
|
2073
2089
|
play(clipOrNumber: AnimationClip | number | string, options?: PlayOptions): Promise<AnimationAction> | void;
|
|
2074
2090
|
internalOnPlay(action: AnimationAction, options?: PlayOptions): Promise<AnimationAction>;
|
|
2075
2091
|
private tryFindHandle;
|
|
@@ -2479,6 +2495,7 @@ declare module "engine-components/Camera" {
|
|
|
2479
2495
|
get cam(): THREE.PerspectiveCamera | THREE.OrthographicCamera;
|
|
2480
2496
|
awake(): void;
|
|
2481
2497
|
onEnable(): void;
|
|
2498
|
+
onDisable(): void;
|
|
2482
2499
|
buildCamera(): void;
|
|
2483
2500
|
applyClearFlagsIfIsActiveCamera(): void;
|
|
2484
2501
|
private environmentIsTransparent;
|
|
@@ -2599,8 +2616,13 @@ declare module "engine-components/RigidBody" {
|
|
|
2599
2616
|
onDisable(): void;
|
|
2600
2617
|
onDestroy(): void;
|
|
2601
2618
|
onValidate(): void;
|
|
2602
|
-
|
|
2619
|
+
beforePhysics(): Generator<undefined, void, unknown>;
|
|
2603
2620
|
private get body();
|
|
2621
|
+
teleport(pt: {
|
|
2622
|
+
x: number;
|
|
2623
|
+
y: number;
|
|
2624
|
+
z: number;
|
|
2625
|
+
}, localspace?: boolean): void;
|
|
2604
2626
|
resetForces(): void;
|
|
2605
2627
|
resetTorques(): void;
|
|
2606
2628
|
resetVelocities(): void;
|
|
@@ -2628,7 +2650,7 @@ declare module "engine-components/RigidBody" {
|
|
|
2628
2650
|
declare module "engine-components/Collider" {
|
|
2629
2651
|
import { Behaviour } from "engine-components/Component";
|
|
2630
2652
|
import { Rigidbody } from "engine-components/RigidBody";
|
|
2631
|
-
import { Mesh } from "three";
|
|
2653
|
+
import { Mesh, Vector3 } from "three";
|
|
2632
2654
|
import { ICollider } from "engine/engine_types";
|
|
2633
2655
|
export class Collider extends Behaviour implements ICollider {
|
|
2634
2656
|
get isCollider(): any;
|
|
@@ -2641,12 +2663,12 @@ declare module "engine-components/Collider" {
|
|
|
2641
2663
|
}
|
|
2642
2664
|
export class SphereCollider extends Collider {
|
|
2643
2665
|
radius: number;
|
|
2644
|
-
center:
|
|
2666
|
+
center: Vector3;
|
|
2645
2667
|
onEnable(): void;
|
|
2646
2668
|
}
|
|
2647
2669
|
export class BoxCollider extends Collider {
|
|
2648
|
-
size:
|
|
2649
|
-
center:
|
|
2670
|
+
size: Vector3;
|
|
2671
|
+
center: Vector3;
|
|
2650
2672
|
onEnable(): void;
|
|
2651
2673
|
}
|
|
2652
2674
|
export class MeshCollider extends Collider {
|
|
@@ -2655,6 +2677,45 @@ declare module "engine-components/Collider" {
|
|
|
2655
2677
|
awake(): void;
|
|
2656
2678
|
onEnable(): void;
|
|
2657
2679
|
}
|
|
2680
|
+
export class CapsuleCollider extends Collider {
|
|
2681
|
+
center: Vector3;
|
|
2682
|
+
radius: number;
|
|
2683
|
+
height: number;
|
|
2684
|
+
onEnable(): void;
|
|
2685
|
+
}
|
|
2686
|
+
}
|
|
2687
|
+
declare module "engine-components/CharacterController" {
|
|
2688
|
+
import { Vector3 } from "three";
|
|
2689
|
+
import { Collision } from "engine/engine_types";
|
|
2690
|
+
import { Behaviour } from "engine-components/Component";
|
|
2691
|
+
import { Rigidbody } from "engine-components/RigidBody";
|
|
2692
|
+
import { Animator } from "engine-components/Animator";
|
|
2693
|
+
export class CharacterController extends Behaviour {
|
|
2694
|
+
center: Vector3;
|
|
2695
|
+
radius: number;
|
|
2696
|
+
height: number;
|
|
2697
|
+
private _rigidbody;
|
|
2698
|
+
get rigidbody(): Rigidbody;
|
|
2699
|
+
onEnable(): void;
|
|
2700
|
+
move(vec: Vector3): void;
|
|
2701
|
+
private _activeGroundCollisions;
|
|
2702
|
+
onCollisionEnter(col: Collision): void;
|
|
2703
|
+
onCollisionExit(col: Collision): void;
|
|
2704
|
+
get isGrounded(): boolean;
|
|
2705
|
+
}
|
|
2706
|
+
export class CharacterControllerInput extends Behaviour {
|
|
2707
|
+
controller?: CharacterController;
|
|
2708
|
+
movementSpeed: number;
|
|
2709
|
+
rotationSpeed: number;
|
|
2710
|
+
jumpForce: number;
|
|
2711
|
+
animator?: Animator;
|
|
2712
|
+
private _currentSpeed;
|
|
2713
|
+
private _currentAngularSpeed;
|
|
2714
|
+
private _temp;
|
|
2715
|
+
private _jumpCount;
|
|
2716
|
+
update(): void;
|
|
2717
|
+
private _raycastOptions;
|
|
2718
|
+
}
|
|
2658
2719
|
}
|
|
2659
2720
|
declare module "engine-components/ui/PointerEvents" {
|
|
2660
2721
|
export interface IInputEventArgs {
|
|
@@ -3871,6 +3932,8 @@ declare module "engine-components/Light" {
|
|
|
3871
3932
|
set shadowNormalBias(val: number);
|
|
3872
3933
|
get shadowNormalBias(): number;
|
|
3873
3934
|
private _shadowNormalBias;
|
|
3935
|
+
/** when enabled this will remove the multiplication when setting the shadow bias settings initially */
|
|
3936
|
+
private _overrideShadowBiasSettings;
|
|
3874
3937
|
set shadows(val: LightShadows);
|
|
3875
3938
|
get shadows(): LightShadows;
|
|
3876
3939
|
private _shadows;
|
|
@@ -4308,14 +4371,15 @@ declare module "engine-components/Skybox" {
|
|
|
4308
4371
|
declare module "engine-components/SmoothFollow" {
|
|
4309
4372
|
import { Behaviour } from "engine-components/Component";
|
|
4310
4373
|
import * as THREE from "three";
|
|
4374
|
+
import { Axes } from "engine/engine_physics.types";
|
|
4311
4375
|
export class SmoothFollow extends Behaviour {
|
|
4312
4376
|
target: THREE.Object3D | null;
|
|
4313
4377
|
followFactor: number;
|
|
4314
4378
|
rotateFactor: number;
|
|
4379
|
+
positionAxes: Axes;
|
|
4315
4380
|
flipForward: boolean;
|
|
4316
4381
|
private static _invertForward;
|
|
4317
4382
|
private _firstUpdate;
|
|
4318
|
-
onEnable(): void;
|
|
4319
4383
|
onBeforeRender(): void;
|
|
4320
4384
|
updateNow(hard: boolean): void;
|
|
4321
4385
|
}
|
|
@@ -5332,10 +5396,13 @@ declare module "engine-components/codegen/components" {
|
|
|
5332
5396
|
export { BasicIKConstraint } from "engine-components/BasicIKConstraint";
|
|
5333
5397
|
export { BoxHelperComponent } from "engine-components/BoxHelperComponent";
|
|
5334
5398
|
export { Camera } from "engine-components/Camera";
|
|
5399
|
+
export { CharacterController } from "engine-components/CharacterController";
|
|
5400
|
+
export { CharacterControllerInput } from "engine-components/CharacterController";
|
|
5335
5401
|
export { Collider } from "engine-components/Collider";
|
|
5336
5402
|
export { SphereCollider } from "engine-components/Collider";
|
|
5337
5403
|
export { BoxCollider } from "engine-components/Collider";
|
|
5338
5404
|
export { MeshCollider } from "engine-components/Collider";
|
|
5405
|
+
export { CapsuleCollider } from "engine-components/Collider";
|
|
5339
5406
|
export { DeleteBox } from "engine-components/DeleteBox";
|
|
5340
5407
|
export { Deletable } from "engine-components/DeleteBox";
|
|
5341
5408
|
export { DeviceFlag } from "engine-components/DeviceFlag";
|