use set as a suffix (matches operators)
[blender-staging.git] / release / scripts / ui / properties_physics_softbody.py
index 5014337ec4d46fb8bd0849480933b327f00aff31..08abf048c50126e37f6c02ad4c93a85399f0a264 100644 (file)
@@ -12,7 +12,7 @@
 #
 #  You should have received a copy of the GNU General Public License
 #  along with this program; if not, write to the Free Software Foundation,
-#  Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 #
 # ##### END GPL LICENSE BLOCK #####
 
@@ -25,21 +25,24 @@ from properties_physics_common import effector_weights_ui
 
 
 def softbody_panel_enabled(md):
-    return md.point_cache.baked == False
+    return (md.point_cache.is_baked is False)
 
 
-class PhysicButtonsPanel(bpy.types.Panel):
+class PhysicButtonsPanel():
     bl_space_type = 'PROPERTIES'
     bl_region_type = 'WINDOW'
     bl_context = "physics"
 
-    def poll(self, context):
+    @classmethod
+    def poll(cls, context):
         ob = context.object
-        rd = context.scene.render_data
-        return (ob and ob.type == 'MESH') and (not rd.use_game_engine)
+        rd = context.scene.render
+#        return (ob and ob.type == 'MESH') and (not rd.use_game_engine)
+# i really hate touching things i do not understand completely .. but i think this should read (bjornmose)
+        return (ob and (ob.type == 'MESH' or ob.type == 'LATTICE'or ob.type == 'CURVE')) and (not rd.use_game_engine)
 
 
-class PHYSICS_PT_softbody(PhysicButtonsPanel):
+class PHYSICS_PT_softbody(PhysicButtonsPanel, bpy.types.Panel):
     bl_label = "Soft Body"
 
     def draw(self, context):
@@ -49,20 +52,19 @@ class PHYSICS_PT_softbody(PhysicButtonsPanel):
         ob = context.object
 
         split = layout.split()
-        split.operator_context = "EXEC_DEFAULT"
 
         if md:
             # remove modifier + settings
-            split.set_context_pointer("modifier", md)
-            split.itemO("object.modifier_remove", text="Remove")
+            split.context_pointer_set("modifier", md)
+            split.operator("object.modifier_remove", text="Remove")
 
             row = split.row(align=True)
-            row.itemR(md, "render", text="")
-            row.itemR(md, "realtime", text="")
+            row.prop(md, "show_render", text="")
+            row.prop(md, "show_viewport", text="")
         else:
             # add modifier
-            split.item_enumO("object.modifier_add", "type", 'SOFT_BODY', text="Add")
-            split.itemL("")
+            split.operator("object.modifier_add", text="Add").type = 'SOFT_BODY'
+            split.column()
 
         if md:
             softbody = md.settings
@@ -72,40 +74,42 @@ class PHYSICS_PT_softbody(PhysicButtonsPanel):
             split.enabled = softbody_panel_enabled(md)
 
             col = split.column()
-            col.itemL(text="Object:")
-            col.itemR(softbody, "friction")
-            col.itemR(softbody, "mass")
-            col.item_pointerR(softbody, "mass_vertex_group", ob, "vertex_groups", text="Mass:")
+            col.label(text="Object:")
+            col.prop(softbody, "friction")
+            col.prop(softbody, "mass")
+            col.prop_search(softbody, "vertex_group_mass", ob, "vertex_groups", text="Mass:")
 
             col = split.column()
-            col.itemL(text="Simulation:")
-            col.itemR(softbody, "speed")
+            col.label(text="Simulation:")
+            col.prop(softbody, "speed")
 
 
-class PHYSICS_PT_softbody_cache(PhysicButtonsPanel):
+class PHYSICS_PT_softbody_cache(PhysicButtonsPanel, bpy.types.Panel):
     bl_label = "Soft Body Cache"
-    bl_default_closed = True
+    bl_options = {'DEFAULT_CLOSED'}
 
-    def poll(self, context):
+    @classmethod
+    def poll(cls, context):
         return context.soft_body
 
     def draw(self, context):
         md = context.soft_body
-        point_cache_ui(self, md.point_cache, softbody_panel_enabled(md), 0, 0)
+        point_cache_ui(self, context, md.point_cache, softbody_panel_enabled(md), 'SOFTBODY')
 
 
-class PHYSICS_PT_softbody_goal(PhysicButtonsPanel):
+class PHYSICS_PT_softbody_goal(PhysicButtonsPanel, bpy.types.Panel):
     bl_label = "Soft Body Goal"
-    bl_default_closed = True
+    bl_options = {'DEFAULT_CLOSED'}
 
