| 
									
										
										
										
											2010-04-11 22:12:30 +00:00
										 |  |  | /*
 | 
					
						
							| 
									
										
										
										
											2011-10-23 17:52:20 +00:00
										 |  |  |  * This program is free software; you can redistribute it and/or | 
					
						
							|  |  |  |  * modify it under the terms of the GNU General Public License | 
					
						
							|  |  |  |  * as published by the Free Software Foundation; either version 2 | 
					
						
							|  |  |  |  * of the License, or (at your option) any later version. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This program is distributed in the hope that it will be useful, | 
					
						
							|  |  |  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
					
						
							|  |  |  |  * GNU General Public License for more details. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * You should have received a copy of the GNU General Public License | 
					
						
							| 
									
										
										
										
											2020-05-09 17:14:35 +10:00
										 |  |  |  * along with this program; if not, write to the Free Software Foundation, | 
					
						
							| 
									
										
										
										
											2011-10-23 17:52:20 +00:00
										 |  |  |  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * The Original Code is Copyright (C) 2005 by the Blender Foundation. | 
					
						
							|  |  |  |  * All rights reserved. | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2010-04-11 22:12:30 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-18 08:08:12 +11:00
										 |  |  | /** \file
 | 
					
						
							|  |  |  |  * \ingroup modifiers | 
					
						
							| 
									
										
										
										
											2011-02-25 13:57:17 +00:00
										 |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-25 11:39:14 +01:00
										 |  |  | #include "BLI_utildefines.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include "BLI_math.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-05 10:41:03 -04:00
										 |  |  | #include "BLT_translation.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-10-01 09:38:00 -05:00
										 |  |  | #include "DNA_defaults.h"
 | 
					
						
							| 
									
										
										
										
											2018-05-17 16:21:04 +02:00
										 |  |  | #include "DNA_mesh_types.h"
 | 
					
						
							| 
									
										
										
										
											2010-04-12 00:36:50 +00:00
										 |  |  | #include "DNA_meshdata_types.h"
 | 
					
						
							| 
									
										
										
										
											2020-03-19 09:33:03 +01:00
										 |  |  | #include "DNA_object_types.h"
 | 
					
						
							|  |  |  | #include "DNA_scene_types.h"
 | 
					
						
							| 
									
										
										
										
											2020-06-05 10:41:03 -04:00
										 |  |  | #include "DNA_screen_types.h"
 | 
					
						
							| 
									
										
										
										
											2010-04-11 22:12:30 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-17 16:21:04 +02:00
										 |  |  | #include "BKE_bvhutils.h"
 | 
					
						
							| 
									
										
										
										
											2020-06-05 10:41:03 -04:00
										 |  |  | #include "BKE_context.h"
 | 
					
						
							| 
									
										
										
										
											2020-02-10 12:58:59 +01:00
										 |  |  | #include "BKE_lib_id.h"
 | 
					
						
							| 
									
										
										
										
											2018-05-17 16:21:04 +02:00
										 |  |  | #include "BKE_mesh.h"
 | 
					
						
							| 
									
										
										
										
											2020-06-05 10:41:03 -04:00
										 |  |  | #include "BKE_screen.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include "UI_interface.h"
 | 
					
						
							|  |  |  | #include "UI_resources.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include "RNA_access.h"
 | 
					
						
							| 
									
										
										
										
											2018-05-17 16:21:04 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-23 16:36:44 +02:00
										 |  |  | #include "DEG_depsgraph.h"
 | 
					
						
							|  |  |  | #include "DEG_depsgraph_query.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-04-11 22:12:30 +00:00
										 |  |  | #include "MOD_modifiertypes.h"
 | 
					
						
							| 
									
										
										
										
											2020-06-05 10:41:03 -04:00
										 |  |  | #include "MOD_ui_common.h"
 | 
					
						
							| 
									
										
										
										
											2010-04-11 22:12:30 +00:00
										 |  |  | #include "MOD_util.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-23 17:25:44 +02:00
										 |  |  | #include "BLO_read_write.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-04-12 22:33:43 +00:00
										 |  |  | #include "MEM_guardedalloc.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-06-17 17:04:27 +02:00
										 |  |  | static void initData(ModifierData *md) | 
					
						
							| 
									
										
										
										
											2010-04-11 22:12:30 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2012-05-06 13:38:33 +00:00
										 |  |  |   SurfaceModifierData *surmd = (SurfaceModifierData *)md; | 
					
						
							| 
									
										
										
										
											2018-06-17 17:04:27 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-10-01 09:38:00 -05:00
										 |  |  |   BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(surmd, modifier)); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   MEMCPY_STRUCT_AFTER(surmd, DNA_struct_default_get(SurfaceModifierData), modifier); | 
					
						
							| 
									
										
										
										
											2019-01-28 21:48:09 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static void copyData(const ModifierData *md_src, ModifierData *md_dst, const int flag) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   SurfaceModifierData *surmd_dst = (SurfaceModifierData *)md_dst; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-05-08 10:14:02 +02:00
										 |  |  |   BKE_modifier_copydata_generic(md_src, md_dst, flag); | 
					
						
							| 
									
										
										
										
											2019-01-28 21:48:09 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |   surmd_dst->bvhtree = NULL; | 
					
						
							|  |  |  |   surmd_dst->mesh = NULL; | 
					
						
							|  |  |  |   surmd_dst->x = NULL; | 
					
						
							|  |  |  |   surmd_dst->v = NULL; | 
					
						
							| 
									
										
										
										
											2010-04-11 22:12:30 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static void freeData(ModifierData *md) | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2012-05-06 13:38:33 +00:00
										 |  |  |   SurfaceModifierData *surmd = (SurfaceModifierData *)md; | 
					
						
							| 
									
										
										
										
											2012-03-06 18:40:15 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   if (surmd) { | 
					
						
							| 
									
										
										
										
											2012-03-24 06:24:53 +00:00
										 |  |  |     if (surmd->bvhtree) { | 
					
						
							| 
									
										
										
										
											2010-04-11 22:12:30 +00:00
										 |  |  |       free_bvhtree_from_mesh(surmd->bvhtree); | 
					
						
							| 
									
										
										
										
											2018-05-08 14:21:02 +02:00
										 |  |  |       MEM_SAFE_FREE(surmd->bvhtree); | 
					
						
							| 
									
										
										
										
											2010-04-11 22:12:30 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-17 16:21:04 +02:00
										 |  |  |     if (surmd->mesh) { | 
					
						
							|  |  |  |       BKE_id_free(NULL, surmd->mesh); | 
					
						
							|  |  |  |       surmd->mesh = NULL; | 
					
						
							| 
									
										
										
										
											2018-05-08 14:21:02 +02:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2010-04-11 22:12:30 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-08 14:21:02 +02:00
										 |  |  |     MEM_SAFE_FREE(surmd->x); | 
					
						
							| 
									
										
										
										
											2018-06-17 17:04:27 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-08 14:21:02 +02:00
										 |  |  |     MEM_SAFE_FREE(surmd->v); | 
					
						
							| 
									
										
										
										
											2010-04-11 22:12:30 +00:00
										 |  |  |   } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-02 03:59:19 +00:00
										 |  |  | static bool dependsOnTime(ModifierData *UNUSED(md)) | 
					
						
							| 
									
										
										
										
											2010-04-11 22:12:30 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2013-06-02 03:59:19 +00:00
										 |  |  |   return true; | 
					
						
							| 
									
										
										
										
											2010-04-11 22:12:30 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-12 08:04:56 +02:00
										 |  |  | static void deformVerts(ModifierData *md, | 
					
						
							| 
									
										
										
										
											2018-05-12 08:21:07 +02:00
										 |  |  |                         const ModifierEvalContext *ctx, | 
					
						
							| 
									
										
										
										
											2018-05-17 16:21:04 +02:00
										 |  |  |                         Mesh *mesh, | 
					
						
							| 
									
										
										
										
											2018-05-12 08:04:56 +02:00
										 |  |  |                         float (*vertexCos)[3], | 
					
						
							| 
									
										
										
										
											2018-11-27 17:21:16 +01:00
										 |  |  |                         int numVerts) | 
					
						
							| 
									
										
										
										
											2010-04-11 22:12:30 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2012-05-06 13:38:33 +00:00
										 |  |  |   SurfaceModifierData *surmd = (SurfaceModifierData *)md; | 
					
						
							| 
									
										
										
										
											2018-05-23 16:36:44 +02:00
										 |  |  |   const int cfra = (int)DEG_get_ctime(ctx->depsgraph); | 
					
						
							| 
									
										
										
										
											2019-04-17 06:17:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-01-22 12:51:14 +01:00
										 |  |  |   /* Free mesh and BVH cache. */ | 
					
						
							|  |  |  |   if (surmd->bvhtree) { | 
					
						
							|  |  |  |     free_bvhtree_from_mesh(surmd->bvhtree); | 
					
						
							|  |  |  |     MEM_SAFE_FREE(surmd->bvhtree); | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2019-04-17 06:17:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-17 16:21:04 +02:00
										 |  |  |   if (surmd->mesh) { | 
					
						
							|  |  |  |     BKE_id_free(NULL, surmd->mesh); | 
					
						
							| 
									
										
										
										
											2019-01-22 12:51:14 +01:00
										 |  |  |     surmd->mesh = NULL; | 
					
						
							| 
									
										
										
										
											2018-05-17 16:21:04 +02:00
										 |  |  |   } | 
					
						
							| 
									
										
										
										
											2019-04-17 06:17:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-17 16:21:04 +02:00
										 |  |  |   if (mesh) { | 
					
						
							|  |  |  |     /* Not possible to use get_mesh() in this case as we'll modify its vertices
 | 
					
						
							|  |  |  |      * and get_mesh() would return 'mesh' directly. */ | 
					
						
							| 
									
										
										
										
											2020-10-07 14:27:33 +02:00
										 |  |  |     surmd->mesh = (Mesh *)BKE_id_copy_ex(NULL, (ID *)mesh, NULL, LIB_ID_COPY_LOCALIZE); | 
					
						
							| 
									
										
										
										
											2018-05-17 16:21:04 +02:00
										 |  |  |   } | 
					
						
							| 
									
										
										
										
											2018-11-27 17:21:16 +01:00
										 |  |  |   else { | 
					
						
							|  |  |  |     surmd->mesh = MOD_deform_mesh_eval_get(ctx->object, NULL, NULL, NULL, numVerts, false, false); | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2019-04-17 06:17:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-01 17:33:04 +02:00
										 |  |  |   if (!ctx->object->pd) { | 
					
						
							| 
									
										
										
										
											2010-04-11 22:12:30 +00:00
										 |  |  |     printf("SurfaceModifier deformVerts: Should not happen!\n"); | 
					
						
							|  |  |  |     return; | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2019-04-17 06:17:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-17 16:21:04 +02:00
										 |  |  |   if (surmd->mesh) { | 
					
						
							| 
									
										
										
										
											2019-09-19 13:32:36 +10:00
										 |  |  |     uint numverts = 0, i = 0; | 
					
						
							| 
									
										
										
										
											2010-04-11 22:12:30 +00:00
										 |  |  |     int init = 0; | 
					
						
							|  |  |  |     float *vec; | 
					
						
							|  |  |  |     MVert *x, *v; | 
					
						
							| 
									
										
										
										
											2019-04-17 06:17:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-22 06:28:35 +10:00
										 |  |  |     BKE_mesh_vert_coords_apply(surmd->mesh, vertexCos); | 
					
						
							| 
									
										
										
										
											2018-05-17 16:21:04 +02:00
										 |  |  |     BKE_mesh_calc_normals(surmd->mesh); | 
					
						
							| 
									
										
										
										
											2019-04-17 06:17:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-17 16:21:04 +02:00
										 |  |  |     numverts = surmd->mesh->totvert; | 
					
						
							| 
									
										
										
										
											2019-04-17 06:17:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-05-06 13:38:33 +00:00
										 |  |  |     if (numverts != surmd->numverts || surmd->x == NULL || surmd->v == NULL || | 
					
						
							| 
									
										
										
										
											2018-05-23 16:36:44 +02:00
										 |  |  |         cfra != surmd->cfra + 1) { | 
					
						
							| 
									
										
										
										
											2012-03-24 06:24:53 +00:00
										 |  |  |       if (surmd->x) { | 
					
						
							| 
									
										
										
										
											2010-04-11 22:12:30 +00:00
										 |  |  |         MEM_freeN(surmd->x); | 
					
						
							|  |  |  |         surmd->x = NULL; | 
					
						
							|  |  |  |       } | 
					
						
							| 
									
										
										
										
											2012-03-24 06:24:53 +00:00
										 |  |  |       if (surmd->v) { | 
					
						
							| 
									
										
										
										
											2010-04-11 22:12:30 +00:00
										 |  |  |         MEM_freeN(surmd->v); | 
					
						
							|  |  |  |         surmd->v = NULL; | 
					
						
							|  |  |  |       } | 
					
						
							| 
									
										
										
										
											2019-04-17 06:17:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-14 22:14:20 +01:00
										 |  |  |       surmd->x = MEM_calloc_arrayN(numverts, sizeof(MVert), "MVert"); | 
					
						
							|  |  |  |       surmd->v = MEM_calloc_arrayN(numverts, sizeof(MVert), "MVert"); | 
					
						
							| 
									
										
										
										
											2019-04-17 06:17:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-04-11 22:12:30 +00:00
										 |  |  |       surmd->numverts = numverts; | 
					
						
							| 
									
										
										
										
											2019-04-17 06:17:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-04-11 22:12:30 +00:00
										 |  |  |       init = 1; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2019-04-17 06:17:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-04-11 22:12:30 +00:00
										 |  |  |     /* convert to global coordinates and calculate velocity */ | 
					
						
							| 
									
										
										
										
											2012-05-06 13:38:33 +00:00
										 |  |  |     for (i = 0, x = surmd->x, v = surmd->v; i < numverts; i++, x++, v++) { | 
					
						
							| 
									
										
										
										
											2018-05-17 16:21:04 +02:00
										 |  |  |       vec = surmd->mesh->mvert[i].co; | 
					
						
							| 
									
										
										
										
											2018-05-01 17:33:04 +02:00
										 |  |  |       mul_m4_v3(ctx->object->obmat, vec); | 
					
						
							| 
									
										
										
										
											2019-04-17 06:17:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-22 09:15:10 +10:00
										 |  |  |       if (init) { | 
					
						
							| 
									
										
										
										
											2010-04-11 22:12:30 +00:00
										 |  |  |         v->co[0] = v->co[1] = v->co[2] = 0.0f; | 
					
						
							| 
									
										
										
										
											2019-04-22 09:15:10 +10:00
										 |  |  |       } | 
					
						
							|  |  |  |       else { | 
					
						
							| 
									
										
										
										
											2010-04-11 22:12:30 +00:00
										 |  |  |         sub_v3_v3v3(v->co, vec, x->co); | 
					
						
							| 
									
										
										
										
											2019-04-22 09:15:10 +10:00
										 |  |  |       } | 
					
						
							| 
									
										
										
										
											2019-04-17 06:17:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-04-11 22:12:30 +00:00
										 |  |  |       copy_v3_v3(x->co, vec); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2019-04-17 06:17:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-23 16:36:44 +02:00
										 |  |  |     surmd->cfra = cfra; | 
					
						
							| 
									
										
										
										
											2019-04-17 06:17:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-01-22 12:51:14 +01:00
										 |  |  |     surmd->bvhtree = MEM_callocN(sizeof(BVHTreeFromMesh), "BVHTreeFromMesh"); | 
					
						
							| 
									
										
										
										
											2019-04-17 06:17:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-22 09:15:10 +10:00
										 |  |  |     if (surmd->mesh->totpoly) { | 
					
						
							| 
									
										
										
										
											2018-05-17 16:21:04 +02:00
										 |  |  |       BKE_bvhtree_from_mesh_get(surmd->bvhtree, surmd->mesh, BVHTREE_FROM_LOOPTRI, 2); | 
					
						
							| 
									
										
										
										
											2019-04-22 09:15:10 +10:00
										 |  |  |     } | 
					
						
							|  |  |  |     else { | 
					
						
							| 
									
										
										
										
											2018-05-17 16:21:04 +02:00
										 |  |  |       BKE_bvhtree_from_mesh_get(surmd->bvhtree, surmd->mesh, BVHTREE_FROM_EDGES, 2); | 
					
						
							| 
									
										
										
										
											2019-04-22 09:15:10 +10:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2010-04-11 22:12:30 +00:00
										 |  |  |   } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-02 14:13:26 -05:00
										 |  |  | static void panel_draw(const bContext *UNUSED(C), Panel *panel) | 
					
						
							| 
									
										
										
										
											2020-06-05 10:41:03 -04:00
										 |  |  | { | 
					
						
							|  |  |  |   uiLayout *layout = panel->layout; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-02 14:13:26 -05:00
										 |  |  |   PointerRNA *ptr = modifier_panel_get_property_pointers(panel, NULL); | 
					
						
							| 
									
										
										
										
											2020-06-05 10:41:03 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |   uiItemL(layout, IFACE_("Settings are inside the Physics tab"), ICON_NONE); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-02 14:13:26 -05:00
										 |  |  |   modifier_panel_end(layout, ptr); | 
					
						
							| 
									
										
										
										
											2020-06-05 10:41:03 -04:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static void panelRegister(ARegionType *region_type) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   modifier_panel_register(region_type, eModifierType_Surface, panel_draw); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-23 17:25:44 +02:00
										 |  |  | static void blendRead(BlendDataReader *UNUSED(reader), ModifierData *md) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   SurfaceModifierData *surmd = (SurfaceModifierData *)md; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   surmd->mesh = NULL; | 
					
						
							|  |  |  |   surmd->bvhtree = NULL; | 
					
						
							|  |  |  |   surmd->x = NULL; | 
					
						
							|  |  |  |   surmd->v = NULL; | 
					
						
							|  |  |  |   surmd->numverts = 0; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-04-11 22:12:30 +00:00
										 |  |  | ModifierTypeInfo modifierType_Surface = { | 
					
						
							|  |  |  |     /* name */ "Surface", | 
					
						
							|  |  |  |     /* structName */ "SurfaceModifierData", | 
					
						
							|  |  |  |     /* structSize */ sizeof(SurfaceModifierData), | 
					
						
							| 
									
										
										
										
											2020-09-25 12:49:18 +02:00
										 |  |  |     /* srna */ &RNA_SurfaceModifier, | 
					
						
							| 
									
										
										
										
											2010-04-11 22:12:30 +00:00
										 |  |  |     /* type */ eModifierTypeType_OnlyDeform, | 
					
						
							| 
									
										
										
										
											2012-05-06 13:38:33 +00:00
										 |  |  |     /* flags */ eModifierTypeFlag_AcceptsMesh | eModifierTypeFlag_AcceptsCVs | | 
					
						
							|  |  |  |         eModifierTypeFlag_NoUserAdd, | 
					
						
							| 
									
										
										
										
											2020-09-25 12:45:30 +02:00
										 |  |  |     /* icon */ ICON_MOD_PHYSICS, | 
					
						
							| 
									
										
										
										
											2019-04-17 06:17:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-01-28 21:48:09 +01:00
										 |  |  |     /* copyData */ copyData, | 
					
						
							| 
									
										
										
										
											2019-04-17 06:17:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-17 16:21:04 +02:00
										 |  |  |     /* deformVerts */ deformVerts, | 
					
						
							| 
									
										
										
										
											2011-03-05 10:29:10 +00:00
										 |  |  |     /* deformMatrices */ NULL, | 
					
						
							|  |  |  |     /* deformVertsEM */ NULL, | 
					
						
							|  |  |  |     /* deformMatricesEM */ NULL, | 
					
						
							| 
									
										
										
										
											2020-04-21 13:09:41 +02:00
										 |  |  |     /* modifyMesh */ NULL, | 
					
						
							|  |  |  |     /* modifyHair */ NULL, | 
					
						
							| 
									
										
										
										
											2020-12-10 14:35:02 +01:00
										 |  |  |     /* modifyGeometrySet */ NULL, | 
					
						
							| 
									
										
										
										
											2019-04-17 06:17:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-04-11 22:12:30 +00:00
										 |  |  |     /* initData */ initData, | 
					
						
							| 
									
										
										
										
											2011-03-05 10:29:10 +00:00
										 |  |  |     /* requiredDataMask */ NULL, | 
					
						
							| 
									
										
										
										
											2010-04-11 22:12:30 +00:00
										 |  |  |     /* freeData */ freeData, | 
					
						
							| 
									
										
										
										
											2011-03-05 10:29:10 +00:00
										 |  |  |     /* isDisabled */ NULL, | 
					
						
							| 
									
										
											  
											
												Depsgraph: New dependency graph integration commit
This commit integrates the work done so far on the new dependency graph system,
where goal was to replace legacy depsgraph with the new one, supporting loads of
neat features like:
- More granular dependency relation nature, which solves issues with fake cycles
  in the dependencies.
- Move towards all-animatable, by better integration of drivers into the system.
- Lay down some basis for upcoming copy-on-write, overrides and so on.
The new system is living side-by-side with the previous one and disabled by
default, so nothing will become suddenly broken. The way to enable new depsgraph
is to pass `--new-depsgraph` command line argument.
It's a bit early to consider the system production-ready, there are some TODOs
and issues were discovered during the merge period, they'll be addressed ASAP.
But it's important to merge, because it's the only way to attract artists to
really start testing this system.
There are number of assorted documents related on the design of the new system:
* http://wiki.blender.org/index.php/User:Aligorith/GSoC2013_Depsgraph#Design_Documents
* http://wiki.blender.org/index.php/User:Nazg-gul/DependencyGraph
There are also some user-related information online:
* http://code.blender.org/2015/02/blender-dependency-graph-branch-for-users/
* http://code.blender.org/2015/03/more-dependency-graph-tricks/
Kudos to everyone who was involved into the project:
- Joshua "Aligorith" Leung -- design specification, initial code
- Lukas "lukas_t" Toenne -- integrating code into blender, with further fixes
- Sergey "Sergey" "Sharybin" -- some mocking around, trying to wrap up the
  project and so
- Bassam "slikdigit" Kurdali -- stressing the new system, reporting all the
  issues and recording/writing documentation.
- Everyone else who i forgot to mention here :)
											
										 
											2015-05-12 15:05:57 +05:00
										 |  |  |     /* updateDepsgraph */ NULL, | 
					
						
							| 
									
										
										
										
											2010-04-11 22:12:30 +00:00
										 |  |  |     /* dependsOnTime */ dependsOnTime, | 
					
						
							| 
									
										
										
										
											2011-03-05 10:29:10 +00:00
										 |  |  |     /* dependsOnNormals */ NULL, | 
					
						
							| 
									
										
										
										
											2015-10-05 15:57:10 +02:00
										 |  |  |     /* foreachIDLink */ NULL, | 
					
						
							|  |  |  |     /* foreachTexLink */ NULL, | 
					
						
							| 
									
										
										
										
											2019-03-18 15:56:16 +01:00
										 |  |  |     /* freeRuntimeData */ NULL, | 
					
						
							| 
									
										
										
										
											2020-06-05 10:41:03 -04:00
										 |  |  |     /* panelRegister */ panelRegister, | 
					
						
							| 
									
										
										
										
											2020-06-15 17:37:07 +02:00
										 |  |  |     /* blendWrite */ NULL, | 
					
						
							| 
									
										
										
										
											2020-06-23 17:25:44 +02:00
										 |  |  |     /* blendRead */ blendRead, | 
					
						
							| 
									
										
										
										
											2010-04-11 22:12:30 +00:00
										 |  |  | }; |