1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-04 12:00:25 +00:00

Fix GPUParticlesCollisionHeightField3D adding collisions excluded by its layer_mask

Co-authored-by: Yahia Zakaria <yahiazakaria13@gmail.com>
This commit is contained in:
Rudolph Bester
2025-01-23 06:24:39 +02:00
parent 1586c5674b
commit b162c59097
14 changed files with 113 additions and 1 deletions

View File

@@ -3971,15 +3971,19 @@ void RendererSceneCull::render_particle_colliders() {
struct CullAABB {
PagedArray<Instance *> *result;
uint32_t heightfield_mask;
_FORCE_INLINE_ bool operator()(void *p_data) {
Instance *p_instance = (Instance *)p_data;
result->push_back(p_instance);
if (p_instance->layer_mask & heightfield_mask) {
result->push_back(p_instance);
}
return false;
}
};
CullAABB cull_aabb;
cull_aabb.result = &instance_cull_result;
cull_aabb.heightfield_mask = RSG::particles_storage->particles_collision_get_height_field_mask(hfpc->base);
hfpc->scenario->indexers[Scenario::INDEXER_GEOMETRY].aabb_query(hfpc->transformed_aabb, cull_aabb);
hfpc->scenario->indexers[Scenario::INDEXER_VOLUMES].aabb_query(hfpc->transformed_aabb, cull_aabb);