@react-three/rapier 0.5.2 → 0.6.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.
@@ -1,15 +1,5 @@
1
- import React from "react";
2
1
  import { ReactNode } from "react";
3
- import { BallArgs, CapsuleArgs, ConeArgs, ConvexHullArgs, CuboidArgs, CylinderArgs, HeightfieldArgs, RigidBodyAutoCollider, RoundCuboidArgs, TrimeshArgs, UseColliderOptions, UseRigidBodyOptions } from "./types";
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,11 @@
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
+ scales?: Vector3Array[];
9
+ }
10
+ export declare const InstancedRigidBodies: React.ForwardRefExoticComponent<InstancedRigidBodiesProps & React.RefAttributes<InstancedRigidBodyApi>>;
11
+ 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,19 @@ 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
- rigidBodyMeshes: Map<ColliderHandle, Object3D>;
10
+ rigidBodyStates: Map<RigidBodyHandle, {
11
+ mesh: Object3D;
12
+ isSleeping: boolean;
13
+ setMatrix(mat: Matrix4): void;
14
+ getMatrix(): Matrix4;
15
+ worldScale: Vector3;
16
+ invertedMatrixWorld: Matrix4;
17
+ }>;
11
18
  physicsOptions: {
12
19
  colliders: RigidBodyAutoCollider;
13
20
  };
@@ -17,7 +24,7 @@ export declare const RapierContext: React.Context<RapierContext | undefined>;
17
24
  declare type EventMap = Map<ColliderHandle | RigidBodyHandle, {
18
25
  onSleep?(): void;
19
26
  onWake?(): void;
20
- onCollisionEnter?({ target, manifold, flipped }: {
27
+ onCollisionEnter?({ target, manifold, flipped, }: {
21
28
  target: RigidBody;
22
29
  manifold: TempContactManifold;
23
30
  flipped: boolean;
@@ -51,7 +58,7 @@ interface RapierWorldProps {
51
58
  *
52
59
  * @defaultValue "vary"
53
60
  */
54
- timeStep?: number | 'vary';
61
+ timeStep?: number | "vary";
55
62
  }
56
63
  export declare const Physics: FC<RapierWorldProps>;
57
64
  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, UseColliderOptions, RigidBodyApi, RigidBodyApiRef } from "./types";
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;
@@ -1,13 +1,16 @@
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";
4
- export declare const vectorArrayToObject: (arr: Vector3Array) => {
5
- x: number;
6
- y: number;
7
- z: number;
8
- };
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
+ export declare const vectorArrayToVector3: (arr: Vector3Array) => Vector3;
9
5
  export declare const vector3ToQuaternion: (v: Vector3) => Quaternion;
6
+ export declare const rapierVector3ToVector3: ({ x, y, z }: RapierVector3) => Vector3;
7
+ export declare const rapierQuaternionToQuaternion: ({ x, y, z, w, }: RapierQuaternion) => Quaternion;
10
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
+ };
11
14
  export declare const scaleColliderArgs: (shape: RigidBodyShape, args: (number | ArrayLike<number>)[], scale: Vector3) => (number | ArrayLike<number>)[];
12
15
  interface CreateColliderFromOptions {
13
16
  <ColliderArgs>(options: {
@@ -23,6 +26,8 @@ interface CreateColliderFromOptions {
23
26
  }): Collider;
24
27
  }
25
28
  export declare const createColliderFromOptions: CreateColliderFromOptions;
26
- export declare const createCollidersFromChildren: (object: Object3D, rigidBody: RigidBodyApi, options: UseRigidBodyOptions, world: WorldApi, ignoreMeshColliders?: boolean) => Collider[];
29
+ export declare const createCollidersFromChildren: (object: Object3D, rigidBody: RigidBodyApi | RigidBody, options: UseRigidBodyOptions, world: WorldApi, ignoreMeshColliders?: boolean) => Collider[];
30
+ export declare const colliderDescFromGeometry: (geometry: BufferGeometry, colliders: RigidBodyAutoCollider, scale: Vector3, hasCollisionEvents: boolean) => ColliderDesc;
27
31
  export declare const scaleVertices: (vertices: ArrayLike<number>, scale: Vector3) => number[];
32
+ export declare const rigidBodyDescFromOptions: (options: UseRigidBodyOptions) => RigidBodyDesc;
28
33
  export {};