Logo Search packages:      
Sourcecode: blender version File versions  Download package

ConvexShape.h

/*
 * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
 *
 * 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.
 */

#ifndef CONVEX_SHAPE_INTERFACE1
#define CONVEX_SHAPE_INTERFACE1

#include "CollisionShape.h"

#include "SimdVector3.h"
#include "SimdTransform.h"
#include "SimdMatrix3x3.h"
#include <vector>
#include "CollisionShapes/CollisionMargin.h"

//todo: get rid of this ConvexCastResult thing!
struct ConvexCastResult;


/// ConvexShape is an abstract shape interface.
/// The explicit part provides plane-equations, the implicit part provides GetClosestPoint interface.
/// used in combination with GJK or ConvexCast
00030 class ConvexShape : public CollisionShape
{
public:
      ConvexShape();

      virtual ~ConvexShape();

      virtual SimdVector3     LocalGetSupportingVertex(const SimdVector3& vec)const;
      virtual SimdVector3     LocalGetSupportingVertexWithoutMargin(const SimdVector3& vec) const= 0;

      // testing for hullnode code

      ///GetAabb's default implementation is brute force, expected derived classes to implement a fast dedicated version
00043       void GetAabb(const SimdTransform& t,SimdVector3& aabbMin,SimdVector3& aabbMax) const
      {
            GetAabbSlow(t,aabbMin,aabbMax);
      }


      
      virtual void GetAabbSlow(const SimdTransform& t,SimdVector3& aabbMin,SimdVector3& aabbMax) const;


      virtual void      setLocalScaling(const SimdVector3& scaling);
      virtual const SimdVector3& getLocalScaling() const 
      {
            return m_localScaling;
      }


      virtual void      SetMargin(float margin)
      {
            m_collisionMargin = margin;
      }
      virtual float     GetMargin() const
      {
            return m_collisionMargin;
      }
private:
      SimdScalar  m_collisionMargin;
      //local scaling. collisionMargin is not scaled !
protected:
      SimdVector3 m_localScaling;

};



#endif //CONVEX_SHAPE_INTERFACE1

Generated by  Doxygen 1.6.0   Back to index