Changeset View
Changeset View
Standalone View
Standalone View
release/scripts/startup/bl_ui/properties_particle.py
| Show First 20 Lines • Show All 61 Lines • ▼ Show 20 Lines | if context.particle_system: | ||||
| return context.particle_system.settings | return context.particle_system.settings | ||||
| elif isinstance(context.space_data.pin_id, bpy.types.ParticleSettings): | elif isinstance(context.space_data.pin_id, bpy.types.ParticleSettings): | ||||
| return context.space_data.pin_id | return context.space_data.pin_id | ||||
| return None | return None | ||||
| class PARTICLE_MT_specials(Menu): | class PARTICLE_MT_specials(Menu): | ||||
| bl_label = "Particle Specials" | bl_label = "Particle Specials" | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| def draw(self, context): | def draw(self, context): | ||||
| layout = self.layout | layout = self.layout | ||||
| props = layout.operator("particle.copy_particle_systems", text="Copy Active to Selected Objects") | props = layout.operator("particle.copy_particle_systems", text="Copy Active to Selected Objects") | ||||
| props.use_active = True | props.use_active = True | ||||
| props.remove_target_particles = False | props.remove_target_particles = False | ||||
| props = layout.operator("particle.copy_particle_systems", text="Copy All to Selected Objects") | props = layout.operator("particle.copy_particle_systems", text="Copy All to Selected Objects") | ||||
| props.use_active = False | props.use_active = False | ||||
| props.remove_target_particles = True | props.remove_target_particles = True | ||||
| layout.operator("particle.duplicate_particle_system") | layout.operator("particle.duplicate_particle_system") | ||||
| class PARTICLE_PT_hair_dynamics_presets(PresetMenu): | class PARTICLE_PT_hair_dynamics_presets(PresetMenu): | ||||
| bl_label = "Hair Dynamics Presets" | bl_label = "Hair Dynamics Presets" | ||||
| preset_subdir = "hair_dynamics" | preset_subdir = "hair_dynamics" | ||||
| preset_operator = "script.execute_preset" | preset_operator = "script.execute_preset" | ||||
| preset_add_operator = "particle.hair_dynamics_preset_add" | preset_add_operator = "particle.hair_dynamics_preset_add" | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| class ParticleButtonsPanel: | class ParticleButtonsPanel: | ||||
| bl_space_type = 'PROPERTIES' | bl_space_type = 'PROPERTIES' | ||||
| bl_region_type = 'WINDOW' | bl_region_type = 'WINDOW' | ||||
| bl_context = "particle" | bl_context = "particle" | ||||
| @classmethod | @classmethod | ||||
| Show All 27 Lines | def draw_item(self, context, layout, data, item, icon, active_data, active_propname, index, flt_flag): | ||||
| elif self.layout_type == 'GRID': | elif self.layout_type == 'GRID': | ||||
| layout.alignment = 'CENTER' | layout.alignment = 'CENTER' | ||||
| layout.label(text="", icon_value=icon) | layout.label(text="", icon_value=icon) | ||||
| class PARTICLE_PT_context_particles(ParticleButtonsPanel, Panel): | class PARTICLE_PT_context_particles(ParticleButtonsPanel, Panel): | ||||
| bl_label = "" | bl_label = "" | ||||
| bl_options = {'HIDE_HEADER'} | bl_options = {'HIDE_HEADER'} | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| @classmethod | @classmethod | ||||
| def poll(cls, context): | def poll(cls, context): | ||||
| engine = context.engine | engine = context.engine | ||||
| return (context.particle_system or context.object or context.space_data.pin_id) and (engine in cls.COMPAT_ENGINES) | return (context.particle_system or context.object or context.space_data.pin_id) and (engine in cls.COMPAT_ENGINES) | ||||
| def draw(self, context): | def draw(self, context): | ||||
| layout = self.layout | layout = self.layout | ||||
| ▲ Show 20 Lines • Show All 86 Lines • ▼ Show 20 Lines | def draw(self, context): | ||||
| elif psys is not None and part.type == 'REACTOR': | elif psys is not None and part.type == 'REACTOR': | ||||
| split.enabled = particle_panel_enabled(context, psys) | split.enabled = particle_panel_enabled(context, psys) | ||||
| split.prop(psys, "reactor_target_object") | split.prop(psys, "reactor_target_object") | ||||
| split.prop(psys, "reactor_target_particle_system", text="Particle System") | split.prop(psys, "reactor_target_particle_system", text="Particle System") | ||||
| class PARTICLE_PT_emission(ParticleButtonsPanel, Panel): | class PARTICLE_PT_emission(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Emission" | bl_label = "Emission" | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| @classmethod | @classmethod | ||||
| def poll(cls, context): | def poll(cls, context): | ||||
| psys = context.particle_system | psys = context.particle_system | ||||
| settings = particle_get_settings(context) | settings = particle_get_settings(context) | ||||
| if settings is None: | if settings is None: | ||||
| return False | return False | ||||
| Show All 35 Lines | def draw(self, context): | ||||
| col.prop(part, "lifetime") | col.prop(part, "lifetime") | ||||
| col.prop(part, "lifetime_random", slider=True, text="Lifetime Randomness") | col.prop(part, "lifetime_random", slider=True, text="Lifetime Randomness") | ||||
| class PARTICLE_PT_emission_source(ParticleButtonsPanel, Panel): | class PARTICLE_PT_emission_source(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Source" | bl_label = "Source" | ||||
| bl_parent_id = "PARTICLE_PT_emission" | bl_parent_id = "PARTICLE_PT_emission" | ||||
| bl_options = {'DEFAULT_CLOSED'} | bl_options = {'DEFAULT_CLOSED'} | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| def draw(self, context): | def draw(self, context): | ||||
| layout = self.layout | layout = self.layout | ||||
| part = particle_get_settings(context) | part = particle_get_settings(context) | ||||
| layout.use_property_split = True | layout.use_property_split = True | ||||
| Show All 21 Lines | def draw(self, context): | ||||
| elif part.distribution == 'GRID': | elif part.distribution == 'GRID': | ||||
| col.prop(part, "grid_resolution") | col.prop(part, "grid_resolution") | ||||
| col.prop(part, "grid_random", text="Random", slider=True) | col.prop(part, "grid_random", text="Random", slider=True) | ||||
| class PARTICLE_PT_hair_dynamics(ParticleButtonsPanel, Panel): | class PARTICLE_PT_hair_dynamics(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Hair Dynamics" | bl_label = "Hair Dynamics" | ||||
| bl_options = {'DEFAULT_CLOSED'} | bl_options = {'DEFAULT_CLOSED'} | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| @classmethod | @classmethod | ||||
| def poll(cls, context): | def poll(cls, context): | ||||
| psys = context.particle_system | psys = context.particle_system | ||||
| engine = context.engine | engine = context.engine | ||||
| if psys is None: | if psys is None: | ||||
| return False | return False | ||||
| if psys.settings is None: | if psys.settings is None: | ||||
| ▲ Show 20 Lines • Show All 64 Lines • ▼ Show 20 Lines | def draw(self, context): | ||||
| (result.min_iterations, result.max_iterations, result.avg_iterations)) | (result.min_iterations, result.max_iterations, result.avg_iterations)) | ||||
| box.label("Error: %.5f .. %.5f (avg. %.5f)" % (result.min_error, result.max_error, result.avg_error)) | box.label("Error: %.5f .. %.5f (avg. %.5f)" % (result.min_error, result.max_error, result.avg_error)) | ||||
| class PARTICLE_PT_hair_dynamics_structure(ParticleButtonsPanel, Panel): | class PARTICLE_PT_hair_dynamics_structure(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Structure" | bl_label = "Structure" | ||||
| bl_parent_id = "PARTICLE_PT_hair_dynamics" | bl_parent_id = "PARTICLE_PT_hair_dynamics" | ||||
| bl_options = {'DEFAULT_CLOSED'} | bl_options = {'DEFAULT_CLOSED'} | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| @classmethod | @classmethod | ||||
| def poll(cls, context): | def poll(cls, context): | ||||
| return context.particle_system.cloth is not None | return context.particle_system.cloth is not None | ||||
| def draw(self, context): | def draw(self, context): | ||||
| layout = self.layout | layout = self.layout | ||||
| Show All 15 Lines | def draw(self, context): | ||||
| # XXX has no noticeable effect with stiff hair structure springs | # XXX has no noticeable effect with stiff hair structure springs | ||||
| #col.prop(cloth, "spring_damping", text="Damping") | #col.prop(cloth, "spring_damping", text="Damping") | ||||
| class PARTICLE_PT_hair_dynamics_volume(ParticleButtonsPanel, Panel): | class PARTICLE_PT_hair_dynamics_volume(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Volume" | bl_label = "Volume" | ||||
| bl_parent_id = "PARTICLE_PT_hair_dynamics" | bl_parent_id = "PARTICLE_PT_hair_dynamics" | ||||
| bl_options = {'DEFAULT_CLOSED'} | bl_options = {'DEFAULT_CLOSED'} | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| @classmethod | @classmethod | ||||
| def poll(cls, context): | def poll(cls, context): | ||||
| return context.particle_system.cloth is not None | return context.particle_system.cloth is not None | ||||
| def draw(self, context): | def draw(self, context): | ||||
| layout = self.layout | layout = self.layout | ||||
| Show All 15 Lines | def draw(self, context): | ||||
| col.prop(cloth, "density_target", text="Density Target") | col.prop(cloth, "density_target", text="Density Target") | ||||
| col.prop(cloth, "density_strength", slider=True, text="Density Strength") | col.prop(cloth, "density_strength", slider=True, text="Density Strength") | ||||
| class PARTICLE_PT_cache(ParticleButtonsPanel, Panel): | class PARTICLE_PT_cache(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Cache" | bl_label = "Cache" | ||||
| bl_options = {'DEFAULT_CLOSED'} | bl_options = {'DEFAULT_CLOSED'} | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| @classmethod | @classmethod | ||||
| def poll(cls, context): | def poll(cls, context): | ||||
| psys = context.particle_system | psys = context.particle_system | ||||
| engine = context.engine | engine = context.engine | ||||
| if psys is None: | if psys is None: | ||||
| return False | return False | ||||
| if psys.settings is None: | if psys.settings is None: | ||||
| Show All 14 Lines | def draw(self, context): | ||||
| psys = context.particle_system | psys = context.particle_system | ||||
| point_cache_ui(self, context, psys.point_cache, True, 'HAIR' if (psys.settings.type == 'HAIR') else 'PSYS') | point_cache_ui(self, context, psys.point_cache, True, 'HAIR' if (psys.settings.type == 'HAIR') else 'PSYS') | ||||
| class PARTICLE_PT_velocity(ParticleButtonsPanel, Panel): | class PARTICLE_PT_velocity(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Velocity" | bl_label = "Velocity" | ||||
| bl_options = {'DEFAULT_CLOSED'} | bl_options = {'DEFAULT_CLOSED'} | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| @classmethod | @classmethod | ||||
| def poll(cls, context): | def poll(cls, context): | ||||
| if particle_panel_poll(PARTICLE_PT_velocity, context): | if particle_panel_poll(PARTICLE_PT_velocity, context): | ||||
| psys = context.particle_system | psys = context.particle_system | ||||
| settings = particle_get_settings(context) | settings = particle_get_settings(context) | ||||
| if settings.type == 'HAIR' and not settings.use_advanced_hair: | if settings.type == 'HAIR' and not settings.use_advanced_hair: | ||||
| Show All 32 Lines | def draw(self, context): | ||||
| # if part.type=='REACTOR': | # if part.type=='REACTOR': | ||||
| # sub.prop(part, "reactor_factor") | # sub.prop(part, "reactor_factor") | ||||
| # sub.prop(part, "reaction_shape", slider=True) | # sub.prop(part, "reaction_shape", slider=True) | ||||
| class PARTICLE_PT_rotation(ParticleButtonsPanel, Panel): | class PARTICLE_PT_rotation(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Rotation" | bl_label = "Rotation" | ||||
| bl_options = {'DEFAULT_CLOSED'} | bl_options = {'DEFAULT_CLOSED'} | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| @classmethod | @classmethod | ||||
| def poll(cls, context): | def poll(cls, context): | ||||
| if particle_panel_poll(PARTICLE_PT_rotation, context): | if particle_panel_poll(PARTICLE_PT_rotation, context): | ||||
| psys = context.particle_system | psys = context.particle_system | ||||
| settings = particle_get_settings(context) | settings = particle_get_settings(context) | ||||
| if settings.type == 'HAIR' and not settings.use_advanced_hair: | if settings.type == 'HAIR' and not settings.use_advanced_hair: | ||||
| Show All 36 Lines | def draw(self, context): | ||||
| if part.type != 'HAIR': | if part.type != 'HAIR': | ||||
| col.prop(part, "use_dynamic_rotation") | col.prop(part, "use_dynamic_rotation") | ||||
| class PARTICLE_PT_rotation_angular_velocity(ParticleButtonsPanel, Panel): | class PARTICLE_PT_rotation_angular_velocity(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Angular Velocity" | bl_label = "Angular Velocity" | ||||
| bl_parent_id = "PARTICLE_PT_rotation" | bl_parent_id = "PARTICLE_PT_rotation" | ||||
| bl_options = {'DEFAULT_CLOSED'} | bl_options = {'DEFAULT_CLOSED'} | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| def draw(self, context): | def draw(self, context): | ||||
| layout = self.layout | layout = self.layout | ||||
| psys = context.particle_system | psys = context.particle_system | ||||
| if psys: | if psys: | ||||
| part = psys.settings | part = psys.settings | ||||
| else: | else: | ||||
| part = context.space_data.pin_id | part = context.space_data.pin_id | ||||
| layout.enabled = particle_panel_enabled(context, psys) and part.use_rotations | layout.enabled = particle_panel_enabled(context, psys) and part.use_rotations | ||||
| layout.use_property_split = True | layout.use_property_split = True | ||||
| col = layout.column() | col = layout.column() | ||||
| col.prop(part, "angular_velocity_mode", text="Axis") | col.prop(part, "angular_velocity_mode", text="Axis") | ||||
| sub = col.column(align=True) | sub = col.column(align=True) | ||||
| sub.active = part.angular_velocity_mode != 'NONE' | sub.active = part.angular_velocity_mode != 'NONE' | ||||
| sub.prop(part, "angular_velocity_factor", text="Amount") | sub.prop(part, "angular_velocity_factor", text="Amount") | ||||
| class PARTICLE_PT_physics(ParticleButtonsPanel, Panel): | class PARTICLE_PT_physics(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Physics" | bl_label = "Physics" | ||||
| bl_options = {'DEFAULT_CLOSED'} | bl_options = {'DEFAULT_CLOSED'} | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| @classmethod | @classmethod | ||||
| def poll(cls, context): | def poll(cls, context): | ||||
| if particle_panel_poll(PARTICLE_PT_physics, context): | if particle_panel_poll(PARTICLE_PT_physics, context): | ||||
| psys = context.particle_system | psys = context.particle_system | ||||
| settings = particle_get_settings(context) | settings = particle_get_settings(context) | ||||
| if settings.type == 'HAIR' and not settings.use_advanced_hair: | if settings.type == 'HAIR' and not settings.use_advanced_hair: | ||||
| Show All 38 Lines | def draw(self, context): | ||||
| col.label(text="Keys") | col.label(text="Keys") | ||||
| class PARTICLE_PT_physics_fluid_advanced(ParticleButtonsPanel, Panel): | class PARTICLE_PT_physics_fluid_advanced(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Advanced" | bl_label = "Advanced" | ||||
| bl_parent_id = "PARTICLE_PT_physics" | bl_parent_id = "PARTICLE_PT_physics" | ||||
| bl_options = {'DEFAULT_CLOSED'} | bl_options = {'DEFAULT_CLOSED'} | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| @classmethod | @classmethod | ||||
| def poll(cls, context): | def poll(cls, context): | ||||
| part = particle_get_settings(context) | part = particle_get_settings(context) | ||||
| fluid = part.fluid | fluid = part.fluid | ||||
| if part.physics_type == 'FLUID': | if part.physics_type == 'FLUID': | ||||
| return True | return True | ||||
| else: | else: | ||||
| Show All 33 Lines | def draw(self, context): | ||||
| sub.label(text="Spacing: %g" % spacing) | sub.label(text="Spacing: %g" % spacing) | ||||
| class PARTICLE_PT_physics_fluid_springs(ParticleButtonsPanel, Panel): | class PARTICLE_PT_physics_fluid_springs(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Springs" | bl_label = "Springs" | ||||
| bl_parent_id = "PARTICLE_PT_physics" | bl_parent_id = "PARTICLE_PT_physics" | ||||
| bl_options = {'DEFAULT_CLOSED'} | bl_options = {'DEFAULT_CLOSED'} | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| @classmethod | @classmethod | ||||
| def poll(cls, context): | def poll(cls, context): | ||||
| part = particle_get_settings(context) | part = particle_get_settings(context) | ||||
| fluid = part.fluid | fluid = part.fluid | ||||
| if part.physics_type == 'FLUID' and fluid.solver == 'DDR': | if part.physics_type == 'FLUID' and fluid.solver == 'DDR': | ||||
| return True | return True | ||||
| else: | else: | ||||
| Show All 11 Lines | def draw(self, context): | ||||
| col.prop(fluid, "spring_force", text="Force") | col.prop(fluid, "spring_force", text="Force") | ||||
| class PARTICLE_PT_physics_fluid_springs_viscoelastic(ParticleButtonsPanel, Panel): | class PARTICLE_PT_physics_fluid_springs_viscoelastic(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Viscoelastic Springs" | bl_label = "Viscoelastic Springs" | ||||
| bl_parent_id = "PARTICLE_PT_physics_fluid_springs" | bl_parent_id = "PARTICLE_PT_physics_fluid_springs" | ||||
| bl_options = {'DEFAULT_CLOSED'} | bl_options = {'DEFAULT_CLOSED'} | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| @classmethod | @classmethod | ||||
| def poll(cls, context): | def poll(cls, context): | ||||
| part = particle_get_settings(context) | part = particle_get_settings(context) | ||||
| fluid = part.fluid | fluid = part.fluid | ||||
| if part.physics_type == 'FLUID' and fluid.solver == 'DDR': | if part.physics_type == 'FLUID' and fluid.solver == 'DDR': | ||||
| return True | return True | ||||
| else: | else: | ||||
| Show All 24 Lines | def draw(self, context): | ||||
| col.prop(fluid, "use_initial_rest_length") | col.prop(fluid, "use_initial_rest_length") | ||||
| col.prop(fluid, "spring_frames", text="Frames") | col.prop(fluid, "spring_frames", text="Frames") | ||||
| class PARTICLE_PT_physics_fluid_springs_advanced(ParticleButtonsPanel, Panel): | class PARTICLE_PT_physics_fluid_springs_advanced(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Advanced" | bl_label = "Advanced" | ||||
| bl_parent_id = "PARTICLE_PT_physics_fluid_springs" | bl_parent_id = "PARTICLE_PT_physics_fluid_springs" | ||||
| bl_options = {'DEFAULT_CLOSED'} | bl_options = {'DEFAULT_CLOSED'} | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| @classmethod | @classmethod | ||||
| def poll(cls, context): | def poll(cls, context): | ||||
| part = particle_get_settings(context) | part = particle_get_settings(context) | ||||
| fluid = part.fluid | fluid = part.fluid | ||||
| if part.physics_type == 'FLUID' and fluid.solver == 'DDR': | if part.physics_type == 'FLUID' and fluid.solver == 'DDR': | ||||
| return True | return True | ||||
| else: | else: | ||||
| Show All 11 Lines | def draw(self, context): | ||||
| sub.prop(fluid, "rest_length", slider=fluid.factor_rest_length) | sub.prop(fluid, "rest_length", slider=fluid.factor_rest_length) | ||||
| sub.prop(fluid, "factor_rest_length") | sub.prop(fluid, "factor_rest_length") | ||||
| class PARTICLE_PT_physics_boids_movement(ParticleButtonsPanel, Panel): | class PARTICLE_PT_physics_boids_movement(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Movement" | bl_label = "Movement" | ||||
| bl_parent_id = "PARTICLE_PT_physics" | bl_parent_id = "PARTICLE_PT_physics" | ||||
| bl_options = {'DEFAULT_CLOSED'} | bl_options = {'DEFAULT_CLOSED'} | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| @classmethod | @classmethod | ||||
| def poll(cls, context): | def poll(cls, context): | ||||
| part = particle_get_settings(context) | part = particle_get_settings(context) | ||||
| return part.physics_type in {'BOIDS'} | return part.physics_type in {'BOIDS'} | ||||
| def draw(self, context): | def draw(self, context): | ||||
| layout = self.layout | layout = self.layout | ||||
| Show All 37 Lines | def draw(self, context): | ||||
| layout.prop(part, "collision_group") | layout.prop(part, "collision_group") | ||||
| class PARTICLE_PT_physics_boids_battle(ParticleButtonsPanel, Panel): | class PARTICLE_PT_physics_boids_battle(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Battle" | bl_label = "Battle" | ||||
| bl_parent_id = "PARTICLE_PT_physics" | bl_parent_id = "PARTICLE_PT_physics" | ||||
| bl_options = {'DEFAULT_CLOSED'} | bl_options = {'DEFAULT_CLOSED'} | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| @classmethod | @classmethod | ||||
| def poll(cls, context): | def poll(cls, context): | ||||
| part = particle_get_settings(context) | part = particle_get_settings(context) | ||||
| return part.physics_type in {'BOIDS'} | return part.physics_type in {'BOIDS'} | ||||
| def draw(self, context): | def draw(self, context): | ||||
| layout = self.layout | layout = self.layout | ||||
| Show All 11 Lines | def draw(self, context): | ||||
| col.prop(boids, "accuracy") | col.prop(boids, "accuracy") | ||||
| col.prop(boids, "range") | col.prop(boids, "range") | ||||
| class PARTICLE_PT_physics_boids_misc(ParticleButtonsPanel, Panel): | class PARTICLE_PT_physics_boids_misc(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Misc" | bl_label = "Misc" | ||||
| bl_parent_id = "PARTICLE_PT_physics" | bl_parent_id = "PARTICLE_PT_physics" | ||||
| bl_options = {'DEFAULT_CLOSED'} | bl_options = {'DEFAULT_CLOSED'} | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| @classmethod | @classmethod | ||||
| def poll(cls, context): | def poll(cls, context): | ||||
| part = particle_get_settings(context) | part = particle_get_settings(context) | ||||
| return part.physics_type in {'BOIDS'} | return part.physics_type in {'BOIDS'} | ||||
| def draw(self, context): | def draw(self, context): | ||||
| layout = self.layout | layout = self.layout | ||||
| Show All 9 Lines | def draw(self, context): | ||||
| col.prop(boids, "pitch", slider=True) | col.prop(boids, "pitch", slider=True) | ||||
| col.prop(boids, "height", slider=True) | col.prop(boids, "height", slider=True) | ||||
| class PARTICLE_PT_physics_relations(ParticleButtonsPanel, Panel): | class PARTICLE_PT_physics_relations(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Relations" | bl_label = "Relations" | ||||
| bl_parent_id = "PARTICLE_PT_physics" | bl_parent_id = "PARTICLE_PT_physics" | ||||
| bl_options = {'DEFAULT_CLOSED'} | bl_options = {'DEFAULT_CLOSED'} | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| @classmethod | @classmethod | ||||
| def poll(cls, context): | def poll(cls, context): | ||||
| part = particle_get_settings(context) | part = particle_get_settings(context) | ||||
| return part.physics_type in {'KEYED', 'BOIDS', 'FLUID'} | return part.physics_type in {'KEYED', 'BOIDS', 'FLUID'} | ||||
| def draw(self, context): | def draw(self, context): | ||||
| layout = self.layout | layout = self.layout | ||||
| ▲ Show 20 Lines • Show All 43 Lines • ▼ Show 20 Lines | def draw(self, context): | ||||
| sub.prop(key, "object") | sub.prop(key, "object") | ||||
| sub.prop(key, "system", text="System") | sub.prop(key, "system", text="System") | ||||
| class PARTICLE_PT_physics_deflection(ParticleButtonsPanel, Panel): | class PARTICLE_PT_physics_deflection(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Deflection" | bl_label = "Deflection" | ||||
| bl_parent_id = "PARTICLE_PT_physics" | bl_parent_id = "PARTICLE_PT_physics" | ||||
| bl_options = {'DEFAULT_CLOSED'} | bl_options = {'DEFAULT_CLOSED'} | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| @classmethod | @classmethod | ||||
| def poll(cls, context): | def poll(cls, context): | ||||
| part = particle_get_settings(context) | part = particle_get_settings(context) | ||||
| return part.physics_type in {'NEWTON', 'FLUID'} | return part.physics_type in {'NEWTON', 'FLUID'} | ||||
| def draw(self, context): | def draw(self, context): | ||||
| layout = self.layout | layout = self.layout | ||||
| Show All 9 Lines | def draw(self, context): | ||||
| col.prop(part, "use_die_on_collision") | col.prop(part, "use_die_on_collision") | ||||
| col.prop(part, "collision_group") | col.prop(part, "collision_group") | ||||
| class PARTICLE_PT_physics_forces(ParticleButtonsPanel, Panel): | class PARTICLE_PT_physics_forces(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Forces" | bl_label = "Forces" | ||||
| bl_parent_id = "PARTICLE_PT_physics" | bl_parent_id = "PARTICLE_PT_physics" | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| @classmethod | @classmethod | ||||
| def poll(cls, context): | def poll(cls, context): | ||||
| part = particle_get_settings(context) | part = particle_get_settings(context) | ||||
| return part.physics_type == 'NEWTON' | return part.physics_type == 'NEWTON' | ||||
| def draw(self, context): | def draw(self, context): | ||||
| layout = self.layout | layout = self.layout | ||||
| Show All 10 Lines | def draw(self, context): | ||||
| col.prop(part, "drag_factor", slider=True) | col.prop(part, "drag_factor", slider=True) | ||||
| col.prop(part, "damping", slider=True) | col.prop(part, "damping", slider=True) | ||||
| class PARTICLE_PT_physics_integration(ParticleButtonsPanel, Panel): | class PARTICLE_PT_physics_integration(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Integration" | bl_label = "Integration" | ||||
| bl_options = {'DEFAULT_CLOSED'} | bl_options = {'DEFAULT_CLOSED'} | ||||
| bl_parent_id = "PARTICLE_PT_physics" | bl_parent_id = "PARTICLE_PT_physics" | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| @classmethod | @classmethod | ||||
| def poll(cls, context): | def poll(cls, context): | ||||
| part = particle_get_settings(context) | part = particle_get_settings(context) | ||||
| return part.physics_type == 'NEWTON' | return part.physics_type == 'NEWTON' | ||||
| def draw(self, context): | def draw(self, context): | ||||
| layout = self.layout | layout = self.layout | ||||
| Show All 18 Lines | def draw(self, context): | ||||
| col.prop(part, "courant_target", text="Threshold") | col.prop(part, "courant_target", text="Threshold") | ||||
| class PARTICLE_PT_boidbrain(ParticleButtonsPanel, Panel): | class PARTICLE_PT_boidbrain(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Boid Brain" | bl_label = "Boid Brain" | ||||
| bl_options = {'DEFAULT_CLOSED'} | bl_options = {'DEFAULT_CLOSED'} | ||||
| bl_parent_id = "PARTICLE_PT_physics" | bl_parent_id = "PARTICLE_PT_physics" | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| @classmethod | @classmethod | ||||
| def poll(cls, context): | def poll(cls, context): | ||||
| psys = context.particle_system | psys = context.particle_system | ||||
| settings = particle_get_settings(context) | settings = particle_get_settings(context) | ||||
| engine = context.engine | engine = context.engine | ||||
| if settings is None: | if settings is None: | ||||
| ▲ Show 20 Lines • Show All 87 Lines • ▼ Show 20 Lines | def draw(self, context): | ||||
| elif rule.type == 'FIGHT': | elif rule.type == 'FIGHT': | ||||
| row.prop(rule, "distance") | row.prop(rule, "distance") | ||||
| row.prop(rule, "flee_distance") | row.prop(rule, "flee_distance") | ||||
| class PARTICLE_PT_render(ParticleButtonsPanel, Panel): | class PARTICLE_PT_render(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Render" | bl_label = "Render" | ||||
| bl_options = {'DEFAULT_CLOSED'} | bl_options = {'DEFAULT_CLOSED'} | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| @classmethod | @classmethod | ||||
| def poll(cls, context): | def poll(cls, context): | ||||
| settings = particle_get_settings(context) | settings = particle_get_settings(context) | ||||
| engine = context.engine | engine = context.engine | ||||
| if settings is None: | if settings is None: | ||||
| return False | return False | ||||
| Show All 23 Lines | def draw(self, context): | ||||
| col.prop(part, "material_slot", text="Material") | col.prop(part, "material_slot", text="Material") | ||||
| col.prop(psys, "parent", text="Coordinate System") | col.prop(psys, "parent", text="Coordinate System") | ||||
| class PARTICLE_PT_render_extra(ParticleButtonsPanel, Panel): | class PARTICLE_PT_render_extra(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Extra" | bl_label = "Extra" | ||||
| bl_parent_id = "PARTICLE_PT_render" | bl_parent_id = "PARTICLE_PT_render" | ||||
| bl_options = {'DEFAULT_CLOSED'} | bl_options = {'DEFAULT_CLOSED'} | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| @classmethod | @classmethod | ||||
| def poll(cls, context): | def poll(cls, context): | ||||
| part = particle_get_settings(context) | part = particle_get_settings(context) | ||||
| return part.render_type != 'NONE' | return part.render_type != 'NONE' | ||||
| def draw(self, context): | def draw(self, context): | ||||
| layout = self.layout | layout = self.layout | ||||
| Show All 10 Lines | def draw(self, context): | ||||
| col.prop(part, "show_unborn", text="Unborn") | col.prop(part, "show_unborn", text="Unborn") | ||||
| col.prop(part, "use_dead", text="Dead") | col.prop(part, "use_dead", text="Dead") | ||||
| class PARTICLE_PT_render_line(ParticleButtonsPanel, Panel): | class PARTICLE_PT_render_line(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Line" | bl_label = "Line" | ||||
| bl_parent_id = "PARTICLE_PT_render" | bl_parent_id = "PARTICLE_PT_render" | ||||
| bl_options = {'DEFAULT_CLOSED'} | bl_options = {'DEFAULT_CLOSED'} | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| @classmethod | @classmethod | ||||
| def poll(cls, context): | def poll(cls, context): | ||||
| part = particle_get_settings(context) | part = particle_get_settings(context) | ||||
| return part.render_type == 'LINE' | return part.render_type == 'LINE' | ||||
| def draw(self, context): | def draw(self, context): | ||||
| layout = self.layout | layout = self.layout | ||||
| Show All 11 Lines | def draw(self, context): | ||||
| sub.prop(part, "line_length_head", text="Head") | sub.prop(part, "line_length_head", text="Head") | ||||
| col.prop(part, "use_velocity_length", text="Velocity Length") | col.prop(part, "use_velocity_length", text="Velocity Length") | ||||
| class PARTICLE_PT_render_path(ParticleButtonsPanel, Panel): | class PARTICLE_PT_render_path(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Path" | bl_label = "Path" | ||||
| bl_parent_id = "PARTICLE_PT_render" | bl_parent_id = "PARTICLE_PT_render" | ||||
| bl_options = {'DEFAULT_CLOSED'} | bl_options = {'DEFAULT_CLOSED'} | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| @classmethod | @classmethod | ||||
| def poll(cls, context): | def poll(cls, context): | ||||
| part = particle_get_settings(context) | part = particle_get_settings(context) | ||||
| return part.render_type == 'PATH' | return part.render_type == 'PATH' | ||||
| def draw(self, context): | def draw(self, context): | ||||
| layout = self.layout | layout = self.layout | ||||
| Show All 18 Lines | def draw(self, context): | ||||
| col.prop(part, "use_hair_bspline") | col.prop(part, "use_hair_bspline") | ||||
| col.prop(part, "render_step", text="Steps") | col.prop(part, "render_step", text="Steps") | ||||
| class PARTICLE_PT_render_path_timing(ParticleButtonsPanel, Panel): | class PARTICLE_PT_render_path_timing(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Timing" | bl_label = "Timing" | ||||
| bl_parent_id = "PARTICLE_PT_render" | bl_parent_id = "PARTICLE_PT_render" | ||||
| bl_options = {'DEFAULT_CLOSED'} | bl_options = {'DEFAULT_CLOSED'} | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| @classmethod | @classmethod | ||||
| def poll(cls, context): | def poll(cls, context): | ||||
| part = particle_get_settings(context) | part = particle_get_settings(context) | ||||
| return part.render_type == 'PATH' | return part.render_type == 'PATH' | ||||
| def draw(self, context): | def draw(self, context): | ||||
| layout = self.layout | layout = self.layout | ||||
| Show All 15 Lines | def draw(self, context): | ||||
| col.prop(part, "path_end", text="End", slider=not part.use_absolute_path_time) | col.prop(part, "path_end", text="End", slider=not part.use_absolute_path_time) | ||||
| col.prop(part, "length_random", text="Random", slider=True) | col.prop(part, "length_random", text="Random", slider=True) | ||||
| class PARTICLE_PT_render_object(ParticleButtonsPanel, Panel): | class PARTICLE_PT_render_object(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Object" | bl_label = "Object" | ||||
| bl_parent_id = "PARTICLE_PT_render" | bl_parent_id = "PARTICLE_PT_render" | ||||
| bl_options = {'DEFAULT_CLOSED'} | bl_options = {'DEFAULT_CLOSED'} | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| @classmethod | @classmethod | ||||
| def poll(cls, context): | def poll(cls, context): | ||||
| part = particle_get_settings(context) | part = particle_get_settings(context) | ||||
| return part.render_type == 'OBJECT' | return part.render_type == 'OBJECT' | ||||
| def draw(self, context): | def draw(self, context): | ||||
| layout = self.layout | layout = self.layout | ||||
| Show All 11 Lines | def draw(self, context): | ||||
| sub.prop(part, "use_rotation_dupli", text="Object Rotation") | sub.prop(part, "use_rotation_dupli", text="Object Rotation") | ||||
| sub.prop(part, "use_scale_dupli", text="Object Scale") | sub.prop(part, "use_scale_dupli", text="Object Scale") | ||||
| class PARTICLE_PT_render_collection(ParticleButtonsPanel, Panel): | class PARTICLE_PT_render_collection(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Collection" | bl_label = "Collection" | ||||
| bl_parent_id = "PARTICLE_PT_render" | bl_parent_id = "PARTICLE_PT_render" | ||||
| bl_options = {'DEFAULT_CLOSED'} | bl_options = {'DEFAULT_CLOSED'} | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| @classmethod | @classmethod | ||||
| def poll(cls, context): | def poll(cls, context): | ||||
| part = particle_get_settings(context) | part = particle_get_settings(context) | ||||
| return part.render_type == 'COLLECTION' | return part.render_type == 'COLLECTION' | ||||
| def draw(self, context): | def draw(self, context): | ||||
| layout = self.layout | layout = self.layout | ||||
| Show All 15 Lines | def draw(self, context): | ||||
| sub.prop(part, "use_rotation_dupli", text="Object Rotation") | sub.prop(part, "use_rotation_dupli", text="Object Rotation") | ||||
| sub.prop(part, "use_scale_dupli", text="Object Scale") | sub.prop(part, "use_scale_dupli", text="Object Scale") | ||||
| class PARTICLE_PT_render_collection_use_count(ParticleButtonsPanel, Panel): | class PARTICLE_PT_render_collection_use_count(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Use Count" | bl_label = "Use Count" | ||||
| bl_parent_id = "PARTICLE_PT_render_collection" | bl_parent_id = "PARTICLE_PT_render_collection" | ||||
| bl_options = {'DEFAULT_CLOSED'} | bl_options = {'DEFAULT_CLOSED'} | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| @classmethod | @classmethod | ||||
| def poll(cls, context): | def poll(cls, context): | ||||
| part = particle_get_settings(context) | part = particle_get_settings(context) | ||||
| return part.render_type == 'COLLECTION' | return part.render_type == 'COLLECTION' | ||||
| def draw_header(self, context): | def draw_header(self, context): | ||||
| layout = self.layout | layout = self.layout | ||||
| Show All 34 Lines | def draw(self, context): | ||||
| row = layout.row() | row = layout.row() | ||||
| row.prop(weight, "count") | row.prop(weight, "count") | ||||
| class PARTICLE_PT_render_billboards_alignment(ParticleButtonsPanel, Panel): | class PARTICLE_PT_render_billboards_alignment(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Billboard Alignment" | bl_label = "Billboard Alignment" | ||||
| bl_parent_id = "PARTICLE_PT_render" | bl_parent_id = "PARTICLE_PT_render" | ||||
| bl_options = {'DEFAULT_CLOSED'} | bl_options = {'DEFAULT_CLOSED'} | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| @classmethod | @classmethod | ||||
| def poll(cls, context): | def poll(cls, context): | ||||
| part = particle_get_settings(context) | part = particle_get_settings(context) | ||||
| return part.render_type == 'BILLBOARD' | return part.render_type == 'BILLBOARD' | ||||
| def draw(self, context): | def draw(self, context): | ||||
| layout = self.layout | layout = self.layout | ||||
| Show All 9 Lines | def draw(self, context): | ||||
| col.prop(part, "lock_billboard", text="Lock Axis") | col.prop(part, "lock_billboard", text="Lock Axis") | ||||
| col.prop(part, "billboard_object") | col.prop(part, "billboard_object") | ||||
| class PARTICLE_PT_render_billboards_tilt(ParticleButtonsPanel, Panel): | class PARTICLE_PT_render_billboards_tilt(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Billboard Tilt" | bl_label = "Billboard Tilt" | ||||
| bl_parent_id = "PARTICLE_PT_render" | bl_parent_id = "PARTICLE_PT_render" | ||||
| bl_options = {'DEFAULT_CLOSED'} | bl_options = {'DEFAULT_CLOSED'} | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| @classmethod | @classmethod | ||||
| def poll(cls, context): | def poll(cls, context): | ||||
| part = particle_get_settings(context) | part = particle_get_settings(context) | ||||
| return part.render_type == 'BILLBOARD' | return part.render_type == 'BILLBOARD' | ||||
| def draw(self, context): | def draw(self, context): | ||||
| layout = self.layout | layout = self.layout | ||||
| Show All 17 Lines | def draw(self, context): | ||||
| col.prop(part, "billboard_velocity_head", text="Velocity ScaleHead") | col.prop(part, "billboard_velocity_head", text="Velocity ScaleHead") | ||||
| col.prop(part, "billboard_velocity_tail", text="Tail") | col.prop(part, "billboard_velocity_tail", text="Tail") | ||||
| class PARTICLE_PT_render_billboards_uv(ParticleButtonsPanel, Panel): | class PARTICLE_PT_render_billboards_uv(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Billboard UVs" | bl_label = "Billboard UVs" | ||||
| bl_parent_id = "PARTICLE_PT_render" | bl_parent_id = "PARTICLE_PT_render" | ||||
| bl_options = {'DEFAULT_CLOSED'} | bl_options = {'DEFAULT_CLOSED'} | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| @classmethod | @classmethod | ||||
| def poll(cls, context): | def poll(cls, context): | ||||
| part = particle_get_settings(context) | part = particle_get_settings(context) | ||||
| return part.render_type == 'BILLBOARD' | return part.render_type == 'BILLBOARD' | ||||
| def draw(self, context): | def draw(self, context): | ||||
| layout = self.layout | layout = self.layout | ||||
| Show All 19 Lines | def draw(self, context): | ||||
| sub.prop(part, "billboard_animation") | sub.prop(part, "billboard_animation") | ||||
| sub.prop(part, "billboard_offset_split") | sub.prop(part, "billboard_offset_split") | ||||
| class PARTICLE_PT_render_trails(ParticleButtonsPanel, Panel): | class PARTICLE_PT_render_trails(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Trails" | bl_label = "Trails" | ||||
| bl_parent_id = "PARTICLE_PT_render" | bl_parent_id = "PARTICLE_PT_render" | ||||
| bl_options = {'DEFAULT_CLOSED'} | bl_options = {'DEFAULT_CLOSED'} | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| @classmethod | @classmethod | ||||
| def poll(cls, context): | def poll(cls, context): | ||||
| part = particle_get_settings(context) | part = particle_get_settings(context) | ||||
| return part.render_type in {'HALO', 'LINE', 'BILLBOARD'} | return part.render_type in {'HALO', 'LINE', 'BILLBOARD'} | ||||
| def draw(self, context): | def draw(self, context): | ||||
| layout = self.layout | layout = self.layout | ||||
| Show All 11 Lines | def draw(self, context): | ||||
| sub.prop(part, "use_absolute_path_time", text="Length in Frames") | sub.prop(part, "use_absolute_path_time", text="Length in Frames") | ||||
| sub.prop(part, "path_end", text="Length", slider=not part.use_absolute_path_time) | sub.prop(part, "path_end", text="Length", slider=not part.use_absolute_path_time) | ||||
| sub.prop(part, "length_random", text="Random Length", slider=True) | sub.prop(part, "length_random", text="Random Length", slider=True) | ||||
| class PARTICLE_PT_draw(ParticleButtonsPanel, Panel): | class PARTICLE_PT_draw(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Viewport Display" | bl_label = "Viewport Display" | ||||
| bl_options = {'DEFAULT_CLOSED'} | bl_options = {'DEFAULT_CLOSED'} | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| @classmethod | @classmethod | ||||
| def poll(cls, context): | def poll(cls, context): | ||||
| settings = particle_get_settings(context) | settings = particle_get_settings(context) | ||||
| engine = context.engine | engine = context.engine | ||||
| if settings is None: | if settings is None: | ||||
| return False | return False | ||||
| return engine in cls.COMPAT_ENGINES | return engine in cls.COMPAT_ENGINES | ||||
| ▲ Show 20 Lines • Show All 45 Lines • ▼ Show 20 Lines | def draw(self, context): | ||||
| col.prop(part, "show_number") | col.prop(part, "show_number") | ||||
| if part.physics_type == 'BOIDS': | if part.physics_type == 'BOIDS': | ||||
| col.prop(part, "show_health") | col.prop(part, "show_health") | ||||
| class PARTICLE_PT_children(ParticleButtonsPanel, Panel): | class PARTICLE_PT_children(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Children" | bl_label = "Children" | ||||
| bl_options = {'DEFAULT_CLOSED'} | bl_options = {'DEFAULT_CLOSED'} | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| @classmethod | @classmethod | ||||
| def poll(cls, context): | def poll(cls, context): | ||||
| return particle_panel_poll(cls, context) | return particle_panel_poll(cls, context) | ||||
| def draw(self, context): | def draw(self, context): | ||||
| layout = self.layout | layout = self.layout | ||||
| Show All 39 Lines | def draw(self, context): | ||||
| sub = col.column(align=True) | sub = col.column(align=True) | ||||
| sub.label(text="Parting not available with virtual parents") | sub.label(text="Parting not available with virtual parents") | ||||
| class PARTICLE_PT_children_parting(ParticleButtonsPanel, Panel): | class PARTICLE_PT_children_parting(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Parting" | bl_label = "Parting" | ||||
| bl_parent_id = "PARTICLE_PT_children" | bl_parent_id = "PARTICLE_PT_children" | ||||
| bl_options = {'DEFAULT_CLOSED'} | bl_options = {'DEFAULT_CLOSED'} | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| @classmethod | @classmethod | ||||
| def poll(cls, context): | def poll(cls, context): | ||||
| part = particle_get_settings(context) | part = particle_get_settings(context) | ||||
| return part.child_type == 'INTERPOLATED' | return part.child_type == 'INTERPOLATED' | ||||
| def draw(self, context): | def draw(self, context): | ||||
| layout = self.layout | layout = self.layout | ||||
| psys = context.particle_system | psys = context.particle_system | ||||
| part = particle_get_settings(context) | part = particle_get_settings(context) | ||||
| layout.use_property_split = True | layout.use_property_split = True | ||||
| col = layout.column() | col = layout.column() | ||||
| col.prop(part, "child_parting_factor", text="Parting", slider=True) | col.prop(part, "child_parting_factor", text="Parting", slider=True) | ||||
| col.prop(part, "child_parting_min", text="Min") | col.prop(part, "child_parting_min", text="Min") | ||||
| col.prop(part, "child_parting_max", text="Max") | col.prop(part, "child_parting_max", text="Max") | ||||
| class PARTICLE_PT_children_clumping(ParticleButtonsPanel, Panel): | class PARTICLE_PT_children_clumping(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Clumping" | bl_label = "Clumping" | ||||
| bl_parent_id = "PARTICLE_PT_children" | bl_parent_id = "PARTICLE_PT_children" | ||||
| bl_options = {'DEFAULT_CLOSED'} | bl_options = {'DEFAULT_CLOSED'} | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| @classmethod | @classmethod | ||||
| def poll(cls, context): | def poll(cls, context): | ||||
| part = particle_get_settings(context) | part = particle_get_settings(context) | ||||
| return part.child_type != 'NONE' | return part.child_type != 'NONE' | ||||
| def draw(self, context): | def draw(self, context): | ||||
| layout = self.layout | layout = self.layout | ||||
| Show All 25 Lines | def draw(self, context): | ||||
| if part.use_twist_curve: | if part.use_twist_curve: | ||||
| sub.template_curve_mapping(part, "twist_curve") | sub.template_curve_mapping(part, "twist_curve") | ||||
| class PARTICLE_PT_children_roughness(ParticleButtonsPanel, Panel): | class PARTICLE_PT_children_roughness(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Roughness" | bl_label = "Roughness" | ||||
| bl_parent_id = "PARTICLE_PT_children" | bl_parent_id = "PARTICLE_PT_children" | ||||
| bl_options = {'DEFAULT_CLOSED'} | bl_options = {'DEFAULT_CLOSED'} | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| @classmethod | @classmethod | ||||
| def poll(cls, context): | def poll(cls, context): | ||||
| part = particle_get_settings(context) | part = particle_get_settings(context) | ||||
| return part.child_type != 'NONE' | return part.child_type != 'NONE' | ||||
| def draw(self, context): | def draw(self, context): | ||||
| layout = self.layout | layout = self.layout | ||||
| Show All 25 Lines | def draw(self, context): | ||||
| sub.prop(part, "roughness_2_size", text="Size") | sub.prop(part, "roughness_2_size", text="Size") | ||||
| sub.prop(part, "roughness_2_threshold", slider=True) | sub.prop(part, "roughness_2_threshold", slider=True) | ||||
| class PARTICLE_PT_children_kink(ParticleButtonsPanel, Panel): | class PARTICLE_PT_children_kink(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Kink" | bl_label = "Kink" | ||||
| bl_parent_id = "PARTICLE_PT_children" | bl_parent_id = "PARTICLE_PT_children" | ||||
| bl_options = {'DEFAULT_CLOSED'} | bl_options = {'DEFAULT_CLOSED'} | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| @classmethod | @classmethod | ||||
| def poll(cls, context): | def poll(cls, context): | ||||
| part = particle_get_settings(context) | part = particle_get_settings(context) | ||||
| return part.child_type != 'NONE' | return part.child_type != 'NONE' | ||||
| def draw(self, context): | def draw(self, context): | ||||
| layout = self.layout | layout = self.layout | ||||
| Show All 34 Lines | def draw(self, context): | ||||
| col.prop(part, "kink_flat", slider=True) | col.prop(part, "kink_flat", slider=True) | ||||
| col.prop(part, "kink_frequency") | col.prop(part, "kink_frequency") | ||||
| col.prop(part, "kink_shape", slider=True) | col.prop(part, "kink_shape", slider=True) | ||||
| class PARTICLE_PT_field_weights(ParticleButtonsPanel, Panel): | class PARTICLE_PT_field_weights(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Field Weights" | bl_label = "Field Weights" | ||||
| bl_options = {'DEFAULT_CLOSED'} | bl_options = {'DEFAULT_CLOSED'} | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| @classmethod | @classmethod | ||||
| def poll(cls, context): | def poll(cls, context): | ||||
| return particle_panel_poll(cls, context) | return particle_panel_poll(cls, context) | ||||
| def draw(self, context): | def draw(self, context): | ||||
| part = particle_get_settings(context) | part = particle_get_settings(context) | ||||
| effector_weights_ui(self, context, part.effector_weights, 'PSYS') | effector_weights_ui(self, context, part.effector_weights, 'PSYS') | ||||
| if part.type == 'HAIR': | if part.type == 'HAIR': | ||||
| row = self.layout.row() | row = self.layout.row() | ||||
| row.prop(part.effector_weights, "apply_to_hair_growing") | row.prop(part.effector_weights, "apply_to_hair_growing") | ||||
| row.prop(part, "apply_effector_to_children") | row.prop(part, "apply_effector_to_children") | ||||
| row = self.layout.row() | row = self.layout.row() | ||||
| row.prop(part, "effect_hair", slider=True) | row.prop(part, "effect_hair", slider=True) | ||||
| class PARTICLE_PT_force_fields(ParticleButtonsPanel, Panel): | class PARTICLE_PT_force_fields(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Force Field Settings" | bl_label = "Force Field Settings" | ||||
| bl_options = {'DEFAULT_CLOSED'} | bl_options = {'DEFAULT_CLOSED'} | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| def draw(self, context): | def draw(self, context): | ||||
| layout = self.layout | layout = self.layout | ||||
| layout.use_property_split = True | layout.use_property_split = True | ||||
| part = particle_get_settings(context) | part = particle_get_settings(context) | ||||
| col = layout.column() | col = layout.column() | ||||
| col.prop(part, "use_self_effect") | col.prop(part, "use_self_effect") | ||||
| col.prop(part, "effector_amount", text="Effector Amount") | col.prop(part, "effector_amount", text="Effector Amount") | ||||
| class PARTICLE_PT_force_fields_type1(ParticleButtonsPanel, Panel): | class PARTICLE_PT_force_fields_type1(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Type 1" | bl_label = "Type 1" | ||||
| bl_parent_id = "PARTICLE_PT_force_fields" | bl_parent_id = "PARTICLE_PT_force_fields" | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| def draw(self, context): | def draw(self, context): | ||||
| layout = self.layout | layout = self.layout | ||||
| layout.use_property_split = True | layout.use_property_split = True | ||||
| part = particle_get_settings(context) | part = particle_get_settings(context) | ||||
| col = layout.column() | col = layout.column() | ||||
| col.prop(part.force_field_1, "type", text="Type 1") | col.prop(part.force_field_1, "type", text="Type 1") | ||||
| basic_force_field_settings_ui(self, context, part.force_field_1) | basic_force_field_settings_ui(self, context, part.force_field_1) | ||||
| class PARTICLE_PT_force_fields_type2(ParticleButtonsPanel, Panel): | class PARTICLE_PT_force_fields_type2(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Type 2" | bl_label = "Type 2" | ||||
| bl_parent_id = "PARTICLE_PT_force_fields" | bl_parent_id = "PARTICLE_PT_force_fields" | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| def draw(self, context): | def draw(self, context): | ||||
| layout = self.layout | layout = self.layout | ||||
| layout.use_property_split = True | layout.use_property_split = True | ||||
| part = particle_get_settings(context) | part = particle_get_settings(context) | ||||
| col = layout.column() | col = layout.column() | ||||
| col.prop(part.force_field_2, "type", text="Type 2") | col.prop(part.force_field_2, "type", text="Type 2") | ||||
| basic_force_field_settings_ui(self, context, part.force_field_2) | basic_force_field_settings_ui(self, context, part.force_field_2) | ||||
| class PARTICLE_PT_force_fields_type1_falloff(ParticleButtonsPanel, Panel): | class PARTICLE_PT_force_fields_type1_falloff(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Falloff" | bl_label = "Falloff" | ||||
| bl_options = {'DEFAULT_CLOSED'} | bl_options = {'DEFAULT_CLOSED'} | ||||
| bl_parent_id = "PARTICLE_PT_force_fields_type1" | bl_parent_id = "PARTICLE_PT_force_fields_type1" | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| def draw(self, context): | def draw(self, context): | ||||
| layout = self.layout | layout = self.layout | ||||
| layout.use_property_split = True | layout.use_property_split = True | ||||
| part = particle_get_settings(context) | part = particle_get_settings(context) | ||||
| basic_force_field_falloff_ui(self, context, part.force_field_1) | basic_force_field_falloff_ui(self, context, part.force_field_1) | ||||
| class PARTICLE_PT_force_fields_type2_falloff(ParticleButtonsPanel, Panel): | class PARTICLE_PT_force_fields_type2_falloff(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Falloff" | bl_label = "Falloff" | ||||
| bl_options = {'DEFAULT_CLOSED'} | bl_options = {'DEFAULT_CLOSED'} | ||||
| bl_parent_id = "PARTICLE_PT_force_fields_type2" | bl_parent_id = "PARTICLE_PT_force_fields_type2" | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| def draw(self, context): | def draw(self, context): | ||||
| layout = self.layout | layout = self.layout | ||||
| layout.use_property_split = True | layout.use_property_split = True | ||||
| part = particle_get_settings(context) | part = particle_get_settings(context) | ||||
| basic_force_field_falloff_ui(self, context, part.force_field_2) | basic_force_field_falloff_ui(self, context, part.force_field_2) | ||||
| class PARTICLE_PT_vertexgroups(ParticleButtonsPanel, Panel): | class PARTICLE_PT_vertexgroups(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Vertex Groups" | bl_label = "Vertex Groups" | ||||
| bl_options = {'DEFAULT_CLOSED'} | bl_options = {'DEFAULT_CLOSED'} | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| @classmethod | @classmethod | ||||
| def poll(cls, context): | def poll(cls, context): | ||||
| if context.particle_system is None: | if context.particle_system is None: | ||||
| return False | return False | ||||
| return particle_panel_poll(cls, context) | return particle_panel_poll(cls, context) | ||||
| def draw(self, context): | def draw(self, context): | ||||
| ▲ Show 20 Lines • Show All 56 Lines • ▼ Show 20 Lines | def draw(self, context): | ||||
| # row = layout.row() | # row = layout.row() | ||||
| # row.prop_search(psys, "vertex_group_field", ob, "vertex_groups", text="Field") | # row.prop_search(psys, "vertex_group_field", ob, "vertex_groups", text="Field") | ||||
| # row.prop(psys, "invert_vertex_group_field", text="") | # row.prop(psys, "invert_vertex_group_field", text="") | ||||
| class PARTICLE_PT_textures(ParticleButtonsPanel, Panel): | class PARTICLE_PT_textures(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Textures" | bl_label = "Textures" | ||||
| bl_options = {'DEFAULT_CLOSED'} | bl_options = {'DEFAULT_CLOSED'} | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| @classmethod | @classmethod | ||||
| def poll(cls, context): | def poll(cls, context): | ||||
| if context.particle_system is None: | if context.particle_system is None: | ||||
| return False | return False | ||||
| return particle_panel_poll(cls, context) | return particle_panel_poll(cls, context) | ||||
| def draw(self, context): | def draw(self, context): | ||||
| Show All 15 Lines | def draw(self, context): | ||||
| else: | else: | ||||
| slot = part.texture_slots[part.active_texture_index] | slot = part.texture_slots[part.active_texture_index] | ||||
| layout.template_ID(slot, "texture", new="texture.new") | layout.template_ID(slot, "texture", new="texture.new") | ||||
| class PARTICLE_PT_hair_shape(ParticleButtonsPanel, Panel): | class PARTICLE_PT_hair_shape(ParticleButtonsPanel, Panel): | ||||
| bl_label = "Hair Shape" | bl_label = "Hair Shape" | ||||
| bl_options = {'DEFAULT_CLOSED'} | bl_options = {'DEFAULT_CLOSED'} | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| @classmethod | @classmethod | ||||
| def poll(cls, context): | def poll(cls, context): | ||||
| if context.particle_system is None: | if context.particle_system is None: | ||||
| return False | return False | ||||
| return particle_panel_poll(cls, context) | return particle_panel_poll(cls, context) | ||||
| def draw(self, context): | def draw(self, context): | ||||
| Show All 10 Lines | def draw(self, context): | ||||
| col.prop(part, "tip_radius", text="Tip") | col.prop(part, "tip_radius", text="Tip") | ||||
| col = layout.column() | col = layout.column() | ||||
| col.prop(part, "radius_scale", text="Radius Scaling") | col.prop(part, "radius_scale", text="Radius Scaling") | ||||
| col.prop(part, "use_close_tip") | col.prop(part, "use_close_tip") | ||||
| class PARTICLE_PT_custom_props(ParticleButtonsPanel, PropertyPanel, Panel): | class PARTICLE_PT_custom_props(ParticleButtonsPanel, PropertyPanel, Panel): | ||||
| COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} | COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL', 'BLENDER_LANPR'} | ||||
| _context_path = "particle_system.settings" | _context_path = "particle_system.settings" | ||||
| _property_type = bpy.types.ParticleSettings | _property_type = bpy.types.ParticleSettings | ||||
| classes = ( | classes = ( | ||||
| PARTICLE_MT_specials, | PARTICLE_MT_specials, | ||||
| PARTICLE_PT_hair_dynamics_presets, | PARTICLE_PT_hair_dynamics_presets, | ||||
| PARTICLE_UL_particle_systems, | PARTICLE_UL_particle_systems, | ||||
| ▲ Show 20 Lines • Show All 56 Lines • Show Last 20 Lines | |||||