| 
									
										
										
										
											2009-11-01 15:21:20 +00:00
										 |  |  | # ##### 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. | 
					
						
							| 
									
										
										
										
											2009-11-03 07:23:02 +00:00
										 |  |  | # | 
					
						
							| 
									
										
										
										
											2009-11-01 15:21:20 +00:00
										 |  |  | #  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. | 
					
						
							| 
									
										
										
										
											2009-11-03 07:23:02 +00:00
										 |  |  | # | 
					
						
							| 
									
										
										
										
											2009-11-01 15:21:20 +00:00
										 |  |  | #  You should have received a copy of the GNU General Public License | 
					
						
							|  |  |  | #  along with this program; if not, write to the Free Software Foundation, | 
					
						
							| 
									
										
										
										
											2010-02-12 13:34:04 +00:00
										 |  |  | #  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | 
					
						
							| 
									
										
										
										
											2009-11-01 15:21:20 +00:00
										 |  |  | # | 
					
						
							|  |  |  | # ##### END GPL LICENSE BLOCK ##### | 
					
						
							| 
									
										
										
										
											2009-10-31 20:16:59 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-31 23:35:56 +00:00
										 |  |  | # <pep8 compliant> | 
					
						
							| 
									
										
										
										
											2009-05-08 18:17:57 +00:00
										 |  |  | import bpy | 
					
						
							| 
									
										
										
										
											2010-01-08 08:54:41 +00:00
										 |  |  | from rna_prop_ui import PropertyPanel | 
					
						
							| 
									
										
										
										
											2009-05-08 18:17:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-14 13:35:44 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-02-07 13:56:36 +00:00
										 |  |  | class LAMP_MT_sunsky_presets(bpy.types.Menu): | 
					
						
							| 
									
										
										
										
											2010-05-31 10:21:57 +00:00
										 |  |  |     bl_label = "Sun & Sky Presets" | 
					
						
							| 
									
										
										
										
											2010-02-07 13:56:36 +00:00
										 |  |  |     preset_subdir = "sunsky" | 
					
						
							| 
									
										
											  
											
												* Interaction Presets
