Improve performance for shapeless objects when using Jolt Physics
This commit is contained in:
parent
efb40c1524
commit
63021bb4aa
4 changed files with 14 additions and 1 deletions
|
|
@ -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:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue