@react-three/rapier 0.3.1 → 0.4.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/CHANGELOG.md CHANGED
@@ -1,5 +1,27 @@
1
1
  # @react-three/rapier
2
2
 
3
+ ## 0.4.2
4
+
5
+ ### Patch Changes
6
+
7
+ - 387b32c: Add restitution and friction as props for auto-generated colliders on RigidBody
8
+
9
+ ## 0.4.1
10
+
11
+ ### Patch Changes
12
+
13
+ - bb7a269: Add useful proxied api methods to rigidbody
14
+
15
+ ## 0.4.0
16
+
17
+ ### Minor Changes
18
+
19
+ - dd535aa: Update to @dimforge/rapier3d-compat@0.8.1, pinned version
20
+
21
+ ### Patch Changes
22
+
23
+ - dd535aa: Better <Physics /> lifecycle making reinitialization more stable
24
+
3
25
  ## 0.3.1
4
26
 
5
27
  ### Patch Changes
@@ -1,33 +1,129 @@
1
1
  import { Collider, ColliderDesc, ImpulseJoint, JointData, RigidBody, RigidBodyDesc, World } from "@dimforge/rapier3d-compat";
2
2
  import { Quaternion, Vector3 } from "three";
3
3
  import { RefGetter } from "./types";
4
- export declare const createRigidBodyApi: (ref: RefGetter<RigidBody>) => {
5
- raw: () => RigidBody | undefined;
6
- readonly handle: number;
7
- applyImpulse({ x, y, z }: Vector3): void;
8
- applyTorqueImpulse({ x, y, z }: Vector3): void;
4
+ declare type Vector3Object = {
5
+ x: number;
6
+ y: number;
7
+ z: number;
8
+ };
9
+ export interface RigidBodyApi {
10
+ /**
11
+ * Get the raw RigidBody
12
+ */
13
+ raw(): RigidBody;
14
+ /**
15
+ * The handle of this RigidBody
16
+ */
17
+ handle: number;
18
+ /**
19
+ * The mass of this rigid-body.
20
+ */
21
+ mass(): number;
22
+ /**
23
+ * Applies an impulse at the center-of-mass of this rigid-body.
24
+ */
25
+ applyImpulse(impulseVector: Vector3Object): void;
26
+ /**
27
+ * Applies an impulsive torque at the center-of-mass of this rigid-body.
28
+ */
29
+ applyTorqueImpulse(torqueVector: Vector3Object): void;
30
+ /**
31
+ * Applies an impulse at the given world-space point of this rigid-body.
32
+ */
33
+ applyImpulseAtPoint(impulseVector: Vector3Object, impulsePoint: Vector3Object): void;
34
+ /**
35
+ * Adds a force at the center-of-mass of this rigid-body.
36
+ */
37
+ addForce(force: Vector3Object): void;
38
+ /**
39
+ * Adds a force at the given world-space point of this rigid-body.
40
+ */
41
+ addForceAtPoint(force: Vector3Object, point: Vector3Object): void;
42
+ /**
43
+ * Adds a torque at the center-of-mass of this rigid-body.
44
+ */
45
+ addTorque(torque: Vector3Object): void;
46
+ /**
47
+ * The world-space translation of this rigid-body.
48
+ */
9
49
  translation(): Vector3;
50
+ /**
51
+ * Sets the translation of this rigid-body.
52
+ */
53
+ setTranslation(translation: Vector3Object): void;
54
+ /**
55
+ * The world-space orientation of this rigid-body.
56
+ */
10
57
  rotation(): Quaternion;
11
- };
58
+ /**
59
+ * Sets the rotation quaternion of this rigid-body.
60
+ */
61
+ setRotation(rotation: Vector3Object): void;
62
+ /**
63
+ * The linear velocity of this rigid-body.
64
+ */
65
+ linvel(): Vector3;
66
+ /**
67
+ * Sets the linear velocity of this rigid-body.
68
+ */
69
+ setLinvel(velocity: Vector3Object): void;
70
+ /**
71
+ * The angular velocity of this rigid-body.
72
+ */
73
+ angvel(): Vector3;
74
+ /**
75
+ * Sets the angular velocity of this rigid-body.
76
+ */
77
+ setAngvel(velocity: Vector3Object): void;
78
+ /**
79
+ * If this rigid body is kinematic, sets its future rotation after the next timestep integration.
80
+ *
81
+ * This should be used instead of rigidBody.setRotation to make the dynamic object interacting with this
82
+ * kinematic body behave as expected. Internally, Rapier will compute an artificial velocity for this
83
+ * rigid-body from its current position and its next kinematic position. This velocity will be used
84
+ * to compute forces on dynamic bodies interacting with this body.
85
+ */
86
+ setNextKinematicRotation(rotation: Vector3Object): void;
87
+ /**
88
+ * If this rigid body is kinematic, sets its future rotation after the next timestep integration.
89
+ *
90
+ * This should be used instead of rigidBody.setRotation to make the dynamic object interacting with
91
+ * this kinematic body behave as expected. Internally, Rapier will compute an artificial velocity
92
+ * for this rigid-body from its current position and its next kinematic position. This velocity
93
+ * will be used to compute forces on dynamic bodies interacting with this body.
94
+ */
95
+ setNextKinematicTranslation(translation: Vector3Object): void;
96
+ /**
97
+ * Resets to zero the user forces (but not torques) applied to this rigid-body.
98
+ */
99
+ resetForces(): void;
100
+ /**
101
+ * Resets to zero the user torques applied to this rigid-body.
102
+ */
103
+ resetTorques(): void;
104
+ }
105
+ export declare const createRigidBodyApi: (ref: RefGetter<RigidBody>) => RigidBodyApi;
12
106
  export declare const createColliderApi: (ref: RefGetter<Collider>) => {
13
107
  raw: () => Collider | undefined;
14
108
  readonly handle: number;
15
109
  };
16
- export declare const createWorldApi: (ref: RefGetter<World>) => {
17
- raw: () => World | undefined;
18
- getCollider: (handle: number) => Collider;
19
- getRigidBody: (handle: number) => RigidBody;
20
- createRigidBody: (desc: RigidBodyDesc) => RigidBody;
21
- createCollider: (desc: ColliderDesc, rigidBodyHandle: number) => Collider;
22
- removeRigidBody: (rigidBody: RigidBody) => void;
23
- removeCollider: (collider: Collider) => void;
24
- createImpulseJoint: (params: JointData, rigidBodyA: RigidBody, rigidBodyB: RigidBody) => ImpulseJoint;
25
- removeImpulseJoint: (joint: ImpulseJoint) => void;
26
- forEachCollider: (callback: (collider: Collider) => void) => void;
27
- };
110
+ export interface WorldApi {
111
+ raw(): World;
112
+ getCollider(handle: number): Collider | undefined;
113
+ getRigidBody(handle: number): RigidBody | undefined;
114
+ createRigidBody(desc: RigidBodyDesc): RigidBody;
115
+ createCollider(desc: ColliderDesc, rigidBody: RigidBody): Collider;
116
+ removeRigidBody(rigidBody: RigidBody): void;
117
+ removeCollider(collider: Collider): void;
118
+ createImpulseJoint(params: JointData, rigidBodyA: RigidBody, rigidBodyB: RigidBody): ImpulseJoint;
119
+ removeImpulseJoint(joint: ImpulseJoint): void;
120
+ forEachCollider(callback: (collider: Collider) => void): void;
121
+ }
122
+ export declare const createWorldApi: (ref: RefGetter<World>) => WorldApi;
28
123
  export declare const createJointApi: (ref: RefGetter<ImpulseJoint>) => {
29
124
  raw: () => ImpulseJoint | undefined;
30
125
  readonly handle: number;
31
126
  configureMotorPosition: (targetPos: number, stiffness: number, damping: number) => void;
32
127
  configureMotorVelocity: (targetVel: number, damping: number) => void;
33
128
  };
129
+ export {};
@@ -1,18 +1,10 @@
1
1
  import React from "react";
