00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef _OGREBULLETCOLLISIONS_CollisionRay_H
00032 #define _OGREBULLETCOLLISIONS_CollisionRay_H
00033
00034 #include "OgreBulletCollisionsPreRequisites.h"
00035
00036
00037 namespace OgreBulletCollisions
00038 {
00039
00040
00041 class CollisionRayResultCallback
00042 {
00043 public:
00044 CollisionRayResultCallback(const Ogre::Ray &ray, CollisionsWorld *world, Ogre::Real max_distance, bool init = true);
00045 virtual ~CollisionRayResultCallback();
00046
00047 btCollisionWorld::RayResultCallback *getBulletRay() const {return mRayResultCallback;}
00048
00049 bool doesCollide () const;
00050
00051 void setRay(const Ogre::Ray &ray);
00052 void setWorld(CollisionsWorld *world);
00053 void setMaxDistance(Ogre::Real max_distance);
00054
00055 inline const Ogre::Ray &getRay() const;
00056 Ogre::Vector3 getRayStartPoint() const;
00057 Ogre::Vector3 getRayEndPoint() const;
00058
00059 protected:
00060
00061 btCollisionWorld::RayResultCallback *mRayResultCallback;
00062 CollisionsWorld *mWorld;
00063 Ogre::Ray mRay;
00064 Ogre::Real mMaxDistance;
00065
00066 };
00067
00068
00069 inline const Ogre::Ray &CollisionRayResultCallback ::getRay() const
00070 {
00071 return mRay;
00072 }
00073
00074
00075 class CollisionClosestRayResultCallback : public CollisionRayResultCallback
00076 {
00077 public:
00078 CollisionClosestRayResultCallback(const Ogre::Ray &ray, CollisionsWorld *world, Ogre::Real max_distance);
00079 virtual ~CollisionClosestRayResultCallback(){};
00080
00081 Object *getCollidedObject() const;
00082 Ogre::Vector3 getCollisionPoint() const;
00083 Ogre::Vector3 getCollisionNormal() const;
00084
00085 inline btCollisionWorld::ClosestRayResultCallback *getBulletClosestRayResultCallback() const
00086 {
00087 return static_cast <btCollisionWorld::ClosestRayResultCallback * > (mRayResultCallback);
00088 }
00089 };
00090 }
00091 #endif //_OGREBULLETCOLLISIONS_CollisionRay_H
00092