[Bf-blender-cvs] [00bb15512f5] blender2.8: Physics Fluid: Use Single Column and Grid Flow layout

Vuk Gardašević noreply at git.blender.org
Fri Aug 17 12:05:46 CEST 2018


Commit: 00bb15512f5cbb1bcaf0bc5978e56ce0672b283f
Author: Vuk Gardašević
Date:   Fri Aug 17 11:57:24 2018 +0200
Branches: blender2.8
https://developer.blender.org/rB00bb15512f5cbb1bcaf0bc5978e56ce0672b283f

Physics Fluid: Use Single Column and Grid Flow layout

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

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

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

diff --git a/release/scripts/startup/bl_ui/properties_physics_fluid.py b/release/scripts/startup/bl_ui/properties_physics_fluid.py
index 94611808059..451b17b72b7 100644
--- a/release/scripts/startup/bl_ui/properties_physics_fluid.py
+++ b/release/scripts/startup/bl_ui/properties_physics_fluid.py
@@ -17,8 +17,11 @@
 # ##### END GPL LICENSE BLOCK #####
 
 # <pep8 compliant>
+
 import bpy
-from bpy.types import Panel, Menu
+from bpy.types import (
+    Panel,
+)
 from bpy.app.translations import pgettext_iface as iface_
 from bl_operators.presets import PresetMenu
 
@@ -35,172 +38,239 @@ class PhysicButtonsPanel:
     bl_region_type = 'WINDOW'
     bl_context = "physics"
 
-    @classmethod
-    def poll(cls, context):
+    def poll_fluid(context):
         ob = context.object
-        return (ob and ob.type == 'MESH') and context.engine in cls.COMPAT_ENGINES and (context.fluid)
+        if not ((ob and ob.type == 'MESH') and (context.fluid)):
+            return False
+
+        return (bpy.app.build_options.mod_fluid)
+
+    def poll_fluid_settings(context):
+        if not (PhysicButtonsPanel.poll_fluid(context)):
+            return False
+
+        md = context.fluid
+        return md and md.settings and (md.settings.type != 'NONE')
+
+    def poll_fluid_domain(context):
+        if not PhysicButtonsPanel.poll_fluid(context):
+            return False
+
+        md = context.fluid
+        return md and md.settings and (md.settings.type == 'DOMAIN')
 
 
 class PHYSICS_PT_fluid(PhysicButtonsPanel, Panel):
     bl_label = "Fluid"
     COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
 
+    @classmethod
+    def poll(cls, context):
+        ob = context.object
+        return (ob and ob.type == 'MESH') and context.engine in cls.COMPAT_ENGINES and (context.fluid)
+
     def draw(self, context):
         layout = self.layout
+        layout.use_property_split = True
 
-        md = context.fluid
-        fluid = md.settings
-
-        col = layout.column()
         if not bpy.app.build_options.mod_fluid:
+            col = layout.column()
+            col.alignment = 'RIGHT'
             col.label("Built without fluids")
             return
 
+        md = context.fluid
+        fluid = md.settings
+
+        col = layout.column()
         col.prop(fluid, "type")
+
+
+class PHYSICS_PT_fluid_settings(PhysicButtonsPanel, Panel):
+    bl_label = "Settings"
+    bl_parent_id = "PHYSICS_PT_fluid"
+    COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
+
+    @classmethod
+    def poll(cls, context):
+        if not PhysicButtonsPanel.poll_fluid_settings(context):
+            return False
+
+        return (context.engine in cls.COMPAT_ENGINES)
+
+    def draw_header(self, context):
+        md = context.fluid
+        fluid = md.settings
         if fluid.type not in {'NONE', 'DOMAIN', 'PARTICLE', 'FLUID', 'OBSTACLE'}:
-            col.prop(fluid, "use")
+            self.layout.prop(fluid, "use", text="")
+
+    def draw(self, context):
+        layout = self.layout
+        layout.use_property_split = True
+
+        md = context.fluid
+        fluid = md.settings
+
+        flow = layout.grid_flow(row_major=True, columns=0, even_columns=True, even_rows=False, align=True)
 
-        layout = layout.column()
         if fluid.type not in {'NONE', 'DOMAIN', 'PARTICLE', 'FLUID', 'OBSTACLE'}:
-            layout.active = fluid.use
+            flow.active = fluid.use
 
         if fluid.type == 'DOMAIN':
-            # odd formatting here so translation script can extract string
-            layout.operator("fluid.bake", text=iface_("Bake (Req. Memory: %s)") % fluid.memory_estimate,
-                            translate=False, icon='MOD_FLUIDSIM')
+            col = flow.column()
 
             if bpy.app.build_options.openmp:
-                layout.prop(fluid, "threads", text="Simulation Threads")
+                col.prop(fluid, "threads", text="Simulation Threads")
+                col.separator()
 
-            split = layout.split()
+            col.prop(fluid, "resolution", text="Final Resolution")
+            col.prop(fluid, "preview_resolution", text="Preview")
 
-            col = split.column()
-            col.label(text="Resolution:")
-            col.prop(fluid, "resolution", text="Final")
-            col.label(text="Render Display:")
-            col.prop(fluid, "render_display_mode", text="")
+            col.separator()
 
