=bmesh= fixed bunches of modifier stack bugs
This commit is contained in:
		@@ -881,7 +881,7 @@ static void add_weight_mcol_dm(Object *ob, DerivedMesh *dm)
 | 
				
			|||||||
	unsigned char *wtcol;
 | 
						unsigned char *wtcol;
 | 
				
			||||||
	unsigned char(*wlcol)[4] = NULL;
 | 
						unsigned char(*wlcol)[4] = NULL;
 | 
				
			||||||
	BLI_array_declare(wlcol);
 | 
						BLI_array_declare(wlcol);
 | 
				
			||||||
	int i, totface=dm->getNumTessFaces(dm), totpoly=dm->getNumFaces, totloop;
 | 
						int i, totface=dm->getNumTessFaces(dm), totloop;
 | 
				
			||||||
	int *origIndex = dm->getVertDataArray(dm, CD_ORIGINDEX);
 | 
						int *origIndex = dm->getVertDataArray(dm, CD_ORIGINDEX);
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	wtcol = MEM_callocN (sizeof (unsigned char) * totface*4*4, "weightmap");
 | 
						wtcol = MEM_callocN (sizeof (unsigned char) * totface*4*4, "weightmap");
 | 
				
			||||||
@@ -889,11 +889,12 @@ static void add_weight_mcol_dm(Object *ob, DerivedMesh *dm)
 | 
				
			|||||||
	/*first add colors to the tesselation faces*/
 | 
						/*first add colors to the tesselation faces*/
 | 
				
			||||||
	memset(wtcol, 0x55, sizeof (unsigned char) * totface*4*4);
 | 
						memset(wtcol, 0x55, sizeof (unsigned char) * totface*4*4);
 | 
				
			||||||
	for (i=0; i<totface; i++, mf++) {
 | 
						for (i=0; i<totface; i++, mf++) {
 | 
				
			||||||
		calc_weightpaint_vert_color(ob, coba, mf->v1, &wtcol[(i*4 + 0)*4]); 
 | 
							/*origindex being NULL means we're operating on original mesh data*/
 | 
				
			||||||
		calc_weightpaint_vert_color(ob, coba, mf->v2, &wtcol[(i*4 + 1)*4]); 
 | 
							calc_weightpaint_vert_color(ob, coba, origIndex ? origIndex[mf->v1] : mf->v1, &wtcol[(i*4 + 0)*4]); 
 | 
				
			||||||
		calc_weightpaint_vert_color(ob, coba, mf->v3, &wtcol[(i*4 + 2)*4]); 
 | 
							calc_weightpaint_vert_color(ob, coba, origIndex ? origIndex[mf->v2] : mf->v2, &wtcol[(i*4 + 1)*4]); 
 | 
				
			||||||
 | 
							calc_weightpaint_vert_color(ob, coba, origIndex ? origIndex[mf->v3] : mf->v3, &wtcol[(i*4 + 2)*4]); 
 | 
				
			||||||
		if (mf->v4)
 | 
							if (mf->v4)
 | 
				
			||||||
			calc_weightpaint_vert_color(ob, coba, mf->v4, &wtcol[(i*4 + 3)*4]); 
 | 
								calc_weightpaint_vert_color(ob, coba, origIndex ? origIndex[mf->v4] : mf->v4, &wtcol[(i*4 + 3)*4]); 
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	CustomData_add_layer(&dm->faceData, CD_WEIGHT_MCOL, CD_ASSIGN, wtcol, totface);
 | 
						CustomData_add_layer(&dm->faceData, CD_WEIGHT_MCOL, CD_ASSIGN, wtcol, totface);
 | 
				
			||||||
@@ -904,9 +905,12 @@ static void add_weight_mcol_dm(Object *ob, DerivedMesh *dm)
 | 
				
			|||||||
	for (; !dfiter->done; dfiter->step(dfiter)) {
 | 
						for (; !dfiter->done; dfiter->step(dfiter)) {
 | 
				
			||||||
		dliter = dfiter->getLoopsIter(dfiter);
 | 
							dliter = dfiter->getLoopsIter(dfiter);
 | 
				
			||||||
		for (; !dliter->done; dliter->step(dliter), totloop++) {
 | 
							for (; !dliter->done; dliter->step(dliter), totloop++) {
 | 
				
			||||||
 | 
								int *oi = (int*)dliter->getVertCDData(dliter, CD_ORIGINDEX, -1);
 | 
				
			||||||
 | 
								
 | 
				
			||||||
			BLI_array_growone(wlcol);
 | 
								BLI_array_growone(wlcol);
 | 
				
			||||||
			calc_weightpaint_vert_color(ob, coba, dliter->vindex, (unsigned
 | 
								
 | 
				
			||||||
char *)&wlcol[totloop]);			 
 | 
								calc_weightpaint_vert_color(ob, coba, oi ? *oi : dliter->vindex, 
 | 
				
			||||||
 | 
								                            (unsigned char *)&wlcol[totloop]);			 
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1108,9 +1112,6 @@ static void mesh_calc_modifiers(Scene *scene, Object *ob, float (*inputVertexCos
 | 
				
			|||||||
					CDDM_calc_normals(dm);
 | 
										CDDM_calc_normals(dm);
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				if((dataMask & CD_MASK_WEIGHT_MCOL) && (ob->mode & OB_MODE_WEIGHT_PAINT))
 | 
					 | 
				
			||||||
					add_weight_mcol_dm(ob, dm);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
				/* Constructive modifiers need to have an origindex
 | 
									/* Constructive modifiers need to have an origindex
 | 
				
			||||||
				 * otherwise they wont have anywhere to copy the data from.
 | 
									 * otherwise they wont have anywhere to copy the data from.
 | 
				
			||||||
				 *
 | 
									 *
 | 
				
			||||||
@@ -1133,6 +1134,10 @@ static void mesh_calc_modifiers(Scene *scene, Object *ob, float (*inputVertexCos
 | 
				
			|||||||
					orig = DM_get_face_data_layer(dm, CD_ORIGINDEX);
 | 
										orig = DM_get_face_data_layer(dm, CD_ORIGINDEX);
 | 
				
			||||||
					for(i=0; i<dm->numPolyData; i++) *orig++= i;
 | 
										for(i=0; i<dm->numPolyData; i++) *orig++= i;
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									if((dataMask & CD_MASK_WEIGHT_MCOL) && (ob->mode & OB_MODE_WEIGHT_PAINT))
 | 
				
			||||||
 | 
										add_weight_mcol_dm(ob, dm);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			
 | 
								
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1634,7 +1634,7 @@ DerivedMesh *CDDM_from_mesh(Mesh *mesh, Object *UNUSED(ob))
 | 
				
			|||||||
	return dm;
 | 
						return dm;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DerivedMesh *CDDM_from_editmesh(EditMesh *em, Mesh *UNUSED(me))
 | 
					DerivedMesh *disabled__CDDM_from_editmesh(EditMesh *em, Mesh *UNUSED(me))
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	DerivedMesh *dm = CDDM_new(BLI_countlist(&em->verts),
 | 
						DerivedMesh *dm = CDDM_new(BLI_countlist(&em->verts),
 | 
				
			||||||
	                           BLI_countlist(&em->edges),
 | 
						                           BLI_countlist(&em->edges),
 | 
				
			||||||
@@ -2025,10 +2025,10 @@ void *cddm_loopiter_getvertcddata(void *self, int type, int layer)
 | 
				
			|||||||
	CDDM_LoopIter *iter = self;
 | 
						CDDM_LoopIter *iter = self;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (layer == -1) return CustomData_get(&iter->cddm->dm.vertData, 
 | 
						if (layer == -1) return CustomData_get(&iter->cddm->dm.vertData, 
 | 
				
			||||||
		                               iter->cddm->mloop[iter->head.vindex].v,
 | 
							                               iter->cddm->mloop[iter->head.index].v,
 | 
				
			||||||
					       type);
 | 
										       type);
 | 
				
			||||||
	else return CustomData_get_n(&iter->cddm->dm.vertData, type, 
 | 
						else return CustomData_get_n(&iter->cddm->dm.vertData, type, 
 | 
				
			||||||
	                             iter->cddm->mloop[iter->head.vindex].v, layer);
 | 
						                             iter->cddm->mloop[iter->head.index].v, layer);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DMLoopIter *cddmiter_get_loopiter(void *self)
 | 
					DMLoopIter *cddmiter_get_loopiter(void *self)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -896,7 +896,7 @@ static DerivedMesh *ss_to_cdderivedmesh(CCGSubSurf *ss, int ssFromEditmesh,
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void ss_sync_from_derivedmesh(CCGSubSurf *ss, DerivedMesh *dm,
 | 
					static int ss_sync_from_derivedmesh(CCGSubSurf *ss, DerivedMesh *dm,
 | 
				
			||||||
									 float (*vertexCos)[3], int useFlatSubdiv)
 | 
														 float (*vertexCos)[3], int useFlatSubdiv)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	float creaseFactor = (float) ccgSubSurf_getSubdivisionLevels(ss);
 | 
						float creaseFactor = (float) ccgSubSurf_getSubdivisionLevels(ss);
 | 
				
			||||||
@@ -976,7 +976,7 @@ static void ss_sync_from_derivedmesh(CCGSubSurf *ss, DerivedMesh *dm,
 | 
				
			|||||||
				hasGivenError = 1;
 | 
									hasGivenError = 1;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			return;
 | 
								return 0;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		((int*)ccgSubSurf_getFaceUserData(ss, f))[1] = (index)? *index++: i;
 | 
							((int*)ccgSubSurf_getFaceUserData(ss, f))[1] = (index)? *index++: i;
 | 
				
			||||||
@@ -986,6 +986,7 @@ static void ss_sync_from_derivedmesh(CCGSubSurf *ss, DerivedMesh *dm,
 | 
				
			|||||||
	ccgSubSurf_processSync(ss);
 | 
						ccgSubSurf_processSync(ss);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	BLI_array_free(fVerts);
 | 
						BLI_array_free(fVerts);
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/***/
 | 
					/***/
 | 
				
			||||||
@@ -3106,7 +3107,7 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss,
 | 
				
			|||||||
	ccgdm->useSubsurfUv = useSubsurfUv;
 | 
						ccgdm->useSubsurfUv = useSubsurfUv;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	totvert = ccgSubSurf_getNumVerts(ss);
 | 
						totvert = ccgSubSurf_getNumVerts(ss);
 | 
				
			||||||
	ccgdm->vertMap = MEM_mallocN(totvert * sizeof(*ccgdm->vertMap), "vertMap");
 | 
						ccgdm->vertMap = MEM_callocN(totvert * sizeof(*ccgdm->vertMap), "vertMap");
 | 
				
			||||||
	vi = ccgSubSurf_getVertIterator(ss);
 | 
						vi = ccgSubSurf_getVertIterator(ss);
 | 
				
			||||||
	for(; !ccgVertIterator_isStopped(vi); ccgVertIterator_next(vi)) {
 | 
						for(; !ccgVertIterator_isStopped(vi); ccgVertIterator_next(vi)) {
 | 
				
			||||||
		CCGVert *v = ccgVertIterator_getCurrent(vi);
 | 
							CCGVert *v = ccgVertIterator_getCurrent(vi);
 | 
				
			||||||
@@ -3116,7 +3117,7 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss,
 | 
				
			|||||||
	ccgVertIterator_free(vi);
 | 
						ccgVertIterator_free(vi);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	totedge = ccgSubSurf_getNumEdges(ss);
 | 
						totedge = ccgSubSurf_getNumEdges(ss);
 | 
				
			||||||
	ccgdm->edgeMap = MEM_mallocN(totedge * sizeof(*ccgdm->edgeMap), "edgeMap");
 | 
						ccgdm->edgeMap = MEM_callocN(totedge * sizeof(*ccgdm->edgeMap), "edgeMap");
 | 
				
			||||||
	ei = ccgSubSurf_getEdgeIterator(ss);
 | 
						ei = ccgSubSurf_getEdgeIterator(ss);
 | 
				
			||||||
	for(; !ccgEdgeIterator_isStopped(ei); ccgEdgeIterator_next(ei)) {
 | 
						for(; !ccgEdgeIterator_isStopped(ei); ccgEdgeIterator_next(ei)) {
 | 
				
			||||||
		CCGEdge *e = ccgEdgeIterator_getCurrent(ei);
 | 
							CCGEdge *e = ccgEdgeIterator_getCurrent(ei);
 | 
				
			||||||
@@ -3125,7 +3126,7 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss,
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	totface = ccgSubSurf_getNumFaces(ss);
 | 
						totface = ccgSubSurf_getNumFaces(ss);
 | 
				
			||||||
	ccgdm->faceMap = MEM_mallocN(totface * sizeof(*ccgdm->faceMap), "faceMap");
 | 
						ccgdm->faceMap = MEM_callocN(totface * sizeof(*ccgdm->faceMap), "faceMap");
 | 
				
			||||||
	fi = ccgSubSurf_getFaceIterator(ss);
 | 
						fi = ccgSubSurf_getFaceIterator(ss);
 | 
				
			||||||
	for(; !ccgFaceIterator_isStopped(fi); ccgFaceIterator_next(fi)) {
 | 
						for(; !ccgFaceIterator_isStopped(fi); ccgFaceIterator_next(fi)) {
 | 
				
			||||||
		CCGFace *f = ccgFaceIterator_getCurrent(fi);
 | 
							CCGFace *f = ccgFaceIterator_getCurrent(fi);
 | 
				
			||||||
@@ -3458,7 +3459,14 @@ struct DerivedMesh *subsurf_make_derived_from_derived(
 | 
				
			|||||||
			smd->mCache = ss = _getSubSurf(smd->mCache, levels,
 | 
								smd->mCache = ss = _getSubSurf(smd->mCache, levels,
 | 
				
			||||||
										   useAging, 0, useSimple);
 | 
															   useAging, 0, useSimple);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			ss_sync_from_derivedmesh(ss, dm, vertCos, useSimple);
 | 
								if (!ss_sync_from_derivedmesh(ss, dm, vertCos, useSimple)) {
 | 
				
			||||||
 | 
									//ccgSubSurf_free(smd->mCache);
 | 
				
			||||||
 | 
									smd->mCache = ss = _getSubSurf(NULL, levels,
 | 
				
			||||||
 | 
																   useAging, 0, useSimple);
 | 
				
			||||||
 | 
									
 | 
				
			||||||
 | 
									ss_sync_from_derivedmesh(ss, dm, vertCos, useSimple);
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			result = getCCGDerivedMesh(smd->mCache,
 | 
								result = getCCGDerivedMesh(smd->mCache,
 | 
				
			||||||
									   drawInteriorEdges,
 | 
														   drawInteriorEdges,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -292,12 +292,12 @@ int ED_vgroup_copy_array(Object *ob, Object *ob_from)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	for(i=0; i<dvert_tot; i++, dvf++, dv++) {
 | 
						for(i=0; i<dvert_tot; i++, dvf++, dv++) {
 | 
				
			||||||
		if((*dv)->dw)
 | 
							if((*dv)->dw)
 | 
				
			||||||
			MEM_freeN((*dv)->dw);
 | 
								BLI_cellalloc_free((*dv)->dw);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		*(*dv)= *(*dvf);
 | 
							*(*dv)= *(*dvf);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if((*dv)->dw)
 | 
							if((*dv)->dw)
 | 
				
			||||||
			(*dv)->dw= MEM_dupallocN((*dv)->dw);
 | 
								(*dv)->dw= BLI_cellalloc_dupalloc((*dv)->dw);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	MEM_freeN(dvert_array);
 | 
						MEM_freeN(dvert_array);
 | 
				
			||||||
@@ -365,7 +365,7 @@ static void ED_vgroup_nr_vert_remove(Object *ob, int def_nr, int vertnum)
 | 
				
			|||||||
			 * left then just remove the deform weight
 | 
								 * left then just remove the deform weight
 | 
				
			||||||
			 */
 | 
								 */
 | 
				
			||||||
			else {
 | 
								else {
 | 
				
			||||||
				MEM_freeN(dvert->dw);
 | 
									BLI_cellalloc_free(dvert->dw);
 | 
				
			||||||
				dvert->dw = NULL;
 | 
									dvert->dw = NULL;
 | 
				
			||||||
				break;
 | 
									break;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
@@ -1186,7 +1186,7 @@ static void vgroup_active_remove_verts(Object *ob, const int allverts, bDeformGr
 | 
				
			|||||||
							if(dvert->dw){
 | 
												if(dvert->dw){
 | 
				
			||||||
								memcpy(newdw, dvert->dw, sizeof(MDeformWeight)*i);
 | 
													memcpy(newdw, dvert->dw, sizeof(MDeformWeight)*i);
 | 
				
			||||||
								memcpy(newdw+i, dvert->dw+i+1, sizeof(MDeformWeight)*(dvert->totweight-i));
 | 
													memcpy(newdw+i, dvert->dw+i+1, sizeof(MDeformWeight)*(dvert->totweight-i));
 | 
				
			||||||
								MEM_freeN(dvert->dw);
 | 
													BLI_cellalloc_free(dvert->dw);
 | 
				
			||||||
							}
 | 
												}
 | 
				
			||||||
							dvert->dw=newdw;
 | 
												dvert->dw=newdw;
 | 
				
			||||||
						}
 | 
											}
 | 
				
			||||||
@@ -1280,7 +1280,7 @@ static void vgroup_delete_edit_mode(Object *ob, bDeformGroup *dg)
 | 
				
			|||||||
		else if(ob->type==OB_LATTICE) {
 | 
							else if(ob->type==OB_LATTICE) {
 | 
				
			||||||
			Lattice *lt= vgroup_edit_lattice(ob);
 | 
								Lattice *lt= vgroup_edit_lattice(ob);
 | 
				
			||||||
			if(lt->dvert) {
 | 
								if(lt->dvert) {
 | 
				
			||||||
				MEM_freeN(lt->dvert);
 | 
									BLI_cellalloc_free(lt->dvert);
 | 
				
			||||||
				lt->dvert= NULL;
 | 
									lt->dvert= NULL;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -1320,7 +1320,7 @@ static void vgroup_delete_all(Object *ob)
 | 
				
			|||||||
	else if(ob->type==OB_LATTICE) {
 | 
						else if(ob->type==OB_LATTICE) {
 | 
				
			||||||
		Lattice *lt= vgroup_edit_lattice(ob);
 | 
							Lattice *lt= vgroup_edit_lattice(ob);
 | 
				
			||||||
		if(lt->dvert) {
 | 
							if(lt->dvert) {
 | 
				
			||||||
			MEM_freeN(lt->dvert);
 | 
								BLI_cellalloc_free(lt->dvert);
 | 
				
			||||||
			lt->dvert= NULL;
 | 
								lt->dvert= NULL;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -137,13 +137,13 @@ static void deformVerts(ModifierData *md, Object *ob,
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void deformVertsEM(
 | 
					static void deformVertsEM(
 | 
				
			||||||
					   ModifierData *md, Object *ob, struct EditMesh *editData,
 | 
										   ModifierData *md, Object *ob, struct BMEditMesh *editData,
 | 
				
			||||||
	DerivedMesh *derivedData, float (*vertexCos)[3], int numVerts)
 | 
						DerivedMesh *derivedData, float (*vertexCos)[3], int numVerts)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	ArmatureModifierData *amd = (ArmatureModifierData*) md;
 | 
						ArmatureModifierData *amd = (ArmatureModifierData*) md;
 | 
				
			||||||
	DerivedMesh *dm = derivedData;
 | 
						DerivedMesh *dm = derivedData;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if(!derivedData) dm = CDDM_from_editmesh(editData, ob->data);
 | 
						if(!derivedData) dm = CDDM_from_BMEditMesh(editData, ob->data);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	armature_deform_verts(amd->object, ob, dm, vertexCos, NULL, numVerts,
 | 
						armature_deform_verts(amd->object, ob, dm, vertexCos, NULL, numVerts,
 | 
				
			||||||
				  amd->deformflag, NULL, amd->defgrp_name);
 | 
									  amd->deformflag, NULL, amd->defgrp_name);
 | 
				
			||||||
@@ -152,14 +152,14 @@ static void deformVertsEM(
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void deformMatricesEM(
 | 
					static void deformMatricesEM(
 | 
				
			||||||
						  ModifierData *md, Object *ob, struct EditMesh *editData,
 | 
											  ModifierData *md, Object *ob, struct BMEditMesh *editData,
 | 
				
			||||||
	   DerivedMesh *derivedData, float (*vertexCos)[3],
 | 
						   DerivedMesh *derivedData, float (*vertexCos)[3],
 | 
				
			||||||
						 float (*defMats)[3][3], int numVerts)
 | 
											 float (*defMats)[3][3], int numVerts)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	ArmatureModifierData *amd = (ArmatureModifierData*) md;
 | 
						ArmatureModifierData *amd = (ArmatureModifierData*) md;
 | 
				
			||||||
	DerivedMesh *dm = derivedData;
 | 
						DerivedMesh *dm = derivedData;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if(!derivedData) dm = CDDM_from_editmesh(editData, ob->data);
 | 
						if(!derivedData) dm = CDDM_from_BMEditMesh(editData, ob->data);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	armature_deform_verts(amd->object, ob, dm, vertexCos, defMats, numVerts,
 | 
						armature_deform_verts(amd->object, ob, dm, vertexCos, defMats, numVerts,
 | 
				
			||||||
				  amd->deformflag, NULL, amd->defgrp_name);
 | 
									  amd->deformflag, NULL, amd->defgrp_name);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -125,12 +125,12 @@ static void deformVerts(ModifierData *md, Object *ob,
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void deformVertsEM(
 | 
					static void deformVertsEM(
 | 
				
			||||||
					ModifierData *md, Object *ob, struct EditMesh *editData,
 | 
										ModifierData *md, Object *ob, struct BMEditMesh *editData,
 | 
				
			||||||
	 DerivedMesh *derivedData, float (*vertexCos)[3], int numVerts)
 | 
						 DerivedMesh *derivedData, float (*vertexCos)[3], int numVerts)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	DerivedMesh *dm = derivedData;
 | 
						DerivedMesh *dm = derivedData;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if(!derivedData) dm = CDDM_from_editmesh(editData, ob->data);
 | 
						if(!derivedData) dm = CDDM_from_BMEditMesh(editData, ob->data);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	deformVerts(md, ob, dm, vertexCos, numVerts, 0, 0);
 | 
						deformVerts(md, ob, dm, vertexCos, numVerts, 0, 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -267,12 +267,12 @@ static void deformVerts(ModifierData *md, Object *ob,
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void deformVertsEM(
 | 
					static void deformVertsEM(
 | 
				
			||||||
					   ModifierData *md, Object *ob, struct EditMesh *editData,
 | 
										   ModifierData *md, Object *ob, struct BMEditMesh *editData,
 | 
				
			||||||
	   DerivedMesh *derivedData, float (*vertexCos)[3], int numVerts)
 | 
						   DerivedMesh *derivedData, float (*vertexCos)[3], int numVerts)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	DerivedMesh *dm = derivedData;
 | 
						DerivedMesh *dm = derivedData;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if(!derivedData) dm = CDDM_from_editmesh(editData, ob->data);
 | 
						if(!derivedData) dm = CDDM_from_BMEditMesh(editData, ob->data);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	deformVerts(md, ob, dm, vertexCos, numVerts, 0, 0);
 | 
						deformVerts(md, ob, dm, vertexCos, numVerts, 0, 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -120,12 +120,12 @@ static void deformVerts(ModifierData *md, Object *ob,
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void deformVertsEM(
 | 
					static void deformVertsEM(
 | 
				
			||||||
					  ModifierData *md, Object *ob, struct EditMesh *editData,
 | 
										  ModifierData *md, Object *ob, struct BMEditMesh *editData,
 | 
				
			||||||
	   DerivedMesh *derivedData, float (*vertexCos)[3], int numVerts)
 | 
						   DerivedMesh *derivedData, float (*vertexCos)[3], int numVerts)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	DerivedMesh *dm = derivedData;
 | 
						DerivedMesh *dm = derivedData;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if(!derivedData) dm = CDDM_from_editmesh(editData, ob->data);
 | 
						if(!derivedData) dm = CDDM_from_BMEditMesh(editData, ob->data);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	deformVerts(md, ob, dm, vertexCos, numVerts, 0, 0);
 | 
						deformVerts(md, ob, dm, vertexCos, numVerts, 0, 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user