Merge pull request #19764 from malbach/godot_malbach
Fix #19507 Not emitted particles affects performance
This commit is contained in:
commit
4b626dc114
12 changed files with 28 additions and 4 deletions
|
|
@ -482,6 +482,7 @@ public:
|
|||
|
||||
virtual void particles_set_emitting(RID p_particles, bool p_emitting) = 0;
|
||||
virtual bool particles_get_emitting(RID p_particles) = 0;
|
||||
virtual bool particles_get_inactive(RID p_particles) = 0;
|
||||
|
||||
virtual void particles_set_amount(RID p_particles, int p_amount) = 0;
|
||||
virtual void particles_set_lifetime(RID p_particles, float p_lifetime) = 0;
|
||||
|
|
|
|||
|
|
@ -396,6 +396,7 @@ public:
|
|||
|
||||
BIND2(particles_set_emitting, RID, bool)
|
||||
BIND1R(bool, particles_get_emitting, RID)
|
||||
BIND1R(bool, particles_get_inactive, RID)
|
||||
BIND2(particles_set_amount, RID, int)
|
||||
BIND2(particles_set_lifetime, RID, float)
|
||||
BIND2(particles_set_one_shot, RID, bool)
|
||||
|
|
|
|||
|
|
@ -1872,10 +1872,12 @@ void VisualServerScene::_prepare_scene(const Transform p_cam_transform, const Ca
|
|||
InstanceGeometryData *geom = static_cast<InstanceGeometryData *>(ins->base_data);
|
||||
|
||||
if (ins->base_type == VS::INSTANCE_PARTICLES) {
|
||||
//particles visible? process them
|
||||
VSG::storage->particles_request_process(ins->base);
|
||||
//particles visible? request redraw
|
||||
VisualServerRaster::redraw_request();
|
||||
if (VSG::storage->particles_get_emitting(ins->base) || !VSG::storage->particles_get_inactive(ins->base)) {
|
||||
//particles visible? process them
|
||||
VSG::storage->particles_request_process(ins->base);
|
||||
//particles visible? request redraw
|
||||
VisualServerRaster::redraw_request();
|
||||
}
|
||||
}
|
||||
|
||||
if (geom->lighting_dirty) {
|
||||
|
|
|
|||
|
|
@ -328,6 +328,7 @@ public:
|
|||
|
||||
FUNC2(particles_set_emitting, RID, bool)
|
||||
FUNC1R(bool, particles_get_emitting, RID)
|
||||
FUNC1R(bool, particles_get_inactive, RID)
|
||||
FUNC2(particles_set_amount, RID, int)
|
||||
FUNC2(particles_set_lifetime, RID, float)
|
||||
FUNC2(particles_set_one_shot, RID, bool)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue