-
Notifications
You must be signed in to change notification settings - Fork 63
0.15.x to 1.x.x Migration guide
Hugo Wiledal edited this page May 21, 2023
·
2 revisions
The WorldApi
has been removed. Instead, you can now get a proxied singleton instance of the world from @react-three/rapier
. This is a breaking change, but it should be easy to migrate to.
Before:
import { useRapier } from "@react-three/rapier";
const Component = () => {
const { world } = useRapier();
useEffect(() => {
// Access to the WorldApi (limited)
world.raw().bodies.forEach(() => {
// Do something
});
// Access the raw Rapier World instance
const rawWorldInstance = world.raw();
rawWorldInstance.raw().setGravity(new Vector3(0, -9.81, 0));
}, []);
};
Now:
import { useRapier } from "@react-three/rapier";
const Component = () => {
const { world } = useRapier();
useEffect(() => {
// Access the Rapier World instance directly
world.bodies.forEach(() => {
// Do something
});
world.setGravity(new Vector3(0, -9.81, 0));
}, []);
};
Note: it is best to avoid accessing properties and methods on the world outside of useEffect
in order for the world to be properly synchronized with the React component lifecycle.
// bad
const Component = () => {
const {world} = useRapier()
world.setGravity(...)
return null
}
// good
const Component = () => {
const {world} = useRapier()
useEffect(() => {
world.setGravity(...)
}, [])
return null
}