|
Blender
V2.59
|
00001 /* 00002 * $Id: rna_modifier.c 38866 2011-07-31 02:24:06Z nicholasbishop $ 00003 * 00004 * ***** BEGIN GPL LICENSE BLOCK ***** 00005 * 00006 * This program is free software; you can redistribute it and/or 00007 * modify it under the terms of the GNU General Public License 00008 * as published by the Free Software Foundation; either version 2 00009 * of the License, or (at your option) any later version. 00010 * 00011 * This program is distributed in the hope that it will be useful, 00012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00014 * GNU General Public License for more details. 00015 * 00016 * You should have received a copy of the GNU General Public License 00017 * along with this program; if not, write to the Free Software Foundation, 00018 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 00019 * 00020 * Contributor(s): Blender Foundation (2008), Juho Veps‰l‰inen 00021 * 00022 * ***** END GPL LICENSE BLOCK ***** 00023 */ 00024 00030 #include <float.h> 00031 #include <limits.h> 00032 #include <stdlib.h> 00033 00034 #include "RNA_define.h" 00035 00036 #include "rna_internal.h" 00037 00038 #include "DNA_armature_types.h" 00039 #include "DNA_modifier_types.h" 00040 #include "DNA_object_types.h" 00041 #include "DNA_object_force.h" 00042 #include "DNA_scene_types.h" 00043 00044 #include "MEM_guardedalloc.h" 00045 00046 #include "BLI_math.h" 00047 00048 #include "BKE_animsys.h" 00049 #include "BKE_bmesh.h" /* For BevelModifierData */ 00050 #include "BKE_multires.h" 00051 #include "BKE_smoke.h" /* For smokeModifier_free & smokeModifier_createType */ 00052 00053 #include "WM_api.h" 00054 #include "WM_types.h" 00055 00056 EnumPropertyItem modifier_type_items[] ={ 00057 {0, "", 0, "Generate", ""}, 00058 {eModifierType_Array, "ARRAY", ICON_MOD_ARRAY, "Array", ""}, 00059 {eModifierType_Bevel, "BEVEL", ICON_MOD_BEVEL, "Bevel", ""}, 00060 {eModifierType_Boolean, "BOOLEAN", ICON_MOD_BOOLEAN, "Boolean", ""}, 00061 {eModifierType_Build, "BUILD", ICON_MOD_BUILD, "Build", ""}, 00062 {eModifierType_Decimate, "DECIMATE", ICON_MOD_DECIM, "Decimate", ""}, 00063 {eModifierType_EdgeSplit, "EDGE_SPLIT", ICON_MOD_EDGESPLIT, "Edge Split", ""}, 00064 {eModifierType_Mask, "MASK", ICON_MOD_MASK, "Mask", ""}, 00065 {eModifierType_Mirror, "MIRROR", ICON_MOD_MIRROR, "Mirror", ""}, 00066 {eModifierType_Multires, "MULTIRES", ICON_MOD_MULTIRES, "Multiresolution", ""}, 00067 {eModifierType_Screw, "SCREW", ICON_MOD_SCREW, "Screw", ""}, 00068 {eModifierType_Solidify, "SOLIDIFY", ICON_MOD_SOLIDIFY, "Solidify", ""}, 00069 {eModifierType_Subsurf, "SUBSURF", ICON_MOD_SUBSURF, "Subdivision Surface", ""}, 00070 {eModifierType_UVProject, "UV_PROJECT", ICON_MOD_UVPROJECT, "UV Project", ""}, 00071 {0, "", 0, "Deform", ""}, 00072 {eModifierType_Armature, "ARMATURE", ICON_MOD_ARMATURE, "Armature", ""}, 00073 {eModifierType_Cast, "CAST", ICON_MOD_CAST, "Cast", ""}, 00074 {eModifierType_Curve, "CURVE", ICON_MOD_CURVE, "Curve", ""}, 00075 {eModifierType_Displace, "DISPLACE", ICON_MOD_DISPLACE, "Displace", ""}, 00076 {eModifierType_Hook, "HOOK", ICON_HOOK, "Hook", ""}, 00077 {eModifierType_Lattice, "LATTICE", ICON_MOD_LATTICE, "Lattice", ""}, 00078 {eModifierType_MeshDeform, "MESH_DEFORM", ICON_MOD_MESHDEFORM, "Mesh Deform", ""}, 00079 {eModifierType_Shrinkwrap, "SHRINKWRAP", ICON_MOD_SHRINKWRAP, "Shrinkwrap", ""}, 00080 {eModifierType_SimpleDeform, "SIMPLE_DEFORM", ICON_MOD_SIMPLEDEFORM, "Simple Deform", ""}, 00081 {eModifierType_Smooth, "SMOOTH", ICON_MOD_SMOOTH, "Smooth", ""}, 00082 {eModifierType_Warp, "WARP", ICON_MOD_SUBSURF, "Warp", ""}, 00083 {eModifierType_Wave, "WAVE", ICON_MOD_WAVE, "Wave", ""}, 00084 {0, "", 0, "Simulate", ""}, 00085 {eModifierType_Cloth, "CLOTH", ICON_MOD_CLOTH, "Cloth", ""}, 00086 {eModifierType_Collision, "COLLISION", ICON_MOD_PHYSICS, "Collision", ""}, 00087 {eModifierType_Explode, "EXPLODE", ICON_MOD_EXPLODE, "Explode", ""}, 00088 {eModifierType_Fluidsim, "FLUID_SIMULATION", ICON_MOD_FLUIDSIM, "Fluid Simulation", ""}, 00089 {eModifierType_ParticleInstance, "PARTICLE_INSTANCE", ICON_MOD_PARTICLES, "Particle Instance", ""}, 00090 {eModifierType_ParticleSystem, "PARTICLE_SYSTEM", ICON_MOD_PARTICLES, "Particle System", ""}, 00091 {eModifierType_Smoke, "SMOKE", ICON_MOD_SMOKE, "Smoke", ""}, 00092 {eModifierType_Softbody, "SOFT_BODY", ICON_MOD_SOFT, "Soft Body", ""}, 00093 {eModifierType_Surface, "SURFACE", ICON_MOD_PHYSICS, "Surface", ""}, 00094 {0, NULL, 0, NULL, NULL}}; 00095 00096 #ifdef RNA_RUNTIME 00097 00098 #include "DNA_particle_types.h" 00099 #include "DNA_smoke_types.h" 00100 00101 #include "BKE_context.h" 00102 #include "BKE_depsgraph.h" 00103 #include "BKE_library.h" 00104 #include "BKE_modifier.h" 00105 #include "BKE_particle.h" 00106 00107 static void rna_UVProject_projectors_begin(CollectionPropertyIterator *iter, PointerRNA *ptr) 00108 { 00109 UVProjectModifierData *uvp= (UVProjectModifierData*)ptr->data; 00110 rna_iterator_array_begin(iter, (void*)uvp->projectors, sizeof(Object*), uvp->num_projectors, 0, NULL); 00111 } 00112 00113 static StructRNA* rna_Modifier_refine(struct PointerRNA *ptr) 00114 { 00115 ModifierData *md= (ModifierData*)ptr->data; 00116 00117 switch(md->type) { 00118 case eModifierType_Subsurf: 00119 return &RNA_SubsurfModifier; 00120 case eModifierType_Lattice: 00121 return &RNA_LatticeModifier; 00122 case eModifierType_Curve: 00123 return &RNA_CurveModifier; 00124 case eModifierType_Build: 00125 return &RNA_BuildModifier; 00126 case eModifierType_Mirror: 00127 return &RNA_MirrorModifier; 00128 case eModifierType_Decimate: 00129 return &RNA_DecimateModifier; 00130 case eModifierType_Wave: 00131 return &RNA_WaveModifier; 00132 case eModifierType_Armature: 00133 return &RNA_ArmatureModifier; 00134 case eModifierType_Hook: 00135 return &RNA_HookModifier; 00136 case eModifierType_Softbody: 00137 return &RNA_SoftBodyModifier; 00138 case eModifierType_Boolean: 00139 return &RNA_BooleanModifier; 00140 case eModifierType_Array: 00141 return &RNA_ArrayModifier; 00142 case eModifierType_EdgeSplit: 00143 return &RNA_EdgeSplitModifier; 00144 case eModifierType_Displace: 00145 return &RNA_DisplaceModifier; 00146 case eModifierType_UVProject: 00147 return &RNA_UVProjectModifier; 00148 case eModifierType_Smooth: 00149 return &RNA_SmoothModifier; 00150 case eModifierType_Cast: 00151 return &RNA_CastModifier; 00152 case eModifierType_MeshDeform: 00153 return &RNA_MeshDeformModifier; 00154 case eModifierType_ParticleSystem: 00155 return &RNA_ParticleSystemModifier; 00156 case eModifierType_ParticleInstance: 00157 return &RNA_ParticleInstanceModifier; 00158 case eModifierType_Explode: 00159 return &RNA_ExplodeModifier; 00160 case eModifierType_Cloth: 00161 return &RNA_ClothModifier; 00162 case eModifierType_Collision: 00163 return &RNA_CollisionModifier; 00164 case eModifierType_Bevel: 00165 return &RNA_BevelModifier; 00166 case eModifierType_Shrinkwrap: 00167 return &RNA_ShrinkwrapModifier; 00168 case eModifierType_Fluidsim: 00169 return &RNA_FluidSimulationModifier; 00170 case eModifierType_Mask: 00171 return &RNA_MaskModifier; 00172 case eModifierType_SimpleDeform: 00173 return &RNA_SimpleDeformModifier; 00174 case eModifierType_Multires: 00175 return &RNA_MultiresModifier; 00176 case eModifierType_Surface: 00177 return &RNA_SurfaceModifier; 00178 case eModifierType_Smoke: 00179 return &RNA_SmokeModifier; 00180 case eModifierType_Solidify: 00181 return &RNA_SolidifyModifier; 00182 case eModifierType_Screw: 00183 return &RNA_ScrewModifier; 00184 case eModifierType_Warp: 00185 return &RNA_WarpModifier; 00186 default: 00187 return &RNA_Modifier; 00188 } 00189 } 00190 00191 void rna_Modifier_name_set(PointerRNA *ptr, const char *value) 00192 { 00193 ModifierData *md= ptr->data; 00194 char oldname[sizeof(md->name)]; 00195 00196 /* make a copy of the old name first */ 00197 BLI_strncpy(oldname, md->name, sizeof(md->name)); 00198 00199 /* copy the new name into the name slot */ 00200 BLI_strncpy(md->name, value, sizeof(md->name)); 00201 00202 /* make sure the name is truly unique */ 00203 if (ptr->id.data) { 00204 Object *ob= ptr->id.data; 00205 modifier_unique_name(&ob->modifiers, md); 00206 } 00207 00208 /* fix all the animation data which may link to this */ 00209 BKE_all_animdata_fix_paths_rename("modifiers", oldname, md->name); 00210 } 00211 00212 static char *rna_Modifier_path(PointerRNA *ptr) 00213 { 00214 return BLI_sprintfN("modifiers[\"%s\"]", ((ModifierData*)ptr->data)->name); 00215 } 00216 00217 static void rna_Modifier_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr) 00218 { 00219 DAG_id_tag_update(ptr->id.data, OB_RECALC_DATA); 00220 WM_main_add_notifier(NC_OBJECT|ND_MODIFIER, ptr->id.data); 00221 } 00222 00223 static void rna_Modifier_dependency_update(Main *bmain, Scene *scene, PointerRNA *ptr) 00224 { 00225 rna_Modifier_update(bmain, scene, ptr); 00226 DAG_scene_sort(bmain, scene); 00227 } 00228 00229 static void rna_Smoke_set_type(Main *bmain, Scene *scene, PointerRNA *ptr) 00230 { 00231 SmokeModifierData *smd= (SmokeModifierData *)ptr->data; 00232 Object *ob= (Object*)ptr->id.data; 00233 ParticleSystemModifierData *psmd = NULL; 00234 ParticleSystem *psys = NULL; 00235 ParticleSettings *part = NULL; 00236 00237 // nothing changed 00238 if((smd->type & MOD_SMOKE_TYPE_DOMAIN) && smd->domain) 00239 return; 00240 00241 smokeModifier_free(smd); // XXX TODO: completely free all 3 pointers 00242 smokeModifier_createType(smd); // create regarding of selected type 00243 00244 switch (smd->type) { 00245 case MOD_SMOKE_TYPE_DOMAIN: 00246 ob->dt = OB_WIRE; 00247 break; 00248 case MOD_SMOKE_TYPE_FLOW: 00249 for(psys=ob->particlesystem.first; psys; psys=psys->next) 00250 if(psys->part->type == PART_EMITTER) 00251 break; 00252 if(ob->type == OB_MESH && !psys) { 00253 /* add particle system */ 00254 psmd = (ParticleSystemModifierData *)object_add_particle_system(scene, ob, NULL); 00255 if(psmd) 00256 { 00257 psys = psmd->psys; 00258 part = psys->part; 00259 part->lifetime = 1.0f; 00260 part->sta = 1.0f; 00261 part->end = 250.0f; 00262 part->ren_as = PART_DRAW_NOT; 00263 part->draw_as = PART_DRAW_DOT; 00264 sprintf(psys->name, "SmokeParticles"); 00265 psys->recalc |= (PSYS_RECALC_RESET|PSYS_RECALC_PHYS); 00266 DAG_id_tag_update(ptr->id.data, OB_RECALC_DATA); 00267 } 00268 } 00269 if(smd->flow) 00270 smd->flow->psys = psys; 00271 case MOD_SMOKE_TYPE_COLL: 00272 case 0: 00273 default: 00274 ob->dt = OB_TEXTURE; 00275 break; 00276 } 00277 00278 // update dependancy since a domain - other type switch could have happened 00279 rna_Modifier_dependency_update(bmain, scene, ptr); 00280 } 00281 00282 static void rna_ExplodeModifier_vgroup_get(PointerRNA *ptr, char *value) 00283 { 00284 ExplodeModifierData *emd= (ExplodeModifierData*)ptr->data; 00285 rna_object_vgroup_name_index_get(ptr, value, emd->vgroup); 00286 } 00287 00288 static int rna_ExplodeModifier_vgroup_length(PointerRNA *ptr) 00289 { 00290 ExplodeModifierData *emd= (ExplodeModifierData*)ptr->data; 00291 return rna_object_vgroup_name_index_length(ptr, emd->vgroup); 00292 } 00293 00294 static void rna_ExplodeModifier_vgroup_set(PointerRNA *ptr, const char *value) 00295 { 00296 ExplodeModifierData *emd= (ExplodeModifierData*)ptr->data; 00297 rna_object_vgroup_name_index_set(ptr, value, &emd->vgroup); 00298 } 00299 00300 static void rna_SimpleDeformModifier_vgroup_set(PointerRNA *ptr, const char *value) 00301 { 00302 SimpleDeformModifierData *smd= (SimpleDeformModifierData*)ptr->data; 00303 rna_object_vgroup_name_set(ptr, value, smd->vgroup_name, sizeof(smd->vgroup_name)); 00304 } 00305 00306 static void rna_ShrinkwrapModifier_vgroup_set(PointerRNA *ptr, const char *value) 00307 { 00308 ShrinkwrapModifierData *smd= (ShrinkwrapModifierData*)ptr->data; 00309 rna_object_vgroup_name_set(ptr, value, smd->vgroup_name, sizeof(smd->vgroup_name)); 00310 } 00311 00312 static void rna_LatticeModifier_vgroup_set(PointerRNA *ptr, const char *value) 00313 { 00314 LatticeModifierData *lmd= (LatticeModifierData*)ptr->data; 00315 rna_object_vgroup_name_set(ptr, value, lmd->name, sizeof(lmd->name)); 00316 } 00317 00318 static void rna_ArmatureModifier_vgroup_set(PointerRNA *ptr, const char *value) 00319 { 00320 ArmatureModifierData *lmd= (ArmatureModifierData*)ptr->data; 00321 rna_object_vgroup_name_set(ptr, value, lmd->defgrp_name, sizeof(lmd->defgrp_name)); 00322 } 00323 00324 static void rna_CurveModifier_vgroup_set(PointerRNA *ptr, const char *value) 00325 { 00326 CurveModifierData *lmd= (CurveModifierData*)ptr->data; 00327 rna_object_vgroup_name_set(ptr, value, lmd->name, sizeof(lmd->name)); 00328 } 00329 00330 static void rna_DisplaceModifier_vgroup_set(PointerRNA *ptr, const char *value) 00331 { 00332 DisplaceModifierData *lmd= (DisplaceModifierData*)ptr->data; 00333 rna_object_vgroup_name_set(ptr, value, lmd->defgrp_name, sizeof(lmd->defgrp_name)); 00334 } 00335 00336 static void rna_HookModifier_vgroup_set(PointerRNA *ptr, const char *value) 00337 { 00338 HookModifierData *lmd= (HookModifierData*)ptr->data; 00339 rna_object_vgroup_name_set(ptr, value, lmd->name, sizeof(lmd->name)); 00340 } 00341 00342 static void rna_MaskModifier_vgroup_set(PointerRNA *ptr, const char *value) 00343 { 00344 MaskModifierData *lmd= (MaskModifierData*)ptr->data; 00345 rna_object_vgroup_name_set(ptr, value, lmd->vgroup, sizeof(lmd->vgroup)); 00346 } 00347 00348 static void rna_MeshDeformModifier_vgroup_set(PointerRNA *ptr, const char *value) 00349 { 00350 MeshDeformModifierData *lmd= (MeshDeformModifierData*)ptr->data; 00351 rna_object_vgroup_name_set(ptr, value, lmd->defgrp_name, sizeof(lmd->defgrp_name)); 00352 } 00353 00354 static void rna_SmoothModifier_vgroup_set(PointerRNA *ptr, const char *value) 00355 { 00356 SmoothModifierData *lmd= (SmoothModifierData*)ptr->data; 00357 rna_object_vgroup_name_set(ptr, value, lmd->defgrp_name, sizeof(lmd->defgrp_name)); 00358 } 00359 00360 static void rna_WaveModifier_vgroup_set(PointerRNA *ptr, const char *value) 00361 { 00362 WaveModifierData *lmd= (WaveModifierData*)ptr->data; 00363 rna_object_vgroup_name_set(ptr, value, lmd->defgrp_name, sizeof(lmd->defgrp_name)); 00364 } 00365 00366 static void rna_CastModifier_vgroup_set(PointerRNA *ptr, const char *value) 00367 { 00368 CastModifierData *lmd= (CastModifierData*)ptr->data; 00369 rna_object_vgroup_name_set(ptr, value, lmd->defgrp_name, sizeof(lmd->defgrp_name)); 00370 } 00371 00372 static void rna_SolidifyModifier_vgroup_set(PointerRNA *ptr, const char *value) 00373 { 00374 SolidifyModifierData *smd= (SolidifyModifierData*)ptr->data; 00375 rna_object_vgroup_name_set(ptr, value, smd->defgrp_name, sizeof(smd->defgrp_name)); 00376 } 00377 00378 static void rna_MappingInfo_uvlayer_set(PointerRNA *ptr, const char *value) 00379 { 00380 MappingInfoModifierData *mmd= (MappingInfoModifierData *)ptr->data; 00381 rna_object_uvlayer_name_set(ptr, value, mmd->uvlayer_name, sizeof(mmd->uvlayer_name)); 00382 } 00383 00384 static void rna_UVProjectModifier_uvlayer_set(PointerRNA *ptr, const char *value) 00385 { 00386 UVProjectModifierData *umd= (UVProjectModifierData*)ptr->data; 00387 rna_object_uvlayer_name_set(ptr, value, umd->uvlayer_name, sizeof(umd->uvlayer_name)); 00388 } 00389 00390 static void RNA_WarpModifier_vgroup_set(PointerRNA *ptr, const char *value) 00391 { 00392 WarpModifierData *tmd= (WarpModifierData*)ptr->data; 00393 rna_object_vgroup_name_set(ptr, value, tmd->defgrp_name, sizeof(tmd->defgrp_name)); 00394 } 00395 00396 static void rna_WaveModifier_uvlayer_set(PointerRNA *ptr, const char *value) 00397 { 00398 WaveModifierData *wmd= (WaveModifierData*)ptr->data; 00399 rna_object_uvlayer_name_set(ptr, value, wmd->uvlayer_name, sizeof(wmd->uvlayer_name)); 00400 } 00401 00402 static void rna_MultiresModifier_level_range(PointerRNA *ptr, int *min, int *max) 00403 { 00404 MultiresModifierData *mmd = (MultiresModifierData*)ptr->data; 00405 00406 *min = 0; 00407 *max = mmd->totlvl; /* intentionally _not_ -1 */ 00408 *max= MAX2(0, *max); 00409 } 00410 00411 static int rna_MultiresModifier_external_get(PointerRNA *ptr) 00412 { 00413 Object *ob= (Object*)ptr->id.data; 00414 Mesh *me= ob->data; 00415 00416 return CustomData_external_test(&me->fdata, CD_MDISPS); 00417 } 00418 00419 static void rna_MultiresModifier_filepath_get(PointerRNA *ptr, char *value) 00420 { 00421 Object *ob= (Object*)ptr->id.data; 00422 CustomDataExternal *external= ((Mesh*)ob->data)->fdata.external; 00423 00424 BLI_strncpy(value, (external)? external->filename: "", sizeof(external->filename)); 00425 } 00426 00427 static void rna_MultiresModifier_filepath_set(PointerRNA *ptr, const char *value) 00428 { 00429 Object *ob= (Object*)ptr->id.data; 00430 CustomDataExternal *external= ((Mesh*)ob->data)->fdata.external; 00431 00432 if(external && strcmp(external->filename, value)) { 00433 BLI_strncpy(external->filename, value, sizeof(external->filename)); 00434 multires_force_external_reload(ob); 00435 } 00436 } 00437 00438 static int rna_MultiresModifier_filepath_length(PointerRNA *ptr) 00439 { 00440 Object *ob= (Object*)ptr->id.data; 00441 CustomDataExternal *external= ((Mesh*)ob->data)->fdata.external; 00442 00443 return strlen((external)? external->filename: ""); 00444 } 00445 00446 static void modifier_object_set(Object *self, Object **ob_p, int type, PointerRNA value) 00447 { 00448 Object *ob= value.data; 00449 00450 if(!self || ob != self) { 00451 if(!ob || type == OB_EMPTY || ob->type == type) { 00452 id_lib_extern((ID *)ob); 00453 *ob_p= ob; 00454 } 00455 } 00456 } 00457 00458 static void rna_LatticeModifier_object_set(PointerRNA *ptr, PointerRNA value) 00459 { 00460 modifier_object_set(ptr->id.data, &((LatticeModifierData*)ptr->data)->object, OB_LATTICE, value); 00461 } 00462 00463 static void rna_BooleanModifier_object_set(PointerRNA *ptr, PointerRNA value) 00464 { 00465 modifier_object_set(ptr->id.data, &((BooleanModifierData*)ptr->data)->object, OB_MESH, value); 00466 } 00467 00468 static void rna_CurveModifier_object_set(PointerRNA *ptr, PointerRNA value) 00469 { 00470 modifier_object_set(ptr->id.data, &((CurveModifierData*)ptr->data)->object, OB_CURVE, value); 00471 } 00472 00473 static void rna_CastModifier_object_set(PointerRNA *ptr, PointerRNA value) 00474 { 00475 modifier_object_set(ptr->id.data, &((CastModifierData*)ptr->data)->object, OB_EMPTY, value); 00476 } 00477 00478 static void rna_ArmatureModifier_object_set(PointerRNA *ptr, PointerRNA value) 00479 { 00480 modifier_object_set(ptr->id.data, &((ArmatureModifierData*)ptr->data)->object, OB_ARMATURE, value); 00481 } 00482 00483 static void rna_MaskModifier_armature_set(PointerRNA *ptr, PointerRNA value) 00484 { 00485 modifier_object_set(ptr->id.data, &((MaskModifierData*)ptr->data)->ob_arm, OB_ARMATURE, value); 00486 } 00487 00488 static void rna_ShrinkwrapModifier_auxiliary_target_set(PointerRNA *ptr, PointerRNA value) 00489 { 00490 modifier_object_set(ptr->id.data, &((ShrinkwrapModifierData*)ptr->data)->auxTarget, OB_MESH, value); 00491 } 00492 00493 static void rna_ShrinkwrapModifier_target_set(PointerRNA *ptr, PointerRNA value) 00494 { 00495 modifier_object_set(ptr->id.data, &((ShrinkwrapModifierData*)ptr->data)->target, OB_MESH, value); 00496 } 00497 00498 static int rna_ShrinkwrapModifier_face_cull_get(PointerRNA *ptr) 00499 { 00500 ShrinkwrapModifierData *swm= (ShrinkwrapModifierData*)ptr->data; 00501 return swm->shrinkOpts & (MOD_SHRINKWRAP_CULL_TARGET_FRONTFACE|MOD_SHRINKWRAP_CULL_TARGET_BACKFACE); 00502 } 00503 00504 static void rna_ShrinkwrapModifier_face_cull_set(struct PointerRNA *ptr, int value) 00505 { 00506 ShrinkwrapModifierData *swm= (ShrinkwrapModifierData*)ptr->data; 00507 00508 swm->shrinkOpts= (swm->shrinkOpts & ~(MOD_SHRINKWRAP_CULL_TARGET_FRONTFACE|MOD_SHRINKWRAP_CULL_TARGET_BACKFACE)) | value; 00509 } 00510 00511 static void rna_MeshDeformModifier_object_set(PointerRNA *ptr, PointerRNA value) 00512 { 00513 modifier_object_set(ptr->id.data, &((MeshDeformModifierData*)ptr->data)->object, OB_MESH, value); 00514 } 00515 00516 static void rna_ArrayModifier_end_cap_set(PointerRNA *ptr, PointerRNA value) 00517 { 00518 modifier_object_set(ptr->id.data, &((ArrayModifierData*)ptr->data)->end_cap, OB_MESH, value); 00519 } 00520 00521 static void rna_ArrayModifier_start_cap_set(PointerRNA *ptr, PointerRNA value) 00522 { 00523 modifier_object_set(ptr->id.data, &((ArrayModifierData*)ptr->data)->start_cap, OB_MESH, value); 00524 } 00525 00526 static void rna_ArrayModifier_curve_set(PointerRNA *ptr, PointerRNA value) 00527 { 00528 modifier_object_set(ptr->id.data, &((ArrayModifierData*)ptr->data)->curve_ob, OB_CURVE, value); 00529 } 00530 00531 static int rna_MeshDeformModifier_is_bound_get(PointerRNA *ptr) 00532 { 00533 return (((MeshDeformModifierData*)ptr->data)->bindcagecos != NULL); 00534 } 00535 00536 static PointerRNA rna_SoftBodyModifier_settings_get(PointerRNA *ptr) 00537 { 00538 Object *ob= (Object*)ptr->id.data; 00539 return rna_pointer_inherit_refine(ptr, &RNA_SoftBodySettings, ob->soft); 00540 } 00541 00542 static PointerRNA rna_SoftBodyModifier_point_cache_get(PointerRNA *ptr) 00543 { 00544 Object *ob= (Object*)ptr->id.data; 00545 return rna_pointer_inherit_refine(ptr, &RNA_PointCache, ob->soft->pointcache); 00546 } 00547 00548 static PointerRNA rna_CollisionModifier_settings_get(PointerRNA *ptr) 00549 { 00550 Object *ob= (Object*)ptr->id.data; 00551 return rna_pointer_inherit_refine(ptr, &RNA_CollisionSettings, ob->pd); 00552 } 00553 00554 static PointerRNA rna_UVProjector_object_get(PointerRNA *ptr) 00555 { 00556 Object **ob= (Object**)ptr->data; 00557 return rna_pointer_inherit_refine(ptr, &RNA_Object, *ob); 00558 } 00559 00560 static void rna_UVProjector_object_set(PointerRNA *ptr, PointerRNA value) 00561 { 00562 Object **ob= (Object**)ptr->data; 00563 00564 if(*ob) 00565 id_us_min((ID*)*ob); 00566 if(value.data) 00567 id_us_plus((ID*)value.data); 00568 00569 *ob= value.data; 00570 } 00571 00572 static void rna_UVProjectModifier_num_projectors_set(PointerRNA *ptr, int value) 00573 { 00574 UVProjectModifierData *md= (UVProjectModifierData*)ptr->data; 00575 int a; 00576 00577 md->num_projectors= CLAMPIS(value, 1, MOD_UVPROJECT_MAX); 00578 for(a=md->num_projectors; a<MOD_UVPROJECT_MAX; a++) 00579 md->projectors[a]= NULL; 00580 } 00581 00582 static float rna_EdgeSplitModifier_split_angle_get(PointerRNA *ptr) 00583 { 00584 EdgeSplitModifierData *md= (EdgeSplitModifierData*)ptr->data; 00585 return DEG2RADF(md->split_angle); 00586 } 00587 00588 static void rna_EdgeSplitModifier_split_angle_set(PointerRNA *ptr, float value) 00589 { 00590 EdgeSplitModifierData *md= (EdgeSplitModifierData*)ptr->data; 00591 value= RAD2DEGF(value); 00592 CLAMP(value, 0.0f, 180.0f); 00593 md->split_angle= (int)value; 00594 } 00595 00596 static float rna_BevelModifier_angle_limit_get(PointerRNA *ptr) 00597 { 00598 BevelModifierData *md= (BevelModifierData*)ptr->data; 00599 return DEG2RADF(md->bevel_angle); 00600 } 00601 00602 static void rna_BevelModifier_angle_limit_set(PointerRNA *ptr, float value) 00603 { 00604 BevelModifierData *md= (BevelModifierData*)ptr->data; 00605 value= RAD2DEGF(value); 00606 CLAMP(value, 0.0f, 180.0f); 00607 md->bevel_angle= (int)value; 00608 } 00609 00610 #else 00611 00612 static void rna_def_property_subdivision_common(StructRNA *srna, const char type[]) 00613 { 00614 static EnumPropertyItem prop_subdivision_type_items[] = { 00615 {0, "CATMULL_CLARK", 0, "Catmull-Clark", ""}, 00616 {1, "SIMPLE", 0, "Simple", ""}, 00617 {0, NULL, 0, NULL, NULL}}; 00618 00619 PropertyRNA *prop= RNA_def_property(srna, "subdivision_type", PROP_ENUM, PROP_NONE); 00620 RNA_def_property_enum_sdna(prop, NULL, type); 00621 RNA_def_property_enum_items(prop, prop_subdivision_type_items); 00622 RNA_def_property_ui_text(prop, "Subdivision Type", "Selects type of subdivision algorithm"); 00623 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 00624 } 00625 00626 static void rna_def_modifier_subsurf(BlenderRNA *brna) 00627 { 00628 StructRNA *srna; 00629 PropertyRNA *prop; 00630 00631 srna= RNA_def_struct(brna, "SubsurfModifier", "Modifier"); 00632 RNA_def_struct_ui_text(srna, "Subsurf Modifier", "Subdivision surface modifier"); 00633 RNA_def_struct_sdna(srna, "SubsurfModifierData"); 00634 RNA_def_struct_ui_icon(srna, ICON_MOD_SUBSURF); 00635 00636 rna_def_property_subdivision_common(srna, "subdivType"); 00637 00638 prop= RNA_def_property(srna, "levels", PROP_INT, PROP_UNSIGNED); 00639 RNA_def_property_int_sdna(prop, NULL, "levels"); 00640 RNA_def_property_ui_range(prop, 0, 6, 1, 0); 00641 RNA_def_property_ui_text(prop, "Levels", "Number of subdivisions to perform"); 00642 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 00643 00644 prop= RNA_def_property(srna, "render_levels", PROP_INT, PROP_UNSIGNED); 00645 RNA_def_property_int_sdna(prop, NULL, "renderLevels"); 00646 RNA_def_property_ui_range(prop, 0, 6, 1, 0); 00647 RNA_def_property_ui_text(prop, "Render Levels", "Number of subdivisions to perform when rendering"); 00648 00649 prop= RNA_def_property(srna, "show_only_control_edges", PROP_BOOLEAN, PROP_NONE); 00650 RNA_def_property_boolean_sdna(prop, NULL, "flags", eSubsurfModifierFlag_ControlEdges); 00651 RNA_def_property_ui_text(prop, "Optimal Display", "Skip drawing/rendering of interior subdivided edges"); 00652 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 00653 00654 prop= RNA_def_property(srna, "use_subsurf_uv", PROP_BOOLEAN, PROP_NONE); 00655 RNA_def_property_boolean_sdna(prop, NULL, "flags", eSubsurfModifierFlag_SubsurfUv); 00656 RNA_def_property_ui_text(prop, "Subdivide UVs", "Use subsurf to subdivide UVs"); 00657 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 00658 } 00659 00660 static void rna_def_modifier_generic_map_info(StructRNA *srna) 00661 { 00662 static EnumPropertyItem prop_texture_coordinates_items[] = { 00663 {MOD_DISP_MAP_LOCAL, "LOCAL", 0, "Map", "Uses the local coordinate system for the texture coordinates"}, 00664 {MOD_DISP_MAP_GLOBAL, "GLOBAL", 0, "Global", "Uses the global coordinate system for the texture coordinates"}, 00665 {MOD_DISP_MAP_OBJECT, "OBJECT", 0, "Object", "Uses the linked object's local coordinate system for the texture coordinates"}, 00666 {MOD_DISP_MAP_UV, "UV", 0, "UV", "Uses UV coordinates for the texture coordinates"}, 00667 {0, NULL, 0, NULL, NULL}}; 00668 00669 PropertyRNA *prop; 00670 00671 prop= RNA_def_property(srna, "texture", PROP_POINTER, PROP_NONE); 00672 RNA_def_property_ui_text(prop, "Texture", ""); 00673 RNA_def_property_flag(prop, PROP_EDITABLE); 00674 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 00675 00676 prop= RNA_def_property(srna, "texture_coords", PROP_ENUM, PROP_NONE); 00677 RNA_def_property_enum_sdna(prop, NULL, "texmapping"); 00678 RNA_def_property_enum_items(prop, prop_texture_coordinates_items); 00679 RNA_def_property_ui_text(prop, "Texture Coordinates", ""); 00680 RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update"); 00681 00682 prop= RNA_def_property(srna, "uv_layer", PROP_STRING, PROP_NONE); 00683 RNA_def_property_string_sdna(prop, NULL, "uvlayer_name"); 00684 RNA_def_property_ui_text(prop, "UV Layer", "UV layer name"); 00685 RNA_def_property_string_funcs(prop, NULL, NULL, "rna_MappingInfo_uvlayer_set"); 00686 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 00687 00688 prop= RNA_def_property(srna, "texture_coords_object", PROP_POINTER, PROP_NONE); 00689 RNA_def_property_pointer_sdna(prop, NULL, "map_object"); 00690 RNA_def_property_ui_text(prop, "Texture Coordinate Object", "Object to set the texture coordinates"); 00691 RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK); 00692 RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update"); 00693 } 00694 00695 static void rna_def_modifier_warp(BlenderRNA *brna) 00696 { 00697 StructRNA *srna; 00698 PropertyRNA *prop; 00699 00700 static EnumPropertyItem prop_falloff_items[] = { 00701 {eWarp_Falloff_None, "NONE", 0, "No Falloff", ""}, 00702 {eWarp_Falloff_Curve, "CURVE", 0, "Curve", ""}, 00703 {eWarp_Falloff_Smooth, "SMOOTH", ICON_SMOOTHCURVE, "Smooth", ""}, 00704 {eWarp_Falloff_Sphere, "SPHERE", ICON_SPHERECURVE, "Sphere", ""}, 00705 {eWarp_Falloff_Root, "ROOT", ICON_ROOTCURVE, "Root", ""}, 00706 {eWarp_Falloff_Sharp, "SHARP", ICON_SHARPCURVE, "Sharp", ""}, 00707 {eWarp_Falloff_Linear, "LINEAR", ICON_LINCURVE, "Linear", ""}, 00708 {eWarp_Falloff_Const, "CONSTANT", ICON_NOCURVE, "Constant", ""}, 00709 {0, NULL, 0, NULL, NULL}}; 00710 00711 srna= RNA_def_struct(brna, "WarpModifier", "Modifier"); 00712 RNA_def_struct_ui_text(srna, "Warp Modifier", "Warp modifier"); 00713 RNA_def_struct_sdna(srna, "WarpModifierData"); 00714 //RNA_def_struct_ui_icon(srna, ICON_MOD_SUBSURF); 00715 00716 prop= RNA_def_property(srna, "object_from", PROP_POINTER, PROP_NONE); 00717 RNA_def_property_ui_text(prop, "From", "Object to transform from"); 00718 RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK); 00719 RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update"); 00720 00721 prop= RNA_def_property(srna, "object_to", PROP_POINTER, PROP_NONE); 00722 RNA_def_property_ui_text(prop, "To", "Object to transform to"); 00723 RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK); 00724 RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update"); 00725 00726 prop= RNA_def_property(srna, "strength", PROP_FLOAT, PROP_NONE); 00727 RNA_def_property_range(prop, -FLT_MAX, FLT_MAX); 00728 RNA_def_property_ui_range(prop, -100, 100, 10, 2); 00729 RNA_def_property_ui_text(prop, "Strength", ""); 00730 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 00731 00732 prop= RNA_def_property(srna, "falloff_type", PROP_ENUM, PROP_NONE); 00733 RNA_def_property_enum_items(prop, prop_falloff_items); 00734 RNA_def_property_ui_text(prop, "Falloff Type", ""); 00735 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 00736 00737 prop= RNA_def_property(srna, "falloff_radius", PROP_FLOAT, PROP_UNSIGNED); 00738 RNA_def_property_ui_text(prop, "Radius", "Radius to apply"); 00739 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 00740 00741 prop= RNA_def_property(srna, "falloff_curve", PROP_POINTER, PROP_NONE); 00742 RNA_def_property_pointer_sdna(prop, NULL, "curfalloff"); 00743 RNA_def_property_ui_text(prop, "Falloff Curve", "Custom Lamp Falloff Curve"); 00744 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 00745 00746 prop= RNA_def_property(srna, "use_volume_preserve", PROP_BOOLEAN, PROP_NONE); 00747 RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_WARP_VOLUME_PRESERVE); 00748 RNA_def_property_ui_text(prop, "Preserve Volume", "Preserve volume when rotations are used"); 00749 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 00750 00751 prop= RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE); 00752 RNA_def_property_string_sdna(prop, NULL, "defgrp_name"); 00753 RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name for modulating the deform"); 00754 RNA_def_property_string_funcs(prop, NULL, NULL, "RNA_WarpModifier_vgroup_set"); 00755 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 00756 00757 rna_def_modifier_generic_map_info(srna); 00758 } 00759 00760 static void rna_def_modifier_multires(BlenderRNA *brna) 00761 { 00762 StructRNA *srna; 00763 PropertyRNA *prop; 00764 00765 srna= RNA_def_struct(brna, "MultiresModifier", "Modifier"); 00766 RNA_def_struct_ui_text(srna, "Multires Modifier", "Multiresolution mesh modifier"); 00767 RNA_def_struct_sdna(srna, "MultiresModifierData"); 00768 RNA_def_struct_ui_icon(srna, ICON_MOD_MULTIRES); 00769 00770 rna_def_property_subdivision_common(srna, "simple"); 00771 00772 prop= RNA_def_property(srna, "levels", PROP_INT, PROP_UNSIGNED); 00773 RNA_def_property_int_sdna(prop, NULL, "lvl"); 00774 RNA_def_property_ui_text(prop, "Levels", "Number of subdivisions to use in the viewport"); 00775 RNA_def_property_int_funcs(prop, NULL, NULL, "rna_MultiresModifier_level_range"); 00776 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 00777 00778 prop= RNA_def_property(srna, "sculpt_levels", PROP_INT, PROP_UNSIGNED); 00779 RNA_def_property_int_sdna(prop, NULL, "sculptlvl"); 00780 RNA_def_property_ui_text(prop, "Sculpt Levels", "Number of subdivisions to use in sculpt mode"); 00781 RNA_def_property_int_funcs(prop, NULL, NULL, "rna_MultiresModifier_level_range"); 00782 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 00783 00784 prop= RNA_def_property(srna, "render_levels", PROP_INT, PROP_UNSIGNED); 00785 RNA_def_property_int_sdna(prop, NULL, "renderlvl"); 00786 RNA_def_property_ui_text(prop, "Render Levels", "The subdivision level visible at render time"); 00787 RNA_def_property_int_funcs(prop, NULL, NULL, "rna_MultiresModifier_level_range"); 00788 00789 prop= RNA_def_property(srna, "total_levels", PROP_INT, PROP_UNSIGNED); 00790 RNA_def_property_int_sdna(prop, NULL, "totlvl"); 00791 RNA_def_property_clear_flag(prop, PROP_EDITABLE); 00792 RNA_def_property_ui_text(prop, "Total Levels", "Number of subdivisions for which displacements are stored"); 00793 00794 prop= RNA_def_property(srna, "is_external", PROP_BOOLEAN, PROP_NONE); 00795 RNA_def_property_clear_flag(prop, PROP_EDITABLE); 00796 RNA_def_property_boolean_funcs(prop, "rna_MultiresModifier_external_get", NULL); 00797 RNA_def_property_ui_text(prop, "External", "Store multires displacements outside the .blend file, to save memory"); 00798 00799 prop= RNA_def_property(srna, "filepath", PROP_STRING, PROP_FILEPATH); 00800 RNA_def_property_string_funcs(prop, "rna_MultiresModifier_filepath_get", "rna_MultiresModifier_filepath_length", "rna_MultiresModifier_filepath_set"); 00801 RNA_def_property_ui_text(prop, "File Path", "Path to external displacements file"); 00802 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 00803 00804 prop= RNA_def_property(srna, "show_only_control_edges", PROP_BOOLEAN, PROP_NONE); 00805 RNA_def_property_boolean_sdna(prop, NULL, "flags", eMultiresModifierFlag_ControlEdges); 00806 RNA_def_property_ui_text(prop, "Optimal Display", "Skip drawing/rendering of interior subdivided edges"); 00807 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 00808 00809 prop= RNA_def_property(srna, "use_subsurf_uv", PROP_BOOLEAN, PROP_NONE); 00810 RNA_def_property_boolean_negative_sdna(prop, NULL, "flags", eMultiresModifierFlag_PlainUv); 00811 RNA_def_property_ui_text(prop, "Subdivide UVs", "Use subsurf to subdivide UVs"); 00812 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 00813 } 00814 00815 static void rna_def_modifier_lattice(BlenderRNA *brna) 00816 { 00817 StructRNA *srna; 00818 PropertyRNA *prop; 00819 00820 srna= RNA_def_struct(brna, "LatticeModifier", "Modifier"); 00821 RNA_def_struct_ui_text(srna, "Lattice Modifier", "Lattice deformation modifier"); 00822 RNA_def_struct_sdna(srna, "LatticeModifierData"); 00823 RNA_def_struct_ui_icon(srna, ICON_MOD_LATTICE); 00824 00825 prop= RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE); 00826 RNA_def_property_ui_text(prop, "Object", "Lattice object to deform with"); 00827 RNA_def_property_pointer_funcs(prop, NULL, "rna_LatticeModifier_object_set", NULL, "rna_Lattice_object_poll"); 00828 RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK); 00829 RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update"); 00830 00831 prop= RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE); 00832 RNA_def_property_string_sdna(prop, NULL, "name"); 00833 RNA_def_property_ui_text(prop, "Vertex Group", "Name of Vertex Group which determines influence of modifier per point"); 00834 RNA_def_property_string_funcs(prop, NULL, NULL, "rna_LatticeModifier_vgroup_set"); 00835 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 00836 } 00837 00838 static void rna_def_modifier_curve(BlenderRNA *brna) 00839 { 00840 StructRNA *srna; 00841 PropertyRNA *prop; 00842 00843 static EnumPropertyItem prop_deform_axis_items[] = { 00844 {MOD_CURVE_POSX, "POS_X", 0, "X", ""}, 00845 {MOD_CURVE_POSY, "POS_Y", 0, "Y", ""}, 00846 {MOD_CURVE_POSZ, "POS_Z", 0, "Z", ""}, 00847 {MOD_CURVE_NEGX, "NEG_X", 0, "-X", ""}, 00848 {MOD_CURVE_NEGY, "NEG_Y", 0, "-Y", ""}, 00849 {MOD_CURVE_NEGZ, "NEG_Z", 0, "-Z", ""}, 00850 {0, NULL, 0, NULL, NULL}}; 00851 00852 srna= RNA_def_struct(brna, "CurveModifier", "Modifier"); 00853 RNA_def_struct_ui_text(srna, "Curve Modifier", "Curve deformation modifier"); 00854 RNA_def_struct_sdna(srna, "CurveModifierData"); 00855 RNA_def_struct_ui_icon(srna, ICON_MOD_CURVE); 00856 00857 prop= RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE); 00858 RNA_def_property_ui_text(prop, "Object", "Curve object to deform with"); 00859 RNA_def_property_pointer_funcs(prop, NULL, "rna_CurveModifier_object_set", NULL, "rna_Curve_object_poll"); 00860 RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK); 00861 RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update"); 00862 00863 prop= RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE); 00864 RNA_def_property_string_sdna(prop, NULL, "name"); 00865 RNA_def_property_ui_text(prop, "Vertex Group", "Name of Vertex Group which determines influence of modifier per point"); 00866 RNA_def_property_string_funcs(prop, NULL, NULL, "rna_CurveModifier_vgroup_set"); 00867 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 00868 00869 prop= RNA_def_property(srna, "deform_axis", PROP_ENUM, PROP_NONE); 00870 RNA_def_property_enum_sdna(prop, NULL, "defaxis"); 00871 RNA_def_property_enum_items(prop, prop_deform_axis_items); 00872 RNA_def_property_ui_text(prop, "Deform Axis", "The axis that the curve deforms along"); 00873 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 00874 } 00875 00876 static void rna_def_modifier_build(BlenderRNA *brna) 00877 { 00878 StructRNA *srna; 00879 PropertyRNA *prop; 00880 00881 srna= RNA_def_struct(brna, "BuildModifier", "Modifier"); 00882 RNA_def_struct_ui_text(srna, "Build Modifier", "Build effect modifier"); 00883 RNA_def_struct_sdna(srna, "BuildModifierData"); 00884 RNA_def_struct_ui_icon(srna, ICON_MOD_BUILD); 00885 00886 prop= RNA_def_property(srna, "frame_start", PROP_FLOAT, PROP_TIME); 00887 RNA_def_property_float_sdna(prop, NULL, "start"); 00888 RNA_def_property_range(prop, MINAFRAMEF, MAXFRAMEF); 00889 RNA_def_property_ui_text(prop, "Start", "Specify the start frame of the effect"); 00890 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 00891 00892 prop= RNA_def_property(srna, "frame_duration", PROP_FLOAT, PROP_TIME); 00893 RNA_def_property_float_sdna(prop, NULL, "length"); 00894 RNA_def_property_range(prop, 1, MAXFRAMEF); 00895 RNA_def_property_ui_text(prop, "Length", "Specify the total time the build effect requires"); 00896 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 00897 00898 prop= RNA_def_property(srna, "use_random_order", PROP_BOOLEAN, PROP_NONE); 00899 RNA_def_property_boolean_sdna(prop, NULL, "randomize", 1); 00900 RNA_def_property_ui_text(prop, "Randomize", "Randomize the faces or edges during build"); 00901 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 00902 00903 prop= RNA_def_property(srna, "seed", PROP_INT, PROP_NONE); 00904 RNA_def_property_range(prop, 1, MAXFRAMEF); 00905 RNA_def_property_ui_text(prop, "Seed", "Specify the seed for random if used"); 00906 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 00907 } 00908 00909 static void rna_def_modifier_mirror(BlenderRNA *brna) 00910 { 00911 StructRNA *srna; 00912 PropertyRNA *prop; 00913 00914 srna= RNA_def_struct(brna, "MirrorModifier", "Modifier"); 00915 RNA_def_struct_ui_text(srna, "Mirror Modifier", "Mirroring modifier"); 00916 RNA_def_struct_sdna(srna, "MirrorModifierData"); 00917 RNA_def_struct_ui_icon(srna, ICON_MOD_MIRROR); 00918 00919 prop= RNA_def_property(srna, "use_x", PROP_BOOLEAN, PROP_NONE); 00920 RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_MIR_AXIS_X); 00921 RNA_def_property_ui_text(prop, "X", "Enable X axis mirror"); 00922 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 00923 00924 prop= RNA_def_property(srna, "use_y", PROP_BOOLEAN, PROP_NONE); 00925 RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_MIR_AXIS_Y); 00926 RNA_def_property_ui_text(prop, "Y", "Enable Y axis mirror"); 00927 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 00928 00929 prop= RNA_def_property(srna, "use_z", PROP_BOOLEAN, PROP_NONE); 00930 RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_MIR_AXIS_Z); 00931 RNA_def_property_ui_text(prop, "Z", "Enable Z axis mirror"); 00932 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 00933 00934 prop= RNA_def_property(srna, "use_clip", PROP_BOOLEAN, PROP_NONE); 00935 RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_MIR_CLIPPING); 00936 RNA_def_property_ui_text(prop, "Clip", "Prevents vertices from going through the mirror during transform"); 00937 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 00938 00939 prop= RNA_def_property(srna, "use_mirror_vertex_groups", PROP_BOOLEAN, PROP_NONE); 00940 RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_MIR_VGROUP); 00941 RNA_def_property_ui_text(prop, "Mirror Vertex Groups", "Mirror vertex groups (e.g. .R->.L)"); 00942 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 00943 00944 prop= RNA_def_property(srna, "use_mirror_merge", PROP_BOOLEAN, PROP_NONE); 00945 RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", MOD_MIR_NO_MERGE); 00946 RNA_def_property_ui_text(prop, "Merge Vertices", "Merge vertices within the merge threshold"); 00947 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 00948 00949 prop= RNA_def_property(srna, "use_mirror_u", PROP_BOOLEAN, PROP_NONE); 00950 RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_MIR_MIRROR_U); 00951 RNA_def_property_ui_text(prop, "Mirror U", "Mirror the U texture coordinate around the 0.5 point"); 00952 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 00953 00954 prop= RNA_def_property(srna, "use_mirror_v", PROP_BOOLEAN, PROP_NONE); 00955 RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_MIR_MIRROR_V); 00956 RNA_def_property_ui_text(prop, "Mirror V", "Mirror the V texture coordinate around the 0.5 point"); 00957 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 00958 00959 prop= RNA_def_property(srna, "merge_threshold", PROP_FLOAT, PROP_DISTANCE); 00960 RNA_def_property_float_sdna(prop, NULL, "tolerance"); 00961 RNA_def_property_range(prop, 0, FLT_MAX); 00962 RNA_def_property_ui_range(prop, 0, 1, 0.01, 6); 00963 RNA_def_property_ui_text(prop, "Merge Limit", "Distance from axis within which mirrored vertices are merged"); 00964 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 00965 00966 prop= RNA_def_property(srna, "mirror_object", PROP_POINTER, PROP_NONE); 00967 RNA_def_property_pointer_sdna(prop, NULL, "mirror_ob"); 00968 RNA_def_property_ui_text(prop, "Mirror Object", "Object to use as mirror"); 00969 RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK); 00970 RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update"); 00971 } 00972 00973 static void rna_def_modifier_decimate(BlenderRNA *brna) 00974 { 00975 StructRNA *srna; 00976 PropertyRNA *prop; 00977 00978 srna= RNA_def_struct(brna, "DecimateModifier", "Modifier"); 00979 RNA_def_struct_ui_text(srna, "Decimate Modifier", "Decimation modifier"); 00980 RNA_def_struct_sdna(srna, "DecimateModifierData"); 00981 RNA_def_struct_ui_icon(srna, ICON_MOD_DECIM); 00982 00983 prop= RNA_def_property(srna, "ratio", PROP_FLOAT, PROP_NONE); 00984 RNA_def_property_float_sdna(prop, NULL, "percent"); 00985 RNA_def_property_range(prop, 0, 1); 00986 RNA_def_property_ui_range(prop, 0, 1, 1, 2); 00987 RNA_def_property_ui_text(prop, "Ratio", "Defines the ratio of triangles to reduce to"); 00988 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 00989 00990 prop= RNA_def_property(srna, "face_count", PROP_INT, PROP_NONE); 00991 RNA_def_property_int_sdna(prop, NULL, "faceCount"); 00992 RNA_def_property_clear_flag(prop, PROP_EDITABLE); 00993 RNA_def_property_ui_text(prop, "Face Count", "The current number of faces in the decimated mesh"); 00994 } 00995 00996 static void rna_def_modifier_wave(BlenderRNA *brna) 00997 { 00998 StructRNA *srna; 00999 PropertyRNA *prop; 01000 01001 static EnumPropertyItem prop_texture_coordinates_items[] = { 01002 {MOD_WAV_MAP_LOCAL, "LOCAL", 0, "Local", ""}, 01003 {MOD_WAV_MAP_GLOBAL, "GLOBAL", 0, "Global", ""}, 01004 {MOD_WAV_MAP_OBJECT, "OBJECT", 0, "Object", ""}, 01005 {MOD_WAV_MAP_UV, "MAP_UV", 0, "UV", ""}, 01006 {0, NULL, 0, NULL, NULL}}; 01007 01008 srna= RNA_def_struct(brna, "WaveModifier", "Modifier"); 01009 RNA_def_struct_ui_text(srna, "Wave Modifier", "Wave effect modifier"); 01010 RNA_def_struct_sdna(srna, "WaveModifierData"); 01011 RNA_def_struct_ui_icon(srna, ICON_MOD_WAVE); 01012 01013 prop= RNA_def_property(srna, "use_x", PROP_BOOLEAN, PROP_NONE); 01014 RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_WAVE_X); 01015 RNA_def_property_ui_text(prop, "X", "X axis motion"); 01016 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01017 01018 prop= RNA_def_property(srna, "use_y", PROP_BOOLEAN, PROP_NONE); 01019 RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_WAVE_Y); 01020 RNA_def_property_ui_text(prop, "Y", "Y axis motion"); 01021 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01022 01023 prop= RNA_def_property(srna, "use_cyclic", PROP_BOOLEAN, PROP_NONE); 01024 RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_WAVE_CYCL); 01025 RNA_def_property_ui_text(prop, "Cyclic", "Cyclic wave effect"); 01026 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01027 01028 prop= RNA_def_property(srna, "use_normal", PROP_BOOLEAN, PROP_NONE); 01029 RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_WAVE_NORM); 01030 RNA_def_property_ui_text(prop, "Normals", "Displace along normals"); 01031 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01032 01033 prop= RNA_def_property(srna, "use_normal_x", PROP_BOOLEAN, PROP_NONE); 01034 RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_WAVE_NORM_X); 01035 RNA_def_property_ui_text(prop, "X Normal", "Enable displacement along the X normal"); 01036 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01037 01038 prop= RNA_def_property(srna, "use_normal_y", PROP_BOOLEAN, PROP_NONE); 01039 RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_WAVE_NORM_Y); 01040 RNA_def_property_ui_text(prop, "Y Normal", "Enable displacement along the Y normal"); 01041 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01042 01043 prop= RNA_def_property(srna, "use_normal_z", PROP_BOOLEAN, PROP_NONE); 01044 RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_WAVE_NORM_Z); 01045 RNA_def_property_ui_text(prop, "Z Normal", "Enable displacement along the Z normal"); 01046 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01047 01048 prop= RNA_def_property(srna, "time_offset", PROP_FLOAT, PROP_NONE); 01049 RNA_def_property_float_sdna(prop, NULL, "timeoffs"); 01050 RNA_def_property_range(prop, MINAFRAMEF, MAXFRAMEF); 01051 RNA_def_property_ui_text(prop, "Time Offset", "Either the starting frame (for positive speed) or ending frame (for negative speed.)"); 01052 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01053 01054 prop= RNA_def_property(srna, "lifetime", PROP_FLOAT, PROP_TIME); 01055 RNA_def_property_float_sdna(prop, NULL, "lifetime"); 01056 RNA_def_property_range(prop, MINAFRAMEF, MAXFRAMEF); 01057 RNA_def_property_ui_text(prop, "Lifetime", "Lifetime of the wave in frames, zero means infinite"); 01058 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01059 01060 prop= RNA_def_property(srna, "damping_time", PROP_FLOAT, PROP_TIME); 01061 RNA_def_property_float_sdna(prop, NULL, "damp"); 01062 RNA_def_property_range(prop, MINAFRAMEF, MAXFRAMEF); 01063 RNA_def_property_ui_text(prop, "Damping Time", "Number of frames in which the waves damps out after it dies"); 01064 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01065 01066 prop= RNA_def_property(srna, "falloff_radius", PROP_FLOAT, PROP_DISTANCE); 01067 RNA_def_property_float_sdna(prop, NULL, "falloff"); 01068 RNA_def_property_range(prop, 0, FLT_MAX); 01069 RNA_def_property_ui_range(prop, 0, 100, 100, 2); 01070 RNA_def_property_ui_text(prop, "Falloff Radius", "Distance after which it fades out"); 01071 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01072 01073 prop= RNA_def_property(srna, "start_position_x", PROP_FLOAT, PROP_DISTANCE); 01074 RNA_def_property_float_sdna(prop, NULL, "startx"); 01075 RNA_def_property_range(prop, -FLT_MAX, FLT_MAX); 01076 RNA_def_property_ui_range(prop, -100, 100, 100, 2); 01077 RNA_def_property_ui_text(prop, "Start Position X", "X coordinate of the start position"); 01078 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01079 01080 prop= RNA_def_property(srna, "start_position_y", PROP_FLOAT, PROP_DISTANCE); 01081 RNA_def_property_float_sdna(prop, NULL, "starty"); 01082 RNA_def_property_range(prop, -FLT_MAX, FLT_MAX); 01083 RNA_def_property_ui_range(prop, -100, 100, 100, 2); 01084 RNA_def_property_ui_text(prop, "Start Position Y", "Z coordinate of the start position"); 01085 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01086 01087 prop= RNA_def_property(srna, "start_position_object", PROP_POINTER, PROP_NONE); 01088 RNA_def_property_pointer_sdna(prop, NULL, "objectcenter"); 01089 RNA_def_property_ui_text(prop, "Start Position Object", "Object which defines the wave center"); 01090 RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK); 01091 RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update"); 01092 01093 prop= RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE); 01094 RNA_def_property_string_sdna(prop, NULL, "defgrp_name"); 01095 RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name for modulating the wave"); 01096 RNA_def_property_string_funcs(prop, NULL, NULL, "rna_WaveModifier_vgroup_set"); 01097 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01098 01099 prop= RNA_def_property(srna, "texture", PROP_POINTER, PROP_NONE); 01100 RNA_def_property_ui_text(prop, "Texture", "Texture for modulating the wave"); 01101 RNA_def_property_flag(prop, PROP_EDITABLE); 01102 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01103 01104 prop= RNA_def_property(srna, "texture_coords", PROP_ENUM, PROP_NONE); 01105 RNA_def_property_enum_sdna(prop, NULL, "texmapping"); 01106 RNA_def_property_enum_items(prop, prop_texture_coordinates_items); 01107 RNA_def_property_ui_text(prop, "Texture Coordinates", "Texture coordinates used for modulating input"); 01108 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01109 01110 prop= RNA_def_property(srna, "uv_layer", PROP_STRING, PROP_NONE); 01111 RNA_def_property_string_sdna(prop, NULL, "uvlayer_name"); 01112 RNA_def_property_ui_text(prop, "UV Layer", "UV layer name"); 01113 RNA_def_property_string_funcs(prop, NULL, NULL, "rna_WaveModifier_uvlayer_set"); 01114 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01115 01116 prop= RNA_def_property(srna, "texture_coords_object", PROP_POINTER, PROP_NONE); 01117 RNA_def_property_pointer_sdna(prop, NULL, "map_object"); 01118 RNA_def_property_ui_text(prop, "Texture Coordinates Object", ""); 01119 RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK); 01120 RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update"); 01121 01122 prop= RNA_def_property(srna, "speed", PROP_FLOAT, PROP_NONE); 01123 RNA_def_property_range(prop, -FLT_MAX, FLT_MAX); 01124 RNA_def_property_ui_range(prop, -1, 1, 10, 2); 01125 RNA_def_property_ui_text(prop, "Speed", "Speed of the wave, towards the starting point when negative"); 01126 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01127 01128 prop= RNA_def_property(srna, "height", PROP_FLOAT, PROP_DISTANCE); 01129 RNA_def_property_range(prop, -FLT_MAX, FLT_MAX); 01130 RNA_def_property_ui_range(prop, -2, 2, 10, 2); 01131 RNA_def_property_ui_text(prop, "Height", "Height of the wave"); 01132 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01133 01134 prop= RNA_def_property(srna, "width", PROP_FLOAT, PROP_DISTANCE); 01135 RNA_def_property_range(prop, 0, FLT_MAX); 01136 RNA_def_property_ui_range(prop, 0, 5, 10, 2); 01137 RNA_def_property_ui_text(prop, "Width", "Distance between the waves"); 01138 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01139 01140 prop= RNA_def_property(srna, "narrowness", PROP_FLOAT, PROP_DISTANCE); 01141 RNA_def_property_float_sdna(prop, NULL, "narrow"); 01142 RNA_def_property_range(prop, 0, FLT_MAX); 01143 RNA_def_property_ui_range(prop, 0, 10, 10, 2); 01144 RNA_def_property_ui_text(prop, "Narrowness", "Distance between the top and the base of a wave, the higher the value, the more narrow the wave"); 01145 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01146 } 01147 01148 static void rna_def_modifier_armature(BlenderRNA *brna) 01149 { 01150 StructRNA *srna; 01151 PropertyRNA *prop; 01152 01153 srna= RNA_def_struct(brna, "ArmatureModifier", "Modifier"); 01154 RNA_def_struct_ui_text(srna, "Armature Modifier", "Armature deformation modifier"); 01155 RNA_def_struct_sdna(srna, "ArmatureModifierData"); 01156 RNA_def_struct_ui_icon(srna, ICON_MOD_ARMATURE); 01157 01158 prop= RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE); 01159 RNA_def_property_ui_text(prop, "Object", "Armature object to deform with"); 01160 RNA_def_property_pointer_funcs(prop, NULL, "rna_ArmatureModifier_object_set", NULL, "rna_Armature_object_poll"); 01161 RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK); 01162 RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update"); 01163 01164 prop= RNA_def_property(srna, "use_bone_envelopes", PROP_BOOLEAN, PROP_NONE); 01165 RNA_def_property_boolean_sdna(prop, NULL, "deformflag", ARM_DEF_ENVELOPE); 01166 RNA_def_property_ui_text(prop, "Use Bone Envelopes", "Binds Bone envelope to armature modifier"); 01167 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01168 01169 prop= RNA_def_property(srna, "use_vertex_groups", PROP_BOOLEAN, PROP_NONE); 01170 RNA_def_property_boolean_sdna(prop, NULL, "deformflag", ARM_DEF_VGROUP); 01171 RNA_def_property_ui_text(prop, "Use Vertex Groups", "Binds vertex group to armature modifier"); 01172 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01173 01174 prop= RNA_def_property(srna, "use_deform_preserve_volume", PROP_BOOLEAN, PROP_NONE); 01175 RNA_def_property_boolean_sdna(prop, NULL, "deformflag", ARM_DEF_QUATERNION); 01176 RNA_def_property_ui_text(prop, "Preserve Volume", "Deform rotation interpolation with quaternions"); 01177 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01178 01179 prop= RNA_def_property(srna, "use_multi_modifier", PROP_BOOLEAN, PROP_NONE); 01180 RNA_def_property_boolean_sdna(prop, NULL, "multi", 0); 01181 RNA_def_property_ui_text(prop, "Multi Modifier", "Use same input as previous modifier, and mix results using overall vgroup"); 01182 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01183 01184 prop= RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE); 01185 RNA_def_property_string_sdna(prop, NULL, "defgrp_name"); 01186 RNA_def_property_ui_text(prop, "Vertex Group", "Name of Vertex Group which determines influence of modifier per point"); 01187 RNA_def_property_string_funcs(prop, NULL, NULL, "rna_ArmatureModifier_vgroup_set"); 01188 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01189 01190 prop= RNA_def_property(srna, "invert_vertex_group", PROP_BOOLEAN, PROP_NONE); 01191 RNA_def_property_boolean_sdna(prop, NULL, "deformflag", ARM_DEF_INVERT_VGROUP); 01192 RNA_def_property_ui_text(prop, "Invert", "Invert vertex group influence"); 01193 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01194 } 01195 01196 static void rna_def_modifier_hook(BlenderRNA *brna) 01197 { 01198 StructRNA *srna; 01199 PropertyRNA *prop; 01200 01201 srna= RNA_def_struct(brna, "HookModifier", "Modifier"); 01202 RNA_def_struct_ui_text(srna, "Hook Modifier", "Hook modifier to modify the location of vertices"); 01203 RNA_def_struct_sdna(srna, "HookModifierData"); 01204 RNA_def_struct_ui_icon(srna, ICON_HOOK); 01205 01206 prop= RNA_def_property(srna, "falloff", PROP_FLOAT, PROP_DISTANCE); 01207 RNA_def_property_range(prop, 0, FLT_MAX); 01208 RNA_def_property_ui_range(prop, 0, 100, 100, 2); 01209 RNA_def_property_ui_text(prop, "Falloff", "If not zero, the distance from the hook where influence ends"); 01210 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01211 01212 prop= RNA_def_property(srna, "force", PROP_FLOAT, PROP_NONE); 01213 RNA_def_property_range(prop, 0, 1); 01214 RNA_def_property_ui_text(prop, "Force", "Relative force of the hook"); 01215 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01216 01217 prop= RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE); 01218 RNA_def_property_ui_text(prop, "Object", "Parent Object for hook, also recalculates and clears offset"); 01219 RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK); 01220 RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update"); 01221 01222 prop= RNA_def_property(srna, "subtarget", PROP_STRING, PROP_NONE); 01223 RNA_def_property_string_sdna(prop, NULL, "subtarget"); 01224 RNA_def_property_ui_text(prop, "Sub-Target", "Name of Parent Bone for hook (if applicable), also recalculates and clears offset"); 01225 RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update"); 01226 01227 prop= RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE); 01228 RNA_def_property_string_sdna(prop, NULL, "name"); 01229 RNA_def_property_ui_text(prop, "Vertex Group", "Name of Vertex Group which determines influence of modifier per point"); 01230 RNA_def_property_string_funcs(prop, NULL, NULL, "rna_HookModifier_vgroup_set"); 01231 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01232 } 01233 01234 static void rna_def_modifier_softbody(BlenderRNA *brna) 01235 { 01236 StructRNA *srna; 01237 PropertyRNA *prop; 01238 01239 srna= RNA_def_struct(brna, "SoftBodyModifier", "Modifier"); 01240 RNA_def_struct_ui_text(srna, "Soft Body Modifier", "Soft body simulation modifier"); 01241 RNA_def_struct_sdna(srna, "SoftbodyModifierData"); 01242 RNA_def_struct_ui_icon(srna, ICON_MOD_SOFT); 01243 01244 prop= RNA_def_property(srna, "settings", PROP_POINTER, PROP_NONE); 01245 RNA_def_property_flag(prop, PROP_NEVER_NULL); 01246 RNA_def_property_struct_type(prop, "SoftBodySettings"); 01247 RNA_def_property_pointer_funcs(prop, "rna_SoftBodyModifier_settings_get", NULL, NULL, NULL); 01248 RNA_def_property_ui_text(prop, "Soft Body Settings", ""); 01249 01250 prop= RNA_def_property(srna, "point_cache", PROP_POINTER, PROP_NONE); 01251 RNA_def_property_flag(prop, PROP_NEVER_NULL); 01252 RNA_def_property_struct_type(prop, "PointCache"); 01253 RNA_def_property_pointer_funcs(prop, "rna_SoftBodyModifier_point_cache_get", NULL, NULL, NULL); 01254 RNA_def_property_ui_text(prop, "Soft Body Point Cache", ""); 01255 } 01256 01257 static void rna_def_modifier_boolean(BlenderRNA *brna) 01258 { 01259 StructRNA *srna; 01260 PropertyRNA *prop; 01261 01262 static EnumPropertyItem prop_operation_items[] = { 01263 {eBooleanModifierOp_Intersect, "INTERSECT", 0, "Intersect", "Keeps the part of the mesh that intersects with the other selected object"}, 01264 {eBooleanModifierOp_Union, "UNION", 0, "Union", "Combines two meshes in an additive way"}, 01265 {eBooleanModifierOp_Difference, "DIFFERENCE", 0, "Difference", "Combines two meshes in a subtractive way"}, 01266 {0, NULL, 0, NULL, NULL}}; 01267 01268 srna= RNA_def_struct(brna, "BooleanModifier", "Modifier"); 01269 RNA_def_struct_ui_text(srna, "Boolean Modifier", "Boolean operations modifier"); 01270 RNA_def_struct_sdna(srna, "BooleanModifierData"); 01271 RNA_def_struct_ui_icon(srna, ICON_MOD_BOOLEAN); 01272 01273 prop= RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE); 01274 RNA_def_property_ui_text(prop, "Object", "Mesh object to use for Boolean operation"); 01275 RNA_def_property_pointer_funcs(prop, NULL, "rna_BooleanModifier_object_set", NULL, "rna_Mesh_object_poll"); 01276 RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK); 01277 RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update"); 01278 01279 prop= RNA_def_property(srna, "operation", PROP_ENUM, PROP_NONE); 01280 RNA_def_property_enum_items(prop, prop_operation_items); 01281 RNA_def_property_ui_text(prop, "Operation", ""); 01282 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01283 } 01284 01285 static void rna_def_modifier_array(BlenderRNA *brna) 01286 { 01287 StructRNA *srna; 01288 PropertyRNA *prop; 01289 01290 static EnumPropertyItem prop_fit_type_items[] = { 01291 {MOD_ARR_FIXEDCOUNT, "FIXED_COUNT", 0, "Fixed Count", "Duplicate the object a certain number of times"}, 01292 {MOD_ARR_FITLENGTH, "FIT_LENGTH", 0, "Fit Length", "Duplicate the object as many times as fits in a certain length"}, 01293 {MOD_ARR_FITCURVE, "FIT_CURVE", 0, "Fit Curve", "Fit the duplicated objects to a curve"}, 01294 {0, NULL, 0, NULL, NULL}}; 01295 01296 srna= RNA_def_struct(brna, "ArrayModifier", "Modifier"); 01297 RNA_def_struct_ui_text(srna, "Array Modifier", "Array duplication modifier"); 01298 RNA_def_struct_sdna(srna, "ArrayModifierData"); 01299 RNA_def_struct_ui_icon(srna, ICON_MOD_ARRAY); 01300 01301 /* Length parameters */ 01302 prop= RNA_def_property(srna, "fit_type", PROP_ENUM, PROP_NONE); 01303 RNA_def_property_enum_items(prop, prop_fit_type_items); 01304 RNA_def_property_ui_text(prop, "Fit Type", "Array length calculation method"); 01305 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01306 01307 prop= RNA_def_property(srna, "count", PROP_INT, PROP_NONE); 01308 RNA_def_property_range(prop, 1, INT_MAX); 01309 RNA_def_property_ui_range(prop, 1, 1000, 1, 0); 01310 RNA_def_property_ui_text(prop, "Count", "Number of duplicates to make"); 01311 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01312 01313 prop= RNA_def_property(srna, "fit_length", PROP_FLOAT, PROP_DISTANCE); 01314 RNA_def_property_float_sdna(prop, NULL, "length"); 01315 RNA_def_property_range(prop, 0, INT_MAX); 01316 RNA_def_property_ui_range(prop, 0, 10000, 10, 2); 01317 RNA_def_property_ui_text(prop, "Length", "Length to fit array within"); 01318 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01319 01320 prop= RNA_def_property(srna, "curve", PROP_POINTER, PROP_NONE); 01321 RNA_def_property_pointer_sdna(prop, NULL, "curve_ob"); 01322 RNA_def_property_ui_text(prop, "Curve", "Curve object to fit array length to"); 01323 RNA_def_property_pointer_funcs(prop, NULL, "rna_ArrayModifier_curve_set", NULL, "rna_Curve_object_poll"); 01324 RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK); 01325 RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update"); 01326 01327 /* Offset parameters */ 01328 prop= RNA_def_property(srna, "use_constant_offset", PROP_BOOLEAN, PROP_TRANSLATION); 01329 RNA_def_property_boolean_sdna(prop, NULL, "offset_type", MOD_ARR_OFF_CONST); 01330 RNA_def_property_ui_text(prop, "Constant Offset", "Add a constant offset"); 01331 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01332 01333 prop= RNA_def_property(srna, "constant_offset_displace", PROP_FLOAT, PROP_TRANSLATION); 01334 RNA_def_property_float_sdna(prop, NULL, "offset"); 01335 RNA_def_property_ui_text(prop, "Constant Offset Displacement", "Value for the distance between arrayed items"); 01336 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01337 01338 prop= RNA_def_property(srna, "use_relative_offset", PROP_BOOLEAN, PROP_NONE); 01339 RNA_def_property_boolean_sdna(prop, NULL, "offset_type", MOD_ARR_OFF_RELATIVE); 01340 RNA_def_property_ui_text(prop, "Relative Offset", "Add an offset relative to the object's bounding box"); 01341 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01342 01343 prop= RNA_def_property(srna, "relative_offset_displace", PROP_FLOAT, PROP_NONE); /* PROP_TRANSLATION causes units to be used which we dont want */ 01344 RNA_def_property_float_sdna(prop, NULL, "scale"); 01345 RNA_def_property_ui_text(prop, "Relative Offset Displacement", "The size of the geometry will determine the distance between arrayed items"); 01346 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01347 01348 /* Vertex merging parameters */ 01349 prop= RNA_def_property(srna, "use_merge_vertices", PROP_BOOLEAN, PROP_NONE); 01350 RNA_def_property_boolean_sdna(prop, NULL, "flags", MOD_ARR_MERGE); 01351 RNA_def_property_ui_text(prop, "Merge Vertices", "Merge vertices in adjacent duplicates"); 01352 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01353 01354 prop= RNA_def_property(srna, "use_merge_vertices_cap", PROP_BOOLEAN, PROP_NONE); 01355 RNA_def_property_boolean_sdna(prop, NULL, "flags", MOD_ARR_MERGEFINAL); 01356 RNA_def_property_ui_text(prop, "Merge Vertices", "Merge vertices in first and last duplicates"); 01357 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01358 01359 prop= RNA_def_property(srna, "merge_threshold", PROP_FLOAT, PROP_DISTANCE); 01360 RNA_def_property_float_sdna(prop, NULL, "merge_dist"); 01361 RNA_def_property_range(prop, 0, FLT_MAX); 01362 RNA_def_property_ui_range(prop, 0, 1, 1, 4); 01363 RNA_def_property_ui_text(prop, "Merge Distance", "Limit below which to merge vertices"); 01364 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01365 01366 /* Offset object */ 01367 prop= RNA_def_property(srna, "use_object_offset", PROP_BOOLEAN, PROP_NONE); 01368 RNA_def_property_boolean_sdna(prop, NULL, "offset_type", MOD_ARR_OFF_OBJ); 01369 RNA_def_property_ui_text(prop, "Object Offset", "Add another object's transformation to the total offset"); 01370 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01371 01372 prop= RNA_def_property(srna, "offset_object", PROP_POINTER, PROP_NONE); 01373 RNA_def_property_pointer_sdna(prop, NULL, "offset_ob"); 01374 RNA_def_property_ui_text(prop, "Object Offset", "Uses the location and rotation of another object to determine the distance and rotational change between arrayed items"); 01375 RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK); 01376 RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update"); 01377 01378 /* Caps */ 01379 prop= RNA_def_property(srna, "start_cap", PROP_POINTER, PROP_NONE); 01380 RNA_def_property_ui_text(prop, "Start Cap", "Mesh object to use as a start cap"); 01381 RNA_def_property_pointer_funcs(prop, NULL, "rna_ArrayModifier_start_cap_set", NULL, "rna_Mesh_object_poll"); 01382 RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK); 01383 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01384 01385 prop= RNA_def_property(srna, "end_cap", PROP_POINTER, PROP_NONE); 01386 RNA_def_property_ui_text(prop, "End Cap", "Mesh object to use as an end cap"); 01387 RNA_def_property_pointer_funcs(prop, NULL, "rna_ArrayModifier_end_cap_set", NULL, "rna_Mesh_object_poll"); 01388 RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK); 01389 RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update"); 01390 } 01391 01392 static void rna_def_modifier_edgesplit(BlenderRNA *brna) 01393 { 01394 StructRNA *srna; 01395 PropertyRNA *prop; 01396 01397 srna= RNA_def_struct(brna, "EdgeSplitModifier", "Modifier"); 01398 RNA_def_struct_ui_text(srna, "EdgeSplit Modifier", "Edge splitting modifier to create sharp edges"); 01399 RNA_def_struct_sdna(srna, "EdgeSplitModifierData"); 01400 RNA_def_struct_ui_icon(srna, ICON_MOD_EDGESPLIT); 01401 01402 #if 1 /* expose as radians */ 01403 prop= RNA_def_property(srna, "split_angle", PROP_FLOAT, PROP_ANGLE); 01404 RNA_def_property_float_funcs(prop, "rna_EdgeSplitModifier_split_angle_get", "rna_EdgeSplitModifier_split_angle_set", NULL); 01405 RNA_def_property_range(prop, 0, DEG2RAD(180)); 01406 RNA_def_property_ui_range(prop, 0, DEG2RAD(180), 100, 2); 01407 #else 01408 prop= RNA_def_property(srna, "split_angle", PROP_FLOAT, PROP_NONE); 01409 RNA_def_property_range(prop, 0, 180); 01410 RNA_def_property_ui_range(prop, 0, 180, 100, 2); 01411 #endif 01412 RNA_def_property_ui_text(prop, "Split Angle", "Angle above which to split edges"); 01413 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01414 01415 prop= RNA_def_property(srna, "use_edge_angle", PROP_BOOLEAN, PROP_NONE); 01416 RNA_def_property_boolean_sdna(prop, NULL, "flags", MOD_EDGESPLIT_FROMANGLE); 01417 RNA_def_property_ui_text(prop, "Use Edge Angle", "Split edges with high angle between faces"); 01418 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01419 01420 prop= RNA_def_property(srna, "use_edge_sharp", PROP_BOOLEAN, PROP_NONE); 01421 RNA_def_property_boolean_sdna(prop, NULL, "flags", MOD_EDGESPLIT_FROMFLAG); 01422 RNA_def_property_ui_text(prop, "Use Sharp Edges", "Split edges that are marked as sharp"); 01423 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01424 } 01425 01426 static void rna_def_modifier_displace(BlenderRNA *brna) 01427 { 01428 StructRNA *srna; 01429 PropertyRNA *prop; 01430 01431 static EnumPropertyItem prop_direction_items[] = { 01432 {MOD_DISP_DIR_X, "X", 0, "X", "Uses the texture's intensity value to displace in the X direction"}, 01433 {MOD_DISP_DIR_Y, "Y", 0, "Y", "Uses the texture's intensity value to displace in the Y direction"}, 01434 {MOD_DISP_DIR_Z, "Z", 0, "Z", "Uses the texture's intensity value to displace in the Z direction"}, 01435 {MOD_DISP_DIR_NOR, "NORMAL", 0, "Normal", "Uses the texture's intensity value to displace in the normal direction"}, 01436 {MOD_DISP_DIR_RGB_XYZ, "RGB_TO_XYZ", 0, "RGB to XYZ", "Uses the texture's RGB values to displace the mesh in the XYZ direction"}, 01437 {0, NULL, 0, NULL, NULL}}; 01438 01439 srna= RNA_def_struct(brna, "DisplaceModifier", "Modifier"); 01440 RNA_def_struct_ui_text(srna, "Displace Modifier", "Displacement modifier"); 01441 RNA_def_struct_sdna(srna, "DisplaceModifierData"); 01442 RNA_def_struct_ui_icon(srna, ICON_MOD_DISPLACE); 01443 01444 prop= RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE); 01445 RNA_def_property_string_sdna(prop, NULL, "defgrp_name"); 01446 RNA_def_property_ui_text(prop, "Vertex Group", "Name of Vertex Group which determines influence of modifier per point"); 01447 RNA_def_property_string_funcs(prop, NULL, NULL, "rna_DisplaceModifier_vgroup_set"); 01448 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01449 01450 prop= RNA_def_property(srna, "mid_level", PROP_FLOAT, PROP_DISTANCE); 01451 RNA_def_property_float_sdna(prop, NULL, "midlevel"); 01452 RNA_def_property_range(prop, -FLT_MAX, FLT_MAX); 01453 RNA_def_property_ui_range(prop, 0, 1, 10, 3); 01454 RNA_def_property_ui_text(prop, "Midlevel", "Material value that gives no displacement"); 01455 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01456 01457 prop= RNA_def_property(srna, "strength", PROP_FLOAT, PROP_NONE); 01458 RNA_def_property_range(prop, -FLT_MAX, FLT_MAX); 01459 RNA_def_property_ui_range(prop, -100, 100, 10, 3); 01460 RNA_def_property_ui_text(prop, "Strength", "Amount to displace geometry"); 01461 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01462 01463 prop= RNA_def_property(srna, "direction", PROP_ENUM, PROP_NONE); 01464 RNA_def_property_enum_items(prop, prop_direction_items); 01465 RNA_def_property_ui_text(prop, "Direction", ""); 01466 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01467 01468 rna_def_modifier_generic_map_info(srna); 01469 } 01470 01471 static void rna_def_modifier_uvproject(BlenderRNA *brna) 01472 { 01473 StructRNA *srna; 01474 PropertyRNA *prop; 01475 01476 srna= RNA_def_struct(brna, "UVProjectModifier", "Modifier"); 01477 RNA_def_struct_ui_text(srna, "UV Project Modifier", "UV projection modifier to sets UVs from a projector"); 01478 RNA_def_struct_sdna(srna, "UVProjectModifierData"); 01479 RNA_def_struct_ui_icon(srna, ICON_MOD_UVPROJECT); 01480 01481 prop= RNA_def_property(srna, "uv_layer", PROP_STRING, PROP_NONE); 01482 RNA_def_property_string_sdna(prop, NULL, "uvlayer_name"); 01483 RNA_def_property_ui_text(prop, "UV Layer", "UV layer name"); 01484 RNA_def_property_string_funcs(prop, NULL, NULL, "rna_UVProjectModifier_uvlayer_set"); 01485 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01486 01487 prop= RNA_def_property(srna, "projector_count", PROP_INT, PROP_NONE); 01488 RNA_def_property_int_sdna(prop, NULL, "num_projectors"); 01489 RNA_def_property_ui_text(prop, "Number of Projectors", "Number of projectors to use"); 01490 RNA_def_property_int_funcs(prop, NULL, "rna_UVProjectModifier_num_projectors_set", NULL); 01491 RNA_def_property_range(prop, 1, MOD_UVPROJECT_MAX); 01492 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01493 01494 prop= RNA_def_property(srna, "projectors", PROP_COLLECTION, PROP_NONE); 01495 RNA_def_property_struct_type(prop, "UVProjector"); 01496 RNA_def_property_collection_funcs(prop, "rna_UVProject_projectors_begin", "rna_iterator_array_next", "rna_iterator_array_end", "rna_iterator_array_get", 0, 0, 0); 01497 RNA_def_property_ui_text(prop, "Projectors", ""); 01498 01499 prop= RNA_def_property(srna, "image", PROP_POINTER, PROP_NONE); 01500 RNA_def_property_ui_text(prop, "Image", ""); 01501 RNA_def_property_flag(prop, PROP_EDITABLE); 01502 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01503 01504 prop= RNA_def_property(srna, "aspect_x", PROP_FLOAT, PROP_NONE); 01505 RNA_def_property_float_sdna(prop, NULL, "aspectx"); 01506 RNA_def_property_range(prop, 1, FLT_MAX); 01507 RNA_def_property_ui_range(prop, 1, 1000, 1, 3); 01508 RNA_def_property_ui_text(prop, "Horizontal Aspect Ratio", ""); 01509 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01510 01511 prop= RNA_def_property(srna, "aspect_y", PROP_FLOAT, PROP_NONE); 01512 RNA_def_property_float_sdna(prop, NULL, "aspecty"); 01513 RNA_def_property_range(prop, 1, FLT_MAX); 01514 RNA_def_property_ui_range(prop, 1, 1000, 1, 3); 01515 RNA_def_property_ui_text(prop, "Vertical Aspect Ratio", ""); 01516 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01517 01518 prop= RNA_def_property(srna, "scale_x", PROP_FLOAT, PROP_NONE); 01519 RNA_def_property_float_sdna(prop, NULL, "scalex"); 01520 RNA_def_property_range(prop, 0, FLT_MAX); 01521 RNA_def_property_ui_range(prop, 0, 1000, 1, 3); 01522 RNA_def_property_ui_text(prop, "Horizontal Scale", ""); 01523 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01524 01525 prop= RNA_def_property(srna, "scale_y", PROP_FLOAT, PROP_NONE); 01526 RNA_def_property_float_sdna(prop, NULL, "scaley"); 01527 RNA_def_property_range(prop, 0, FLT_MAX); 01528 RNA_def_property_ui_range(prop, 0, 1000, 1, 3); 01529 RNA_def_property_ui_text(prop, "Vertical Scale", ""); 01530 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01531 01532 prop= RNA_def_property(srna, "use_image_override", PROP_BOOLEAN, PROP_NONE); 01533 RNA_def_property_boolean_sdna(prop, NULL, "flags", MOD_UVPROJECT_OVERRIDEIMAGE); 01534 RNA_def_property_ui_text(prop, "Override Image", "Override faces' current images with the given image"); 01535 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01536 01537 srna= RNA_def_struct(brna, "UVProjector", NULL); 01538 RNA_def_struct_ui_text(srna, "UVProjector", "UV projector used by the UV project modifier"); 01539 01540 prop= RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE); 01541 RNA_def_property_struct_type(prop, "Object"); 01542 RNA_def_property_pointer_funcs(prop, "rna_UVProjector_object_get", "rna_UVProjector_object_set", NULL, NULL); 01543 RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK); 01544 RNA_def_property_ui_text(prop, "Object", "Object to use as projector transform"); 01545 RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update"); 01546 } 01547 01548 static void rna_def_modifier_smooth(BlenderRNA *brna) 01549 { 01550 StructRNA *srna; 01551 PropertyRNA *prop; 01552 01553 srna= RNA_def_struct(brna, "SmoothModifier", "Modifier"); 01554 RNA_def_struct_ui_text(srna, "Smooth Modifier", "Smoothing effect modifier"); 01555 RNA_def_struct_sdna(srna, "SmoothModifierData"); 01556 RNA_def_struct_ui_icon(srna, ICON_MOD_SMOOTH); 01557 01558 prop= RNA_def_property(srna, "use_x", PROP_BOOLEAN, PROP_NONE); 01559 RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_SMOOTH_X); 01560 RNA_def_property_ui_text(prop, "X", "Smooth object along X axis"); 01561 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01562 01563 prop= RNA_def_property(srna, "use_y", PROP_BOOLEAN, PROP_NONE); 01564 RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_SMOOTH_Y); 01565 RNA_def_property_ui_text(prop, "Y", "Smooth object along Y axis"); 01566 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01567 01568 prop= RNA_def_property(srna, "use_z", PROP_BOOLEAN, PROP_NONE); 01569 RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_SMOOTH_Z); 01570 RNA_def_property_ui_text(prop, "Z", "Smooth object along Z axis"); 01571 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01572 01573 prop= RNA_def_property(srna, "factor", PROP_FLOAT, PROP_NONE); 01574 RNA_def_property_float_sdna(prop, NULL, "fac"); 01575 RNA_def_property_range(prop, -FLT_MAX, FLT_MAX); 01576 RNA_def_property_ui_range(prop, -10, 10, 1, 3); 01577 RNA_def_property_ui_text(prop, "Factor", "Strength of modifier effect"); 01578 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01579 01580 prop= RNA_def_property(srna, "iterations", PROP_INT, PROP_NONE); 01581 RNA_def_property_int_sdna(prop, NULL, "repeat"); 01582 RNA_def_property_ui_range(prop, 0, 30, 1, 0); 01583 RNA_def_property_ui_text(prop, "Repeat", ""); 01584 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01585 01586 prop= RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE); 01587 RNA_def_property_string_sdna(prop, NULL, "defgrp_name"); 01588 RNA_def_property_ui_text(prop, "Vertex Group", "Name of Vertex Group which determines influence of modifier per point"); 01589 RNA_def_property_string_funcs(prop, NULL, NULL, "rna_SmoothModifier_vgroup_set"); 01590 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01591 } 01592 01593 static void rna_def_modifier_cast(BlenderRNA *brna) 01594 { 01595 StructRNA *srna; 01596 PropertyRNA *prop; 01597 01598 static EnumPropertyItem prop_cast_type_items[] = { 01599 {MOD_CAST_TYPE_SPHERE, "SPHERE", 0, "Sphere", ""}, 01600 {MOD_CAST_TYPE_CYLINDER, "CYLINDER", 0, "Cylinder", ""}, 01601 {MOD_CAST_TYPE_CUBOID, "CUBOID", 0, "Cuboid", ""}, 01602 {0, NULL, 0, NULL, NULL}}; 01603 01604 srna= RNA_def_struct(brna, "CastModifier", "Modifier"); 01605 RNA_def_struct_ui_text(srna, "Cast Modifier", "Cast modifier to cast to other shapes"); 01606 RNA_def_struct_sdna(srna, "CastModifierData"); 01607 RNA_def_struct_ui_icon(srna, ICON_MOD_CAST); 01608 01609 prop= RNA_def_property(srna, "cast_type", PROP_ENUM, PROP_NONE); 01610 RNA_def_property_enum_sdna(prop, NULL, "type"); 01611 RNA_def_property_enum_items(prop, prop_cast_type_items); 01612 RNA_def_property_ui_text(prop, "Cast Type", "Target object shape"); 01613 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01614 01615 prop= RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE); 01616 RNA_def_property_ui_text(prop, "Object", "Control object: if available, its location determines the center of the effect"); 01617 RNA_def_property_pointer_funcs(prop, NULL, "rna_CastModifier_object_set", NULL, NULL); 01618 RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK); 01619 RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update"); 01620 01621 prop= RNA_def_property(srna, "use_x", PROP_BOOLEAN, PROP_NONE); 01622 RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_CAST_X); 01623 RNA_def_property_ui_text(prop, "X", ""); 01624 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01625 01626 prop= RNA_def_property(srna, "use_y", PROP_BOOLEAN, PROP_NONE); 01627 RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_CAST_Y); 01628 RNA_def_property_ui_text(prop, "Y", ""); 01629 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01630 01631 prop= RNA_def_property(srna, "use_z", PROP_BOOLEAN, PROP_NONE); 01632 RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_CAST_Z); 01633 RNA_def_property_ui_text(prop, "Z", ""); 01634 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01635 01636 prop= RNA_def_property(srna, "use_radius_as_size", PROP_BOOLEAN, PROP_NONE); 01637 RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_CAST_SIZE_FROM_RADIUS); 01638 RNA_def_property_ui_text(prop, "From Radius", "Use radius as size of projection shape (0 = auto)"); 01639 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01640 01641 prop= RNA_def_property(srna, "use_transform", PROP_BOOLEAN, PROP_NONE); 01642 RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_CAST_USE_OB_TRANSFORM); 01643 RNA_def_property_ui_text(prop, "Use transform", "Use object transform to control projection shape"); 01644 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01645 01646 prop= RNA_def_property(srna, "factor", PROP_FLOAT, PROP_NONE); 01647 RNA_def_property_float_sdna(prop, NULL, "fac"); 01648 RNA_def_property_range(prop, -FLT_MAX, FLT_MAX); 01649 RNA_def_property_ui_range(prop, -10, 10, 5, 2); 01650 RNA_def_property_ui_text(prop, "Factor", ""); 01651 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01652 01653 prop= RNA_def_property(srna, "radius", PROP_FLOAT, PROP_DISTANCE); 01654 RNA_def_property_range(prop, 0, FLT_MAX); 01655 RNA_def_property_ui_range(prop, 0, 100, 5, 2); 01656 RNA_def_property_ui_text(prop, "Radius", "Only deform vertices within this distance from the center of the effect (leave as 0 for infinite.)"); 01657 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01658 01659 prop= RNA_def_property(srna, "size", PROP_FLOAT, PROP_NONE); 01660 RNA_def_property_range(prop, 0, FLT_MAX); 01661 RNA_def_property_ui_range(prop, 0, 100, 5, 2); 01662 RNA_def_property_ui_text(prop, "Size", "Size of projection shape (leave as 0 for auto.)"); 01663 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01664 01665 prop= RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE); 01666 RNA_def_property_string_sdna(prop, NULL, "defgrp_name"); 01667 RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name"); 01668 RNA_def_property_string_funcs(prop, NULL, NULL, "rna_CastModifier_vgroup_set"); 01669 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01670 } 01671 01672 static void rna_def_modifier_meshdeform(BlenderRNA *brna) 01673 { 01674 StructRNA *srna; 01675 PropertyRNA *prop; 01676 #if 0 01677 static EnumPropertyItem prop_mode_items[] = { 01678 {0, "VOLUME", 0, "Volume", "Bind to volume inside cage mesh"}, 01679 {1, "SURFACE", 0, "Surface", "Bind to surface of cage mesh"}, 01680 {0, NULL, 0, NULL, NULL}}; 01681 #endif 01682 01683 srna= RNA_def_struct(brna, "MeshDeformModifier", "Modifier"); 01684 RNA_def_struct_ui_text(srna, "MeshDeform Modifier", "Mesh deformation modifier to deform with other meshes"); 01685 RNA_def_struct_sdna(srna, "MeshDeformModifierData"); 01686 RNA_def_struct_ui_icon(srna, ICON_MOD_MESHDEFORM); 01687 01688 prop= RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE); 01689 RNA_def_property_ui_text(prop, "Object", "Mesh object to deform with"); 01690 RNA_def_property_pointer_funcs(prop, NULL, "rna_MeshDeformModifier_object_set", NULL, NULL); 01691 RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK); 01692 RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update"); 01693 01694 prop= RNA_def_property(srna, "is_bound", PROP_BOOLEAN, PROP_NONE); 01695 RNA_def_property_boolean_funcs(prop, "rna_MeshDeformModifier_is_bound_get", NULL); 01696 RNA_def_property_ui_text(prop, "Bound", "Whether geometry has been bound to control cage"); 01697 RNA_def_property_clear_flag(prop, PROP_EDITABLE); 01698 01699 prop= RNA_def_property(srna, "invert_vertex_group", PROP_BOOLEAN, PROP_NONE); 01700 RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_MDEF_INVERT_VGROUP); 01701 RNA_def_property_ui_text(prop, "Invert", "Invert vertex group influence"); 01702 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01703 01704 prop= RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE); 01705 RNA_def_property_string_sdna(prop, NULL, "defgrp_name"); 01706 RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name"); 01707 RNA_def_property_string_funcs(prop, NULL, NULL, "rna_MeshDeformModifier_vgroup_set"); 01708 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01709 01710 prop= RNA_def_property(srna, "precision", PROP_INT, PROP_NONE); 01711 RNA_def_property_int_sdna(prop, NULL, "gridsize"); 01712 RNA_def_property_range(prop, 2, 10); 01713 RNA_def_property_ui_text(prop, "Precision", "The grid size for binding"); 01714 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01715 01716 prop= RNA_def_property(srna, "use_dynamic_bind", PROP_BOOLEAN, PROP_NONE); 01717 RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_MDEF_DYNAMIC_BIND); 01718 RNA_def_property_ui_text(prop, "Dynamic", "Recompute binding dynamically on top of other deformers (slower and more memory consuming.)"); 01719 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01720 01721 #if 0 01722 prop= RNA_def_property(srna, "mode", PROP_ENUM, PROP_NONE); 01723 RNA_def_property_enum_items(prop, prop_mode_items); 01724 RNA_def_property_ui_text(prop, "Mode", "Method of binding vertices are bound to cage mesh"); 01725 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01726 #endif 01727 } 01728 01729 static void rna_def_modifier_particlesystem(BlenderRNA *brna) 01730 { 01731 StructRNA *srna; 01732 PropertyRNA *prop; 01733 01734 srna= RNA_def_struct(brna, "ParticleSystemModifier", "Modifier"); 01735 RNA_def_struct_ui_text(srna, "ParticleSystem Modifier", "Particle system simulation modifier"); 01736 RNA_def_struct_sdna(srna, "ParticleSystemModifierData"); 01737 RNA_def_struct_ui_icon(srna, ICON_MOD_PARTICLES); 01738 01739 prop= RNA_def_property(srna, "particle_system", PROP_POINTER, PROP_NONE); 01740 RNA_def_property_flag(prop, PROP_NEVER_NULL); 01741 RNA_def_property_pointer_sdna(prop, NULL, "psys"); 01742 RNA_def_property_ui_text(prop, "Particle System", "Particle System that this modifier controls"); 01743 } 01744 01745 static void rna_def_modifier_particleinstance(BlenderRNA *brna) 01746 { 01747 StructRNA *srna; 01748 PropertyRNA *prop; 01749 01750 static EnumPropertyItem particleinstance_axis[] = { 01751 {0, "X", 0, "X", ""}, 01752 {1, "Y", 0, "Y", ""}, 01753 {2, "Z", 0, "Z", ""}, 01754 {0, NULL, 0, NULL, NULL} 01755 }; 01756 01757 srna= RNA_def_struct(brna, "ParticleInstanceModifier", "Modifier"); 01758 RNA_def_struct_ui_text(srna, "ParticleInstance Modifier", "Particle system instancing modifier"); 01759 RNA_def_struct_sdna(srna, "ParticleInstanceModifierData"); 01760 RNA_def_struct_ui_icon(srna, ICON_MOD_PARTICLES); 01761 01762 prop= RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE); 01763 RNA_def_property_pointer_sdna(prop, NULL, "ob"); 01764 RNA_def_property_ui_text(prop, "Object", "Object that has the particle system"); 01765 RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK); 01766 RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update"); 01767 01768 prop= RNA_def_property(srna, "particle_system_index", PROP_INT, PROP_NONE); 01769 RNA_def_property_int_sdna(prop, NULL, "psys"); 01770 RNA_def_property_range(prop, 1, 10); 01771 RNA_def_property_ui_text(prop, "Particle System Number", ""); 01772 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01773 01774 prop= RNA_def_property(srna, "axis", PROP_ENUM, PROP_NONE); 01775 RNA_def_property_enum_sdna(prop, NULL, "axis"); 01776 RNA_def_property_enum_items(prop, particleinstance_axis); 01777 RNA_def_property_ui_text(prop, "Axis", "Pole axis for rotation"); 01778 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01779 01780 prop= RNA_def_property(srna, "use_normal", PROP_BOOLEAN, PROP_NONE); 01781 RNA_def_property_boolean_sdna(prop, NULL, "flag", eParticleInstanceFlag_Parents); 01782 RNA_def_property_ui_text(prop, "Normal", "Create instances from normal particles"); 01783 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01784 01785 prop= RNA_def_property(srna, "use_children", PROP_BOOLEAN, PROP_NONE); 01786 RNA_def_property_boolean_sdna(prop, NULL, "flag", eParticleInstanceFlag_Children); 01787 RNA_def_property_ui_text(prop, "Children", "Create instances from child particles"); 01788 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01789 01790 prop= RNA_def_property(srna, "use_path", PROP_BOOLEAN, PROP_NONE); 01791 RNA_def_property_boolean_sdna(prop, NULL, "flag", eParticleInstanceFlag_Path); 01792 RNA_def_property_ui_text(prop, "Path", "Create instances along particle paths"); 01793 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01794 01795 prop= RNA_def_property(srna, "show_unborn", PROP_BOOLEAN, PROP_NONE); 01796 RNA_def_property_boolean_sdna(prop, NULL, "flag", eParticleInstanceFlag_Unborn); 01797 RNA_def_property_ui_text(prop, "Unborn", "Show instances when particles are unborn"); 01798 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01799 01800 prop= RNA_def_property(srna, "show_alive", PROP_BOOLEAN, PROP_NONE); 01801 RNA_def_property_boolean_sdna(prop, NULL, "flag", eParticleInstanceFlag_Alive); 01802 RNA_def_property_ui_text(prop, "Alive", "Show instances when particles are alive"); 01803 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01804 01805 prop= RNA_def_property(srna, "show_dead", PROP_BOOLEAN, PROP_NONE); 01806 RNA_def_property_boolean_sdna(prop, NULL, "flag", eParticleInstanceFlag_Dead); 01807 RNA_def_property_ui_text(prop, "Dead", "Show instances when particles are dead"); 01808 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01809 01810 prop= RNA_def_property(srna, "use_preserve_shape", PROP_BOOLEAN, PROP_NONE); 01811 RNA_def_property_boolean_sdna(prop, NULL, "flag", eParticleInstanceFlag_KeepShape); 01812 RNA_def_property_ui_text(prop, "Keep Shape", "Don't stretch the object"); 01813 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01814 01815 prop= RNA_def_property(srna, "use_size", PROP_BOOLEAN, PROP_NONE); 01816 RNA_def_property_boolean_sdna(prop, NULL, "flag", eParticleInstanceFlag_UseSize); 01817 RNA_def_property_ui_text(prop, "Size", "Use particle size to scale the instances"); 01818 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01819 01820 prop= RNA_def_property(srna, "position", PROP_FLOAT, PROP_NONE); 01821 RNA_def_property_float_sdna(prop, NULL, "position"); 01822 RNA_def_property_range(prop, 0.0, 1.0); 01823 RNA_def_property_ui_text(prop, "Position", "Position along path"); 01824 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01825 01826 prop= RNA_def_property(srna, "random_position", PROP_FLOAT, PROP_NONE); 01827 RNA_def_property_float_sdna(prop, NULL, "random_position"); 01828 RNA_def_property_range(prop, 0.0, 1.0); 01829 RNA_def_property_ui_text(prop, "Random Position", "Randomize position along path"); 01830 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01831 } 01832 01833 static void rna_def_modifier_explode(BlenderRNA *brna) 01834 { 01835 StructRNA *srna; 01836 PropertyRNA *prop; 01837 01838 srna= RNA_def_struct(brna, "ExplodeModifier", "Modifier"); 01839 RNA_def_struct_ui_text(srna, "Explode Modifier", "Explosion effect modifier based on a particle system"); 01840 RNA_def_struct_sdna(srna, "ExplodeModifierData"); 01841 RNA_def_struct_ui_icon(srna, ICON_MOD_EXPLODE); 01842 01843 prop= RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE); 01844 RNA_def_property_string_funcs(prop, "rna_ExplodeModifier_vgroup_get", "rna_ExplodeModifier_vgroup_length", "rna_ExplodeModifier_vgroup_set"); 01845 RNA_def_property_ui_text(prop, "Vertex Group", ""); 01846 01847 prop= RNA_def_property(srna, "protect", PROP_FLOAT, PROP_NONE); 01848 RNA_def_property_range(prop, 0, 1); 01849 RNA_def_property_ui_text(prop, "Protect", "Clean vertex group edges"); 01850 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01851 01852 prop= RNA_def_property(srna, "use_edge_cut", PROP_BOOLEAN, PROP_NONE); 01853 RNA_def_property_boolean_sdna(prop, NULL, "flag", eExplodeFlag_EdgeCut); 01854 RNA_def_property_ui_text(prop, "Cut Edges", "Cut face edges for nicer shrapnel"); 01855 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01856 01857 prop= RNA_def_property(srna, "show_unborn", PROP_BOOLEAN, PROP_NONE); 01858 RNA_def_property_boolean_sdna(prop, NULL, "flag", eExplodeFlag_Unborn); 01859 RNA_def_property_ui_text(prop, "Unborn", "Show mesh when particles are unborn"); 01860 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01861 01862 prop= RNA_def_property(srna, "show_alive", PROP_BOOLEAN, PROP_NONE); 01863 RNA_def_property_boolean_sdna(prop, NULL, "flag", eExplodeFlag_Alive); 01864 RNA_def_property_ui_text(prop, "Alive", "Show mesh when particles are alive"); 01865 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01866 01867 prop= RNA_def_property(srna, "show_dead", PROP_BOOLEAN, PROP_NONE); 01868 RNA_def_property_boolean_sdna(prop, NULL, "flag", eExplodeFlag_Dead); 01869 RNA_def_property_ui_text(prop, "Dead", "Show mesh when particles are dead"); 01870 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01871 01872 prop= RNA_def_property(srna, "use_size", PROP_BOOLEAN, PROP_NONE); 01873 RNA_def_property_boolean_sdna(prop, NULL, "flag", eExplodeFlag_PaSize); 01874 RNA_def_property_ui_text(prop, "Size", "Use particle size for the shrapnel"); 01875 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01876 01877 prop= RNA_def_property(srna, "particle_uv", PROP_STRING, PROP_NONE); 01878 RNA_def_property_string_sdna(prop, NULL, "uvname"); 01879 RNA_def_property_string_maxlength(prop, 32); 01880 RNA_def_property_ui_text(prop, "Particle UV", "UV Layer to change with particle age"); 01881 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01882 } 01883 01884 static void rna_def_modifier_cloth(BlenderRNA *brna) 01885 { 01886 StructRNA *srna; 01887 PropertyRNA *prop; 01888 01889 srna= RNA_def_struct(brna, "ClothModifier", "Modifier"); 01890 RNA_def_struct_ui_text(srna, "Cloth Modifier", "Cloth simulation modifier"); 01891 RNA_def_struct_sdna(srna, "ClothModifierData"); 01892 RNA_def_struct_ui_icon(srna, ICON_MOD_CLOTH); 01893 01894 prop= RNA_def_property(srna, "settings", PROP_POINTER, PROP_NONE); 01895 RNA_def_property_flag(prop, PROP_NEVER_NULL); 01896 RNA_def_property_pointer_sdna(prop, NULL, "sim_parms"); 01897 RNA_def_property_ui_text(prop, "Cloth Settings", ""); 01898 01899 prop= RNA_def_property(srna, "collision_settings", PROP_POINTER, PROP_NONE); 01900 RNA_def_property_flag(prop, PROP_NEVER_NULL); 01901 RNA_def_property_pointer_sdna(prop, NULL, "coll_parms"); 01902 RNA_def_property_ui_text(prop, "Cloth Collision Settings", ""); 01903 01904 prop= RNA_def_property(srna, "point_cache", PROP_POINTER, PROP_NONE); 01905 RNA_def_property_flag(prop, PROP_NEVER_NULL); 01906 RNA_def_property_ui_text(prop, "Point Cache", ""); 01907 } 01908 01909 static void rna_def_modifier_smoke(BlenderRNA *brna) 01910 { 01911 StructRNA *srna; 01912 PropertyRNA *prop; 01913 01914 static EnumPropertyItem prop_smoke_type_items[] = { 01915 {0, "NONE", 0, "None", ""}, 01916 {MOD_SMOKE_TYPE_DOMAIN, "DOMAIN", 0, "Domain", ""}, 01917 {MOD_SMOKE_TYPE_FLOW, "FLOW", 0, "Flow", "Inflow/Outflow"}, 01918 {MOD_SMOKE_TYPE_COLL, "COLLISION", 0, "Collision", ""}, 01919 {0, NULL, 0, NULL, NULL}}; 01920 01921 srna= RNA_def_struct(brna, "SmokeModifier", "Modifier"); 01922 RNA_def_struct_ui_text(srna, "Smoke Modifier", "Smoke simulation modifier"); 01923 RNA_def_struct_sdna(srna, "SmokeModifierData"); 01924 RNA_def_struct_ui_icon(srna, ICON_MOD_SMOKE); 01925 01926 prop= RNA_def_property(srna, "domain_settings", PROP_POINTER, PROP_NONE); 01927 RNA_def_property_pointer_sdna(prop, NULL, "domain"); 01928 RNA_def_property_ui_text(prop, "Domain Settings", ""); 01929 01930 prop= RNA_def_property(srna, "flow_settings", PROP_POINTER, PROP_NONE); 01931 RNA_def_property_pointer_sdna(prop, NULL, "flow"); 01932 RNA_def_property_ui_text(prop, "Flow Settings", ""); 01933 01934 prop= RNA_def_property(srna, "coll_settings", PROP_POINTER, PROP_NONE); 01935 RNA_def_property_pointer_sdna(prop, NULL, "coll"); 01936 RNA_def_property_ui_text(prop, "Collision Settings", ""); 01937 01938 prop= RNA_def_property(srna, "smoke_type", PROP_ENUM, PROP_NONE); 01939 RNA_def_property_enum_sdna(prop, NULL, "type"); 01940 RNA_def_property_enum_items(prop, prop_smoke_type_items); 01941 RNA_def_property_ui_text(prop, "Type", ""); 01942 RNA_def_property_update(prop, 0, "rna_Smoke_set_type"); 01943 } 01944 01945 static void rna_def_modifier_collision(BlenderRNA *brna) 01946 { 01947 StructRNA *srna; 01948 PropertyRNA *prop; 01949 01950 srna= RNA_def_struct(brna, "CollisionModifier", "Modifier"); 01951 RNA_def_struct_ui_text(srna, "Collision Modifier", "Collision modifier defining modifier stack position used for collision"); 01952 RNA_def_struct_sdna(srna, "CollisionModifierData"); 01953 RNA_def_struct_ui_icon(srna, ICON_MOD_PHYSICS); 01954 01955 prop= RNA_def_property(srna, "settings", PROP_POINTER, PROP_NONE); 01956 RNA_def_property_flag(prop, PROP_NEVER_NULL); 01957 RNA_def_property_struct_type(prop, "CollisionSettings"); 01958 RNA_def_property_pointer_funcs(prop, "rna_CollisionModifier_settings_get", NULL, NULL, NULL); 01959 RNA_def_property_ui_text(prop, "Settings", ""); 01960 } 01961 01962 static void rna_def_modifier_bevel(BlenderRNA *brna) 01963 { 01964 StructRNA *srna; 01965 PropertyRNA *prop; 01966 01967 static EnumPropertyItem prop_limit_method_items[] = { 01968 {0, "NONE", 0, "None", "Bevel the entire mesh by a constant amount"}, 01969 {BME_BEVEL_ANGLE, "ANGLE", 0, "Angle", "Only bevel edges with sharp enough angles between faces"}, 01970 {BME_BEVEL_WEIGHT, "WEIGHT", 0, "Weight", "Use bevel weights to determine how much bevel is applied; apply them separately in vert/edge select mode"}, 01971 {0, NULL, 0, NULL, NULL}}; 01972 01973 static EnumPropertyItem prop_edge_weight_method_items[] = { 01974 {0, "AVERAGE", 0, "Average", ""}, 01975 {BME_BEVEL_EMIN, "SHARPEST", 0, "Sharpest", ""}, 01976 {BME_BEVEL_EMAX, "LARGEST", 0, "Largest", ""}, 01977 {0, NULL, 0, NULL, NULL}}; 01978 01979 srna= RNA_def_struct(brna, "BevelModifier", "Modifier"); 01980 RNA_def_struct_ui_text(srna, "Bevel Modifier", "Bevel modifier to make edges and vertices more rounded"); 01981 RNA_def_struct_sdna(srna, "BevelModifierData"); 01982 RNA_def_struct_ui_icon(srna, ICON_MOD_BEVEL); 01983 01984 prop= RNA_def_property(srna, "width", PROP_FLOAT, PROP_DISTANCE); 01985 RNA_def_property_float_sdna(prop, NULL, "value"); 01986 RNA_def_property_range(prop, 0, FLT_MAX); 01987 RNA_def_property_ui_range(prop, 0, 10, 0.1, 4); 01988 RNA_def_property_ui_text(prop, "Width", "Bevel value/amount"); 01989 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01990 01991 prop= RNA_def_property(srna, "use_only_vertices", PROP_BOOLEAN, PROP_NONE); 01992 RNA_def_property_boolean_sdna(prop, NULL, "flags", BME_BEVEL_VERT); 01993 RNA_def_property_ui_text(prop, "Only Vertices", "Bevel verts/corners, not edges"); 01994 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 01995 01996 prop= RNA_def_property(srna, "limit_method", PROP_ENUM, PROP_NONE); 01997 RNA_def_property_enum_sdna(prop, NULL, "lim_flags"); 01998 RNA_def_property_enum_items(prop, prop_limit_method_items); 01999 RNA_def_property_ui_text(prop, "Limit Method", ""); 02000 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02001 02002 prop= RNA_def_property(srna, "edge_weight_method", PROP_ENUM, PROP_NONE); 02003 RNA_def_property_enum_sdna(prop, NULL, "e_flags"); 02004 RNA_def_property_enum_items(prop, prop_edge_weight_method_items); 02005 RNA_def_property_ui_text(prop, "Edge Weight Method", "What edge weight to use for weighting a vertex"); 02006 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02007 02008 #if 1 /* expose as radians */ 02009 prop= RNA_def_property(srna, "angle_limit", PROP_FLOAT, PROP_ANGLE); 02010 RNA_def_property_float_funcs(prop, "rna_BevelModifier_angle_limit_get", "rna_BevelModifier_angle_limit_set", NULL); 02011 RNA_def_property_range(prop, 0, DEG2RAD(180)); 02012 RNA_def_property_ui_range(prop, 0, DEG2RAD(180), 100, 2); 02013 #else 02014 prop= RNA_def_property(srna, "angle_limit", PROP_FLOAT, PROP_NONE); 02015 RNA_def_property_float_sdna(prop, NULL, "bevel_angle"); 02016 RNA_def_property_range(prop, 0, 180); 02017 RNA_def_property_ui_range(prop, 0, 180, 100, 2); 02018 #endif 02019 RNA_def_property_ui_text(prop, "Angle", "Angle above which to bevel edges"); 02020 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02021 } 02022 02023 static void rna_def_modifier_shrinkwrap(BlenderRNA *brna) 02024 { 02025 StructRNA *srna; 02026 PropertyRNA *prop; 02027 02028 static EnumPropertyItem shrink_type_items[] = { 02029 {MOD_SHRINKWRAP_NEAREST_SURFACE, "NEAREST_SURFACEPOINT", 0, "Nearest Surface Point", "Shrinks the mesh to the nearest target surface"}, 02030 {MOD_SHRINKWRAP_PROJECT, "PROJECT", 0, "Project", "Shrinks the mesh to the nearest target surface along a given axis"}, 02031 {MOD_SHRINKWRAP_NEAREST_VERTEX, "NEAREST_VERTEX", 0, "Nearest Vertex", "Shrinks the mesh to the nearest target vertex"}, 02032 {0, NULL, 0, NULL, NULL}}; 02033 02034 static EnumPropertyItem shrink_face_cull_items[] = { 02035 {0, "OFF", 0, "Off", ""}, 02036 {MOD_SHRINKWRAP_CULL_TARGET_FRONTFACE, "FRONT", 0, "Front", ""}, 02037 {MOD_SHRINKWRAP_CULL_TARGET_BACKFACE, "BACK", 0, "Back", ""}, 02038 {0, NULL, 0, NULL, NULL}}; 02039 02040 srna= RNA_def_struct(brna, "ShrinkwrapModifier", "Modifier"); 02041 RNA_def_struct_ui_text(srna, "Shrinkwrap Modifier", "Shrink wrapping modifier to shrink wrap and object to a target"); 02042 RNA_def_struct_sdna(srna, "ShrinkwrapModifierData"); 02043 RNA_def_struct_ui_icon(srna, ICON_MOD_SHRINKWRAP); 02044 02045 prop= RNA_def_property(srna, "wrap_method", PROP_ENUM, PROP_NONE); 02046 RNA_def_property_enum_sdna(prop, NULL, "shrinkType"); 02047 RNA_def_property_enum_items(prop, shrink_type_items); 02048 RNA_def_property_ui_text(prop, "Mode", ""); 02049 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02050 02051 prop= RNA_def_property(srna, "cull_face", PROP_ENUM, PROP_NONE); 02052 RNA_def_property_enum_sdna(prop, NULL, "shrinkOpts"); 02053 RNA_def_property_enum_items(prop, shrink_face_cull_items); 02054 RNA_def_property_enum_funcs(prop, "rna_ShrinkwrapModifier_face_cull_get", "rna_ShrinkwrapModifier_face_cull_set", NULL); 02055 RNA_def_property_ui_text(prop, "Face Cull", "Stop vertices from projecting to a the face on the target when facing towards/away"); 02056 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02057 02058 prop= RNA_def_property(srna, "target", PROP_POINTER, PROP_NONE); 02059 RNA_def_property_ui_text(prop, "Target", "Mesh target to shrink to"); 02060 RNA_def_property_pointer_funcs(prop, NULL, "rna_ShrinkwrapModifier_target_set", NULL, "rna_Mesh_object_poll"); 02061 RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK); 02062 RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update"); 02063 02064 prop= RNA_def_property(srna, "auxiliary_target", PROP_POINTER, PROP_NONE); 02065 RNA_def_property_pointer_sdna(prop, NULL, "auxTarget"); 02066 RNA_def_property_ui_text(prop, "Auxiliary Target", "Additional mesh target to shrink to"); 02067 RNA_def_property_pointer_funcs(prop, NULL, "rna_ShrinkwrapModifier_auxiliary_target_set", NULL, "rna_Mesh_object_poll"); 02068 RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK); 02069 RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update"); 02070 02071 prop= RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE); 02072 RNA_def_property_string_sdna(prop, NULL, "vgroup_name"); 02073 RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name"); 02074 RNA_def_property_string_funcs(prop, NULL, NULL, "rna_ShrinkwrapModifier_vgroup_set"); 02075 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02076 02077 prop= RNA_def_property(srna, "offset", PROP_FLOAT, PROP_NONE); 02078 RNA_def_property_float_sdna(prop, NULL, "keepDist"); 02079 RNA_def_property_range(prop, -FLT_MAX, FLT_MAX); 02080 RNA_def_property_ui_range(prop, -100, 100, 1, 2); 02081 RNA_def_property_ui_text(prop, "Offset", "Distance to keep from the target"); 02082 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02083 02084 prop= RNA_def_property(srna, "use_project_x", PROP_BOOLEAN, PROP_NONE); 02085 RNA_def_property_boolean_sdna(prop, NULL, "projAxis", MOD_SHRINKWRAP_PROJECT_OVER_X_AXIS); 02086 RNA_def_property_ui_text(prop, "X", ""); 02087 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02088 02089 prop= RNA_def_property(srna, "use_project_y", PROP_BOOLEAN, PROP_NONE); 02090 RNA_def_property_boolean_sdna(prop, NULL, "projAxis", MOD_SHRINKWRAP_PROJECT_OVER_Y_AXIS); 02091 RNA_def_property_ui_text(prop, "Y", ""); 02092 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02093 02094 prop= RNA_def_property(srna, "use_project_z", PROP_BOOLEAN, PROP_NONE); 02095 RNA_def_property_boolean_sdna(prop, NULL, "projAxis", MOD_SHRINKWRAP_PROJECT_OVER_Z_AXIS); 02096 RNA_def_property_ui_text(prop, "Z", ""); 02097 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02098 02099 prop= RNA_def_property(srna, "subsurf_levels", PROP_INT, PROP_NONE); 02100 RNA_def_property_int_sdna(prop, NULL, "subsurfLevels"); 02101 RNA_def_property_range(prop, 0, 6); 02102 RNA_def_property_ui_range(prop, 0, 6, 1, 0); 02103 RNA_def_property_ui_text(prop, "Subsurf Levels", "Number of subdivisions that must be performed before extracting vertices' positions and normals"); 02104 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02105 02106 prop= RNA_def_property(srna, "use_negative_direction", PROP_BOOLEAN, PROP_NONE); 02107 RNA_def_property_boolean_sdna(prop, NULL, "shrinkOpts", MOD_SHRINKWRAP_PROJECT_ALLOW_NEG_DIR); 02108 RNA_def_property_ui_text(prop, "Negative", "Allow vertices to move in the negative direction of axis"); 02109 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02110 02111 prop= RNA_def_property(srna, "use_positive_direction", PROP_BOOLEAN, PROP_NONE); 02112 RNA_def_property_boolean_sdna(prop, NULL, "shrinkOpts", MOD_SHRINKWRAP_PROJECT_ALLOW_POS_DIR); 02113 RNA_def_property_ui_text(prop, "Positive", "Allow vertices to move in the positive direction of axis"); 02114 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02115 02116 prop= RNA_def_property(srna, "use_keep_above_surface", PROP_BOOLEAN, PROP_NONE); 02117 RNA_def_property_boolean_sdna(prop, NULL, "shrinkOpts", MOD_SHRINKWRAP_KEEP_ABOVE_SURFACE); 02118 RNA_def_property_ui_text(prop, "Keep Above Surface", ""); 02119 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02120 } 02121 02122 static void rna_def_modifier_fluidsim(BlenderRNA *brna) 02123 { 02124 StructRNA *srna; 02125 PropertyRNA *prop; 02126 02127 srna= RNA_def_struct(brna, "FluidSimulationModifier", "Modifier"); 02128 RNA_def_struct_ui_text(srna, "Fluid Simulation Modifier", "Fluid simulation modifier"); 02129 RNA_def_struct_sdna(srna, "FluidsimModifierData"); 02130 RNA_def_struct_ui_icon(srna, ICON_MOD_FLUIDSIM); 02131 02132 prop= RNA_def_property(srna, "settings", PROP_POINTER, PROP_NONE); 02133 RNA_def_property_flag(prop, PROP_NEVER_NULL); 02134 RNA_def_property_pointer_sdna(prop, NULL, "fss"); 02135 RNA_def_property_ui_text(prop, "Settings", "Settings for how this object is used in the fluid simulation"); 02136 } 02137 02138 static void rna_def_modifier_mask(BlenderRNA *brna) 02139 { 02140 StructRNA *srna; 02141 PropertyRNA *prop; 02142 02143 static EnumPropertyItem modifier_mask_mode_items[] = { 02144 {MOD_MASK_MODE_VGROUP, "VERTEX_GROUP", 0, "Vertex Group", ""}, 02145 {MOD_MASK_MODE_ARM, "ARMATURE", 0, "Armature", ""}, 02146 {0, NULL, 0, NULL, NULL}}; 02147 02148 srna= RNA_def_struct(brna, "MaskModifier", "Modifier"); 02149 RNA_def_struct_ui_text(srna, "Mask Modifier", "Mask modifier to hide parts of the mesh"); 02150 RNA_def_struct_sdna(srna, "MaskModifierData"); 02151 RNA_def_struct_ui_icon(srna, ICON_MOD_MASK); 02152 02153 prop= RNA_def_property(srna, "mode", PROP_ENUM, PROP_NONE); 02154 RNA_def_property_enum_items(prop, modifier_mask_mode_items); 02155 RNA_def_property_ui_text(prop, "Mode", ""); 02156 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02157 02158 prop= RNA_def_property(srna, "armature", PROP_POINTER, PROP_NONE); 02159 RNA_def_property_pointer_sdna(prop, NULL, "ob_arm"); 02160 RNA_def_property_ui_text(prop, "Armature", "Armature to use as source of bones to mask"); 02161 RNA_def_property_pointer_funcs(prop, NULL, "rna_MaskModifier_armature_set", NULL, "rna_Armature_object_poll"); 02162 RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK); 02163 RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update"); 02164 02165 prop= RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE); 02166 RNA_def_property_string_sdna(prop, NULL, "vgroup"); 02167 RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name"); 02168 RNA_def_property_string_funcs(prop, NULL, NULL, "rna_MaskModifier_vgroup_set"); 02169 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02170 02171 prop= RNA_def_property(srna, "invert_vertex_group", PROP_BOOLEAN, PROP_NONE); 02172 RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_MASK_INV); 02173 RNA_def_property_ui_text(prop, "Invert", "Use vertices that are not part of region defined"); 02174 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02175 } 02176 02177 static void rna_def_modifier_simpledeform(BlenderRNA *brna) 02178 { 02179 StructRNA *srna; 02180 PropertyRNA *prop; 02181 02182 static EnumPropertyItem simple_deform_mode_items[] = { 02183 {MOD_SIMPLEDEFORM_MODE_TWIST, "TWIST", 0, "Twist", "Rotates around the Z axis of the modifier space"}, 02184 {MOD_SIMPLEDEFORM_MODE_BEND, "BEND", 0, "Bend", "Bends the mesh over the Z axis of the modifier space"}, 02185 {MOD_SIMPLEDEFORM_MODE_TAPER, "TAPER", 0, "Taper", "Linearly scales along Z axis of the modifier space"}, 02186 {MOD_SIMPLEDEFORM_MODE_STRETCH, "STRETCH", 0, "Stretch", "Stretches the object along the Z axis of the modifier space"}, 02187 {0, NULL, 0, NULL, NULL}}; 02188 02189 srna= RNA_def_struct(brna, "SimpleDeformModifier", "Modifier"); 02190 RNA_def_struct_ui_text(srna, "SimpleDeform Modifier", "Simple deformation modifier to apply effects such as twisting and bending"); 02191 RNA_def_struct_sdna(srna, "SimpleDeformModifierData"); 02192 RNA_def_struct_ui_icon(srna, ICON_MOD_SIMPLEDEFORM); 02193 02194 prop= RNA_def_property(srna, "deform_method", PROP_ENUM, PROP_NONE); 02195 RNA_def_property_enum_sdna(prop, NULL, "mode"); 02196 RNA_def_property_enum_items(prop, simple_deform_mode_items); 02197 RNA_def_property_ui_text(prop, "Mode", ""); 02198 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02199 02200 prop= RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE); 02201 RNA_def_property_string_sdna(prop, NULL, "vgroup_name"); 02202 RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name"); 02203 RNA_def_property_string_funcs(prop, NULL, NULL, "rna_SimpleDeformModifier_vgroup_set"); 02204 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02205 02206 prop= RNA_def_property(srna, "origin", PROP_POINTER, PROP_NONE); 02207 RNA_def_property_ui_text(prop, "Origin", "Origin of modifier space coordinates"); 02208 RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK); 02209 RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update"); 02210 02211 prop= RNA_def_property(srna, "use_relative", PROP_BOOLEAN, PROP_NONE); 02212 RNA_def_property_boolean_sdna(prop, NULL, "originOpts", MOD_SIMPLEDEFORM_ORIGIN_LOCAL); 02213 RNA_def_property_ui_text(prop, "Relative", "Sets the origin of deform space to be relative to the object"); 02214 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02215 02216 prop= RNA_def_property(srna, "factor", PROP_FLOAT, PROP_NONE); 02217 RNA_def_property_range(prop, -FLT_MAX, FLT_MAX); 02218 RNA_def_property_ui_range(prop, -10, 10, 1, 3); 02219 RNA_def_property_ui_text(prop, "Factor", "Amount to deform object"); 02220 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02221 02222 prop= RNA_def_property(srna, "limits", PROP_FLOAT, PROP_NONE); 02223 RNA_def_property_float_sdna(prop, NULL, "limit"); 02224 RNA_def_property_array(prop, 2); 02225 RNA_def_property_range(prop, 0, 1); 02226 RNA_def_property_ui_range(prop, 0, 1, 5, 2); 02227 RNA_def_property_ui_text(prop, "Limits", "Lower/Upper limits for deform"); 02228 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02229 02230 prop= RNA_def_property(srna, "lock_x", PROP_BOOLEAN, PROP_NONE); 02231 RNA_def_property_boolean_sdna(prop, NULL, "axis", MOD_SIMPLEDEFORM_LOCK_AXIS_X); 02232 RNA_def_property_ui_text(prop, "Lock X Axis", "Do not allow tapering along the X axis"); 02233 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02234 02235 prop= RNA_def_property(srna, "lock_y", PROP_BOOLEAN, PROP_NONE); 02236 RNA_def_property_boolean_sdna(prop, NULL, "axis", MOD_SIMPLEDEFORM_LOCK_AXIS_Y); 02237 RNA_def_property_ui_text(prop, "Lock Y Axis", "Do not allow tapering along the Y axis"); 02238 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02239 } 02240 02241 static void rna_def_modifier_surface(BlenderRNA *brna) 02242 { 02243 StructRNA *srna; 02244 02245 srna= RNA_def_struct(brna, "SurfaceModifier", "Modifier"); 02246 RNA_def_struct_ui_text(srna, "Surface Modifier", "Surface modifier defining modifier stack position used for surface fields"); 02247 RNA_def_struct_sdna(srna, "SurfaceModifierData"); 02248 RNA_def_struct_ui_icon(srna, ICON_MOD_PHYSICS); 02249 } 02250 02251 static void rna_def_modifier_solidify(BlenderRNA *brna) 02252 { 02253 StructRNA *srna; 02254 PropertyRNA *prop; 02255 02256 srna= RNA_def_struct(brna, "SolidifyModifier", "Modifier"); 02257 RNA_def_struct_ui_text(srna, "Solidify Modifier", "Create a solid skin by extruding, compensating for sharp angles"); 02258 RNA_def_struct_sdna(srna, "SolidifyModifierData"); 02259 RNA_def_struct_ui_icon(srna, ICON_MOD_SOLIDIFY); 02260 02261 prop= RNA_def_property(srna, "thickness", PROP_FLOAT, PROP_DISTANCE); 02262 RNA_def_property_float_sdna(prop, NULL, "offset"); 02263 RNA_def_property_range(prop, -FLT_MAX, FLT_MAX); 02264 RNA_def_property_ui_range(prop, -10, 10, 0.1, 4); 02265 RNA_def_property_ui_text(prop, "Thickness", "Thickness of the shell"); 02266 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02267 02268 prop= RNA_def_property(srna, "offset", PROP_FLOAT, PROP_FACTOR); 02269 RNA_def_property_float_sdna(prop, NULL, "offset_fac"); 02270 RNA_def_property_range(prop, -FLT_MAX, FLT_MAX); 02271 RNA_def_property_ui_range(prop, -1, 1, 0.1, 4); 02272 RNA_def_property_ui_text(prop, "Offset", "Offset the thickness from the center"); 02273 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02274 02275 prop= RNA_def_property(srna, "edge_crease_inner", PROP_FLOAT, PROP_FACTOR); 02276 RNA_def_property_float_sdna(prop, NULL, "crease_inner"); 02277 RNA_def_property_range(prop, 0, 1); 02278 RNA_def_property_ui_range(prop, 0, 1, 0.1, 3); 02279 RNA_def_property_ui_text(prop, "Inner Crease", "Assign a crease to inner edges"); 02280 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02281 02282 prop= RNA_def_property(srna, "edge_crease_outer", PROP_FLOAT, PROP_FACTOR); 02283 RNA_def_property_float_sdna(prop, NULL, "crease_outer"); 02284 RNA_def_property_range(prop, 0, 1); 02285 RNA_def_property_ui_range(prop, 0, 1, 0.1, 3); 02286 RNA_def_property_ui_text(prop, "Outer Crease", "Assign a crease to outer edges"); 02287 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02288 02289 prop= RNA_def_property(srna, "edge_crease_rim", PROP_FLOAT, PROP_FACTOR); 02290 RNA_def_property_float_sdna(prop, NULL, "crease_rim"); 02291 RNA_def_property_range(prop, 0, 1); 02292 RNA_def_property_ui_range(prop, 0, 1, 0.1, 3); 02293 RNA_def_property_ui_text(prop, "Rim Crease", "Assign a crease to the edges making up the rim"); 02294 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02295 02296 prop= RNA_def_property(srna, "material_offset", PROP_INT, PROP_NONE); 02297 RNA_def_property_int_sdna(prop, NULL, "mat_ofs"); 02298 RNA_def_property_range(prop, SHRT_MIN, SHRT_MAX); 02299 RNA_def_property_ui_text(prop, "Material Offset", "Offset material index of generated faces"); 02300 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02301 02302 prop= RNA_def_property(srna, "material_offset_rim", PROP_INT, PROP_NONE); 02303 RNA_def_property_int_sdna(prop, NULL, "mat_ofs_rim"); 02304 RNA_def_property_range(prop, SHRT_MIN, SHRT_MAX); 02305 RNA_def_property_ui_text(prop, "Rim Material Offset", "Offset material index of generated rim faces"); 02306 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02307 02308 prop= RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE); 02309 RNA_def_property_string_sdna(prop, NULL, "defgrp_name"); 02310 RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name"); 02311 RNA_def_property_string_funcs(prop, NULL, NULL, "rna_SolidifyModifier_vgroup_set"); 02312 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02313 02314 prop= RNA_def_property(srna, "use_rim", PROP_BOOLEAN, PROP_NONE); 02315 RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_SOLIDIFY_RIM); 02316 RNA_def_property_ui_text(prop, "Fill Rim", "Create edge loops between the inner and outer surfaces on face edges (slow, disable when not needed)"); 02317 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02318 02319 prop= RNA_def_property(srna, "use_even_offset", PROP_BOOLEAN, PROP_NONE); 02320 RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_SOLIDIFY_EVEN); 02321 RNA_def_property_ui_text(prop, "Even Thickness", "Maintain thickness by adjusting for sharp corners (slow, disable when not needed)"); 02322 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02323 02324 prop= RNA_def_property(srna, "use_quality_normals", PROP_BOOLEAN, PROP_NONE); 02325 RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_SOLIDIFY_NORMAL_CALC); 02326 RNA_def_property_ui_text(prop, "High Quality Normals", "Calculate normals which result in more even thickness (slow, disable when not needed)"); 02327 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02328 02329 prop= RNA_def_property(srna, "invert_vertex_group", PROP_BOOLEAN, PROP_NONE); 02330 RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_SOLIDIFY_VGROUP_INV); 02331 RNA_def_property_ui_text(prop, "Vertex Group Invert", "Invert the vertex group influence"); 02332 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02333 02334 02335 } 02336 02337 static void rna_def_modifier_screw(BlenderRNA *brna) 02338 { 02339 static EnumPropertyItem axis_items[]= { 02340 {0, "X", 0, "X Axis", ""}, 02341 {1, "Y", 0, "Y Axis", ""}, 02342 {2, "Z", 0, "Z Axis", ""}, 02343 {0, NULL, 0, NULL, NULL}}; 02344 02345 StructRNA *srna; 02346 PropertyRNA *prop; 02347 02348 srna= RNA_def_struct(brna, "ScrewModifier", "Modifier"); 02349 RNA_def_struct_ui_text(srna, "Screw Modifier", "Revolve edges"); 02350 RNA_def_struct_sdna(srna, "ScrewModifierData"); 02351 RNA_def_struct_ui_icon(srna, ICON_MOD_SCREW); 02352 02353 prop= RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE); 02354 RNA_def_property_pointer_sdna(prop, NULL, "ob_axis"); 02355 RNA_def_property_ui_text(prop, "Object", "Object to define the screw axis"); 02356 RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK); 02357 RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update"); 02358 02359 prop= RNA_def_property(srna, "steps", PROP_INT, PROP_UNSIGNED); 02360 RNA_def_property_range(prop, 2, 10000); 02361 RNA_def_property_ui_range(prop, 2, 512, 1, 0); 02362 RNA_def_property_ui_text(prop, "Steps", "Number of steps in the revolution"); 02363 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02364 02365 prop= RNA_def_property(srna, "render_steps", PROP_INT, PROP_UNSIGNED); 02366 RNA_def_property_range(prop, 2, 10000); 02367 RNA_def_property_ui_range(prop, 2, 512, 1, 0); 02368 RNA_def_property_ui_text(prop, "Render Steps", "Number of steps in the revolution"); 02369 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02370 02371 prop= RNA_def_property(srna, "iterations", PROP_INT, PROP_UNSIGNED); 02372 RNA_def_property_int_sdna(prop, NULL, "iter"); 02373 RNA_def_property_range(prop, 1, 10000); 02374 RNA_def_property_ui_range(prop, 1, 100, 1, 0); 02375 RNA_def_property_ui_text(prop, "Iterations", "Number of times to apply the screw operation"); 02376 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02377 02378 prop= RNA_def_property(srna, "axis", PROP_ENUM, PROP_NONE); 02379 RNA_def_property_enum_items(prop, axis_items); 02380 RNA_def_property_ui_text(prop, "Axis", "Screw axis"); 02381 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02382 02383 prop= RNA_def_property(srna, "angle", PROP_FLOAT, PROP_ANGLE); 02384 RNA_def_property_ui_range(prop, 0, -M_PI*2, M_PI*2, 2); 02385 RNA_def_property_range(prop, -FLT_MAX, FLT_MAX); 02386 RNA_def_property_ui_text(prop, "Angle", "Angle of revolution"); 02387 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02388 02389 prop= RNA_def_property(srna, "screw_offset", PROP_FLOAT, PROP_DISTANCE); 02390 RNA_def_property_float_sdna(prop, NULL, "screw_ofs"); 02391 RNA_def_property_ui_text(prop, "Screw", "Offset the revolution along its axis"); 02392 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02393 02394 prop= RNA_def_property(srna, "use_normal_flip", PROP_BOOLEAN, PROP_NONE); 02395 RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_SCREW_NORMAL_FLIP); 02396 RNA_def_property_ui_text(prop, "Flip", "Flip normals of lathed faces"); 02397 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02398 02399 prop= RNA_def_property(srna, "use_normal_calculate", PROP_BOOLEAN, PROP_NONE); 02400 RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_SCREW_NORMAL_CALC); 02401 RNA_def_property_ui_text(prop, "Calc Order", "Calculate the order of edges (needed for meshes, but not curves)"); 02402 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02403 02404 prop= RNA_def_property(srna, "use_object_screw_offset", PROP_BOOLEAN, PROP_NONE); 02405 RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_SCREW_OBJECT_OFFSET); 02406 RNA_def_property_ui_text(prop, "Object Screw", "Use the distance between the objects to make a screw"); 02407 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02408 02409 /*prop= RNA_def_property(srna, "use_angle_object", PROP_BOOLEAN, PROP_NONE); 02410 RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_SCREW_OBJECT_ANGLE); 02411 RNA_def_property_ui_text(prop, "Object Angle", "Use the angle between the objects rather than the fixed angle"); 02412 RNA_def_property_update(prop, 0, "rna_Modifier_update");*/ 02413 } 02414 02415 void RNA_def_modifier(BlenderRNA *brna) 02416 { 02417 StructRNA *srna; 02418 PropertyRNA *prop; 02419 02420 /* data */ 02421 srna= RNA_def_struct(brna, "Modifier", NULL); 02422 RNA_def_struct_ui_text(srna , "Modifier", "Modifier affecting the geometry data of an object"); 02423 RNA_def_struct_refine_func(srna, "rna_Modifier_refine"); 02424 RNA_def_struct_path_func(srna, "rna_Modifier_path"); 02425 RNA_def_struct_sdna(srna, "ModifierData"); 02426 02427 /* strings */ 02428 prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE); 02429 RNA_def_property_string_funcs(prop, NULL, NULL, "rna_Modifier_name_set"); 02430 RNA_def_property_ui_text(prop, "Name", "Modifier name"); 02431 RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER|NA_RENAME, NULL); 02432 RNA_def_struct_name_property(srna, prop); 02433 02434 /* enums */ 02435 prop= RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE); 02436 RNA_def_property_clear_flag(prop, PROP_EDITABLE); 02437 RNA_def_property_enum_sdna(prop, NULL, "type"); 02438 RNA_def_property_enum_items(prop, modifier_type_items); 02439 RNA_def_property_ui_text(prop, "Type", ""); 02440 02441 /* flags */ 02442 prop= RNA_def_property(srna, "show_viewport", PROP_BOOLEAN, PROP_NONE); 02443 RNA_def_property_boolean_sdna(prop, NULL, "mode", eModifierMode_Realtime); 02444 RNA_def_property_ui_text(prop, "Realtime", "Realtime display of a modifier"); 02445 RNA_def_property_flag(prop, PROP_LIB_EXCEPTION); 02446 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02447 RNA_def_property_ui_icon(prop, ICON_RESTRICT_VIEW_OFF, 0); 02448 02449 prop= RNA_def_property(srna, "show_render", PROP_BOOLEAN, PROP_NONE); 02450 RNA_def_property_boolean_sdna(prop, NULL, "mode", eModifierMode_Render); 02451 RNA_def_property_ui_text(prop, "Render", "Use modifier during rendering"); 02452 RNA_def_property_ui_icon(prop, ICON_SCENE, 0); 02453 RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, NULL); 02454 02455 prop= RNA_def_property(srna, "show_in_editmode", PROP_BOOLEAN, PROP_NONE); 02456 RNA_def_property_boolean_sdna(prop, NULL, "mode", eModifierMode_Editmode); 02457 RNA_def_property_ui_text(prop, "Editmode", "Use modifier while in the edit mode"); 02458 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02459 RNA_def_property_ui_icon(prop, ICON_EDITMODE_HLT, 0); 02460 02461 prop= RNA_def_property(srna, "show_on_cage", PROP_BOOLEAN, PROP_NONE); 02462 RNA_def_property_boolean_sdna(prop, NULL, "mode", eModifierMode_OnCage); 02463 RNA_def_property_ui_text(prop, "On Cage", "Enable direct editing of modifier control cage"); 02464 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02465 02466 prop= RNA_def_property(srna, "show_expanded", PROP_BOOLEAN, PROP_NONE); 02467 RNA_def_property_boolean_sdna(prop, NULL, "mode", eModifierMode_Expanded); 02468 RNA_def_property_ui_text(prop, "Expanded", "Set modifier expanded in the user interface"); 02469 RNA_def_property_ui_icon(prop, ICON_TRIA_RIGHT, 1); 02470 02471 prop= RNA_def_property(srna, "use_apply_on_spline", PROP_BOOLEAN, PROP_NONE); 02472 RNA_def_property_boolean_sdna(prop, NULL, "mode", eModifierMode_ApplyOnSpline); 02473 RNA_def_property_ui_text(prop, "Apply on spline", "Apply this and all preceding deformation modifiers on splines' points rather than on filled curve/surface"); 02474 RNA_def_property_ui_icon(prop, ICON_SURFACE_DATA, 0); 02475 RNA_def_property_update(prop, 0, "rna_Modifier_update"); 02476 02477 /* types */ 02478 rna_def_modifier_subsurf(brna); 02479 rna_def_modifier_lattice(brna); 02480 rna_def_modifier_curve(brna); 02481 rna_def_modifier_build(brna); 02482 rna_def_modifier_mirror(brna); 02483 rna_def_modifier_decimate(brna); 02484 rna_def_modifier_wave(brna); 02485 rna_def_modifier_armature(brna); 02486 rna_def_modifier_hook(brna); 02487 rna_def_modifier_softbody(brna); 02488 rna_def_modifier_boolean(brna); 02489 rna_def_modifier_array(brna); 02490 rna_def_modifier_edgesplit(brna); 02491 rna_def_modifier_displace(brna); 02492 rna_def_modifier_uvproject(brna); 02493 rna_def_modifier_smooth(brna); 02494 rna_def_modifier_cast(brna); 02495 rna_def_modifier_meshdeform(brna); 02496 rna_def_modifier_particlesystem(brna); 02497 rna_def_modifier_particleinstance(brna); 02498 rna_def_modifier_explode(brna); 02499 rna_def_modifier_cloth(brna); 02500 rna_def_modifier_collision(brna); 02501 rna_def_modifier_bevel(brna); 02502 rna_def_modifier_shrinkwrap(brna); 02503 rna_def_modifier_fluidsim(brna); 02504 rna_def_modifier_mask(brna); 02505 rna_def_modifier_simpledeform(brna); 02506 rna_def_modifier_warp(brna); 02507 rna_def_modifier_multires(brna); 02508 rna_def_modifier_surface(brna); 02509 rna_def_modifier_smoke(brna); 02510 rna_def_modifier_solidify(brna); 02511 rna_def_modifier_screw(brna); 02512 } 02513 02514 #endif