-    def poll(self, context):
+    @classmethod
+    def poll(cls, context):
         return context.soft_body
 
     def draw_header(self, context):
         softbody = context.soft_body.settings
 
         self.layout.active = softbody_panel_enabled(context.soft_body)
-        self.layout.itemR(softbody, "use_goal", text="")
+        self.layout.prop(softbody, "use_goal", text="")
 
     def draw(self, context):
         layout = self.layout
@@ -122,32 +126,33 @@ class PHYSICS_PT_softbody_goal(PhysicButtonsPanel):
         split = layout.split()
 
         col = split.column()
-        col.itemL(text="Goal Strengths:")
-        col.itemR(softbody, "goal_default", text="Default")
+        col.label(text="Goal Strengths:")
+        col.prop(softbody, "goal_default", text="Default")
         sub = col.column(align=True)
-        sub.itemR(softbody, "goal_min", text="Minimum")
-        sub.itemR(softbody, "goal_max", text="Maximum")
+        sub.prop(softbody, "goal_min", text="Minimum")
+        sub.prop(softbody, "goal_max", text="Maximum")
 
         col = split.column()
-        col.itemL(text="Goal Settings:")
-        col.itemR(softbody, "goal_spring", text="Stiffness")
-        col.itemR(softbody, "goal_friction", text="Damping")
+        col.label(text="Goal Settings:")
+        col.prop(softbody, "goal_spring", text="Stiffness")
+        col.prop(softbody, "goal_friction", text="Damping")
 
-        layout.item_pointerR(softbody, "goal_vertex_group", ob, "vertex_groups", text="Vertex Group")
+        layout.prop_search(softbody, "vertex_group_goal", ob, "vertex_groups", text="Vertex Group")
 
 
-class PHYSICS_PT_softbody_edge(PhysicButtonsPanel):
+class PHYSICS_PT_softbody_edge(PhysicButtonsPanel, bpy.types.Panel):
     bl_label = "Soft Body Edges"
-    bl_default_closed = True
+    bl_options = {'DEFAULT_CLOSED'}
 
-    def poll(self, context):
+    @classmethod
+    def poll(cls, context):
         return context.soft_body
 
     def draw_header(self, context):
         softbody = context.soft_body.settings
 
         self.layout.active = softbody_panel_enabled(context.soft_body)
-        self.layout.itemR(softbody, "use_edges", text="")
+        self.layout.prop(softbody, "use_edges", text="")
 
     def draw(self, context):
         layout = self.layout
@@ -161,43 +166,47 @@ class PHYSICS_PT_softbody_edge(PhysicButtonsPanel):
         split = layout.split()
 
         col = split.column()
-        col.itemL(text="Springs:")
-        col.itemR(softbody, "pull")
-        col.itemR(softbody, "push")
-        col.itemR(softbody, "damp")
-        col.itemR(softbody, "plastic")
-        col.itemR(softbody, "bending")
-        col.itemR(softbody, "spring_length", text="Length")
-        col.item_pointerR(softbody, "spring_vertex_group", ob, "vertex_groups", text="Springs:")
+        col.label(text="Springs:")
+        col.prop(softbody, "pull")
+        col.prop(softbody, "push")
+        col.prop(softbody, "damping")
+        col.prop(softbody, "plastic")
+        col.prop(softbody, "bend")
+        col.prop(softbody, "spring_length", text="Length")
+        col.prop_search(softbody, "vertex_group_spring", ob, "vertex_groups", text="Springs:")
 
         col = split.column()
-        col.itemR(softbody, "stiff_quads")
+        col.prop(softbody, "use_stiff_quads")
         sub = col.column()
-        sub.active = softbody.stiff_quads
-        sub.itemR(softbody, "shear")
+        sub.active = softbody.use_stiff_quads
+        sub.prop(softbody, "shear")
+
+        col.label(text="Aerodynamics:")
+        col.row().prop(softbody, "aerodynamics_type", expand=True)
+        col.prop(softbody, "aero", text="Factor")
+
+        #sub = col.column()
+        #sub.enabled = softbody.aero > 0
 
-        col.itemR(softbody, "new_aero", text="Aero")
-        sub = col.column()
-        sub.enabled = softbody.new_aero
-        sub.itemR(softbody, "aero", text="Factor")
 
-        col.itemL(text="Collision:")
-        col.itemR(softbody, "edge_collision", text="Edge")
-        col.itemR(softbody, "face_collision", text="Face")
+        col.label(text="Collision:")
+        col.prop(softbody, "use_edge_collision", text="Edge")
+        col.prop(softbody, "use_face_collision", text="Face")
 
 
-class PHYSICS_PT_softbody_collision(PhysicButtonsPanel):
-    bl_label = "Soft Body Collision"
-    bl_default_closed = True
+class PHYSICS_PT_softbody_collision(PhysicButtonsPanel, bpy.types.Panel):
+    bl_label = "Soft Body Self Collision"
+    bl_options = {'DEFAULT_CLOSED'}
 
