Godot Jolt Versions Save

Godot Jolt is a Godot extension that integrates the Jolt physics engine

v0.12.0-stable

4 months ago

This release only supports Godot 4.2 (including 4.2.x).

Changelog

These are the notable changes that have been made since 0.11.0-stable was released. You can also find a list of all the commits here.

Any breaking changes are denoted with ⚠️.

Changed

  • ⚠️ Changed so that single-body joints now implicitly sets node_a to be the "world node" rather than node_b. This diverges from how Godot Physics behaves, but matches how Bullet behaves in Godot 3, and yields more intuitive outcomes for the 6DOF joints.
  • ⚠️ Changed Generic6DOFJoint3D and ConeTwistJointImpl3D, as well as their substitute joints, to use pyramid-shaped angular limits instead of cone-shaped limits, to better match Godot Physics.
  • ⚠️ Reversed the direction of the equilibrium_point properties for Generic6DOFJoint3D and JoltGeneric6DOFJoint3D, to match the direction of the angular limits.
  • ⚠️ Changed the rotation order of the equilibrium_point properties for Generic6DOFJoint3D and JoltGeneric6DOFJoint3D, from ZXY to XYZ, to match the rotation order of the angular limits.
  • Mirrored the way in which linear limits are visualized for JoltSliderJoint3D and JoltGeneric6DOFJoint3D.

Added

  • Added new project setting, "World Node", for controlling which of the two nodes in a single-body joint becomes the "world node" when omitting one of the nodes. This allows for reverting back to the behavior of Godot Physics if needed, effectively undoing the breaking change mentioned above.
  • Added new project setting, "Report All Kinematic Contacts", for allowing RigidBody3D frozen with FREEZE_MODE_KINEMATIC to report contacts/collisions with other kinematic/static bodies, at a potentially heavy performance/memory cost.
  • Added support for using NaN to indicate holes in HeightMapShape3D.
  • Added support for holes in a non-square HeightMapShape3D.

Fixed

  • ⚠️ Fixed issue with non-square HeightMapShape3D not using back-face collision.
  • Fixed issue where contact shape indices would sometimes always be the same index across all contacts with a particular body.
  • Fixed runtime crash when setting the max_contacts_reported property to a lower value.
  • Fixed issue where Generic6DOFJoint3D and JoltGeneric6DOFJoint3D would yield odd limit shapes when using both linear and angular asymmetrical limits.
  • Fixed issue where the equilibrium point for Generic6DOFJoint3D and JoltGeneric6DOFJoint3D would be moved when using asymmetrical limits.
  • Fixed crash that could occur under rare circumstances when shutting down the editor after having added/removed collision shapes.
  • Fixed issue where a RigidBody3D with locked axes colliding with a StaticBody3D (or another frozen RigidBody3D using FREEZE_MODE_STATIC) would result in NaNs.
  • Fixed issue where HingeJoint3D and JoltHingeJoint3D would sometimes dull forces applied to either of its bodies when at either of its limits.
  • Fixed issue with iOS Info.plist missing the MinimumOSVersion key.

v0.11.0-stable

5 months ago

This release only supports Godot 4.2 (including 4.2.x).

Changelog

These are the notable changes that have been made since 0.10.0-stable was released. You can also find a list of all the commits here.

Any breaking changes are denoted with ⚠️.

Changed

  • ⚠️ Changed HeightMapShape3D to always use back-face collision, to match Godot Physics.

Fixed

  • Fixed issue with project randomly freezing up when having many active physics spaces.
  • Fixed issue with static and kinematic bodies not correctly incorporating surface velocities, also known as "constant velocities", as part of their reported velocities. This also makes it so move_and_slide will respect such velocities.
  • Fixed issue with global transform not being preserved when reparenting a RigidBody3D.
  • Fixed issue where the callback passed to body_set_force_integration_callback could be called even when the body is sleeping.

v0.10.0-stable

5 months ago

This release supports Godot 4.1.

Changelog

