@react-three/rapier 0.6.8 → 0.7.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.
- package/dist/declarations/src/AnyCollider.d.ts +24 -11
- package/dist/declarations/src/InstancedRigidBodies.d.ts +2 -2
- package/dist/declarations/src/MeshCollider.d.ts +1 -1
- package/dist/declarations/src/Physics.d.ts +40 -26
- package/dist/declarations/src/RigidBody.d.ts +2 -5
- package/dist/declarations/src/bitmasks.d.ts +34 -0
- package/dist/declarations/src/hooks.d.ts +3 -1
- package/dist/declarations/src/index.d.ts +4 -0
- package/dist/declarations/src/shared-objects.d.ts +3 -0
- package/dist/declarations/src/types.d.ts +81 -18
- package/dist/declarations/src/utils-collider.d.ts +36 -0
- package/dist/declarations/src/utils-rigidbody.d.ts +20 -0
- package/dist/declarations/src/utils.d.ts +5 -46
- package/dist/react-three-rapier.cjs.dev.js +824 -657
- package/dist/react-three-rapier.cjs.prod.js +824 -657
- package/dist/react-three-rapier.esm.js +824 -660
- package/package.json +4 -4
- package/readme.md +80 -10
@@ -1,16 +1,29 @@
|
|
1
|
-
import { ReactNode } from "react";
|
1
|
+
import React, { ReactNode } from "react";
|
2
2
|
import { UseColliderOptions, CuboidArgs, RoundCuboidArgs, BallArgs, CapsuleArgs, HeightfieldArgs, TrimeshArgs, ConeArgs, CylinderArgs, ConvexHullArgs } from "./types";
|
3
|
-
|
3
|
+
export interface ColliderProps extends UseColliderOptions<any> {
|
4
|
+
children?: ReactNode;
|
5
|
+
}
|
6
|
+
export declare const AnyCollider: React.MemoExoticComponent<(props: ColliderProps) => JSX.Element>;
|
7
|
+
declare type UseColliderOptionsRequiredArgs<T extends unknown[]> = Omit<UseColliderOptions<T>, "args"> & {
|
4
8
|
args: T;
|
5
9
|
children?: ReactNode;
|
6
10
|
};
|
7
|
-
export declare
|
8
|
-
export declare
|
9
|
-
export declare
|
10
|
-
export declare
|
11
|
-
export declare
|
12
|
-
export declare
|
13
|
-
export declare
|
14
|
-
export declare
|
15
|
-
export declare
|
11
|
+
export declare type CuboidColliderProps = UseColliderOptionsRequiredArgs<CuboidArgs>;
|
12
|
+
export declare type RoundCuboidColliderProps = UseColliderOptionsRequiredArgs<RoundCuboidArgs>;
|
13
|
+
export declare type BallColliderProps = UseColliderOptionsRequiredArgs<BallArgs>;
|
14
|
+
export declare type CapsuleColliderProps = UseColliderOptionsRequiredArgs<CapsuleArgs>;
|
15
|
+
export declare type HeightfieldColliderProps = UseColliderOptionsRequiredArgs<HeightfieldArgs>;
|
16
|
+
export declare type TrimeshColliderProps = UseColliderOptionsRequiredArgs<TrimeshArgs>;
|
17
|
+
export declare type ConeColliderProps = UseColliderOptionsRequiredArgs<ConeArgs>;
|
18
|
+
export declare type CylinderColliderProps = UseColliderOptionsRequiredArgs<CylinderArgs>;
|
19
|
+
export declare type ConvexHullColliderProps = UseColliderOptionsRequiredArgs<ConvexHullArgs>;
|
20
|
+
export declare const CuboidCollider: (props: CuboidColliderProps) => JSX.Element;
|
21
|
+
export declare const RoundCuboidCollider: (props: RoundCuboidColliderProps) => JSX.Element;
|
22
|
+
export declare const BallCollider: (props: BallColliderProps) => JSX.Element;
|
23
|
+
export declare const CapsuleCollider: (props: CapsuleColliderProps) => JSX.Element;
|
24
|
+
export declare const HeightfieldCollider: (props: HeightfieldColliderProps) => JSX.Element;
|
25
|
+
export declare const TrimeshCollider: (props: TrimeshColliderProps) => JSX.Element;
|
26
|
+
export declare const ConeCollider: (props: ConeColliderProps) => JSX.Element;
|
27
|
+
export declare const CylinderCollider: (props: CylinderColliderProps) => JSX.Element;
|
28
|
+
export declare const ConvexHullCollider: (props: ConvexHullColliderProps) => JSX.Element;
|
16
29
|
export {};
|
@@ -2,9 +2,9 @@ import React from "react";
|
|
2
2
|
import { InstancedRigidBodyApi } from "./api";
|
3
3
|
import { RigidBodyProps } from "./RigidBody";
|
4
4
|
import { Vector3Array } from "./types";
|
5
|
-
export interface InstancedRigidBodiesProps extends Omit<RigidBodyProps, "position" | "rotation"
|
5
|
+
export interface InstancedRigidBodiesProps extends Omit<RigidBodyProps, "position" | "rotation"> {
|
6
6
|
positions?: Vector3Array[];
|
7
7
|
rotations?: Vector3Array[];
|
8
8
|
scales?: Vector3Array[];
|
9
9
|
}
|
10
|
-
export declare const InstancedRigidBodies: React.ForwardRefExoticComponent<
|
10
|
+
export declare const InstancedRigidBodies: React.ForwardRefExoticComponent<InstancedRigidBodiesProps & React.RefAttributes<InstancedRigidBodyApi>>;
|
@@ -4,5 +4,5 @@ interface MeshColliderProps {
|
|
4
4
|
children: ReactNode;
|
5
5
|
type: RigidBodyAutoCollider;
|
6
6
|
}
|
7
|
-
export declare const MeshCollider: (
|
7
|
+
export declare const MeshCollider: (props: MeshColliderProps) => JSX.Element;
|
8
8
|
export {};
|
@@ -1,37 +1,51 @@
|
|
1
1
|
import React, { FC, ReactNode } from "react";
|
2
2
|
import type Rapier from "@dimforge/rapier3d-compat";
|
3
|
-
import { RigidBodyAutoCollider, Vector3Array, WorldApi } from "./types";
|
4
|
-
import { ColliderHandle, RigidBody, RigidBodyHandle
|
3
|
+
import { CollisionEnterHandler, CollisionExitHandler, IntersectionEnterHandler, IntersectionExitHandler, RigidBodyAutoCollider, Vector3Array, WorldApi } from "./types";
|
4
|
+
import { Collider, ColliderHandle, RigidBody, RigidBodyHandle } from "@dimforge/rapier3d-compat";
|
5
5
|
import { Matrix4, Object3D, Vector3 } from "three";
|
6
|
+
export interface RigidBodyState {
|
7
|
+
rigidBody: RigidBody;
|
8
|
+
object: Object3D;
|
9
|
+
invertedWorldMatrix: Matrix4;
|
10
|
+
setMatrix: (matrix: Matrix4) => void;
|
11
|
+
getMatrix: (matrix: Matrix4) => Matrix4;
|
12
|
+
/**
|
13
|
+
* Required for instanced rigid bodies.
|
14
|
+
*/
|
15
|
+
scale: Vector3;
|
16
|
+
isSleeping: boolean;
|
17
|
+
}
|
18
|
+
export declare type RigidBodyStateMap = Map<RigidBody['handle'], RigidBodyState>;
|
19
|
+
export interface ColliderState {
|
20
|
+
collider: Collider;
|
21
|
+
object: Object3D;
|
22
|
+
/**
|
23
|
+
* The parent of which this collider needs to base its
|
24
|
+
* world position on
|
25
|
+
*/
|
26
|
+
worldParent: Object3D;
|
27
|
+
}
|
28
|
+
export declare type ColliderStateMap = Map<Collider['handle'], ColliderState>;
|
6
29
|
export interface RapierContext {
|
7
30
|
rapier: typeof Rapier;
|
8
31
|
world: WorldApi;
|
9
|
-
rigidBodyStates:
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
getMatrix(): Matrix4;
|
14
|
-
worldScale: Vector3;
|
15
|
-
invertedMatrixWorld: Matrix4;
|
16
|
-
}>;
|
32
|
+
rigidBodyStates: RigidBodyStateMap;
|
33
|
+
colliderStates: ColliderStateMap;
|
34
|
+
rigidBodyEvents: EventMap;
|
35
|
+
colliderEvents: EventMap;
|
17
36
|
physicsOptions: {
|
18
37
|
colliders: RigidBodyAutoCollider;
|
19
38
|
};
|
20
|
-
rigidBodyEvents: EventMap;
|
21
39
|
isPaused: boolean;
|
22
40
|
}
|
23
41
|
export declare const RapierContext: React.Context<RapierContext | undefined>;
|
24
|
-
declare type EventMap = Map<ColliderHandle | RigidBodyHandle, {
|
42
|
+
export declare type EventMap = Map<ColliderHandle | RigidBodyHandle, {
|
25
43
|
onSleep?(): void;
|
26
44
|
onWake?(): void;
|
27
|
-
onCollisionEnter
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
}): void;
|
32
|
-
onCollisionExit?({ target }: {
|
33
|
-
target: RigidBody;
|
34
|
-
}): void;
|
45
|
+
onCollisionEnter?: CollisionEnterHandler;
|
46
|
+
onCollisionExit?: CollisionExitHandler;
|
47
|
+
onIntersectionEnter?: IntersectionEnterHandler;
|
48
|
+
onIntersectionExit?: IntersectionExitHandler;
|
35
49
|
}>;
|
36
50
|
interface RapierWorldProps {
|
37
51
|
children: ReactNode;
|
@@ -54,18 +68,18 @@ interface RapierWorldProps {
|
|
54
68
|
* @defaultValue 1/60
|
55
69
|
*/
|
56
70
|
timeStep?: number;
|
57
|
-
/**
|
58
|
-
* Maximum number of fixed steps to take per function call.
|
59
|
-
*
|
60
|
-
* @defaultValue 10
|
61
|
-
*/
|
62
|
-
maxSubSteps?: number;
|
63
71
|
/**
|
64
72
|
* Pause the physics simulation
|
65
73
|
*
|
66
74
|
* @defaultValue false
|
67
75
|
*/
|
68
76
|
paused?: boolean;
|
77
|
+
/**
|
78
|
+
* The update priority at which the physics simulation should run.
|
79
|
+
*
|
80
|
+
* @defaultValue undefined
|
81
|
+
*/
|
82
|
+
updatePriority?: number;
|
69
83
|
}
|
70
84
|
export declare const Physics: FC<RapierWorldProps>;
|
71
85
|
export {};
|
@@ -1,23 +1,20 @@
|
|
1
1
|
import React, { MutableRefObject, RefObject } from "react";
|
2
2
|
import { ReactNode } from "react";
|
3
3
|
import { Object3D } from "three";
|
4
|
-
import { Object3DProps } from "@react-three/fiber";
|
5
4
|
import { InstancedRigidBodyApi } from "./api";
|
6
5
|
import { InstancedRigidBodiesProps } from "./InstancedRigidBodies";
|
7
6
|
import { RigidBodyApi, UseRigidBodyOptions } from "./types";
|
8
7
|
export declare const RigidBodyContext: React.Context<{
|
9
8
|
ref: RefObject<Object3D> | MutableRefObject<Object3D>;
|
10
9
|
api: RigidBodyApi | InstancedRigidBodyApi;
|
11
|
-
hasCollisionEvents: boolean;
|
12
10
|
options: UseRigidBodyOptions | InstancedRigidBodiesProps;
|
13
11
|
}>;
|
14
12
|
export declare const useRigidBodyContext: () => {
|
15
13
|
ref: RefObject<Object3D> | MutableRefObject<Object3D>;
|
16
14
|
api: RigidBodyApi | InstancedRigidBodyApi;
|
17
|
-
hasCollisionEvents: boolean;
|
18
15
|
options: UseRigidBodyOptions | InstancedRigidBodiesProps;
|
19
16
|
};
|
20
|
-
export interface RigidBodyProps extends UseRigidBodyOptions
|
17
|
+
export interface RigidBodyProps extends UseRigidBodyOptions {
|
21
18
|
children?: ReactNode;
|
22
19
|
}
|
23
|
-
export declare const RigidBody: React.ForwardRefExoticComponent<
|
20
|
+
export declare const RigidBody: React.ForwardRefExoticComponent<RigidBodyProps & React.RefAttributes<import("./api").RigidBodyApi>>;
|
@@ -0,0 +1,34 @@
|
|
1
|
+
import { InteractionGroups } from "@dimforge/rapier3d-compat";
|
2
|
+
/**
|
3
|
+
* Calculates an InteractionGroup bitmask for use in the `collisionGroups` or `solverGroups`
|
4
|
+
* properties of RigidBody or Collider components. The first argument represents a list of
|
5
|
+
* groups the entity is in (expressed as numbers from 0 to 15). The second argument is a list
|
6
|
+
* of groups that will be filtered against. When it is omitted, all groups are filtered against.
|
7
|
+
*
|
8
|
+
* @example
|
9
|
+
* A RigidBody that is member of group 0 and will collide with everything from groups 0 and 1:
|
10
|
+
*
|
11
|
+
* ```tsx
|
12
|
+
* <RigidBody collisionGroups={interactionGroups([0], [0, 1])} />
|
13
|
+
* ```
|
14
|
+
*
|
15
|
+
* A RigidBody that is member of groups 0 and 1 and will collide with everything else:
|
16
|
+
*
|
17
|
+
* ```tsx
|
18
|
+
* <RigidBody collisionGroups={interactionGroups([0, 1])} />
|
19
|
+
* ```
|
20
|
+
*
|
21
|
+
* A RigidBody that is member of groups 0 and 1 and will not collide with anything:
|
22
|
+
*
|
23
|
+
* ```tsx
|
24
|
+
* <RigidBody collisionGroups={interactionGroups([0, 1], [])} />
|
25
|
+
* ```
|
26
|
+
*
|
27
|
+
* Please note that Rapier needs interaction filters to evaluate to true between _both_ colliding
|
28
|
+
* entities for collision events to trigger.
|
29
|
+
*
|
30
|
+
* @param memberships Groups the collider is a member of. (Values can range from 0 to 15.)
|
31
|
+
* @param filters Groups the interaction group should filter against. (Values can range from 0 to 15.)
|
32
|
+
* @returns An InteractionGroup bitmask.
|
33
|
+
*/
|
34
|
+
export declare const interactionGroups: (memberships: number | number[], filters?: number | number[] | undefined) => InteractionGroups;
|
@@ -4,7 +4,9 @@ import { Object3D } from "three";
|
|
4
4
|
import type Rapier from "@dimforge/rapier3d-compat";
|
5
5
|
export declare const useRapier: () => RapierContext;
|
6
6
|
import { UseRigidBodyOptions, UseImpulseJoint, SphericalJointParams, FixedJointParams, PrismaticJointParams, RevoluteJointParams, RigidBodyApi, RigidBodyApiRef } from "./types";
|
7
|
-
|
7
|
+
import { ColliderProps, RigidBodyProps } from ".";
|
8
|
+
export declare const useChildColliderProps: <O extends Object3D<import("three").Event>>(ref: React.MutableRefObject<O | null | undefined>, options: RigidBodyProps, ignoreMeshColliders?: boolean) => ColliderProps[];
|
9
|
+
export declare const useRigidBody: <O extends Object3D<import("three").Event>>(options?: UseRigidBodyOptions) => [React.MutableRefObject<O>, import("./api").RigidBodyApi, ColliderProps[]];
|
8
10
|
export declare const useImpulseJoint: <T extends Rapier.ImpulseJoint>(body1: RigidBodyApiRef, body2: RigidBodyApiRef, params: Rapier.JointData) => {
|
9
11
|
raw: () => Rapier.ImpulseJoint | undefined;
|
10
12
|
readonly handle: number;
|
@@ -1,5 +1,8 @@
|
|
1
1
|
export * from "./types";
|
2
2
|
export type { RigidBodyApi, WorldApi, InstancedRigidBodyApi } from "./api";
|
3
|
+
export type { RigidBodyProps } from './RigidBody';
|
4
|
+
export type { InstancedRigidBodiesProps } from './InstancedRigidBodies';
|
5
|
+
export type { CylinderColliderProps, BallColliderProps, CapsuleColliderProps, ConeColliderProps, ConvexHullColliderProps, CuboidColliderProps, HeightfieldColliderProps, RoundCuboidColliderProps, TrimeshColliderProps } from './AnyCollider';
|
3
6
|
export { Physics } from "./Physics";
|
4
7
|
export { RigidBody } from "./RigidBody";
|
5
8
|
export { MeshCollider } from "./MeshCollider";
|
@@ -7,3 +10,4 @@ export { Debug } from "./Debug";
|
|
7
10
|
export { InstancedRigidBodies } from "./InstancedRigidBodies";
|
8
11
|
export * from "./AnyCollider";
|
9
12
|
export * from "./hooks";
|
13
|
+
export * from "./bitmasks";
|
@@ -4,3 +4,6 @@ export declare const _euler: Euler;
|
|
4
4
|
export declare const _vector3: Vector3;
|
5
5
|
export declare const _object3d: Object3D<import("three").Event>;
|
6
6
|
export declare const _matrix4: Matrix4;
|
7
|
+
export declare const _position: Vector3;
|
8
|
+
export declare const _rotation: Quaternion;
|
9
|
+
export declare const _scale: Vector3;
|
@@ -1,6 +1,9 @@
|
|
1
1
|
import { MutableRefObject } from "react";
|
2
|
-
import { CoefficientCombineRule, Collider as RapierCollider, RigidBody as RapierRigidBody, TempContactManifold } from "@dimforge/rapier3d-compat";
|
2
|
+
import { CoefficientCombineRule, Collider as RapierCollider, InteractionGroups, RigidBody as RapierRigidBody, TempContactManifold } from "@dimforge/rapier3d-compat";
|
3
3
|
import { createColliderApi, createJointApi, createRigidBodyApi, createWorldApi } from "./api";
|
4
|
+
import { ColliderProps } from ".";
|
5
|
+
import { Object3DProps } from "@react-three/fiber";
|
6
|
+
import { Object3D } from "three";
|
4
7
|
export { CoefficientCombineRule as CoefficientCombineRule } from "@dimforge/rapier3d-compat";
|
5
8
|
export { RapierRigidBody, RapierCollider };
|
6
9
|
export declare type RefGetter<T> = MutableRefObject<() => T | undefined>;
|
@@ -66,20 +69,20 @@ export declare type RoundConvexMeshArgs = [
|
|
66
69
|
];
|
67
70
|
export declare type UseBodyOptions = Omit<UseRigidBodyOptions, "shape">;
|
68
71
|
export declare type RigidBodyTypeString = "fixed" | "dynamic" | "kinematicPosition" | "kinematicVelocity";
|
69
|
-
export declare type
|
72
|
+
export declare type ColliderShape = "cuboid" | "trimesh" | "ball" | "capsule" | "convexHull" | "heightfield" | "polyline" | "roundCuboid" | "cylinder" | "roundCylinder" | "cone" | "roundCone" | "convexMesh" | "roundConvexHull" | "roundConvexMesh";
|
70
73
|
export declare type Vector3Array = [x: number, y: number, z: number];
|
71
74
|
export declare type Boolean3Array = [x: boolean, y: boolean, z: boolean];
|
72
|
-
export interface UseColliderOptions<ColliderArgs
|
75
|
+
export interface UseColliderOptions<ColliderArgs extends Array<unknown>> {
|
73
76
|
/**
|
74
77
|
* The shape of your collider
|
75
78
|
*/
|
76
|
-
shape?:
|
79
|
+
shape?: ColliderShape;
|
77
80
|
/**
|
78
81
|
* Arguments to pass to the collider
|
79
82
|
*/
|
80
83
|
args?: ColliderArgs;
|
81
84
|
/**
|
82
|
-
* The mass of this
|
85
|
+
* The mass of this collider.
|
83
86
|
* The mass and density is automatically calculated based on the shape of the collider.
|
84
87
|
* Generally, it's not recommended to adjust the mass properties as it could lead to
|
85
88
|
* unexpected behaviors.
|
@@ -120,8 +123,68 @@ export interface UseColliderOptions<ColliderArgs> {
|
|
120
123
|
* The rotation of this collider relative to the rigid body
|
121
124
|
*/
|
122
125
|
rotation?: Vector3Array;
|
126
|
+
/**
|
127
|
+
* The rotation, as a Quaternion, of this collider relative to the rigid body
|
128
|
+
*/
|
129
|
+
quaternion?: Object3DProps['quaternion'];
|
130
|
+
/**
|
131
|
+
* The scale of this collider relative to the rigid body
|
132
|
+
*/
|
133
|
+
scale?: Object3DProps['scale'];
|
134
|
+
/**
|
135
|
+
* Callback when this collider collides with another collider.
|
136
|
+
*/
|
137
|
+
onCollisionEnter?: CollisionEnterHandler;
|
138
|
+
/**
|
139
|
+
* Callback when this collider stops colliding with another collider.
|
140
|
+
*/
|
141
|
+
onCollisionExit?: CollisionExitHandler;
|
142
|
+
/**
|
143
|
+
* Callback when this collider, or another collider starts intersecting, and at least one of them is a `sensor`.
|
144
|
+
*/
|
145
|
+
onIntersectionEnter?: IntersectionEnterHandler;
|
146
|
+
/**
|
147
|
+
* Callback when this, or another collider stops intersecting, and at least one of them is a `sensor`.
|
148
|
+
*/
|
149
|
+
onIntersectionExit?: IntersectionExitHandler;
|
150
|
+
/**
|
151
|
+
* The bit mask configuring the groups and mask for collision handling.
|
152
|
+
*/
|
153
|
+
collisionGroups?: InteractionGroups;
|
154
|
+
/**
|
155
|
+
* The bit mask configuring the groups and mask for solver handling.
|
156
|
+
*/
|
157
|
+
solverGroups?: InteractionGroups;
|
158
|
+
/**
|
159
|
+
* Sets the uniform density of this collider.
|
160
|
+
*/
|
161
|
+
density?: number;
|
162
|
+
/**
|
163
|
+
* Sets whether or not this collider is a sensor.
|
164
|
+
*/
|
165
|
+
sensor?: boolean;
|
123
166
|
}
|
124
|
-
export
|
167
|
+
export declare type CollisionEnterPayload = {
|
168
|
+
rigidBody?: RapierRigidBody;
|
169
|
+
collider: RapierCollider;
|
170
|
+
manifold: TempContactManifold;
|
171
|
+
flipped: boolean;
|
172
|
+
rigidBodyObject?: Object3D;
|
173
|
+
colliderObject?: Object3D;
|
174
|
+
};
|
175
|
+
export declare type CollisionExitPayload = {
|
176
|
+
rigidBody?: RapierRigidBody;
|
177
|
+
collider: RapierCollider;
|
178
|
+
rigidBodyObject?: Object3D;
|
179
|
+
colliderObject?: Object3D;
|
180
|
+
};
|
181
|
+
export declare type IntersectionEnterPayload = CollisionExitPayload;
|
182
|
+
export declare type IntersectionExitPayload = CollisionExitPayload;
|
183
|
+
export declare type CollisionEnterHandler = (payload: CollisionEnterPayload) => void;
|
184
|
+
export declare type CollisionExitHandler = (payload: CollisionExitPayload) => void;
|
185
|
+
export declare type IntersectionEnterHandler = (payload: IntersectionEnterPayload) => void;
|
186
|
+
export declare type IntersectionExitHandler = (payload: IntersectionExitPayload) => void;
|
187
|
+
export interface UseRigidBodyOptions extends ColliderProps {
|
125
188
|
/**
|
126
189
|
* Specify the type of this rigid body
|
127
190
|
*/
|
@@ -134,11 +197,11 @@ export interface UseRigidBodyOptions {
|
|
134
197
|
linearDamping?: number;
|
135
198
|
/** The angular damping coefficient of this rigid-body.*/
|
136
199
|
angularDamping?: number;
|
137
|
-
/** The linear velocity of this body.
|
200
|
+
/** The initial linear velocity of this body.
|
138
201
|
* default: zero velocity
|
139
202
|
*/
|
140
203
|
linearVelocity?: Vector3Array;
|
141
|
-
/** The angular velocity of this body.
|
204
|
+
/** The initial angular velocity of this body.
|
142
205
|
* Default: zero velocity.
|
143
206
|
*/
|
144
207
|
angularVelocity?: Vector3Array;
|
@@ -182,19 +245,15 @@ export interface UseRigidBodyOptions {
|
|
182
245
|
*/
|
183
246
|
restitution?: number;
|
184
247
|
/**
|
185
|
-
*
|
248
|
+
* The default collision groups bitmask for all colliders in this rigid body.
|
249
|
+
* Can be customized per-collider.
|
186
250
|
*/
|
187
|
-
|
188
|
-
target: RapierRigidBody;
|
189
|
-
manifold: TempContactManifold;
|
190
|
-
flipped: boolean;
|
191
|
-
}): void;
|
251
|
+
collisionGroups?: InteractionGroups;
|
192
252
|
/**
|
193
|
-
|
253
|
+
* The default solver groups bitmask for all colliders in this rigid body.
|
254
|
+
* Can be customized per-collider.
|
194
255
|
*/
|
195
|
-
|
196
|
-
target: RapierRigidBody;
|
197
|
-
}): void;
|
256
|
+
solverGroups?: InteractionGroups;
|
198
257
|
onSleep?(): void;
|
199
258
|
onWake?(): void;
|
200
259
|
/**
|
@@ -213,6 +272,10 @@ export interface UseRigidBodyOptions {
|
|
213
272
|
* Allow rotation of this rigid-body only along specific axes.
|
214
273
|
*/
|
215
274
|
enabledTranslations?: Boolean3Array;
|
275
|
+
/**
|
276
|
+
* Passed down to the object3d representing this collider.
|
277
|
+
*/
|
278
|
+
userData?: Object3DProps['userData'];
|
216
279
|
}
|
217
280
|
export declare type SphericalJointParams = [
|
218
281
|
body1Anchor: Vector3Array,
|
@@ -0,0 +1,36 @@
|
|
1
|
+
import { Collider, RigidBody } from "@dimforge/rapier3d-compat";
|
2
|
+
import { MutableRefObject } from "react";
|
3
|
+
import { Vector3, Object3D, BufferGeometry } from "three";
|
4
|
+
import { ColliderProps, RigidBodyProps } from ".";
|
5
|
+
import { WorldApi } from "./api";
|
6
|
+
import { ColliderState, ColliderStateMap, EventMap } from "./Physics";
|
7
|
+
import { ColliderShape, RigidBodyAutoCollider } from "./types";
|
8
|
+
export declare const scaleColliderArgs: (shape: ColliderShape, args: (number | ArrayLike<number> | {
|
9
|
+
x: number;
|
10
|
+
y: number;
|
11
|
+
z: number;
|
12
|
+
})[], scale: Vector3) => (number | ArrayLike<number> | {
|
13
|
+
x: number;
|
14
|
+
y: number;
|
15
|
+
z: number;
|
16
|
+
})[];
|
17
|
+
export declare const createColliderFromOptions: (options: ColliderProps, world: WorldApi, scale: Vector3, rigidBody?: RigidBody | undefined) => Collider;
|
18
|
+
declare type ImmutableColliderOptions = (keyof ColliderProps)[];
|
19
|
+
export declare const immutableColliderOptions: ImmutableColliderOptions;
|
20
|
+
export declare const setColliderOptions: (collider: Collider, options: ColliderProps, states: ColliderStateMap) => void;
|
21
|
+
export declare const useUpdateColliderOptions: (collidersRef: MutableRefObject<Collider[]>, props: ColliderProps, states: ColliderStateMap) => void;
|
22
|
+
export declare const createColliderState: (collider: Collider, object: Object3D, rigidBodyObject?: Object3D<import("three").Event> | null | undefined) => ColliderState;
|
23
|
+
interface CreateColliderPropsFromChildren {
|
24
|
+
(options: {
|
25
|
+
object: Object3D;
|
26
|
+
ignoreMeshColliders: boolean;
|
27
|
+
options: RigidBodyProps;
|
28
|
+
}): ColliderProps[];
|
29
|
+
}
|
30
|
+
export declare const createColliderPropsFromChildren: CreateColliderPropsFromChildren;
|
31
|
+
export declare const getColliderArgsFromGeometry: (geometry: BufferGeometry, colliders: RigidBodyAutoCollider) => {
|
32
|
+
args: unknown[];
|
33
|
+
offset: Vector3;
|
34
|
+
};
|
35
|
+
export declare const useColliderEvents: (collidersRef: MutableRefObject<Collider[] | undefined>, props: ColliderProps, events: EventMap) => void;
|
36
|
+
export {};
|
@@ -0,0 +1,20 @@
|
|
1
|
+
import { RigidBody, RigidBodyDesc } from "@dimforge/rapier3d-compat";
|
2
|
+
import { MutableRefObject } from "react";
|
3
|
+
import { Matrix4, Object3D, Vector3 } from "three";
|
4
|
+
import { RigidBodyProps } from ".";
|
5
|
+
import { EventMap, RigidBodyState, RigidBodyStateMap } from "./Physics";
|
6
|
+
export declare const rigidBodyDescFromOptions: (options: RigidBodyProps) => RigidBodyDesc;
|
7
|
+
interface CreateRigidBodyStateOptions {
|
8
|
+
object: Object3D;
|
9
|
+
rigidBody: RigidBody;
|
10
|
+
setMatrix?: (matrix: Matrix4) => void;
|
11
|
+
getMatrix?: (matrix: Matrix4) => Matrix4;
|
12
|
+
worldScale?: Vector3;
|
13
|
+
}
|
14
|
+
export declare const createRigidBodyState: ({ rigidBody, object, setMatrix, getMatrix, worldScale }: CreateRigidBodyStateOptions) => RigidBodyState;
|
15
|
+
declare type ImmutableRigidBodyOptions = (keyof RigidBodyProps)[];
|
16
|
+
export declare const immutableRigidBodyOptions: ImmutableRigidBodyOptions;
|
17
|
+
export declare const setRigidBodyOptions: (rigidBody: RigidBody, options: RigidBodyProps, states: RigidBodyStateMap) => void;
|
18
|
+
export declare const useUpdateRigidBodyOptions: (rigidBodyRef: MutableRefObject<RigidBody | undefined>, props: RigidBodyProps, states: RigidBodyStateMap) => void;
|
19
|
+
export declare const useRigidBodyEvents: (rigidBodyRef: MutableRefObject<RigidBody | undefined>, props: RigidBodyProps, events: EventMap) => void;
|
20
|
+
export {};
|
@@ -1,50 +1,9 @@
|
|
1
|
-
import {
|
2
|
-
import {
|
3
|
-
import {
|
1
|
+
import { Quaternion as RapierQuaternion, Vector3 as RapierVector3 } from "@dimforge/rapier3d-compat";
|
2
|
+
import { Vector3 } from "three";
|
3
|
+
import { RigidBodyTypeString, Vector3Array } from "./types";
|
4
4
|
export declare const vectorArrayToVector3: (arr: Vector3Array) => Vector3;
|
5
|
-
export declare const vector3ToQuaternion: (v: Vector3) => Quaternion;
|
5
|
+
export declare const vector3ToQuaternion: (v: Vector3) => import("three").Quaternion;
|
6
6
|
export declare const rapierVector3ToVector3: ({ x, y, z }: RapierVector3) => Vector3;
|
7
|
-
export declare const rapierQuaternionToQuaternion: ({ x, y, z, w
|
7
|
+
export declare const rapierQuaternionToQuaternion: ({ x, y, z, w }: RapierQuaternion) => import("three").Quaternion;
|
8
8
|
export declare const rigidBodyTypeFromString: (type: RigidBodyTypeString) => number;
|
9
|
-
export declare const decomposeMatrix4: (m: Matrix4) => {
|
10
|
-
position: Vector3;
|
11
|
-
rotation: Quaternion;
|
12
|
-
scale: Vector3;
|
13
|
-
};
|
14
|
-
export declare const scaleColliderArgs: (shape: RigidBodyShape, args: (number | ArrayLike<number> | {
|
15
|
-
x: number;
|
16
|
-
y: number;
|
17
|
-
z: number;
|
18
|
-
})[], scale: Vector3) => (number | ArrayLike<number> | {
|
19
|
-
x: number;
|
20
|
-
y: number;
|
21
|
-
z: number;
|
22
|
-
})[];
|
23
|
-
interface CreateColliderFromOptions {
|
24
|
-
<ColliderArgs>(options: {
|
25
|
-
options: UseColliderOptions<ColliderArgs>;
|
26
|
-
world: WorldApi;
|
27
|
-
rigidBody?: RigidBody;
|
28
|
-
scale: {
|
29
|
-
x: number;
|
30
|
-
y: number;
|
31
|
-
z: number;
|
32
|
-
};
|
33
|
-
hasCollisionEvents: boolean;
|
34
|
-
}): Collider;
|
35
|
-
}
|
36
|
-
export declare const createColliderFromOptions: CreateColliderFromOptions;
|
37
|
-
interface CreateCollidersFromChildren {
|
38
|
-
(options: {
|
39
|
-
object: Object3D;
|
40
|
-
rigidBody?: Pick<RigidBodyApi | RigidBody, "handle">;
|
41
|
-
options: UseRigidBodyOptions;
|
42
|
-
world: WorldApi;
|
43
|
-
ignoreMeshColliders: boolean;
|
44
|
-
}): Collider[];
|
45
|
-
}
|
46
|
-
export declare const createCollidersFromChildren: CreateCollidersFromChildren;
|
47
|
-
export declare const colliderDescFromGeometry: (geometry: BufferGeometry, colliders: RigidBodyAutoCollider, scale: Vector3, hasCollisionEvents: boolean) => ColliderDesc;
|
48
9
|
export declare const scaleVertices: (vertices: ArrayLike<number>, scale: Vector3) => number[];
|
49
|
-
export declare const rigidBodyDescFromOptions: (options: UseRigidBodyOptions) => RigidBodyDesc;
|
50
|
-
export {};
|