diff options
author | William Reynish <billrey@me.com> | 2019-02-18 05:44:57 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2019-02-18 05:59:46 +0300 |
commit | 6be8c64e9ade1d0a37871c2b9276a2716d45740a (patch) | |
tree | f0c1b3bd4d3136d64ba4033c37bfb928cdd24293 /release/scripts/startup/bl_ui/properties_particle.py | |
parent | bf9407fc712c649d3eef8c3f4bb461369f814a29 (diff) |
Fix T61187: Fluid Particle settings UI elements
Some properties were accidentally hidden for particle fluids.
- Made sure we show the Forces and Integration
sub-panels for particle fluids.
- Slightly re-ordered the sub-panels here, so that the same sub-panels
are at the top for Newtonian and Fluid particles.
- Separated the Fluid Interaction sub-panel so we can give it a unique
name.
- Removed lingering unnecessary 'Keys' label in the Keyed physics.
Diffstat (limited to 'release/scripts/startup/bl_ui/properties_particle.py')
-rw-r--r-- | release/scripts/startup/bl_ui/properties_particle.py | 77 |
1 files changed, 57 insertions, 20 deletions
diff --git a/release/scripts/startup/bl_ui/properties_particle.py b/release/scripts/startup/bl_ui/properties_particle.py index b1d26b4dbd4..cc260ce0a96 100644 --- a/release/scripts/startup/bl_ui/properties_particle.py +++ b/release/scripts/startup/bl_ui/properties_particle.py @@ -479,8 +479,10 @@ class PARTICLE_PT_cache(ParticleButtonsPanel, Panel): @classmethod def poll(cls, context): - psys = context.particle_system engine = context.engine + if engine not in cls.COMPAT_ENGINES: + return False + psys = context.particle_system if psys is None: return False if psys.settings is None: @@ -491,10 +493,10 @@ class PARTICLE_PT_cache(ParticleButtonsPanel, Panel): if phystype == 'NO' or phystype == 'KEYED': return False return ( - (psys.settings.type in {'EMITTER', 'REACTOR'} or - (psys.settings.type == 'HAIR' and - (psys.use_hair_dynamics or psys.point_cache.is_baked))) and - engine in cls.COMPAT_ENGINES + psys.settings.type in {'EMITTER', 'REACTOR'} or ( + (psys.settings.type == 'HAIR') and + (psys.use_hair_dynamics or psys.point_cache.is_baked) + ) ) def draw(self, context): @@ -681,8 +683,6 @@ class PARTICLE_PT_physics(ParticleButtonsPanel, Panel): if psys: col.prop(psys, "use_keyed_timing", text="Use Timing") - col.label(text="Keys") - class PARTICLE_PT_physics_fluid_advanced(ParticleButtonsPanel, Panel): bl_label = "Advanced" @@ -939,7 +939,7 @@ class PARTICLE_PT_physics_relations(ParticleButtonsPanel, Panel): @classmethod def poll(cls, context): part = particle_get_settings(context) - return part.physics_type in {'KEYED', 'BOIDS', 'FLUID'} + return part.physics_type in {'KEYED', 'BOIDS'} def draw(self, context): layout = self.layout @@ -982,12 +982,48 @@ class PARTICLE_PT_physics_relations(ParticleButtonsPanel, Panel): sub.prop(key, "object") sub.prop(key, "system", text="System") layout.prop(key, "alliance") - elif part.physics_type == 'FLUID': - sub = layout.column() - # doesn't work yet - #sub.alert = key.valid - sub.prop(key, "object") - sub.prop(key, "system", text="System") + + +class PARTICLE_PT_physics_fluid_interaction(ParticleButtonsPanel, Panel): + bl_label = "Fluid Interaction" + bl_parent_id = "PARTICLE_PT_physics" + bl_options = {'DEFAULT_CLOSED'} + COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH'} + + @classmethod + def poll(cls, context): + part = particle_get_settings(context) + return part.physics_type == 'FLUID' + + def draw(self, context): + layout = self.layout + layout.use_property_split = True + + psys = context.particle_system + part = particle_get_settings(context) + + row = layout.row() + row.template_list("UI_UL_list", "particle_targets", psys, "targets", + psys, "active_particle_target_index", rows=4) + + col = row.column() + sub = col.row() + subsub = sub.column(align=True) + subsub.operator("particle.new_target", icon='ADD', text="") + subsub.operator("particle.target_remove", icon='REMOVE', text="") + sub = col.row() + subsub = sub.column(align=True) + subsub.operator("particle.target_move_up", icon='TRIA_UP', text="") + subsub.operator("particle.target_move_down", icon='TRIA_DOWN', text="") + + key = psys.active_particle_target + + if key: + sub = layout.column() + # doesn't work yet + #sub.alert = key.valid + sub.prop(key, "object") + sub.prop(key, "system", text="System") class PARTICLE_PT_physics_deflection(ParticleButtonsPanel, Panel): @@ -1025,7 +1061,7 @@ class PARTICLE_PT_physics_forces(ParticleButtonsPanel, Panel): @classmethod def poll(cls, context): part = particle_get_settings(context) - return part.physics_type == 'NEWTON' + return part.physics_type in {'NEWTON', 'FLUID'} def draw(self, context): layout = self.layout @@ -1052,7 +1088,7 @@ class PARTICLE_PT_physics_integration(ParticleButtonsPanel, Panel): @classmethod def poll(cls, context): part = particle_get_settings(context) - return part.physics_type == 'NEWTON' + return part.physics_type in {'NEWTON', 'FLUID'} def draw(self, context): layout = self.layout @@ -2096,10 +2132,6 @@ classes = ( PARTICLE_PT_rotation, PARTICLE_PT_rotation_angular_velocity, PARTICLE_PT_physics, - PARTICLE_PT_physics_fluid_springs, - PARTICLE_PT_physics_fluid_springs_viscoelastic, - PARTICLE_PT_physics_fluid_springs_advanced, - PARTICLE_PT_physics_fluid_advanced, PARTICLE_PT_physics_boids_movement, PARTICLE_PT_physics_boids_battle, PARTICLE_PT_physics_boids_misc, @@ -2107,6 +2139,11 @@ classes = ( PARTICLE_PT_physics_deflection, PARTICLE_PT_physics_integration, PARTICLE_PT_physics_relations, + PARTICLE_PT_physics_fluid_springs, + PARTICLE_PT_physics_fluid_springs_viscoelastic, + PARTICLE_PT_physics_fluid_springs_advanced, + PARTICLE_PT_physics_fluid_advanced, + PARTICLE_PT_physics_fluid_interaction, PARTICLE_PT_boidbrain, PARTICLE_PT_render, PARTICLE_PT_render_line, |