[Bf-blender-cvs] [d3ea2d3] temp-array-modifier: Replace mesh_get_derived_deform with get_dm_for_modifier
Campbell Barton
noreply at git.blender.org
Tue Aug 12 04:14:16 CEST 2014
Commit: d3ea2d3541980bfb33d34620ec530b571cfaab7b
Author: Campbell Barton
Date: Tue Aug 12 11:45:28 2014 +1000
Branches: temp-array-modifier
https://developer.blender.org/rBd3ea2d3541980bfb33d34620ec530b571cfaab7b
Replace mesh_get_derived_deform with get_dm_for_modifier
to match master.
===================================================================
M source/blender/modifiers/intern/MOD_array.c
===================================================================
diff --git a/source/blender/modifiers/intern/MOD_array.c b/source/blender/modifiers/intern/MOD_array.c
index 660e33c..7100a5d 100644
--- a/source/blender/modifiers/intern/MOD_array.c
+++ b/source/blender/modifiers/intern/MOD_array.c
@@ -314,7 +314,7 @@ static void dm_mvert_map_doubles(
}
-static void bm_merge_dm_transform(
+static void dm_merge_transform(
DerivedMesh *result_dm, DerivedMesh *cap_dm, float cap_offset[4][4],
unsigned int cap_verts_index, unsigned int cap_edges_index, int cap_loops_index, int cap_polys_index,
int cap_nverts, int cap_nedges, int cap_nloops, int cap_npolys)
@@ -325,6 +325,12 @@ static void bm_merge_dm_transform(
MLoop *ml;
MPoly *mp;
+ /* needed for subsurf so arrays are allocated */
+ cap_dm->getVertArray(cap_dm);
+ cap_dm->getEdgeArray(cap_dm);
+ cap_dm->getNumLoops(cap_dm);
+ cap_dm->getNumPolys(cap_dm);
+
DM_copy_vert_data(cap_dm, result_dm, 0, cap_verts_index, cap_nverts);
DM_copy_edge_data(cap_dm, result_dm, 0, cap_edges_index, cap_nedges);
DM_copy_loop_data(cap_dm, result_dm, 0, cap_loops_index, cap_nloops);
@@ -362,7 +368,7 @@ static void bm_merge_dm_transform(
static DerivedMesh *arrayModifier_doArray(
ArrayModifierData *amd,
Scene *scene, Object *ob, DerivedMesh *dm,
- ModifierApplyFlag UNUSED(flag))
+ ModifierApplyFlag flag)
{
const float eps = 1e-6f;
MVert *mv, *mv_prev, *result_dm_verts, *src_mvert;
@@ -397,7 +403,7 @@ static DerivedMesh *arrayModifier_doArray(
count = amd->count;
if (amd->start_cap && amd->start_cap != ob && amd->start_cap->type == OB_MESH) {
- start_cap_dm = mesh_get_derived_deform(scene, amd->start_cap, CD_MASK_MESH);
+ start_cap_dm = get_dm_for_modifier(amd->start_cap, flag);
if (start_cap_dm) {
start_cap_nverts = start_cap_dm->getNumVerts(start_cap_dm);
start_cap_nedges = start_cap_dm->getNumEdges(start_cap_dm);
@@ -406,7 +412,7 @@ static DerivedMesh *arrayModifier_doArray(
}
}
if (amd->end_cap && amd->end_cap != ob && amd->end_cap->type == OB_MESH) {
- end_cap_dm = mesh_get_derived_deform(scene, amd->end_cap, CD_MASK_MESH);
+ end_cap_dm = get_dm_for_modifier(amd->end_cap, flag);
if (end_cap_dm) {
end_cap_nverts = end_cap_dm->getNumVerts(end_cap_dm);
end_cap_nedges = end_cap_dm->getNumEdges(end_cap_dm);
@@ -619,12 +625,13 @@ static DerivedMesh *arrayModifier_doArray(
float start_offset[4][4];
int start_cap_start = result_nverts - start_cap_nverts - end_cap_nverts;
invert_m4_m4(start_offset, offset);
- bm_merge_dm_transform(result_dm, start_cap_dm, start_offset,
- result_nverts - start_cap_nverts - end_cap_nverts,
- result_nedges - start_cap_nedges - end_cap_nedges,
- result_nloops - start_cap_nloops - end_cap_nloops,
- result_npolys - start_cap_npolys - end_cap_npolys,
- start_cap_nverts, start_cap_nedges, start_cap_nloops, start_cap_npolys);
+ dm_merge_transform(
+ result_dm, start_cap_dm, start_offset,
+ result_nverts - start_cap_nverts - end_cap_nverts,
+ result_nedges - start_cap_nedges - end_cap_nedges,
+ result_nloops - start_cap_nloops - end_cap_nloops,
+ result_npolys - start_cap_npolys - end_cap_npolys,
+ start_cap_nverts, start_cap_nedges, start_cap_nloops, start_cap_npolys);
/* Identify doubles with first chunk */
if (amd->flags & MOD_ARR_MERGE) {
dm_mvert_map_doubles(
@@ -643,12 +650,13 @@ static DerivedMesh *arrayModifier_doArray(
float end_offset[4][4];
int end_cap_start = result_nverts - end_cap_nverts;
mul_m4_m4m4(end_offset, current_offset, offset);
- bm_merge_dm_transform(result_dm, end_cap_dm, end_offset,
- result_nverts - end_cap_nverts,
- result_nedges - end_cap_nedges,
- result_nloops - end_cap_nloops,
- result_npolys - end_cap_npolys,
- end_cap_nverts, end_cap_nedges, end_cap_nloops, end_cap_npolys);
+ dm_merge_transform(
+ result_dm, end_cap_dm, end_offset,
+ result_nverts - end_cap_nverts,
+ result_nedges - end_cap_nedges,
+ result_nloops - end_cap_nloops,
+ result_npolys - end_cap_npolys,
+ end_cap_nverts, end_cap_nedges, end_cap_nloops, end_cap_npolys);
/* Identify doubles with last chunk */
if (amd->flags & MOD_ARR_MERGE) {
dm_mvert_map_doubles(
More information about the Bf-blender-cvs
mailing list