diff options
Diffstat (limited to 'source/blender/blenkernel/intern/cloth.c')
-rw-r--r-- | source/blender/blenkernel/intern/cloth.c | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/source/blender/blenkernel/intern/cloth.c b/source/blender/blenkernel/intern/cloth.c index e3ff96853b3..b4bcfc90e56 100644 --- a/source/blender/blenkernel/intern/cloth.c +++ b/source/blender/blenkernel/intern/cloth.c @@ -337,7 +337,7 @@ static int do_init_cloth(Object *ob, ClothModifierData *clmd, DerivedMesh *resul return 0; } - BKE_cloth_solver_set_positions(clmd); + BPH_cloth_solver_set_positions(clmd); clmd->clothObject->last_frame= MINFRAME-1; } @@ -370,7 +370,7 @@ static int do_step_cloth(Object *ob, ClothModifierData *clmd, DerivedMesh *resul mul_m4_v3(ob->obmat, verts->xconst); } - effectors = pdInitEffectors(clmd->scene, ob, NULL, clmd->sim_parms->effector_weights, true); + effectors = pdInitEffectors(clmd->scene, ob, NULL, clmd->sim_parms->effector_weights); /* Support for dynamic vertex groups, changing from frame to frame */ cloth_apply_vgroup ( clmd, result ); @@ -500,7 +500,6 @@ void clothModifier_do(ClothModifierData *clmd, Scene *scene, Object *ob, Derived cache_result = BKE_ptcache_read(&pid, (float)framenr+scene->r.subframe); if (cache_result == PTCACHE_READ_EXACT || cache_result == PTCACHE_READ_INTERPOLATED) { - BKE_cloth_solver_set_positions(clmd); cloth_to_object (ob, clmd, vertexCos); BKE_ptcache_validate(cache, framenr); @@ -513,7 +512,7 @@ void clothModifier_do(ClothModifierData *clmd, Scene *scene, Object *ob, Derived return; } else if (cache_result==PTCACHE_READ_OLD) { - BKE_cloth_solver_set_positions(clmd); + BPH_cloth_solver_set_positions(clmd); } else if ( /*ob->id.lib ||*/ (cache->flag & PTCACHE_BAKED)) { /* 2.4x disabled lib, but this can be used in some cases, testing further - campbell */ /* if baked and nothing in cache, do nothing */ @@ -729,11 +728,10 @@ static void cloth_apply_vgroup ( ClothModifierData *clmd, DerivedMesh *dm ) clothObj = clmd->clothObject; - numverts = dm->getNumVerts (dm); + numverts = dm->getNumVerts(dm); - verts = clothObj->verts; - if (cloth_uses_vgroup(clmd)) { + verts = clothObj->verts; for ( i = 0; i < numverts; i++, verts++ ) { /* Reset Goal values to standard */ @@ -794,6 +792,17 @@ static void cloth_apply_vgroup ( ClothModifierData *clmd, DerivedMesh *dm ) } } } + +#ifdef USE_PARTICLE_PREVIEW + { + MVert *mvert = dm->getVertArray(dm); + verts = clothObj->verts; + for ( i = 0; i < numverts; i++, verts++ ) { + if (mvert[i].flag & ME_VERT_TMP_TAG) + verts->flags |= CLOTH_VERT_FLAG_EXCLUDE; + } + } +#endif } @@ -900,7 +909,7 @@ static int cloth_from_object(Object *ob, ClothModifierData *clmd, DerivedMesh *d BPH_cloth_solver_init(ob, clmd); if (!first) - BKE_cloth_solver_set_positions(clmd); + BPH_cloth_solver_set_positions(clmd); clmd->clothObject->bvhtree = bvhtree_build_from_cloth ( clmd, MAX2(clmd->coll_parms->epsilon, clmd->coll_parms->distance_repel) ); |