@react-three/rapier 0.5.1 → 0.6.1
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/{components.d.ts → AnyCollider.d.ts} +1 -11
- package/dist/declarations/src/InstancedRigidBodies.d.ts +10 -0
- package/dist/declarations/src/MeshCollider.d.ts +8 -0
- package/dist/declarations/src/Physics.d.ts +10 -4
- package/dist/declarations/src/RigidBody.d.ts +14 -0
- package/dist/declarations/src/api.d.ts +9 -0
- package/dist/declarations/src/hooks.d.ts +1 -5
- package/dist/declarations/src/index.d.ts +7 -3
- package/dist/declarations/src/shared-objects.d.ts +6 -0
- package/dist/declarations/src/types.d.ts +4 -4
- package/dist/declarations/src/utils.d.ts +29 -10
- package/dist/react-three-rapier.cjs.dev.js +419 -289
- package/dist/react-three-rapier.cjs.prod.js +419 -289
- package/dist/react-three-rapier.esm.js +421 -291
- package/package.json +1 -1
- package/readme.md +64 -12
- package/CHANGELOG.md +0 -93
@@ -1,15 +1,5 @@
|
|
1
|
-
import React from "react";
|
2
1
|
import { ReactNode } from "react";
|
3
|
-
import {
|
4
|
-
interface RigidBodyProps extends UseRigidBodyOptions {
|
5
|
-
children?: ReactNode;
|
6
|
-
}
|
7
|
-
export declare const RigidBody: React.ForwardRefExoticComponent<RigidBodyProps & React.RefAttributes<import("./api").RigidBodyApi>>;
|
8
|
-
interface MeshColliderProps {
|
9
|
-
children: ReactNode;
|
10
|
-
type: RigidBodyAutoCollider;
|
11
|
-
}
|
12
|
-
export declare const MeshCollider: ({ children, type }: MeshColliderProps) => JSX.Element;
|
2
|
+
import { UseColliderOptions, CuboidArgs, RoundCuboidArgs, BallArgs, CapsuleArgs, HeightfieldArgs, TrimeshArgs, ConeArgs, CylinderArgs, ConvexHullArgs } from "./types";
|
13
3
|
declare type UseColliderOptionsRequiredArgs<T> = Omit<UseColliderOptions<T>, "args"> & {
|
14
4
|
args: T;
|
15
5
|
children?: ReactNode;
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import React from "react";
|
2
|
+
import { InstancedRigidBodyApi } from "./api";
|
3
|
+
import { RigidBodyProps } from "./RigidBody";
|
4
|
+
import { Vector3Array } from "./types";
|
5
|
+
interface InstancedRigidBodiesProps extends Omit<RigidBodyProps, "position" | "rotation" | "onCollisionEnter" | "onCollisionExit"> {
|
6
|
+
positions?: Vector3Array[];
|
7
|
+
rotations?: Vector3Array[];
|
8
|
+
}
|
9
|
+
export declare const InstancedRigidBodies: React.ForwardRefExoticComponent<InstancedRigidBodiesProps & React.RefAttributes<InstancedRigidBodyApi>>;
|
10
|
+
export {};
|
@@ -0,0 +1,8 @@
|
|
1
|
+
import { ReactNode } from "react";
|
2
|
+
import { RigidBodyAutoCollider } from "./types";
|
3
|
+
interface MeshColliderProps {
|
4
|
+
children: ReactNode;
|
5
|
+
type: RigidBodyAutoCollider;
|
6
|
+
}
|
7
|
+
export declare const MeshCollider: ({ children, type }: MeshColliderProps) => JSX.Element;
|
8
|
+
export {};
|
@@ -2,12 +2,18 @@ import React, { FC, ReactNode } from "react";
|
|
2
2
|
import type Rapier from "@dimforge/rapier3d-compat";
|
3
3
|
import { RigidBodyAutoCollider, Vector3Array, WorldApi } from "./types";
|
4
4
|
import { ColliderHandle, RigidBody, RigidBodyHandle, TempContactManifold } from "@dimforge/rapier3d-compat";
|
5
|
-
import { Object3D } from "three";
|
5
|
+
import { Matrix4, Object3D, Vector3 } from "three";
|
6
6
|
export interface RapierContext {
|
7
7
|
rapier: typeof Rapier;
|
8
8
|
world: WorldApi;
|
9
9
|
colliderMeshes: Map<ColliderHandle, Object3D>;
|
10
|
-
|
10
|
+
rigidBodyStates: Map<RigidBodyHandle, {
|
11
|
+
mesh: Object3D;
|
12
|
+
isSleeping: boolean;
|
13
|
+
setMatrix: (mat: Matrix4) => void;
|
14
|
+
worldScale: Vector3;
|
15
|
+
invertedMatrixWorld: Matrix4;
|
16
|
+
}>;
|
11
17
|
physicsOptions: {
|
12
18
|
colliders: RigidBodyAutoCollider;
|
13
19
|
};
|
@@ -17,7 +23,7 @@ export declare const RapierContext: React.Context<RapierContext | undefined>;
|
|
17
23
|
declare type EventMap = Map<ColliderHandle | RigidBodyHandle, {
|
18
24
|
onSleep?(): void;
|
19
25
|
onWake?(): void;
|
20
|
-
onCollisionEnter?({ target, manifold, flipped }: {
|
26
|
+
onCollisionEnter?({ target, manifold, flipped, }: {
|
21
27
|
target: RigidBody;
|
22
28
|
manifold: TempContactManifold;
|
23
29
|
flipped: boolean;
|
@@ -51,7 +57,7 @@ interface RapierWorldProps {
|
|
51
57
|
*
|
52
58
|
* @defaultValue "vary"
|
53
59
|
*/
|
54
|
-
timeStep?: number |
|
60
|
+
timeStep?: number | "vary";
|
55
61
|
}
|
56
62
|
export declare const Physics: FC<RapierWorldProps>;
|
57
63
|
export {};
|
@@ -0,0 +1,14 @@
|
|
1
|
+
import React, { MutableRefObject } from "react";
|
2
|
+
import { ReactNode } from "react";
|
3
|
+
import { Object3D } from "three";
|
4
|
+
import { RigidBodyApi, UseRigidBodyOptions } from "./types";
|
5
|
+
export declare const useRigidBodyContext: () => {
|
6
|
+
ref: MutableRefObject<Object3D>;
|
7
|
+
api: RigidBodyApi;
|
8
|
+
hasCollisionEvents: boolean;
|
9
|
+
options: UseRigidBodyOptions;
|
10
|
+
};
|
11
|
+
export interface RigidBodyProps extends UseRigidBodyOptions {
|
12
|
+
children?: ReactNode;
|
13
|
+
}
|
14
|
+
export declare const RigidBody: React.ForwardRefExoticComponent<RigidBodyProps & React.RefAttributes<import("./api").RigidBodyApi>>;
|
@@ -119,6 +119,15 @@ export interface RigidBodyApi {
|
|
119
119
|
setEnabledTranslations(x: boolean, y: boolean, z: boolean): void;
|
120
120
|
}
|
121
121
|
export declare const createRigidBodyApi: (ref: RefGetter<RigidBody>) => RigidBodyApi;
|
122
|
+
export interface InstancedRigidBodyApi {
|
123
|
+
at(index: number): RigidBodyApi;
|
124
|
+
get count(): number;
|
125
|
+
forEach(callback: (body: RigidBodyApi, index: number, array: RigidBodyApi[]) => void): void;
|
126
|
+
}
|
127
|
+
export declare const createInstancedRigidBodiesApi: (bodiesGetter: RefGetter<{
|
128
|
+
rigidBody: RigidBody;
|
129
|
+
api: RigidBodyApi;
|
130
|
+
}[]>) => InstancedRigidBodyApi;
|
122
131
|
export declare const createColliderApi: (ref: RefGetter<Collider>) => {
|
123
132
|
raw: () => Collider | undefined;
|
124
133
|
readonly handle: number;
|
@@ -3,12 +3,8 @@ import { RapierContext } from "./Physics";
|
|
3
3
|
import { Object3D } from "three";
|
4
4
|
import type Rapier from "@dimforge/rapier3d-compat";
|
5
5
|
export declare const useRapier: () => RapierContext;
|
6
|
-
import { UseRigidBodyOptions, UseImpulseJoint, SphericalJointParams, FixedJointParams, PrismaticJointParams, RevoluteJointParams,
|
6
|
+
import { UseRigidBodyOptions, UseImpulseJoint, SphericalJointParams, FixedJointParams, PrismaticJointParams, RevoluteJointParams, RigidBodyApi, RigidBodyApiRef } from "./types";
|
7
7
|
export declare const useRigidBody: <O extends Object3D<import("three").Event>>(options?: UseRigidBodyOptions) => [React.MutableRefObject<O>, import("./api").RigidBodyApi];
|
8
|
-
export declare const useCollider: <A>(body: RigidBodyApi, options?: UseColliderOptions<A>) => (React.MutableRefObject<Object3D<import("three").Event> | undefined> | {
|
9
|
-
raw: () => Rapier.Collider | undefined;
|
10
|
-
readonly handle: number;
|
11
|
-
})[];
|
12
8
|
export declare const useImpulseJoint: <T extends Rapier.ImpulseJoint>(body1: RigidBodyApiRef, body2: RigidBodyApiRef, params: Rapier.JointData) => {
|
13
9
|
raw: () => Rapier.ImpulseJoint | undefined;
|
14
10
|
readonly handle: number;
|
@@ -1,5 +1,9 @@
|
|
1
|
+
export * from "./types";
|
2
|
+
export type { RigidBodyApi, WorldApi, InstancedRigidBodyApi } from "./api";
|
1
3
|
export { Physics } from "./Physics";
|
4
|
+
export { RigidBody } from "./RigidBody";
|
5
|
+
export { MeshCollider } from "./MeshCollider";
|
6
|
+
export { Debug } from "./Debug";
|
7
|
+
export { InstancedRigidBodies } from "./InstancedRigidBodies";
|
8
|
+
export * from "./AnyCollider";
|
2
9
|
export * from "./hooks";
|
3
|
-
export * from "./components";
|
4
|
-
export * from "./Debug";
|
5
|
-
export * from "./types";
|
@@ -0,0 +1,6 @@
|
|
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").Event>;
|
6
|
+
export declare const _matrix4: Matrix4;
|
@@ -2,9 +2,9 @@ import { MutableRefObject } from "react";
|
|
2
2
|
import { CoefficientCombineRule, RigidBody as RapierRigidBody, Collider as RapierCollider, TempContactManifold } from "@dimforge/rapier3d-compat";
|
3
3
|
import { createColliderApi, createJointApi, createRigidBodyApi, createWorldApi } from "./api";
|
4
4
|
export { RapierRigidBody, RapierCollider };
|
5
|
-
export { CoefficientCombineRule as CoefficientCombineRule
|
5
|
+
export { CoefficientCombineRule as CoefficientCombineRule } from "@dimforge/rapier3d-compat";
|
6
6
|
export declare type RefGetter<T> = MutableRefObject<() => T | undefined>;
|
7
|
-
export declare type RigidBodyAutoCollider =
|
7
|
+
export declare type RigidBodyAutoCollider = "ball" | "cuboid" | "hull" | "trimesh" | false;
|
8
8
|
export interface UseRigidBodyAPI {
|
9
9
|
rigidBody: RapierRigidBody;
|
10
10
|
collider: RapierCollider;
|
@@ -65,7 +65,7 @@ export declare type RigidBodyTypeString = "fixed" | "dynamic" | "kinematicPositi
|
|
65
65
|
export declare type RigidBodyShape = "cuboid" | "trimesh" | "ball" | "capsule" | "convexHull" | "heightfield" | "polyline" | "roundCuboid" | "cylinder" | "roundCylinder" | "cone" | "roundCone" | "convexMesh" | "roundConvexHull" | "roundConvexMesh";
|
66
66
|
export declare type Vector3Array = [x: number, y: number, z: number];
|
67
67
|
export declare type Boolean3Array = [x: boolean, y: boolean, z: boolean];
|
68
|
-
export interface UseColliderOptions<
|
68
|
+
export interface UseColliderOptions<ColliderArgs> {
|
69
69
|
/**
|
70
70
|
* The shape of your collider
|
71
71
|
*/
|
@@ -73,7 +73,7 @@ export interface UseColliderOptions<A> {
|
|
73
73
|
/**
|
74
74
|
* Arguments to pass to the collider
|
75
75
|
*/
|
76
|
-
args?:
|
76
|
+
args?: ColliderArgs;
|
77
77
|
/**
|
78
78
|
* The mass of this rigid body.
|
79
79
|
* The mass and density is automatically calculated based on the shape of the collider.
|
@@ -1,18 +1,37 @@
|
|
1
|
-
import { Collider, RigidBody } from "@dimforge/rapier3d-compat";
|
2
|
-
import { Object3D, Quaternion, Vector3 } from "three";
|
3
|
-
import { RigidBodyApi, RigidBodyShape, RigidBodyTypeString, UseColliderOptions, UseRigidBodyOptions, Vector3Array, WorldApi } from "./types";
|
1
|
+
import { Collider, ColliderDesc, RigidBody, RigidBodyDesc, Vector3 as RapierVector3, Quaternion as RapierQuaternion } from "@dimforge/rapier3d-compat";
|
2
|
+
import { BufferGeometry, Matrix4, Object3D, Quaternion, Vector3 } from "three";
|
3
|
+
import { RigidBodyApi, RigidBodyAutoCollider, RigidBodyShape, RigidBodyTypeString, UseColliderOptions, UseRigidBodyOptions, Vector3Array, WorldApi } from "./types";
|
4
4
|
export declare const vectorArrayToObject: (arr: Vector3Array) => {
|
5
5
|
x: number;
|
6
6
|
y: number;
|
7
7
|
z: number;
|
8
8
|
};
|
9
|
+
export declare const vector3ToQuaternion: (v: Vector3) => Quaternion;
|
10
|
+
export declare const rapierVector3ToVector3: ({ x, y, z }: RapierVector3) => Vector3;
|
11
|
+
export declare const rapierQuaternionToQuaternion: ({ x, y, z, w, }: RapierQuaternion) => Quaternion;
|
9
12
|
export declare const rigidBodyTypeFromString: (type: RigidBodyTypeString) => number;
|
13
|
+
export declare const decomposeMatrix4: (m: Matrix4) => {
|
14
|
+
position: Vector3;
|
15
|
+
rotation: Quaternion;
|
16
|
+
scale: Vector3;
|
17
|
+
};
|
10
18
|
export declare const scaleColliderArgs: (shape: RigidBodyShape, args: (number | ArrayLike<number>)[], scale: Vector3) => (number | ArrayLike<number>)[];
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
19
|
+
interface CreateColliderFromOptions {
|
20
|
+
<ColliderArgs>(options: {
|
21
|
+
options: UseColliderOptions<ColliderArgs>;
|
22
|
+
world: WorldApi;
|
23
|
+
rigidBody?: RigidBody;
|
24
|
+
scale: {
|
25
|
+
x: number;
|
26
|
+
y: number;
|
27
|
+
z: number;
|
28
|
+
};
|
29
|
+
hasCollisionEvents: boolean;
|
30
|
+
}): Collider;
|
31
|
+
}
|
32
|
+
export declare const createColliderFromOptions: CreateColliderFromOptions;
|
33
|
+
export declare const createCollidersFromChildren: (object: Object3D, rigidBody: RigidBodyApi | RigidBody, options: UseRigidBodyOptions, world: WorldApi, ignoreMeshColliders?: boolean) => Collider[];
|
34
|
+
export declare const colliderDescFromGeometry: (geometry: BufferGeometry, colliders: RigidBodyAutoCollider, scale: Vector3, hasCollisionEvents: boolean) => ColliderDesc;
|
17
35
|
export declare const scaleVertices: (vertices: ArrayLike<number>, scale: Vector3) => number[];
|
18
|
-
export declare const
|
36
|
+
export declare const rigidBodyDescFromOptions: (options: UseRigidBodyOptions) => RigidBodyDesc;
|
37
|
+
export {};
|