Home | Namespaces | Hierarchy | Alphabetical List | Class list | Files | Namespace Members | Class members | File members | Tutorials

ISceneCollisionManager.h

Go to the documentation of this file.
00001 // Copyright (C) 2002-2010 Nikolaus Gebhardt
00002 // This file is part of the "Irrlicht Engine".
00003 // For conditions of distribution and use, see copyright notice in irrlicht.h
00004 
00005 #ifndef __I_SCENE_COLLISION_MANAGER_H_INCLUDED__
00006 #define __I_SCENE_COLLISION_MANAGER_H_INCLUDED__
00007 
00008 #include "IReferenceCounted.h"
00009 #include "vector3d.h"
00010 #include "triangle3d.h"
00011 #include "position2d.h"
00012 #include "line3d.h"
00013 
00014 namespace irr
00015 {
00016 
00017 namespace scene
00018 {
00019         class ISceneNode;
00020         class ICameraSceneNode;
00021         class ITriangleSelector;
00022 
00024         class ISceneCollisionManager : public virtual IReferenceCounted
00025         {
00026         public:
00027 
00029 
00041                 virtual bool getCollisionPoint(const core::line3d<f32>& ray,
00042                                 ITriangleSelector* selector, core::vector3df& outCollisionPoint,
00043                                 core::triangle3df& outTriangle, const ISceneNode*& outNode) =0;
00044 
00046 
00068                 virtual core::vector3df getCollisionResultPosition(
00069                         ITriangleSelector* selector,
00070                         const core::vector3df &ellipsoidPosition,
00071                         const core::vector3df& ellipsoidRadius,
00072                         const core::vector3df& ellipsoidDirectionAndSpeed,
00073                         core::triangle3df& triout,
00074                         core::vector3df& hitPosition,
00075                         bool& outFalling,
00076                         const ISceneNode*& outNode,
00077                         f32 slidingSpeed = 0.0005f,
00078                         const core::vector3df& gravityDirectionAndSpeed
00079                         = core::vector3df(0.0f, 0.0f, 0.0f)) = 0;
00080 
00082 
00088                 virtual core::line3d<f32> getRayFromScreenCoordinates(
00089                         const core::position2d<s32> & pos, ICameraSceneNode* camera = 0) = 0;
00090 
00092 
00102                 virtual core::position2d<s32> getScreenCoordinatesFrom3DPosition(
00103                         const core::vector3df & pos, ICameraSceneNode* camera=0) = 0;
00104 
00106 
00121                 virtual ISceneNode* getSceneNodeFromScreenCoordinatesBB(const core::position2d<s32>& pos,
00122                                 s32 idBitMask=0, bool bNoDebugObjects=false, ISceneNode* root=0) =0;
00123 
00125 
00137                 virtual ISceneNode* getSceneNodeFromRayBB(const core::line3d<f32>& ray,
00138                                                         s32 idBitMask=0, bool bNoDebugObjects=false, ISceneNode* root=0) =0;
00139 
00141 
00157                 virtual ISceneNode* getSceneNodeFromCameraBB(ICameraSceneNode* camera,
00158                         s32 idBitMask=0, bool bNoDebugObjects = false) = 0;
00159 
00161 
00187                 virtual ISceneNode* getSceneNodeAndCollisionPointFromRay(
00188                                                                 core::line3df ray,
00189                                                                 core::vector3df & outCollisionPoint,
00190                                                                 core::triangle3df & outTriangle,
00191                                                                 s32 idBitMask = 0,
00192                                                                 ISceneNode * collisionRootNode = 0,
00193                                                                 bool noDebugObjects = false) = 0;
00194         };
00195 
00196 
00197 } // end namespace scene
00198 } // end namespace irr
00199 
00200 #endif
00201 

The Irrlicht Engine
The Irrlicht Engine Documentation © 2003-2010 by Nikolaus Gebhardt. Generated on Sun Oct 24 12:41:57 2010 by Doxygen (1.6.2)