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-2009 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 Documentation © 2003-2010 by Nikolaus Gebhardt. Generated on Sun Feb 14 13:06:57 2010 by Doxygen (1.6.2)