These are the notable changes that have been made since 0.9.0-stable was released. You can also find a list of all the commits here.

Any breaking changes are denoted with ⚠️.

Changed

  • ⚠️ Changed gravity_point_unit_distance for Area3D to result in a constant gravity when set to zero, rather than resulting in a zero gravity, to match Godot Physics.
  • ⚠️ Changed so that ray-casts using the hit_from_inside parameter report a zero normal when hitting a convex shape from inside, to match Godot Physics.
  • Changed the space_get_contacts method of PhysicsServer3D (and thus also the "Visible Collision Shapes" debug rendering) to no longer include contacts generated by overlaps with Area3D.

Added

  • Added support for Android (ARM64, ARM32, x86-64 and x86).
  • Added support for iOS.

Fixed

  • Fixed issue where an error saying Parameter "body" is null would be emitted after freeing certain bodies while they were in contact with a CharacterBody3D.
  • Fixed issue where a RigidBody3D could sometimes still be moved by another RigidBody3D despite the first body not having the second body in its collision mask.

v0.10.0-rc2

6 months ago

This is the second release candidate for version 0.10.0, and assuming no major bugs/regressions are found is likely to become 0.10.0-stable.

This release supports Godot 4.1.

Changelog

These are the notable changes that have been made since 0.9.0-stable was released. You can also find a list of all the commits here.

Any breaking changes are denoted with ⚠️.

Changed

  • ⚠️ Changed so that ray-casts using the hit_from_inside parameter report a zero normal when hitting a convex shape from inside, to match Godot Physics.
  • Changed the space_get_contacts method of PhysicsServer3D (and thus also the "Visible Collision Shapes" debug rendering) to no longer include contacts generated by overlaps with Area3D.

Added

  • Added support for Android (ARM64, ARM32, x86-64 and x86).
  • Added support for iOS.

Fixed

  • Fixed issue where an error saying Parameter "body" is null would be emitted after freeing certain bodies while they were in contact with a CharacterBody3D.

v0.10.0-rc1

6 months ago

This is the first release candidate for version 0.10.0, and assuming no major bugs/regressions are found is likely to become 0.10.0-stable.

This release supports Godot 4.1.

Changelog

These are the notable changes that have been made since 0.9.0-stable was released. You can also find a list of all the commits here.

Any breaking changes are denoted with ⚠️.

Changed

  • ⚠️ Changed so that ray-casts using the hit_from_inside parameter report a zero normal when hitting a convex shape from inside, to match Godot Physics.
  • Changed the space_get_contacts method of PhysicsServer3D (and thus also the "Visible Collision Shapes" debug rendering) to no longer include contacts generated by overlaps with Area3D.

Added

  • Added support for Android (ARM64, ARM32, x86-64 and x86).
  • Added support for iOS.

Fixed

  • Fixed issue where an error saying Parameter "body" is null would be emitted after freeing certain bodies while they were in contact with a CharacterBody3D.

v0.9.0-stable

6 months ago

This release supports Godot 4.1.

Changelog

These are the notable changes that have been made since 0.8.0-stable was released. You can also find a list of all the commits here.

Any breaking changes are denoted with ⚠️.

Changed

  • Changed ConvexPolygonShape3D to no longer emit errors about failing to build the shape when adding one to the scene tree with 0 points.

Added

  • Added new project setting, "Active Edge Threshold", for tuning the cut-off angle for Jolt's active edge detection, which can help balance trade-offs related to triangle edge collisions.

Fixed

  • ⚠️ Fixed issue where Generic6DOFJoint and JoltGeneric6DOFJoint would lock up any axis that used a spring stiffness/frequency of 0.
  • Greatly reduced creation/modification/loading times for ConcavePolygonShape3D.

v0.8.0-stable

7 months ago

This release supports Godot 4.1.

Changelog

These are the notable changes that have been made since 0.7.0-stable was released. You can also find a list of all the commits here.

Any breaking changes are denoted with ⚠️.

Changed

  • ⚠️ Changed apply_force and apply_impulse to be applied at an offset relative to the body's origin rather than at an offset relative to the body's center-of-mass, to match Godot Physics.
  • ⚠️ Changed collision layers and masks for Area3D to behave like they do in Godot Physics, allowing for asymmetrical setups, where overlaps are only reported if the mask of an Area3D contains the layer of the overlapping object.
  • ⚠️ Changed the body_set_force_integration_callback method of PhysicsServer3D to behave like it does with Godot Physics, where omitting the binding of userdata requires that the callback also doesn't take any userdata. It also will no longer be called when the body is sleeping.

Added

  • Added timings of Jolt's various jobs to the "Physics 3D" profiler category.
  • Added registering of JoltPhysicsServer3D as an actual singleton, which makes Jolt-specific server methods (e.g. pin_joint_get_applied_force) easier to deal with from dynamic scripting languages like GDScript.
  • Added space_dump_debug_snapshot to JoltPhysicsServer3D, for dumping a binary debug snapshot of a particular physics space.
  • Added dump_debug_snapshots to JoltPhysicsServer3D, for dumping binary debug snapshots of all currently active physics spaces.
  • Added a "Dump Debug Snapshots" menu option to "Project / Tools / Jolt Physics", for dumping binary debug snapshots of all the editor's physics spaces.

Fixed

  • Fixed issue with move_and_slide, where under certain conditions you could get stuck on internal edges of a ConcavePolygonShape3D if the floor was within 5-ish degrees of floor_max_angle.
  • Fixed issue with move_and_slide, where under certain conditions, while using a BoxShape3D or CylinderShape3D shape, you could get stuck on internal edges of a ConcavePolygonShape3D.
  • Fixed issue where collision with ConvexPolygonShape3D could yield a flipped contact normal.
  • Fixed issue where an Area3D with monitoring disabled wouldn't emit any entered events for already overlapping bodies once monitoring was enabled.
  • Fixed issue where changing the center-of-mass of a RigidBody3D attached to a joint would shift its transform relative to the joint.
  • Fixed issue where the total_gravity property on PhysicsDirectBodyState3D would always return a zero vector for kinematic bodies.
  • Fixed issue with Area3D detecting overlaps slightly outside of its collision shapes.

v0.8.0-rc2

7 months ago

This is the second release candidate for version 0.8.0, and assuming no major bugs/regressions are found is likely to become 0.8.0-stable.

This release supports Godot 4.1.

Changelog

These are the notable changes that have been made since 0.7.0-stable was released. You can also find a list of all the commits here.

Any breaking changes are denoted with ⚠️.

Changed

  • ⚠️ Changed collision layers and masks for Area3D to behave like they do in Godot Physics, allowing for asymmetrical setups, where overlaps are only reported if the mask of an Area3D contains the layer of the overlapping object.
  • ⚠️ Changed the body_set_force_integration_callback method of PhysicsServer3D to behave like it does with Godot Physics, where omitting the binding of userdata requires that the callback also doesn't take any userdata. It also will no longer be called when the body is sleeping.

Added

  • Added timings of Jolt's various jobs to the "Physics 3D" profiler category.
  • Added registering of JoltPhysicsServer3D as an actual singleton, which makes Jolt-specific server methods (e.g. pin_joint_get_applied_force) easier to deal with from dynamic scripting languages like GDScript.
  • Added space_dump_debug_snapshot to JoltPhysicsServer3D, for dumping a binary debug snapshot of a particular physics space.
  • Added dump_debug_snapshots to JoltPhysicsServer3D, for dumping binary debug snapshots of all currently active physics spaces.
  • Added a "Dump Debug Snapshots" menu option to "Project / Tools / Jolt Physics", for dumping binary debug snapshots of all the editor's physics spaces.

