From 2e6a02438e997f1024f3ba6c332314f09f01a3b4 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 21 Mar 2011 12:35:49 +0000 Subject: 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. --- release/scripts/startup/bl_ui/properties_world.py | 267 ++++++++++++++++++++++ 1 file changed, 267 insertions(+) create mode 100644 release/scripts/startup/bl_ui/properties_world.py (limited to 'release/scripts/startup/bl_ui/properties_world.py') diff --git a/release/scripts/startup/bl_ui/properties_world.py b/release/scripts/startup/bl_ui/properties_world.py new file mode 100644 index 00000000000..1b2dd4e26aa --- /dev/null +++ b/release/scripts/startup/bl_ui/properties_world.py @@ -0,0 +1,267 @@ +# ##### 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 ##### + +# +import bpy +from rna_prop_ui import PropertyPanel + +# TODO, "color_range" not in the UI + + +class WorldButtonsPanel(): + bl_space_type = 'PROPERTIES' + bl_region_type = 'WINDOW' + bl_context = "world" + # COMPAT_ENGINES must be defined in each subclass, external engines can add themselves here + + @classmethod + def poll(cls, context): + return (context.world and context.scene.render.engine in cls.COMPAT_ENGINES) + + +class WORLD_PT_context_world(WorldButtonsPanel, bpy.types.Panel): + bl_label = "" + bl_options = {'HIDE_HEADER'} + COMPAT_ENGINES = {'BLENDER_RENDER'} + + @classmethod + def poll(cls, context): + rd = context.scene.render + return (not rd.use_game_engine) and (rd.engine in cls.COMPAT_ENGINES) + + def draw(self, context): + layout = self.layout + + scene = context.scene + world = context.world + space = context.space_data + + texture_count = world and len(world.texture_slots.keys()) + + split = layout.split(percentage=0.65) + if scene: + split.template_ID(scene, "world", new="world.new") + elif world: + split.template_ID(space, "pin_id") + + if texture_count: + split.label(text=str(texture_count), icon='TEXTURE') + + +class WORLD_PT_preview(WorldButtonsPanel, bpy.types.Panel): + bl_label = "Preview" + COMPAT_ENGINES = {'BLENDER_RENDER'} + + @classmethod + def poll(cls, context): + rd = context.scene.render + return (context.world) and (not rd.use_game_engine) and (rd.engine in cls.COMPAT_ENGINES) + + def draw(self, context): + self.layout.template_preview(context.world) + + +class WORLD_PT_world(WorldButtonsPanel, bpy.types.Panel): + bl_label = "World" + COMPAT_ENGINES = {'BLENDER_RENDER'} + + def draw(self, context): + layout = self.layout + world = context.world + + row = layout.row() + row.prop(world, "use_sky_paper") + row.prop(world, "use_sky_blend") + row.prop(world, "use_sky_real") + + row = layout.row() + row.column().prop(world, "horizon_color") + col = row.column() + col.prop(world, "zenith_color") + col.active = world.use_sky_blend + row.column().prop(world, "ambient_color") + + +class WORLD_PT_ambient_occlusion(WorldButtonsPanel, bpy.types.Panel): + bl_label = "Ambient Occlusion" + COMPAT_ENGINES = {'BLENDER_RENDER'} + + def draw_header(self, context): + light = context.world.light_settings + self.layout.prop(light, "use_ambient_occlusion", text="") + + def draw(self, context): + layout = self.layout + light = context.world.light_settings + + layout.active = light.use_ambient_occlusion + + split = layout.split() + split.prop(light, "ao_factor", text="Factor") + split.prop(light, "ao_blend_type", text="") + + +class WORLD_PT_environment_lighting(WorldButtonsPanel, bpy.types.Panel): + bl_label = "Environment Lighting" + COMPAT_ENGINES = {'BLENDER_RENDER'} + + def draw_header(self, context): + light = context.world.light_settings + self.layout.prop(light, "use_environment_light", text="") + + def draw(self, context): + layout = self.layout + light = context.world.light_settings + + layout.active = light.use_environment_light + + split = layout.split() + split.prop(light, "environment_energy", text="Energy") + split.prop(light, "environment_color", text="") + + +class WORLD_PT_indirect_lighting(WorldButtonsPanel, bpy.types.Panel): + bl_label = "Indirect Lighting" + COMPAT_ENGINES = {'BLENDER_RENDER'} + + def draw_header(self, context): + light = context.world.light_settings + self.layout.prop(light, "use_indirect_light", text="") + + def draw(self, context): + layout = self.layout + light = context.world.light_settings + + layout.active = light.use_indirect_light and light.gather_method == 'APPROXIMATE' + + split = layout.split() + split.prop(light, "indirect_factor", text="Factor") + split.prop(light, "indirect_bounces", text="Bounces") + + if light.gather_method == 'RAYTRACE': + layout.label(text="Only works with Approximate gather method") + + +class WORLD_PT_gather(WorldButtonsPanel, bpy.types.Panel): + bl_label = "Gather" + COMPAT_ENGINES = {'BLENDER_RENDER'} + + def draw(self, context): + layout = self.layout + light = context.world.light_settings + + layout.active = light.use_ambient_occlusion or light.use_environment_light or light.use_indirect_light + + layout.prop(light, "gather_method", expand=True) + + split = layout.split() + + col = split.column() + col.label(text="Attenuation:") + if light.gather_method == 'RAYTRACE': + col.prop(light, "distance") + col.prop(light, "use_falloff") + sub = col.row() + sub.active = light.use_falloff + sub.prop(light, "falloff_strength", text="Strength") + + if light.gather_method == 'RAYTRACE': + col = split.column() + + col.label(text="Sampling:") + col.prop(light, "sample_method", text="") + + sub = col.column() + sub.prop(light, "samples") + + if light.sample_method == 'ADAPTIVE_QMC': + sub.prop(light, "threshold") + sub.prop(light, "adapt_to_speed", slider=True) + elif light.sample_method == 'CONSTANT_JITTERED': + sub.prop(light, "bias") + + if light.gather_method == 'APPROXIMATE': + col = split.column() + + col.label(text="Sampling:") + col.prop(light, "passes") + col.prop(light, "error_threshold", text="Error") + col.prop(light, "use_cache") + col.prop(light, "correction") + + +class WORLD_PT_mist(WorldButtonsPanel, bpy.types.Panel): + bl_label = "Mist" + bl_options = {'DEFAULT_CLOSED'} + COMPAT_ENGINES = {'BLENDER_RENDER'} + + def draw_header(self, context): + world = context.world + + self.layout.prop(world.mist_settings, "use_mist", text="") + + def draw(self, context): + layout = self.layout + world = context.world + + layout.active = world.mist_settings.use_mist + + split = layout.split() + + col = split.column() + col.prop(world.mist_settings, "intensity", slider=True) + col.prop(world.mist_settings, "start") + + col = split.column() + col.prop(world.mist_settings, "depth") + col.prop(world.mist_settings, "height") + + layout.prop(world.mist_settings, "falloff") + + +class WORLD_PT_stars(WorldButtonsPanel, bpy.types.Panel): + bl_label = "Stars" + bl_options = {'DEFAULT_CLOSED'} + COMPAT_ENGINES = {'BLENDER_RENDER'} + + def draw_header(self, context): + world = context.world + + self.layout.prop(world.star_settings, "use_stars", text="") + + def draw(self, context): + layout = self.layout + world = context.world + + layout.active = world.star_settings.use_stars + + split = layout.split() + + col = split.column() + col.prop(world.star_settings, "size") + col.prop(world.star_settings, "color_random", text="Colors") + + col = split.column() + col.prop(world.star_settings, "distance_min", text="Min. Dist") + col.prop(world.star_settings, "average_separation", text="Separation") + + +class WORLD_PT_custom_props(WorldButtonsPanel, PropertyPanel, bpy.types.Panel): + COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} + _context_path = "world" + _property_type = bpy.types.World -- cgit v1.2.3