Overhaul the cull mask internals for Lights, Decals, and Particle Colliders

Properly pair and unpair instances based on cull mask to avoid any unnecessary processing and to ensure that changing the cull_mask and layer_mask actually updates culling behavior
This commit is contained in:
clayjohn 2025-02-03 23:02:20 -08:00
parent 8f78e7510d
commit 305216f558
13 changed files with 67 additions and 14 deletions

View file

@ -121,6 +121,7 @@ public:
virtual bool particles_collision_is_heightfield(RID p_particles_collision) const = 0;
virtual uint32_t particles_collision_get_height_field_mask(RID p_particles_collision) const = 0;
virtual void particles_collision_set_height_field_mask(RID p_particles_collision, uint32_t p_heightfield_mask) = 0;
virtual uint32_t particles_collision_get_cull_mask(RID p_particles_collision) const = 0;
//used from 2D and 3D
virtual RID particles_collision_instance_create(RID p_collision) = 0;

View file

@ -50,6 +50,7 @@ public:
DEPENDENCY_CHANGED_LIGHT,
DEPENDENCY_CHANGED_LIGHT_SOFT_SHADOW_AND_PROJECTOR,
DEPENDENCY_CHANGED_REFLECTION_PROBE,
DEPENDENCY_CHANGED_CULL_MASK,
};
void changed_notify(DependencyChangedNotification p_notification);