mirror of
https://github.com/godotengine/godot.git
synced 2026-01-03 18:11:19 +03:00
Improve performance for shapeless objects when using Jolt Physics
This commit is contained in:
@@ -57,6 +57,11 @@ JPH::BroadPhaseLayer JoltArea3D::_get_broad_phase_layer() const {
|
||||
JPH::ObjectLayer JoltArea3D::_get_object_layer() const {
|
||||
ERR_FAIL_NULL_V(space, 0);
|
||||
|
||||
if (jolt_shape == nullptr || jolt_shape->GetType() == JPH::EShapeType::Empty) {
|
||||
// No point doing collision checks against a shapeless object.
|
||||
return space->map_to_object_layer(_get_broad_phase_layer(), 0, 0);
|
||||
}
|
||||
|
||||
return space->map_to_object_layer(_get_broad_phase_layer(), collision_layer, collision_mask);
|
||||
}
|
||||
|
||||
|
||||
@@ -93,6 +93,11 @@ JPH::BroadPhaseLayer JoltBody3D::_get_broad_phase_layer() const {
|
||||
JPH::ObjectLayer JoltBody3D::_get_object_layer() const {
|
||||
ERR_FAIL_NULL_V(space, 0);
|
||||
|
||||
if (jolt_shape == nullptr || jolt_shape->GetType() == JPH::EShapeType::Empty) {
|
||||
// No point doing collision checks against a shapeless object.
|
||||
return space->map_to_object_layer(_get_broad_phase_layer(), 0, 0);
|
||||
}
|
||||
|
||||
return space->map_to_object_layer(_get_broad_phase_layer(), collision_layer, collision_mask);
|
||||
}
|
||||
|
||||
|
||||
@@ -167,6 +167,9 @@ void JoltShapedObject3D::_dequeue_needs_optimization() {
|
||||
|
||||
void JoltShapedObject3D::_shapes_changed() {
|
||||
commit_shapes(false);
|
||||
}
|
||||
|
||||
void JoltShapedObject3D::_shapes_committed() {
|
||||
_update_object_layer();
|
||||
}
|
||||
|
||||
|
||||
@@ -68,7 +68,7 @@ protected:
|
||||
void _dequeue_needs_optimization();
|
||||
|
||||
virtual void _shapes_changed();
|
||||
virtual void _shapes_committed() {}
|
||||
virtual void _shapes_committed();
|
||||
virtual void _space_changing() override;
|
||||
|
||||
public:
|
||||
|
||||
Reference in New Issue
Block a user