angular-three-rapier 3.7.0 → 4.0.0-next.2
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/fesm2022/angular-three-rapier.mjs +145 -124
- package/fesm2022/angular-three-rapier.mjs.map +1 -1
- package/lib/colliders.d.ts +16 -16
- package/lib/instanced-rigid-bodies.d.ts +10 -10
- package/lib/joints.d.ts +1 -1
- package/lib/mesh-collider.d.ts +4 -4
- package/lib/physics.d.ts +4 -4
- package/lib/rigid-body.d.ts +18 -18
- package/lib/shared.d.ts +9 -9
- package/lib/types.d.ts +19 -19
- package/lib/utils.d.ts +3 -3
- package/package.json +3 -2
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { input, viewChild, Component, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, effect, Directive, contentChild, TemplateRef, signal, computed, untracked, inject, DestroyRef, model, output, ElementRef, viewChildren } from '@angular/core';
|
|
3
|
-
import { Vector3
|
|
4
|
-
import { extend, injectBeforeRender, injectStore, pick, vector3, applyProps,
|
|
3
|
+
import { Vector3, Quaternion, EventQueue, ColliderDesc, ActiveEvents, RigidBodyDesc } from '@dimforge/rapier3d-compat';
|
|
4
|
+
import { extend, injectBeforeRender, injectStore, is, pick, vector3, applyProps, getInstanceState, getEmitter, hasListener, resolveRef } from 'angular-three';
|
|
5
5
|
import { mergeInputs } from 'ngxtension/inject-inputs';
|
|
6
|
-
import
|
|
6
|
+
import * as THREE from 'three';
|
|
7
|
+
import { Group, LineSegments, LineBasicMaterial, BufferAttribute, Object3D } from 'three';
|
|
7
8
|
import { NgTemplateOutlet } from '@angular/common';
|
|
8
9
|
import { mergeVertices } from 'three-stdlib';
|
|
9
10
|
import { assertInjector } from 'ngxtension/assert-injector';
|
|
@@ -90,14 +91,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImpor
|
|
|
90
91
|
args: [{ selector: 'ngtr-frame-stepper' }]
|
|
91
92
|
}], ctorParameters: () => [] });
|
|
92
93
|
|
|
93
|
-
const _quaternion = new Quaternion();
|
|
94
|
-
const _euler = new Euler();
|
|
95
|
-
const _vector3 = new Vector3();
|
|
96
|
-
const _object3d = new Object3D();
|
|
97
|
-
const _matrix4 = new Matrix4();
|
|
98
|
-
const _position = new Vector3();
|
|
99
|
-
const _rotation = new Quaternion();
|
|
100
|
-
const _scale = new Vector3();
|
|
94
|
+
const _quaternion = new THREE.Quaternion();
|
|
95
|
+
const _euler = new THREE.Euler();
|
|
96
|
+
const _vector3 = new THREE.Vector3();
|
|
97
|
+
const _object3d = new THREE.Object3D();
|
|
98
|
+
const _matrix4 = new THREE.Matrix4();
|
|
99
|
+
const _position = new THREE.Vector3();
|
|
100
|
+
const _rotation = new THREE.Quaternion();
|
|
101
|
+
const _scale = new THREE.Vector3();
|
|
101
102
|
|
|
102
103
|
/**
|
|
103
104
|
* Creates a proxy that will create a singleton instance of the given class
|
|
@@ -142,19 +143,18 @@ function rapierQuaternionToQuaternion({ x, y, z, w }) {
|
|
|
142
143
|
}
|
|
143
144
|
function vector3ToRapierVector(v) {
|
|
144
145
|
if (Array.isArray(v)) {
|
|
145
|
-
return new Vector3
|
|
146
|
+
return new Vector3(v[0], v[1], v[2]);
|
|
146
147
|
}
|
|
147
148
|
if (typeof v === 'number') {
|
|
148
|
-
return new Vector3
|
|
149
|
+
return new Vector3(v, v, v);
|
|
149
150
|
}
|
|
150
|
-
|
|
151
|
-
return new Vector3$1(vector.x, vector.y, vector.z);
|
|
151
|
+
return new Vector3(v.x, v.y, v.z);
|
|
152
152
|
}
|
|
153
153
|
function quaternionToRapierQuaternion(v) {
|
|
154
154
|
if (Array.isArray(v)) {
|
|
155
|
-
return new Quaternion
|
|
155
|
+
return new Quaternion(v[0], v[1], v[2], v[3]);
|
|
156
156
|
}
|
|
157
|
-
return new Quaternion
|
|
157
|
+
return new Quaternion(v.x, v.y, v.z, v.w);
|
|
158
158
|
}
|
|
159
159
|
function isChildOfMeshCollider(child) {
|
|
160
160
|
let flag = false;
|
|
@@ -175,10 +175,10 @@ function getColliderArgsFromGeometry(geometry, colliders) {
|
|
|
175
175
|
case 'cuboid': {
|
|
176
176
|
geometry.computeBoundingBox();
|
|
177
177
|
const { boundingBox } = geometry;
|
|
178
|
-
const size = boundingBox.getSize(new Vector3());
|
|
178
|
+
const size = boundingBox.getSize(new THREE.Vector3());
|
|
179
179
|
return {
|
|
180
180
|
args: [size.x / 2, size.y / 2, size.z / 2],
|
|
181
|
-
offset: boundingBox.getCenter(new Vector3()),
|
|
181
|
+
offset: boundingBox.getCenter(new THREE.Vector3()),
|
|
182
182
|
};
|
|
183
183
|
}
|
|
184
184
|
case 'ball': {
|
|
@@ -194,34 +194,33 @@ function getColliderArgsFromGeometry(geometry, colliders) {
|
|
|
194
194
|
const clonedGeometry = geometry.index ? geometry.clone() : mergeVertices(geometry);
|
|
195
195
|
return {
|
|
196
196
|
args: [clonedGeometry.attributes['position'].array, clonedGeometry.index?.array],
|
|
197
|
-
offset: new Vector3(),
|
|
197
|
+
offset: new THREE.Vector3(),
|
|
198
198
|
};
|
|
199
199
|
}
|
|
200
200
|
case 'hull': {
|
|
201
201
|
const clonedGeometry = geometry.clone();
|
|
202
202
|
return {
|
|
203
203
|
args: [clonedGeometry.attributes['position'].array],
|
|
204
|
-
offset: new Vector3(),
|
|
204
|
+
offset: new THREE.Vector3(),
|
|
205
205
|
};
|
|
206
206
|
}
|
|
207
207
|
}
|
|
208
|
-
return { args: [], offset: new Vector3() };
|
|
208
|
+
return { args: [], offset: new THREE.Vector3() };
|
|
209
209
|
}
|
|
210
210
|
function createColliderOptions(object, options, ignoreMeshColliders = true) {
|
|
211
211
|
const childColliderOptions = [];
|
|
212
212
|
object.updateWorldMatrix(true, false);
|
|
213
213
|
const invertedParentMatrixWorld = object.matrixWorld.clone().invert();
|
|
214
214
|
const colliderFromChild = (child) => {
|
|
215
|
-
if (child
|
|
215
|
+
if (is.three(child, 'isMesh')) {
|
|
216
216
|
if (ignoreMeshColliders && isChildOfMeshCollider(child))
|
|
217
217
|
return;
|
|
218
218
|
const worldScale = child.getWorldScale(_scale);
|
|
219
219
|
const shape = autoColliderMap[options.colliders || 'cuboid'];
|
|
220
220
|
child.updateWorldMatrix(true, false);
|
|
221
221
|
_matrix4.copy(child.matrixWorld).premultiply(invertedParentMatrixWorld).decompose(_position, _rotation, _scale);
|
|
222
|
-
const rotationEuler = new Euler().setFromQuaternion(_rotation, 'XYZ');
|
|
223
|
-
const {
|
|
224
|
-
const { args, offset } = getColliderArgsFromGeometry(geometry, options.colliders || 'cuboid');
|
|
222
|
+
const rotationEuler = new THREE.Euler().setFromQuaternion(_rotation, 'XYZ');
|
|
223
|
+
const { args, offset } = getColliderArgsFromGeometry(child.geometry, options.colliders || 'cuboid');
|
|
225
224
|
const { mass, linearDamping, angularDamping, canSleep, ccd, gravityScale, softCcdPrediction, ...rest } = options;
|
|
226
225
|
childColliderOptions.push({
|
|
227
226
|
colliderOptions: rest,
|
|
@@ -375,7 +374,7 @@ class NgtrPhysics {
|
|
|
375
374
|
* Fixed timeStep simulation progression.
|
|
376
375
|
* @see https://gafferongames.com/post/fix_your_timestep/
|
|
377
376
|
*/
|
|
378
|
-
const clampedDelta = MathUtils.clamp(delta, 0, 0.5);
|
|
377
|
+
const clampedDelta = THREE.MathUtils.clamp(delta, 0, 0.5);
|
|
379
378
|
const stepWorld = (innerDelta) => {
|
|
380
379
|
// Trigger beforeStep callbacks
|
|
381
380
|
this.beforeStepCallbacks.forEach((callback) => {
|
|
@@ -629,24 +628,35 @@ const colliderDefaultOptions = {
|
|
|
629
628
|
};
|
|
630
629
|
class NgtrAnyCollider {
|
|
631
630
|
position = input([0, 0, 0]);
|
|
632
|
-
rotation = input(
|
|
631
|
+
rotation = input();
|
|
633
632
|
scale = input([1, 1, 1]);
|
|
634
|
-
quaternion = input(
|
|
635
|
-
userData = input(
|
|
636
|
-
name = input();
|
|
633
|
+
quaternion = input();
|
|
634
|
+
userData = input(undefined);
|
|
635
|
+
name = input(undefined);
|
|
637
636
|
options = input(colliderDefaultOptions, { transform: mergeInputs(rigidBodyDefaultOptions) });
|
|
638
637
|
object3DParameters = computed(() => {
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
638
|
+
const [position, rotation, scale, quaternion, userData, name] = [
|
|
639
|
+
this.position(),
|
|
640
|
+
this.rotation(),
|
|
641
|
+
this.scale(),
|
|
642
|
+
this.quaternion(),
|
|
643
|
+
this.userData(),
|
|
644
|
+
this.name(),
|
|
645
|
+
];
|
|
646
|
+
const parameters = { position, scale, userData, name };
|
|
647
|
+
if (quaternion) {
|
|
648
|
+
Object.assign(parameters, { quaternion });
|
|
649
|
+
}
|
|
650
|
+
else if (rotation) {
|
|
651
|
+
Object.assign(parameters, { rotation });
|
|
652
|
+
}
|
|
653
|
+
else {
|
|
654
|
+
Object.assign(parameters, { rotation: [0, 0, 0] });
|
|
655
|
+
}
|
|
656
|
+
return parameters;
|
|
647
657
|
});
|
|
648
658
|
// TODO: change this to input required when Angular allows setting hostDirective input
|
|
649
|
-
shape = model(undefined, { alias: '
|
|
659
|
+
shape = model(undefined, { alias: 'collider' });
|
|
650
660
|
args = model([]);
|
|
651
661
|
collisionEnter = output();
|
|
652
662
|
collisionExit = output();
|
|
@@ -722,7 +732,7 @@ class NgtrAnyCollider {
|
|
|
722
732
|
});
|
|
723
733
|
}
|
|
724
734
|
get worldScale() {
|
|
725
|
-
return this.objectRef.nativeElement.getWorldScale(new Vector3());
|
|
735
|
+
return this.objectRef.nativeElement.getWorldScale(new THREE.Vector3());
|
|
726
736
|
}
|
|
727
737
|
setShape(shape) {
|
|
728
738
|
this.shape.set(shape);
|
|
@@ -737,11 +747,11 @@ class NgtrAnyCollider {
|
|
|
737
747
|
const worldSingleton = this.physics.worldSingleton();
|
|
738
748
|
if (!worldSingleton)
|
|
739
749
|
return;
|
|
740
|
-
const
|
|
741
|
-
if (!
|
|
750
|
+
const instanceState = getInstanceState(this.objectRef.nativeElement);
|
|
751
|
+
if (!instanceState)
|
|
742
752
|
return;
|
|
743
|
-
const parent =
|
|
744
|
-
if (!parent || !parent
|
|
753
|
+
const parent = instanceState.parent();
|
|
754
|
+
if (!parent || !is.three(parent, 'isObject3D'))
|
|
745
755
|
return;
|
|
746
756
|
const state = this.createColliderState(collider, this.objectRef.nativeElement, this.rigidBody?.objectRef.nativeElement);
|
|
747
757
|
this.physics.colliderStates.set(collider.handle, state);
|
|
@@ -888,11 +898,11 @@ class NgtrAnyCollider {
|
|
|
888
898
|
return scaledVerts;
|
|
889
899
|
}
|
|
890
900
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtrAnyCollider, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
891
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.6", type: NgtrAnyCollider, isStandalone: true, selector: "ngt-object3D[
|
|
901
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.6", type: NgtrAnyCollider, isStandalone: true, selector: "ngt-object3D[collider]", inputs: { position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, rotation: { classPropertyName: "rotation", publicName: "rotation", isSignal: true, isRequired: false, transformFunction: null }, scale: { classPropertyName: "scale", publicName: "scale", isSignal: true, isRequired: false, transformFunction: null }, quaternion: { classPropertyName: "quaternion", publicName: "quaternion", isSignal: true, isRequired: false, transformFunction: null }, userData: { classPropertyName: "userData", publicName: "userData", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, shape: { classPropertyName: "shape", publicName: "collider", isSignal: true, isRequired: false, transformFunction: null }, args: { classPropertyName: "args", publicName: "args", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { shape: "colliderChange", args: "argsChange", collisionEnter: "collisionEnter", collisionExit: "collisionExit", intersectionEnter: "intersectionEnter", intersectionExit: "intersectionExit", contactForce: "contactForce" }, ngImport: i0 });
|
|
892
902
|
}
|
|
893
903
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtrAnyCollider, decorators: [{
|
|
894
904
|
type: Directive,
|
|
895
|
-
args: [{ selector: 'ngt-object3D[
|
|
905
|
+
args: [{ selector: 'ngt-object3D[collider]' }]
|
|
896
906
|
}], ctorParameters: () => [] });
|
|
897
907
|
const RIGID_BODY_TYPE_MAP = {
|
|
898
908
|
fixed: 1,
|
|
@@ -912,7 +922,7 @@ const rigidBodyDefaultOptions = {
|
|
|
912
922
|
};
|
|
913
923
|
class NgtrRigidBody {
|
|
914
924
|
type = input('dynamic', {
|
|
915
|
-
alias: '
|
|
925
|
+
alias: 'rigidBody',
|
|
916
926
|
transform: (value) => {
|
|
917
927
|
if (value === '' || value === undefined)
|
|
918
928
|
return 'dynamic';
|
|
@@ -923,16 +933,27 @@ class NgtrRigidBody {
|
|
|
923
933
|
rotation = input([0, 0, 0]);
|
|
924
934
|
scale = input([1, 1, 1]);
|
|
925
935
|
quaternion = input([0, 0, 0, 1]);
|
|
926
|
-
userData = input(
|
|
936
|
+
userData = input(undefined);
|
|
927
937
|
options = input(rigidBodyDefaultOptions, { transform: mergeInputs(rigidBodyDefaultOptions) });
|
|
928
938
|
object3DParameters = computed(() => {
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
939
|
+
const [position, rotation, scale, quaternion, userData] = [
|
|
940
|
+
this.position(),
|
|
941
|
+
this.rotation(),
|
|
942
|
+
this.scale(),
|
|
943
|
+
this.quaternion(),
|
|
944
|
+
this.userData(),
|
|
945
|
+
];
|
|
946
|
+
const parameters = { position, scale, userData };
|
|
947
|
+
if (quaternion) {
|
|
948
|
+
Object.assign(parameters, { quaternion });
|
|
949
|
+
}
|
|
950
|
+
else if (rotation) {
|
|
951
|
+
Object.assign(parameters, { rotation });
|
|
952
|
+
}
|
|
953
|
+
else {
|
|
954
|
+
Object.assign(parameters, { rotation: [0, 0, 0] });
|
|
955
|
+
}
|
|
956
|
+
return parameters;
|
|
936
957
|
});
|
|
937
958
|
wake = output();
|
|
938
959
|
sleep = output();
|
|
@@ -983,12 +1004,12 @@ class NgtrRigidBody {
|
|
|
983
1004
|
// if colliders on object is not set, use physics colliders
|
|
984
1005
|
if (!options.colliders)
|
|
985
1006
|
options.colliders = physicsColliders;
|
|
986
|
-
const
|
|
987
|
-
if (!
|
|
1007
|
+
const objectInstanceState = getInstanceState(this.objectRef.nativeElement);
|
|
1008
|
+
if (!objectInstanceState)
|
|
988
1009
|
return [];
|
|
989
1010
|
// track object's parent and non-object children
|
|
990
|
-
const [parent] = [
|
|
991
|
-
if (!parent || !parent
|
|
1011
|
+
const [parent] = [objectInstanceState.parent(), objectInstanceState.nonObjects()];
|
|
1012
|
+
if (!parent || !is.three(parent, 'isObject3D'))
|
|
992
1013
|
return [];
|
|
993
1014
|
return createColliderOptions(this.objectRef.nativeElement, options, true);
|
|
994
1015
|
});
|
|
@@ -1018,11 +1039,11 @@ class NgtrRigidBody {
|
|
|
1018
1039
|
if (!body)
|
|
1019
1040
|
return;
|
|
1020
1041
|
const transformState = untracked(this.transformState);
|
|
1021
|
-
const
|
|
1022
|
-
if (!
|
|
1042
|
+
const instanceState = getInstanceState(this.objectRef.nativeElement);
|
|
1043
|
+
if (!instanceState)
|
|
1023
1044
|
return;
|
|
1024
|
-
const parent =
|
|
1025
|
-
if (!parent || !parent
|
|
1045
|
+
const parent = instanceState.parent();
|
|
1046
|
+
if (!parent || !is.three(parent, 'isObject3D'))
|
|
1026
1047
|
return;
|
|
1027
1048
|
const state = this.createRigidBodyState(body, this.objectRef.nativeElement);
|
|
1028
1049
|
this.physics.rigidBodyStates.set(body.handle, transformState ? transformState(state) : state);
|
|
@@ -1135,11 +1156,11 @@ class NgtrRigidBody {
|
|
|
1135
1156
|
};
|
|
1136
1157
|
}
|
|
1137
1158
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtrRigidBody, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1138
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.6", type: NgtrRigidBody, isStandalone: true, selector: "ngt-object3D[
|
|
1159
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.6", type: NgtrRigidBody, isStandalone: true, selector: "ngt-object3D[rigidBody]", inputs: { type: { classPropertyName: "type", publicName: "rigidBody", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, rotation: { classPropertyName: "rotation", publicName: "rotation", isSignal: true, isRequired: false, transformFunction: null }, scale: { classPropertyName: "scale", publicName: "scale", isSignal: true, isRequired: false, transformFunction: null }, quaternion: { classPropertyName: "quaternion", publicName: "quaternion", isSignal: true, isRequired: false, transformFunction: null }, userData: { classPropertyName: "userData", publicName: "userData", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { wake: "wake", sleep: "sleep", collisionEnter: "collisionEnter", collisionExit: "collisionExit", intersectionEnter: "intersectionEnter", intersectionExit: "intersectionExit", contactForce: "contactForce" }, exportAs: ["rigidBody"], ngImport: i0, template: `
|
|
1139
1160
|
<ng-content />
|
|
1140
1161
|
@for (childColliderOption of childColliderOptions(); track $index) {
|
|
1141
1162
|
<ngt-object3D
|
|
1142
|
-
[
|
|
1163
|
+
[collider]="childColliderOption.shape"
|
|
1143
1164
|
[args]="childColliderOption.args"
|
|
1144
1165
|
[position]="childColliderOption.position"
|
|
1145
1166
|
[rotation]="childColliderOption.rotation"
|
|
@@ -1148,18 +1169,18 @@ class NgtrRigidBody {
|
|
|
1148
1169
|
[options]="childColliderOption.colliderOptions"
|
|
1149
1170
|
/>
|
|
1150
1171
|
}
|
|
1151
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: NgtrAnyCollider, selector: "ngt-object3D[
|
|
1172
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgtrAnyCollider, selector: "ngt-object3D[collider]", inputs: ["position", "rotation", "scale", "quaternion", "userData", "name", "options", "collider", "args"], outputs: ["colliderChange", "argsChange", "collisionEnter", "collisionExit", "intersectionEnter", "intersectionExit", "contactForce"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1152
1173
|
}
|
|
1153
1174
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtrRigidBody, decorators: [{
|
|
1154
1175
|
type: Component,
|
|
1155
1176
|
args: [{
|
|
1156
|
-
selector: 'ngt-object3D[
|
|
1177
|
+
selector: 'ngt-object3D[rigidBody]',
|
|
1157
1178
|
exportAs: 'rigidBody',
|
|
1158
1179
|
template: `
|
|
1159
1180
|
<ng-content />
|
|
1160
1181
|
@for (childColliderOption of childColliderOptions(); track $index) {
|
|
1161
1182
|
<ngt-object3D
|
|
1162
|
-
[
|
|
1183
|
+
[collider]="childColliderOption.shape"
|
|
1163
1184
|
[args]="childColliderOption.args"
|
|
1164
1185
|
[position]="childColliderOption.position"
|
|
1165
1186
|
[rotation]="childColliderOption.rotation"
|
|
@@ -1191,11 +1212,11 @@ class NgtrCuboidCollider {
|
|
|
1191
1212
|
});
|
|
1192
1213
|
}
|
|
1193
1214
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtrCuboidCollider, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1194
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.6", type: NgtrCuboidCollider, isStandalone: true, selector: "ngt-object3D[
|
|
1215
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.6", type: NgtrCuboidCollider, isStandalone: true, selector: "ngt-object3D[cuboidCollider]", inputs: { args: { classPropertyName: "args", publicName: "args", isSignal: true, isRequired: true, transformFunction: null } }, hostDirectives: [{ directive: NgtrAnyCollider, inputs: ["options", "options", "name", "name", "scale", "scale", "position", "position", "quaternion", "quaternion", "rotation", "rotation", "userData", "userData"], outputs: ["collisionEnter", "collisionEnter", "collisionExit", "collisionExit", "intersectionEnter", "intersectionEnter", "intersectionExit", "intersectionExit", "contactForce", "contactForce"] }], ngImport: i0 });
|
|
1195
1216
|
}
|
|
1196
1217
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtrCuboidCollider, decorators: [{
|
|
1197
1218
|
type: Directive,
|
|
1198
|
-
args: [{ selector: 'ngt-object3D[
|
|
1219
|
+
args: [{ selector: 'ngt-object3D[cuboidCollider]', hostDirectives: [ANY_COLLIDER_HOST_DIRECTIVE] }]
|
|
1199
1220
|
}], ctorParameters: () => [] });
|
|
1200
1221
|
class NgtrCapsuleCollider {
|
|
1201
1222
|
args = input.required();
|
|
@@ -1207,11 +1228,11 @@ class NgtrCapsuleCollider {
|
|
|
1207
1228
|
});
|
|
1208
1229
|
}
|
|
1209
1230
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtrCapsuleCollider, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1210
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.6", type: NgtrCapsuleCollider, isStandalone: true, selector: "ngt-object3D[
|
|
1231
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.6", type: NgtrCapsuleCollider, isStandalone: true, selector: "ngt-object3D[capsuleCollider]", inputs: { args: { classPropertyName: "args", publicName: "args", isSignal: true, isRequired: true, transformFunction: null } }, hostDirectives: [{ directive: NgtrAnyCollider, inputs: ["options", "options", "name", "name", "scale", "scale", "position", "position", "quaternion", "quaternion", "rotation", "rotation", "userData", "userData"], outputs: ["collisionEnter", "collisionEnter", "collisionExit", "collisionExit", "intersectionEnter", "intersectionEnter", "intersectionExit", "intersectionExit", "contactForce", "contactForce"] }], ngImport: i0 });
|
|
1211
1232
|
}
|
|
1212
1233
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtrCapsuleCollider, decorators: [{
|
|
1213
1234
|
type: Directive,
|
|
1214
|
-
args: [{ selector: 'ngt-object3D[
|
|
1235
|
+
args: [{ selector: 'ngt-object3D[capsuleCollider]', hostDirectives: [ANY_COLLIDER_HOST_DIRECTIVE] }]
|
|
1215
1236
|
}], ctorParameters: () => [] });
|
|
1216
1237
|
class NgtrBallCollider {
|
|
1217
1238
|
args = input.required();
|
|
@@ -1223,11 +1244,11 @@ class NgtrBallCollider {
|
|
|
1223
1244
|
});
|
|
1224
1245
|
}
|
|
1225
1246
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtrBallCollider, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1226
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.6", type: NgtrBallCollider, isStandalone: true, selector: "ngt-object3D[
|
|
1247
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.6", type: NgtrBallCollider, isStandalone: true, selector: "ngt-object3D[ballCollider]", inputs: { args: { classPropertyName: "args", publicName: "args", isSignal: true, isRequired: true, transformFunction: null } }, hostDirectives: [{ directive: NgtrAnyCollider, inputs: ["options", "options", "name", "name", "scale", "scale", "position", "position", "quaternion", "quaternion", "rotation", "rotation", "userData", "userData"], outputs: ["collisionEnter", "collisionEnter", "collisionExit", "collisionExit", "intersectionEnter", "intersectionEnter", "intersectionExit", "intersectionExit", "contactForce", "contactForce"] }], ngImport: i0 });
|
|
1227
1248
|
}
|
|
1228
1249
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtrBallCollider, decorators: [{
|
|
1229
1250
|
type: Directive,
|
|
1230
|
-
args: [{ selector: 'ngt-object3D[
|
|
1251
|
+
args: [{ selector: 'ngt-object3D[ballCollider]', hostDirectives: [ANY_COLLIDER_HOST_DIRECTIVE] }]
|
|
1231
1252
|
}], ctorParameters: () => [] });
|
|
1232
1253
|
class NgtrConvexHullCollider {
|
|
1233
1254
|
args = input.required();
|
|
@@ -1239,11 +1260,11 @@ class NgtrConvexHullCollider {
|
|
|
1239
1260
|
});
|
|
1240
1261
|
}
|
|
1241
1262
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtrConvexHullCollider, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1242
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.6", type: NgtrConvexHullCollider, isStandalone: true, selector: "ngt-object3D[
|
|
1263
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.6", type: NgtrConvexHullCollider, isStandalone: true, selector: "ngt-object3D[convexHullCollider]", inputs: { args: { classPropertyName: "args", publicName: "args", isSignal: true, isRequired: true, transformFunction: null } }, hostDirectives: [{ directive: NgtrAnyCollider, inputs: ["options", "options", "name", "name", "scale", "scale", "position", "position", "quaternion", "quaternion", "rotation", "rotation", "userData", "userData"], outputs: ["collisionEnter", "collisionEnter", "collisionExit", "collisionExit", "intersectionEnter", "intersectionEnter", "intersectionExit", "intersectionExit", "contactForce", "contactForce"] }], ngImport: i0 });
|
|
1243
1264
|
}
|
|
1244
1265
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtrConvexHullCollider, decorators: [{
|
|
1245
1266
|
type: Directive,
|
|
1246
|
-
args: [{ selector: 'ngt-object3D[
|
|
1267
|
+
args: [{ selector: 'ngt-object3D[convexHullCollider]', hostDirectives: [ANY_COLLIDER_HOST_DIRECTIVE] }]
|
|
1247
1268
|
}], ctorParameters: () => [] });
|
|
1248
1269
|
class NgtrHeightfieldCollider {
|
|
1249
1270
|
args = input.required();
|
|
@@ -1255,11 +1276,11 @@ class NgtrHeightfieldCollider {
|
|
|
1255
1276
|
});
|
|
1256
1277
|
}
|
|
1257
1278
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtrHeightfieldCollider, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1258
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.6", type: NgtrHeightfieldCollider, isStandalone: true, selector: "ngt-object3D[
|
|
1279
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.6", type: NgtrHeightfieldCollider, isStandalone: true, selector: "ngt-object3D[heightfieldCollider]", inputs: { args: { classPropertyName: "args", publicName: "args", isSignal: true, isRequired: true, transformFunction: null } }, hostDirectives: [{ directive: NgtrAnyCollider, inputs: ["options", "options", "name", "name", "scale", "scale", "position", "position", "quaternion", "quaternion", "rotation", "rotation", "userData", "userData"], outputs: ["collisionEnter", "collisionEnter", "collisionExit", "collisionExit", "intersectionEnter", "intersectionEnter", "intersectionExit", "intersectionExit", "contactForce", "contactForce"] }], ngImport: i0 });
|
|
1259
1280
|
}
|
|
1260
1281
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtrHeightfieldCollider, decorators: [{
|
|
1261
1282
|
type: Directive,
|
|
1262
|
-
args: [{ selector: 'ngt-object3D[
|
|
1283
|
+
args: [{ selector: 'ngt-object3D[heightfieldCollider]', hostDirectives: [ANY_COLLIDER_HOST_DIRECTIVE] }]
|
|
1263
1284
|
}], ctorParameters: () => [] });
|
|
1264
1285
|
class NgtrTrimeshCollider {
|
|
1265
1286
|
args = input.required();
|
|
@@ -1271,11 +1292,11 @@ class NgtrTrimeshCollider {
|
|
|
1271
1292
|
});
|
|
1272
1293
|
}
|
|
1273
1294
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtrTrimeshCollider, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1274
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.6", type: NgtrTrimeshCollider, isStandalone: true, selector: "ngt-object3D[
|
|
1295
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.6", type: NgtrTrimeshCollider, isStandalone: true, selector: "ngt-object3D[trimeshCollider]", inputs: { args: { classPropertyName: "args", publicName: "args", isSignal: true, isRequired: true, transformFunction: null } }, hostDirectives: [{ directive: NgtrAnyCollider, inputs: ["options", "options", "name", "name", "scale", "scale", "position", "position", "quaternion", "quaternion", "rotation", "rotation", "userData", "userData"], outputs: ["collisionEnter", "collisionEnter", "collisionExit", "collisionExit", "intersectionEnter", "intersectionEnter", "intersectionExit", "intersectionExit", "contactForce", "contactForce"] }], ngImport: i0 });
|
|
1275
1296
|
}
|
|
1276
1297
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtrTrimeshCollider, decorators: [{
|
|
1277
1298
|
type: Directive,
|
|
1278
|
-
args: [{ selector: 'ngt-object3D[
|
|
1299
|
+
args: [{ selector: 'ngt-object3D[trimeshCollider]', hostDirectives: [ANY_COLLIDER_HOST_DIRECTIVE] }]
|
|
1279
1300
|
}], ctorParameters: () => [] });
|
|
1280
1301
|
class NgtrPolylineCollider {
|
|
1281
1302
|
args = input.required();
|
|
@@ -1287,11 +1308,11 @@ class NgtrPolylineCollider {
|
|
|
1287
1308
|
});
|
|
1288
1309
|
}
|
|
1289
1310
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtrPolylineCollider, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1290
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.6", type: NgtrPolylineCollider, isStandalone: true, selector: "ngt-object3D[
|
|
1311
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.6", type: NgtrPolylineCollider, isStandalone: true, selector: "ngt-object3D[polylineCollider]", inputs: { args: { classPropertyName: "args", publicName: "args", isSignal: true, isRequired: true, transformFunction: null } }, hostDirectives: [{ directive: NgtrAnyCollider, inputs: ["options", "options", "name", "name", "scale", "scale", "position", "position", "quaternion", "quaternion", "rotation", "rotation", "userData", "userData"], outputs: ["collisionEnter", "collisionEnter", "collisionExit", "collisionExit", "intersectionEnter", "intersectionEnter", "intersectionExit", "intersectionExit", "contactForce", "contactForce"] }], ngImport: i0 });
|
|
1291
1312
|
}
|
|
1292
1313
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtrPolylineCollider, decorators: [{
|
|
1293
1314
|
type: Directive,
|
|
1294
|
-
args: [{ selector: 'ngt-object3D[
|
|
1315
|
+
args: [{ selector: 'ngt-object3D[polylineCollider]', hostDirectives: [ANY_COLLIDER_HOST_DIRECTIVE] }]
|
|
1295
1316
|
}], ctorParameters: () => [] });
|
|
1296
1317
|
class NgtrRoundCuboidCollider {
|
|
1297
1318
|
args = input.required();
|
|
@@ -1303,11 +1324,11 @@ class NgtrRoundCuboidCollider {
|
|
|
1303
1324
|
});
|
|
1304
1325
|
}
|
|
1305
1326
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtrRoundCuboidCollider, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1306
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.6", type: NgtrRoundCuboidCollider, isStandalone: true, selector: "ngt-object3D[
|
|
1327
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.6", type: NgtrRoundCuboidCollider, isStandalone: true, selector: "ngt-object3D[roundCuboidCollider]", inputs: { args: { classPropertyName: "args", publicName: "args", isSignal: true, isRequired: true, transformFunction: null } }, hostDirectives: [{ directive: NgtrAnyCollider, inputs: ["options", "options", "name", "name", "scale", "scale", "position", "position", "quaternion", "quaternion", "rotation", "rotation", "userData", "userData"], outputs: ["collisionEnter", "collisionEnter", "collisionExit", "collisionExit", "intersectionEnter", "intersectionEnter", "intersectionExit", "intersectionExit", "contactForce", "contactForce"] }], ngImport: i0 });
|
|
1307
1328
|
}
|
|
1308
1329
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtrRoundCuboidCollider, decorators: [{
|
|
1309
1330
|
type: Directive,
|
|
1310
|
-
args: [{ selector: 'ngt-object3D[
|
|
1331
|
+
args: [{ selector: 'ngt-object3D[roundCuboidCollider]', hostDirectives: [ANY_COLLIDER_HOST_DIRECTIVE] }]
|
|
1311
1332
|
}], ctorParameters: () => [] });
|
|
1312
1333
|
class NgtrCylinderCollider {
|
|
1313
1334
|
args = input.required();
|
|
@@ -1319,11 +1340,11 @@ class NgtrCylinderCollider {
|
|
|
1319
1340
|
});
|
|
1320
1341
|
}
|
|
1321
1342
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtrCylinderCollider, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1322
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.6", type: NgtrCylinderCollider, isStandalone: true, selector: "ngt-object3D[
|
|
1343
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.6", type: NgtrCylinderCollider, isStandalone: true, selector: "ngt-object3D[cylinderCollider]", inputs: { args: { classPropertyName: "args", publicName: "args", isSignal: true, isRequired: true, transformFunction: null } }, hostDirectives: [{ directive: NgtrAnyCollider, inputs: ["options", "options", "name", "name", "scale", "scale", "position", "position", "quaternion", "quaternion", "rotation", "rotation", "userData", "userData"], outputs: ["collisionEnter", "collisionEnter", "collisionExit", "collisionExit", "intersectionEnter", "intersectionEnter", "intersectionExit", "intersectionExit", "contactForce", "contactForce"] }], ngImport: i0 });
|
|
1323
1344
|
}
|
|
1324
1345
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtrCylinderCollider, decorators: [{
|
|
1325
1346
|
type: Directive,
|
|
1326
|
-
args: [{ selector: 'ngt-object3D[
|
|
1347
|
+
args: [{ selector: 'ngt-object3D[cylinderCollider]', hostDirectives: [ANY_COLLIDER_HOST_DIRECTIVE] }]
|
|
1327
1348
|
}], ctorParameters: () => [] });
|
|
1328
1349
|
class NgtrRoundCylinderCollider {
|
|
1329
1350
|
args = input.required();
|
|
@@ -1335,11 +1356,11 @@ class NgtrRoundCylinderCollider {
|
|
|
1335
1356
|
});
|
|
1336
1357
|
}
|
|
1337
1358
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtrRoundCylinderCollider, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1338
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.6", type: NgtrRoundCylinderCollider, isStandalone: true, selector: "ngt-object3D[
|
|
1359
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.6", type: NgtrRoundCylinderCollider, isStandalone: true, selector: "ngt-object3D[roundCylinderCollider]", inputs: { args: { classPropertyName: "args", publicName: "args", isSignal: true, isRequired: true, transformFunction: null } }, hostDirectives: [{ directive: NgtrAnyCollider, inputs: ["options", "options", "name", "name", "scale", "scale", "position", "position", "quaternion", "quaternion", "rotation", "rotation", "userData", "userData"], outputs: ["collisionEnter", "collisionEnter", "collisionExit", "collisionExit", "intersectionEnter", "intersectionEnter", "intersectionExit", "intersectionExit", "contactForce", "contactForce"] }], ngImport: i0 });
|
|
1339
1360
|
}
|
|
1340
1361
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtrRoundCylinderCollider, decorators: [{
|
|
1341
1362
|
type: Directive,
|
|
1342
|
-
args: [{ selector: 'ngt-object3D[
|
|
1363
|
+
args: [{ selector: 'ngt-object3D[roundCylinderCollider]', hostDirectives: [ANY_COLLIDER_HOST_DIRECTIVE] }]
|
|
1343
1364
|
}], ctorParameters: () => [] });
|
|
1344
1365
|
class NgtrConeCollider {
|
|
1345
1366
|
args = input.required();
|
|
@@ -1351,11 +1372,11 @@ class NgtrConeCollider {
|
|
|
1351
1372
|
});
|
|
1352
1373
|
}
|
|
1353
1374
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtrConeCollider, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1354
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.6", type: NgtrConeCollider, isStandalone: true, selector: "ngt-object3D[
|
|
1375
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.6", type: NgtrConeCollider, isStandalone: true, selector: "ngt-object3D[coneCollider]", inputs: { args: { classPropertyName: "args", publicName: "args", isSignal: true, isRequired: true, transformFunction: null } }, hostDirectives: [{ directive: NgtrAnyCollider, inputs: ["options", "options", "name", "name", "scale", "scale", "position", "position", "quaternion", "quaternion", "rotation", "rotation", "userData", "userData"], outputs: ["collisionEnter", "collisionEnter", "collisionExit", "collisionExit", "intersectionEnter", "intersectionEnter", "intersectionExit", "intersectionExit", "contactForce", "contactForce"] }], ngImport: i0 });
|
|
1355
1376
|
}
|
|
1356
1377
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtrConeCollider, decorators: [{
|
|
1357
1378
|
type: Directive,
|
|
1358
|
-
args: [{ selector: 'ngt-object3D[
|
|
1379
|
+
args: [{ selector: 'ngt-object3D[coneCollider]', hostDirectives: [ANY_COLLIDER_HOST_DIRECTIVE] }]
|
|
1359
1380
|
}], ctorParameters: () => [] });
|
|
1360
1381
|
class NgtrRoundConeCollider {
|
|
1361
1382
|
args = input.required();
|
|
@@ -1367,11 +1388,11 @@ class NgtrRoundConeCollider {
|
|
|
1367
1388
|
});
|
|
1368
1389
|
}
|
|
1369
1390
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtrRoundConeCollider, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1370
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.6", type: NgtrRoundConeCollider, isStandalone: true, selector: "ngt-object3D[
|
|
1391
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.6", type: NgtrRoundConeCollider, isStandalone: true, selector: "ngt-object3D[roundConeCollider]", inputs: { args: { classPropertyName: "args", publicName: "args", isSignal: true, isRequired: true, transformFunction: null } }, hostDirectives: [{ directive: NgtrAnyCollider, inputs: ["options", "options", "name", "name", "scale", "scale", "position", "position", "quaternion", "quaternion", "rotation", "rotation", "userData", "userData"], outputs: ["collisionEnter", "collisionEnter", "collisionExit", "collisionExit", "intersectionEnter", "intersectionEnter", "intersectionExit", "intersectionExit", "contactForce", "contactForce"] }], ngImport: i0 });
|
|
1371
1392
|
}
|
|
1372
1393
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtrRoundConeCollider, decorators: [{
|
|
1373
1394
|
type: Directive,
|
|
1374
|
-
args: [{ selector: 'ngt-object3D[
|
|
1395
|
+
args: [{ selector: 'ngt-object3D[roundConeCollider]', hostDirectives: [ANY_COLLIDER_HOST_DIRECTIVE] }]
|
|
1375
1396
|
}], ctorParameters: () => [] });
|
|
1376
1397
|
class NgtrConvexMeshCollider {
|
|
1377
1398
|
args = input.required();
|
|
@@ -1383,11 +1404,11 @@ class NgtrConvexMeshCollider {
|
|
|
1383
1404
|
});
|
|
1384
1405
|
}
|
|
1385
1406
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtrConvexMeshCollider, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1386
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.6", type: NgtrConvexMeshCollider, isStandalone: true, selector: "ngt-object3D[
|
|
1407
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.6", type: NgtrConvexMeshCollider, isStandalone: true, selector: "ngt-object3D[convexMeshCollider]", inputs: { args: { classPropertyName: "args", publicName: "args", isSignal: true, isRequired: true, transformFunction: null } }, hostDirectives: [{ directive: NgtrAnyCollider, inputs: ["options", "options", "name", "name", "scale", "scale", "position", "position", "quaternion", "quaternion", "rotation", "rotation", "userData", "userData"], outputs: ["collisionEnter", "collisionEnter", "collisionExit", "collisionExit", "intersectionEnter", "intersectionEnter", "intersectionExit", "intersectionExit", "contactForce", "contactForce"] }], ngImport: i0 });
|
|
1387
1408
|
}
|
|
1388
1409
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtrConvexMeshCollider, decorators: [{
|
|
1389
1410
|
type: Directive,
|
|
1390
|
-
args: [{ selector: 'ngt-object3D[
|
|
1411
|
+
args: [{ selector: 'ngt-object3D[convexMeshCollider]', hostDirectives: [ANY_COLLIDER_HOST_DIRECTIVE] }]
|
|
1391
1412
|
}], ctorParameters: () => [] });
|
|
1392
1413
|
class NgtrRoundConvexHullCollider {
|
|
1393
1414
|
args = input.required();
|
|
@@ -1399,11 +1420,11 @@ class NgtrRoundConvexHullCollider {
|
|
|
1399
1420
|
});
|
|
1400
1421
|
}
|
|
1401
1422
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtrRoundConvexHullCollider, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1402
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.6", type: NgtrRoundConvexHullCollider, isStandalone: true, selector: "ngt-object3D[
|
|
1423
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.6", type: NgtrRoundConvexHullCollider, isStandalone: true, selector: "ngt-object3D[roundConvexHullCollider]", inputs: { args: { classPropertyName: "args", publicName: "args", isSignal: true, isRequired: true, transformFunction: null } }, hostDirectives: [{ directive: NgtrAnyCollider, inputs: ["options", "options", "name", "name", "scale", "scale", "position", "position", "quaternion", "quaternion", "rotation", "rotation", "userData", "userData"], outputs: ["collisionEnter", "collisionEnter", "collisionExit", "collisionExit", "intersectionEnter", "intersectionEnter", "intersectionExit", "intersectionExit", "contactForce", "contactForce"] }], ngImport: i0 });
|
|
1403
1424
|
}
|
|
1404
1425
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtrRoundConvexHullCollider, decorators: [{
|
|
1405
1426
|
type: Directive,
|
|
1406
|
-
args: [{ selector: 'ngt-object3D[
|
|
1427
|
+
args: [{ selector: 'ngt-object3D[roundConvexHullCollider]', hostDirectives: [ANY_COLLIDER_HOST_DIRECTIVE] }]
|
|
1407
1428
|
}], ctorParameters: () => [] });
|
|
1408
1429
|
class NgtrRoundConvexMeshCollider {
|
|
1409
1430
|
args = input.required();
|
|
@@ -1415,11 +1436,11 @@ class NgtrRoundConvexMeshCollider {
|
|
|
1415
1436
|
});
|
|
1416
1437
|
}
|
|
1417
1438
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtrRoundConvexMeshCollider, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1418
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.6", type: NgtrRoundConvexMeshCollider, isStandalone: true, selector: "ngt-object3D[
|
|
1439
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.6", type: NgtrRoundConvexMeshCollider, isStandalone: true, selector: "ngt-object3D[roundConvexMeshCollider]", inputs: { args: { classPropertyName: "args", publicName: "args", isSignal: true, isRequired: true, transformFunction: null } }, hostDirectives: [{ directive: NgtrAnyCollider, inputs: ["options", "options", "name", "name", "scale", "scale", "position", "position", "quaternion", "quaternion", "rotation", "rotation", "userData", "userData"], outputs: ["collisionEnter", "collisionEnter", "collisionExit", "collisionExit", "intersectionEnter", "intersectionEnter", "intersectionExit", "intersectionExit", "contactForce", "contactForce"] }], ngImport: i0 });
|
|
1419
1440
|
}
|
|
1420
1441
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtrRoundConvexMeshCollider, decorators: [{
|
|
1421
1442
|
type: Directive,
|
|
1422
|
-
args: [{ selector: 'ngt-object3D[
|
|
1443
|
+
args: [{ selector: 'ngt-object3D[roundConvexMeshCollider]', hostDirectives: [ANY_COLLIDER_HOST_DIRECTIVE] }]
|
|
1423
1444
|
}], ctorParameters: () => [] });
|
|
1424
1445
|
|
|
1425
1446
|
const defaultOptions = rigidBodyDefaultOptions;
|
|
@@ -1430,7 +1451,7 @@ class NgtrInstancedRigidBodies {
|
|
|
1430
1451
|
quaternion = input([0, 0, 0, 1]);
|
|
1431
1452
|
userData = input({});
|
|
1432
1453
|
instances = input([], {
|
|
1433
|
-
alias: '
|
|
1454
|
+
alias: 'instancedRigidBodies',
|
|
1434
1455
|
transform: (value) => {
|
|
1435
1456
|
if (value === '')
|
|
1436
1457
|
return [];
|
|
@@ -1456,11 +1477,11 @@ class NgtrInstancedRigidBodies {
|
|
|
1456
1477
|
const instanceWrapper = this.instanceWrapperRef().nativeElement;
|
|
1457
1478
|
if (!instanceWrapper)
|
|
1458
1479
|
return null;
|
|
1459
|
-
const
|
|
1460
|
-
if (!
|
|
1480
|
+
const instanceState = getInstanceState(instanceWrapper);
|
|
1481
|
+
if (!instanceState)
|
|
1461
1482
|
return null;
|
|
1462
1483
|
// track object's children
|
|
1463
|
-
|
|
1484
|
+
instanceState.objects();
|
|
1464
1485
|
const firstChild = instanceWrapper.children[0];
|
|
1465
1486
|
if (!firstChild || !firstChild.isInstancedMesh)
|
|
1466
1487
|
return null;
|
|
@@ -1506,12 +1527,12 @@ class NgtrInstancedRigidBodies {
|
|
|
1506
1527
|
// if colliders on object is not set, use physics colliders
|
|
1507
1528
|
if (!options.colliders)
|
|
1508
1529
|
options.colliders = physicsColliders;
|
|
1509
|
-
const
|
|
1510
|
-
if (!
|
|
1530
|
+
const objectInstanceState = getInstanceState(this.objectRef.nativeElement);
|
|
1531
|
+
if (!objectInstanceState)
|
|
1511
1532
|
return [];
|
|
1512
1533
|
// track object's parent and non-object children
|
|
1513
|
-
const [parent] = [
|
|
1514
|
-
if (!parent || !parent
|
|
1534
|
+
const [parent] = [objectInstanceState.parent(), objectInstanceState.nonObjects()];
|
|
1535
|
+
if (!parent || !is.three(parent, 'isObject3D'))
|
|
1515
1536
|
return [];
|
|
1516
1537
|
return createColliderOptions(this.objectRef.nativeElement, options);
|
|
1517
1538
|
});
|
|
@@ -1525,18 +1546,18 @@ class NgtrInstancedRigidBodies {
|
|
|
1525
1546
|
const instancedMesh = this.instancedMesh();
|
|
1526
1547
|
if (!instancedMesh)
|
|
1527
1548
|
return;
|
|
1528
|
-
instancedMesh.instanceMatrix.setUsage(DynamicDrawUsage);
|
|
1549
|
+
instancedMesh.instanceMatrix.setUsage(THREE.DynamicDrawUsage);
|
|
1529
1550
|
});
|
|
1530
1551
|
}
|
|
1531
1552
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtrInstancedRigidBodies, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1532
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.6", type: NgtrInstancedRigidBodies, isStandalone: true, selector: "ngt-object3D[
|
|
1553
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.6", type: NgtrInstancedRigidBodies, isStandalone: true, selector: "ngt-object3D[instancedRigidBodies]", inputs: { position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, rotation: { classPropertyName: "rotation", publicName: "rotation", isSignal: true, isRequired: false, transformFunction: null }, scale: { classPropertyName: "scale", publicName: "scale", isSignal: true, isRequired: false, transformFunction: null }, quaternion: { classPropertyName: "quaternion", publicName: "quaternion", isSignal: true, isRequired: false, transformFunction: null }, userData: { classPropertyName: "userData", publicName: "userData", isSignal: true, isRequired: false, transformFunction: null }, instances: { classPropertyName: "instances", publicName: "instancedRigidBodies", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "instanceWrapperRef", first: true, predicate: ["instanceWrapper"], descendants: true, isSignal: true }, { propertyName: "rigidBodyRefs", predicate: NgtrRigidBody, descendants: true, isSignal: true }], exportAs: ["instancedRigidBodies"], ngImport: i0, template: `
|
|
1533
1554
|
<ngt-object3D #instanceWrapper>
|
|
1534
1555
|
<ng-content />
|
|
1535
1556
|
</ngt-object3D>
|
|
1536
1557
|
|
|
1537
1558
|
@for (instance of instancesOptions(); track instance.key) {
|
|
1538
1559
|
<ngt-object3D
|
|
1539
|
-
[
|
|
1560
|
+
[rigidBody]="instance.type"
|
|
1540
1561
|
[options]="instance.options"
|
|
1541
1562
|
[position]="instance.position"
|
|
1542
1563
|
[rotation]="instance.rotation"
|
|
@@ -1549,7 +1570,7 @@ class NgtrInstancedRigidBodies {
|
|
|
1549
1570
|
|
|
1550
1571
|
@for (childColliderOption of childColliderOptions(); track $index) {
|
|
1551
1572
|
<ngt-object3D
|
|
1552
|
-
[
|
|
1573
|
+
[collider]="childColliderOption.shape"
|
|
1553
1574
|
[args]="childColliderOption.args"
|
|
1554
1575
|
[position]="childColliderOption.position"
|
|
1555
1576
|
[rotation]="childColliderOption.rotation"
|
|
@@ -1560,12 +1581,12 @@ class NgtrInstancedRigidBodies {
|
|
|
1560
1581
|
}
|
|
1561
1582
|
</ngt-object3D>
|
|
1562
1583
|
}
|
|
1563
|
-
`, isInline: true, dependencies: [{ kind: "component", type: NgtrRigidBody, selector: "ngt-object3D[
|
|
1584
|
+
`, isInline: true, dependencies: [{ kind: "component", type: NgtrRigidBody, selector: "ngt-object3D[rigidBody]", inputs: ["rigidBody", "position", "rotation", "scale", "quaternion", "userData", "options"], outputs: ["wake", "sleep", "collisionEnter", "collisionExit", "intersectionEnter", "intersectionExit", "contactForce"], exportAs: ["rigidBody"] }, { kind: "directive", type: NgtrAnyCollider, selector: "ngt-object3D[collider]", inputs: ["position", "rotation", "scale", "quaternion", "userData", "name", "options", "collider", "args"], outputs: ["colliderChange", "argsChange", "collisionEnter", "collisionExit", "intersectionEnter", "intersectionExit", "contactForce"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1564
1585
|
}
|
|
1565
1586
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtrInstancedRigidBodies, decorators: [{
|
|
1566
1587
|
type: Component,
|
|
1567
1588
|
args: [{
|
|
1568
|
-
selector: 'ngt-object3D[
|
|
1589
|
+
selector: 'ngt-object3D[instancedRigidBodies]',
|
|
1569
1590
|
exportAs: 'instancedRigidBodies',
|
|
1570
1591
|
template: `
|
|
1571
1592
|
<ngt-object3D #instanceWrapper>
|
|
@@ -1574,7 +1595,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImpor
|
|
|
1574
1595
|
|
|
1575
1596
|
@for (instance of instancesOptions(); track instance.key) {
|
|
1576
1597
|
<ngt-object3D
|
|
1577
|
-
[
|
|
1598
|
+
[rigidBody]="instance.type"
|
|
1578
1599
|
[options]="instance.options"
|
|
1579
1600
|
[position]="instance.position"
|
|
1580
1601
|
[rotation]="instance.rotation"
|
|
@@ -1587,7 +1608,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImpor
|
|
|
1587
1608
|
|
|
1588
1609
|
@for (childColliderOption of childColliderOptions(); track $index) {
|
|
1589
1610
|
<ngt-object3D
|
|
1590
|
-
[
|
|
1611
|
+
[collider]="childColliderOption.shape"
|
|
1591
1612
|
[args]="childColliderOption.args"
|
|
1592
1613
|
[position]="childColliderOption.position"
|
|
1593
1614
|
[rotation]="childColliderOption.rotation"
|
|
@@ -1718,12 +1739,12 @@ class NgtrMeshCollider {
|
|
|
1718
1739
|
childColliderOptions = computed(() => {
|
|
1719
1740
|
const rigidBodyOptions = this.rigidBody.options();
|
|
1720
1741
|
rigidBodyOptions.colliders = this.colliders();
|
|
1721
|
-
const
|
|
1722
|
-
if (!
|
|
1742
|
+
const objectInstaceState = getInstanceState(this.objectRef.nativeElement);
|
|
1743
|
+
if (!objectInstaceState)
|
|
1723
1744
|
return [];
|
|
1724
1745
|
// track object's children
|
|
1725
|
-
|
|
1726
|
-
|
|
1746
|
+
objectInstaceState.nonObjects();
|
|
1747
|
+
objectInstaceState.objects();
|
|
1727
1748
|
return createColliderOptions(this.objectRef.nativeElement, rigidBodyOptions, false);
|
|
1728
1749
|
});
|
|
1729
1750
|
constructor() {
|
|
@@ -1732,11 +1753,11 @@ class NgtrMeshCollider {
|
|
|
1732
1753
|
this.objectRef.nativeElement.userData['ngtrRapierType'] = 'MeshCollider';
|
|
1733
1754
|
}
|
|
1734
1755
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtrMeshCollider, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1735
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.6", type: NgtrMeshCollider, isStandalone: true, selector: "ngt-object3D[
|
|
1756
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.6", type: NgtrMeshCollider, isStandalone: true, selector: "ngt-object3D[meshCollider]", inputs: { colliders: { classPropertyName: "colliders", publicName: "ngtrMeshCollider", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
|
|
1736
1757
|
<ng-content />
|
|
1737
1758
|
@for (childColliderOption of childColliderOptions(); track $index) {
|
|
1738
1759
|
<ngt-object3D
|
|
1739
|
-
[
|
|
1760
|
+
[collider]="childColliderOption.shape"
|
|
1740
1761
|
[args]="childColliderOption.args"
|
|
1741
1762
|
[position]="childColliderOption.position"
|
|
1742
1763
|
[rotation]="childColliderOption.rotation"
|
|
@@ -1745,17 +1766,17 @@ class NgtrMeshCollider {
|
|
|
1745
1766
|
[options]="childColliderOption.colliderOptions"
|
|
1746
1767
|
/>
|
|
1747
1768
|
}
|
|
1748
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: NgtrAnyCollider, selector: "ngt-object3D[
|
|
1769
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgtrAnyCollider, selector: "ngt-object3D[collider]", inputs: ["position", "rotation", "scale", "quaternion", "userData", "name", "options", "collider", "args"], outputs: ["colliderChange", "argsChange", "collisionEnter", "collisionExit", "intersectionEnter", "intersectionExit", "contactForce"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1749
1770
|
}
|
|
1750
1771
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtrMeshCollider, decorators: [{
|
|
1751
1772
|
type: Component,
|
|
1752
1773
|
args: [{
|
|
1753
|
-
selector: 'ngt-object3D[
|
|
1774
|
+
selector: 'ngt-object3D[meshCollider]',
|
|
1754
1775
|
template: `
|
|
1755
1776
|
<ng-content />
|
|
1756
1777
|
@for (childColliderOption of childColliderOptions(); track $index) {
|
|
1757
1778
|
<ngt-object3D
|
|
1758
|
-
[
|
|
1779
|
+
[collider]="childColliderOption.shape"
|
|
1759
1780
|
[args]="childColliderOption.args"
|
|
1760
1781
|
[position]="childColliderOption.position"
|
|
1761
1782
|
[rotation]="childColliderOption.rotation"
|