This adds a new presets menu in the splash screen and the Input section of
User Preferences to choose a preset interaction style, consisting of key configurations
and also other user preferences such as select mouse button, view rotation style, etc.
Currently, just 'Blender' and 'Maya' presets are included, hopefully we can have more
presets contributed (and maintained!) by the community.
It's best to keep these presets minimal to avoid too many key conflicts. In the Maya one
I changed the view manipulation key/mouse combos and also the transform 
manipulator keys, not much more than that.
To save an interaction preset, open the user preferences Input section, and press the 
[ + ] button next to the presets menu. It will save out a .py file containing any edited key 
maps and navigation preferences to the presets/interaction folder in your scripts folder.
---
Part of this commit changes the way that key maps are exported/displayed in 
preferences - now partial key configs are allowed. Previously it would export/import the 
entire key configuration, regardless of whether individual key maps were edited or not 
(which would make them more susceptible to conflicts in unexpected areas).
(note, in blender terminology, a key map is a category of key items, such as 
'Object Mode' or 'View 2d'.)
Now, the export and the UI display work in a similar way to how key maps are 
processed internally - Locally edited key maps (after pressing the 'Edit' button) are 
processed first, falling back to other key maps in the current key config, and then falling 
back to the default key config. So it's possible for a key config to only include a few 
key maps, and the rest just gets pulled from the default key config. The preferences 
UI display works like this too behind the scenes in deciding what to show users, 
however using it is just like it was before, the complexity is hidden.
											
										 
											2010-04-14 06:27:50 +00:00
										 |  |  |     preset_operator = "script.execute_preset" | 
					
						
							| 
									
										
										
										
											2010-03-10 20:24:06 +00:00
										 |  |  |     COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} | 
					
						
							| 
									
										
										
										
											2010-02-07 13:56:36 +00:00
										 |  |  |     draw = bpy.types.Menu.draw_preset | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-02 02:55:12 +00:00
										 |  |  | class DataButtonsPanel(): | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |     bl_space_type = 'PROPERTIES' | 
					
						
							|  |  |  |     bl_region_type = 'WINDOW' | 
					
						
							|  |  |  |     bl_context = "data" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-09 01:37:09 +00:00
										 |  |  |     @classmethod | 
					
						
							|  |  |  |     def poll(cls, context): | 
					
						
							|  |  |  |         engine = context.scene.render.engine | 
					
						
							|  |  |  |         return context.lamp and (engine in cls.COMPAT_ENGINES) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-31 23:35:56 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-02 02:55:12 +00:00
										 |  |  | class DATA_PT_context_lamp(DataButtonsPanel, bpy.types.Panel): | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |     bl_label = "" | 
					
						
							| 
									
										
										
										
											2010-08-26 01:05:37 +00:00
										 |  |  |     bl_options = {'HIDE_HEADER'} | 
					
						
							| 
									
										
										
										
											2010-03-10 20:24:06 +00:00
										 |  |  |     COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def draw(self, context): | 
					
						
							|  |  |  |         layout = self.layout | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         ob = context.object | 
					
						
							|  |  |  |         lamp = context.lamp | 
					
						
							|  |  |  |         space = context.space_data | 
					
						
							| 
									
										
										
										
											2010-08-06 15:17:44 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         split = layout.split(percentage=0.65) | 
					
						
							| 
									
										
										
										
											2010-08-06 15:36:38 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-09-02 18:13:06 +00:00
										 |  |  |         texture_count = len(lamp.texture_slots.keys()) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-06 15:17:44 +00:00
										 |  |  |         if ob: | 
					
						
							|  |  |  |             split.template_ID(ob, "data") | 
					
						
							|  |  |  |         elif lamp: | 
					
						
							|  |  |  |             split.template_ID(space, "pin_id") | 
					
						
							| 
									
										
										
										
											2009-06-07 13:36:12 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-09-02 18:13:06 +00:00
										 |  |  |         if texture_count != 0: | 
					
						
							|  |  |  |             split.label(text=str(texture_count), icon='TEXTURE') | 
					
						
							| 
									
										
										
										
											2009-10-31 23:35:56 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-09-07 15:17:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-12 19:36:10 +00:00
										 |  |  | class DATA_PT_preview(DataButtonsPanel, bpy.types.Panel): | 
					
						
							|  |  |  |     bl_label = "Preview" | 
					
						
							| 
									
										
										
										
											2010-03-10 20:24:06 +00:00
										 |  |  |     COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} | 
					
						
							| 
									
										
										
										
											2010-08-12 19:36:10 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def draw(self, context): | 
					
						
							|  |  |  |         self.layout.template_preview(context.lamp) | 
					
						
							| 
									
										
										
										
											2010-08-05 16:05:30 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-08 08:54:41 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-02 02:55:12 +00:00
										 |  |  | class DATA_PT_lamp(DataButtonsPanel, bpy.types.Panel): | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |     bl_label = "Lamp" | 
					
						
							| 
									
										
										
										
											2010-03-10 20:24:06 +00:00
										 |  |  |     COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def draw(self, context): | 
					
						
							|  |  |  |         layout = self.layout | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         lamp = context.lamp | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-06 15:17:44 +00:00
										 |  |  |         layout.prop(lamp, "type", expand=True) | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         split = layout.split() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         col = split.column() | 
					
						
							|  |  |  |         sub = col.column() | 
					
						
							| 
									
										
										
										
											2009-11-23 00:27:30 +00:00
										 |  |  |         sub.prop(lamp, "color", text="") | 
					
						
							|  |  |  |         sub.prop(lamp, "energy") | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         if lamp.type in ('POINT', 'SPOT'): | 
					
						
							| 
									
										
										
										
											2009-11-23 00:27:30 +00:00
										 |  |  |             sub.label(text="Falloff:") | 
					
						
							|  |  |  |             sub.prop(lamp, "falloff_type", text="") | 
					
						
							|  |  |  |             sub.prop(lamp, "distance") | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |             if lamp.falloff_type == 'LINEAR_QUADRATIC_WEIGHTED': | 
					
						
							| 
									
										
										
										
											2009-11-23 00:27:30 +00:00
										 |  |  |                 col.label(text="Attenuation Factors:") | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |                 sub = col.column(align=True) | 
					
						
							| 
									
										
										
										
											2009-11-23 00:27:30 +00:00
										 |  |  |                 sub.prop(lamp, "linear_attenuation", slider=True, text="Linear") | 
					
						
							|  |  |  |                 sub.prop(lamp, "quadratic_attenuation", slider=True, text="Quadratic") | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-20 06:09:58 +00:00
										 |  |  |             col.prop(lamp, "use_sphere") | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         if lamp.type == 'AREA': | 
					
						
							| 
									
										
										
										
											2009-11-23 00:27:30 +00:00
										 |  |  |             col.prop(lamp, "distance") | 
					
						
							|  |  |  |             col.prop(lamp, "gamma") | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-06 15:17:44 +00:00
										 |  |  |         col = split.column() | 
					
						
							| 
									
										
										
										
											2010-08-21 04:51:00 +00:00
										 |  |  |         col.prop(lamp, "use_negative") | 
					
						
							|  |  |  |         col.prop(lamp, "use_own_layer", text="This Layer Only") | 
					
						
							|  |  |  |         col.prop(lamp, "use_specular") | 
					
						
							|  |  |  |         col.prop(lamp, "use_diffuse") | 
					
						
							| 
									
										
										
										
											2009-07-27 20:39:10 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-31 23:35:56 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-02 02:55:12 +00:00
										 |  |  | class DATA_PT_sunsky(DataButtonsPanel, bpy.types.Panel): | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |     bl_label = "Sky & Atmosphere" | 
					
						
							| 
									
										
										
										
											2010-03-10 20:24:06 +00:00
										 |  |  |     COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-09 01:37:09 +00:00
										 |  |  |     @classmethod | 
					
						
							|  |  |  |     def poll(cls, context): | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |         lamp = context.lamp | 
					
						
							| 
									
										
										
										
											2010-03-10 20:24:06 +00:00
										 |  |  |         engine = context.scene.render.engine | 
					
						
							| 
									
										
										
										
											2010-08-09 01:37:09 +00:00
										 |  |  |         return (lamp and lamp.type == 'SUN') and (engine in cls.COMPAT_ENGINES) | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def draw(self, context): | 
					
						
							|  |  |  |         layout = self.layout | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-19 11:04:46 +00:00
										 |  |  |         lamp = context.lamp.sky | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-02-07 13:56:36 +00:00
										 |  |  |         row = layout.row(align=True) | 
					
						
							|  |  |  |         row.prop(lamp, "use_sky") | 
					
						
							| 
									
										
											  
											
												* Interaction Presets
