style cleanup, brackets in else/if, some indentation.
[blender.git] / source / blender / modifiers / intern / MOD_cloth.c
index 78bc64b..f236904 100644 (file)
@@ -67,51 +67,51 @@ static void initData(ModifierData *md)
        cloth_init (clmd);
 }
 
-static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
-                                               DerivedMesh *dm,
-                                               int UNUSED(useRenderParams),
-                                               int UNUSED(isFinalCalc))
+static void deformVerts(ModifierData *md, Object *ob, DerivedMesh *derivedData, float (*vertexCos)[3],
+                       int UNUSED(numVerts), int UNUSED(useRenderParams), int UNUSED(isFinalCalc))
 {
+       DerivedMesh *dm;
        ClothModifierData *clmd = (ClothModifierData*) md;
        DerivedMesh *result=NULL;
        
        /* check for alloc failing */
-       if(!clmd->sim_parms || !clmd->coll_parms)
-       {
+       if (!clmd->sim_parms || !clmd->coll_parms) {
                initData(md);
-               
+
                if(!clmd->sim_parms || !clmd->coll_parms)
-                       return dm;
+                       return;
        }
 
-       result = clothModifier_do(clmd, md->scene, ob, dm);
+       dm = get_dm(ob, NULL, derivedData, NULL, 0);
+       if(dm == derivedData)
+               dm = CDDM_copy(dm);
+
+       CDDM_apply_vert_coords(dm, vertexCos);
 
-       if(result)
-       {
-               CDDM_calc_normals_mapping(result);
-               return result;
+       DM_ensure_tessface(dm); /* BMESH - UNTIL MODIFIER IS UPDATED FOR MPoly */
+
+       clothModifier_do(clmd, md->scene, ob, dm, vertexCos);
+
+       if(result) {
+               result->getVertCos(result, vertexCos);
+               result->release(result);
        }
-       return dm;
+
+       dm->release(dm);
 }
 
-static void updateDepgraph(
-                                        ModifierData *md, DagForest *forest, Scene *scene, Object *ob,
-         DagNode *obNode)
+static void updateDepgraph(ModifierData *md, DagForest *forest, Scene *scene, Object *ob, DagNode *obNode)
 {
        ClothModifierData *clmd = (ClothModifierData*) md;
        
        Base *base;
        
-       if(clmd)
-       {
-               for(base = scene->base.first; base; base= base->next) 
-               {
+       if(clmd) {
+               for(base = scene->base.first; base; base= base->next) {
                        Object *ob1= base->object;
-                       if(ob1 != ob)
-                       {
+                       if (ob1 != ob) {
                                CollisionModifierData *coll_clmd = (CollisionModifierData *)modifiers_findByType(ob1, eModifierType_Collision);
-                               if(coll_clmd)
-                               {
+                               if (coll_clmd) {
                                        DagNode *curNode = dag_get_node(forest, ob1);
                                        dag_add_relation(forest, curNode, obNode, DAG_RL_DATA_DATA|DAG_RL_OB_DATA, "Cloth Collision");
                                }
@@ -168,8 +168,7 @@ static void freeData(ModifierData *md)
 {
        ClothModifierData *clmd = (ClothModifierData*) md;
        
-       if (clmd) 
-       {
+       if (clmd) {
                if(G.rt > 0)
                        printf("clothModifier_freeData\n");
                
@@ -206,17 +205,17 @@ ModifierTypeInfo modifierType_Cloth = {
        /* name */              "Cloth",
        /* structName */        "ClothModifierData",
        /* structSize */        sizeof(ClothModifierData),
-       /* type */              eModifierTypeType_Nonconstructive,
+       /* type */              eModifierTypeType_OnlyDeform,
        /* flags */             eModifierTypeFlag_AcceptsMesh
                                                        | eModifierTypeFlag_UsesPointCache
                                                        | eModifierTypeFlag_Single,
 
        /* copyData */          copyData,
-       /* deformVerts */       NULL,
+       /* deformVerts */       deformVerts,
        /* deformMatrices */    NULL,
        /* deformVertsEM */     NULL,
        /* deformMatricesEM */  NULL,
-       /* applyModifier */     applyModifier,
+       /* applyModifier */     NULL,
        /* applyModifierEM */   NULL,
        /* initData */          initData,
        /* requiredDataMask */  requiredDataMask,