@needle-tools/engine 2.36.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 +33 -0
- package/dist/needle-engine.d.ts +248 -151
- package/dist/needle-engine.js +451 -437
- package/dist/needle-engine.js.map +4 -4
- package/dist/needle-engine.min.js +82 -82
- package/dist/needle-engine.min.js.map +4 -4
- package/lib/engine/api.d.ts +1 -0
- package/lib/engine/api.js +1 -0
- package/lib/engine/api.js.map +1 -1
- package/lib/engine/debug/debug.d.ts +1 -0
- package/lib/engine/debug/debug.js +3 -0
- package/lib/engine/debug/debug.js.map +1 -1
- 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_gameobject.js +2 -1
- package/lib/engine/engine_gameobject.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 +35 -46
- package/lib/engine/engine_physics.js +479 -386
- package/lib/engine/engine_physics.js.map +1 -1
- package/lib/engine/engine_physics.types.d.ts +23 -0
- package/lib/engine/engine_physics.types.js +27 -0
- package/lib/engine/engine_physics.types.js.map +1 -0
- package/lib/engine/engine_serialization_core.d.ts +3 -0
- package/lib/engine/engine_serialization_core.js +5 -0
- package/lib/engine/engine_serialization_core.js.map +1 -1
- package/lib/engine/engine_setup.d.ts +7 -1
- package/lib/engine/engine_setup.js +13 -3
- package/lib/engine/engine_setup.js.map +1 -1
- package/lib/engine/engine_types.d.ts +45 -26
- package/lib/engine/engine_types.js +24 -37
- package/lib/engine/engine_types.js.map +1 -1
- package/lib/engine/engine_util_decorator.d.ts +6 -0
- package/lib/engine/engine_util_decorator.js +54 -0
- package/lib/engine/engine_util_decorator.js.map +1 -0
- package/lib/engine/engine_utils.d.ts +1 -1
- package/lib/engine/engine_utils.js +1 -1
- package/lib/engine/engine_utils.js.map +1 -1
- package/lib/engine/extensions/NEEDLE_gameobject_data.js +2 -0
- package/lib/engine/extensions/NEEDLE_gameobject_data.js.map +1 -1
- package/lib/engine-components/Animation.d.ts +7 -5
- package/lib/engine-components/Animation.js +7 -7
- 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/BoxHelperComponent.js +1 -0
- package/lib/engine-components/BoxHelperComponent.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 +16 -5
- package/lib/engine-components/Collider.js +45 -23
- package/lib/engine-components/Collider.js.map +1 -1
- package/lib/engine-components/Component.d.ts +6 -15
- package/lib/engine-components/Component.js +7 -112
- package/lib/engine-components/Component.js.map +1 -1
- package/lib/engine-components/DragControls.js +9 -6
- package/lib/engine-components/DragControls.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/NavMesh.d.ts +0 -5
- package/lib/engine-components/NavMesh.js +100 -10
- package/lib/engine-components/NavMesh.js.map +1 -1
- package/lib/engine-components/NestedGltf.js +2 -0
- package/lib/engine-components/NestedGltf.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 +45 -25
- package/lib/engine-components/RigidBody.js +290 -142
- 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/SpatialTrigger.js +1 -1
- package/lib/engine-components/SpatialTrigger.js.map +1 -1
- package/lib/engine-components/SpectatorCamera.d.ts +1 -0
- package/lib/engine-components/SpectatorCamera.js +9 -2
- package/lib/engine-components/SpectatorCamera.js.map +1 -1
- package/lib/engine-components/SpringJoint.d.ts +0 -13
- package/lib/engine-components/SpringJoint.js +42 -41
- package/lib/engine-components/SpringJoint.js.map +1 -1
- package/lib/engine-components/VideoPlayer.js.map +1 -1
- package/lib/engine-components/WebXR.d.ts +1 -0
- package/lib/engine-components/WebXR.js +13 -6
- package/lib/engine-components/WebXR.js.map +1 -1
- package/lib/engine-components/WebXRController.js +12 -6
- package/lib/engine-components/WebXRController.js.map +1 -1
- package/lib/engine-components/codegen/components.d.ts +4 -3
- package/lib/engine-components/codegen/components.js +4 -3
- package/lib/engine-components/codegen/components.js.map +1 -1
- package/package.json +3 -4
- package/src/engine/api.ts +2 -1
- package/src/engine/codegen/register_types.js +16 -12
- package/src/engine/debug/debug.ts +4 -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_gameobject.ts +4 -4
- package/src/engine/engine_input.ts +12 -3
- package/src/engine/engine_physics.ts +492 -418
- package/src/engine/engine_physics.types.ts +28 -0
- package/src/engine/engine_serialization_core.ts +8 -1
- package/src/engine/engine_setup.ts +31 -18
- package/src/engine/engine_types.ts +83 -56
- package/src/engine/engine_util_decorator.ts +69 -0
- package/src/engine/engine_utils.ts +3 -3
- package/src/engine/extensions/NEEDLE_gameobject_data.ts +2 -0
- package/src/engine-components/Animation.ts +18 -12
- package/src/engine-components/AnimatorController.ts +16 -11
- package/src/engine-components/BoxHelperComponent.ts +1 -0
- package/src/engine-components/Camera.ts +21 -4
- package/src/engine-components/CharacterController.ts +171 -0
- package/src/engine-components/Collider.ts +49 -39
- package/src/engine-components/Component.ts +15 -130
- package/src/engine-components/DragControls.ts +9 -5
- package/src/engine-components/Light.ts +17 -3
- package/src/engine-components/NavMesh.ts +114 -115
- package/src/engine-components/NestedGltf.ts +2 -0
- package/src/engine-components/Renderer.ts +5 -1
- package/src/engine-components/RigidBody.ts +292 -149
- package/src/engine-components/SmoothFollow.ts +21 -18
- package/src/engine-components/SpatialTrigger.ts +1 -1
- package/src/engine-components/SpectatorCamera.ts +10 -2
- package/src/engine-components/SpringJoint.ts +41 -41
- package/src/engine-components/VideoPlayer.ts +1 -2
- package/src/engine-components/WebXR.ts +15 -6
- package/src/engine-components/WebXRController.ts +16 -7
- package/src/engine-components/codegen/components.ts +4 -3
- package/src/engine-components/dist/CharacterController.js +123 -0
- package/src/engine-components/dist/RigidBody.js +458 -0
|
@@ -5,213 +5,361 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
7
|
import { Behaviour } from "./Component";
|
|
8
|
-
import { BodyOptions } from '../engine/engine_physics';
|
|
9
|
-
import * as CANNON from 'cannon-es';
|
|
10
8
|
import * as THREE from 'three';
|
|
11
9
|
import { getWorldPosition } from "../engine/engine_three_utils";
|
|
12
10
|
import { serializeable } from "../engine/engine_serialization_decorator";
|
|
13
11
|
import { Watch } from "../engine/engine_utils";
|
|
14
12
|
import { Vector3 } from "three";
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
13
|
+
import { CollisionDetectionMode, RigidbodyConstraints } from "../engine/engine_physics.types";
|
|
14
|
+
import { validate } from "../engine/engine_util_decorator";
|
|
15
|
+
import { FrameEvent } from "../engine/engine_setup";
|
|
16
|
+
class TransformWatch {
|
|
17
|
+
get isDirty() {
|
|
18
|
+
return this.positionChanged || this.rotationChanged;
|
|
19
|
+
}
|
|
20
|
+
positionChanged = false;
|
|
21
|
+
rotationChanged = false;
|
|
22
|
+
position;
|
|
23
|
+
quaternion;
|
|
24
|
+
_positionKeys = ["x", "y", "z"];
|
|
25
|
+
_quaternionKeys = ["_x", "_y", "_z", "_w"];
|
|
26
|
+
reset(clearPreviousValues = false) {
|
|
27
|
+
this.positionChanged = false;
|
|
28
|
+
this.rotationChanged = false;
|
|
29
|
+
this.mute = false;
|
|
30
|
+
if (clearPreviousValues) {
|
|
31
|
+
if (this.position)
|
|
32
|
+
for (const key of this._positionKeys)
|
|
33
|
+
delete this.position[key];
|
|
34
|
+
if (this.quaternion)
|
|
35
|
+
for (const key of this._quaternionKeys)
|
|
36
|
+
delete this.quaternion[key];
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
mute = false;
|
|
40
|
+
applyValues() {
|
|
41
|
+
// only apply the values that actually changed
|
|
42
|
+
// since we want to still control all the other values via physics
|
|
43
|
+
if (this.positionChanged && this.position) {
|
|
44
|
+
for (const key of this._positionKeys) {
|
|
45
|
+
const val = this.position[key];
|
|
46
|
+
if (val !== undefined)
|
|
47
|
+
this.obj.position[key] = val;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
if (this.rotationChanged) {
|
|
51
|
+
if (this.quaternion) {
|
|
52
|
+
for (const key of this._quaternionKeys) {
|
|
53
|
+
const val = this.quaternion[key];
|
|
54
|
+
if (val !== undefined)
|
|
55
|
+
this.obj.quaternion[key] = val;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
context;
|
|
61
|
+
obj;
|
|
62
|
+
_positionWatch;
|
|
63
|
+
_rotationWatch;
|
|
64
|
+
constructor(obj, context) {
|
|
65
|
+
this.context = context;
|
|
66
|
+
this.obj = obj;
|
|
67
|
+
}
|
|
68
|
+
start(position, rotation) {
|
|
69
|
+
this.reset();
|
|
70
|
+
if (position) {
|
|
71
|
+
if (!this._positionWatch)
|
|
72
|
+
this._positionWatch = new Watch(this.obj.position, ["x", "y", "z"]);
|
|
73
|
+
this._positionWatch.apply();
|
|
74
|
+
this.position = {};
|
|
75
|
+
// this.position = this.obj.position.clone();
|
|
76
|
+
this._positionWatch.subscribeWrite((val, prop) => {
|
|
77
|
+
if (this.context.physics.isUpdating || this.mute)
|
|
78
|
+
return;
|
|
79
|
+
const prev = this.position[prop];
|
|
80
|
+
if (Math.abs(prev - val) < .00001)
|
|
81
|
+
return;
|
|
82
|
+
this.position[prop] = val;
|
|
83
|
+
this.positionChanged = true;
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
if (rotation) {
|
|
87
|
+
if (!this._rotationWatch)
|
|
88
|
+
this._rotationWatch = new Watch(this.obj.quaternion, ["_x", "_y", "_z", "_w"]);
|
|
89
|
+
this._rotationWatch.apply();
|
|
90
|
+
this.quaternion = {};
|
|
91
|
+
// this.quaternion = this.obj.quaternion.clone();
|
|
92
|
+
this._rotationWatch.subscribeWrite((val, prop) => {
|
|
93
|
+
if (this.context.physics.isUpdating || this.mute)
|
|
94
|
+
return;
|
|
95
|
+
const prev = this.quaternion[prop];
|
|
96
|
+
if (Math.abs(prev - val) < .00001)
|
|
97
|
+
return;
|
|
98
|
+
this.quaternion[prop] = val;
|
|
99
|
+
this.rotationChanged = true;
|
|
100
|
+
});
|
|
21
101
|
}
|
|
22
102
|
}
|
|
23
|
-
|
|
24
|
-
|
|
103
|
+
stop() {
|
|
104
|
+
this._positionWatch?.revoke();
|
|
105
|
+
this._rotationWatch?.revoke();
|
|
25
106
|
}
|
|
26
|
-
|
|
107
|
+
}
|
|
108
|
+
export class Rigidbody extends Behaviour {
|
|
109
|
+
mass = 1;
|
|
110
|
+
useGravity = true;
|
|
111
|
+
constraints = RigidbodyConstraints.None;
|
|
112
|
+
isKinematic = false;
|
|
27
113
|
drag = 0;
|
|
28
114
|
angularDrag = 1;
|
|
29
115
|
detectCollisions = true;
|
|
30
116
|
sleepThreshold = 0.01;
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
117
|
+
collisionDetectionMode = CollisionDetectionMode.Discrete;
|
|
118
|
+
get lockPositionX() {
|
|
119
|
+
return (this.constraints & RigidbodyConstraints.FreezePositionX) !== 0;
|
|
120
|
+
}
|
|
121
|
+
get lockPositionY() {
|
|
122
|
+
return (this.constraints & RigidbodyConstraints.FreezePositionY) !== 0;
|
|
123
|
+
}
|
|
124
|
+
get lockPositionZ() {
|
|
125
|
+
return (this.constraints & RigidbodyConstraints.FreezePositionZ) !== 0;
|
|
36
126
|
}
|
|
127
|
+
get lockRotationX() {
|
|
128
|
+
return (this.constraints & RigidbodyConstraints.FreezeRotationX) !== 0;
|
|
129
|
+
}
|
|
130
|
+
get lockRotationY() {
|
|
131
|
+
return (this.constraints & RigidbodyConstraints.FreezeRotationY) !== 0;
|
|
132
|
+
}
|
|
133
|
+
get lockRotationZ() {
|
|
134
|
+
return (this.constraints & RigidbodyConstraints.FreezeRotationZ) !== 0;
|
|
135
|
+
}
|
|
136
|
+
set lockPositionX(v) {
|
|
137
|
+
if (v)
|
|
138
|
+
this.constraints |= RigidbodyConstraints.FreezePositionX;
|
|
139
|
+
else
|
|
140
|
+
this.constraints &= ~RigidbodyConstraints.FreezePositionX;
|
|
141
|
+
}
|
|
142
|
+
set lockPositionY(v) {
|
|
143
|
+
if (v)
|
|
144
|
+
this.constraints |= RigidbodyConstraints.FreezePositionY;
|
|
145
|
+
else
|
|
146
|
+
this.constraints &= ~RigidbodyConstraints.FreezePositionY;
|
|
147
|
+
}
|
|
148
|
+
set lockPositionZ(v) {
|
|
149
|
+
if (v)
|
|
150
|
+
this.constraints |= RigidbodyConstraints.FreezePositionZ;
|
|
151
|
+
else
|
|
152
|
+
this.constraints &= ~RigidbodyConstraints.FreezePositionZ;
|
|
153
|
+
}
|
|
154
|
+
set lockRotationX(v) {
|
|
155
|
+
if (v)
|
|
156
|
+
this.constraints |= RigidbodyConstraints.FreezeRotationX;
|
|
157
|
+
else
|
|
158
|
+
this.constraints &= ~RigidbodyConstraints.FreezeRotationX;
|
|
159
|
+
}
|
|
160
|
+
set lockRotationY(v) {
|
|
161
|
+
if (v)
|
|
162
|
+
this.constraints |= RigidbodyConstraints.FreezeRotationY;
|
|
163
|
+
else
|
|
164
|
+
this.constraints &= ~RigidbodyConstraints.FreezeRotationY;
|
|
165
|
+
}
|
|
166
|
+
set lockRotationZ(v) {
|
|
167
|
+
if (v)
|
|
168
|
+
this.constraints |= RigidbodyConstraints.FreezeRotationZ;
|
|
169
|
+
else
|
|
170
|
+
this.constraints &= ~RigidbodyConstraints.FreezeRotationZ;
|
|
171
|
+
}
|
|
172
|
+
_propertiesChanged = false;
|
|
37
173
|
static tempPosition = new THREE.Vector3();
|
|
38
|
-
|
|
39
|
-
currentVelocity;
|
|
174
|
+
_currentVelocity;
|
|
40
175
|
_smoothedVelocity;
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
_positionWatch;
|
|
45
|
-
_matrixWatch;
|
|
46
|
-
_setMatrix;
|
|
47
|
-
constructor() {
|
|
48
|
-
super();
|
|
49
|
-
this._setMatrix = new THREE.Matrix4();
|
|
50
|
-
}
|
|
176
|
+
_smoothedVelocityGetter;
|
|
177
|
+
_lastPosition;
|
|
178
|
+
_watch;
|
|
51
179
|
awake() {
|
|
52
|
-
this.
|
|
53
|
-
this.
|
|
180
|
+
this._watch = undefined;
|
|
181
|
+
this._currentVelocity = new THREE.Vector3();
|
|
54
182
|
this._smoothedVelocity = new THREE.Vector3();
|
|
55
|
-
this.
|
|
56
|
-
this.
|
|
57
|
-
this._positionWatch = undefined;
|
|
183
|
+
this._smoothedVelocityGetter = new THREE.Vector3();
|
|
184
|
+
this._lastPosition = new THREE.Vector3();
|
|
58
185
|
}
|
|
59
|
-
// start() {
|
|
60
|
-
// this.setBodyFromGameObject();
|
|
61
|
-
// }
|
|
62
186
|
onEnable() {
|
|
63
|
-
if (this.
|
|
64
|
-
this.
|
|
65
|
-
}
|
|
66
|
-
else
|
|
67
|
-
this.initialize();
|
|
68
|
-
if (this.body) {
|
|
69
|
-
this.body.wakeUp();
|
|
70
|
-
this.gameObject.updateWorldMatrix(true, false);
|
|
71
|
-
this.setBodyFromGameObject();
|
|
187
|
+
if (!this._watch) {
|
|
188
|
+
this._watch = new TransformWatch(this.gameObject, this.context);
|
|
72
189
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
this._positionWatch.subscribeWrite(_ => {
|
|
76
|
-
if (!this.context.physics.isUpdating && !this._ignoreChange) {
|
|
77
|
-
this._dirty = true;
|
|
78
|
-
this._setMatrix.copy(this.gameObject.matrix);
|
|
79
|
-
this._setMatrix.setPosition(this.gameObject.position);
|
|
80
|
-
}
|
|
81
|
-
});
|
|
190
|
+
this._watch.start(true, true);
|
|
191
|
+
this.startCoroutine(this.beforePhysics(), FrameEvent.LateUpdate);
|
|
82
192
|
}
|
|
83
193
|
onDisable() {
|
|
84
|
-
|
|
85
|
-
|
|
194
|
+
this._watch?.stop();
|
|
195
|
+
this.context.physics.removeBody(this);
|
|
86
196
|
}
|
|
87
197
|
onDestroy() {
|
|
88
|
-
|
|
89
|
-
this.context.physics.removeBody(this.gameObject, this._body);
|
|
90
|
-
}
|
|
91
|
-
onBeforeRender() {
|
|
92
|
-
this._ignoreChange = true;
|
|
93
|
-
this.updateVelocity();
|
|
94
|
-
if (this._dirty) {
|
|
95
|
-
this._dirty = false;
|
|
96
|
-
this._setMatrix.decompose(this.gameObject.position, this.gameObject.quaternion, this.gameObject.scale);
|
|
97
|
-
this.setBodyFromGameObject();
|
|
98
|
-
}
|
|
99
|
-
this._ignoreChange = false;
|
|
198
|
+
this.context.physics.removeBody(this);
|
|
100
199
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
200
|
+
onValidate() {
|
|
201
|
+
this._propertiesChanged = true;
|
|
202
|
+
}
|
|
203
|
+
// need to do this right before updating physics to prevent rendered object glitching through physical bodies
|
|
204
|
+
*beforePhysics() {
|
|
205
|
+
while (true) {
|
|
206
|
+
if (this._propertiesChanged) {
|
|
207
|
+
this._propertiesChanged = false;
|
|
208
|
+
this.context.physics.updateProperties(this);
|
|
209
|
+
}
|
|
210
|
+
if (this._watch?.isDirty) {
|
|
211
|
+
this._watch.mute = true;
|
|
212
|
+
this._watch.applyValues();
|
|
213
|
+
this.context.physics.updateBody(this, this._watch.positionChanged, this._watch.rotationChanged);
|
|
214
|
+
this._watch.reset();
|
|
215
|
+
}
|
|
216
|
+
this.captureVelocity();
|
|
217
|
+
yield;
|
|
104
218
|
}
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
219
|
+
}
|
|
220
|
+
get body() {
|
|
221
|
+
return this.context.physics.internal_getRigidbody(this);
|
|
222
|
+
}
|
|
223
|
+
teleport(pt, localspace = true) {
|
|
224
|
+
this._watch?.reset(true);
|
|
225
|
+
if (localspace)
|
|
226
|
+
this.gameObject.position.set(pt.x, pt.y, pt.z);
|
|
227
|
+
else
|
|
228
|
+
this.setWorldPosition(pt.x, pt.y, pt.z);
|
|
229
|
+
this.resetForcesAndTorques();
|
|
230
|
+
this.resetVelocities();
|
|
231
|
+
}
|
|
232
|
+
resetForces() {
|
|
233
|
+
this.body?.resetForces(true);
|
|
234
|
+
}
|
|
235
|
+
resetTorques() {
|
|
236
|
+
this.body?.resetTorques(true);
|
|
237
|
+
}
|
|
238
|
+
resetVelocities() {
|
|
239
|
+
this.setVelocity(0, 0, 0);
|
|
240
|
+
this.setAngularVelocity(0, 0, 0);
|
|
241
|
+
}
|
|
242
|
+
resetForcesAndTorques() {
|
|
243
|
+
this.resetForces();
|
|
244
|
+
this.resetTorques();
|
|
113
245
|
}
|
|
114
246
|
wakeUp() {
|
|
115
247
|
this.body?.wakeUp();
|
|
116
248
|
}
|
|
117
|
-
applyForce(vec,
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
249
|
+
applyForce(vec, _rel) {
|
|
250
|
+
this.body?.addForce(vec, true);
|
|
251
|
+
}
|
|
252
|
+
applyImpulse(vec) {
|
|
253
|
+
this.body?.applyImpulse(vec, true);
|
|
121
254
|
}
|
|
122
255
|
setForce(x, y, z) {
|
|
123
|
-
this.body?.
|
|
256
|
+
this.body?.resetForces(true);
|
|
257
|
+
this.body?.addForce({ x, y, z }, true);
|
|
124
258
|
}
|
|
125
259
|
getVelocity() {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
260
|
+
const vel = this.body?.linvel();
|
|
261
|
+
if (!vel)
|
|
262
|
+
return this._currentVelocity.set(0, 0, 0);
|
|
263
|
+
this._currentVelocity.x = vel.x;
|
|
264
|
+
this._currentVelocity.y = vel.y;
|
|
265
|
+
this._currentVelocity.z = vel.z;
|
|
266
|
+
return this._currentVelocity;
|
|
129
267
|
}
|
|
130
268
|
setVelocity(x, y, z) {
|
|
131
|
-
if (!this.body)
|
|
132
|
-
return;
|
|
133
269
|
if (x instanceof Vector3) {
|
|
134
270
|
const vec = x;
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
z = vec.z;
|
|
271
|
+
this.body?.setLinvel(vec, true);
|
|
272
|
+
return;
|
|
138
273
|
}
|
|
139
|
-
|
|
140
|
-
this.body.velocity.y = y / this.context.time.deltaTime;
|
|
141
|
-
this.body.velocity.z = z / this.context.time.deltaTime;
|
|
142
|
-
}
|
|
143
|
-
getTorque() {
|
|
144
|
-
if (this.body)
|
|
145
|
-
return Rigidbody.tempPosition.set(this.body?.torque.x, this.body?.torque.y, this.body?.torque.z);
|
|
146
|
-
return Rigidbody.tempPosition.set(0, 0, 0);
|
|
147
|
-
}
|
|
148
|
-
setTorque(x, y, z) {
|
|
149
|
-
if (!this.body)
|
|
274
|
+
if (y === undefined || z === undefined)
|
|
150
275
|
return;
|
|
276
|
+
this.body?.setLinvel({ x: x, y: y, z: z }, true);
|
|
277
|
+
}
|
|
278
|
+
setAngularVelocity(x, y, z) {
|
|
151
279
|
if (x instanceof Vector3) {
|
|
152
280
|
const vec = x;
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
z = vec.z;
|
|
281
|
+
this.body?.setAngvel(vec, true);
|
|
282
|
+
return;
|
|
156
283
|
}
|
|
157
|
-
|
|
158
|
-
this.body.torque.y = y / this.context.time.deltaTime;
|
|
159
|
-
this.body.torque.z = z / this.context.time.deltaTime;
|
|
160
|
-
}
|
|
161
|
-
get smoothedVelocity() { return this._smoothedVelocity; }
|
|
162
|
-
setAngularVelocity(x, y, z) {
|
|
163
|
-
if (!this.body)
|
|
284
|
+
if (y === undefined || z === undefined)
|
|
164
285
|
return;
|
|
165
|
-
this.body
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
this.
|
|
286
|
+
this.body?.setAngvel({ x: x, y: y, z: z }, true);
|
|
287
|
+
}
|
|
288
|
+
setTorque(x, y, z) {
|
|
289
|
+
this.setAngularVelocity(x, y, z);
|
|
290
|
+
}
|
|
291
|
+
get smoothedVelocity() {
|
|
292
|
+
this._smoothedVelocityGetter.copy(this._smoothedVelocity);
|
|
293
|
+
return this._smoothedVelocityGetter.multiplyScalar(1 / this.context.time.deltaTime);
|
|
294
|
+
}
|
|
295
|
+
// public get smoothedVelocity() { return this._smoothedVelocity; }
|
|
296
|
+
/**d
|
|
297
|
+
* @deprecated not used anymore
|
|
298
|
+
*/
|
|
299
|
+
setBodyFromGameObject(_velocity = null) {
|
|
300
|
+
if (this.gameObject && !this.destroyed) {
|
|
301
|
+
// this.context.physics.updateBody(this);
|
|
302
|
+
// this._ignoreChange = true;
|
|
303
|
+
// const wp = this.worldPosition;
|
|
304
|
+
// this.body.position.set(wp.x, wp.y, wp.z);
|
|
305
|
+
// const wr = this.worldQuaternion;
|
|
306
|
+
// this.body.quaternion.set(wr.x, wr.y, wr.z, wr.w);
|
|
307
|
+
// if (velocity) {
|
|
308
|
+
// Rigidbody.copyVector3.set(velocity.x, velocity.y, velocity.z);
|
|
309
|
+
// this._smoothedVelocity.lerp(Rigidbody.copyVector3, this.context.time.deltaTime / .1);
|
|
310
|
+
// const sm = this._smoothedVelocity;
|
|
311
|
+
// this.body.velocity.x = sm.x;
|
|
312
|
+
// this.body.velocity.y = sm.y;
|
|
313
|
+
// this.body.velocity.z = sm.z;
|
|
314
|
+
// }
|
|
315
|
+
// this._ignoreChange = false;
|
|
186
316
|
}
|
|
187
317
|
}
|
|
188
|
-
|
|
189
|
-
if (
|
|
190
|
-
return;
|
|
191
|
-
if (this.body && this.gameObject) {
|
|
318
|
+
captureVelocity() {
|
|
319
|
+
if (this.body) {
|
|
192
320
|
const wp = getWorldPosition(this.gameObject);
|
|
193
|
-
|
|
194
|
-
this.
|
|
195
|
-
this.
|
|
321
|
+
Rigidbody.tempPosition.copy(wp);
|
|
322
|
+
const vel = wp.sub(this._lastPosition);
|
|
323
|
+
this._lastPosition.copy(Rigidbody.tempPosition);
|
|
324
|
+
this._smoothedVelocity.lerp(vel, this.context.time.deltaTime / .1);
|
|
325
|
+
// this._smoothedVelocity.set(0, 1 / this.context.time.deltaTime, 0);
|
|
196
326
|
}
|
|
197
327
|
}
|
|
198
328
|
}
|
|
199
329
|
__decorate([
|
|
330
|
+
validate(),
|
|
200
331
|
serializeable()
|
|
201
332
|
], Rigidbody.prototype, "mass", void 0);
|
|
202
333
|
__decorate([
|
|
334
|
+
validate(),
|
|
335
|
+
serializeable()
|
|
336
|
+
], Rigidbody.prototype, "useGravity", void 0);
|
|
337
|
+
__decorate([
|
|
338
|
+
validate(),
|
|
203
339
|
serializeable()
|
|
204
|
-
], Rigidbody.prototype, "
|
|
340
|
+
], Rigidbody.prototype, "constraints", void 0);
|
|
205
341
|
__decorate([
|
|
342
|
+
validate(),
|
|
343
|
+
serializeable()
|
|
344
|
+
], Rigidbody.prototype, "isKinematic", void 0);
|
|
345
|
+
__decorate([
|
|
346
|
+
validate(),
|
|
206
347
|
serializeable()
|
|
207
348
|
], Rigidbody.prototype, "drag", void 0);
|
|
208
349
|
__decorate([
|
|
350
|
+
validate(),
|
|
209
351
|
serializeable()
|
|
210
352
|
], Rigidbody.prototype, "angularDrag", void 0);
|
|
211
353
|
__decorate([
|
|
354
|
+
validate(),
|
|
212
355
|
serializeable()
|
|
213
356
|
], Rigidbody.prototype, "detectCollisions", void 0);
|
|
214
357
|
__decorate([
|
|
358
|
+
validate(),
|
|
215
359
|
serializeable()
|
|
216
360
|
], Rigidbody.prototype, "sleepThreshold", void 0);
|
|
361
|
+
__decorate([
|
|
362
|
+
validate(),
|
|
363
|
+
serializeable()
|
|
364
|
+
], Rigidbody.prototype, "collisionDetectionMode", void 0);
|
|
217
365
|
//# sourceMappingURL=RigidBody.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RigidBody.js","sourceRoot":"","sources":["../../../engine-components/RigidBody.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RigidBody.js","sourceRoot":"","sources":["../../../engine-components/RigidBody.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { Behaviour } from "./Component";
|
|
2
2
|
import * as THREE from "three";
|
|
3
|
+
import { Axes } from "../engine/engine_physics.types";
|
|
3
4
|
export declare class SmoothFollow extends Behaviour {
|
|
4
5
|
target: THREE.Object3D | null;
|
|
5
6
|
followFactor: number;
|
|
6
7
|
rotateFactor: number;
|
|
8
|
+
positionAxes: Axes;
|
|
7
9
|
flipForward: boolean;
|
|
8
10
|
private static _invertForward;
|
|
9
11
|
private _firstUpdate;
|
|
10
|
-
onEnable(): void;
|
|
11
12
|
onBeforeRender(): void;
|
|
12
13
|
updateNow(hard: boolean): void;
|
|
13
14
|
}
|
|
@@ -4,44 +4,43 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
4
4
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
|
-
import {
|
|
8
|
-
import { Behaviour, GameObject } from "./Component";
|
|
9
|
-
import * as utils from "../engine/engine_three_utils";
|
|
7
|
+
import { Behaviour } from "./Component";
|
|
10
8
|
import * as THREE from "three";
|
|
11
9
|
import { Mathf } from "../engine/engine_math";
|
|
12
10
|
import { serializeable } from "../engine/engine_serialization_decorator";
|
|
13
11
|
import { Object3D } from "three";
|
|
12
|
+
import { getWorldPosition, getWorldQuaternion } from "../engine/engine_three_utils";
|
|
13
|
+
import { Axes } from "../engine/engine_physics.types";
|
|
14
14
|
export class SmoothFollow extends Behaviour {
|
|
15
15
|
target = null;
|
|
16
16
|
followFactor = .1;
|
|
17
17
|
rotateFactor = .1;
|
|
18
|
+
positionAxes = Axes.All;
|
|
19
|
+
// @serializeable()
|
|
20
|
+
// rotationAxes : Axes = Axes.All;
|
|
18
21
|
flipForward = false;
|
|
19
22
|
static _invertForward = new THREE.Quaternion().setFromAxisAngle(new THREE.Vector3(0, 1, 0), Math.PI);
|
|
20
23
|
_firstUpdate = true;
|
|
21
|
-
onEnable() {
|
|
22
|
-
const cam = GameObject.getComponentInChildren(this.gameObject, Camera);
|
|
23
|
-
if (cam && cam.cam) {
|
|
24
|
-
cam.gameObject.position.set(0, 0, 0);
|
|
25
|
-
cam.cam.position.set(0, 0, 0);
|
|
26
|
-
cam.gameObject.quaternion.identity();
|
|
27
|
-
cam.cam.quaternion.setFromEuler(new THREE.Euler(0, Math.PI, 0));
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
24
|
onBeforeRender() {
|
|
31
|
-
if (this.followFactor <= 0)
|
|
32
|
-
return;
|
|
33
25
|
this.updateNow(false);
|
|
34
26
|
}
|
|
35
27
|
updateNow(hard) {
|
|
36
28
|
if (!this.target || this.target === this.gameObject)
|
|
37
29
|
return;
|
|
38
30
|
if (this.followFactor > 0) {
|
|
39
|
-
const wp =
|
|
31
|
+
const wp = getWorldPosition(this.target);
|
|
40
32
|
const fpos = this._firstUpdate || hard ? 1 : Mathf.clamp01(this.context.time.deltaTime * this.followFactor);
|
|
41
|
-
|
|
33
|
+
const currentPosition = this.worldPosition;
|
|
34
|
+
if (this.positionAxes & Axes.X)
|
|
35
|
+
currentPosition.x = Mathf.lerp(currentPosition.x, wp.x, fpos);
|
|
36
|
+
if (this.positionAxes & Axes.Y)
|
|
37
|
+
currentPosition.y = Mathf.lerp(currentPosition.y, wp.y, fpos);
|
|
38
|
+
if (this.positionAxes & Axes.Z)
|
|
39
|
+
currentPosition.z = Mathf.lerp(currentPosition.z, wp.z, fpos);
|
|
40
|
+
this.worldPosition = currentPosition;
|
|
42
41
|
}
|
|
43
42
|
if (this.rotateFactor > 0) {
|
|
44
|
-
const wr =
|
|
43
|
+
const wr = getWorldQuaternion(this.target);
|
|
45
44
|
if (this.flipForward) {
|
|
46
45
|
wr.premultiply(SmoothFollow._invertForward);
|
|
47
46
|
}
|
|
@@ -54,4 +53,13 @@ export class SmoothFollow extends Behaviour {
|
|
|
54
53
|
__decorate([
|
|
55
54
|
serializeable(Object3D)
|
|
56
55
|
], SmoothFollow.prototype, "target", void 0);
|
|
56
|
+
__decorate([
|
|
57
|
+
serializeable()
|
|
58
|
+
], SmoothFollow.prototype, "followFactor", void 0);
|
|
59
|
+
__decorate([
|
|
60
|
+
serializeable()
|
|
61
|
+
], SmoothFollow.prototype, "rotateFactor", void 0);
|
|
62
|
+
__decorate([
|
|
63
|
+
serializeable()
|
|
64
|
+
], SmoothFollow.prototype, "positionAxes", void 0);
|
|
57
65
|
//# sourceMappingURL=SmoothFollow.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SmoothFollow.js","sourceRoot":"","sources":["../../../engine-components/SmoothFollow.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"SmoothFollow.js","sourceRoot":"","sources":["../../../engine-components/SmoothFollow.ts"],"names":[],"mappings":"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"}
|