-            col = split.column()
-            col.label()
-            col.prop(fluid, "preview_resolution", text="Preview")
-            col.label(text="Viewport Display:")
-            col.prop(fluid, "viewport_display_mode", text="")
+            col = flow.column()
+            col.prop(fluid, "render_display_mode", text="Render Display")
+            col.prop(fluid, "viewport_display_mode", text="Viewport")
 
-            split = layout.split()
+            col.separator()
 
-            col = split.column()
-            col.label(text="Time:")
+            col = flow.column()
             sub = col.column(align=True)
-            sub.prop(fluid, "start_time", text="Start")
+            sub.prop(fluid, "start_time", text="Time Start")
             sub.prop(fluid, "end_time", text="End")
             col.prop(fluid, "simulation_rate", text="Speed")
 
-            col = split.column()
-            col.label()
-            sub = col.column(align=True)
-            sub.prop(fluid, "use_speed_vectors")
-            sub.prop(fluid, "use_reverse_frames")
+            col = flow.column()
+            col.prop(fluid, "use_speed_vectors")
+            col.prop(fluid, "use_reverse_frames")
             col.prop(fluid, "frame_offset", text="Offset")
 
-            layout.prop(fluid, "filepath", text="")
-
         elif fluid.type == 'FLUID':
-            split = layout.split()
-
-            col = split.column()
-            col.label(text="Volume Initialization:")
-            col.prop(fluid, "volume_initialization", text="")
+            col = flow.column()
+            col.prop(fluid, "volume_initialization", text="Volume Initialization")
             col.prop(fluid, "use_animated_mesh")
 
-            col = split.column()
-            col.label(text="Initial Velocity:")
-            col.prop(fluid, "initial_velocity", text="")
+            col = flow.column()
+            col.prop(fluid, "initial_velocity", text="Initial Velocity")
 
         elif fluid.type == 'OBSTACLE':
-            split = layout.split()
-
-            col = split.column()
-            col.label(text="Volume Initialization:")
-            col.prop(fluid, "volume_initialization", text="")
+            col = flow.column()
+            col.prop(fluid, "volume_initialization", text="Volume Initialization")
             col.prop(fluid, "use_animated_mesh")
 
-            col = split.column()
-            subsplit = col.split()
-            subcol = subsplit.column()
-            if fluid.use_animated_mesh:
-                subcol.enabled = False
-            subcol.label(text="Slip Type:")
-            subcol.prop(fluid, "slip_type", text="")
+            col = flow.column()
+            subcol = col.column()
+            subcol.enabled = not fluid.use_animated_mesh
+            subcol.prop(fluid, "slip_type", text="Slip Type")
+
             if fluid.slip_type == 'PARTIALSLIP':
-                subcol.prop(fluid, "partial_slip_factor", slider=True, text="Amount")
+                subcol.prop(fluid, "partial_slip_factor", text="Amount", slider=True)
 
-            col.label(text="Impact:")
-            col.prop(fluid, "impact_factor", text="Factor")
+            col.prop(fluid, "impact_factor", text="Impact Factor")
 
         elif fluid.type == 'INFLOW':
-            split = layout.split()
-
-            col = split.column()
-            col.label(text="Volume Initialization:")
-            col.prop(fluid, "volume_initialization", text="")
+            col = flow.column()
+            col.prop(fluid, "volume_initialization", text="Volume Initialization")
             col.prop(fluid, "use_animated_mesh")
+
             row = col.row()
             row.active = not fluid.use_animated_mesh
             row.prop(fluid, "use_local_coords")
 
-            col = split.column()
-            col.label(text="Inflow Velocity:")
-            col.prop(fluid, "inflow_velocity", text="")
+            col = flow.column()
+            col.prop(fluid, "inflow_velocity", text="Inflow Velocity")
 
         elif fluid.type == 'OUTFLOW':
-            col = layout.column()
-            col.label(text="Volume Initialization:")
-            col.prop(fluid, "volume_initialization", text="")
+            col = flow.column()
+            col.prop(fluid, "volume_initialization", text="Volume Initialization")
+
+            col = flow.column()
             col.prop(fluid, "use_animated_mesh")
 
         elif fluid.type == 'PARTICLE':
-            split = layout.split()
-
-            col = split.column()
-            col.label(text="Influence:")
-            col.prop(fluid, "particle_influence", text="Size")
+            col = flow.column()
+            col.prop(fluid, "particle_influence", text="Influence Size")
             col.prop(fluid, "alpha_influence", text="Alpha")
 
-            col = split.column()
-            col.label(text="Type:")
+            col = flow.column()
             col.prop(fluid, "use_drops")
             col.prop(fluid, "use_floats")
             col.prop(fluid, "show_tracer")
 
-            layout.prop(fluid, "filepath", text="")
-
         elif fluid.type == 'CONTROL':
-            split = layout.split()
-
-            col = split.column()
-            col.label(text="")
+            col = flow.column()
             col.prop(fluid, "quality", slider=True)
             col.prop(fluid, "use_reverse_frames")
 
-            col = split.column()
-            col.label(text="Time:")
-            sub = col.column(align=True)
-            sub.prop(fluid, "start_time", text="Start")
-            sub.prop(fluid, "end_time", text="End")
+            col = flow.column()
+            col.prop(fluid, "start_time", text="Time Start")
+            col.prop(fluid, "end_time", text="End")
 
-            split = layout.split()
+            col.separator()
 
-    

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list