Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'release/ui/buttons_physic_cloth.py')
-rw-r--r--release/ui/buttons_physic_cloth.py207
1 files changed, 139 insertions, 68 deletions
diff --git a/release/ui/buttons_physic_cloth.py b/release/ui/buttons_physic_cloth.py
index 6dab2bcf57c..277a6dfe760 100644
--- a/release/ui/buttons_physic_cloth.py
+++ b/release/ui/buttons_physic_cloth.py
@@ -6,115 +6,186 @@ class PhysicButtonsPanel(bpy.types.Panel):
__region_type__ = "WINDOW"
__context__ = "physics"
- def cloth_modifier(self, context):
- ob = context.active_object
- for md in ob.modifiers:
- if md.type == 'CLOTH':
- return md
-
- return None
-
def poll(self, context):
- md = self.cloth_modifier(context)
- return (md != None)
+ ob = context.object
+ return (ob and ob.type == 'MESH')
-class Physic_PT_cloth(PhysicButtonsPanel):
- __idname__ = "Physic_PT_cloth"
+class PHYSICS_PT_cloth(PhysicButtonsPanel):
+ __idname__ = "PHYSICS_PT_cloth"
__label__ = "Cloth"
def draw(self, context):
layout = self.layout
- md = self.cloth_modifier(context)
- cloth = md.settings
-
+ md = context.cloth
+ 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_OT_modifier_remove", text="Remove")
+
+ row = split.row(align=True)
+ row.itemR(md, "render", text="")
+ row.itemR(md, "realtime", text="")
+ else:
+ # add modifier
+ split.item_enumO("OBJECT_OT_modifier_add", "type", "CLOTH", text="Add")
+ split.itemL()
+
+ if md:
+ cloth = md.settings
+
+ split = layout.split()
+
+ col = split.column(align=True)
+ col.itemR(cloth, "quality", slider=True)
+ col.itemR(cloth, "gravity")
+
+ col.itemR(cloth, "pin_cloth", text="Pin")
+ col = col.column(align=True)
+ col.active = cloth.pin_cloth
+ col.itemR(cloth, "pin_stiffness", text="Stiffness")
+ col.item_pointerR(cloth, "mass_vertex_group", ob, "vertex_groups", text="")
+
+ col = split.column(align=True)
+ col.itemL(text="Presets...")
+ col.itemL(text="")
+ col.itemR(cloth, "mass")
+ col.itemR(cloth, "structural_stiffness", text="Structural")
+ col.itemR(cloth, "bending_stiffness", text="Bending")
+ col.itemL(text="Damping")
+ col.itemR(cloth, "spring_damping", text="Spring")
+ col.itemR(cloth, "air_damping", text="Air")
+
+ # Disabled for now
+ """
+ if cloth.mass_vertex_group:
+ layout.itemL(text="Goal:")
+
+ col = layout.column_flow()
+ col.itemR(cloth, "goal_default", text="Default")
+ col.itemR(cloth, "goal_spring", text="Stiffness")
+ col.itemR(cloth, "goal_friction", text="Friction")
+ """
+
+class PHYSICS_PT_cloth_cache(PhysicButtonsPanel):
+ __idname__= "PHYSICS_PT_cloth_cache"
+ __label__ = "Cloth Cache"
+ __default_closed__ = True
+
+ def poll(self, context):
+ return (context.cloth != None)
+
+ def draw(self, context):
+ layout = self.layout
+
+ cache = context.cloth.point_cache
- col = split.column()
- col.itemR(cloth, "quality", slider=True)
- col.itemR(cloth, "gravity")
- col.itemR(cloth, "mass")
- col.itemR(cloth, "mass_vertex_group", text="Vertex Group")
-
- col = split.column()
- col.itemL(text="Stiffness:")
- col.itemR(cloth, "structural_stiffness", text="Structural")
- col.itemR(cloth, "bending_stiffness", text="Bending")
- col.itemL(text="Damping:")
- col.itemR(cloth, "spring_damping", text="Spring")
- col.itemR(cloth, "air_damping", text="Air")
-
- # Disabled for now
- """
- if cloth.mass_vertex_group:
- layout.itemL(text="Goal:")
-
- col = layout.column_flow()
- col.itemR(cloth, "goal_default", text="Default")
- col.itemR(cloth, "goal_spring", text="Stiffness")
- col.itemR(cloth, "goal_friction", text="Friction")
- """
+ row = layout.row()
+ row.itemR(cache, "name")
+
+ row = layout.row()
+ row.itemR(cache, "start_frame")
+ row.itemR(cache, "end_frame")
+
+ row = layout.row()
+
+ if cache.baked == True:
+ row.itemO("PTCACHE_OT_free_bake_cloth", text="Free Bake")
+ else:
+ row.item_booleanO("PTCACHE_OT_cache_cloth", "bake", True, text="Bake")
+
+ subrow = row.row()
+ subrow.enabled = cache.frames_skipped or cache.outdated
+ subrow.itemO("PTCACHE_OT_cache_cloth", text="Calculate to Current Frame")
+
+ row = layout.row()
+ #row.enabled = particle_panel_enabled(psys)
+ row.itemO("PTCACHE_OT_bake_from_cloth_cache", text="Current Cache to Bake")
+ row.itemR(cache, "step");
-class Physic_PT_cloth_collision(PhysicButtonsPanel):
- __idname__ = "Physic_PT_clothcollision"
+ row = layout.row()
+ #row.enabled = particle_panel_enabled(psys)
+ row.itemR(cache, "quick_cache")
+ row.itemR(cache, "disk_cache")
+
+ layout.itemL(text=cache.info)
+
+ layout.itemS()
+
+ row = layout.row()
+ row.itemO("PTCACHE_OT_bake_all", "bake", True, text="Bake All Dynamics")
+ row.itemO("PTCACHE_OT_free_bake_all", text="Free All Bakes")
+ layout.itemO("PTCACHE_OT_bake_all", text="Update All Dynamics to current frame")
+
+class PHYSICS_PT_cloth_collision(PhysicButtonsPanel):
+ __idname__ = "PHYSICS_PT_clothcollision"
__label__ = "Cloth Collision"
+
+ def poll(self, context):
+ return (context.cloth != None)
def draw_header(self, context):
layout = self.layout
- md = self.cloth_modifier(context)
- cloth = md.collision_settings
+ cloth = context.cloth.collision_settings
layout.itemR(cloth, "enable_collision", text="")
def draw(self, context):
layout = self.layout
+ cloth = context.cloth.collision_settings
+ split = layout.split()
- md = self.cloth_modifier(context)
- cloth = md.collision_settings
- layout.active = cloth.enable_collision
+ layout.active = cloth.enable_collision
- col = layout.column_flow()
- col.itemR(cloth, "collision_quality", slider=True)
+ col = split.column(align=True)
+ col.itemR(cloth, "collision_quality", slider=True, text="Quality")
+ col.itemR(cloth, "min_distance", text="Distance")
col.itemR(cloth, "friction")
- col.itemR(cloth, "min_distance", text="MinDistance")
-
- layout.itemR(cloth, "enable_self_collision", text="Self Collision")
-
- col = layout.column_flow()
+ col = split.column(align="True")
+ col.itemR(cloth, "enable_self_collision", text="Self Collision")
+ col = col.column(align=True)
col.active = cloth.enable_self_collision
- col.itemR(cloth, "self_collision_quality", slider=True)
- col.itemR(cloth, "self_min_distance", text="MinDistance")
+ col.itemR(cloth, "self_collision_quality", slider=True, text="Quality")
+ col.itemR(cloth, "self_min_distance", text="Distance")
-class Physic_PT_cloth_stiffness(PhysicButtonsPanel):
- __idname__ = "Physic_PT_stiffness"
+class PHYSICS_PT_cloth_stiffness(PhysicButtonsPanel):
+ __idname__ = "PHYSICS_PT_stiffness"
__label__ = "Cloth Stiffness Scaling"
+
+ def poll(self, context):
+ return (context.cloth != None)
def draw_header(self, context):
layout = self.layout
- md = self.cloth_modifier(context)
- cloth = md.settings
+ cloth = context.cloth.settings
layout.itemR(cloth, "stiffness_scaling", text="")
def draw(self, context):
layout = self.layout
+ ob = context.object
+ cloth = context.cloth.settings
- md = self.cloth_modifier(context)
- cloth = md.settings
layout.active = cloth.stiffness_scaling
split = layout.split()
- sub = split.column()
+ sub = split.column(align=True)
sub.itemL(text="Structural Stiffness:")
- sub.column().itemR(cloth, "structural_stiffness_vertex_group", text="VGroup")
sub.itemR(cloth, "structural_stiffness_max", text="Max")
+ sub.item_pointerR(cloth, "structural_stiffness_vertex_group", ob, "vertex_groups", text="")
- sub = split.column()
+ sub = split.column(align=True)
sub.itemL(text="Bending Stiffness:")
- sub.column().itemR(cloth, "bending_vertex_group", text="VGroup")
sub.itemR(cloth, "bending_stiffness_max", text="Max")
+ sub.item_pointerR(cloth, "bending_vertex_group", ob, "vertex_groups", text="")
-bpy.types.register(Physic_PT_cloth)
-bpy.types.register(Physic_PT_cloth_collision)
-bpy.types.register(Physic_PT_cloth_stiffness) \ No newline at end of file
+bpy.types.register(PHYSICS_PT_cloth)
+bpy.types.register(PHYSICS_PT_cloth_cache)
+bpy.types.register(PHYSICS_PT_cloth_collision)
+bpy.types.register(PHYSICS_PT_cloth_stiffness)