Changeset View
Changeset View
Standalone View
Standalone View
source/blender/modifiers/intern/MOD_particleinstance.c
| Context not available. | |||||
| 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 = ob->trackflag % 3, trackneg, axis = pimd->axis; | short track = ob->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]; | ||||
| Context not available. | |||||
| 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)) | ||||
| Context not available. | |||||
| 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); | ||||
| Context not available. | |||||
| 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); | ||||
| Context not available. | |||||
| 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; | ||||
| Context not available. | |||||
| 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]; | ||||
| Context not available. | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| 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; | ||||
| Context not available. | |||||