| 
									
										
										
										
											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. | 
					
						
							|  |  |  | #  | 
					
						
							|  |  |  | #  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., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # ##### END GPL LICENSE BLOCK ##### | 
					
						
							| 
									
										
										
										
											2009-10-31 20:16:59 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-31 23:35:56 +00:00
										 |  |  | # <pep8 compliant> | 
					
						
							| 
									
										
										
										
											2009-08-06 14:23:48 +00:00
										 |  |  | import bpy | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-31 23:35:56 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-31 19:57:59 +00:00
										 |  |  | from properties_physics_common import point_cache_ui | 
					
						
							|  |  |  | from properties_physics_common import effector_weights_ui | 
					
						
							| 
									
										
										
										
											2009-08-29 15:20:36 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-31 23:35:56 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-06 14:23:48 +00:00
										 |  |  | class PhysicButtonsPanel(bpy.types.Panel): | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |     bl_space_type = 'PROPERTIES' | 
					
						
							|  |  |  |     bl_region_type = 'WINDOW' | 
					
						
							|  |  |  |     bl_context = "physics" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def poll(self, context): | 
					
						
							|  |  |  |         ob = context.object | 
					
						
							|  |  |  |         rd = context.scene.render_data | 
					
						
							|  |  |  |         return (ob and ob.type == 'MESH') and (not rd.use_game_engine) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-31 23:35:56 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-06 14:23:48 +00:00
										 |  |  | class PHYSICS_PT_smoke(PhysicButtonsPanel): | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |     bl_label = "Smoke" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def draw(self, context): | 
					
						
							|  |  |  |         layout = self.layout | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         md = context.smoke | 
					
						
							|  |  |  |         ob = context.object | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         split = layout.split() | 
					
						
							|  |  |  |         split.operator_context = 'EXEC_DEFAULT' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if md: | 
					
						
							|  |  |  |             # remove modifier + settings | 
					
						
							|  |  |  |             split.set_context_pointer("modifier", md) | 
					
						
							|  |  |  |             split.itemO("object.modifier_remove", text="Remove") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             row = split.row(align=True) | 
					
						
							|  |  |  |             row.itemR(md, "render", text="") | 
					
						
							|  |  |  |             row.itemR(md, "realtime", text="") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         else: | 
					
						
							|  |  |  |             # add modifier | 
					
						
							|  |  |  |             split.item_enumO("object.modifier_add", "type", 'SMOKE', text="Add") | 
					
						
							|  |  |  |             split.itemL() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if md: | 
					
						
							|  |  |  |             layout.itemR(md, "smoke_type", expand=True) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             if md.smoke_type == 'TYPE_DOMAIN': | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 domain = md.domain_settings | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 split = layout.split() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 col = split.column() | 
					
						
							|  |  |  |                 col.itemL(text="Resolution:") | 
					
						
							|  |  |  |                 col.itemR(domain, "maxres", text="Divisions") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 col = split.column() | 
					
						
							|  |  |  |                 col.itemL(text="Behavior:") | 
					
						
							|  |  |  |                 col.itemR(domain, "alpha") | 
					
						
							|  |  |  |                 col.itemR(domain, "beta") | 
					
						
							|  |  |  |                 col.itemR(domain, "dissolve_smoke", text="Dissolve") | 
					
						
							|  |  |  |                 sub = col.column() | 
					
						
							|  |  |  |                 sub.active = domain.dissolve_smoke | 
					
						
							|  |  |  |                 sub.itemR(domain, "dissolve_speed", text="Time") | 
					
						
							|  |  |  |                 sub.itemR(domain, "dissolve_smoke_log", text="Slow") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             elif md.smoke_type == 'TYPE_FLOW': | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 flow = md.flow_settings | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 split = layout.split() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 col = split.column() | 
					
						
							|  |  |  |                 col.itemR(flow, "outflow") | 
					
						
							|  |  |  |                 col.itemL(text="Particle System:") | 
					
						
							|  |  |  |                 col.item_pointerR(flow, "psys", ob, "particle_systems", text="") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 if md.flow_settings.outflow: | 
					
						
							|  |  |  |                     col = split.column() | 
					
						
							|  |  |  |                 else: | 
					
						
							|  |  |  |                     col = split.column() | 
					
						
							|  |  |  |                     col.itemL(text="Behavior:") | 
					
						
							|  |  |  |                     col.itemR(flow, "temperature") | 
					
						
							|  |  |  |                     col.itemR(flow, "density") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             #elif md.smoke_type == 'TYPE_COLL': | 
					
						
							|  |  |  |             #	layout.itemS() | 
					
						
							| 
									
										
										
										
											2009-09-09 18:39:40 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-31 23:35:56 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-20 00:33:59 +00:00
										 |  |  | class PHYSICS_PT_smoke_groups(PhysicButtonsPanel): | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |     bl_label = "Smoke Groups" | 
					
						
							|  |  |  |     bl_default_closed = True | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def poll(self, context): | 
					
						
							|  |  |  |         md = context.smoke | 
					
						
							|  |  |  |         return md and (md.smoke_type == 'TYPE_DOMAIN') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def draw(self, context): | 
					
						
							|  |  |  |         layout = self.layout | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         group = context.smoke.domain_settings | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         split = layout.split() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         col = split.column() | 
					
						
							|  |  |  |         col.itemL(text="Flow Group:") | 
					
						
							|  |  |  |         col.itemR(group, "fluid_group", text="") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         #col.itemL(text="Effector Group:") | 
					
						
							|  |  |  |         #col.itemR(group, "eff_group", text="") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         col = split.column() | 
					
						
							|  |  |  |         col.itemL(text="Collision Group:") | 
					
						
							|  |  |  |         col.itemR(group, "coll_group", text="") | 
					
						
							| 
									
										
										
										
											2009-09-09 18:39:40 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-31 23:35:56 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-20 00:33:59 +00:00
										 |  |  | class PHYSICS_PT_smoke_cache(PhysicButtonsPanel): | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |     bl_label = "Smoke Cache" | 
					
						
							|  |  |  |     bl_default_closed = True | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def poll(self, context): | 
					
						
							|  |  |  |         md = context.smoke | 
					
						
							|  |  |  |         return md and (md.smoke_type == 'TYPE_DOMAIN') | 
					
						
							| 
									
										
										
										
											2009-08-20 00:33:59 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |     def draw(self, context): | 
					
						
							|  |  |  |         layout = self.layout | 
					
						
							| 
									
										
										
										
											2009-08-20 00:33:59 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |         md = context.smoke.domain_settings | 
					
						
							|  |  |  |         cache = md.point_cache_low | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-31 23:35:56 +00:00
										 |  |  |         point_cache_ui(self, cache, cache.baked == False, 0, 1) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-20 00:33:59 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | class PHYSICS_PT_smoke_highres(PhysicButtonsPanel): | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |     bl_label = "Smoke High Resolution" | 
					
						
							|  |  |  |     bl_default_closed = True | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def poll(self, context): | 
					
						
							|  |  |  |         md = context.smoke | 
					
						
							|  |  |  |         return md and (md.smoke_type == 'TYPE_DOMAIN') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def draw_header(self, context): | 
					
						
							|  |  |  |         high = context.smoke.domain_settings | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         self.layout.itemR(high, "highres", text="") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def draw(self, context): | 
					
						
							|  |  |  |         layout = self.layout | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         md = context.smoke.domain_settings | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         split = layout.split() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         col = split.column() | 
					
						
							|  |  |  |         col.itemL(text="Resolution:") | 
					
						
							|  |  |  |         col.itemR(md, "amplify", text="Divisions") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         col = split.column() | 
					
						
							|  |  |  |         col.itemL(text="Noise Method:") | 
					
						
							|  |  |  |         col.row().itemR(md, "noise_type", text="") | 
					
						
							|  |  |  |         col.itemR(md, "strength") | 
					
						
							|  |  |  |         col.itemR(md, "viewhighres") | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-31 23:35:56 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-20 00:33:59 +00:00
										 |  |  | class PHYSICS_PT_smoke_cache_highres(PhysicButtonsPanel): | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |     bl_label = "Smoke High Resolution Cache" | 
					
						
							|  |  |  |     bl_default_closed = True | 
					
						
							| 
									
										
										
										
											2009-08-20 00:33:59 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |     def poll(self, context): | 
					
						
							|  |  |  |         md = context.smoke | 
					
						
							|  |  |  |         return md and (md.smoke_type == 'TYPE_DOMAIN') and md.domain_settings.highres | 
					
						
							| 
									
										
										
										
											2009-08-20 00:33:59 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |     def draw(self, context): | 
					
						
							|  |  |  |         layout = self.layout | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         md = context.smoke.domain_settings | 
					
						
							|  |  |  |         cache = md.point_cache_high | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-31 23:35:56 +00:00
										 |  |  |         point_cache_ui(self, cache, cache.baked == False, 0, 1) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-20 00:33:59 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-08 10:18:14 +00:00
										 |  |  | class PHYSICS_PT_smoke_field_weights(PhysicButtonsPanel): | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |     bl_label = "Smoke Field Weights" | 
					
						
							|  |  |  |     bl_default_closed = True | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def poll(self, context): | 
					
						
							|  |  |  |         smoke = context.smoke | 
					
						
							|  |  |  |         return (smoke and smoke.smoke_type == 'TYPE_DOMAIN') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def draw(self, context): | 
					
						
							|  |  |  |         domain = context.smoke.domain_settings | 
					
						
							|  |  |  |         effector_weights_ui(self, domain.effector_weights) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-13 14:27:35 +00:00
										 |  |  | bpy.types.register(PHYSICS_PT_smoke) | 
					
						
							| 
									
										
										
										
											2009-10-08 10:18:14 +00:00
										 |  |  | bpy.types.register(PHYSICS_PT_smoke_field_weights) | 
					
						
							| 
									
										
										
										
											2009-08-20 00:33:59 +00:00
										 |  |  | bpy.types.register(PHYSICS_PT_smoke_cache) | 
					
						
							| 
									
										
										
										
											2009-09-09 18:39:40 +00:00
										 |  |  | bpy.types.register(PHYSICS_PT_smoke_highres) | 
					
						
							| 
									
										
										
										
											2009-08-18 12:58:51 +00:00
										 |  |  | bpy.types.register(PHYSICS_PT_smoke_groups) | 
					
						
							| 
									
										
										
										
											2009-09-09 18:39:40 +00:00
										 |  |  | bpy.types.register(PHYSICS_PT_smoke_cache_highres) |