Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2011-12-10 09:38:00 +0400
committerCampbell Barton <ideasman42@gmail.com>2011-12-10 09:38:00 +0400
commit65f3b93f144699fa4aafa46c7e226aa1390b7239 (patch)
tree1a9599589c98d9e17631844fd011463031fe59cd /source/blender/modifiers/intern/MOD_hook.c
parent99d893bb89a96dd0d6cb9410b12928e7ade4b565 (diff)
parenta88b29c062f32514e4414bfd4006f7b348077a42 (diff)
svn merge ^/trunk/blender -r42521:42550
Diffstat (limited to 'source/blender/modifiers/intern/MOD_hook.c')
-rw-r--r--source/blender/modifiers/intern/MOD_hook.c24
1 files changed, 9 insertions, 15 deletions
diff --git a/source/blender/modifiers/intern/MOD_hook.c b/source/blender/modifiers/intern/MOD_hook.c
index e04d5113364..a6eb9ab1e48 100644
--- a/source/blender/modifiers/intern/MOD_hook.c
+++ b/source/blender/modifiers/intern/MOD_hook.c
@@ -185,22 +185,20 @@ static void deformVerts_do(HookModifierData *hmd, Object *ob, DerivedMesh *dm,
const float fac_orig= hmd->force;
float fac;
const int *origindex_ar;
-
- /* if DerivedMesh is present and has original index data,
- * use it
- */
+
+ /* if DerivedMesh is present and has original index data, use it */
if(dm && (origindex_ar= dm->getVertDataArray(dm, CD_ORIGINDEX))) {
for(i= 0, index_pt= hmd->indexar; i < hmd->totindex; i++, index_pt++) {
if(*index_pt < numVerts) {
int j;
-
+
for(j = 0; j < numVerts; j++) {
if(origindex_ar[j] == *index_pt) {
float *co = vertexCos[j];
if((fac= hook_falloff(hmd->cent, co, falloff_squared, fac_orig))) {
if(dvert)
fac *= defvert_find_weight(dvert+j, defgrp_index);
-
+
if(fac) {
mul_v3_m4v3(vec, mat, co);
interp_v3_v3v3(co, co, vec, fac);
@@ -218,7 +216,7 @@ static void deformVerts_do(HookModifierData *hmd, Object *ob, DerivedMesh *dm,
if((fac= hook_falloff(hmd->cent, co, falloff_squared, fac_orig))) {
if(dvert)
fac *= defvert_find_weight(dvert+(*index_pt), defgrp_index);
-
+
if(fac) {
mul_v3_m4v3(vec, mat, co);
interp_v3_v3v3(co, co, vec, fac);
@@ -230,11 +228,11 @@ static void deformVerts_do(HookModifierData *hmd, Object *ob, DerivedMesh *dm,
}
else if(dvert) { /* vertex group hook */
const float fac_orig= hmd->force;
-
+
for(i = 0; i < max_dvert; i++, dvert++) {
float fac;
float *co = vertexCos[i];
-
+
if((fac= hook_falloff(hmd->cent, co, falloff_squared, fac_orig))) {
fac *= defvert_find_weight(dvert, defgrp_index);
if(fac) {
@@ -251,12 +249,8 @@ static void deformVerts(ModifierData *md, Object *ob, DerivedMesh *derivedData,
int UNUSED(useRenderParams), int UNUSED(isFinalCalc))
{
HookModifierData *hmd = (HookModifierData*) md;
- DerivedMesh *dm = get_dm(ob, NULL, derivedData, NULL, 0);
-
- deformVerts_do(hmd, ob, dm, vertexCos, numVerts);
-
- if(derivedData != dm)
- dm->release(dm);
+
+ deformVerts_do(hmd, ob, derivedData, vertexCos, numVerts);
}
static void deformVertsEM(ModifierData *md, Object *ob, struct BMEditMesh *editData,