diff options
author | Campbell Barton <ideasman42@gmail.com> | 2011-03-21 15:35:49 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2011-03-21 15:35:49 +0300 |
commit | 2e6a02438e997f1024f3ba6c332314f09f01a3b4 (patch) | |
tree | 7b9427c972858a2b0950b0328bb500f11294161b /release/scripts/startup/bl_ui/properties_physics_field.py | |
parent | 28d39473fc65543cbf3adc44964d4a9703d3076a (diff) |
move script directories for internal blender scripts.
ui/ --> startup/bl_ui
op/ --> startup/bl_operators
scripts/startup/ is now the only auto-loading script dir which gives some speedup for blender loading too.
~/.blender/2.56/scripts/startup works for auto-loading scripts too.
Diffstat (limited to 'release/scripts/startup/bl_ui/properties_physics_field.py')
-rw-r--r-- | release/scripts/startup/bl_ui/properties_physics_field.py | 218 |
1 files changed, 218 insertions, 0 deletions
diff --git a/release/scripts/startup/bl_ui/properties_physics_field.py b/release/scripts/startup/bl_ui/properties_physics_field.py new file mode 100644 index 00000000000..fd5549c6e0a --- /dev/null +++ b/release/scripts/startup/bl_ui/properties_physics_field.py @@ -0,0 +1,218 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8 compliant> +import bpy + + +from bl_ui.properties_physics_common import ( + basic_force_field_settings_ui, + basic_force_field_falloff_ui, + ) + + +class PhysicButtonsPanel(): + bl_space_type = 'PROPERTIES' + bl_region_type = 'WINDOW' + bl_context = "physics" + + @classmethod + def poll(cls, context): + rd = context.scene.render + return (context.object) and (not rd.use_game_engine) + + +class PHYSICS_PT_field(PhysicButtonsPanel, bpy.types.Panel): + bl_label = "Force Fields" + + @classmethod + def poll(cls, context): + ob = context.object + rd = context.scene.render + return (not rd.use_game_engine) and (ob.field) and (ob.field.type != 'NONE') + + def draw(self, context): + layout = self.layout + + ob = context.object + field = ob.field + + split = layout.split(percentage=0.2) + split.label(text="Type:") + + split.prop(field, "type", text="") + + if field.type not in {'NONE', 'GUIDE', 'TEXTURE'}: + split = layout.split(percentage=0.2) + split.label(text="Shape:") + split.prop(field, "shape", text="") + + split = layout.split() + + if field.type == 'NONE': + return # nothing to draw + elif field.type == 'GUIDE': + col = split.column() + col.prop(field, "guide_minimum") + col.prop(field, "guide_free") + col.prop(field, "falloff_power") + col.prop(field, "use_guide_path_add") + col.prop(field, "use_guide_path_weight") + + col = split.column() + col.label(text="Clumping:") + col.prop(field, "guide_clump_amount") + col.prop(field, "guide_clump_shape") + + row = layout.row() + row.prop(field, "use_max_distance") + sub = row.row() + sub.active = field.use_max_distance + sub.prop(field, "distance_max") + + layout.separator() + + layout.prop(field, "guide_kink_type") + if (field.guide_kink_type != 'NONE'): + layout.prop(field, "guide_kink_axis") + + split = layout.split() + + col = split.column() + col.prop(field, "guide_kink_frequency") + col.prop(field, "guide_kink_shape") + + col = split.column() + col.prop(field, "guide_kink_amplitude") + + elif field.type == 'TEXTURE': + col = split.column() + col.prop(field, "strength") + col.prop(field, "texture", text="") + col.prop(field, "texture_mode", text="") + col.prop(field, "texture_nabla") + + col = split.column() + col.prop(field, "use_object_coords") + col.prop(field, "use_root_coords") + col.prop(field, "use_2d_force") + else: + basic_force_field_settings_ui(self, context, field) + + if field.type not in {'NONE', 'GUIDE'}: + + layout.label(text="Falloff:") + layout.prop(field, "falloff_type", expand=True) + + basic_force_field_falloff_ui(self, context, field) + + if field.falloff_type == 'CONE': + layout.separator() + + split = layout.split(percentage=0.35) + + col = split.column() + col.label(text="Angular:") + col.prop(field, "use_radial_min", text="Use Minimum") + col.prop(field, "use_radial_max", text="Use Maximum") + + col = split.column() + col.prop(field, "radial_falloff", text="Power") + + sub = col.column() + sub.active = field.use_radial_min + sub.prop(field, "radial_min", text="Angle") + + sub = col.column() + sub.active = field.use_radial_max + sub.prop(field, "radial_max", text="Angle") + + elif field.falloff_type == 'TUBE': + layout.separator() + + split = layout.split(percentage=0.35) + + col = split.column() + col.label(text="Radial:") + col.prop(field, "use_radial_min", text="Use Minimum") + col.prop(field, "use_radial_max", text="Use Maximum") + + col = split.column() + col.prop(field, "radial_falloff", text="Power") + + sub = col.column() + sub.active = field.use_radial_min + sub.prop(field, "radial_min", text="Distance") + + sub = col.column() + sub.active = field.use_radial_max + sub.prop(field, "radial_max", text="Distance") + + +class PHYSICS_PT_collision(PhysicButtonsPanel, bpy.types.Panel): + bl_label = "Collision" + #bl_options = {'DEFAULT_CLOSED'} + + @classmethod + def poll(cls, context): + ob = context.object + rd = context.scene.render + return (ob and ob.type == 'MESH') and (not rd.use_game_engine) and (context.collision) + + def draw(self, context): + layout = self.layout + + md = context.collision + + split = layout.split() + + coll = md.settings + + if coll: + settings = context.object.collision + + layout.active = settings.use + + split = layout.split() + + col = split.column() + col.label(text="Particle:") + col.prop(settings, "permeability", slider=True) + col.prop(settings, "stickness") + col.prop(settings, "use_particle_kill") + col.label(text="Particle Damping:") + sub = col.column(align=True) + sub.prop(settings, "damping_factor", text="Factor", slider=True) + sub.prop(settings, "damping_random", text="Random", slider=True) + + col.label(text="Particle Friction:") + sub = col.column(align=True) + sub.prop(settings, "friction_factor", text="Factor", slider=True) + sub.prop(settings, "friction_random", text="Random", slider=True) + + col = split.column() + col.label(text="Soft Body and Cloth:") + sub = col.column(align=True) + sub.prop(settings, "thickness_outer", text="Outer", slider=True) + sub.prop(settings, "thickness_inner", text="Inner", slider=True) + + col.label(text="Soft Body Damping:") + col.prop(settings, "damping", text="Factor", slider=True) + + col.label(text="Force Fields:") + col.prop(settings, "absorption", text="Absorption") |