From fa05bab34341081ebc65d126fdfa54fc032c7469 Mon Sep 17 00:00:00 2001 From: Leandro Dorileo Date: Fri, 23 Nov 2012 21:43:25 +0000 Subject: [PATCH] EPhysics: generate bending constraints just once Unlikely the cluster generate bullet will not rebuild the bending constraints every call, so we must prevent creating duplicated constraints. Patch by: Leandro Dorileo SVN revision: 79591 --- legacy/ephysics/src/lib/ephysics_body.cpp | 16 ++++++++++++---- legacy/ephysics/src/lib/ephysics_private.h | 1 + 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/legacy/ephysics/src/lib/ephysics_body.cpp b/legacy/ephysics/src/lib/ephysics_body.cpp index 89ca93cfb6..9508eca2a8 100644 --- a/legacy/ephysics/src/lib/ephysics_body.cpp +++ b/legacy/ephysics/src/lib/ephysics_body.cpp @@ -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 diff --git a/legacy/ephysics/src/lib/ephysics_private.h b/legacy/ephysics/src/lib/ephysics_private.h index 2e5c37345a..85a41038e6 100644 --- a/legacy/ephysics/src/lib/ephysics_private.h +++ b/legacy/ephysics/src/lib/ephysics_private.h @@ -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;