Go to the documentation of this file.00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 #ifndef BT_RAYCAST_TRI_CALLBACK_H
00017 #define BT_RAYCAST_TRI_CALLBACK_H
00018 
00019 #include "BulletCollision/CollisionShapes/btTriangleCallback.h"
00020 #include "LinearMath/btTransform.h"
00021 struct btBroadphaseProxy;
00022 class btConvexShape;
00023 
00024 class  btTriangleRaycastCallback: public btTriangleCallback
00025 {
00026 public:
00027 
00028         
00029         btVector3 m_from;
00030         btVector3 m_to;
00031 
00032    
00033    enum EFlags
00034    {
00035       kF_None                 = 0,
00036       kF_FilterBackfaces      = 1 << 0,
00037       kF_KeepUnflippedNormal  = 1 << 1,   
00038 
00039       kF_Terminator        = 0xFFFFFFFF
00040    };
00041    unsigned int m_flags;
00042 
00043         btScalar        m_hitFraction;
00044 
00045         btTriangleRaycastCallback(const btVector3& from,const btVector3& to, unsigned int flags=0);
00046         
00047         virtual void processTriangle(btVector3* triangle, int partId, int triangleIndex);
00048 
00049         virtual btScalar reportHit(const btVector3& hitNormalLocal, btScalar hitFraction, int partId, int triangleIndex ) = 0;
00050         
00051 };
00052 
00053 class btTriangleConvexcastCallback : public btTriangleCallback
00054 {
00055 public:
00056         const btConvexShape* m_convexShape;
00057         btTransform m_convexShapeFrom;
00058         btTransform m_convexShapeTo;
00059         btTransform m_triangleToWorld;
00060         btScalar m_hitFraction;
00061         btScalar m_triangleCollisionMargin;
00062         btScalar m_allowedPenetration;
00063 
00064         btTriangleConvexcastCallback (const btConvexShape* convexShape, const btTransform& convexShapeFrom, const btTransform& convexShapeTo, const btTransform& triangleToWorld, const btScalar triangleCollisionMargin);
00065 
00066         virtual void processTriangle (btVector3* triangle, int partId, int triangleIndex);
00067 
00068         virtual btScalar reportHit (const btVector3& hitNormalLocal, const btVector3& hitPointLocal, btScalar hitFraction, int partId, int triangleIndex) = 0;
00069 };
00070 
00071 #endif //BT_RAYCAST_TRI_CALLBACK_H
00072