[Bf-blender-cvs] [e6e8ee2922c] blender2.8: UI: Single column and subpanels for Particles Physics Fluids and Boids

William Reynish noreply at git.blender.org
Wed Jul 25 16:12:56 CEST 2018


Commit: e6e8ee2922c023971c11a566cba8085c3dd70e76
Author: William Reynish
Date:   Wed Jul 25 16:12:04 2018 +0200
Branches: blender2.8
https://developer.blender.org/rBe6e8ee2922c023971c11a566cba8085c3dd70e76

UI: Single column and subpanels for Particles Physics Fluids and Boids

===================================================================

M	release/scripts/startup/bl_ui/properties_particle.py

===================================================================

diff --git a/release/scripts/startup/bl_ui/properties_particle.py b/release/scripts/startup/bl_ui/properties_particle.py
index 9d891a07989..75b2d76d9c4 100644
--- a/release/scripts/startup/bl_ui/properties_particle.py
+++ b/release/scripts/startup/bl_ui/properties_particle.py
@@ -662,164 +662,336 @@ class PARTICLE_PT_physics(ParticleButtonsPanel, Panel):
         if part.physics_type == 'FLUID':
             fluid = part.fluid
 
-            col.label(text="Fluid")
+            col.separator()
             col.prop(fluid, "solver")
             col.prop(fluid, "stiffness", text="Stiffness")
             col.prop(fluid, "linear_viscosity", text="Viscosity")
             col.prop(fluid, "buoyancy", text="Buoyancy", slider=True)
 
-            col.label(text="Advanced")
+        elif part.physics_type == 'KEYED':
+
+            sub = col.column()
+            sub.active = not psys.use_keyed_timing
+            sub.prop(part, "keyed_loops", text="Loops")
+            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"
+    bl_parent_id = "PARTICLE_PT_physics"
+    bl_options = {'DEFAULT_CLOSED'}
+    COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'}
 
-            if fluid.solver == 'DDR':
-                sub = col.column()
-                sub.prop(fluid, "repulsion", slider=fluid.factor_repulsion)
-                sub.prop(fluid, "factor_repulsion")
+    @classmethod
+    def poll(cls, context):
+        part = particle_get_settings(context)
+        fluid = part.fluid
+        if part.physics_type == 'FLUID':
+            return True
+        else:
+            return False
 
-                sub.prop(fluid, "stiff_viscosity", slider=fluid.factor_stiff_viscosity)
-                sub.prop(fluid, "factor_stiff_viscosity")
+    def draw(self, context):
+        layout = self.layout
+        layout.use_property_split = True
 
+        psys = context.particle_system
+        part = particle_get_settings(context)
+        fluid = part.fluid
+
+        col = layout.column()
+
+        if fluid.solver == 'DDR':
             sub = col.column()
-            sub.prop(fluid, "fluid_radius", slider=fluid.factor_radius)
-            sub.prop(fluid, "factor_radius")
+            sub.prop(fluid, "repulsion", slider=fluid.factor_repulsion)
+            sub.prop(fluid, "factor_repulsion")
 
-            sub.prop(fluid, "rest_density", slider=fluid.use_factor_density)
-            sub.prop(fluid, "use_factor_density")
+            sub.prop(fluid, "stiff_viscosity", slider=fluid.factor_stiff_viscosity)
+            sub.prop(fluid, "factor_stiff_viscosity")
 
-            if fluid.solver == 'CLASSICAL':
-                # With the classical solver, it is possible to calculate the
-                # spacing between particles when the fluid is at rest. This
-                # makes it easier to set stable initial conditions.
-                particle_volume = part.mass / fluid.rest_density
-                spacing = pow(particle_volume, 1.0 / 3.0)
+        sub = col.column()
+        sub.prop(fluid, "fluid_radius", slider=fluid.factor_radius)
+        sub.prop(fluid, "factor_radius")
 
-                sub.label(text="Spacing: %g" % spacing)
+        sub.prop(fluid, "rest_density", slider=fluid.use_factor_density)
+        sub.prop(fluid, "use_factor_density")
 
-            elif fluid.solver == 'DDR':
+        if fluid.solver == 'CLASSICAL':
+            # With the classical solver, it is possible to calculate the
+            # spacing between particles when the fluid is at rest. This
+            # makes it easier to set stable initial conditions.
+            particle_volume = part.mass / fluid.rest_density
+            spacing = pow(particle_volume, 1.0 / 3.0)
 
-                col.label(text="Springs")
-                col.prop(fluid, "spring_force", text="Force")
-                col.prop(fluid, "use_viscoelastic_springs")
+            sub.label(text="Spacing: %g" % spacing)
 
-                sub = col.column()
-                sub.active = fluid.use_viscoelastic_springs
-                sub.prop(fluid, "yield_ratio", slider=True)
-                sub.prop(fluid, "plasticity", slider=True)
 
-                col.label(text="Advanced")
-                sub = col.column()
-                sub.prop(fluid, "rest_length", slider=fluid.factor_rest_length)
-                sub.prop(fluid, "factor_rest_length", text="")
+class PARTICLE_PT_physics_fluid_springs(ParticleButtonsPanel, Panel):
+    bl_label = "Springs"
+    bl_parent_id = "PARTICLE_PT_physics"
+    bl_options = {'DEFAULT_CLOSED'}
+    COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'}
 
