@react-three/rapier 0.15.0 → 0.16.0-canary.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.
@@ -72,37 +72,37 @@ function _objectSpread2(target) {
72
72
  return target;
73
73
  }
74
74
 
75
- const createWorldApi = ref => {
75
+ const createWorldApi = getWorld => {
76
76
  return {
77
- raw: () => ref.current(),
78
- getCollider: handle => ref.current().getCollider(handle),
79
- getRigidBody: handle => ref.current().getRigidBody(handle),
80
- createRigidBody: desc => ref.current().createRigidBody(desc),
81
- createCollider: (desc, rigidBody) => ref.current().createCollider(desc, rigidBody),
77
+ raw: () => getWorld(),
78
+ getCollider: handle => getWorld().getCollider(handle),
79
+ getRigidBody: handle => getWorld().getRigidBody(handle),
80
+ createRigidBody: desc => getWorld().createRigidBody(desc),
81
+ createCollider: (desc, rigidBody) => getWorld().createCollider(desc, rigidBody),
82
82
  removeRigidBody: rigidBody => {
83
- if (!ref.current().bodies.contains(rigidBody.handle)) return;
84
- ref.current().removeRigidBody(rigidBody);
83
+ if (!getWorld().bodies.contains(rigidBody.handle)) return;
84
+ getWorld().removeRigidBody(rigidBody);
85
85
  },
86
86
  removeCollider: (collider, wakeUp = true) => {
87
- if (!ref.current().colliders.contains(collider.handle)) return;
88
- ref.current().removeCollider(collider, wakeUp);
87
+ if (!getWorld().colliders.contains(collider.handle)) return;
88
+ getWorld().removeCollider(collider, wakeUp);
89
89
  },
90
- createImpulseJoint: (params, rigidBodyA, rigidBodyB, wakeUp = true) => ref.current().createImpulseJoint(params, rigidBodyA, rigidBodyB, wakeUp),
90
+ createImpulseJoint: (params, rigidBodyA, rigidBodyB, wakeUp = true) => getWorld().createImpulseJoint(params, rigidBodyA, rigidBodyB, wakeUp),
91
91
  removeImpulseJoint: (joint, wakeUp = true) => {
92
- if (!ref.current().impulseJoints.contains(joint.handle)) return;
93
- ref.current().removeImpulseJoint(joint, wakeUp);
92
+ if (!getWorld().impulseJoints.contains(joint.handle)) return;
93
+ getWorld().removeImpulseJoint(joint, wakeUp);
94
94
  },
95
- forEachCollider: callback => ref.current().forEachCollider(callback),
95
+ forEachCollider: callback => getWorld().forEachCollider(callback),
96
96
  setGravity: ({
97
97
  x,
98
98
  y,
99
99
  z
100
- }) => ref.current().gravity = {
100
+ }) => getWorld().gravity = {
101
101
  x,
102
102
  y,
103
103
  z
104
104
  },
105
- debugRender: () => ref.current().debugRender()
105
+ debugRender: () => getWorld().debugRender()
106
106
  };
107
107
  };
108
108
 
@@ -295,6 +295,7 @@ const createColliderFromOptions = (options, world, scale, getRigidBody) => {
295
295
  const desc = rapier3dCompat.ColliderDesc[options.shape](...scaledArgs);
296
296
  return world.createCollider(desc, getRigidBody === null || getRigidBody === void 0 ? void 0 : getRigidBody());
297
297
  };
298
+ const immutableColliderOptions = ["shape", "args"];
298
299
  const massPropertiesConflictError = "Please pick ONLY ONE of the `density`, `mass` and `massProperties` options.";
299
300
 
300
301
  const setColliderMassOptions = (collider, options) => {
@@ -343,7 +344,7 @@ const mutableColliderOptions = {
343
344
  restitutionCombineRule: (collider, value) => {
344
345
  collider.setRestitutionCombineRule(value);
345
346
  },
346
- // To make sure the options all mutalbe options are listed
347
+ // To make sure the options all mutable options are listed
347
348
  quaternion: () => {},
348
349
  position: () => {},
349
350
  rotation: () => {},
@@ -405,7 +406,7 @@ const useUpdateColliderOptions = (getCollider, props, states) => {
405
406
  React.useEffect(() => {
406
407
  const collider = getCollider();
407
408
  setColliderOptions(collider, props, states);
408
- }, mutablePropsAsFlatArray);
409
+ }, [...mutablePropsAsFlatArray, getCollider]);
409
410
  };
410
411
 