Fixed

  • Fixed issue with move_and_slide, where under certain conditions you could get stuck on internal edges of a ConcavePolygonShape3D if the floor was within 5-ish degrees of floor_max_angle.
  • Fixed issue with move_and_slide, where under certain conditions, while using a BoxShape3D or CylinderShape3D shape, you could get stuck on internal edges of a ConcavePolygonShape3D.
  • Fixed issue where collision with ConvexPolygonShape3D could yield a flipped contact normal.
  • Fixed issue where an Area3D with monitoring disabled wouldn't emit any entered events for already overlapping bodies once monitoring was enabled.
  • Fixed issue where changing the center-of-mass of a RigidBody3D attached to a joint would shift its transform relative to the joint.
  • Fixed issue where the total_gravity property on PhysicsDirectBodyState3D would always return a zero vector for kinematic bodies.
  • Fixed issue with Area3D detecting overlaps slightly outside of its collision shapes.

v0.8.0-rc1

7 months ago

This is the first release candidate for version 0.8.0, and assuming no major bugs/regressions are found is likely to become 0.8.0-stable.

This release supports Godot 4.1.

Changelog

These are the notable changes that have been made since 0.7.0-stable was released. You can also find a list of all the commits here.

Any breaking changes are denoted with ⚠️.

Changed

  • ⚠️ Changed collision layers and masks for Area3D to behave like they do in Godot Physics, allowing for asymmetrical setups, where overlaps are only reported if the mask of an Area3D contains the layer of the overlapping object.
  • ⚠️ Changed the body_set_force_integration_callback method of PhysicsServer3D to behave like it does with Godot Physics, where omitting the binding of userdata requires that the callback also doesn't take any userdata. It also will no longer be called when the body is sleeping.

Added

  • Added timings of Jolt's various jobs to the "Physics 3D" profiler category.
  • Added registering of JoltPhysicsServer3D as an actual singleton, which makes Jolt-specific server methods (e.g. pin_joint_get_applied_force) easier to deal with from dynamic scripting languages like GDScript.

Fixed

  • Fixed issue with move_and_slide, where under certain conditions you could get stuck on internal edges of a ConcavePolygonShape3D if the floor was within 5-ish degrees of floor_max_angle.
  • Fixed issue with move_and_slide, where under certain conditions, while using a BoxShape3D or CylinderShape3D shape, you could get stuck on internal edges of a ConcavePolygonShape3D.
  • Fixed issue where collision with ConvexPolygonShape3D could yield a flipped contact normal.
  • Fixed issue where an Area3D with monitoring disabled wouldn't emit any entered events for already overlapping bodies once monitoring was enabled.
  • Fixed issue where changing the center-of-mass of a RigidBody3D attached to a joint would shift its transform relative to the joint.
  • Fixed issue where the total_gravity property on PhysicsDirectBodyState3D would always return a zero vector for kinematic bodies.

v0.7.0-stable

8 months ago

This release supports Godot 4.1.

Changelog

These are the notable changes that have been made since 0.6.0-stable was released. You can also find a list of all the commits here.

Any breaking changes are denoted with ⚠️.

Removed

  • ⚠️ Disabled the JoltDebugGeometry3D node for all distributed builds. If you still need it, build from source using the *-development or *-debug configurations.

Changed

  • ⚠️ Ray-casts will no longer hit the back-faces of ConcavePolygonShape3D if its hit_back_faces parameter is set to false, regardless of what the backface_collision property of the ConcavePolygonShape3D is set to.
  • ⚠️ Changed the triangulation of HeightMapShape3D to match Godot Physics.

Fixed

  • ⚠️ Fixed regression where a motored HingeJoint3D (or JoltHingeJoint3D) would rotate counter-clockwise instead of clockwise.
  • Fixed issue where ray-casting a ConcavePolygonShape3D that had backface_collision enabled, you would sometimes end up with a flipped normal.
  • Fixed issue where a CharacterBody3D using move_and_slide could sometimes get stuck when sliding along a wall.
  • Fixed issue where attaching a RigidBody3D with locked axes to a joint could result in NaN velocities/position and subsequently a lot of random errors being emitted from within Godot.