angular-three-rapier 2.2.0

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.
@@ -0,0 +1,64 @@
1
+ import { ElementRef, Injector } from '@angular/core';
2
+ import { FixedImpulseJoint, PrismaticImpulseJoint, RevoluteImpulseJoint, RigidBody, RopeImpulseJoint, SphericalImpulseJoint, SpringImpulseJoint } from '@dimforge/rapier3d-compat';
3
+ import { NgtrFixedJointParams, NgtrPrismaticJointParams, NgtrRevoluteJointParams, NgtrRopeJointParams, NgtrSphericalJointParams, NgtrSpringJointParams } from './types';
4
+ /**
5
+ * A fixed joint ensures that two rigid-bodies don't move relative to each other.
6
+ * Fixed joints are characterized by one local frame (represented by an isometry) on each rigid-body.
7
+ * The fixed-joint makes these frames coincide in world-space.
8
+ *
9
+ * @category Hooks - Joints
10
+ */
11
+ export declare const injectFixedJoint: (bodyA: RigidBody | ElementRef<RigidBody> | (() => ElementRef<RigidBody> | RigidBody | undefined | null), bodyB: RigidBody | ElementRef<RigidBody> | (() => ElementRef<RigidBody> | RigidBody | undefined | null), { injector, data }: {
12
+ injector?: Injector;
13
+ data: NgtrFixedJointParams;
14
+ }) => import("@angular/core").Signal<FixedImpulseJoint | null>;
15
+ /**
16
+ * The spherical joint ensures that two points on the local-spaces of two rigid-bodies always coincide (it prevents any relative
17
+ * translational motion at this points). This is typically used to simulate ragdolls arms, pendulums, etc.
18
+ * They are characterized by one local anchor on each rigid-body. Each anchor represents the location of the
19
+ * points that need to coincide on the local-space of each rigid-body.
20
+ *
21
+ * @category Hooks - Joints
22
+ */
23
+ export declare const injectSphericalJoint: (bodyA: RigidBody | ElementRef<RigidBody> | (() => ElementRef<RigidBody> | RigidBody | undefined | null), bodyB: RigidBody | ElementRef<RigidBody> | (() => ElementRef<RigidBody> | RigidBody | undefined | null), { injector, data }: {
24
+ injector?: Injector;
25
+ data: NgtrSphericalJointParams;
26
+ }) => import("@angular/core").Signal<SphericalImpulseJoint | null>;
27
+ /**
28
+ * The revolute joint prevents any relative movement between two rigid-bodies, except for relative
29
+ * rotations along one axis. This is typically used to simulate wheels, fans, etc.
30
+ * They are characterized by one local anchor as well as one local axis on each rigid-body.
31
+ *
32
+ * @category Hooks - Joints
33
+ */
34
+ export declare const injectRevoluteJoint: (bodyA: RigidBody | ElementRef<RigidBody> | (() => ElementRef<RigidBody> | RigidBody | undefined | null), bodyB: RigidBody | ElementRef<RigidBody> | (() => ElementRef<RigidBody> | RigidBody | undefined | null), { injector, data }: {
35
+ injector?: Injector;
36
+ data: NgtrRevoluteJointParams;
37
+ }) => import("@angular/core").Signal<RevoluteImpulseJoint | null>;
38
+ /**
39
+ * The prismatic joint prevents any relative movement between two rigid-bodies, except for relative translations along one axis.
40
+ * It is characterized by one local anchor as well as one local axis on each rigid-body. In 3D, an optional
41
+ * local tangent axis can be specified for each rigid-body.
42
+ *
43
+ * @category Hooks - Joints
44
+ */
45
+ export declare const injectPrismaticJoint: (bodyA: RigidBody | ElementRef<RigidBody> | (() => ElementRef<RigidBody> | RigidBody | undefined | null), bodyB: RigidBody | ElementRef<RigidBody> | (() => ElementRef<RigidBody> | RigidBody | undefined | null), { injector, data }: {
46
+ injector?: Injector;
47
+ data: NgtrPrismaticJointParams;
48
+ }) => import("@angular/core").Signal<PrismaticImpulseJoint | null>;
49
+ /**
50
+ * The rope joint limits the max distance between two bodies.
51
+ * @category Hooks - Joints
52
+ */
53
+ export declare const injectRopeJoint: (bodyA: RigidBody | ElementRef<RigidBody> | (() => ElementRef<RigidBody> | RigidBody | undefined | null), bodyB: RigidBody | ElementRef<RigidBody> | (() => ElementRef<RigidBody> | RigidBody | undefined | null), { injector, data }: {
54
+ injector?: Injector;
55
+ data: NgtrRopeJointParams;
56
+ }) => import("@angular/core").Signal<RopeImpulseJoint | null>;
57
+ /**
58
+ * The spring joint applies a force proportional to the distance between two objects.
59
+ * @category Hooks - Joints
60
+ */
61
+ export declare const injectSpringJoint: (bodyA: RigidBody | ElementRef<RigidBody> | (() => ElementRef<RigidBody> | RigidBody | undefined | null), bodyB: RigidBody | ElementRef<RigidBody> | (() => ElementRef<RigidBody> | RigidBody | undefined | null), { injector, data }: {
62
+ injector?: Injector;
63
+ data: NgtrSpringJointParams;
64
+ }) => import("@angular/core").Signal<SpringImpulseJoint | null>;
@@ -0,0 +1,23 @@
1
+ import { ElementRef } from '@angular/core';
2
+ import { Object3D } from 'three';
3
+ import { NgtrPhysics } from './physics';
4
+ import { NgtrRigidBody } from './rigid-body';
5
+ import { NgtrRigidBodyAutoCollider } from './types';
6
+ import * as i0 from "@angular/core";
7
+ export declare class NgtrMeshCollider {
8
+ colliders: import("@angular/core").InputSignal<NgtrRigidBodyAutoCollider>;
9
+ objectRef: ElementRef<Object3D<import("three").Object3DEventMap>>;
10
+ rigidBody: NgtrRigidBody;
11
+ physics: NgtrPhysics;
12
+ protected childColliderOptions: import("@angular/core").Signal<{
13
+ colliderOptions: import("./types").NgtrColliderOptions;
14
+ args: unknown[];
15
+ shape: import("./types").NgtrColliderShape;
16
+ rotation: import("angular-three").NgtEuler;
17
+ position: import("angular-three").NgtVector3;
18
+ scale: import("angular-three").NgtVector3;
19
+ }[]>;
20
+ constructor();
21
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgtrMeshCollider, never>;
22
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgtrMeshCollider, "ngt-object3D[ngtrMeshCollider]", never, { "colliders": { "alias": "ngtrMeshCollider"; "required": true; "isSignal": true; }; }, {}, never, ["*"], true, never>;
23
+ }
@@ -0,0 +1,50 @@
1
+ import RAPIER from '@dimforge/rapier3d-compat';
2
+ import { Vector3 } from 'three';
3
+ import { NgtrColliderStateMap, NgtrEventMap, NgtrPhysicsOptions, NgtrRigidBodyStateMap, NgtrWorldStepCallbackSet } from './types';
4
+ import * as i0 from "@angular/core";
5
+ export declare class NgtrPhysics {
6
+ options: import("@angular/core").InputSignalWithTransform<NgtrPhysicsOptions, "" | Partial<NgtrPhysicsOptions>>;
7
+ protected updatePriority: import("@angular/core").Signal<number | undefined>;
8
+ protected updateLoop: import("@angular/core").Signal<"follow" | "independent">;
9
+ private numSolverIterations;
10
+ private numAdditionalFrictionIterations;
11
+ private numInternalPgsIterations;
12
+ private allowedLinearError;
13
+ private minIslandSize;
14
+ private maxCcdSubsteps;
15
+ private predictionDistance;
16
+ private erp;
17
+ private lengthUnit;
18
+ private timeStep;
19
+ private interpolate;
20
+ paused: import("@angular/core").Signal<boolean>;
21
+ debug: import("@angular/core").Signal<boolean>;
22
+ colliders: import("@angular/core").Signal<import("./types").NgtrRigidBodyAutoCollider | undefined>;
23
+ gravity: import("@angular/core").Signal<Vector3>;
24
+ private store;
25
+ private destroyRef;
26
+ private rapierConstruct;
27
+ rapier: import("@angular/core").Signal<typeof RAPIER | null>;
28
+ ready: import("@angular/core").Signal<boolean>;
29
+ worldSingleton: import("@angular/core").Signal<{
30
+ proxy: RAPIER.World;
31
+ reset: () => void;
32
+ set: (newInstance: RAPIER.World) => void;
33
+ } | null>;
34
+ rigidBodyStates: NgtrRigidBodyStateMap;
35
+ colliderStates: NgtrColliderStateMap;
36
+ rigidBodyEvents: NgtrEventMap;
37
+ colliderEvents: NgtrEventMap;
38
+ beforeStepCallbacks: NgtrWorldStepCallbackSet;
39
+ afterStepCallbacks: NgtrWorldStepCallbackSet;
40
+ private eventQueue;
41
+ private steppingState;
42
+ constructor();
43
+ step(delta: number): void;
44
+ private updateWorldEffect;
45
+ private internalStep;
46
+ private getSourceFromColliderHandle;
47
+ private getCollisionPayloadFromSource;
48
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgtrPhysics, never>;
49
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgtrPhysics, "ngtr-physics", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
50
+ }
@@ -0,0 +1,104 @@
1
+ import { ElementRef } from '@angular/core';
2
+ import { RigidBody } from '@dimforge/rapier3d-compat';
3
+ import { NgtEuler, NgtQuaternion, NgtVector3 } from 'angular-three';
4
+ import { Object3D, Vector3 } from 'three';
5
+ import { NgtrColliderOptions, NgtrColliderShape, NgtrCollisionEnterPayload, NgtrCollisionExitPayload, NgtrContactForcePayload, NgtrIntersectionEnterPayload, NgtrIntersectionExitPayload, NgtrRigidBodyOptions, NgtrRigidBodyType } from './types';
6
+ import * as i0 from "@angular/core";
7
+ export declare class NgtrAnyCollider {
8
+ position: import("@angular/core").InputSignal<NgtVector3 | undefined>;
9
+ rotation: import("@angular/core").InputSignal<NgtEuler | undefined>;
10
+ scale: import("@angular/core").InputSignal<NgtVector3 | undefined>;
11
+ quaternion: import("@angular/core").InputSignal<NgtQuaternion | undefined>;
12
+ userData: import("@angular/core").InputSignal<Record<string, any> | undefined>;
13
+ name: import("@angular/core").InputSignal<string | undefined>;
14
+ options: import("@angular/core").InputSignalWithTransform<NgtrColliderOptions, "" | Partial<NgtrRigidBodyOptions>>;
15
+ shape: import("@angular/core").ModelSignal<NgtrColliderShape | undefined>;
16
+ args: import("@angular/core").ModelSignal<unknown[]>;
17
+ collisionEnter: import("@angular/core").OutputEmitterRef<NgtrCollisionEnterPayload>;
18
+ collisionExit: import("@angular/core").OutputEmitterRef<NgtrCollisionExitPayload>;
19
+ intersectionEnter: import("@angular/core").OutputEmitterRef<NgtrIntersectionEnterPayload>;
20
+ intersectionExit: import("@angular/core").OutputEmitterRef<NgtrIntersectionExitPayload>;
21
+ contactForce: import("@angular/core").OutputEmitterRef<NgtrContactForcePayload>;
22
+ private sensor;
23
+ private collisionGroups;
24
+ private solverGroups;
25
+ private friction;
26
+ private frictionCombineRule;
27
+ private restitution;
28
+ private restitutionCombineRule;
29
+ private activeCollisionTypes;
30
+ private contactSkin;
31
+ private mass;
32
+ private massProperties;
33
+ private density;
34
+ private rigidBody;
35
+ private physics;
36
+ objectRef: ElementRef<Object3D<import("three").Object3DEventMap>>;
37
+ private scaledArgs;
38
+ private collider;
39
+ constructor();
40
+ get worldScale(): Vector3;
41
+ setShape(shape: NgtrColliderShape): void;
42
+ setArgs(args: unknown[]): void;
43
+ private createColliderStateEffect;
44
+ private createColliderEventsEffect;
45
+ private updateColliderEffect;
46
+ private updateMassPropertiesEffect;
47
+ private createColliderState;
48
+ private scaleVertices;
49
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgtrAnyCollider, never>;
50
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NgtrAnyCollider, "ngt-object3D[ngtrCollider]", never, { "position": { "alias": "position"; "required": false; "isSignal": true; }; "rotation": { "alias": "rotation"; "required": false; "isSignal": true; }; "scale": { "alias": "scale"; "required": false; "isSignal": true; }; "quaternion": { "alias": "quaternion"; "required": false; "isSignal": true; }; "userData": { "alias": "userData"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "shape": { "alias": "ngtrCollider"; "required": false; "isSignal": true; }; "args": { "alias": "args"; "required": false; "isSignal": true; }; }, { "shape": "ngtrColliderChange"; "args": "argsChange"; "collisionEnter": "collisionEnter"; "collisionExit": "collisionExit"; "intersectionEnter": "intersectionEnter"; "intersectionExit": "intersectionExit"; "contactForce": "contactForce"; }, never, never, true, never>;
51
+ }
52
+ export declare const rigidBodyDefaultOptions: NgtrRigidBodyOptions;
53
+ export declare class NgtrRigidBody {
54
+ type: import("@angular/core").InputSignalWithTransform<NgtrRigidBodyType, "" | NgtrRigidBodyType | undefined>;
55
+ position: import("@angular/core").InputSignal<NgtVector3 | undefined>;
56
+ rotation: import("@angular/core").InputSignal<NgtEuler | undefined>;
57
+ scale: import("@angular/core").InputSignal<NgtVector3 | undefined>;
58
+ quaternion: import("@angular/core").InputSignal<NgtQuaternion | undefined>;
59
+ userData: import("@angular/core").InputSignal<Record<string, any> | undefined>;
60
+ options: import("@angular/core").InputSignalWithTransform<NgtrRigidBodyOptions, "" | Partial<NgtrRigidBodyOptions>>;
61
+ wake: import("@angular/core").OutputEmitterRef<void>;
62
+ sleep: import("@angular/core").OutputEmitterRef<void>;
63
+ collisionEnter: import("@angular/core").OutputEmitterRef<NgtrCollisionEnterPayload>;
64
+ collisionExit: import("@angular/core").OutputEmitterRef<NgtrCollisionExitPayload>;
65
+ intersectionEnter: import("@angular/core").OutputEmitterRef<NgtrIntersectionEnterPayload>;
66
+ intersectionExit: import("@angular/core").OutputEmitterRef<NgtrIntersectionExitPayload>;
67
+ contactForce: import("@angular/core").OutputEmitterRef<NgtrContactForcePayload>;
68
+ private canSleep;
69
+ private colliders;
70
+ private transformState;
71
+ private gravityScale;
72
+ private dominanceGroup;
73
+ private ccd;
74
+ private softCcdPrediction;
75
+ private additionalSolverIterations;
76
+ private linearDamping;
77
+ private angularDamping;
78
+ private lockRotations;
79
+ private lockTranslations;
80
+ private enabledRotations;
81
+ private enabledTranslations;
82
+ private angularVelocity;
83
+ private linearVelocity;
84
+ objectRef: ElementRef<Object3D<import("three").Object3DEventMap>>;
85
+ private physics;
86
+ private bodyType;
87
+ private bodyDesc;
88
+ rigidBody: import("@angular/core").Signal<RigidBody | null>;
89
+ protected childColliderOptions: import("@angular/core").Signal<{
90
+ colliderOptions: NgtrColliderOptions;
91
+ args: unknown[];
92
+ shape: NgtrColliderShape;
93
+ rotation: NgtEuler;
94
+ position: NgtVector3;
95
+ scale: NgtVector3;
96
+ }[]>;
97
+ constructor();
98
+ private createRigidBodyStateEffect;
99
+ private createRigidBodyEventsEffect;
100
+ private updateRigidBodyEffect;
101
+ private createRigidBodyState;
102
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgtrRigidBody, never>;
103
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgtrRigidBody, "ngt-object3D[ngtrRigidBody]", ["rigidBody"], { "type": { "alias": "ngtrRigidBody"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "rotation": { "alias": "rotation"; "required": false; "isSignal": true; }; "scale": { "alias": "scale"; "required": false; "isSignal": true; }; "quaternion": { "alias": "quaternion"; "required": false; "isSignal": true; }; "userData": { "alias": "userData"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; }, { "wake": "wake"; "sleep": "sleep"; "collisionEnter": "collisionEnter"; "collisionExit": "collisionExit"; "intersectionEnter": "intersectionEnter"; "intersectionExit": "intersectionExit"; "contactForce": "contactForce"; }, never, ["*"], true, never>;
104
+ }
@@ -0,0 +1,9 @@
1
+ import { Euler, Matrix4, Object3D, Quaternion, Vector3 } from 'three';
2
+ export declare const _quaternion: Quaternion;
3
+ export declare const _euler: Euler;
4
+ export declare const _vector3: Vector3;
5
+ export declare const _object3d: Object3D<import("three").Object3DEventMap>;
6
+ export declare const _matrix4: Matrix4;
7
+ export declare const _position: Vector3;
8
+ export declare const _rotation: Quaternion;
9
+ export declare const _scale: Vector3;