Merge branch 'master' into blender2.8
This commit is contained in:
@@ -213,8 +213,8 @@ static DerivedMesh *applyModifier(ModifierData *md, const ModifierEvalContext *c
|
|||||||
MPoly *mpoly, *orig_mpoly;
|
MPoly *mpoly, *orig_mpoly;
|
||||||
MLoop *mloop, *orig_mloop;
|
MLoop *mloop, *orig_mloop;
|
||||||
MVert *mvert, *orig_mvert;
|
MVert *mvert, *orig_mvert;
|
||||||
int totvert, totpoly, totloop /* , totedge */;
|
int totvert, totpoly, totloop , totedge;
|
||||||
int maxvert, maxpoly, maxloop, part_end = 0, part_start;
|
int maxvert, maxpoly, maxloop, maxedge, part_end = 0, part_start;
|
||||||
int k, p, p_skip;
|
int k, p, p_skip;
|
||||||
short track = ctx->object->trackflag % 3, trackneg, axis = pimd->axis;
|
short track = ctx->object->trackflag % 3, trackneg, axis = pimd->axis;
|
||||||
float max_co = 0.0, min_co = 0.0, temp_co[3];
|
float max_co = 0.0, min_co = 0.0, temp_co[3];
|
||||||
@@ -294,12 +294,13 @@ static DerivedMesh *applyModifier(ModifierData *md, const ModifierEvalContext *c
|
|||||||
totvert = dm->getNumVerts(dm);
|
totvert = dm->getNumVerts(dm);
|
||||||
totpoly = dm->getNumPolys(dm);
|
totpoly = dm->getNumPolys(dm);
|
||||||
totloop = dm->getNumLoops(dm);
|
totloop = dm->getNumLoops(dm);
|
||||||
/* totedge = dm->getNumEdges(dm); */ /* UNUSED */
|
totedge = dm->getNumEdges(dm);
|
||||||
|
|
||||||
/* count particles */
|
/* count particles */
|
||||||
maxvert = 0;
|
maxvert = 0;
|
||||||
maxpoly = 0;
|
maxpoly = 0;
|
||||||
maxloop = 0;
|
maxloop = 0;
|
||||||
|
maxedge = 0;
|
||||||
|
|
||||||
for (p = part_start; p < part_end; p++) {
|
for (p = part_start; p < part_end; p++) {
|
||||||
if (particle_skip(pimd, psys, p))
|
if (particle_skip(pimd, psys, p))
|
||||||
@@ -308,6 +309,7 @@ static DerivedMesh *applyModifier(ModifierData *md, const ModifierEvalContext *c
|
|||||||
maxvert += totvert;
|
maxvert += totvert;
|
||||||
maxpoly += totpoly;
|
maxpoly += totpoly;
|
||||||
maxloop += totloop;
|
maxloop += totloop;
|
||||||
|
maxedge += totedge;
|
||||||
}
|
}
|
||||||
|
|
||||||
psys->lattice_deform_data = psys_create_lattice_deform_data(&sim);
|
psys->lattice_deform_data = psys_create_lattice_deform_data(&sim);
|
||||||
@@ -320,11 +322,10 @@ static DerivedMesh *applyModifier(ModifierData *md, const ModifierEvalContext *c
|
|||||||
max_co = max[track];
|
max_co = max[track];
|
||||||
}
|
}
|
||||||
|
|
||||||
result = CDDM_from_template(dm, maxvert, 0, 0, maxloop, maxpoly);
|
result = CDDM_from_template(dm, maxvert, maxedge, 0, maxloop, maxpoly);
|
||||||
|
|
||||||
mvert = result->getVertArray(result);
|
mvert = result->getVertArray(result);
|
||||||
orig_mvert = dm->getVertArray(dm);
|
orig_mvert = dm->getVertArray(dm);
|
||||||
|
|
||||||
mpoly = result->getPolyArray(result);
|
mpoly = result->getPolyArray(result);
|
||||||
orig_mpoly = dm->getPolyArray(dm);
|
orig_mpoly = dm->getPolyArray(dm);
|
||||||
mloop = result->getLoopArray(result);
|
mloop = result->getLoopArray(result);
|
||||||
@@ -471,8 +472,17 @@ static DerivedMesh *applyModifier(ModifierData *md, const ModifierEvalContext *c
|
|||||||
mul_m4_v3(spacemat, mv->co);
|
mul_m4_v3(spacemat, mv->co);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* create edges and adjust edge vertex indices*/
|
||||||
|
DM_copy_edge_data(dm, result, 0, p_skip * totedge, totedge);
|
||||||
|
MEdge *me = CDDM_get_edges(result) + p_skip * totedge;
|
||||||
|
for (k = 0; k < totedge; k++, me++) {
|
||||||
|
me->v1 += p_skip * totvert;
|
||||||
|
me->v2 += p_skip * totvert;
|
||||||
|
}
|
||||||
|
|
||||||
/* create polys and loops */
|
/* create polys and loops */
|
||||||
for (k = 0; k < totpoly; k++) {
|
for (k = 0; k < totpoly; k++) {
|
||||||
|
|
||||||
MPoly *inMP = orig_mpoly + k;
|
MPoly *inMP = orig_mpoly + k;
|
||||||
MPoly *mp = mpoly + p_skip * totpoly + k;
|
MPoly *mp = mpoly + p_skip * totpoly + k;
|
||||||
|
|
||||||
@@ -488,6 +498,7 @@ static DerivedMesh *applyModifier(ModifierData *md, const ModifierEvalContext *c
|
|||||||
DM_copy_loop_data(dm, result, inMP->loopstart, mp->loopstart, j);
|
DM_copy_loop_data(dm, result, inMP->loopstart, mp->loopstart, j);
|
||||||
for (; j; j--, ml++, inML++) {
|
for (; j; j--, ml++, inML++) {
|
||||||
ml->v = inML->v + (p_skip * totvert);
|
ml->v = inML->v + (p_skip * totvert);
|
||||||
|
ml->e = inML->e + (p_skip * totedge);
|
||||||
const int ml_index = (ml - mloop);
|
const int ml_index = (ml - mloop);
|
||||||
if (mloopcols_index != NULL) {
|
if (mloopcols_index != NULL) {
|
||||||
const int part_index = vert_part_index[ml->v];
|
const int part_index = vert_part_index[ml->v];
|
||||||
@@ -500,12 +511,9 @@ static DerivedMesh *applyModifier(ModifierData *md, const ModifierEvalContext *c
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
p_skip++;
|
p_skip++;
|
||||||
}
|
}
|
||||||
|
|
||||||
CDDM_calc_edges(result);
|
|
||||||
|
|
||||||
if (psys->lattice_deform_data) {
|
if (psys->lattice_deform_data) {
|
||||||
end_latt_deform(psys->lattice_deform_data);
|
end_latt_deform(psys->lattice_deform_data);
|
||||||
psys->lattice_deform_data = NULL;
|
psys->lattice_deform_data = NULL;
|
||||||
|
|||||||
Reference in New Issue
Block a user