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:
Diffstat (limited to 'extern/bullet2/src/BulletCollision/Gimpact/btContactProcessing.h')
-rw-r--r--extern/bullet2/src/BulletCollision/Gimpact/btContactProcessing.h102
1 files changed, 11 insertions, 91 deletions
diff --git a/extern/bullet2/src/BulletCollision/Gimpact/btContactProcessing.h b/extern/bullet2/src/BulletCollision/Gimpact/btContactProcessing.h
index 0c66f8e106c..4ff09d7cddf 100644
--- a/extern/bullet2/src/BulletCollision/Gimpact/btContactProcessing.h
+++ b/extern/bullet2/src/BulletCollision/Gimpact/btContactProcessing.h
@@ -27,88 +27,9 @@ subject to the following restrictions:
#include "LinearMath/btTransform.h"
#include "LinearMath/btAlignedObjectArray.h"
#include "btTriangleShapeEx.h"
+#include "btContactProcessingStructs.h"
-
-
-/**
-Configuration var for applying interpolation of contact normals
-*/
-#define NORMAL_CONTACT_AVERAGE 1
-
-#define CONTACT_DIFF_EPSILON 0.00001f
-
-///The GIM_CONTACT is an internal GIMPACT structure, similar to btManifoldPoint.
-///@todo: remove and replace GIM_CONTACT by btManifoldPoint.
-class GIM_CONTACT
-{
-public:
- btVector3 m_point;
- btVector3 m_normal;
- btScalar m_depth;//Positive value indicates interpenetration
- btScalar m_distance;//Padding not for use
- int m_feature1;//Face number
- int m_feature2;//Face number
-public:
- GIM_CONTACT()
- {
- }
-
- GIM_CONTACT(const GIM_CONTACT & contact):
- m_point(contact.m_point),
- m_normal(contact.m_normal),
- m_depth(contact.m_depth),
- m_feature1(contact.m_feature1),
- m_feature2(contact.m_feature2)
- {
- }
-
- GIM_CONTACT(const btVector3 &point,const btVector3 & normal,
- btScalar depth, int feature1, int feature2):
- m_point(point),
- m_normal(normal),
- m_depth(depth),
- m_feature1(feature1),
- m_feature2(feature2)
- {
- }
-
- //! Calcs key for coord classification
- SIMD_FORCE_INLINE unsigned int calc_key_contact() const
- {
- int _coords[] = {
- (int)(m_point[0]*1000.0f+1.0f),
- (int)(m_point[1]*1333.0f),
- (int)(m_point[2]*2133.0f+3.0f)};
- unsigned int _hash=0;
- unsigned int *_uitmp = (unsigned int *)(&_coords[0]);
- _hash = *_uitmp;
- _uitmp++;
- _hash += (*_uitmp)<<4;
- _uitmp++;
- _hash += (*_uitmp)<<8;
- return _hash;
- }
-
- SIMD_FORCE_INLINE void interpolate_normals( btVector3 * normals,int normal_count)
- {
- btVector3 vec_sum(m_normal);
- for(int i=0;i<normal_count;i++)
- {
- vec_sum += normals[i];
- }
-
- btScalar vec_sum_len = vec_sum.length2();
- if(vec_sum_len <CONTACT_DIFF_EPSILON) return;
-
- //GIM_INV_SQRT(vec_sum_len,vec_sum_len); // 1/sqrt(vec_sum_len)
-
- m_normal = vec_sum/btSqrt(vec_sum_len);
- }
-
-};
-
-
-class btContactArray:public btAlignedObjectArray<GIM_CONTACT>
+class btContactArray : public btAlignedObjectArray<GIM_CONTACT>
{
public:
btContactArray()
@@ -117,29 +38,28 @@ public:
}
SIMD_FORCE_INLINE void push_contact(
- const btVector3 &point,const btVector3 & normal,
+ const btVector3 &point, const btVector3 &normal,
btScalar depth, int feature1, int feature2)
{
- push_back( GIM_CONTACT(point,normal,depth,feature1,feature2) );
+ push_back(GIM_CONTACT(point, normal, depth, feature1, feature2));
}
SIMD_FORCE_INLINE void push_triangle_contacts(
- const GIM_TRIANGLE_CONTACT & tricontact,
- int feature1,int feature2)
+ const GIM_TRIANGLE_CONTACT &tricontact,
+ int feature1, int feature2)
{
- for(int i = 0;i<tricontact.m_point_count ;i++ )
+ for (int i = 0; i < tricontact.m_point_count; i++)
{
push_contact(
tricontact.m_points[i],
tricontact.m_separating_normal,
- tricontact.m_penetration_depth,feature1,feature2);
+ tricontact.m_penetration_depth, feature1, feature2);
}
}
- void merge_contacts(const btContactArray & contacts, bool normal_contact_average = true);
+ void merge_contacts(const btContactArray &contacts, bool normal_contact_average = true);
- void merge_contacts_unique(const btContactArray & contacts);
+ void merge_contacts_unique(const btContactArray &contacts);
};
-
-#endif // GIM_CONTACT_H_INCLUDED
+#endif // GIM_CONTACT_H_INCLUDED