btRaycastCallback.h
Go to the documentation of this file.
00001 /*
00002 Bullet Continuous Collision Detection and Physics Library
00003 Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/
00004 
00005 This software is provided 'as-is', without any express or implied warranty.
00006 In no event will the authors be held liable for any damages arising from the use of this software.
00007 Permission is granted to anyone to use this software for any purpose, 
00008 including commercial applications, and to alter it and redistribute it freely, 
00009 subject to the following restrictions:
00010 
00011 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
00012 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
00013 3. This notice may not be removed or altered from any source distribution.
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         //input
00029         btVector3 m_from;
00030         btVector3 m_to;
00031 
00032    //@BP Mod - allow backface filtering and unflipped normals
00033    enum EFlags
00034    {
00035       kF_None                 = 0,
00036       kF_FilterBackfaces      = 1 << 0,
00037       kF_KeepUnflippedNormal  = 1 << 1,   // Prevents returned face normal getting flipped when a ray hits a back-facing triangle
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 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines


bullet
Author(s): Erwin Coumans, ROS package maintained by Tully Foote
autogenerated on Wed Oct 31 2012 07:54:31