The Physics Thread
Since Rayon is multithreaded, concurrency issues may arise if proper steps aren't taken in your mod. This is mainly whenever a change needs to be made to a rigid body or a physics space which is being actively simulated. When in doubt, there are several ways to execute code on the physics thread to ensure consistency.
Queueing a task on the physics thread is the most versatile option since it can be done anywhere. The only thing you need is a Level
, Minecraft
, or MinecraftServer
object. The only downside is the amount of time it may take to start executing is not a guaranteed amount. Here's a few examples where we change the gravity of the physics space:
Force vs Impulse
When applying forces to a rigid body, there are two different calls that can be made:
applyCentralForce
applyCentralImpulse
The difference between them is that applyCentralForce
must be called every step of the physics world in order to be effective since it is force applied over time. On the other hand, applyCentralImpulse
can be called anytime and at whatever interval you prefer since it represents an instantaneous force.
Last updated