@react-three/rapier 0.8.0 → 0.8.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.
@@ -3,7 +3,7 @@
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
4
4
|
|
5
5
|
var rapier3dCompat = require('@dimforge/rapier3d-compat');
|
6
|
-
var React
|
6
|
+
var React = require('react');
|
7
7
|
var useAsset = require('use-asset');
|
8
8
|
var fiber = require('@react-three/fiber');
|
9
9
|
var three = require('three');
|
@@ -29,7 +29,7 @@ function _interopNamespace(e) {
|
|
29
29
|
return Object.freeze(n);
|
30
30
|
}
|
31
31
|
|
32
|
-
var React__default = /*#__PURE__*/_interopDefault(React
|
32
|
+
var React__default = /*#__PURE__*/_interopDefault(React);
|
33
33
|
|
34
34
|
const _quaternion = new three.Quaternion();
|
35
35
|
new three.Euler();
|
@@ -238,7 +238,7 @@ const createJointApi = ref => {
|
|
238
238
|
};
|
239
239
|
};
|
240
240
|
|
241
|
-
const RapierContext = /*#__PURE__*/React
|
241
|
+
const RapierContext = /*#__PURE__*/React.createContext(undefined);
|
242
242
|
|
243
243
|
const importRapier = async () => {
|
244
244
|
let r = await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('@dimforge/rapier3d-compat')); });
|
@@ -255,8 +255,8 @@ const Physics = ({
|
|
255
255
|
updatePriority
|
256
256
|
}) => {
|
257
257
|
const rapier = useAsset.useAsset(importRapier);
|
258
|
-
const worldRef = React
|
259
|
-
const getWorldRef = React
|
258
|
+
const worldRef = React.useRef();
|
259
|
+
const getWorldRef = React.useRef(() => {
|
260
260
|
if (!worldRef.current) {
|
261
261
|
const world = new rapier.World(vectorArrayToVector3(_gravity));
|
262
262
|
worldRef.current = world;
|
@@ -264,13 +264,13 @@ const Physics = ({
|
|
264
264
|
|
265
265
|
return worldRef.current;
|
266
266
|
});
|
267
|
-
const [rigidBodyStates] = React
|
268
|
-
const [colliderStates] = React
|
269
|
-
const [rigidBodyEvents] = React
|
270
|
-
const [colliderEvents] = React
|
271
|
-
const [eventQueue] = React
|
267
|
+
const [rigidBodyStates] = React.useState(() => new Map());
|
268
|
+
const [colliderStates] = React.useState(() => new Map());
|
269
|
+
const [rigidBodyEvents] = React.useState(() => new Map());
|
270
|
+
const [colliderEvents] = React.useState(() => new Map());
|
271
|
+
const [eventQueue] = React.useState(() => new rapier3dCompat.EventQueue(false)); // Init world
|
272
272
|
|
273
|
-
React
|
273
|
+
React.useEffect(() => {
|
274
274
|
const world = getWorldRef.current();
|
275
275
|
return () => {
|
276
276
|
if (world) {
|
@@ -280,14 +280,14 @@ const Physics = ({
|
|
280
280
|
};
|
281
281
|
}, []); // Update gravity
|
282
282
|
|
283
|
-
React
|
283
|
+
React.useEffect(() => {
|
284
284
|
const world = worldRef.current;
|
285
285
|
|
286
286
|
if (world) {
|
287
287
|
world.gravity = vectorArrayToVector3(_gravity);
|
288
288
|
}
|
289
289
|
}, [_gravity]);
|
290
|
-
const [steppingState] = React
|
290
|
+
const [steppingState] = React.useState({
|
291
291
|
accumulator: 0
|
292
292
|
});
|
293
293
|
/* Check if the timestep is supposed to be variable. We'll do this here
|
@@ -497,8 +497,8 @@ const Physics = ({
|
|
497
497
|
}
|
498
498
|
});
|
499
499
|
}, updatePriority);
|
500
|
-
const api = React
|
501
|
-
const context = React
|
500
|
+
const api = React.useMemo(() => createWorldApi(getWorldRef), []);
|
501
|
+
const context = React.useMemo(() => ({
|
502
502
|
rapier,
|
503
503
|
world: api,
|
504
504
|
physicsOptions: {
|
@@ -699,10 +699,10 @@ const setRigidBodyOptions = (rigidBody, options, states, updateTranslations = tr
|
|
699
699
|
};
|
700
700
|
const useUpdateRigidBodyOptions = (rigidBodyRef, props, states, updateTranslations = true) => {
|
701
701
|
// TODO: Improve this, split each prop into its own effect
|
702
|
-
const mutablePropsAsFlatArray = React
|
702
|
+
const mutablePropsAsFlatArray = React.useMemo(() => mutableRigidBodyOptionKeys.flatMap(key => {
|
703
703
|
return vectorToTuple(props[key]);
|
704
704
|
}), [props]);
|
705
|
-
React
|
705
|
+
React.useEffect(() => {
|
706
706
|
if (Array.isArray(rigidBodyRef.current)) {
|
707
707
|
for (const rigidBody of rigidBodyRef.current) {
|
708
708
|
setRigidBodyOptions(rigidBody, props, states, updateTranslations);
|
@@ -729,7 +729,7 @@ const useRigidBodyEvents = (rigidBodyRef, props, events) => {
|
|
729
729
|
onIntersectionEnter,
|
730
730
|
onIntersectionExit
|
731
731
|
};
|
732
|
-
React
|
732
|
+
React.useEffect(() => {
|
733
733
|
if (Array.isArray(rigidBodyRef.current)) {
|
734
734
|
for (const rigidBody of rigidBodyRef.current) {
|
735
735
|
events.set(rigidBody.handle, eventHandlers);
|
@@ -872,10 +872,10 @@ const setColliderOptions = (collider, options, states) => {
|
|
872
872
|
};
|
873
873
|
const useUpdateColliderOptions = (collidersRef, props, states) => {
|
874
874
|
// TODO: Improve this, split each prop into its own effect
|
875
|
-
const mutablePropsAsFlatArray = React
|
875
|
+
const mutablePropsAsFlatArray = React.useMemo(() => mutableColliderOptionKeys.flatMap(key => {
|
876
876
|
return vectorToTuple(props[key]);
|
877
877
|
}), [props]);
|
878
|
-
React
|
878
|
+
React.useEffect(() => {
|
879
879
|
collidersRef.current.forEach(collider => {
|
880
880
|
setColliderOptions(collider, props, states);
|
881
881
|
});
|
@@ -1008,7 +1008,7 @@ const useColliderEvents = (collidersRef, props, events) => {
|
|
1008
1008
|
onIntersectionEnter,
|
1009
1009
|
onIntersectionExit
|
1010
1010
|
} = props;
|
1011
|
-
React
|
1011
|
+
React.useEffect(() => {
|
1012
1012
|
var _collidersRef$current;
|
1013
1013
|
|
1014
1014
|
(_collidersRef$current = collidersRef.current) === null || _collidersRef$current === void 0 ? void 0 : _collidersRef$current.forEach(collider => {
|
@@ -1032,11 +1032,11 @@ const useColliderEvents = (collidersRef, props, events) => {
|
|
1032
1032
|
};
|
1033
1033
|
|
1034
1034
|
const useRapier = () => {
|
1035
|
-
return React
|
1035
|
+
return React.useContext(RapierContext);
|
1036
1036
|
};
|
1037
1037
|
const useChildColliderProps = (ref, options, ignoreMeshColliders = true) => {
|
1038
|
-
const [colliderProps, setColliderProps] = React
|
1039
|
-
React
|
1038
|
+
const [colliderProps, setColliderProps] = React.useState([]);
|
1039
|
+
React.useEffect(() => {
|
1040
1040
|
const object = ref.current;
|
1041
1041
|
|
1042
1042
|
if (object && options.colliders !== false) {
|
@@ -1056,16 +1056,16 @@ const useRigidBody = (options = {}) => {
|
|
1056
1056
|
physicsOptions,
|
1057
1057
|
rigidBodyEvents
|
1058
1058
|
} = useRapier();
|
1059
|
-
const ref = React
|
1060
|
-
const mergedOptions = React
|
1059
|
+
const ref = React.useRef();
|
1060
|
+
const mergedOptions = React.useMemo(() => {
|
1061
1061
|
return _objectSpread2(_objectSpread2(_objectSpread2({}, physicsOptions), options), {}, {
|
1062
1062
|
children: undefined
|
1063
1063
|
});
|
1064
1064
|
}, [physicsOptions, options]);
|
1065
1065
|
const childColliderProps = useChildColliderProps(ref, mergedOptions); // Create rigidbody
|
1066
1066
|
|
1067
|
-
const rigidBodyRef = React
|
1068
|
-
const getRigidBodyRef = React
|
1067
|
+
const rigidBodyRef = React.useRef();
|
1068
|
+
const getRigidBodyRef = React.useRef(() => {
|
1069
1069
|
if (!rigidBodyRef.current) {
|
1070
1070
|
const desc = rigidBodyDescFromOptions(options);
|
1071
1071
|
const rigidBody = world.createRigidBody(desc);
|
@@ -1075,7 +1075,7 @@ const useRigidBody = (options = {}) => {
|
|
1075
1075
|
return rigidBodyRef.current;
|
1076
1076
|
}); // Setup
|
1077
1077
|
|
1078
|
-
React
|
1078
|
+
React.useEffect(() => {
|
1079
1079
|
const rigidBody = getRigidBodyRef.current();
|
1080
1080
|
rigidBodyRef.current = rigidBody;
|
1081
1081
|
|
@@ -1097,7 +1097,7 @@ const useRigidBody = (options = {}) => {
|
|
1097
1097
|
}, []);
|
1098
1098
|
useUpdateRigidBodyOptions(rigidBodyRef, mergedOptions, rigidBodyStates);
|
1099
1099
|
useRigidBodyEvents(rigidBodyRef, mergedOptions, rigidBodyEvents);
|
1100
|
-
const api = React
|
1100
|
+
const api = React.useMemo(() => createRigidBodyApi(getRigidBodyRef), []);
|
1101
1101
|
return [ref, api, childColliderProps];
|
1102
1102
|
}; // Joints
|
1103
1103
|
|
@@ -1105,8 +1105,8 @@ const useImpulseJoint = (body1, body2, params) => {
|
|
1105
1105
|
const {
|
1106
1106
|
world
|
1107
1107
|
} = useRapier();
|
1108
|
-
const jointRef = React
|
1109
|
-
const getJointRef = React
|
1108
|
+
const jointRef = React.useRef();
|
1109
|
+
const getJointRef = React.useRef(() => {
|
1110
1110
|
if (!jointRef.current) {
|
1111
1111
|
let rb1;
|
1112
1112
|
let rb2;
|
@@ -1121,7 +1121,7 @@ const useImpulseJoint = (body1, body2, params) => {
|
|
1121
1121
|
|
1122
1122
|
return jointRef.current;
|
1123
1123
|
});
|
1124
|
-
React
|
1124
|
+
React.useEffect(() => {
|
1125
1125
|
const joint = getJointRef.current();
|
1126
1126
|
return () => {
|
1127
1127
|
if (joint) {
|
@@ -1130,7 +1130,7 @@ const useImpulseJoint = (body1, body2, params) => {
|
|
1130
1130
|
}
|
1131
1131
|
};
|
1132
1132
|
}, []);
|
1133
|
-
const api = React
|
1133
|
+
const api = React.useMemo(() => createJointApi(getJointRef), []);
|
1134
1134
|
return api;
|
1135
1135
|
};
|
1136
1136
|
/**
|
@@ -1189,7 +1189,7 @@ const usePrismaticJoint = (body1, body2, [body1Anchor, body2Anchor, axis]) => {
|
|
1189
1189
|
};
|
1190
1190
|
|
1191
1191
|
// Colliders
|
1192
|
-
const AnyCollider = /*#__PURE__*/React
|
1192
|
+
const AnyCollider = /*#__PURE__*/React.memo( /*#__PURE__*/React__default["default"].forwardRef((props, forwardedRef) => {
|
1193
1193
|
const {
|
1194
1194
|
children,
|
1195
1195
|
position,
|
@@ -1203,8 +1203,8 @@ const AnyCollider = /*#__PURE__*/React$1.memo( /*#__PURE__*/React__default["defa
|
|
1203
1203
|
colliderStates
|
1204
1204
|
} = useRapier();
|
1205
1205
|
const rigidBodyContext = useRigidBodyContext();
|
1206
|
-
const ref = React
|
1207
|
-
const collidersRef = React
|
1206
|
+
const ref = React.useRef(null);
|
1207
|
+
const collidersRef = React.useMemo(() => {
|
1208
1208
|
if (forwardedRef !== null) {
|
1209
1209
|
return forwardedRef;
|
1210
1210
|
}
|
@@ -1213,7 +1213,7 @@ const AnyCollider = /*#__PURE__*/React$1.memo( /*#__PURE__*/React__default["defa
|
|
1213
1213
|
result.current = [];
|
1214
1214
|
return result;
|
1215
1215
|
}, []);
|
1216
|
-
React
|
1216
|
+
React.useEffect(() => {
|
1217
1217
|
const object = ref.current;
|
1218
1218
|
const worldScale = object.getWorldScale(new three.Vector3());
|
1219
1219
|
const colliders = []; // If this is an InstancedRigidBody api
|
@@ -1245,7 +1245,7 @@ const AnyCollider = /*#__PURE__*/React$1.memo( /*#__PURE__*/React__default["defa
|
|
1245
1245
|
});
|
1246
1246
|
};
|
1247
1247
|
}, []);
|
1248
|
-
const mergedProps = React
|
1248
|
+
const mergedProps = React.useMemo(() => {
|
1249
1249
|
return _objectSpread2(_objectSpread2({}, rigidBodyContext === null || rigidBodyContext === void 0 ? void 0 : rigidBodyContext.options), props);
|
1250
1250
|
}, [props, rigidBodyContext === null || rigidBodyContext === void 0 ? void 0 : rigidBodyContext.options]);
|
1251
1251
|
useUpdateColliderOptions(collidersRef, mergedProps, colliderStates);
|
@@ -1314,9 +1314,9 @@ const ConvexHullCollider = /*#__PURE__*/React__default["default"].forwardRef((pr
|
|
1314
1314
|
});
|
1315
1315
|
|
1316
1316
|
const _excluded$1 = ["children", "type", "position", "rotation", "scale", "quaternion"];
|
1317
|
-
const RigidBodyContext = /*#__PURE__*/React
|
1318
|
-
const useRigidBodyContext = () => React
|
1319
|
-
const RigidBody = /*#__PURE__*/React
|
1317
|
+
const RigidBodyContext = /*#__PURE__*/React.createContext(undefined);
|
1318
|
+
const useRigidBodyContext = () => React.useContext(RigidBodyContext);
|
1319
|
+
const RigidBody = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef((props, ref) => {
|
1320
1320
|
const {
|
1321
1321
|
children,
|
1322
1322
|
type,
|
@@ -1328,8 +1328,8 @@ const RigidBody = /*#__PURE__*/React$1.memo( /*#__PURE__*/React$1.forwardRef((pr
|
|
1328
1328
|
objectProps = _objectWithoutProperties(props, _excluded$1);
|
1329
1329
|
|
1330
1330
|
const [object, api, childColliderProps] = useRigidBody(props);
|
1331
|
-
React
|
1332
|
-
const contextValue = React
|
1331
|
+
React.useImperativeHandle(ref, () => api);
|
1332
|
+
const contextValue = React.useMemo(() => ({
|
1333
1333
|
ref: object,
|
1334
1334
|
api,
|
1335
1335
|
options: props
|
@@ -1357,11 +1357,11 @@ const MeshCollider = props => {
|
|
1357
1357
|
physicsOptions,
|
1358
1358
|
world
|
1359
1359
|
} = useRapier();
|
1360
|
-
const object = React
|
1360
|
+
const object = React.useRef(null);
|
1361
1361
|
const {
|
1362
1362
|
options
|
1363
1363
|
} = useRigidBodyContext();
|
1364
|
-
const mergedOptions = React
|
1364
|
+
const mergedOptions = React.useMemo(() => {
|
1365
1365
|
return _objectSpread2(_objectSpread2(_objectSpread2({}, physicsOptions), options), {}, {
|
1366
1366
|
children: undefined,
|
1367
1367
|
colliders: type
|
@@ -1382,7 +1382,7 @@ const Debug = () => {
|
|
1382
1382
|
const {
|
1383
1383
|
world
|
1384
1384
|
} = useRapier();
|
1385
|
-
const ref = React
|
1385
|
+
const ref = React.useRef(null);
|
1386
1386
|
fiber.useFrame(() => {
|
1387
1387
|
const mesh = ref.current;
|
1388
1388
|
if (!mesh) return;
|
@@ -1390,23 +1390,24 @@ const Debug = () => {
|
|
1390
1390
|
mesh.geometry.setAttribute("position", new three.BufferAttribute(buffers.vertices, 3));
|
1391
1391
|
mesh.geometry.setAttribute("color", new three.BufferAttribute(buffers.colors, 4));
|
1392
1392
|
});
|
1393
|
-
return /*#__PURE__*/
|
1394
|
-
ref: ref
|
1395
|
-
|
1393
|
+
return /*#__PURE__*/React__default["default"].createElement("lineSegments", {
|
1394
|
+
ref: ref,
|
1395
|
+
frustumCulled: false
|
1396
|
+
}, /*#__PURE__*/React__default["default"].createElement("lineBasicMaterial", {
|
1396
1397
|
color: 0xffffff,
|
1397
1398
|
vertexColors: true
|
1398
|
-
}), /*#__PURE__*/
|
1399
|
+
}), /*#__PURE__*/React__default["default"].createElement("bufferGeometry", null));
|
1399
1400
|
};
|
1400
1401
|
|
1401
1402
|
const _excluded = ["positions", "rotations", "children"];
|
1402
|
-
const InstancedRigidBodies = /*#__PURE__*/React
|
1403
|
+
const InstancedRigidBodies = /*#__PURE__*/React.forwardRef((props, ref) => {
|
1403
1404
|
const {
|
1404
1405
|
world,
|
1405
1406
|
rigidBodyStates,
|
1406
1407
|
physicsOptions,
|
1407
1408
|
rigidBodyEvents
|
1408
1409
|
} = useRapier();
|
1409
|
-
const object = React
|
1410
|
+
const object = React.useRef(null);
|
1410
1411
|
|
1411
1412
|
const {
|
1412
1413
|
positions,
|
@@ -1415,20 +1416,20 @@ const InstancedRigidBodies = /*#__PURE__*/React$1.forwardRef((props, ref) => {
|
|
1415
1416
|
} = props,
|
1416
1417
|
options = _objectWithoutProperties(props, _excluded);
|
1417
1418
|
|
1418
|
-
const instancesRef = React
|
1419
|
-
const rigidBodyRefs = React
|
1420
|
-
const instancesRefGetter = React
|
1419
|
+
const instancesRef = React.useRef([]);
|
1420
|
+
const rigidBodyRefs = React.useRef([]);
|
1421
|
+
const instancesRefGetter = React.useRef(() => {
|
1421
1422
|
if (!instancesRef.current) {
|
1422
1423
|
instancesRef.current = [];
|
1423
1424
|
}
|
1424
1425
|
|
1425
1426
|
return instancesRef.current;
|
1426
1427
|
});
|
1427
|
-
const mergedOptions = React
|
1428
|
+
const mergedOptions = React.useMemo(() => {
|
1428
1429
|
return _objectSpread2(_objectSpread2({}, physicsOptions), options);
|
1429
1430
|
}, [physicsOptions, options]);
|
1430
1431
|
const childColliderProps = useChildColliderProps(object, mergedOptions);
|
1431
|
-
React
|
1432
|
+
React.useLayoutEffect(() => {
|
1432
1433
|
object.current.updateWorldMatrix(true, false);
|
1433
1434
|
const instances = instancesRefGetter.current();
|
1434
1435
|
const invertedWorld = object.current.matrixWorld.clone().invert();
|
@@ -1489,11 +1490,11 @@ const InstancedRigidBodies = /*#__PURE__*/React$1.forwardRef((props, ref) => {
|
|
1489
1490
|
instancesRef.current = [];
|
1490
1491
|
};
|
1491
1492
|
}, []);
|
1492
|
-
const api = React
|
1493
|
-
React
|
1493
|
+
const api = React.useMemo(() => createInstancedRigidBodiesApi(instancesRefGetter), []);
|
1494
|
+
React.useImperativeHandle(ref, () => api);
|
1494
1495
|
useUpdateRigidBodyOptions(rigidBodyRefs, mergedOptions, rigidBodyStates, false);
|
1495
1496
|
useRigidBodyEvents(rigidBodyRefs, mergedOptions, rigidBodyEvents);
|
1496
|
-
const contextValue = React
|
1497
|
+
const contextValue = React.useMemo(() => {
|
1497
1498
|
return {
|
1498
1499
|
ref: object,
|
1499
1500
|
api,
|
@@ -3,7 +3,7 @@
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
4
4
|
|
5
5
|
var rapier3dCompat = require('@dimforge/rapier3d-compat');
|
6
|
-
var React
|
6
|
+
var React = require('react');
|
7
7
|
var useAsset = require('use-asset');
|
8
8
|
var fiber = require('@react-three/fiber');
|
9
9
|
var three = require('three');
|
@@ -29,7 +29,7 @@ function _interopNamespace(e) {
|
|
29
29
|
return Object.freeze(n);
|
30
30
|
}
|
31
31
|
|
32
|
-
var React__default = /*#__PURE__*/_interopDefault(React
|
32
|
+
var React__default = /*#__PURE__*/_interopDefault(React);
|
33
33
|
|
34
34
|
const _quaternion = new three.Quaternion();
|
35
35
|
new three.Euler();
|
@@ -238,7 +238,7 @@ const createJointApi = ref => {
|
|
238
238
|
};
|
239
239
|
};
|
240
240
|
|
241
|
-
const RapierContext = /*#__PURE__*/React
|
241
|
+
const RapierContext = /*#__PURE__*/React.createContext(undefined);
|
242
242
|
|
243
243
|
const importRapier = async () => {
|
244
244
|
let r = await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('@dimforge/rapier3d-compat')); });
|
@@ -255,8 +255,8 @@ const Physics = ({
|
|
255
255
|
updatePriority
|
256
256
|
}) => {
|
257
257
|
const rapier = useAsset.useAsset(importRapier);
|
258
|
-
const worldRef = React
|
259
|
-
const getWorldRef = React
|
258
|
+
const worldRef = React.useRef();
|
259
|
+
const getWorldRef = React.useRef(() => {
|
260
260
|
if (!worldRef.current) {
|
261
261
|
const world = new rapier.World(vectorArrayToVector3(_gravity));
|
262
262
|
worldRef.current = world;
|
@@ -264,13 +264,13 @@ const Physics = ({
|
|
264
264
|
|
265
265
|
return worldRef.current;
|
266
266
|
});
|
267
|
-
const [rigidBodyStates] = React
|
268
|
-
const [colliderStates] = React
|
269
|
-
const [rigidBodyEvents] = React
|
270
|
-
const [colliderEvents] = React
|
271
|
-
const [eventQueue] = React
|
267
|
+
const [rigidBodyStates] = React.useState(() => new Map());
|
268
|
+
const [colliderStates] = React.useState(() => new Map());
|
269
|
+
const [rigidBodyEvents] = React.useState(() => new Map());
|
270
|
+
const [colliderEvents] = React.useState(() => new Map());
|
271
|
+
const [eventQueue] = React.useState(() => new rapier3dCompat.EventQueue(false)); // Init world
|
272
272
|
|
273
|
-
React
|
273
|
+
React.useEffect(() => {
|
274
274
|
const world = getWorldRef.current();
|
275
275
|
return () => {
|
276
276
|
if (world) {
|
@@ -280,14 +280,14 @@ const Physics = ({
|
|
280
280
|
};
|
281
281
|
}, []); // Update gravity
|
282
282
|
|
283
|
-
React
|
283
|
+
React.useEffect(() => {
|
284
284
|
const world = worldRef.current;
|
285
285
|
|
286
286
|
if (world) {
|
287
287
|
world.gravity = vectorArrayToVector3(_gravity);
|
288
288
|
}
|
289
289
|
}, [_gravity]);
|
290
|
-
const [steppingState] = React
|
290
|
+
const [steppingState] = React.useState({
|
291
291
|
accumulator: 0
|
292
292
|
});
|
293
293
|
/* Check if the timestep is supposed to be variable. We'll do this here
|
@@ -497,8 +497,8 @@ const Physics = ({
|
|
497
497
|
}
|
498
498
|
});
|
499
499
|
}, updatePriority);
|
500
|
-
const api = React
|
501
|
-
const context = React
|
500
|
+
const api = React.useMemo(() => createWorldApi(getWorldRef), []);
|
501
|
+
const context = React.useMemo(() => ({
|
502
502
|
rapier,
|
503
503
|
world: api,
|
504
504
|
physicsOptions: {
|
@@ -699,10 +699,10 @@ const setRigidBodyOptions = (rigidBody, options, states, updateTranslations = tr
|
|
699
699
|
};
|
700
700
|
const useUpdateRigidBodyOptions = (rigidBodyRef, props, states, updateTranslations = true) => {
|
701
701
|
// TODO: Improve this, split each prop into its own effect
|
702
|
-
const mutablePropsAsFlatArray = React
|
702
|
+
const mutablePropsAsFlatArray = React.useMemo(() => mutableRigidBodyOptionKeys.flatMap(key => {
|
703
703
|
return vectorToTuple(props[key]);
|
704
704
|
}), [props]);
|
705
|
-
React
|
705
|
+
React.useEffect(() => {
|
706
706
|
if (Array.isArray(rigidBodyRef.current)) {
|
707
707
|
for (const rigidBody of rigidBodyRef.current) {
|
708
708
|
setRigidBodyOptions(rigidBody, props, states, updateTranslations);
|
@@ -729,7 +729,7 @@ const useRigidBodyEvents = (rigidBodyRef, props, events) => {
|
|
729
729
|
onIntersectionEnter,
|
730
730
|
onIntersectionExit
|
731
731
|
};
|
732
|
-
React
|
732
|
+
React.useEffect(() => {
|
733
733
|
if (Array.isArray(rigidBodyRef.current)) {
|
734
734
|
for (const rigidBody of rigidBodyRef.current) {
|
735
735
|
events.set(rigidBody.handle, eventHandlers);
|
@@ -872,10 +872,10 @@ const setColliderOptions = (collider, options, states) => {
|
|
872
872
|
};
|
873
873
|
const useUpdateColliderOptions = (collidersRef, props, states) => {
|
874
874
|
// TODO: Improve this, split each prop into its own effect
|
875
|
-
const mutablePropsAsFlatArray = React
|
875
|
+
const mutablePropsAsFlatArray = React.useMemo(() => mutableColliderOptionKeys.flatMap(key => {
|
876
876
|
return vectorToTuple(props[key]);
|
877
877
|
}), [props]);
|
878
|
-
React
|
878
|
+
React.useEffect(() => {
|
879
879
|
collidersRef.current.forEach(collider => {
|
880
880
|
setColliderOptions(collider, props, states);
|
881
881
|
});
|
@@ -1008,7 +1008,7 @@ const useColliderEvents = (collidersRef, props, events) => {
|
|
1008
1008
|
onIntersectionEnter,
|
1009
1009
|
onIntersectionExit
|
1010
1010
|
} = props;
|
1011
|
-
React
|
1011
|
+
React.useEffect(() => {
|
1012
1012
|
var _collidersRef$current;
|
1013
1013
|
|
1014
1014
|
(_collidersRef$current = collidersRef.current) === null || _collidersRef$current === void 0 ? void 0 : _collidersRef$current.forEach(collider => {
|
@@ -1032,11 +1032,11 @@ const useColliderEvents = (collidersRef, props, events) => {
|
|
1032
1032
|
};
|
1033
1033
|
|
1034
1034
|
const useRapier = () => {
|
1035
|
-
return React
|
1035
|
+
return React.useContext(RapierContext);
|
1036
1036
|
};
|
1037
1037
|
const useChildColliderProps = (ref, options, ignoreMeshColliders = true) => {
|
1038
|
-
const [colliderProps, setColliderProps] = React
|
1039
|
-
React
|
1038
|
+
const [colliderProps, setColliderProps] = React.useState([]);
|
1039
|
+
React.useEffect(() => {
|
1040
1040
|
const object = ref.current;
|
1041
1041
|
|
1042
1042
|
if (object && options.colliders !== false) {
|
@@ -1056,16 +1056,16 @@ const useRigidBody = (options = {}) => {
|
|
1056
1056
|
physicsOptions,
|
1057
1057
|
rigidBodyEvents
|
1058
1058
|
} = useRapier();
|
1059
|
-
const ref = React
|
1060
|
-
const mergedOptions = React
|
1059
|
+
const ref = React.useRef();
|
1060
|
+
const mergedOptions = React.useMemo(() => {
|
1061
1061
|
return _objectSpread2(_objectSpread2(_objectSpread2({}, physicsOptions), options), {}, {
|
1062
1062
|
children: undefined
|
1063
1063
|
});
|
1064
1064
|
}, [physicsOptions, options]);
|
1065
1065
|
const childColliderProps = useChildColliderProps(ref, mergedOptions); // Create rigidbody
|
1066
1066
|
|
1067
|
-
const rigidBodyRef = React
|
1068
|
-
const getRigidBodyRef = React
|
1067
|
+
const rigidBodyRef = React.useRef();
|
1068
|
+
const getRigidBodyRef = React.useRef(() => {
|
1069
1069
|
if (!rigidBodyRef.current) {
|
1070
1070
|
const desc = rigidBodyDescFromOptions(options);
|
1071
1071
|
const rigidBody = world.createRigidBody(desc);
|
@@ -1075,7 +1075,7 @@ const useRigidBody = (options = {}) => {
|
|
1075
1075
|
return rigidBodyRef.current;
|
1076
1076
|
}); // Setup
|
1077
1077
|
|
1078
|
-
React
|
1078
|
+
React.useEffect(() => {
|
1079
1079
|
const rigidBody = getRigidBodyRef.current();
|
1080
1080
|
rigidBodyRef.current = rigidBody;
|
1081
1081
|
|
@@ -1097,7 +1097,7 @@ const useRigidBody = (options = {}) => {
|
|
1097
1097
|
}, []);
|
1098
1098
|
useUpdateRigidBodyOptions(rigidBodyRef, mergedOptions, rigidBodyStates);
|
1099
1099
|
useRigidBodyEvents(rigidBodyRef, mergedOptions, rigidBodyEvents);
|
1100
|
-
const api = React
|
1100
|
+
const api = React.useMemo(() => createRigidBodyApi(getRigidBodyRef), []);
|
1101
1101
|
return [ref, api, childColliderProps];
|
1102
1102
|
}; // Joints
|
1103
1103
|
|
@@ -1105,8 +1105,8 @@ const useImpulseJoint = (body1, body2, params) => {
|
|
1105
1105
|
const {
|
1106
1106
|
world
|
1107
1107
|
} = useRapier();
|
1108
|
-
const jointRef = React
|
1109
|
-
const getJointRef = React
|
1108
|
+
const jointRef = React.useRef();
|
1109
|
+
const getJointRef = React.useRef(() => {
|
1110
1110
|
if (!jointRef.current) {
|
1111
1111
|
let rb1;
|
1112
1112
|
let rb2;
|
@@ -1121,7 +1121,7 @@ const useImpulseJoint = (body1, body2, params) => {
|
|
1121
1121
|
|
1122
1122
|
return jointRef.current;
|
1123
1123
|
});
|
1124
|
-
React
|
1124
|
+
React.useEffect(() => {
|
1125
1125
|
const joint = getJointRef.current();
|
1126
1126
|
return () => {
|
1127
1127
|
if (joint) {
|
@@ -1130,7 +1130,7 @@ const useImpulseJoint = (body1, body2, params) => {
|
|
1130
1130
|
}
|
1131
1131
|
};
|
1132
1132
|
}, []);
|
1133
|
-
const api = React
|
1133
|
+
const api = React.useMemo(() => createJointApi(getJointRef), []);
|
1134
1134
|
return api;
|
1135
1135
|
};
|
1136
1136
|
/**
|
@@ -1189,7 +1189,7 @@ const usePrismaticJoint = (body1, body2, [body1Anchor, body2Anchor, axis]) => {
|
|
1189
1189
|
};
|
1190
1190
|
|
1191
1191
|
// Colliders
|
1192
|
-
const AnyCollider = /*#__PURE__*/React
|
1192
|
+
const AnyCollider = /*#__PURE__*/React.memo( /*#__PURE__*/React__default["default"].forwardRef((props, forwardedRef) => {
|
1193
1193
|
const {
|
1194
1194
|
children,
|
1195
1195
|
position,
|
@@ -1203,8 +1203,8 @@ const AnyCollider = /*#__PURE__*/React$1.memo( /*#__PURE__*/React__default["defa
|
|
1203
1203
|
colliderStates
|
1204
1204
|
} = useRapier();
|
1205
1205
|
const rigidBodyContext = useRigidBodyContext();
|
1206
|
-
const ref = React
|
1207
|
-
const collidersRef = React
|
1206
|
+
const ref = React.useRef(null);
|
1207
|
+
const collidersRef = React.useMemo(() => {
|
1208
1208
|
if (forwardedRef !== null) {
|
1209
1209
|
return forwardedRef;
|
1210
1210
|
}
|
@@ -1213,7 +1213,7 @@ const AnyCollider = /*#__PURE__*/React$1.memo( /*#__PURE__*/React__default["defa
|
|
1213
1213
|
result.current = [];
|
1214
1214
|
return result;
|
1215
1215
|
}, []);
|
1216
|
-
React
|
1216
|
+
React.useEffect(() => {
|
1217
1217
|
const object = ref.current;
|
1218
1218
|
const worldScale = object.getWorldScale(new three.Vector3());
|
1219
1219
|
const colliders = []; // If this is an InstancedRigidBody api
|
@@ -1245,7 +1245,7 @@ const AnyCollider = /*#__PURE__*/React$1.memo( /*#__PURE__*/React__default["defa
|
|
1245
1245
|
});
|
1246
1246
|
};
|
1247
1247
|
}, []);
|
1248
|
-
const mergedProps = React
|
1248
|
+
const mergedProps = React.useMemo(() => {
|
1249
1249
|
return _objectSpread2(_objectSpread2({}, rigidBodyContext === null || rigidBodyContext === void 0 ? void 0 : rigidBodyContext.options), props);
|
1250
1250
|
}, [props, rigidBodyContext === null || rigidBodyContext === void 0 ? void 0 : rigidBodyContext.options]);
|
1251
1251
|
useUpdateColliderOptions(collidersRef, mergedProps, colliderStates);
|
@@ -1314,9 +1314,9 @@ const ConvexHullCollider = /*#__PURE__*/React__default["default"].forwardRef((pr
|
|
1314
1314
|
});
|
1315
1315
|
|
1316
1316
|
const _excluded$1 = ["children", "type", "position", "rotation", "scale", "quaternion"];
|
1317
|
-
const RigidBodyContext = /*#__PURE__*/React
|
1318
|
-
const useRigidBodyContext = () => React
|
1319
|
-
const RigidBody = /*#__PURE__*/React
|
1317
|
+
const RigidBodyContext = /*#__PURE__*/React.createContext(undefined);
|
1318
|
+
const useRigidBodyContext = () => React.useContext(RigidBodyContext);
|
1319
|
+
const RigidBody = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef((props, ref) => {
|
1320
1320
|
const {
|
1321
1321
|
children,
|
1322
1322
|
type,
|
@@ -1328,8 +1328,8 @@ const RigidBody = /*#__PURE__*/React$1.memo( /*#__PURE__*/React$1.forwardRef((pr
|
|
1328
1328
|
objectProps = _objectWithoutProperties(props, _excluded$1);
|
1329
1329
|
|
1330
1330
|
const [object, api, childColliderProps] = useRigidBody(props);
|
1331
|
-
React
|
1332
|
-
const contextValue = React
|
1331
|
+
React.useImperativeHandle(ref, () => api);
|
1332
|
+
const contextValue = React.useMemo(() => ({
|
1333
1333
|
ref: object,
|
1334
1334
|
api,
|
1335
1335
|
options: props
|
@@ -1357,11 +1357,11 @@ const MeshCollider = props => {
|
|
1357
1357
|
physicsOptions,
|
1358
1358
|
world
|
1359
1359
|
} = useRapier();
|
1360
|
-
const object = React
|
1360
|
+
const object = React.useRef(null);
|
1361
1361
|
const {
|
1362
1362
|
options
|
1363
1363
|
} = useRigidBodyContext();
|
1364
|
-
const mergedOptions = React
|
1364
|
+
const mergedOptions = React.useMemo(() => {
|
1365
1365
|
return _objectSpread2(_objectSpread2(_objectSpread2({}, physicsOptions), options), {}, {
|
1366
1366
|
children: undefined,
|
1367
1367
|
colliders: type
|
@@ -1382,7 +1382,7 @@ const Debug = () => {
|
|
1382
1382
|
const {
|
1383
1383
|
world
|
1384
1384
|
} = useRapier();
|
1385
|
-
const ref = React
|
1385
|
+
const ref = React.useRef(null);
|
1386
1386
|
fiber.useFrame(() => {
|
1387
1387
|
const mesh = ref.current;
|
1388
1388
|
if (!mesh) return;
|
@@ -1390,23 +1390,24 @@ const Debug = () => {
|
|
1390
1390
|
mesh.geometry.setAttribute("position", new three.BufferAttribute(buffers.vertices, 3));
|
1391
1391
|
mesh.geometry.setAttribute("color", new three.BufferAttribute(buffers.colors, 4));
|
1392
1392
|
});
|
1393
|
-
return /*#__PURE__*/
|
1394
|
-
ref: ref
|
1395
|
-
|
1393
|
+
return /*#__PURE__*/React__default["default"].createElement("lineSegments", {
|
1394
|
+
ref: ref,
|
1395
|
+
frustumCulled: false
|
1396
|
+
}, /*#__PURE__*/React__default["default"].createElement("lineBasicMaterial", {
|
1396
1397
|
color: 0xffffff,
|
1397
1398
|
vertexColors: true
|
1398
|
-
}), /*#__PURE__*/
|
1399
|
+
}), /*#__PURE__*/React__default["default"].createElement("bufferGeometry", null));
|
1399
1400
|
};
|
1400
1401
|
|
1401
1402
|
const _excluded = ["positions", "rotations", "children"];
|
1402
|
-
const InstancedRigidBodies = /*#__PURE__*/React
|
1403
|
+
const InstancedRigidBodies = /*#__PURE__*/React.forwardRef((props, ref) => {
|
1403
1404
|
const {
|
1404
1405
|
world,
|
1405
1406
|
rigidBodyStates,
|
1406
1407
|
physicsOptions,
|
1407
1408
|
rigidBodyEvents
|
1408
1409
|
} = useRapier();
|
1409
|
-
const object = React
|
1410
|
+
const object = React.useRef(null);
|
1410
1411
|
|
1411
1412
|
const {
|
1412
1413
|
positions,
|
@@ -1415,20 +1416,20 @@ const InstancedRigidBodies = /*#__PURE__*/React$1.forwardRef((props, ref) => {
|
|
1415
1416
|
} = props,
|
1416
1417
|
options = _objectWithoutProperties(props, _excluded);
|
1417
1418
|
|
1418
|
-
const instancesRef = React
|
1419
|
-
const rigidBodyRefs = React
|
1420
|
-
const instancesRefGetter = React
|
1419
|
+
const instancesRef = React.useRef([]);
|
1420
|
+
const rigidBodyRefs = React.useRef([]);
|
1421
|
+
const instancesRefGetter = React.useRef(() => {
|
1421
1422
|
if (!instancesRef.current) {
|
1422
1423
|
instancesRef.current = [];
|
1423
1424
|
}
|
1424
1425
|
|
1425
1426
|
return instancesRef.current;
|
1426
1427
|
});
|
1427
|
-
const mergedOptions = React
|
1428
|
+
const mergedOptions = React.useMemo(() => {
|
1428
1429
|
return _objectSpread2(_objectSpread2({}, physicsOptions), options);
|
1429
1430
|
}, [physicsOptions, options]);
|
1430
1431
|
const childColliderProps = useChildColliderProps(object, mergedOptions);
|
1431
|
-
React
|
1432
|
+
React.useLayoutEffect(() => {
|
1432
1433
|
object.current.updateWorldMatrix(true, false);
|
1433
1434
|
const instances = instancesRefGetter.current();
|
1434
1435
|
const invertedWorld = object.current.matrixWorld.clone().invert();
|
@@ -1489,11 +1490,11 @@ const InstancedRigidBodies = /*#__PURE__*/React$1.forwardRef((props, ref) => {
|
|
1489
1490
|
instancesRef.current = [];
|
1490
1491
|
};
|
1491
1492
|
}, []);
|
1492
|
-
const api = React
|
1493
|
-
React
|
1493
|
+
const api = React.useMemo(() => createInstancedRigidBodiesApi(instancesRefGetter), []);
|
1494
|
+
React.useImperativeHandle(ref, () => api);
|
1494
1495
|
useUpdateRigidBodyOptions(rigidBodyRefs, mergedOptions, rigidBodyStates, false);
|
1495
1496
|
useRigidBodyEvents(rigidBodyRefs, mergedOptions, rigidBodyEvents);
|
1496
|
-
const contextValue = React
|
1497
|
+
const contextValue = React.useMemo(() => {
|
1497
1498
|
return {
|
1498
1499
|
ref: object,
|
1499
1500
|
api,
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { EventQueue, RigidBodyDesc, ColliderDesc, ActiveEvents } from '@dimforge/rapier3d-compat';
|
2
2
|
export { CoefficientCombineRule, Collider as RapierCollider, RigidBody as RapierRigidBody } from '@dimforge/rapier3d-compat';
|
3
|
-
import React
|
3
|
+
import React, { useRef, useState, useEffect, useMemo, createContext, useContext, memo, forwardRef, useImperativeHandle, useLayoutEffect } from 'react';
|
4
4
|
import { useAsset } from 'use-asset';
|
5
5
|
import { useFrame } from '@react-three/fiber';
|
6
6
|
import { Quaternion, Euler, Vector3, Object3D, Matrix4, MathUtils, InstancedMesh, BufferAttribute, DynamicDrawUsage } from 'three';
|
@@ -486,7 +486,7 @@ const Physics = ({
|
|
486
486
|
colliderEvents,
|
487
487
|
isPaused: _paused
|
488
488
|
}), [_paused]);
|
489
|
-
return /*#__PURE__*/React
|
489
|
+
return /*#__PURE__*/React.createElement(RapierContext.Provider, {
|
490
490
|
value: context
|
491
491
|
}, children);
|
492
492
|
};
|
@@ -1164,7 +1164,7 @@ const usePrismaticJoint = (body1, body2, [body1Anchor, body2Anchor, axis]) => {
|
|
1164
1164
|
};
|
1165
1165
|
|
1166
1166
|
// Colliders
|
1167
|
-
const AnyCollider = /*#__PURE__*/memo( /*#__PURE__*/React
|
1167
|
+
const AnyCollider = /*#__PURE__*/memo( /*#__PURE__*/React.forwardRef((props, forwardedRef) => {
|
1168
1168
|
const {
|
1169
1169
|
children,
|
1170
1170
|
position,
|
@@ -1184,7 +1184,7 @@ const AnyCollider = /*#__PURE__*/memo( /*#__PURE__*/React$1.forwardRef((props, f
|
|
1184
1184
|
return forwardedRef;
|
1185
1185
|
}
|
1186
1186
|
|
1187
|
-
const result = /*#__PURE__*/React
|
1187
|
+
const result = /*#__PURE__*/React.createRef();
|
1188
1188
|
result.current = [];
|
1189
1189
|
return result;
|
1190
1190
|
}, []);
|
@@ -1225,7 +1225,7 @@ const AnyCollider = /*#__PURE__*/memo( /*#__PURE__*/React$1.forwardRef((props, f
|
|
1225
1225
|
}, [props, rigidBodyContext === null || rigidBodyContext === void 0 ? void 0 : rigidBodyContext.options]);
|
1226
1226
|
useUpdateColliderOptions(collidersRef, mergedProps, colliderStates);
|
1227
1227
|
useColliderEvents(collidersRef, mergedProps, colliderEvents);
|
1228
|
-
return /*#__PURE__*/React
|
1228
|
+
return /*#__PURE__*/React.createElement("object3D", {
|
1229
1229
|
position: position,
|
1230
1230
|
rotation: rotation,
|
1231
1231
|
quaternion: quaternion,
|
@@ -1233,56 +1233,56 @@ const AnyCollider = /*#__PURE__*/memo( /*#__PURE__*/React$1.forwardRef((props, f
|
|
1233
1233
|
ref: ref
|
1234
1234
|
}, children);
|
1235
1235
|
}));
|
1236
|
-
const CuboidCollider = /*#__PURE__*/React
|
1237
|
-
return /*#__PURE__*/React
|
1236
|
+
const CuboidCollider = /*#__PURE__*/React.forwardRef((props, ref) => {
|
1237
|
+
return /*#__PURE__*/React.createElement(AnyCollider, _extends({}, props, {
|
1238
1238
|
shape: "cuboid",
|
1239
1239
|
ref: ref
|
1240
1240
|
}));
|
1241
1241
|
});
|
1242
|
-
const RoundCuboidCollider = /*#__PURE__*/React
|
1243
|
-
return /*#__PURE__*/React
|
1242
|
+
const RoundCuboidCollider = /*#__PURE__*/React.forwardRef((props, ref) => {
|
1243
|
+
return /*#__PURE__*/React.createElement(AnyCollider, _extends({}, props, {
|
1244
1244
|
shape: "roundCuboid",
|
1245
1245
|
ref: ref
|
1246
1246
|
}));
|
1247
1247
|
});
|
1248
|
-
const BallCollider = /*#__PURE__*/React
|
1249
|
-
return /*#__PURE__*/React
|
1248
|
+
const BallCollider = /*#__PURE__*/React.forwardRef((props, ref) => {
|
1249
|
+
return /*#__PURE__*/React.createElement(AnyCollider, _extends({}, props, {
|
1250
1250
|
shape: "ball",
|
1251
1251
|
ref: ref
|
1252
1252
|
}));
|
1253
1253
|
});
|
1254
|
-
const CapsuleCollider = /*#__PURE__*/React
|
1255
|
-
return /*#__PURE__*/React
|
1254
|
+
const CapsuleCollider = /*#__PURE__*/React.forwardRef((props, ref) => {
|
1255
|
+
return /*#__PURE__*/React.createElement(AnyCollider, _extends({}, props, {
|
1256
1256
|
shape: "capsule",
|
1257
1257
|
ref: ref
|
1258
1258
|
}));
|
1259
1259
|
});
|
1260
|
-
const HeightfieldCollider = /*#__PURE__*/React
|
1261
|
-
return /*#__PURE__*/React
|
1260
|
+
const HeightfieldCollider = /*#__PURE__*/React.forwardRef((props, ref) => {
|
1261
|
+
return /*#__PURE__*/React.createElement(AnyCollider, _extends({}, props, {
|
1262
1262
|
shape: "heightfield",
|
1263
1263
|
ref: ref
|
1264
1264
|
}));
|
1265
1265
|
});
|
1266
|
-
const TrimeshCollider = /*#__PURE__*/React
|
1267
|
-
return /*#__PURE__*/React
|
1266
|
+
const TrimeshCollider = /*#__PURE__*/React.forwardRef((props, ref) => {
|
1267
|
+
return /*#__PURE__*/React.createElement(AnyCollider, _extends({}, props, {
|
1268
1268
|
shape: "trimesh",
|
1269
1269
|
ref: ref
|
1270
1270
|
}));
|
1271
1271
|
});
|
1272
|
-
const ConeCollider = /*#__PURE__*/React
|
1273
|
-
return /*#__PURE__*/React
|
1272
|
+
const ConeCollider = /*#__PURE__*/React.forwardRef((props, ref) => {
|
1273
|
+
return /*#__PURE__*/React.createElement(AnyCollider, _extends({}, props, {
|
1274
1274
|
shape: "cone",
|
1275
1275
|
ref: ref
|
1276
1276
|
}));
|
1277
1277
|
});
|
1278
|
-
const CylinderCollider = /*#__PURE__*/React
|
1279
|
-
return /*#__PURE__*/React
|
1278
|
+
const CylinderCollider = /*#__PURE__*/React.forwardRef((props, ref) => {
|
1279
|
+
return /*#__PURE__*/React.createElement(AnyCollider, _extends({}, props, {
|
1280
1280
|
shape: "cylinder",
|
1281
1281
|
ref: ref
|
1282
1282
|
}));
|
1283
1283
|
});
|
1284
|
-
const ConvexHullCollider = /*#__PURE__*/React
|
1285
|
-
return /*#__PURE__*/React
|
1284
|
+
const ConvexHullCollider = /*#__PURE__*/React.forwardRef((props, ref) => {
|
1285
|
+
return /*#__PURE__*/React.createElement(AnyCollider, _extends({}, props, {
|
1286
1286
|
shape: "convexHull",
|
1287
1287
|
ref: ref
|
1288
1288
|
}));
|
@@ -1309,16 +1309,16 @@ const RigidBody = /*#__PURE__*/memo( /*#__PURE__*/forwardRef((props, ref) => {
|
|
1309
1309
|
api,
|
1310
1310
|
options: props
|
1311
1311
|
}), [object, api, props]);
|
1312
|
-
return /*#__PURE__*/React
|
1312
|
+
return /*#__PURE__*/React.createElement(RigidBodyContext.Provider, {
|
1313
1313
|
value: contextValue
|
1314
|
-
}, /*#__PURE__*/React
|
1314
|
+
}, /*#__PURE__*/React.createElement("object3D", _extends({
|
1315
1315
|
ref: object
|
1316
1316
|
}, objectProps, {
|
1317
1317
|
position: position,
|
1318
1318
|
rotation: rotation,
|
1319
1319
|
quaternion: quaternion,
|
1320
1320
|
scale: scale
|
1321
|
-
}), children, childColliderProps.map((colliderProps, index) => /*#__PURE__*/React
|
1321
|
+
}), children, childColliderProps.map((colliderProps, index) => /*#__PURE__*/React.createElement(AnyCollider, _extends({
|
1322
1322
|
key: index
|
1323
1323
|
}, colliderProps)))));
|
1324
1324
|
}));
|
@@ -1343,12 +1343,12 @@ const MeshCollider = props => {
|
|
1343
1343
|
});
|
1344
1344
|
}, [physicsOptions, options]);
|
1345
1345
|
const childColliderProps = useChildColliderProps(object, mergedOptions, false);
|
1346
|
-
return /*#__PURE__*/React
|
1346
|
+
return /*#__PURE__*/React.createElement("object3D", {
|
1347
1347
|
ref: object,
|
1348
1348
|
userData: {
|
1349
1349
|
r3RapierType: "MeshCollider"
|
1350
1350
|
}
|
1351
|
-
}, children, childColliderProps.map((colliderProps, index) => /*#__PURE__*/React
|
1351
|
+
}, children, childColliderProps.map((colliderProps, index) => /*#__PURE__*/React.createElement(AnyCollider, _extends({
|
1352
1352
|
key: index
|
1353
1353
|
}, colliderProps))));
|
1354
1354
|
};
|
@@ -1366,7 +1366,8 @@ const Debug = () => {
|
|
1366
1366
|
mesh.geometry.setAttribute("color", new BufferAttribute(buffers.colors, 4));
|
1367
1367
|
});
|
1368
1368
|
return /*#__PURE__*/React.createElement("lineSegments", {
|
1369
|
-
ref: ref
|
1369
|
+
ref: ref,
|
1370
|
+
frustumCulled: false
|
1370
1371
|
}, /*#__PURE__*/React.createElement("lineBasicMaterial", {
|
1371
1372
|
color: 0xffffff,
|
1372
1373
|
vertexColors: true
|
@@ -1475,11 +1476,11 @@ const InstancedRigidBodies = /*#__PURE__*/forwardRef((props, ref) => {
|
|
1475
1476
|
options: mergedOptions
|
1476
1477
|
};
|
1477
1478
|
}, [api, mergedOptions]);
|
1478
|
-
return /*#__PURE__*/React
|
1479
|
+
return /*#__PURE__*/React.createElement(RigidBodyContext.Provider, {
|
1479
1480
|
value: contextValue
|
1480
|
-
}, /*#__PURE__*/React
|
1481
|
+
}, /*#__PURE__*/React.createElement("object3D", {
|
1481
1482
|
ref: object
|
1482
|
-
}, props.children, childColliderProps.map((colliderProps, index) => /*#__PURE__*/React
|
1483
|
+
}, props.children, childColliderProps.map((colliderProps, index) => /*#__PURE__*/React.createElement(AnyCollider, _extends({
|
1483
1484
|
key: index
|
1484
1485
|
}, colliderProps)))));
|
1485
1486
|
});
|