411
412
  const isChildOfMeshCollider = child => {
@@ -682,6 +683,33 @@ const Debug = /*#__PURE__*/React.memo(() => {
682
683
  }), /*#__PURE__*/React__default["default"].createElement("bufferGeometry", null)));
683
684
  });
684
685
 
686
+ /**
687
+ * Initiate an instance and return a safe getter
688
+ */
689
+
690
+ const useImperativeInstance = (createFn, destroyFn, dependencyList) => {
691
+ const ref = React.useRef();
692
+ const getInstance = React.useCallback(() => {
693
+ if (!ref.current) {
694
+ ref.current = createFn();
695
+ }
696
+
697
+ return ref.current;
698
+ }, dependencyList);
699
+ React.useEffect(() => {
700
+ // Save the destroy function and instance
701
+ const instance = getInstance();
702
+
703
+ const destroy = () => destroyFn(instance);
704
+
705
+ return () => {
706
+ destroy();
707
+ ref.current = undefined;
708
+ };
709
+ }, [getInstance]);
710
+ return getInstance;
711
+ };
712
+
685
713
  const rapierContext = /*#__PURE__*/React.createContext(undefined);
686
714
 
687
715
  const getCollisionPayloadFromSource = (target, other) => {
@@ -731,77 +759,60 @@ const Physics = ({
731
759
  const rapier = useAsset.useAsset(importRapier);
732
760
  const {
733
761
  invalidate
734
- } = fiber.useThree();
735
- const worldRef = React.useRef();
736
- const getWorldRef = React.useRef(() => {
737
- if (!worldRef.current) {
738
- const world = new rapier.World(vectorArrayToVector3(_gravity));
739
- worldRef.current = world;
740
- }
762
+ } = fiber.useThree(); // Init World
741
763
 
742
- return worldRef.current;
743
- });
764
+ const getWorld = useImperativeInstance(() => {
765
+ return new rapier.World(vectorArrayToVector3(_gravity));
766
+ }, world => {
767
+ world.free();
768
+ }, []);
744
769
  const rigidBodyStates = useConst(() => new Map());
745
770
  const colliderStates = useConst(() => new Map());
746
771
  const rigidBodyEvents = useConst(() => new Map());
747
772
  const colliderEvents = useConst(() => new Map());
748
773
  const eventQueue = useConst(() => new rapier3dCompat.EventQueue(false));
749
774
  const beforeStepCallbacks = useConst(() => new Set());
750
- const afterStepCallbacks = useConst(() => new Set()); // Init world
775
+ const afterStepCallbacks = useConst(() => new Set()); // Update gravity
751
776
 
752
777
  React.useEffect(() => {
753
- const world = getWorldRef.current();
754
- return () => {
755
- if (world) {
756
- world.free();
757
- worldRef.current = undefined;
758
- }
759
- };
760
- }, []); // Update gravity
761
-
762
- React.useEffect(() => {
763
- const world = worldRef.current;
778
+ const world = getWorld();
764
779
 
765
780
  if (world) {
766
781
  world.gravity = vectorArrayToVector3(_gravity);
767
782
  }
768
783
  }, [_gravity]);
769
- const api = React.useMemo(() => createWorldApi(getWorldRef), []);
784
+ const api = React.useMemo(() => createWorldApi(getWorld), []);
770
785
  const getSourceFromColliderHandle = React.useCallback(handle => {
771
- const world = worldRef.current;
772
-
773
- if (world) {
774
- var _collider$parent;
775
-
776
- const collider = world.getCollider(handle);
777
- const colEvents = colliderEvents.get(handle);
778
- const colliderState = colliderStates.get(handle);
779
- const rigidBodyHandle = collider === null || collider === void 0 ? void 0 : (_collider$parent = collider.parent()) === null || _collider$parent === void 0 ? void 0 : _collider$parent.handle;
780
- const rigidBody = rigidBodyHandle !== undefined ? world.getRigidBody(rigidBodyHandle) : undefined;
781
- const rbEvents = rigidBody && rigidBodyHandle !== undefined ? rigidBodyEvents.get(rigidBodyHandle) : undefined;
782
- const rigidBodyState = rigidBodyHandle !== undefined ? rigidBodyStates.get(rigidBodyHandle) : undefined;
783
- const source = {
784
- collider: {
785
- object: collider,
786
- events: colEvents,
787
- state: colliderState
788
- },
789
- rigidBody: {
790
- object: rigidBody,
791
- events: rbEvents,
792
- state: rigidBodyState
793
- }
794
- };
795
- return source;
796
- }
786
+ var _collider$parent;
787
+
788
+ const world = getWorld();
789
+ const collider = world.getCollider(handle);
790
+ const colEvents = colliderEvents.get(handle);
791
+ const colliderState = colliderStates.get(handle);
792
+ const rigidBodyHandle = collider === null || collider === void 0 ? void 0 : (_collider$parent = collider.parent()) === null || _collider$parent === void 0 ? void 0 : _collider$parent.handle;
793
+ const rigidBody = rigidBodyHandle !== undefined ? world.getRigidBody(rigidBodyHandle) : undefined;
794
+ const rbEvents = rigidBody && rigidBodyHandle !== undefined ? rigidBodyEvents.get(rigidBodyHandle) : undefined;
795
+ const rigidBodyState = rigidBodyHandle !== undefined ? rigidBodyStates.get(rigidBodyHandle) : undefined;
796
+ const source = {
797
+ collider: {
798
+ object: collider,
799
+ events: colEvents,
800
+ state: colliderState
801
+ },
802
+ rigidBody: {
803
+ object: rigidBody,
804
+ events: rbEvents,
805
+ state: rigidBodyState
806
+ }
807
+ };
808
+ return source;
797
809
  }, []);
798
810
  const [steppingState] = React.useState({
799
811
  previousState: {},
800
812
  accumulator: 0
801
813
  });
802
814
  const step = React.useCallback(dt => {
803
- const world = worldRef.current;
804
- if (!world) return;
815
+ const world = getWorld();
805
816
  /* Check if the timestep is supposed to be variable. We'll do this here
806
817
  once so we don't have to string-check every frame. */
807
818
 
@@ -1057,29 +1068,6 @@ function _extends() {
1057
1068
  return _extends.apply(this, arguments);
1058
1069
  }
1059
1070
 
1060
- /**
1061
- * Initiate an instance and return a safe getter
1062
- */
1063
-
1064
- const useImperativeInstance = (createFn, destroyFn) => {
1065
- const ref = React.useRef();
1066
- const refGetter = React.useMemo(() => () => {
1067
- if (!ref.current) {
1068
- ref.current = createFn();
1069
- }
1070
-
1071
- return ref.current;
1072
- }, []);
1073
- React.useEffect(() => {
1074
- const instance = refGetter();
1075
- return () => {
1076
- destroyFn(instance);
1077
- ref.current = undefined;
1078
- };
1079
- }, []);
1080
- return refGetter;
1081
- };
1082
-
1083
1071
  /**
1084
1072
  * Takes an object resembling a Vector3 and returs a Three.Vector3
1085
1073
  * @category Math helpers
@@ -1131,8 +1119,6 @@ const euler = ({
1131
1119
  return new three.Euler(x, y, z);
1132
1120
  };
1133
1121
 
1134
- // Colliders
1135
-
1136
1122
  /**
1137
1123
  * A collider is a shape that can be attached to a rigid body to define its physical properties.
1138
1124
  * @internal
@@ -1152,22 +1138,24 @@ const AnyCollider = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef((prop
1152
1138
  colliderStates
1153
1139
  } = useRapier();
1154
1140
  const rigidBodyContext = useRigidBodyContext();
1155
- const ref = React.useRef(null);
1141
+ const ref = React.useRef(null); // We spread the props out here to make sure that the ref is updated when the props change.
1142
+
1143
+ const immutablePropArray = immutableColliderOptions.flatMap(key => Array.isArray(props[key]) ? [...props[key]] : props[key]);
1156
1144
  const getInstance = useImperativeInstance(() => {
1157
1145
  const worldScale = ref.current.getWorldScale(vec3());
1158
1146
  const collider = createColliderFromOptions(props, world, worldScale, rigidBodyContext === null || rigidBodyContext === void 0 ? void 0 : rigidBodyContext.getRigidBody);
1159
1147
  return collider;
1160
1148
  }, collider => {
1161
1149
  world.removeCollider(collider);
1162
- });
1150
+ }, [...immutablePropArray, rigidBodyContext]);
1163
1151
  React.useEffect(() => {
1164
1152
  const collider = getInstance();
1165
1153
  colliderStates.set(collider.handle, createColliderState(collider, ref.current, rigidBodyContext === null || rigidBodyContext === void 0 ? void 0 : rigidBodyContext.ref.current));
1166
1154
  return () => {
1167
1155
  colliderStates.delete(collider.handle);
1168
1156
  };
1169
- }, []);
1170
- React.useImperativeHandle(forwardedRef, () => getInstance());
1157
+ }, [getInstance]);
1158
+ React.useImperativeHandle(forwardedRef, () => getInstance(), [getInstance]);
1171
1159
  const mergedProps = React.useMemo(() => {
1172
1160
  return _objectSpread2(_objectSpread2({}, cleanRigidBodyPropsForCollider(rigidBodyContext === null || rigidBodyContext === void 0 ? void 0 : rigidBodyContext.options)), props);
1173
1161
  }, [props, rigidBodyContext === null || rigidBodyContext === void 0 ? void 0 : rigidBodyContext.options]);
@@ -1193,102 +1181,106 @@ const CuboidCollider = /*#__PURE__*/React__default["default"].forwardRef((props,
1193
1181
  ref: ref
1194
1182
  }));
1195
1183
  });
1184
+ CuboidCollider.displayName = "CuboidCollider";
1185
+
1196
1186
  /**
1197
1187
  * A round cuboid collider shape
1198
1188
  * @category Colliders
1199
1189
  */
1190
+ const RoundCuboidCollider = /*#__PURE__*/React__default["default"].forwardRef((props, ref) => /*#__PURE__*/React__default["default"].createElement(AnyCollider, _extends({}, props, {
1191
+ shape: "roundCuboid",
1192
+ ref: ref
1193
+ })));
1194
+ RoundCuboidCollider.displayName = "RoundCuboidCollider";
1200
1195
 
1201
- const RoundCuboidCollider = /*#__PURE__*/React__default["default"].forwardRef((props, ref) => {
1202
- return /*#__PURE__*/React__default["default"].createElement(AnyCollider, _extends({}, props, {
1203
- shape: "roundCuboid",
1204
- ref: ref
1205
- }));
1206
- });
1207
1196
  /**
1208
1197
  * A ball collider shape
1209
1198
  * @category Colliders
1210
1199
  */
1200
+ const BallCollider = /*#__PURE__*/React__default["default"].forwardRef((props, ref) => /*#__PURE__*/React__default["default"].createElement(AnyCollider, _extends({}, props, {
1201
+ shape: "ball",
1202
+ ref: ref
1203
+ })));
1204
+ BallCollider.displayName = "BallCollider";
1211
1205
 
1212
- const BallCollider = /*#__PURE__*/React__default["default"].forwardRef((props, ref) => {
1213
- return /*#__PURE__*/React__default["default"].createElement(AnyCollider, _extends({}, props, {
1214
- shape: "ball",
1215
- ref: ref
1216
- }));
1217
- });
1218
1206
  /**
1219
1207
  * A capsule collider shape
1220
1208
  * @category Colliders
1221
1209
  */
1210
+ const CapsuleCollider = /*#__PURE__*/React__default["default"].forwardRef((props, ref) => /*#__PURE__*/React__default["default"].createElement(AnyCollider, _extends({}, props, {
1211
+ shape: "capsule",
1212
+ ref: ref
1213
+ })));
1214
+ CapsuleCollider.displayName = "CapsuleCollider";
1222
1215
 
1223
- const CapsuleCollider = /*#__PURE__*/React__default["default"].forwardRef((props, ref) => {
1224
- return /*#__PURE__*/React__default["default"].createElement(AnyCollider, _extends({}, props, {
1225
- shape: "capsule",
1226
- ref: ref
1227
- }));
1228
- });
1229
1216
  /**
1230
1217
  * A heightfield collider shape
1231
1218
  * @category Colliders
1232
1219
  */
1220
+ const HeightfieldCollider = /*#__PURE__*/React__default["default"].forwardRef((props, ref) => /*#__PURE__*/React__default["default"].createElement(AnyCollider, _extends({}, props, {
1221
+ shape: "heightfield",
1222
+ ref: ref
1223
+ })));
1224
+ HeightfieldCollider.displayName = "HeightfieldCollider";
1233
1225
 
1234
- const HeightfieldCollider = /*#__PURE__*/React__default["default"].forwardRef((props, ref) => {
1235
- return /*#__PURE__*/React__default["default"].createElement(AnyCollider, _extends({}, props, {
1236
- shape: "heightfield",
1237
- ref: ref
1238
- }));
1239
- });
1240
1226
  /**
1241
1227
  * A trimesh collider shape
1242
1228
  * @category Colliders
1243
1229
  */
1230
+ const TrimeshCollider = /*#__PURE__*/React__default["default"].forwardRef((props, ref) => /*#__PURE__*/React__default["default"].createElement(AnyCollider, _extends({}, props, {
1231
+ shape: "trimesh",
1232
+ ref: ref
1233
+ })));
1234
+ TrimeshCollider.displayName = "TrimeshCollider";
1244
1235
 
1245
- const TrimeshCollider = /*#__PURE__*/React__default["default"].forwardRef((props, ref) => {
1246
- return /*#__PURE__*/React__default["default"].createElement(AnyCollider, _extends({}, props, {
1247
- shape: "trimesh",
1248
- ref: ref
1249
- }));
1250
- });
1251
1236
  /**
1252
1237
  * A cone collider shape
1253
1238
  * @category Colliders
1254
1239
  */
1240
+ const ConeCollider = /*#__PURE__*/React__default["default"].forwardRef((props, ref) => /*#__PURE__*/React__default["default"].createElement(AnyCollider, _extends({}, props, {
1241
+ shape: "cone",
1242
+ ref: ref
1243
+ })));
1244
+ ConeCollider.displayName = "ConeCollider";
1245
+
1246
+ /**
1247
+ * A round cylinder collider shape
1248
+ * @category Colliders
1249
+ */
1250
+ const RoundConeCollider = /*#__PURE__*/React__default["default"].forwardRef((props, ref) => /*#__PURE__*/React__default["default"].createElement(AnyCollider, _extends({}, props, {
1251
+ shape: "roundCone",
1252
+ ref: ref
1253
+ })));
1254
+ RoundConeCollider.displayName = "RoundConeCollider";
1255
1255
 
1256
- const ConeCollider = /*#__PURE__*/React__default["default"].forwardRef((props, ref) => {
1257
- return /*#__PURE__*/React__default["default"].createElement(AnyCollider, _extends({}, props, {
1258
- shape: "cone",
1259
- ref: ref
1260
- }));
1261
- });
1262
1256
  /**
1263
1257
  * A cylinder collider shape
1264
1258
  * @category Colliders
1265
1259
  */
1260
+ const CylinderCollider = /*#__PURE__*/React__default["default"].forwardRef((props, ref) => /*#__PURE__*/React__default["default"].createElement(AnyCollider, _extends({}, props, {
1261
+ shape: "cylinder",
1262
+ ref: ref
1263
+ })));
1264
+ CylinderCollider.displayName = "CylinderCollider";
1266
1265
 
1267
- const CylinderCollider = /*#__PURE__*/React__default["default"].forwardRef((props, ref) => {
1268
- return /*#__PURE__*/React__default["default"].createElement(AnyCollider, _extends({}, props, {
1269
- shape: "cylinder",
1270
- ref: ref
1271
- }));
1272
- });
1273
1266
  /**
1274
- * A convex hull collider shape
1267
+ * A round cylinder collider shape
1275
1268
  * @category Colliders
1276
1269
  */
1270
+ const RoundCylinderCollider = /*#__PURE__*/React__default["default"].forwardRef((props, ref) => /*#__PURE__*/React__default["default"].createElement(AnyCollider, _extends({}, props, {
1271
+ shape: "roundCylinder",
1272
+ ref: ref
1273
+ })));
1274
+ CylinderCollider.displayName = "RoundCylinderCollider";
1277
1275
 
1278
- const ConvexHullCollider = /*#__PURE__*/React__default["default"].forwardRef((props, ref) => {
1279
- return /*#__PURE__*/React__default["default"].createElement(AnyCollider, _extends({}, props, {
1280
- shape: "convexHull",
1281
- ref: ref
1282
- }));
1283
- });
1284
- CuboidCollider.displayName = "CuboidCollider";
1285
- RoundCuboidCollider.displayName = "RoundCuboidCollider";
1286
- BallCollider.displayName = "BallCollider";
1287
- CapsuleCollider.displayName = "CapsuleCollider";
1288
- HeightfieldCollider.displayName = "HeightfieldCollider";
1289
- TrimeshCollider.displayName = "TrimeshCollider";
1290
- ConeCollider.displayName = "ConeCollider";
1291
- CylinderCollider.displayName = "CylinderCollider";
1276
+ /**
1277
+ * A convex hull collider shape
1278
+ * @category Colliders
1279
+ */
1280
+ const ConvexHullCollider = /*#__PURE__*/React__default["default"].forwardRef((props, ref) => /*#__PURE__*/React__default["default"].createElement(AnyCollider, _extends({}, props, {
1281
+ shape: "convexHull",
1282
+ ref: ref
1283
+ })));
1292
1284
  ConvexHullCollider.displayName = "ConvexHullCollider";
1293
1285
 
1294
1286
  const rigidBodyDescFromOptions = options => {
@@ -1323,6 +1315,7 @@ const createRigidBodyState = ({
1323
1315
  meshType: _meshType
1324
1316
  };
1325
1317
  };
1318
+ const immutableRigidBodyOptions = ["args", "colliders", "canSleep"];
1326
1319
  const mutableRigidBodyOptions = {
1327
1320
  gravityScale: (rb, value) => {
1328
1321
  rb.setGravityScale(value, true);
@@ -1473,18 +1466,21 @@ const RigidBody = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef((props,
1473
1466
  children: undefined
1474
1467
  });
1475
1468
  }, [physicsOptions, props]);
1469
+ const immutablePropArray = immutableRigidBodyOptions.flatMap(key => {
1470
+ return Array.isArray(mergedOptions[key]) ? [...mergedOptions[key]] : mergedOptions[key];
1471
+ });
1476
1472
  const childColliderProps = useChildColliderProps(ref, mergedOptions); // Provide a way to eagerly create rigidbody
1477
1473
 
1478
- const getInstance = useImperativeInstance(() => {
1474
+ const getRigidBody = useImperativeInstance(() => {
1479
1475
  const desc = rigidBodyDescFromOptions(mergedOptions);
1480
1476
  const rigidBody = world.createRigidBody(desc);
1481
1477
  return rigidBody;
1482
1478
  }, rigidBody => {
1483
1479
  world.removeRigidBody(rigidBody);
1484
- }); // Only provide a object state after the ref has been set
1480
+ }, immutablePropArray); // Only provide a object state after the ref has been set
1485
1481
 
1486
1482
  React.useEffect(() => {
1487
- const rigidBody = getInstance();
1483
+ const rigidBody = getRigidBody();
1488
1484
  const state = createRigidBodyState({
1489
1485
  rigidBody,
1490
1486
  object: ref.current
@@ -1493,17 +1489,17 @@ const RigidBody = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef((props,
1493
1489
  return () => {
1494
1490
  rigidBodyStates.delete(rigidBody.handle);
1495
1491
  };
1496
- }, []);
1497
- useUpdateRigidBodyOptions(getInstance, mergedOptions, rigidBodyStates);
1498
- useRigidBodyEvents(getInstance, mergedOptions, rigidBodyEvents);
1499
- React.useImperativeHandle(forwardedRef, () => getInstance());
1492
+ }, [getRigidBody]);
1493
+ useUpdateRigidBodyOptions(getRigidBody, mergedOptions, rigidBodyStates);
1494
+ useRigidBodyEvents(getRigidBody, mergedOptions, rigidBodyEvents);
1495
+ React.useImperativeHandle(forwardedRef, () => getRigidBody(), [getRigidBody]);
1500
1496
  const contextValue = React.useMemo(() => {
1501
1497
  return {
1502
1498
  ref,
1503
- getRigidBody: getInstance,
1499
+ getRigidBody: getRigidBody,
1504
1500
  options: mergedOptions
1505
1501
  };
1506
- }, [mergedOptions]);
1502
+ }, [getRigidBody]);
1507
1503
  return /*#__PURE__*/React__default["default"].createElement(RigidBodyContext.Provider, {
1508
1504
  value: contextValue
1509
1505
  }, /*#__PURE__*/React__default["default"].createElement("object3D", _extends({
@@ -1657,7 +1653,7 @@ const useImpulseJoint = (body1, body2, params) => {
1657
1653
  jointRef.current = undefined;
1658
1654
  world.removeImpulseJoint(joint);
1659
1655
  }
1660
- });
1656
+ }, []);
1661
1657
  return jointRef;
1662
1658
  };
1663
1659
  /**
@@ -1792,7 +1788,9 @@ exports.InstancedRigidBodies = InstancedRigidBodies;
1792
1788
  exports.MeshCollider = MeshCollider;
1793
1789
  exports.Physics = Physics;
1794
1790
  exports.RigidBody = RigidBody;
1791
+ exports.RoundConeCollider = RoundConeCollider;
1795
1792
  exports.RoundCuboidCollider = RoundCuboidCollider;
1793
+ exports.RoundCylinderCollider = RoundCylinderCollider;
1796
1794
  exports.TrimeshCollider = TrimeshCollider;
1797
1795
  exports.euler = euler;
1798
1796
  exports.interactionGroups = interactionGroups;