This adds a new presets menu in the splash screen and the Input section of
User Preferences to choose a preset interaction style, consisting of key configurations
and also other user preferences such as select mouse button, view rotation style, etc.
Currently, just 'Blender' and 'Maya' presets are included, hopefully we can have more
presets contributed (and maintained!) by the community.
It's best to keep these presets minimal to avoid too many key conflicts. In the Maya one
I changed the view manipulation key/mouse combos and also the transform 
manipulator keys, not much more than that.
To save an interaction preset, open the user preferences Input section, and press the 
[ + ] button next to the presets menu. It will save out a .py file containing any edited key 
maps and navigation preferences to the presets/interaction folder in your scripts folder.
---
Part of this commit changes the way that key maps are exported/displayed in 
preferences - now partial key configs are allowed. Previously it would export/import the 
entire key configuration, regardless of whether individual key maps were edited or not 
(which would make them more susceptible to conflicts in unexpected areas).
(note, in blender terminology, a key map is a category of key items, such as 
'Object Mode' or 'View 2d'.)
Now, the export and the UI display work in a similar way to how key maps are 
processed internally - Locally edited key maps (after pressing the 'Edit' button) are 
processed first, falling back to other key maps in the current key config, and then falling 
back to the default key config. So it's possible for a key config to only include a few 
key maps, and the rest just gets pulled from the default key config. The preferences 
UI display works like this too behind the scenes in deciding what to show users, 
however using it is just like it was before, the complexity is hidden.
											
										 
											2010-04-14 06:27:50 +00:00
										 |  |  |         row.menu("LAMP_MT_sunsky_presets", text=bpy.types.LAMP_MT_sunsky_presets.bl_label) | 
					
						
							|  |  |  |         row.operator("lamp.sunsky_preset_add", text="", icon="ZOOMIN") | 
					
						
							| 
									
										
										
										
											2010-09-14 04:58:25 +00:00
										 |  |  |         row.operator("lamp.sunsky_preset_add", text="", icon="ZOOMOUT").remove_active = True | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         row = layout.row() | 
					
						
							| 
									
										
										
										
											2010-02-07 13:56:36 +00:00
										 |  |  |         row.active = lamp.use_sky or lamp.use_atmosphere | 
					
						
							| 
									
										
										
										
											2009-11-23 00:27:30 +00:00
										 |  |  |         row.prop(lamp, "atmosphere_turbidity", text="Turbidity") | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         split = layout.split() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         col = split.column() | 
					
						
							| 
									
										
										
										
											2010-02-07 13:56:36 +00:00
										 |  |  |         col.active = lamp.use_sky | 
					
						
							| 
									
										
										
										
											2009-11-23 00:27:30 +00:00
										 |  |  |         col.label(text="Blending:") | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |         sub = col.column() | 
					
						
							| 
									
										
										
										
											2009-11-23 00:27:30 +00:00
										 |  |  |         sub.prop(lamp, "sky_blend_type", text="") | 
					
						
							|  |  |  |         sub.prop(lamp, "sky_blend", text="Factor") | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-23 00:27:30 +00:00
										 |  |  |         col.label(text="Color Space:") | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |         sub = col.column() | 
					
						
							| 
									
										
										
										
											2009-11-23 00:27:30 +00:00
										 |  |  |         sub.row().prop(lamp, "sky_color_space", expand=True) | 
					
						
							|  |  |  |         sub.prop(lamp, "sky_exposure", text="Exposure") | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-06 15:17:44 +00:00
										 |  |  |         col = split.column() | 
					
						
							| 
									
										
										
										
											2010-02-07 13:56:36 +00:00
										 |  |  |         col.active = lamp.use_sky | 
					
						
							| 
									
										
										
										
											2009-11-23 00:27:30 +00:00
										 |  |  |         col.label(text="Horizon:") | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |         sub = col.column() | 
					
						
							| 
									
										
										
										
											2009-11-23 00:27:30 +00:00
										 |  |  |         sub.prop(lamp, "horizon_brightness", text="Brightness") | 
					
						
							|  |  |  |         sub.prop(lamp, "spread", text="Spread") | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-23 00:27:30 +00:00
										 |  |  |         col.label(text="Sun:") | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |         sub = col.column() | 
					
						
							| 
									
										
										
										
											2009-11-23 00:27:30 +00:00
										 |  |  |         sub.prop(lamp, "sun_brightness", text="Brightness") | 
					
						
							|  |  |  |         sub.prop(lamp, "sun_size", text="Size") | 
					
						
							|  |  |  |         sub.prop(lamp, "backscattered_light", slider=True, text="Back Light") | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-23 00:27:30 +00:00
										 |  |  |         layout.separator() | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-02-07 13:56:36 +00:00
										 |  |  |         layout.prop(lamp, "use_atmosphere") | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         split = layout.split() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         col = split.column() | 
					
						
							| 
									
										
										
										
											2010-02-07 13:56:36 +00:00
										 |  |  |         col.active = lamp.use_atmosphere | 
					
						
							| 
									
										
										
										
											2009-11-23 00:27:30 +00:00
										 |  |  |         col.label(text="Intensity:") | 
					
						
							|  |  |  |         col.prop(lamp, "sun_intensity", text="Sun") | 
					
						
							|  |  |  |         col.prop(lamp, "atmosphere_distance_factor", text="Distance") | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-06 15:17:44 +00:00
										 |  |  |         col = split.column() | 
					
						
							| 
									
										
										
										
											2010-02-07 13:56:36 +00:00
										 |  |  |         col.active = lamp.use_atmosphere | 
					
						
							| 
									
										
										
										
											2009-11-23 00:27:30 +00:00
										 |  |  |         col.label(text="Scattering:") | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |         sub = col.column(align=True) | 
					
						
							| 
									
										
										
										
											2009-11-23 00:27:30 +00:00
										 |  |  |         sub.prop(lamp, "atmosphere_inscattering", slider=True, text="Inscattering") | 
					
						
							|  |  |  |         sub.prop(lamp, "atmosphere_extinction", slider=True, text="Extinction") | 
					
						
							| 
									
										
										
										
											2009-10-31 23:35:56 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-02 02:55:12 +00:00
										 |  |  | class DATA_PT_shadow(DataButtonsPanel, bpy.types.Panel): | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |     bl_label = "Shadow" | 
					
						
							| 
									
										
										
										
											2010-03-10 20:24:06 +00:00
										 |  |  |     COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-09 01:37:09 +00:00
										 |  |  |     @classmethod | 
					
						
							|  |  |  |     def poll(cls, context): | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |         lamp = context.lamp | 
					
						
							| 
									
										
										
										
											2010-03-10 20:24:06 +00:00
										 |  |  |         engine = context.scene.render.engine | 
					
						
							| 
									
										
										
										
											2010-08-09 01:37:09 +00:00
										 |  |  |         return (lamp and lamp.type in ('POINT', 'SUN', 'SPOT', 'AREA')) and (engine in cls.COMPAT_ENGINES) | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def draw(self, context): | 
					
						
							|  |  |  |         layout = self.layout | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         lamp = context.lamp | 
					
						
							| 
									
										
										
										
											2010-08-06 14:36:39 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-06 15:17:44 +00:00
										 |  |  |         layout.prop(lamp, "shadow_method", expand=True) | 
					
						
							| 
									
										
										
										
											2010-08-06 14:36:39 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-06 15:36:38 +00:00
										 |  |  |         if lamp.shadow_method == 'NOSHADOW' and lamp.type == 'AREA': | 
					
						
							|  |  |  |             split = layout.split() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-09-07 15:17:42 +00:00
										 |  |  |             col = split.column() | 
					
						
							| 
									
										
										
										
											2010-08-06 15:36:38 +00:00
										 |  |  |             col.label(text="Form factor sampling:") | 
					
						
							| 
									
										
										
										
											2010-09-07 15:17:42 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |             sub = col.row(align=True) | 
					
						
							| 
									
										
										
										
											2010-08-06 15:36:38 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |             if lamp.shape == 'SQUARE': | 
					
						
							|  |  |  |                 sub.prop(lamp, "shadow_ray_samples_x", text="Samples") | 
					
						
							|  |  |  |             elif lamp.shape == 'RECTANGLE': | 
					
						
							|  |  |  |                 sub.prop(lamp, "shadow_ray_samples_x", text="Samples X") | 
					
						
							|  |  |  |                 sub.prop(lamp, "shadow_ray_samples_y", text="Samples Y") | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |         if lamp.shadow_method != 'NOSHADOW': | 
					
						
							|  |  |  |             split = layout.split() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             col = split.column() | 
					
						
							| 
									
										
										
										
											2009-11-23 00:27:30 +00:00
										 |  |  |             col.prop(lamp, "shadow_color", text="") | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-06 15:17:44 +00:00
										 |  |  |             col = split.column() | 
					
						
							| 
									
										
										
										
											2010-08-20 06:09:58 +00:00
										 |  |  |             col.prop(lamp, "use_shadow_layer", text="This Layer Only") | 
					
						
							|  |  |  |             col.prop(lamp, "use_only_shadow") | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         if lamp.shadow_method == 'RAY_SHADOW': | 
					
						
							| 
									
										
										
										
											2010-08-06 15:36:38 +00:00
										 |  |  |             split = layout.split() | 
					
						
							| 
									
										
										
										
											2010-09-07 15:17:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-06 15:36:38 +00:00
										 |  |  |             col = split.column() | 
					
						
							| 
									
										
										
										
											2009-11-23 00:27:30 +00:00
										 |  |  |             col.label(text="Sampling:") | 
					
						
							| 
									
										
										
										
											2010-09-07 15:17:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-06 14:36:39 +00:00
										 |  |  |             if lamp.type in ('POINT', 'SUN', 'SPOT'): | 
					
						
							| 
									
										
										
										
											2010-08-06 15:36:38 +00:00
										 |  |  |                 sub = col.row() | 
					
						
							| 
									
										
										
										
											2010-09-07 15:17:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-06 15:36:38 +00:00
										 |  |  |                 sub.prop(lamp, "shadow_ray_samples", text="Samples") | 
					
						
							|  |  |  |                 sub.prop(lamp, "shadow_soft_size", text="Soft Size") | 
					
						
							| 
									
										
										
										
											2010-09-07 15:17:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-06 14:36:39 +00:00
										 |  |  |             elif lamp.type == 'AREA': | 
					
						
							| 
									
										
										
										
											2010-08-06 15:36:38 +00:00
										 |  |  |                 sub = col.row(align=True) | 
					
						
							| 
									
										
										
										
											2010-09-07 15:17:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-06 14:36:39 +00:00
										 |  |  |                 if lamp.shape == 'SQUARE': | 
					
						
							| 
									
										
										
										
											2010-08-06 15:36:38 +00:00
										 |  |  |                     sub.prop(lamp, "shadow_ray_samples_x", text="Samples") | 
					
						
							| 
									
										
										
										
											2010-08-06 14:36:39 +00:00
										 |  |  |                 elif lamp.shape == 'RECTANGLE': | 
					
						
							| 
									
										
										
										
											2010-08-06 15:36:38 +00:00
										 |  |  |                     sub.prop(lamp, "shadow_ray_samples_x", text="Samples X") | 
					
						
							|  |  |  |                     sub.prop(lamp, "shadow_ray_samples_y", text="Samples Y") | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-20 06:09:58 +00:00
										 |  |  |             col.row().prop(lamp, "shadow_ray_sample_method", expand=True) | 
					
						
							| 
									
										
										
										
											2010-08-06 15:17:44 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-20 06:09:58 +00:00
										 |  |  |             if lamp.shadow_ray_sample_method == 'ADAPTIVE_QMC': | 
					
						
							| 
									
										
										
										
											2011-02-26 16:04:14 +00:00
										 |  |  |                 layout.prop(lamp, "shadow_adaptive_threshold", text="Threshold") | 
					
						
							| 
									
										
										
										
											2010-09-07 15:17:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-20 06:09:58 +00:00
										 |  |  |             if lamp.type == 'AREA' and lamp.shadow_ray_sample_method == 'CONSTANT_JITTERED': | 
					
						
							| 
									
										
										
										
											2011-02-26 16:04:14 +00:00
										 |  |  |                 row = layout.row() | 
					
						
							|  |  |  |                 row.prop(lamp, "use_umbra") | 
					
						
							|  |  |  |                 row.prop(lamp, "use_dither") | 
					
						
							|  |  |  |                 row.prop(lamp, "use_jitter") | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         elif lamp.shadow_method == 'BUFFER_SHADOW': | 
					
						
							|  |  |  |             col = layout.column() | 
					
						
							| 
									
										
										
										
											2009-11-23 00:27:30 +00:00
										 |  |  |             col.label(text="Buffer Type:") | 
					
						
							| 
									
										
										
										
											2010-08-06 15:17:44 +00:00
										 |  |  |             col.row().prop(lamp, "shadow_buffer_type", expand=True) | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |             if lamp.shadow_buffer_type in ('REGULAR', 'HALFWAY', 'DEEP'): | 
					
						
							|  |  |  |                 split = layout.split() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 col = split.column() | 
					
						
							| 
									
										
										
										
											2009-11-23 00:27:30 +00:00
										 |  |  |                 col.label(text="Filter Type:") | 
					
						
							|  |  |  |                 col.prop(lamp, "shadow_filter_type", text="") | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |                 sub = col.column(align=True) | 
					
						
							| 
									
										
										
										
											2009-11-23 00:27:30 +00:00
										 |  |  |                 sub.prop(lamp, "shadow_buffer_soft", text="Soft") | 
					
						
							|  |  |  |                 sub.prop(lamp, "shadow_buffer_bias", text="Bias") | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-06 15:17:44 +00:00
										 |  |  |                 col = split.column() | 
					
						
							| 
									
										
										
										
											2009-11-23 00:27:30 +00:00
										 |  |  |                 col.label(text="Sample Buffers:") | 
					
						
							|  |  |  |                 col.prop(lamp, "shadow_sample_buffers", text="") | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |                 sub = col.column(align=True) | 
					
						
							| 
									
										
										
										
											2009-11-23 00:27:30 +00:00
										 |  |  |                 sub.prop(lamp, "shadow_buffer_size", text="Size") | 
					
						
							|  |  |  |                 sub.prop(lamp, "shadow_buffer_samples", text="Samples") | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |                 if lamp.shadow_buffer_type == 'DEEP': | 
					
						
							| 
									
										
										
										
											2009-11-23 00:27:30 +00:00
										 |  |  |                     col.prop(lamp, "compression_threshold") | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |             elif lamp.shadow_buffer_type == 'IRREGULAR': | 
					
						
							| 
									
										
										
										
											2009-11-23 00:27:30 +00:00
										 |  |  |                 layout.prop(lamp, "shadow_buffer_bias", text="Bias") | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-12 21:44:35 +00:00
										 |  |  |             split = layout.split() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             col = split.column() | 
					
						
							| 
									
										
										
										
											2010-08-20 06:09:58 +00:00
										 |  |  |             col.prop(lamp, "use_auto_clip_start", text="Autoclip Start") | 
					
						
							| 
									
										
										
										
											2009-11-12 21:44:35 +00:00
										 |  |  |             sub = col.column() | 
					
						
							| 
									
										
										
										
											2010-08-20 06:09:58 +00:00
										 |  |  |             sub.active = not lamp.use_auto_clip_start | 
					
						
							| 
									
										
										
										
											2009-11-23 00:27:30 +00:00
										 |  |  |             sub.prop(lamp, "shadow_buffer_clip_start", text="Clip Start") | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-06 15:17:44 +00:00
										 |  |  |             col = split.column() | 
					
						
							| 
									
										
										
										
											2010-08-20 06:09:58 +00:00
										 |  |  |             col.prop(lamp, "use_auto_clip_end", text="Autoclip End") | 
					
						
							| 
									
										
										
										
											2009-11-12 21:44:35 +00:00
										 |  |  |             sub = col.column() | 
					
						
							| 
									
										
										
										
											2010-08-20 06:09:58 +00:00
										 |  |  |             sub.active = not lamp.use_auto_clip_end | 
					
						
							| 
									
										
										
										
											2009-11-23 00:27:30 +00:00
										 |  |  |             sub.prop(lamp, "shadow_buffer_clip_end", text=" Clip End") | 
					
						
							| 
									
										
										
										
											2009-05-10 12:12:05 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-31 23:35:56 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-02 02:55:12 +00:00
										 |  |  | class DATA_PT_area(DataButtonsPanel, bpy.types.Panel): | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |     bl_label = "Area Shape" | 
					
						
							| 
									
										
										
										
											2010-03-10 20:24:06 +00:00
										 |  |  |     COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-09 01:37:09 +00:00
										 |  |  |     @classmethod | 
					
						
							|  |  |  |     def poll(cls, context): | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |         lamp = context.lamp | 
					
						
							| 
									
										
										
										
											2010-03-10 20:24:06 +00:00
										 |  |  |         engine = context.scene.render.engine | 
					
						
							| 
									
										
										
										
											2010-08-09 01:37:09 +00:00
										 |  |  |         return (lamp and lamp.type == 'AREA') and (engine in cls.COMPAT_ENGINES) | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def draw(self, context): | 
					
						
							| 
									
										
										
										
											2010-08-06 15:36:38 +00:00
										 |  |  |         layout = self.layout | 
					
						
							| 
									
										
										
										
											2011-02-26 16:27:58 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-02-26 16:04:14 +00:00
										 |  |  |         lamp = context.lamp | 
					
						
							| 
									
										
										
										
											2010-09-07 15:17:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-02-26 16:04:14 +00:00
										 |  |  |         col = layout.column() | 
					
						
							| 
									
										
										
										
											2010-08-06 15:17:44 +00:00
										 |  |  |         col.row().prop(lamp, "shape", expand=True) | 
					
						
							| 
									
										
										
										
											2010-08-06 15:36:38 +00:00
										 |  |  |         sub = col.row(align=True) | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         if (lamp.shape == 'SQUARE'): | 
					
						
							| 
									
										
										
										
											2009-11-23 00:27:30 +00:00
										 |  |  |             sub.prop(lamp, "size") | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |         elif (lamp.shape == 'RECTANGLE'): | 
					
						
							| 
									
										
										
										
											2009-11-23 00:27:30 +00:00
										 |  |  |             sub.prop(lamp, "size", text="Size X") | 
					
						
							|  |  |  |             sub.prop(lamp, "size_y", text="Size Y") | 
					
						
							| 
									
										
										
										
											2009-07-30 13:56:39 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-31 23:35:56 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-02 02:55:12 +00:00
										 |  |  | class DATA_PT_spot(DataButtonsPanel, bpy.types.Panel): | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |     bl_label = "Spot Shape" | 
					
						
							| 
									
										
										
										
											2010-03-10 20:24:06 +00:00
										 |  |  |     COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-09 01:37:09 +00:00
										 |  |  |     @classmethod | 
					
						
							|  |  |  |     def poll(cls, context): | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |         lamp = context.lamp | 
					
						
							| 
									
										
										
										
											2010-03-10 20:24:06 +00:00
										 |  |  |         engine = context.scene.render.engine | 
					
						
							| 
									
										
										
										
											2010-08-09 01:37:09 +00:00
										 |  |  |         return (lamp and lamp.type == 'SPOT') and (engine in cls.COMPAT_ENGINES) | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def draw(self, context): | 
					
						
							|  |  |  |         layout = self.layout | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         lamp = context.lamp | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         split = layout.split() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         col = split.column() | 
					
						
							|  |  |  |         sub = col.column() | 
					
						
							| 
									
										
										
										
											2009-11-23 00:27:30 +00:00
										 |  |  |         sub.prop(lamp, "spot_size", text="Size") | 
					
						
							|  |  |  |         sub.prop(lamp, "spot_blend", text="Blend", slider=True) | 
					
						
							| 
									
										
										
										
											2010-08-21 04:51:00 +00:00
										 |  |  |         col.prop(lamp, "use_square") | 
					
						
							| 
									
										
										
										
											2010-01-25 14:47:32 +00:00
										 |  |  |         col.prop(lamp, "show_cone") | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-06 15:17:44 +00:00
										 |  |  |         col = split.column() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-18 04:10:23 +00:00
										 |  |  |         col.prop(lamp, "use_halo") | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |         sub = col.column(align=True) | 
					
						
							| 
									
										
										
										
											2010-08-18 04:10:23 +00:00
										 |  |  |         sub.active = lamp.use_halo | 
					
						
							| 
									
										
										
										
											2009-11-23 00:27:30 +00:00
										 |  |  |         sub.prop(lamp, "halo_intensity", text="Intensity") | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |         if lamp.shadow_method == 'BUFFER_SHADOW': | 
					
						
							| 
									
										
										
										
											2009-11-23 00:27:30 +00:00
										 |  |  |             sub.prop(lamp, "halo_step", text="Step") | 
					
						
							| 
									
										
										
										
											2009-05-08 18:17:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-31 23:35:56 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-02 02:55:12 +00:00
										 |  |  | class DATA_PT_falloff_curve(DataButtonsPanel, bpy.types.Panel): | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |     bl_label = "Falloff Curve" | 
					
						
							| 
									
										
										
										
											2010-08-26 01:05:37 +00:00
										 |  |  |     bl_options = {'DEFAULT_CLOSED'} | 
					
						
							| 
									
										
										
										
											2010-03-10 20:24:06 +00:00
										 |  |  |     COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-09 01:37:09 +00:00
										 |  |  |     @classmethod | 
					
						
							|  |  |  |     def poll(cls, context): | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |         lamp = context.lamp | 
					
						
							| 
									
										
										
										
											2010-03-10 20:24:06 +00:00
										 |  |  |         engine = context.scene.render.engine | 
					
						
							| 
									
										
										
										
											2009-06-03 00:17:35 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-09 01:37:09 +00:00
										 |  |  |         return (lamp and lamp.type in ('POINT', 'SPOT') and lamp.falloff_type == 'CUSTOM_CURVE') and (engine in cls.COMPAT_ENGINES) | 
					
						
							| 
									
										
										
										
											2009-06-03 00:17:35 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |     def draw(self, context): | 
					
						
							|  |  |  |         lamp = context.lamp | 
					
						
							| 
									
										
										
										
											2009-06-03 00:17:35 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |         self.layout.template_curve_mapping(lamp, "falloff_curve") | 
					
						
							| 
									
										
										
										
											2009-06-03 00:17:35 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-08 08:54:41 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-12 19:36:10 +00:00
										 |  |  | class DATA_PT_custom_props_lamp(DataButtonsPanel, PropertyPanel, bpy.types.Panel): | 
					
						
							|  |  |  |     COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} | 
					
						
							|  |  |  |     _context_path = "object.data" | 
					
						
							| 
									
										
										
										
											2010-12-17 10:33:28 +00:00
										 |  |  |     _property_type = bpy.types.Lamp | 
					
						
							| 
									
										
										
										
											2010-08-12 19:36:10 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-02-14 11:21:21 +00:00
										 |  |  | def register(): | 
					
						
							| 
									
										
										
										
											2011-02-10 23:48:22 +00:00
										 |  |  |     bpy.utils.register_module(__name__) | 
					
						
							| 
									
										
										
										
											2010-02-14 11:21:21 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-02-22 23:32:58 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-02-14 11:21:21 +00:00
										 |  |  | def unregister(): | 
					
						
							| 
									
										
										
										
											2011-02-10 23:48:22 +00:00
										 |  |  |     bpy.utils.unregister_module(__name__) | 
					
						
							| 
									
										
										
										
											2010-02-16 09:55:07 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | if __name__ == "__main__": | 
					
						
							|  |  |  |     register() |