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