-    def poll(self, context):
+    @classmethod
+    def poll(cls, context):
         return context.soft_body
 
     def draw_header(self, context):
         softbody = context.soft_body.settings
 
         self.layout.active = softbody_panel_enabled(context.soft_body)
-        self.layout.itemR(softbody, "self_collision", text="")
+        self.layout.prop(softbody, "use_self_collision", text="")
 
     def draw(self, context):
         layout = self.layout
@@ -205,23 +214,24 @@ class PHYSICS_PT_softbody_collision(PhysicButtonsPanel):
         md = context.soft_body
         softbody = md.settings
 
-        layout.active = softbody.self_collision and softbody_panel_enabled(md)
+        layout.active = softbody.use_self_collision and softbody_panel_enabled(md)
 
-        layout.itemL(text="Collision Type:")
-        layout.itemR(softbody, "collision_type", expand=True)
+        layout.label(text="Collision Ball Size Calculation:")
+        layout.prop(softbody, "collision_type", expand=True)
 
         col = layout.column(align=True)
-        col.itemL(text="Ball:")
-        col.itemR(softbody, "ball_size", text="Size")
-        col.itemR(softbody, "ball_stiff", text="Stiffness")
-        col.itemR(softbody, "ball_damp", text="Dampening")
+        col.label(text="Ball:")
+        col.prop(softbody, "ball_size", text="Size")
+        col.prop(softbody, "ball_stiff", text="Stiffness")
+        col.prop(softbody, "ball_damp", text="Dampening")
 
 
-class PHYSICS_PT_softbody_solver(PhysicButtonsPanel):
+class PHYSICS_PT_softbody_solver(PhysicButtonsPanel, bpy.types.Panel):
     bl_label = "Soft Body Solver"
-    bl_default_closed = True
+    bl_options = {'DEFAULT_CLOSED'}
 
-    def poll(self, context):
+    @classmethod
+    def poll(cls, context):
         return context.soft_body
 
     def draw(self, context):
@@ -236,37 +246,43 @@ class PHYSICS_PT_softbody_solver(PhysicButtonsPanel):
         split = layout.split()
 
         col = split.column(align=True)
-        col.itemL(text="Step Size:")
-        col.itemR(softbody, "minstep")
-        col.itemR(softbody, "maxstep")
-        col.itemR(softbody, "auto_step", text="Auto-Step")
+        col.label(text="Step Size:")
+        col.prop(softbody, "step_min")
+        col.prop(softbody, "step_max")
+        col.prop(softbody, "use_auto_step", text="Auto-Step")
 
         col = split.column()
-        col.itemR(softbody, "error_limit")
-        col.itemL(text="Helpers:")
-        col.itemR(softbody, "choke")
-        col.itemR(softbody, "fuzzy")
+        col.prop(softbody, "error_threshold")
+        col.label(text="Helpers:")
+        col.prop(softbody, "choke")
+        col.prop(softbody, "fuzzy")
 
-        layout.itemL(text="Diagnostics:")
-        layout.itemR(softbody, "diagnose")
+        layout.label(text="Diagnostics:")
+        layout.prop(softbody, "use_diagnose")
+        layout.prop(softbody, "use_estimate_matrix")
 
 
-class PHYSICS_PT_softbody_field_weights(PhysicButtonsPanel):
+class PHYSICS_PT_softbody_field_weights(PhysicButtonsPanel, bpy.types.Panel):
     bl_label = "Soft Body Field Weights"
-    bl_default_closed = True
+    bl_options = {'DEFAULT_CLOSED'}
 
-    def poll(self, context):
+    @classmethod
+    def poll(cls, context):
         return (context.soft_body)
 
     def draw(self, context):
         md = context.soft_body
         softbody = md.settings
-        effector_weights_ui(self, softbody.effector_weights)
-
-bpy.types.register(PHYSICS_PT_softbody)
-bpy.types.register(PHYSICS_PT_softbody_cache)
-bpy.types.register(PHYSICS_PT_softbody_goal)
-bpy.types.register(PHYSICS_PT_softbody_edge)
-bpy.types.register(PHYSICS_PT_softbody_collision)
-bpy.types.register(PHYSICS_PT_softbody_solver)
-bpy.types.register(PHYSICS_PT_softbody_field_weights)
+
+        effector_weights_ui(self, context, softbody.effector_weights)
+
+
+def register():
+    pass
+
+
+def unregister():
+    pass
+
+if __name__ == "__main__":
+    register()