-                sub = col.column()
-                sub.active = fluid.use_viscoelastic_springs
-                sub.prop(fluid, "use_initial_rest_length")
-                sub.prop(fluid, "spring_frames", text="Frames")
+    @classmethod
+    def poll(cls, context):
+        part = particle_get_settings(context)
+        fluid = part.fluid
+        if part.physics_type == 'FLUID' and fluid.solver == 'DDR':
+            return True
+        else:
+            return False
 
-        elif part.physics_type == 'KEYED':
+    def draw(self, context):
+        layout = self.layout
+        layout.use_property_split = True
 
-            sub = col.column()
-            sub.active = not psys.use_keyed_timing
-            sub.prop(part, "keyed_loops", text="Loops")
-            if psys:
-                col.prop(psys, "use_keyed_timing", text="Use Timing")
+        psys = context.particle_system
+        part = particle_get_settings(context)
+        fluid = part.fluid
 
-            col.label(text="Keys")
+        col = layout.column()
 
-        elif part.physics_type == 'BOIDS':
-            boids = part.boids
+        col.prop(fluid, "spring_force", text="Force")
 
-            row = layout.row()
-            row.prop(boids, "use_flight")
-            row.prop(boids, "use_land")
-            row.prop(boids, "use_climb")
-
-            split = layout.split()
-
-            col = split.column(align=True)
-            col.active = boids.use_flight
-            col.prop(boids, "air_speed_max")
-            col.prop(boids, "air_speed_min", slider=True)
-            col.prop(boids, "air_acc_max", slider=True)
-            col.prop(boids, "air_ave_max", slider=True)
-            col.prop(boids, "air_personal_space")
-            row = col.row(align=True)
-            row.active = (boids.use_land or boids.use_climb) and boids.use_flight
-            row.prop(boids, "land_smooth")
-
-            col = split.column(align=True)
-            col.active = boids.use_land or boids.use_climb
-            col.prop(boids, "land_speed_max")
-            col.prop(boids, "land_jump_speed")
-            col.prop(boids, "land_acc_max", slider=True)
-            col.prop(boids, "land_ave_max", slider=True)
-            col.prop(boids, "land_personal_space")
-            col.prop(boids, "land_stick_force")
-
-            layout.prop(part, "collision_group")
-
-            split = layout.split()
-
-            col = split.column(align=True)
-            col.label(text="Battle:")
-            col.prop(boids, "health")
-            col.prop(boids, "strength")
-            col.prop(boids, "aggression")
-            col.prop(boids, "accuracy")
-            col.prop(boids, "range")
 
-            col = split.column()
-            col.label(text="Misc:")
-            col.prop(boids, "bank", slider=True)
-            col.prop(boids, "pitch", slider=True)
-            col.prop(boids, "height", slider=True)
-
-        if psys and part.physics_type in {'KEYED', 'BOIDS', 'FLUID'}:
-            if part.physics_type == 'BOIDS':
-                layout.label(text="Relations:")
+class PARTICLE_PT_physics_fluid_springs_viscoelastic(ParticleButtonsPanel, Panel):
+    bl_label = "Viscoelastic Springs"
+    bl_parent_id = "PARTICLE_PT_physics_fluid_springs"
+    bl_options = {'DEFAULT_CLOSED'}
+    COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'}
+
+    @classmethod
+    def poll(cls, context):
+        part = particle_get_settings(context)
+        fluid = part.fluid
+        if part.physics_type == 'FLUID' and fluid.solver == 'DDR':
+            return True
+        else:
+            return False
+
+    def draw_header(self, context):
+        psys = context.particle_system
+        part = particle_get_settings(context)
+        fluid = part.fluid
+
+        self.layout.prop(fluid, "use_viscoelastic_springs", text="")
+
+    def draw(self, context):
+        layout = self.layout
+        layout.use_property_split = True
+
+        psys = context.particle_system
+        part = particle_get_settings(context)
+        fluid = part.fluid
+
+        col = layout.column()
+        col.active = fluid.use_viscoelastic_springs
+        col.prop(fluid, "yield_ratio", slider=True)
+        col.prop(fluid, "plasticity", slider=True)
+
+        col.separator()
+
+        col.prop(fluid, "use_initial_rest_length")
+        col.prop(fluid, "spring_frames", text="Frames")
+
+
+class PARTICLE_PT_physics_fluid_springs_advanced(ParticleButtonsPanel, Panel):
+    bl_label = "Advanced"
+    bl_parent_id = "PARTICLE_PT_physics_fluid_springs"
+    bl_options = {'DEFAULT_CLOSED'}
+    COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'}
+
+    @classmethod
+    def poll(cls, context):
+        part = particle_get_settings(context)
+        fluid = part.fluid
+        if part.physics_type == 'FLUID' and fluid.solver == 'DDR':
+            return True
+        else:
+            return False
+
+    def draw(self, context):
+        layout = self.layout
+        layout.use_property_split = True
+
+        psys = context.particle_system
+        part = particle_get_settings(context)
+        fluid = part.fluid
+
+        sub = layout.column()
+        sub.prop(fluid, "rest_length", slider=fluid.factor_rest_length)
+        sub.prop(fluid, "factor_rest_length")
+
+
+class PARTICLE_PT_physics_boids_movement(ParticleButtonsPanel, Panel):
+    bl_la

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list