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/bullet/Bullet/CollisionShapes/ConvexShape.cpp')
-rw-r--r--extern/bullet/Bullet/CollisionShapes/ConvexShape.cpp67
1 files changed, 67 insertions, 0 deletions
diff --git a/extern/bullet/Bullet/CollisionShapes/ConvexShape.cpp b/extern/bullet/Bullet/CollisionShapes/ConvexShape.cpp
new file mode 100644
index 00000000000..f2afb338166
--- /dev/null
+++ b/extern/bullet/Bullet/CollisionShapes/ConvexShape.cpp
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2005 Erwin Coumans http://www.erwincoumans.com
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies.
+ * Erwin Coumans makes no representations about the suitability
+ * of this software for any purpose.
+ * It is provided "as is" without express or implied warranty.
+ */
+
+#include "ConvexShape.h"
+
+ConvexShape::~ConvexShape()
+{
+
+}
+
+ConvexShape::ConvexShape()
+:m_collisionMargin(CONVEX_DISTANCE_MARGIN),
+m_localScaling(1.f,1.f,1.f)
+{
+}
+
+
+void ConvexShape::setLocalScaling(const SimdVector3& scaling)
+{
+ m_localScaling = scaling;
+}
+
+
+
+void ConvexShape::GetAabbSlow(const SimdTransform& trans,SimdVector3&minAabb,SimdVector3&maxAabb) const
+{
+
+ SimdScalar margin = 0.05f;
+ for (int i=0;i<3;i++)
+ {
+ SimdVector3 vec(0.f,0.f,0.f);
+ vec[i] = 1.f;
+ SimdVector3 tmp = trans(LocalGetSupportingVertex(vec*trans.getBasis()));
+ maxAabb[i] = tmp[i]+margin;
+ vec[i] = -1.f;
+ tmp = trans(LocalGetSupportingVertex(vec*trans.getBasis()));
+ minAabb[i] = tmp[i]-margin;
+ }
+};
+
+SimdVector3 ConvexShape::LocalGetSupportingVertex(const SimdVector3& vec)const
+ {
+ SimdVector3 supVertex = LocalGetSupportingVertexWithoutMargin(vec);
+
+ if ( GetMargin()!=0.f )
+ {
+ SimdVector3 vecnorm = vec;
+ if (vecnorm .length2() == 0.f)
+ {
+ vecnorm.setValue(-1.f,-1.f,-1.f);
+ }
+ vecnorm.normalize();
+ supVertex+= GetMargin() * vecnorm;
+ }
+ return supVertex;
+
+ }
+
+