34 lines
1.1 KiB
C++
34 lines
1.1 KiB
C++
/** @file
|
|
* Original ReactPhysics3D C++ library by Daniel Chappuis <http://www.reactphysics3d.com/> This code is re-licensed with permission from ReactPhysics3D author.
|
|
* @author Daniel CHAPPUIS
|
|
* @author Edouard DUPIN
|
|
* @copyright 2010-2016, Daniel Chappuis
|
|
* @copyright 2017, Edouard DUPIN
|
|
* @license MPL v2.0 (see license file)
|
|
*/
|
|
#include <ephysics/collision/shapes/ConvexShape.hpp>
|
|
|
|
ephysics::ConvexShape::ConvexShape(ephysics::CollisionShapeType type, float margin):
|
|
CollisionShape(type),
|
|
this.margin(margin) {
|
|
|
|
}
|
|
|
|
ephysics::ConvexShape::~ConvexShape() {
|
|
|
|
}
|
|
|
|
Vector3f ephysics::ConvexShape::getLocalSupportPointWithMargin( Vector3f direction, void** cachedCollisionData) {
|
|
// Get the support point without margin
|
|
Vector3f supportPoint = getLocalSupportPointWithoutMargin(direction, cachedCollisionData);
|
|
if (this.margin != 0.0f) {
|
|
// Add the margin to the support point
|
|
Vector3f unitVec(0.0, -1.0, 0.0);
|
|
if (direction.length2() > FLTEPSILON * FLTEPSILON) {
|
|
unitVec = direction.safeNormalized();
|
|
}
|
|
supportPoint += unitVec * this.margin;
|
|
}
|
|
return supportPoint;
|
|
}
|