Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/physics/src/ogrebullet/OgreBulletCollisionsRay.h @ 1972

Last change on this file since 1972 was 1971, checked in by rgrieder, 16 years ago

Added OgreBullet to the repository. The revision was 2493 (ogreaddons), trunk.

  • Property svn:eol-style set to native
File size: 3.3 KB
Line 
1/***************************************************************************
2
3This source file is part of OGREBULLET
4(Object-oriented Graphics Rendering Engine Bullet Wrapper)
5For the latest info, see http://www.ogre3d.org/phpBB2addons/viewforum.php?f=10
6
7Copyright (c) 2007 tuan.kuranes@gmail.com (Use it Freely, even Statically, but have to contribute any changes)
8
9
10
11This program is free software; you can redistribute it and/or modify it under
12the terms of the GPL General Public License with runtime exception as published by the Free Software
13Foundation; either version 2 of the License, or (at your option) any later
14version.
15
16This program is distributed in the hope that it will be useful, but WITHOUT
17ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
18FOR A PARTICULAR PURPOSE. See the GPL General Public License with runtime exception for more details.
19
20You should have received a copy of the GPL General Public License with runtime exception along with
21this program; if not, write to the Free Software Foundation, Inc., 59 Temple
22Place - Suite 330, Boston, MA 02111-1307, USA, or go to
23http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
24-----------------------------------------------------------------------------
25*/
26
27#ifndef _OGREBULLETCOLLISIONS_CollisionRay_H
28#define _OGREBULLETCOLLISIONS_CollisionRay_H
29
30#include "OgreBulletCollisionsPreRequisites.h"
31
32
33namespace OgreBulletCollisions
34{
35    // -------------------------------------------------------------------------
36    // basic CollisionRay
37    class CollisionRayResultCallback
38    {
39        public:
40                CollisionRayResultCallback(const Ogre::Ray &ray, CollisionsWorld *world, Ogre::Real max_distance, bool init = true);
41            virtual ~CollisionRayResultCallback();
42
43        btCollisionWorld::RayResultCallback *getBulletRay() const {return mRayResultCallback;}
44
45                bool doesCollide () const;
46
47                void setRay(const Ogre::Ray &ray);
48                void setWorld(CollisionsWorld *world);
49                void setMaxDistance(Ogre::Real max_distance);
50
51        inline const Ogre::Ray &getRay() const;
52                inline Ogre::Vector3 getRayStartPoint() const;
53                inline Ogre::Vector3 getRayEndPoint() const;
54
55    protected:
56
57        btCollisionWorld::RayResultCallback   *mRayResultCallback;
58        CollisionsWorld                       *mWorld;
59        Ogre::Ray                              mRay;
60                Ogre::Real                             mMaxDistance;
61
62    };
63    // -------------------------------------------------------------------------
64    // basic CollisionRay inline methods
65    inline const Ogre::Ray &CollisionRayResultCallback ::getRay() const 
66    {
67        return mRay;
68    }
69    // -------------------------------------------------------------------------
70    //  CollisionClosestRay
71    class CollisionClosestRayResultCallback : public CollisionRayResultCallback
72    { 
73        public:
74                CollisionClosestRayResultCallback(const Ogre::Ray &ray, CollisionsWorld *world, Ogre::Real max_distance);
75        virtual ~CollisionClosestRayResultCallback(){};
76
77        Object *getCollidedObject() const;
78                Ogre::Vector3 getCollisionPoint() const;
79                Ogre::Vector3 getCollisionNormal() const;
80
81        inline btCollisionWorld::ClosestRayResultCallback *getBulletClosestRayResultCallback() const 
82        {
83            return static_cast <btCollisionWorld::ClosestRayResultCallback * > (mRayResultCallback);
84        }
85    };
86}
87#endif //_OGREBULLETCOLLISIONS_CollisionRay_H
88
Note: See TracBrowser for help on using the repository browser.