EPhysics: generate bending constraints just once
authorLeandro Dorileo <dorileo@profusion.mobi>
Fri, 23 Nov 2012 21:43:25 +0000 (21:43 +0000)
committerBruno Dilly <bdilly@profusion.mobi>
Fri, 23 Nov 2012 21:43:25 +0000 (21:43 +0000)
Unlikely the cluster generate bullet will not rebuild the bending
constraints every call, so we must prevent creating duplicated
constraints.

Patch by: Leandro Dorileo <dorileo@profusion.mobi>

SVN revision: 79591

legacy/ephysics/src/lib/ephysics_body.cpp
legacy/ephysics/src/lib/ephysics_private.h

index 89ca93c..9508eca 100644 (file)
@@ -776,8 +776,12 @@ _ephysics_body_cloth_constraints_rebuild(EPhysics_Body *body)
           }
      }
    soft_body->generateClusters(0);
-   soft_body->generateBendingConstraints(2, soft_body->m_materials[
-                                                          body->material_index]);
+   if (!body->bending_constraints)
+     {
+        soft_body->generateBendingConstraints(2, soft_body->
+                                              m_materials[body->material_index]);
+        body->bending_constraints = EINA_TRUE;
+     }
 }
 
 static void
@@ -798,8 +802,12 @@ _ephysics_body_soft_body_constraints_rebuild(EPhysics_Body *body)
      }
 
    soft_body->generateClusters(0);
-   soft_body->generateBendingConstraints(10, soft_body->m_materials[
-                                                          body->material_index]);
+   if (!body->bending_constraints)
+     {
+        soft_body->generateBendingConstraints(10, soft_body->
+                                              m_materials[body->material_index]);
+        body->bending_constraints = EINA_TRUE;
+     }
 }
 
 inline static double
index 2e5c373..85a4103 100644 (file)
@@ -151,6 +151,7 @@ struct _EPhysics_Body {
      Eina_Bool back_face_culling:1;
      Eina_Bool clockwise:1;
      Eina_Bool boundary:1;
+     Eina_Bool bending_constraints:1;
 };
 
 extern int _ephysics_log_dom;