2
2
  import { ReactNode } from "react";
3
- import { Vector3 } from "three";
4
3
  import { BallArgs, CapsuleArgs, ConeArgs, ConvexHullArgs, CuboidArgs, CylinderArgs, HeightfieldArgs, RoundCuboidArgs, TrimeshArgs, UseColliderOptions, UseRigidBodyOptions } from "./types";
5
4
  interface RigidBodyProps extends UseRigidBodyOptions {
6
5
  children?: ReactNode;
7
6
  }
8
- export declare const RigidBody: React.ForwardRefExoticComponent<RigidBodyProps & React.RefAttributes<{
9
- raw: () => import("@dimforge/rapier3d-compat/dynamics/rigid_body").RigidBody | undefined;
10
- readonly handle: number;
11
- applyImpulse({ x, y, z }: Vector3): void;
12
- applyTorqueImpulse({ x, y, z }: Vector3): void;
13
- translation(): Vector3;
14
- rotation(): import("three").Quaternion;
15
- }>>;
7
+ export declare const RigidBody: React.ForwardRefExoticComponent<RigidBodyProps & React.RefAttributes<import("./api").RigidBodyApi>>;
16
8
  declare type UseColliderOptionsRequiredArgs<T> = Omit<UseColliderOptions<T>, "args"> & {
17
9
  args: T;
18
10
  children?: ReactNode;
@@ -1,62 +1,20 @@
1
1
  import React, { MutableRefObject } from "react";
2
2
  import { RapierContext } from "./Physics";
3
- import { Mesh, Object3D, Quaternion, Vector3 } from "three";
3
+ import { Mesh, Object3D } from "three";
4
4
  import type Rapier from "@dimforge/rapier3d-compat";
5
5
  export declare const useRapier: () => RapierContext;
6
6
  import { BallArgs, CapsuleArgs, ConeArgs, ConvexHullArgs, CuboidArgs, CylinderArgs, HeightfieldArgs, PolylineArgs, RoundConvexHullArgs, RoundCuboidArgs, RoundCylinderArgs, TrimeshArgs, UseBodyOptions, UseRigidBodyOptions, UseImpulseJoint, SphericalJointParams, FixedJointParams, PrismaticJointParams, RevoluteJointParams, UseColliderOptions, RapierRigidBody, ConvexMeshArgs, RoundConvexMeshArgs, RigidBodyApi } from "./types";
7
7
  import { RoundCone } from "@dimforge/rapier3d-compat";
8
- export declare const useRigidBody: <O extends Object3D<import("three").Event>>(options?: UseRigidBodyOptions) => [React.MutableRefObject<O>, {
9
- raw: () => Rapier.RigidBody | undefined;
10
- readonly handle: number;
11
- applyImpulse({ x, y, z }: Vector3): void;
12
- applyTorqueImpulse({ x, y, z }: Vector3): void;
13
- translation(): Vector3;
14
- rotation(): Quaternion;
15
- }];
8
+ export declare const useRigidBody: <O extends Object3D<import("three").Event>>(options?: UseRigidBodyOptions) => [React.MutableRefObject<O>, import("./api").RigidBodyApi];
16
9
  export declare const useCollider: <A>(body: RigidBodyApi, options?: UseColliderOptions<A>) => (React.MutableRefObject<Object3D<import("three").Event> | undefined> | {
17
10
  raw: () => Rapier.Collider | undefined;
18
11
  readonly handle: number;
19
12
  })[];
20
- export declare const useRigidBodyWithCollider: <A, O extends Object3D<import("three").Event> = Object3D<import("three").Event>>(rigidBodyOptions?: UseRigidBodyOptions | undefined, colliderOptions?: UseColliderOptions<A> | undefined) => [ref: React.MutableRefObject<O>, rigidBody: {
21
- raw: () => Rapier.RigidBody | undefined;
22
- readonly handle: number;
23
- applyImpulse({ x, y, z }: Vector3): void;
24
- applyTorqueImpulse({ x, y, z }: Vector3): void;
25
- translation(): Vector3;
26
- rotation(): Quaternion;
27
- }];
28
- export declare const useCuboid: <T extends Object3D<import("three").Event>>(rigidBodyOptions?: UseBodyOptions, colliderOptions?: UseColliderOptions<CuboidArgs>) => [ref: React.MutableRefObject<T>, rigidBody: {
29
- raw: () => Rapier.RigidBody | undefined;
30
- readonly handle: number;
31
- applyImpulse({ x, y, z }: Vector3): void;
32
- applyTorqueImpulse({ x, y, z }: Vector3): void;
33
- translation(): Vector3;
34
- rotation(): Quaternion;
35
- }];
36
- export declare const useBall: <T extends Object3D<import("three").Event>>(rigidBodyOptions?: UseBodyOptions, colliderOptions?: UseColliderOptions<BallArgs>) => [ref: React.MutableRefObject<T>, rigidBody: {
37
- raw: () => Rapier.RigidBody | undefined;
38
- readonly handle: number;
39
- applyImpulse({ x, y, z }: Vector3): void;
40
- applyTorqueImpulse({ x, y, z }: Vector3): void;
41
- translation(): Vector3;
42
- rotation(): Quaternion;
43
- }];
44
- export declare const useCapsule: <T extends Object3D<import("three").Event>>(rigidBodyOptions?: UseBodyOptions, colliderOptions?: UseColliderOptions<CapsuleArgs>) => [ref: React.MutableRefObject<T>, rigidBody: {
45
- raw: () => Rapier.RigidBody | undefined;
46
- readonly handle: number;
47
- applyImpulse({ x, y, z }: Vector3): void;
48
- applyTorqueImpulse({ x, y, z }: Vector3): void;
49
- translation(): Vector3;
50
- rotation(): Quaternion;
51
- }];
52
- export declare const useHeightfield: <T extends Object3D<import("three").Event>>(rigidBodyOptions?: UseBodyOptions, colliderOptions?: UseColliderOptions<HeightfieldArgs>) => [ref: React.MutableRefObject<T>, rigidBody: {
53
- raw: () => Rapier.RigidBody | undefined;
54
- readonly handle: number;
55
- applyImpulse({ x, y, z }: Vector3): void;
56
- applyTorqueImpulse({ x, y, z }: Vector3): void;
57
- translation(): Vector3;
58
- rotation(): Quaternion;
59
- }];
13
+ export declare const useRigidBodyWithCollider: <A, O extends Object3D<import("three").Event> = Object3D<import("three").Event>>(rigidBodyOptions?: UseRigidBodyOptions | undefined, colliderOptions?: UseColliderOptions<A> | undefined) => [ref: React.MutableRefObject<O>, rigidBody: import("./api").RigidBodyApi];
14
+ export declare const useCuboid: <T extends Object3D<import("three").Event>>(rigidBodyOptions?: UseBodyOptions, colliderOptions?: UseColliderOptions<CuboidArgs>) => [ref: React.MutableRefObject<T>, rigidBody: import("./api").RigidBodyApi];
15
+ export declare const useBall: <T extends Object3D<import("three").Event>>(rigidBodyOptions?: UseBodyOptions, colliderOptions?: UseColliderOptions<BallArgs>) => [ref: React.MutableRefObject<T>, rigidBody: import("./api").RigidBodyApi];
16
+ export declare const useCapsule: <T extends Object3D<import("three").Event>>(rigidBodyOptions?: UseBodyOptions, colliderOptions?: UseColliderOptions<CapsuleArgs>) => [ref: React.MutableRefObject<T>, rigidBody: import("./api").RigidBodyApi];
17
+ export declare const useHeightfield: <T extends Object3D<import("three").Event>>(rigidBodyOptions?: UseBodyOptions, colliderOptions?: UseColliderOptions<HeightfieldArgs>) => [ref: React.MutableRefObject<T>, rigidBody: import("./api").RigidBodyApi];
60
18
  /**
61
19
  * Create a trimesh collider and rigid body.
62
20
  * Note that Trimeshes don't have mass unless provided.
@@ -64,123 +22,25 @@ export declare const useHeightfield: <T extends Object3D<import("three").Event>>
64
22
  * for available properties.
65
23
  */
66
24
  export declare const useTrimesh: {
67
- <T extends Object3D<import("three").Event>>(rigidBodyOptions?: UseBodyOptions, colliderOptions?: UseColliderOptions<TrimeshArgs>): [ref: React.MutableRefObject<T>, rigidBody: {
68
- raw: () => Rapier.RigidBody | undefined;
69
- readonly handle: number;
70
- applyImpulse({ x, y, z }: Vector3): void;
71
- applyTorqueImpulse({ x, y, z }: Vector3): void;
72
- translation(): Vector3;
73
- rotation(): Quaternion;
74
- }];
75
- fromMesh<T_1 extends Object3D<import("three").Event>>(mesh: Mesh, rigidBodyOptions?: UseBodyOptions, colliderOptions?: UseColliderOptions<TrimeshArgs>): [ref: React.MutableRefObject<T_1>, rigidBody: {
76
- raw: () => Rapier.RigidBody | undefined;
77
- readonly handle: number;
78
- applyImpulse({ x, y, z }: Vector3): void;
79
- applyTorqueImpulse({ x, y, z }: Vector3): void;
80
- translation(): Vector3;
81
- rotation(): Quaternion;
82
- }];
25
+ <T extends Object3D<import("three").Event>>(rigidBodyOptions?: UseBodyOptions, colliderOptions?: UseColliderOptions<TrimeshArgs>): [ref: React.MutableRefObject<T>, rigidBody: import("./api").RigidBodyApi];
26
+ fromMesh<T_1 extends Object3D<import("three").Event>>(mesh: Mesh, rigidBodyOptions?: UseBodyOptions, colliderOptions?: UseColliderOptions<TrimeshArgs>): [ref: React.MutableRefObject<T_1>, rigidBody: import("./api").RigidBodyApi];
83
27
  };
84
- export declare const usePolyline: <T extends Object3D<import("three").Event>>(rigidBodyOptions?: UseBodyOptions, colliderOptions?: UseColliderOptions<PolylineArgs>) => [ref: React.MutableRefObject<T>, rigidBody: {
85
- raw: () => Rapier.RigidBody | undefined;
86
- readonly handle: number;
87
- applyImpulse({ x, y, z }: Vector3): void;
88
- applyTorqueImpulse({ x, y, z }: Vector3): void;
89
- translation(): Vector3;
90
- rotation(): Quaternion;
91
- }];
92
- export declare const useRoundCuboid: <T extends Object3D<import("three").Event>>(rigidBodyOptions?: UseBodyOptions, colliderOptions?: UseColliderOptions<RoundCuboidArgs>) => [ref: React.MutableRefObject<T>, rigidBody: {
93
- raw: () => Rapier.RigidBody | undefined;
94
- readonly handle: number;
95
- applyImpulse({ x, y, z }: Vector3): void;
96
- applyTorqueImpulse({ x, y, z }: Vector3): void;
97
- translation(): Vector3;
98
- rotation(): Quaternion;
99
- }];
100
- export declare const useCylinder: <T extends Object3D<import("three").Event>>(rigidBodyOptions?: UseBodyOptions, colliderOptions?: UseColliderOptions<CylinderArgs>) => [ref: React.MutableRefObject<T>, rigidBody: {
101
- raw: () => Rapier.RigidBody | undefined;
102
- readonly handle: number;
103
- applyImpulse({ x, y, z }: Vector3): void;
104
- applyTorqueImpulse({ x, y, z }: Vector3): void;
105
- translation(): Vector3;
106
- rotation(): Quaternion;
107
- }];
108
- export declare const useRoundCylinder: <T extends Object3D<import("three").Event>>(rigidBodyOptions?: UseBodyOptions, colliderOptions?: UseColliderOptions<RoundCylinderArgs>) => [ref: React.MutableRefObject<T>, rigidBody: {
109
- raw: () => Rapier.RigidBody | undefined;
110
- readonly handle: number;
111
- applyImpulse({ x, y, z }: Vector3): void;
112
- applyTorqueImpulse({ x, y, z }: Vector3): void;
113
- translation(): Vector3;
114
- rotation(): Quaternion;
115
- }];
116
- export declare const useCone: <T extends Object3D<import("three").Event>>(rigidBodyOptions?: UseBodyOptions, colliderOptions?: UseColliderOptions<ConeArgs>) => [ref: React.MutableRefObject<T>, rigidBody: {
117
- raw: () => Rapier.RigidBody | undefined;
118
- readonly handle: number;
119
- applyImpulse({ x, y, z }: Vector3): void;
120
- applyTorqueImpulse({ x, y, z }: Vector3): void;
121
- translation(): Vector3;
122
- rotation(): Quaternion;
123
- }];
124
- export declare const useRoundCone: <T extends Object3D<import("three").Event>>(rigidBodyOptions?: UseBodyOptions, colliderOptions?: UseColliderOptions<RoundCone>) => [ref: React.MutableRefObject<T>, rigidBody: {
125
- raw: () => Rapier.RigidBody | undefined;
126
- readonly handle: number;
127
- applyImpulse({ x, y, z }: Vector3): void;
128
- applyTorqueImpulse({ x, y, z }: Vector3): void;
129
- translation(): Vector3;
130
- rotation(): Quaternion;
131
- }];
28
+ export declare const usePolyline: <T extends Object3D<import("three").Event>>(rigidBodyOptions?: UseBodyOptions, colliderOptions?: UseColliderOptions<PolylineArgs>) => [ref: React.MutableRefObject<T>, rigidBody: import("./api").RigidBodyApi];
29
+ export declare const useRoundCuboid: <T extends Object3D<import("three").Event>>(rigidBodyOptions?: UseBodyOptions, colliderOptions?: UseColliderOptions<RoundCuboidArgs>) => [ref: React.MutableRefObject<T>, rigidBody: import("./api").RigidBodyApi];
30
+ export declare const useCylinder: <T extends Object3D<import("three").Event>>(rigidBodyOptions?: UseBodyOptions, colliderOptions?: UseColliderOptions<CylinderArgs>) => [ref: React.MutableRefObject<T>, rigidBody: import("./api").RigidBodyApi];
31
+ export declare const useRoundCylinder: <T extends Object3D<import("three").Event>>(rigidBodyOptions?: UseBodyOptions, colliderOptions?: UseColliderOptions<RoundCylinderArgs>) => [ref: React.MutableRefObject<T>, rigidBody: import("./api").RigidBodyApi];
32
+ export declare const useCone: <T extends Object3D<import("three").Event>>(rigidBodyOptions?: UseBodyOptions, colliderOptions?: UseColliderOptions<ConeArgs>) => [ref: React.MutableRefObject<T>, rigidBody: import("./api").RigidBodyApi];
33
+ export declare const useRoundCone: <T extends Object3D<import("three").Event>>(rigidBodyOptions?: UseBodyOptions, colliderOptions?: UseColliderOptions<RoundCone>) => [ref: React.MutableRefObject<T>, rigidBody: import("./api").RigidBodyApi];
132
34
  export declare const useConvexHull: {
133
- <T extends Object3D<import("three").Event>>(rigidBodyOptions?: UseBodyOptions, colliderOptions?: UseColliderOptions<ConvexHullArgs>): [ref: React.MutableRefObject<T>, rigidBody: {
134
- raw: () => Rapier.RigidBody | undefined;
135
- readonly handle: number;
136
- applyImpulse({ x, y, z }: Vector3): void;
137
- applyTorqueImpulse({ x, y, z }: Vector3): void;
138
- translation(): Vector3;
139
- rotation(): Quaternion;
140
- }];
141
- fromMesh<T_1 extends Object3D<import("three").Event>>(mesh: Mesh, rigidBodyOptions?: UseBodyOptions, colliderOptions?: Omit<UseColliderOptions<ConvexHullArgs>, "colliderArgs">): [ref: React.MutableRefObject<T_1>, rigidBody: {
142
- raw: () => Rapier.RigidBody | undefined;
143
- readonly handle: number;
144
- applyImpulse({ x, y, z }: Vector3): void;
145
- applyTorqueImpulse({ x, y, z }: Vector3): void;
146
- translation(): Vector3;
147
- rotation(): Quaternion;
148
- }];
35
+ <T extends Object3D<import("three").Event>>(rigidBodyOptions?: UseBodyOptions, colliderOptions?: UseColliderOptions<ConvexHullArgs>): [ref: React.MutableRefObject<T>, rigidBody: import("./api").RigidBodyApi];
36
+ fromMesh<T_1 extends Object3D<import("three").Event>>(mesh: Mesh, rigidBodyOptions?: UseBodyOptions, colliderOptions?: Omit<UseColliderOptions<ConvexHullArgs>, "colliderArgs">): [ref: React.MutableRefObject<T_1>, rigidBody: import("./api").RigidBodyApi];
149
37
  };
150
- export declare const useRoundConvexHull: <T extends Object3D<import("three").Event>>(rigidBodyOptions?: UseBodyOptions, colliderOptions?: UseColliderOptions<RoundConvexHullArgs>) => [ref: React.MutableRefObject<T>, rigidBody: {
151
- raw: () => Rapier.RigidBody | undefined;
152
- readonly handle: number;
153
- applyImpulse({ x, y, z }: Vector3): void;
154
- applyTorqueImpulse({ x, y, z }: Vector3): void;
155
- translation(): Vector3;
156
- rotation(): Quaternion;
157
- }];
38
+ export declare const useRoundConvexHull: <T extends Object3D<import("three").Event>>(rigidBodyOptions?: UseBodyOptions, colliderOptions?: UseColliderOptions<RoundConvexHullArgs>) => [ref: React.MutableRefObject<T>, rigidBody: import("./api").RigidBodyApi];
158
39
  export declare const useConvexMesh: {
159
- <T extends Object3D<import("three").Event>>(rigidBodyOptions?: UseBodyOptions, colliderOptions?: UseColliderOptions<ConvexMeshArgs>): [ref: React.MutableRefObject<Object3D<import("three").Event>>, rigidBody: {
160
- raw: () => Rapier.RigidBody | undefined;
161
- readonly handle: number;
162
- applyImpulse({ x, y, z }: Vector3): void;
163
- applyTorqueImpulse({ x, y, z }: Vector3): void;
164
- translation(): Vector3;
165
- rotation(): Quaternion;
166
- }];
167
- fromMesh<T_1 extends Object3D<import("three").Event>>(mesh: Mesh, rigidBodyOptions?: UseBodyOptions, colliderOptions?: Omit<UseColliderOptions<ConvexMeshArgs>, "colliderArgs">): [ref: React.MutableRefObject<Object3D<import("three").Event>>, rigidBody: {
168
- raw: () => Rapier.RigidBody | undefined;
169
- readonly handle: number;
170
- applyImpulse({ x, y, z }: Vector3): void;
171
- applyTorqueImpulse({ x, y, z }: Vector3): void;
172
- translation(): Vector3;
173
- rotation(): Quaternion;
174
- }];
40
+ <T extends Object3D<import("three").Event>>(rigidBodyOptions?: UseBodyOptions, colliderOptions?: UseColliderOptions<ConvexMeshArgs>): [ref: React.MutableRefObject<Object3D<import("three").Event>>, rigidBody: import("./api").RigidBodyApi];
41
+ fromMesh<T_1 extends Object3D<import("three").Event>>(mesh: Mesh, rigidBodyOptions?: UseBodyOptions, colliderOptions?: Omit<UseColliderOptions<ConvexMeshArgs>, "colliderArgs">): [ref: React.MutableRefObject<Object3D<import("three").Event>>, rigidBody: import("./api").RigidBodyApi];
175
42
  };
176
- export declare const useRoundConvexMesh: <T extends Object3D<import("three").Event>>(rigidBodyOptions?: UseBodyOptions, colliderOptions?: UseColliderOptions<RoundConvexMeshArgs>) => [ref: React.MutableRefObject<Object3D<import("three").Event>>, rigidBody: {
177
- raw: () => Rapier.RigidBody | undefined;
178
- readonly handle: number;
179
- applyImpulse({ x, y, z }: Vector3): void;
180
- applyTorqueImpulse({ x, y, z }: Vector3): void;
181
- translation(): Vector3;
182
- rotation(): Quaternion;
183
- }];
43
+ export declare const useRoundConvexMesh: <T extends Object3D<import("three").Event>>(rigidBodyOptions?: UseBodyOptions, colliderOptions?: UseColliderOptions<RoundConvexMeshArgs>) => [ref: React.MutableRefObject<Object3D<import("three").Event>>, rigidBody: import("./api").RigidBodyApi];
184
44
  export declare const useImpulseJoint: <T extends Rapier.ImpulseJoint>(body1: MutableRefObject<RapierRigidBody | undefined | null> | RigidBodyApi, body2: MutableRefObject<RapierRigidBody | undefined | null> | RigidBodyApi, params: Rapier.JointData) => {
185
45
  raw: () => Rapier.ImpulseJoint | undefined;
186
46
  readonly handle: number;
@@ -162,6 +162,16 @@ export interface UseRigidBodyOptions {
162
162
  * Setting this to false will disable automatic colliders.
163
163
  */
164
164
  colliders?: RigidBodyAutoCollider | false;
165
+ /**
166
+ * Set the friction of auto-generated colliders.
167
+ * This does not affect any non-automatic child collider-components.
168
+ */
169
+ friction?: number;
170
+ /**
171
+ * Set the restitution (bounciness) of auto-generated colliders.
172
+ * This does not affect any non-automatic child collider-components.
173
+ */
174
+ restitution?: number;
165
175
  /**
166
176
  * Callback when this rigidbody collides with another rigidbody
167
177
  */
@@ -1,6 +1,6 @@
1
- import { Collider } from "@dimforge/rapier3d-compat";
1
+ import { Collider, RigidBody } from "@dimforge/rapier3d-compat";
2
2
  import { Object3D, Vector3 } from "three";
3
- import { RapierRigidBody, RigidBodyAutoCollider, RigidBodyShape, RigidBodyTypeString, UseColliderOptions, Vector3Array, WorldApi } from "./types";
3
+ import { RigidBodyShape, RigidBodyTypeString, UseColliderOptions, UseRigidBodyOptions, Vector3Array, WorldApi } from "./types";
4
4
  export declare const vectorArrayToObject: (arr: Vector3Array) => {
5
5
  x: number;
6
6
  y: number;
@@ -8,10 +8,10 @@ export declare const vectorArrayToObject: (arr: Vector3Array) => {
8
8
  };
9
9
  export declare const rigidBodyTypeFromString: (type: RigidBodyTypeString) => number;
10
10
  export declare const scaleColliderArgs: (shape: RigidBodyShape, args: (number | ArrayLike<number>)[], scale: Vector3) => (number | ArrayLike<number>)[];
11
- export declare const createColliderFromOptions: <A>(options: UseColliderOptions<A>, world: WorldApi, rigidBodyHandle: number, scale?: {
11
+ export declare const createColliderFromOptions: <A>(options: UseColliderOptions<A>, world: WorldApi, rigidBody: RigidBody, scale?: {
12
12
  x: number;
13
13
  y: number;
14
14
  z: number;
15
15
  }, hasCollisionEvents?: boolean) => Collider;
16
- export declare const createCollidersFromChildren: (object: Object3D, rigidBody: RapierRigidBody, type: RigidBodyAutoCollider, world: WorldApi, hasCollisionEvents?: boolean) => Collider[];
16
+ export declare const createCollidersFromChildren: (object: Object3D, rigidBody: RigidBody, options: UseRigidBodyOptions, world: WorldApi) => Collider[];
17
17
  export declare const scaleVertices: (vertices: ArrayLike<number>, scale: Vector3) => number[];