2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/*
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  $ Id $ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  * * * * *  BEGIN  GPL / BL  DUAL  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 .  The  Blender 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Foundation  also  sells  licenses  for  use  in  proprietary  software  under 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  the  Blender  License .   See  http : //www.blender.org/BL/ for information
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  about  this . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  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 . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  This  is  a  new  part  of  Blender . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-28 20:32:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  Contributor ( s ) :  Ken  Hughes ,  Campbell  Barton 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  * * * * *  END  GPL / BL  DUAL  LICENSE  BLOCK  * * * * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-09-24 08:30:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/* TODO, accessing a modifier sequence of a deleted object will crash blender at the moment, not sure how to fix this. */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# include  "Modifier.h" /*This must come first*/ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "DNA_object_types.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "DNA_effect_types.h" 
  
						 
					
						
							
								
									
										
										
										
											2006-06-14 04:41:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "DNA_armature_types.h" 
  
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# include  "DNA_vec_types.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "BKE_main.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "BKE_global.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "BKE_modifier.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "BKE_library.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "BLI_blenlib.h" 
  
						 
					
						
							
								
									
										
										
										
											2007-04-05 16:04:40 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "BLI_arithb.h" 
  
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# include  "MEM_guardedalloc.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "butspace.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "blendef.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "mydevice.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "Object.h" 
  
						 
					
						
							
								
									
										
										
										
											2007-03-04 11:48:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "Texture.h" 
  
						 
					
						
							
								
									
										
										
										
											2006-09-17 02:31:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "Mathutils.h" 
  
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# include  "gen_utils.h" 
  
						 
					
						
							
								
									
										
										
										
											2007-03-11 04:05:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "gen_library.h" 
  
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-09-24 08:30:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/* checks for the scene being removed */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define MODIFIER_DEL_CHECK_PY(bpy_modifier) if (!(bpy_modifier->md)) return ( EXPP_ReturnPyObjError( PyExc_RuntimeError, "Modifier has been removed" ) ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define MODIFIER_DEL_CHECK_INT(bpy_modifier) if (!(bpy_modifier->md)) return ( EXPP_ReturnIntError( PyExc_RuntimeError, "Modifier has been removed" ) ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								enum  mod_constants  {  
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/*Apply to all modifiers*/ 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_RENDER  =  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_REALTIME , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_EDITMODE , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_ONCAGE , 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/*GENERIC*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_OBJECT ,  /*ARMATURE, LATTICE, CURVE, BOOLEAN, ARRAY*/ 
							 
						 
					
						
							
								
									
										
										
										
											2007-04-29 18:13:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									EXPP_MOD_VERTGROUP ,  /*ARMATURE, LATTICE, CURVE, SMOOTH, CAST*/ 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									EXPP_MOD_LIMIT ,  /*ARRAY, MIRROR*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_FLAG ,  /*MIRROR, WAVE*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_COUNT ,  /*DECIMATOR, ARRAY*/ 
							 
						 
					
						
							
								
									
										
										
										
											2006-09-17 02:31:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									EXPP_MOD_LENGTH ,  /*BUILD, ARRAY*/ 
							 
						 
					
						
							
								
									
										
										
										
											2007-04-29 18:13:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									EXPP_MOD_FACTOR ,  /*SMOOTH, CAST*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_ENABLE_X ,  /*SMOOTH, CAST*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_ENABLE_Y ,  /*SMOOTH, CAST*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_ENABLE_Z ,  /*SMOOTH, CAST*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_TYPES ,  /*SUBSURF, CAST*/ 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/*SUBSURF SPESIFIC*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_LEVELS , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_RENDLEVELS , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_OPTIMAL , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_UV , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/*ARMATURE SPESIFIC*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_ENVELOPES , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2006-09-17 02:31:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/*ARRAY SPESIFIC*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_OBJECT_OFFSET , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_OBJECT_CURVE , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_OFFSET_VEC , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_SCALE_VEC , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_MERGE_DIST , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/*BUILD SPESIFIC*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_START , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_SEED , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_RANDOMIZE , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/*MIRROR SPESIFIC*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_AXIS , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/*DECIMATE SPESIFIC*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_RATIO , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/*WAVE SPESIFIC*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_STARTX , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_STARTY , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_HEIGHT , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_WIDTH , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_NARROW , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_SPEED , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_DAMP , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_LIFETIME , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_TIMEOFFS , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/*BOOLEAN SPESIFIC*/ 
							 
						 
					
						
							
								
									
										
										
										
											2007-01-26 15:43:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									EXPP_MOD_OPERATION , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/*EDGE SPLIT SPESIFIC */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_EDGESPLIT_ANGLE , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_EDGESPLIT_FROM_ANGLE , 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-04 11:48:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									EXPP_MOD_EDGESPLIT_FROM_SHARP , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* DISPLACE */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_UVLAYER , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_MID_LEVEL , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_STRENGTH , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_TEXTURE , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_MAPPING , 
							 
						 
					
						
							
								
									
										
										
										
											2007-04-29 18:13:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									EXPP_MOD_DIRECTION , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* SMOOTH */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_REPEAT , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* CAST */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_RADIUS , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_SIZE , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_USE_OB_TRANSFORM , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_SIZE_FROM_RADIUS 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-04 11:48:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									/* yet to be implemented */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/* EXPP_MOD_HOOK_,*/ 
							 
						 
					
						
							
								
									
										
										
										
											2006-09-17 02:31:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/* , */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*****************************************************************************/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* Python BPy_Modifier methods declarations:                                 */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*****************************************************************************/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  PyObject  * Modifier_getName (  BPy_Modifier  *  self  ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  int  Modifier_setName (  BPy_Modifier  *  self ,  PyObject  * arg  ) ;  
						 
					
						
							
								
									
										
										
										
											2006-04-23 17:01:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PyObject  * Modifier_getType (  BPy_Modifier  *  self  ) ;  
						 
					
						
							
								
									
										
										
										
											2007-04-05 16:04:40 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PyObject  * Modifier_reset (  BPy_Modifier  *  self  ) ;  
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  PyObject  * Modifier_getData (  BPy_Modifier  *  self ,  PyObject  *  key  ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  int  Modifier_setData (  BPy_Modifier  *  self ,  PyObject  *  key ,   
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										PyObject  *  value  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*****************************************************************************/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* Python BPy_Modifier methods table:                                        */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*****************************************************************************/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  PyMethodDef  BPy_Modifier_methods [ ]  =  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* name, method, flags, doc */ 
							 
						 
					
						
							
								
									
										
										
										
											2007-04-05 16:04:40 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									{ " reset " ,  ( PyCFunction ) Modifier_reset ,  METH_NOARGS , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" resets a hook modifier location " } , 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									{ NULL ,  NULL ,  0 ,  NULL } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*****************************************************************************/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* Python BPy_Modifier attributes get/set structure:                         */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*****************************************************************************/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  PyGetSetDef  BPy_Modifier_getseters [ ]  =  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ " name " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									( getter ) Modifier_getName ,  ( setter ) Modifier_setName , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 " Modifier name " ,  NULL } , 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 17:01:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									{ " type " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									( getter ) Modifier_getType ,  ( setter ) NULL , 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 " Modifier type (read only) " ,  NULL } , 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									{ NULL , NULL , NULL , NULL , NULL }   /* Sentinel */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*****************************************************************************/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* Python Modifier_Type Mapping Methods table:                               */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*****************************************************************************/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  PyMappingMethods  Modifier_as_mapping  =  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                                /* mp_length        */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									(  binaryfunc  )  Modifier_getData , 	/* mp_subscript     */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									(  objobjargproc  )  Modifier_setData , 	/* mp_ass_subscript */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*****************************************************************************/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* Python Modifier_Type callback function prototypes:                        */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*****************************************************************************/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  PyObject  * Modifier_repr (  BPy_Modifier  *  self  ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*****************************************************************************/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* Python Modifier_Type structure definition:                                */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*****************************************************************************/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								PyTypeObject  Modifier_Type  =  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									PyObject_HEAD_INIT (  NULL  )   /* required py macro */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0 ,                           /* ob_size */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/*  For printing, in format "<module>.<name>" */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									" Blender Modifier " ,          /* char *tp_name; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									sizeof (  BPy_Modifier  ) ,      /* int tp_basicsize; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0 ,                           /* tp_itemsize;  For allocation */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* Methods to implement standard operations */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-03-15 01:47:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									NULL , 						/* destructor tp_dealloc; */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* printfunc tp_print; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* getattrfunc tp_getattr; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* setattrfunc tp_setattr; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* cmpfunc tp_compare; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									(  reprfunc  )  Modifier_repr ,  /* reprfunc tp_repr; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* Method suites for standard classes */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* PyNumberMethods *tp_as_number; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* PySequenceMethods *tp_as_sequence; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									& Modifier_as_mapping ,        /* PyMappingMethods *tp_as_mapping; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* More standard operations (here for binary compatibility) */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* hashfunc tp_hash; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* ternaryfunc tp_call; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* reprfunc tp_str; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* getattrofunc tp_getattro; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* setattrofunc tp_setattro; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* Functions to access object as input/output buffer */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* PyBufferProcs *tp_as_buffer; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  /*** Flags to define presence of optional/expanded features ***/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Py_TPFLAGS_DEFAULT ,          /* long tp_flags; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /*  char *tp_doc;  Documentation string */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  /*** Assigned meaning in release 2.0 ***/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* call function for all accessible objects */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* traverseproc tp_traverse; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* delete references to contained objects */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* inquiry tp_clear; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  /***  Assigned meaning in release 2.1 ***/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  /*** rich comparisons ***/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* richcmpfunc tp_richcompare; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  /***  weak reference enabler ***/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0 ,                           /* long tp_weaklistoffset; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  /*** Added in release 2.2 ***/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/*   Iterators */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* getiterfunc tp_iter; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* iternextfunc tp_iternext; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  /*** Attribute descriptor and subclassing stuff ***/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BPy_Modifier_methods ,        /* struct PyMethodDef *tp_methods; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* struct PyMemberDef *tp_members; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BPy_Modifier_getseters ,      /* struct PyGetSetDef *tp_getset; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* struct _typeobject *tp_base; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* PyObject *tp_dict; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* descrgetfunc tp_descr_get; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* descrsetfunc tp_descr_set; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0 ,                           /* long tp_dictoffset; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* initproc tp_init; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* allocfunc tp_alloc; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* newfunc tp_new; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/*  Low-level free-memory routine */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* freefunc tp_free;  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* For PyObject_IS_GC */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* inquiry tp_is_gc;  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* PyObject *tp_bases; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* method resolution order */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* PyObject *tp_mro;  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* PyObject *tp_cache; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* PyObject *tp_subclasses; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* PyObject *tp_weaklist; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*****************************************************************************/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* Python BPy_Modifier methods:                                              */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*****************************************************************************/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  return  the  name  of  this  modifier 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  PyObject  * Modifier_getName (  BPy_Modifier  *  self  )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2006-09-24 08:30:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									MODIFIER_DEL_CHECK_PY ( self ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  PyString_FromString (  self - > md - > name  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  set  the  name  of  this  modifier 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  int  Modifier_setName (  BPy_Modifier  *  self ,  PyObject  *  attr  )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									char  * name  =  PyString_AsString (  attr  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if (  ! name  ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_ReturnIntError (  PyExc_TypeError ,  " expected string arg "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-09-24 08:30:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									MODIFIER_DEL_CHECK_INT ( self ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 08:01:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									BLI_strncpy (  self - > md - > name ,  name ,  sizeof (  self - > md - > name  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 17:01:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/*
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  return  the  type  of  this  modifier 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  PyObject  * Modifier_getType (  BPy_Modifier  *  self  )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2006-09-24 08:30:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									MODIFIER_DEL_CHECK_PY ( self ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 17:01:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PyInt_FromLong (  self - > md - > type  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PyObject  * subsurf_getter (  BPy_Modifier  *  self ,  int  type  )  
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									SubsurfModifierData  * md  =  (  SubsurfModifierData  * ) ( self - > md ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch (  type  )  { 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_TYPES : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  PyInt_FromLong (  (  long  ) md - > subdivType  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_LEVELS : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  PyInt_FromLong (  (  long  ) md - > levels  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_RENDLEVELS : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  PyInt_FromLong (  (  long  ) md - > renderLevels  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_OPTIMAL : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  PyBool_FromLong (  (  long  )  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												(  md - > flags  &  eSubsurfModifierFlag_ControlEdges  )  )  ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_UV : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  PyBool_FromLong (  (  long  )  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												(  md - > flags  &  eSubsurfModifierFlag_SubsurfUv  )  )  ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_ReturnPyObjError (  PyExc_KeyError , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" key not found "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  subsurf_setter (  BPy_Modifier  *  self ,  int  type ,  
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										PyObject  * value  ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									SubsurfModifierData  * md  =  ( SubsurfModifierData  * ) ( self - > md ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch (  type  )  { 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_TYPES : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  EXPP_setIValueRange (  value ,  & md - > subdivType ,  0 ,  1 ,  ' h '  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_LEVELS : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  EXPP_setIValueClamped (  value ,  & md - > levels ,  1 ,  6 ,  ' h '  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_RENDLEVELS : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  EXPP_setIValueClamped (  value ,  & md - > renderLevels ,  1 ,  6 ,  ' h '  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_OPTIMAL : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  EXPP_setBitfield (  value ,  & md - > flags , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												eSubsurfModifierFlag_ControlEdges ,  ' h '  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_UV : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  EXPP_setBitfield (  value ,  & md - > flags , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												eSubsurfModifierFlag_SubsurfUv ,  ' h '  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_ReturnIntError (  PyExc_KeyError ,  " key not found "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PyObject  * armature_getter (  BPy_Modifier  *  self ,  int  type  )  
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ArmatureModifierData  * md  =  ( ArmatureModifierData  * ) ( self - > md ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch (  type  )  { 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_OBJECT : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  Object_CreatePyObject (  md - > object  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_VERTGROUP : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  PyBool_FromLong (  (  long  ) (  md - > deformflag  &  1  )  )  ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_ENVELOPES : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  PyBool_FromLong (  (  long  ) (  md - > deformflag  &  2  )  )  ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_ReturnPyObjError (  PyExc_KeyError ,  " key not found "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  armature_setter (  BPy_Modifier  * self ,  int  type ,  PyObject  * value  )  
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ArmatureModifierData  * md  =  ( ArmatureModifierData  * ) ( self - > md ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch (  type  )  { 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-08 14:37:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_OBJECT :  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  GenericLib_assignData ( value ,  ( void  * * )  & md - > object ,  0 ,  0 ,  ID_OB ,  OB_ARMATURE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_VERTGROUP : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  EXPP_setBitfield (  value ,  & md - > deformflag ,  1 ,  ' h '  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_ENVELOPES : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  EXPP_setBitfield (  value ,  & md - > deformflag ,  2 ,  ' h '  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_ReturnIntError (  PyExc_KeyError ,  " key not found "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PyObject  * lattice_getter (  BPy_Modifier  *  self ,  int  type  )  
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									LatticeModifierData  * md  =  ( LatticeModifierData  * ) ( self - > md ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch (  type  )  { 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_OBJECT : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  Object_CreatePyObject (  md - > object  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_VERTGROUP : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  PyString_FromString (  md - > name  )  ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_ReturnPyObjError (  PyExc_KeyError ,  " key not found "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  lattice_setter (  BPy_Modifier  * self ,  int  type ,  PyObject  * value  )  
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									LatticeModifierData  * md  =  ( LatticeModifierData  * ) ( self - > md ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch (  type  )  { 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-08 14:37:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_OBJECT : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  GenericLib_assignData ( value ,  ( void  * * )  & md - > object ,  ( void  * * )  & self - > object ,  0 ,  ID_OB ,  OB_LATTICE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_VERTGROUP :  { 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										char  * name  =  PyString_AsString (  value  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if (  ! name  ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  EXPP_ReturnIntError (  PyExc_TypeError , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													" expected string arg "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										BLI_strncpy (  md - > name ,  name ,  sizeof (  md - > name  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_ReturnIntError (  PyExc_KeyError ,  " key not found "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PyObject  * curve_getter (  BPy_Modifier  *  self ,  int  type  )  
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									CurveModifierData  * md  =  ( CurveModifierData  * ) ( self - > md ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch (  type  )  { 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_OBJECT : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  Object_CreatePyObject (  md - > object  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_VERTGROUP : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  PyString_FromString (  md - > name  )  ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_ReturnPyObjError (  PyExc_KeyError ,  " key not found "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  curve_setter (  BPy_Modifier  * self ,  int  type ,  PyObject  * value  )  
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									CurveModifierData  * md  =  ( CurveModifierData  * ) ( self - > md ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch (  type  )  { 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-08 14:37:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_OBJECT : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  GenericLib_assignData ( value ,  ( void  * * )  & md - > object ,  ( void  * * )  & self - > object ,  0 ,  ID_OB ,  OB_CURVE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_VERTGROUP :  { 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										char  * name  =  PyString_AsString (  value  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if (  ! name  ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  EXPP_ReturnIntError (  PyExc_TypeError , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													" expected string arg "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										BLI_strncpy (  md - > name ,  name ,  sizeof (  md - > name  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_ReturnIntError (  PyExc_KeyError ,  " key not found "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PyObject  * build_getter (  BPy_Modifier  *  self ,  int  type  )  
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BuildModifierData  * md  =  ( BuildModifierData  * ) ( self - > md ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch (  type  )  { 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_START : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  PyFloat_FromDouble (  (  float  ) md - > start  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_LENGTH : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  PyFloat_FromDouble (  (  float  ) md - > length  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_SEED : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  PyInt_FromLong (  (  long  ) md - > seed  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_RANDOMIZE : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  PyBool_FromLong (  (  long  ) md - > randomize  )  ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_ReturnPyObjError (  PyExc_KeyError ,  " key not found "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  build_setter (  BPy_Modifier  * self ,  int  type ,  PyObject  * value  )  
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BuildModifierData  * md  =  ( BuildModifierData  * ) ( self - > md ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch (  type  )  { 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_START : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  EXPP_setFloatClamped (  value ,  & md - > start ,  1.0 ,  MAXFRAMEF  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_LENGTH : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  EXPP_setFloatClamped (  value ,  & md - > length ,  1.0 ,  MAXFRAMEF  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_SEED : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  EXPP_setIValueClamped (  value ,  & md - > seed ,  1 ,  MAXFRAME ,  ' i '  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_RANDOMIZE : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  EXPP_setBitfield (  value ,  & md - > randomize ,  1 ,  ' i '  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_ReturnIntError (  PyExc_KeyError ,  " key not found "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PyObject  * mirror_getter (  BPy_Modifier  *  self ,  int  type  )  
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									MirrorModifierData  * md  =  ( MirrorModifierData  * ) ( self - > md ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch (  type  )  { 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_LIMIT : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  PyFloat_FromDouble (  ( double ) md - > tolerance  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_FLAG : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  PyBool_FromLong (  ( long ) (  md - > flag  &  MOD_MIR_CLIPPING  )  )  ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_AXIS : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  PyInt_FromLong (  ( long ) md - > axis  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_ReturnPyObjError (  PyExc_KeyError ,  " key not found "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  mirror_setter (  BPy_Modifier  * self ,  int  type ,  PyObject  * value  )  
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									MirrorModifierData  * md  =  ( MirrorModifierData  * ) ( self - > md ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch (  type  )  { 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_LIMIT : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  EXPP_setFloatClamped (  value ,  & md - > tolerance ,  0.0 ,  1.0  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_FLAG : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  EXPP_setBitfield (  value ,  & md - > flag ,  MOD_MIR_CLIPPING ,  ' i '  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_AXIS : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  EXPP_setIValueRange (  value ,  & md - > axis ,  0 ,  2 ,  ' h '  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_ReturnIntError (  PyExc_KeyError ,  " key not found "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PyObject  * decimate_getter (  BPy_Modifier  *  self ,  int  type  )  
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									DecimateModifierData  * md  =  ( DecimateModifierData  * ) ( self - > md ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if (  type  = =  EXPP_MOD_RATIO  ) 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  PyFloat_FromDouble (  ( double ) md - > percent  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									else  if (  type  = =  EXPP_MOD_COUNT  ) 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  PyInt_FromLong (  ( long ) md - > faceCount  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  EXPP_ReturnPyObjError (  PyExc_KeyError ,  " key not found "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  decimate_setter (  BPy_Modifier  * self ,  int  type ,  PyObject  * value  )  
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									DecimateModifierData  * md  =  ( DecimateModifierData  * ) ( self - > md ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if (  type  = =  EXPP_MOD_RATIO  ) 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  EXPP_setFloatClamped (  value ,  & md - > percent ,  0.0 ,  1.0  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									else  if (  type  = =  EXPP_MOD_COUNT  ) 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  EXPP_ReturnIntError (  PyExc_AttributeError , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" value is read-only "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  EXPP_ReturnIntError (  PyExc_KeyError ,  " key not found "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-04-29 18:13:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PyObject  * smooth_getter (  BPy_Modifier  *  self ,  int  type  )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									SmoothModifierData  * md  =  ( SmoothModifierData  * ) ( self - > md ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch (  type  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_FACTOR : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  PyFloat_FromDouble (  ( double ) md - > fac  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_REPEAT : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  PyInt_FromLong (  ( long ) md - > repeat  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_VERTGROUP : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  PyString_FromString (  md - > defgrp_name  )  ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_ENABLE_X : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_getBitfield (  & md - > flag ,  MOD_SMOOTH_X ,  ' h '  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_ENABLE_Y : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_getBitfield (  & md - > flag ,  MOD_SMOOTH_Y ,  ' h '  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_ENABLE_Z : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_getBitfield (  & md - > flag ,  MOD_SMOOTH_Z ,  ' h '  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_ReturnPyObjError (  PyExc_KeyError ,  " key not found "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  int  smooth_setter (  BPy_Modifier  * self ,  int  type ,  PyObject  * value  )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									SmoothModifierData  * md  =  ( SmoothModifierData  * ) ( self - > md ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch (  type  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_FACTOR : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_setFloatClamped (  value ,  & md - > fac ,  - 10.0 ,  10.0  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_REPEAT : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_setIValueRange (  value ,  & md - > repeat ,  0 ,  30 ,  ' h '  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_VERTGROUP :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										char  * name  =  PyString_AsString (  value  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if (  ! name  )  return  EXPP_ReturnIntError (  PyExc_TypeError ,  " expected string arg "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										BLI_strncpy (  md - > defgrp_name ,  name ,  sizeof (  md - > defgrp_name  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_ENABLE_X : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_setBitfield (  value ,  & md - > flag ,  MOD_SMOOTH_X ,  ' h '  ) ;  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_ENABLE_Y : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_setBitfield (  value ,  & md - > flag ,  MOD_SMOOTH_Y ,  ' h '  ) ;  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_ENABLE_Z : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_setBitfield (  value ,  & md - > flag ,  MOD_SMOOTH_Z ,  ' h '  ) ;  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_ReturnIntError (  PyExc_KeyError ,  " key not found "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  PyObject  * cast_getter (  BPy_Modifier  *  self ,  int  type  )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									CastModifierData  * md  =  ( CastModifierData  * ) ( self - > md ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch (  type  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_TYPES : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  PyInt_FromLong (  ( long ) md - > type  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_FACTOR : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  PyFloat_FromDouble (  ( double ) md - > fac  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_RADIUS : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  PyFloat_FromDouble (  ( double ) md - > radius  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_SIZE : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  PyFloat_FromDouble (  ( double ) md - > size  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_OBJECT : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  Object_CreatePyObject (  md - > object  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_VERTGROUP : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  PyString_FromString (  md - > defgrp_name  )  ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_ENABLE_X : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_getBitfield (  & md - > flag ,  MOD_CAST_X ,  ' h '  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_ENABLE_Y : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_getBitfield (  & md - > flag ,  MOD_CAST_Y ,  ' h '  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_ENABLE_Z : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_getBitfield (  & md - > flag ,  MOD_CAST_Z ,  ' h '  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_USE_OB_TRANSFORM : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_getBitfield (  & md - > flag ,  MOD_CAST_USE_OB_TRANSFORM ,  ' h '  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_SIZE_FROM_RADIUS : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_getBitfield (  & md - > flag ,  MOD_CAST_SIZE_FROM_RADIUS ,  ' h '  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_ReturnPyObjError (  PyExc_KeyError ,  " key not found "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  int  cast_setter (  BPy_Modifier  * self ,  int  type ,  PyObject  * value  )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									CastModifierData  * md  =  ( CastModifierData  * ) ( self - > md ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch (  type  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_TYPES : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_setIValueRange (  value ,  & md - > type ,  0 ,  MOD_CAST_TYPE_CUBOID ,  ' h '  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_FACTOR : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_setFloatClamped (  value ,  & md - > fac ,  - 10.0 ,  10.0  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_RADIUS : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_setFloatClamped (  value ,  & md - > radius ,  0.0 ,  100.0  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_SIZE : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_setFloatClamped (  value ,  & md - > size ,  0.0 ,  100.0  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_OBJECT :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Object  * ob_new = NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( value  = =  Py_None )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											md - > object  =  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  else  if  ( BPy_Object_Check (  value  ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											ob_new  =  ( ( (  BPy_Object  *  ) value ) - > object ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											md - > object  =  ob_new ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  EXPP_ReturnIntError (  PyExc_TypeError , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" Expected an Object or None value "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_VERTGROUP :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										char  * name  =  PyString_AsString (  value  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if (  ! name  )  return  EXPP_ReturnIntError (  PyExc_TypeError ,  " expected string arg "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										BLI_strncpy (  md - > defgrp_name ,  name ,  sizeof (  md - > defgrp_name  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_ENABLE_X : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_setBitfield (  value ,  & md - > flag ,  MOD_CAST_X ,  ' h '  ) ;  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_ENABLE_Y : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_setBitfield (  value ,  & md - > flag ,  MOD_CAST_Y ,  ' h '  ) ;  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_ENABLE_Z : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_setBitfield (  value ,  & md - > flag ,  MOD_CAST_Z ,  ' h '  ) ;  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_USE_OB_TRANSFORM : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_setBitfield (  value ,  & md - > flag ,  MOD_CAST_USE_OB_TRANSFORM ,  ' h '  ) ;  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_SIZE_FROM_RADIUS : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_setBitfield (  value ,  & md - > flag ,  MOD_CAST_SIZE_FROM_RADIUS ,  ' h '  ) ;  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_ReturnIntError (  PyExc_KeyError ,  " key not found "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PyObject  * wave_getter (  BPy_Modifier  *  self ,  int  type  )  
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									WaveModifierData  * md  =  ( WaveModifierData  * ) ( self - > md ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch (  type  )  { 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_STARTX : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  PyFloat_FromDouble (  ( double ) md - > startx  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_STARTY : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  PyFloat_FromDouble (  ( double ) md - > starty  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_HEIGHT : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  PyFloat_FromDouble (  ( double ) md - > height  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_WIDTH : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  PyFloat_FromDouble (  ( double ) md - > width  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_NARROW : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  PyFloat_FromDouble (  ( double ) md - > narrow  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_SPEED : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  PyFloat_FromDouble (  ( double ) md - > speed  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_DAMP : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  PyFloat_FromDouble (  ( double ) md - > damp  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_LIFETIME : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  PyFloat_FromDouble (  ( double ) md - > lifetime  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_TIMEOFFS : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  PyFloat_FromDouble (  ( double ) md - > timeoffs  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_FLAG : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  PyInt_FromLong (  ( long ) md - > flag  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_ReturnPyObjError (  PyExc_KeyError ,  " key not found "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  wave_setter (  BPy_Modifier  * self ,  int  type ,  PyObject  * value  )  
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									WaveModifierData  * md  =  ( WaveModifierData  * ) ( self - > md ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch (  type  )  { 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_STARTX : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  EXPP_setFloatClamped (  value ,  & md - > startx ,  - 100.0 ,  100.0  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_STARTY : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  EXPP_setFloatClamped (  value ,  & md - > starty ,  - 100.0 ,  100.0  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_HEIGHT : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  EXPP_setFloatClamped (  value ,  & md - > height ,  - 2.0 ,  2.0  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_WIDTH : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  EXPP_setFloatClamped (  value ,  & md - > width ,  0.0 ,  5.0  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_NARROW : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  EXPP_setFloatClamped (  value ,  & md - > width ,  0.0 ,  5.0  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_SPEED : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  EXPP_setFloatClamped (  value ,  & md - > speed ,  - 2.0 ,  2.0  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_DAMP : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  EXPP_setFloatClamped (  value ,  & md - > damp ,  - 1000.0 ,  1000.0  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_LIFETIME : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  EXPP_setFloatClamped (  value ,  & md - > lifetime ,  - 1000.0 ,  1000.0  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_TIMEOFFS : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  EXPP_setFloatClamped (  value ,  & md - > timeoffs ,  - 1000.0 ,  1000.0  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_FLAG : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  EXPP_setIValueRange (  value ,  & md - > flag ,  0 ,  
							 
						 
					
						
							
								
									
										
										
										
											2007-04-30 16:49:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												MOD_WAVE_X  |  MOD_WAVE_Y  |  MOD_WAVE_CYCL ,  ' h '  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_ReturnIntError (  PyExc_KeyError ,  " key not found "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-09-17 02:31:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PyObject  * array_getter (  BPy_Modifier  *  self ,  int  type  )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ArrayModifierData  * md  =  ( ArrayModifierData  * ) ( self - > md ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if (  type  = =  EXPP_MOD_OBJECT_OFFSET  ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  Object_CreatePyObject (  md - > offset_ob  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else  if (  type  = =  EXPP_MOD_OBJECT_CURVE  ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  Object_CreatePyObject (  md - > curve_ob  ) ; 	
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else  if (  type  = =  EXPP_MOD_COUNT  ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  PyInt_FromLong (  ( long ) md - > count  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else  if (  type  = =  EXPP_MOD_LENGTH  ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  PyFloat_FromDouble (  md - > length  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else  if (  type  = =  EXPP_MOD_MERGE_DIST  ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  PyFloat_FromDouble (  md - > merge_dist  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else  if (  type  = =  EXPP_MOD_MERGE_DIST  ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  PyFloat_FromDouble (  md - > merge_dist  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else  if (  type  = =  EXPP_MOD_OFFSET_VEC ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  newVectorObject (  md - > offset ,  3 ,  Py_NEW  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else  if (  type  = =  EXPP_MOD_SCALE_VEC ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  newVectorObject (  md - > scale ,  3 ,  Py_NEW  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  EXPP_ReturnPyObjError (  PyExc_KeyError ,  " key not found "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  int  array_setter (  BPy_Modifier  * self ,  int  type ,  PyObject  * value  )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ArrayModifierData  * md  =  ( ArrayModifierData  * ) ( self - > md ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch (  type  )  { 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-08 14:37:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_OBJECT_OFFSET : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  GenericLib_assignData ( value ,  ( void  * * )  & md - > offset_ob ,  ( void  * * )  & self - > object ,  0 ,  ID_OB ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_OBJECT_CURVE : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  GenericLib_assignData ( value ,  ( void  * * )  & md - > curve_ob ,  0 ,  0 ,  ID_OB ,  OB_CURVE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-09-17 02:31:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_COUNT : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_setIValueClamped (  value ,  & md - > count ,  1 ,  1000 ,  ' i '  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_LENGTH : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_setFloatClamped (  value ,  & md - > length ,  0.0 ,  1000.0  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_MERGE_DIST : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_setFloatClamped (  value ,  & md - > merge_dist ,  0.0 ,  1000.0  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_OFFSET_VEC : 
							 
						 
					
						
							
								
									
										
										
										
											2006-09-20 17:30:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  EXPP_setVec3Clamped (  value ,  md - > offset ,  - 10000.0 ,  10000.0  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-09-17 02:31:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_SCALE_VEC : 
							 
						 
					
						
							
								
									
										
										
										
											2006-09-20 17:30:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  EXPP_setVec3Clamped (  value ,  md - > scale ,  - 10000.0 ,  10000.0  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-09-17 02:31:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_ReturnIntError (  PyExc_KeyError ,  " key not found "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PyObject  * boolean_getter (  BPy_Modifier  *  self ,  int  type  )  
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BooleanModifierData  * md  =  ( BooleanModifierData  * ) ( self - > md ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if (  type  = =  EXPP_MOD_OBJECT  ) 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  Object_CreatePyObject (  md - > object  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									else  if (  type  = =  EXPP_MOD_OPERATION  ) 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  PyInt_FromLong (  (  long  ) md - > operation  )  ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  EXPP_ReturnPyObjError (  PyExc_KeyError ,  " key not found "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  boolean_setter (  BPy_Modifier  * self ,  int  type ,  PyObject  * value  )  
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BooleanModifierData  * md  =  ( BooleanModifierData  * ) ( self - > md ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-03-08 14:37:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if (  type  = =  EXPP_MOD_OBJECT  ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  GenericLib_assignData ( value ,  ( void  * * )  & md - > object ,  ( void  * * )  & self - > object ,  0 ,  ID_OB ,  OB_MESH ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else  if (  type  = =  EXPP_MOD_OPERATION  ) 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  EXPP_setIValueRange (  value ,  & md - > operation ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												eBooleanModifierOp_Intersect ,  eBooleanModifierOp_Difference , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												' h '  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  EXPP_ReturnIntError (  PyExc_KeyError ,  " key not found "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-01-26 15:43:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  PyObject  * edgesplit_getter (  BPy_Modifier  *  self ,  int  type  )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EdgeSplitModifierData  * md  =  ( EdgeSplitModifierData  * ) ( self - > md ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch (  type  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_EDGESPLIT_ANGLE : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  PyFloat_FromDouble (  ( double ) md - > split_angle  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_EDGESPLIT_FROM_ANGLE : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  PyBool_FromLong (  (  long  )  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												(  md - > flags  &  MOD_EDGESPLIT_FROMANGLE  )  )  ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_EDGESPLIT_FROM_SHARP : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  PyBool_FromLong (  (  long  )  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												(  md - > flags  &  MOD_EDGESPLIT_FROMFLAG  )  )  ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_ReturnPyObjError (  PyExc_KeyError ,  " key not found "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  int  edgesplit_setter (  BPy_Modifier  * self ,  int  type ,  PyObject  * value  )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EdgeSplitModifierData  * md  =  ( EdgeSplitModifierData  * ) ( self - > md ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch (  type  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_EDGESPLIT_ANGLE : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_setFloatClamped (  value ,  & md - > split_angle ,  0.0 ,  180.0  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_EDGESPLIT_FROM_ANGLE : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_setBitfield (  value ,  & md - > flags , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												MOD_EDGESPLIT_FROMANGLE ,  ' h '  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_EDGESPLIT_FROM_SHARP : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_setBitfield (  value ,  & md - > flags , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												MOD_EDGESPLIT_FROMFLAG ,  ' h '  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_ReturnIntError (  PyExc_KeyError ,  " key not found "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-03-04 11:48:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PyObject  * displace_getter (  BPy_Modifier  *  self ,  int  type  )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									DisplaceModifierData  * md  =  ( DisplaceModifierData  * ) ( self - > md ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch (  type  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_TEXTURE : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( md - > texture ) 	Texture_CreatePyObject (  md - > texture  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										else 				Py_RETURN_NONE ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_STRENGTH : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  PyFloat_FromDouble (  ( double ) md - > strength  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_DIRECTION : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										PyInt_FromLong (  md - > direction  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_VERTGROUP : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  PyString_FromString (  md - > defgrp_name  )  ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_MID_LEVEL : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  PyFloat_FromDouble (  ( double ) md - > midlevel  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_MAPPING : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										PyInt_FromLong (  md - > texmapping  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_OBJECT : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  Object_CreatePyObject (  md - > map_object  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_UVLAYER : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  PyString_FromString (  md - > uvlayer_name  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_ReturnPyObjError (  PyExc_KeyError ,  " key not found "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  int  displace_setter (  BPy_Modifier  * self ,  int  type ,  PyObject  * value  )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									DisplaceModifierData  * md  =  ( DisplaceModifierData  * ) ( self - > md ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch (  type  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_TEXTURE : 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-08 14:37:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  GenericLib_assignData ( value ,  ( void  * * )  & md - > texture ,  0 ,  1 ,  ID_TE ,  0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-04 11:48:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  EXPP_MOD_STRENGTH : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_setFloatClamped (  value ,  & md - > strength ,  - 1000.0 ,  1000.0  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_DIRECTION : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_setIValueClamped (  value ,  & md - > direction , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												MOD_DISP_DIR_X ,  MOD_DISP_DIR_RGB_XYZ ,  ' i '  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_VERTGROUP :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										char  * name  =  PyString_AsString (  value  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if (  ! name  )  return  EXPP_ReturnIntError (  PyExc_TypeError ,  " expected string arg "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										BLI_strncpy (  md - > defgrp_name ,  name ,  sizeof (  md - > defgrp_name  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_MID_LEVEL : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_setFloatClamped (  value ,  & md - > midlevel ,  0.0 ,  1.0  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_MAPPING : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_setIValueClamped (  value ,  & md - > texmapping , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												MOD_DISP_MAP_LOCAL ,  MOD_DISP_MAP_UV ,  ' i '  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_OBJECT :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Object  * ob_new = NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( value  = =  Py_None )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											md - > map_object  =  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  else  if  ( BPy_Object_Check (  value  ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											ob_new  =  ( ( (  BPy_Object  *  ) value ) - > object ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											md - > map_object  =  ob_new ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  EXPP_ReturnIntError (  PyExc_TypeError , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" Expected an Object or None value "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_UVLAYER :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										char  * name  =  PyString_AsString (  value  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if (  ! name  )  return  EXPP_ReturnIntError (  PyExc_TypeError ,  " expected string arg "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										BLI_strncpy (  md - > uvlayer_name ,  name ,  sizeof (  md - > uvlayer_name  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_ReturnIntError (  PyExc_KeyError ,  " key not found "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-01-26 15:43:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-03-04 11:48:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/* static PyObject *uvproject_getter( BPy_Modifier * self, int type )
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									DisplaceModifierData  * md  =  ( DisplaceModifierData  * ) ( self - > md ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch (  type  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_MID_LEVEL : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  PyFloat_FromDouble (  ( double ) md - > midlevel  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_ReturnPyObjError (  PyExc_KeyError ,  " key not found "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  int  uvproject_setter (  BPy_Modifier  * self ,  int  type ,  PyObject  * value  )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									DisplaceModifierData  * md  =  ( DisplaceModifierData  * ) ( self - > md ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch (  type  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_TEXTURE : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_ReturnIntError (  PyExc_KeyError ,  " key not found "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  */  
						 
					
						
							
								
									
										
										
										
											2007-01-26 15:43:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 17:01:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/*
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  get  data  from  a  modifier 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  PyObject  * Modifier_getData (  BPy_Modifier  *  self ,  PyObject  *  key  )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									int  setting ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if (  ! PyInt_CheckExact (  key  )  ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_ReturnPyObjError (  PyExc_TypeError , 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" expected an int arg as stored in Blender.Modifier.Settings "  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-09-24 08:30:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									MODIFIER_DEL_CHECK_PY ( self ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									setting  =  PyInt_AsLong (  key  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch (  setting  )  { 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_RENDER : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_getBitfield (  & self - > md - > mode ,  eModifierMode_Render ,  ' h '  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_REALTIME : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_getBitfield (  & self - > md - > mode ,  eModifierMode_Realtime ,  ' h '  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_EDITMODE : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_getBitfield (  & self - > md - > mode ,  eModifierMode_Editmode ,  ' h '  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_ONCAGE : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_getBitfield (  & self - > md - > mode ,  eModifierMode_OnCage ,  ' h '  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										switch (  self - > md - > type  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											case  eModifierType_Subsurf : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												return  subsurf_getter (  self ,  setting  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											case  eModifierType_Armature : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												return  armature_getter (  self ,  setting  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											case  eModifierType_Lattice : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												return  lattice_getter (  self ,  setting  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											case  eModifierType_Curve : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												return  curve_getter (  self ,  setting  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											case  eModifierType_Build : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												return  build_getter (  self ,  setting  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											case  eModifierType_Mirror : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												return  mirror_getter (  self ,  setting  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											case  eModifierType_Decimate : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												return  decimate_getter (  self ,  setting  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-04-29 18:13:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											case  eModifierType_Smooth : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												return  smooth_getter (  self ,  setting  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											case  eModifierType_Cast : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												return  cast_getter (  self ,  setting  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											case  eModifierType_Wave : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												return  wave_getter (  self ,  setting  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											case  eModifierType_Boolean : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												return  boolean_getter (  self ,  setting  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											case  eModifierType_Array : 
							 
						 
					
						
							
								
									
										
										
										
											2006-09-17 02:31:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												return  array_getter (  self ,  setting  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-01-26 15:43:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											case  eModifierType_EdgeSplit : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												return  edgesplit_getter (  self ,  setting  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-04 11:48:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											case  eModifierType_Displace : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												return  displace_getter (  self ,  setting  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											/*case eModifierType_UVProject:
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												return  uvproject_getter (  self ,  setting  ) ; */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-09-19 10:52:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											case  eModifierType_Hook : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											case  eModifierType_Softbody : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											case  eModifierType_None : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												Py_RETURN_NONE ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  EXPP_ReturnPyObjError (  PyExc_KeyError , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											" unknown key or modifier type "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  int  Modifier_setData (  BPy_Modifier  *  self ,  PyObject  *  key ,   
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										PyObject  *  arg  ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									int  key_int ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if (  ! PyNumber_Check (  key  )  ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_ReturnIntError (  PyExc_TypeError , 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" expected an int arg as stored in Blender.Modifier.Settings "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2006-09-24 08:30:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									MODIFIER_DEL_CHECK_INT ( self ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									key_int  =  PyInt_AsLong (  key  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-08-26 03:18:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* Chach for standard modifier settings */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch (  key_int  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_RENDER : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_setBitfield (  arg ,  & self - > md - > mode , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												eModifierMode_Render ,  ' h '  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_REALTIME : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_setBitfield (  arg ,  & self - > md - > mode , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												eModifierMode_Realtime ,  ' h '  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_EDITMODE : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_setBitfield (  arg ,  & self - > md - > mode , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												eModifierMode_Editmode ,  ' h '  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  EXPP_MOD_ONCAGE : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_setBitfield (  arg ,  & self - > md - > mode , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												eModifierMode_OnCage ,  ' h '  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									switch (  self - > md - > type  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    	case  eModifierType_Subsurf : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  subsurf_setter (  self ,  key_int ,  arg  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    	case  eModifierType_Armature : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  armature_setter (  self ,  key_int ,  arg  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    	case  eModifierType_Lattice : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  lattice_setter (  self ,  key_int ,  arg  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    	case  eModifierType_Curve : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  curve_setter (  self ,  key_int ,  arg  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    	case  eModifierType_Build : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  build_setter (  self ,  key_int ,  arg  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    	case  eModifierType_Mirror : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  mirror_setter (  self ,  key_int ,  arg  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-09-17 02:31:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  eModifierType_Array : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  array_setter (  self ,  key_int ,  arg  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										case  eModifierType_Decimate : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  decimate_setter (  self ,  key_int ,  arg  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-04-29 18:13:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  eModifierType_Smooth : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  smooth_setter (  self ,  key_int ,  arg  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  eModifierType_Cast : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  cast_setter (  self ,  key_int ,  arg  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										case  eModifierType_Wave : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  wave_setter (  self ,  key_int ,  arg  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										case  eModifierType_Boolean : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  boolean_setter (  self ,  key_int ,  arg  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-01-26 15:43:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  eModifierType_EdgeSplit : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  edgesplit_setter (  self ,  key_int ,  arg  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-04 11:48:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  eModifierType_Displace : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  displace_setter (  self ,  key_int ,  arg  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										/*case eModifierType_UVProject:
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  uvproject_setter (  self ,  key_int ,  arg  ) ; */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 17:01:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  eModifierType_Hook : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  eModifierType_Softbody : 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										case  eModifierType_None : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  EXPP_ReturnIntError (  PyExc_RuntimeError , 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											" unsupported modifier setting "  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 17:01:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-04-05 16:04:40 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  PyObject  * Modifier_reset (  BPy_Modifier  *  self  )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Object  * ob  =  self - > object ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ModifierData  * md  =  self - > md ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									HookModifierData  * hmd  =  ( HookModifierData * )  md ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									MODIFIER_DEL_CHECK_PY ( self ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( md - > type  ! =  eModifierType_Hook ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_ReturnPyObjError (  PyExc_TypeError , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											" can only reset hooks "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( hmd - > object )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Mat4Invert ( hmd - > object - > imat ,  hmd - > object - > obmat ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Mat4MulSerie ( hmd - > parentinv ,  hmd - > object - > imat ,  ob - > obmat ,  NULL ,  NULL ,  NULL ,  NULL ,  NULL ,  NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Py_RETURN_NONE ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/*****************************************************************************/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* Function:    Modifier_repr                                                */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* Description: This is a callback function for the BPy_Modifier type. It    */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*              builds a meaningful string to represent modifier objects.    */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*****************************************************************************/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  PyObject  * Modifier_repr (  BPy_Modifier  *  self  )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2006-04-23 08:01:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ModifierTypeInfo  * mti ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( self - > md = = NULL ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  PyString_FromString (  " [Modifier - Removed " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									mti =  modifierType_getInfo ( self - > md - > type ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PyString_FromFormat (  " [Modifier  \" %s \" , Type  \" %s \" ] " ,  self - > md - > name ,  mti - > name  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* Three Python Modifier_Type helper functions needed by the Object module: */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*****************************************************************************/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* Function:    Modifier_CreatePyObject                                      */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* Description: This function will create a new BPy_Modifier from an         */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*              existing Blender modifier structure.                         */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*****************************************************************************/  
						 
					
						
							
								
									
										
										
										
											2006-12-28 06:47:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								PyObject  * Modifier_CreatePyObject (  Object  * ob ,  ModifierData  *  md  )  
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BPy_Modifier  * pymod ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									pymod  =  (  BPy_Modifier  *  )  PyObject_NEW (  BPy_Modifier ,  & Modifier_Type  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if (  ! pymod  ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_ReturnPyObjError (  PyExc_MemoryError , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													      " couldn't create BPy_Modifier object "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									pymod - > md  =  md ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-12-28 06:47:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									pymod - > object  =  ob ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  (  PyObject  *  )  pymod ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*****************************************************************************/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* Function:    Modifier_FromPyObject                                        */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* Description: This function returns the Blender modifier from the given    */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*              PyObject.                                                    */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*****************************************************************************/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ModifierData  * Modifier_FromPyObject (  PyObject  *  pyobj  )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  (  (  BPy_Modifier  *  )  pyobj  ) - > md ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*****************************************************************************/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* Modifier Sequence wrapper                                                 */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*****************************************************************************/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Initialize  the  interator 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-12-28 06:47:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PyObject  * ModSeq_getIter (  BPy_ModSeq  *  self  )  
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2006-09-24 08:30:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( ! self - > iter )  { 
							 
						 
					
						
							
								
									
										
										
										
											2006-12-28 06:47:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										self - > iter  =  ( ModifierData  * ) self - > object - > modifiers . first ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-09-24 08:30:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  EXPP_incr_ret  (  ( PyObject  * )  self  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2006-12-28 06:47:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  ModSeq_CreatePyObject ( self - > object ,  ( ModifierData  * ) self - > object - > modifiers . first ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-09-24 08:30:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Get  the  next  Modifier 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-12-28 06:47:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PyObject  * ModSeq_nextIter (  BPy_ModSeq  *  self  )  
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2006-09-24 08:30:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ModifierData  * iter  =  self - > iter ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if (  iter  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										self - > iter  =  iter - > next ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-12-28 06:47:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  Modifier_CreatePyObject (  self - > object ,  iter  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2006-09-24 08:30:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									self - > iter =  NULL ;  /* mark as not iterating */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  EXPP_ReturnPyObjError (  PyExc_StopIteration , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											" iterator at end "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* return the number of modifiers */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-12-28 06:47:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  ModSeq_length (  BPy_ModSeq  *  self  )  
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2006-12-28 06:47:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  BLI_countlist (  & self - > object - > modifiers  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* return a modifier */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-12-28 06:47:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PyObject  * ModSeq_item (  BPy_ModSeq  *  self ,  int  i  )  
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ModifierData  * md  =  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* if index is negative, start counting from the end of the list */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if (  i  <  0  ) 
							 
						 
					
						
							
								
									
										
										
										
											2006-12-28 06:47:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										i  + =  ModSeq_length (  self  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* skip through the list until we get the modifier or end of list */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-12-28 06:47:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									for (  md  =  self - > object - > modifiers . first ;  i  & &  md ;  - - i  )  md  =  md - > next ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if (  md  ) 
							 
						 
					
						
							
								
									
										
										
										
											2006-12-28 06:47:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  Modifier_CreatePyObject (  self - > object ,  md  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_ReturnPyObjError (  PyExc_IndexError , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" array index out of range "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*****************************************************************************/  
						 
					
						
							
								
									
										
										
										
											2006-12-28 06:47:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/* Python BPy_ModSeq sequence table:                                      */  
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/*****************************************************************************/  
						 
					
						
							
								
									
										
										
										
											2006-12-28 06:47:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PySequenceMethods  ModSeq_as_sequence  =  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									(  inquiry  )  ModSeq_length , 	/* sq_length */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									(  binaryfunc  )  0 , 	/* sq_concat */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									(  intargfunc  )  0 , 	/* sq_repeat */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-12-28 06:47:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									(  intargfunc  )  ModSeq_item , 	/* sq_item */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									(  intintargfunc  )  0 , 	/* sq_slice */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									(  intobjargproc  )  0 , 	/* sq_ass_item */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									(  intintobjargproc  )  0 , 	/* sq_ass_slice */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									(  objobjproc  )  0 , 	/* sq_contains */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									(  binaryfunc  )  0 , 		/* sq_inplace_concat */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									(  intargfunc  )  0 , 		/* sq_inplace_repeat */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-06-14 04:41:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/*
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  helper  function  to  check  for  a  valid  modifier  argument 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-12-28 06:47:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  ModifierData  * locate_modifier (  BPy_ModSeq  * self ,  PyObject  *  args  )  
						 
					
						
							
								
									
										
										
										
											2006-06-14 04:41:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BPy_Modifier  * pyobj ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ModifierData  * md ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* check that argument is a modifier */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if (  ! PyArg_ParseTuple (  args ,  " O! " ,  & Modifier_Type ,  & pyobj  )  ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  ( ModifierData  * ) EXPP_ReturnPyObjError (  PyExc_TypeError , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" expected an modifier as an argument "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* check whether modifier has been removed */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if (  ! pyobj - > md  ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  ( ModifierData  * ) EXPP_ReturnPyObjError (  PyExc_RuntimeError , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" This modifier has been removed! "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* find the modifier in the object's list */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-12-28 06:47:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									for (  md  =  self - > object - > modifiers . first ;  md ;  md  =  md - > next  ) 
							 
						 
					
						
							
								
									
										
										
										
											2006-06-14 04:41:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if (  md  = =  pyobj - > md  ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  md ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* return exception if we can't find the modifier */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  ( ModifierData  * ) EXPP_ReturnPyObjError (  PyExc_AttributeError , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											" This modifier is not in the object's stack "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/* create a new modifier at the end of the list */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-12-28 06:47:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PyObject  * ModSeq_append (  BPy_ModSeq  * self ,  PyObject  * args  )  
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									int  type ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if (  ! PyArg_ParseTuple (  args ,  " i " ,  & type  )  ) 
							 
						 
					
						
							
								
									
										
										
										
											2006-06-14 04:41:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  EXPP_ReturnPyObjError (  PyExc_TypeError , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" expected int argument "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* type 0 is eModifierType_None, should we be able to add one of these? */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if (  type  < =  0  | |  type  > =  NUM_MODIFIER_TYPES  ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_ReturnPyObjError (  PyExc_ValueError , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" int argument out of range, expected an int from Blender.Modifier.Type "  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2006-12-28 06:47:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BLI_addtail (  & self - > object - > modifiers ,  modifier_new (  type  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  Modifier_CreatePyObject (  self - > object ,  self - > object - > modifiers . last  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 17:01:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/* remove an existing modifier */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-12-28 06:47:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PyObject  * ModSeq_remove (  BPy_ModSeq  * self ,  PyObject  * args  )  
						 
					
						
							
								
									
										
										
										
											2006-04-23 08:01:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2006-06-14 04:41:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ModifierData  * md  =  locate_modifier (  self ,  args  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BPy_Modifier  * py_obj ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 17:01:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-06-14 04:41:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/* if we can't locate the modifier, return (exception already set) */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if (  ! md  ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  ( PyObject  * ) NULL ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 17:01:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-06-14 04:41:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/* do the actual removal */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-12-28 06:47:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BLI_remlink (  & self - > object - > modifiers ,  md  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-06-14 04:41:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									modifier_free (  md  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 17:01:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-06-14 04:41:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/* erase the link to the modifier */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									py_obj  =  (  BPy_Modifier  *  ) PyTuple_GET_ITEM (  args ,  0  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									py_obj - > md  =  NULL ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 17:01:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-06-14 04:41:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Py_RETURN_NONE ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2006-04-23 17:01:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-06-14 04:41:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/* move the modifier up in the stack */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-12-28 06:47:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PyObject  * ModSeq_moveUp (  BPy_ModSeq  *  self ,  PyObject  *  args  )  
						 
					
						
							
								
									
										
										
										
											2006-06-14 04:41:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ModifierData  * md  =  locate_modifier (  self ,  args  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* if we can't locate the modifier, return (exception already set) */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if (  ! md  ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  ( PyObject  * ) NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2006-12-28 06:47:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if (  mod_moveUp (  self - > object ,  md  )  ) 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 17:01:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  EXPP_ReturnPyObjError (  PyExc_RuntimeError , 
							 
						 
					
						
							
								
									
										
										
										
											2006-06-14 04:41:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" cannot move above a modifier requiring original data "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Py_RETURN_NONE ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* move the modifier down in the stack */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-12-28 06:47:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PyObject  * ModSeq_moveDown (  BPy_ModSeq  *  self ,  PyObject  * args  )  
						 
					
						
							
								
									
										
										
										
											2006-06-14 04:41:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ModifierData  * md  =  locate_modifier (  self ,  args  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* if we can't locate the modifier, return (exception already set) */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if (  ! md  ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  ( PyObject  * ) NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2006-12-28 06:47:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if (  mod_moveDown (  self - > object ,  md  )  ) 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 17:01:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  EXPP_ReturnPyObjError (  PyExc_RuntimeError , 
							 
						 
					
						
							
								
									
										
										
										
											2006-06-14 04:41:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" cannot move beyond a non-deforming modifier "  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 17:01:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Py_RETURN_NONE ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*****************************************************************************/  
						 
					
						
							
								
									
										
										
										
											2006-12-28 06:47:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/* Python BPy_ModSeq methods table:                                       */  
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/*****************************************************************************/  
						 
					
						
							
								
									
										
										
										
											2006-12-28 06:47:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PyMethodDef  BPy_ModSeq_methods [ ]  =  {  
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									/* name, method, flags, doc */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-12-28 06:47:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									{ " append " ,  (  PyCFunction  )  ModSeq_append ,  METH_VARARGS , 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 08:01:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 " (type) - add a new modifier, where type is the type of modifier " } , 
							 
						 
					
						
							
								
									
										
										
										
											2006-12-28 06:47:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									{ " remove " ,  (  PyCFunction  )  ModSeq_remove ,  METH_VARARGS , 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 08:01:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 " (modifier) - remove an existing modifier, where modifier is a modifier from this object. " } , 
							 
						 
					
						
							
								
									
										
										
										
											2006-12-28 06:47:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									{ " moveUp " ,  (  PyCFunction  )  ModSeq_moveUp ,  METH_VARARGS , 
							 
						 
					
						
							
								
									
										
										
										
											2006-06-14 04:41:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 " (modifier) - Move a modifier up in stack " } , 
							 
						 
					
						
							
								
									
										
										
										
											2006-12-28 06:47:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									{ " moveDown " ,  (  PyCFunction  )  ModSeq_moveDown ,  METH_VARARGS , 
							 
						 
					
						
							
								
									
										
										
										
											2006-06-14 04:41:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 " (modifier) - Move a modifier down in stack " } , 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									{ NULL ,  NULL ,  0 ,  NULL } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*****************************************************************************/  
						 
					
						
							
								
									
										
										
										
											2006-12-28 06:47:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/* Python ModSeq_Type structure definition:                               */  
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/*****************************************************************************/  
						 
					
						
							
								
									
										
										
										
											2006-12-28 06:47:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								PyTypeObject  ModSeq_Type  =  {  
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									PyObject_HEAD_INIT (  NULL  )   /* required py macro */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0 ,                           /* ob_size */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/*  For printing, in format "<module>.<name>" */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-06-14 04:41:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									" Blender.Modifiers " ,         /* char *tp_name; */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-12-28 06:47:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									sizeof (  BPy_ModSeq  ) ,        /* int tp_basicsize; */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									0 ,                           /* tp_itemsize;  For allocation */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* Methods to implement standard operations */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-03-15 01:47:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									NULL , 						/* destructor tp_dealloc; */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* printfunc tp_print; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* getattrfunc tp_getattr; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* setattrfunc tp_setattr; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* cmpfunc tp_compare; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									(  reprfunc  )  NULL ,           /* reprfunc tp_repr; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* Method suites for standard classes */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* PyNumberMethods *tp_as_number; */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-12-28 06:47:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									& ModSeq_as_sequence ,         /* PySequenceMethods *tp_as_sequence; */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* PyMappingMethods *tp_as_mapping; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* More standard operations (here for binary compatibility) */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* hashfunc tp_hash; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* ternaryfunc tp_call; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* reprfunc tp_str; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* getattrofunc tp_getattro; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* setattrofunc tp_setattro; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* Functions to access object as input/output buffer */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* PyBufferProcs *tp_as_buffer; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  /*** Flags to define presence of optional/expanded features ***/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Py_TPFLAGS_DEFAULT ,          /* long tp_flags; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /*  char *tp_doc;  Documentation string */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  /*** Assigned meaning in release 2.0 ***/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* call function for all accessible objects */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* traverseproc tp_traverse; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* delete references to contained objects */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* inquiry tp_clear; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  /***  Assigned meaning in release 2.1 ***/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  /*** rich comparisons ***/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* richcmpfunc tp_richcompare; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  /***  weak reference enabler ***/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0 ,                           /* long tp_weaklistoffset; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  /*** Added in release 2.2 ***/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/*   Iterators */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-12-28 06:47:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									(  getiterfunc  ) ModSeq_getIter ,  /* getiterfunc tp_iter; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    (  iternextfunc  ) ModSeq_nextIter ,  /* iternextfunc tp_iternext; */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  /*** Attribute descriptor and subclassing stuff ***/ 
							 
						 
					
						
							
								
									
										
										
										
											2006-12-28 06:47:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BPy_ModSeq_methods ,          /* struct PyMethodDef *tp_methods; */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* struct PyMemberDef *tp_members; */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 17:01:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									NULL ,                        /* struct PyGetSetDef *tp_getset; */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* struct _typeobject *tp_base; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* PyObject *tp_dict; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* descrgetfunc tp_descr_get; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* descrsetfunc tp_descr_set; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0 ,                           /* long tp_dictoffset; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* initproc tp_init; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* allocfunc tp_alloc; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* newfunc tp_new; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/*  Low-level free-memory routine */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* freefunc tp_free;  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* For PyObject_IS_GC */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* inquiry tp_is_gc;  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* PyObject *tp_bases; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* method resolution order */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* PyObject *tp_mro;  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* PyObject *tp_cache; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* PyObject *tp_subclasses; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,                        /* PyObject *tp_weaklist; */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*****************************************************************************/  
						 
					
						
							
								
									
										
										
										
											2006-12-28 06:47:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/* Function:    ModSeq_CreatePyObject                                     */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* Description: This function will create a new BPy_ModSeq from an        */  
						 
					
						
							
								
									
										
										
										
											2006-06-14 04:41:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/*              existing  ListBase structure.                                */  
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/*****************************************************************************/  
						 
					
						
							
								
									
										
										
										
											2006-12-28 06:47:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								PyObject  * ModSeq_CreatePyObject (  Object  * ob ,  ModifierData  * iter  )  
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2006-12-28 06:47:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BPy_ModSeq  * pymod ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									pymod  =  (  BPy_ModSeq  *  )  PyObject_NEW (  BPy_ModSeq ,  & ModSeq_Type  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									if (  ! pymod  ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  EXPP_ReturnPyObjError (  PyExc_MemoryError , 
							 
						 
					
						
							
								
									
										
										
										
											2006-12-28 06:47:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" couldn't create BPy_ModSeq object "  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									pymod - > object  =  ob ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-09-24 08:30:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									pymod - > iter  =  iter ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 02:34:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  (  PyObject  *  )  pymod ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2006-04-23 17:01:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PyObject  * M_Modifier_TypeDict (  void  )  
						 
					
						
							
								
									
										
										
										
											2006-04-23 17:01:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									PyObject  * S  =  PyConstant_New (   ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if (  S  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										BPy_constant  * d  =  (  BPy_constant  *  )  S ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										PyConstant_Insert (  d ,  " SUBSURF " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  eModifierType_Subsurf  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										PyConstant_Insert (  d ,  " ARMATURE " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  eModifierType_Armature  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										PyConstant_Insert (  d ,  " LATTICE " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  eModifierType_Lattice  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										PyConstant_Insert (  d ,  " CURVE " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  eModifierType_Curve  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										PyConstant_Insert (  d ,  " BUILD " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  eModifierType_Build  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										PyConstant_Insert (  d ,  " MIRROR " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  eModifierType_Mirror  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										PyConstant_Insert (  d ,  " DECIMATE " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  eModifierType_Decimate  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										PyConstant_Insert (  d ,  " WAVE " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  eModifierType_Wave  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										PyConstant_Insert (  d ,  " BOOLEAN " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  eModifierType_Boolean  )  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-09-17 02:31:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										PyConstant_Insert (  d ,  " ARRAY " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  eModifierType_Array  )  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-01-26 15:43:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										PyConstant_Insert (  d ,  " EDGESPLIT " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  eModifierType_EdgeSplit  )  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-04-29 18:13:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										PyConstant_Insert (  d ,  " SMOOTH " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  eModifierType_Smooth  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										PyConstant_Insert (  d ,  " CAST " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  eModifierType_Cast  )  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 17:01:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  S ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-01-26 15:43:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PyObject  * M_Modifier_SettingsDict (  void  )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									PyObject  * S  =  PyConstant_New (   ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if (  S  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										BPy_constant  * d  =  (  BPy_constant  *  )  S ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#  The lines below are a python script that uses the enum variables to create  
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#  the lines below 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#  START PYSCRIPT 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								st = ' ' '  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_RENDER  =  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_REALTIME , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EXPP_MOD_EDITMODE , 
							 
						 
					
						
							
								
									
										
										
										
											2006-09-17 02:31:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									etc . .  copy  from  above 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								' ' '  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								base =  ' ' '  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " %s " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_ % s  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								' ' '  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								for  var  in  st . replace ( ' , ' , ' ' ) . split ( ' \n ' ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									var =  var . split ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  not  var :  continue 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									var =  var [ 0 ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( not  var )  or  var . startswith ( ' / ' ) :  continue 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2006-09-17 02:31:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									var = ' _ ' . join ( var . split ( ' _ ' ) [ 2 : ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									print  base  %  ( var ,  var ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#  END PYSCRIPT 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								*/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											/*Auto generated from the above script*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " RENDER " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_RENDER  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " REALTIME " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_REALTIME  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " EDITMODE " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_EDITMODE  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " ONCAGE " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_ONCAGE  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " OBJECT " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_OBJECT  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " VERTGROUP " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_VERTGROUP  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " LIMIT " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_LIMIT  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " FLAG " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_FLAG  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " COUNT " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_COUNT  )  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-09-17 02:31:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " LENGTH " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_LENGTH  )  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-04-29 18:13:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " FACTOR " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_FACTOR  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " ENABLE_X " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_ENABLE_X  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " ENABLE_Y " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_ENABLE_Y  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " ENABLE_Z " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_ENABLE_Z  )  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " TYPES " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_TYPES  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " LEVELS " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_LEVELS  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " RENDLEVELS " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_RENDLEVELS  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " OPTIMAL " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_OPTIMAL  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " UV " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_UV  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " ENVELOPES " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_ENVELOPES  )  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-09-17 02:31:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " OBJECT_OFFSET " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_OBJECT_OFFSET  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " OBJECT_CURVE " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_OBJECT_CURVE  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " OFFSET_VEC " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_OFFSET_VEC  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " SCALE_VEC " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_SCALE_VEC  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " MERGE_DIST " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_MERGE_DIST  )  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " START " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_START  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " SEED " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_SEED  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " RANDOMIZE " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_RANDOMIZE  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " AXIS " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_AXIS  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " RATIO " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_RATIO  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " STARTX " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_STARTX  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " STARTY " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_STARTY  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " HEIGHT " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_HEIGHT  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " WIDTH " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_WIDTH  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " NARROW " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_NARROW  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " SPEED " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_SPEED  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " DAMP " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_DAMP  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " LIFETIME " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_LIFETIME  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " TIMEOFFS " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_TIMEOFFS  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " OPERATION " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_OPERATION  )  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-01-26 15:43:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " EDGESPLIT_ANGLE " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_EDGESPLIT_ANGLE  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " EDGESPLIT_FROM_ANGLE " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_EDGESPLIT_FROM_ANGLE  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " EDGESPLIT_FROM_SHARP " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_EDGESPLIT_FROM_SHARP  )  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-04 11:48:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " UVLAYER " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_UVLAYER  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " MID_LEVEL " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_MID_LEVEL  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " STRENGTH " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_STRENGTH  )  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-04-29 18:13:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " TEXTURE " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_TEXTURE  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " MAPPING " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_MAPPING  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " DIRECTION " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_DIRECTION  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " REPEAT " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_REPEAT  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " RADIUS " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_RADIUS  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " SIZE " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_SIZE  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " USE_OB_TRANSFORM " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_USE_OB_TRANSFORM  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyConstant_Insert (  d ,  " SIZE_FROM_RADIUS " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyInt_FromLong (  EXPP_MOD_SIZE_FROM_RADIUS  )  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											/*End Auto generated code*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  S ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 17:01:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/*****************************************************************************/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* Function:              Modifier_Init                                      */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*****************************************************************************/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								PyObject  * Modifier_Init (  void  )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									PyObject  * submodule ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									PyObject  * TypeDict  =  M_Modifier_TypeDict (  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									PyObject  * SettingsDict  =  M_Modifier_SettingsDict (  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 17:01:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-12-28 06:47:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if (  PyType_Ready (  & ModSeq_Type  )  <  0  | | 
							 
						 
					
						
							
								
									
										
										
										
											2006-06-14 04:41:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											PyType_Ready (  & Modifier_Type  )  <  0  ) 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 17:01:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-06-14 04:41:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									submodule  =  Py_InitModule3 (  " Blender.Modifier " ,  NULL , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											" Modifer module for accessing and creating object modifier data "  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 17:01:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-01-26 15:43:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if (  TypeDict  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										PyModule_AddObject (  submodule ,  " Type " ,  TypeDict  ) ;  /* deprecated */ 
							 
						 
					
						
							
								
									
										
										
										
											2007-02-05 05:09:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										/* since PyModule_AddObject() steals a reference, we need to
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										   incref  TypeDict  to  use  it  again  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Py_INCREF (  TypeDict ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-01-26 15:43:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										PyModule_AddObject (  submodule ,  " Types " ,  TypeDict  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-25 13:01:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if (  SettingsDict  ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										PyModule_AddObject (  submodule ,  " Settings " ,  SettingsDict  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2006-04-23 17:01:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  submodule ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}