Irrlicht 3D Engine
ISceneManager.h
Go to the documentation of this file.
00001 // Copyright (C) 2002-2012 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_MANAGER_H_INCLUDED__
00006 #define __I_SCENE_MANAGER_H_INCLUDED__
00007 
00008 #include "IReferenceCounted.h"
00009 #include "irrArray.h"
00010 #include "irrString.h"
00011 #include "path.h"
00012 #include "vector3d.h"
00013 #include "dimension2d.h"
00014 #include "SColor.h"
00015 #include "ETerrainElements.h"
00016 #include "ESceneNodeTypes.h"
00017 #include "ESceneNodeAnimatorTypes.h"
00018 #include "EMeshWriterEnums.h"
00019 #include "SceneParameters.h"
00020 #include "IGeometryCreator.h"
00021 #include "ISkinnedMesh.h"
00022 
00023 namespace irr
00024 {
00025     struct SKeyMap;
00026     struct SEvent;
00027 
00028 namespace io
00029 {
00030     class IReadFile;
00031     class IAttributes;
00032     class IWriteFile;
00033     class IFileSystem;
00034 } // end namespace io
00035 
00036 namespace gui
00037 {
00038     class IGUIFont;
00039     class IGUIEnvironment;
00040 } // end namespace gui
00041 
00042 namespace video
00043 {
00044     class IVideoDriver;
00045     class SMaterial;
00046     class IImage;
00047     class ITexture;
00048 } // end namespace video
00049 
00050 namespace scene
00051 {
00053 
00055     enum E_SCENE_NODE_RENDER_PASS
00056     {
00058         ESNRP_NONE =0,
00059 
00061         ESNRP_CAMERA =1,
00062 
00064         ESNRP_LIGHT =2,
00065 
00067         ESNRP_SKY_BOX =4,
00068 
00070 
00082         ESNRP_AUTOMATIC =24,
00083 
00085         ESNRP_SOLID =8,
00086 
00088         ESNRP_TRANSPARENT =16,
00089 
00091         ESNRP_TRANSPARENT_EFFECT =32,
00092 
00094         ESNRP_SHADOW =64
00095     };
00096 
00097     class IAnimatedMesh;
00098     class IAnimatedMeshSceneNode;
00099     class IBillboardSceneNode;
00100     class IBillboardTextSceneNode;
00101     class ICameraSceneNode;
00102     class IDummyTransformationSceneNode;
00103     class ILightManager;
00104     class ILightSceneNode;
00105     class IMesh;
00106     class IMeshBuffer;
00107     class IMeshCache;
00108     class IMeshLoader;
00109     class IMeshManipulator;
00110     class IMeshSceneNode;
00111     class IMeshWriter;
00112     class IMetaTriangleSelector;
00113     class IParticleSystemSceneNode;
00114     class ISceneCollisionManager;
00115     class ISceneLoader;
00116     class ISceneNode;
00117     class ISceneNodeAnimator;
00118     class ISceneNodeAnimatorCollisionResponse;
00119     class ISceneNodeAnimatorFactory;
00120     class ISceneNodeFactory;
00121     class ISceneUserDataSerializer;
00122     class ITerrainSceneNode;
00123     class ITextSceneNode;
00124     class ITriangleSelector;
00125     class IVolumeLightSceneNode;
00126 
00127     namespace quake3
00128     {
00129         struct IShader;
00130     } // end namespace quake3
00131 
00133 
00150     class ISceneManager : public virtual IReferenceCounted
00151     {
00152     public:
00153 
00155 
00399         virtual IAnimatedMesh* getMesh(const io::path& filename) = 0;
00400 
00402 
00408         virtual IAnimatedMesh* getMesh(io::IReadFile* file) = 0;
00409 
00411 
00414         virtual IMeshCache* getMeshCache() = 0;
00415 
00417 
00419         virtual video::IVideoDriver* getVideoDriver() = 0;
00420 
00422 
00424         virtual gui::IGUIEnvironment* getGUIEnvironment() = 0;
00425 
00427 
00429         virtual io::IFileSystem* getFileSystem() = 0;
00430 
00432 
00445         virtual IVolumeLightSceneNode* addVolumeLightSceneNode(ISceneNode* parent=0, s32 id=-1,
00446             const u32 subdivU = 32, const u32 subdivV = 32,
00447             const video::SColor foot = video::SColor(51, 0, 230, 180),
00448             const video::SColor tail = video::SColor(0, 0, 0, 0),
00449             const core::vector3df& position = core::vector3df(0,0,0),
00450             const core::vector3df& rotation = core::vector3df(0,0,0),
00451             const core::vector3df& scale = core::vector3df(1.0f, 1.0f, 1.0f)) = 0;
00452 
00454 
00464         virtual IMeshSceneNode* addCubeSceneNode(f32 size=10.0f, ISceneNode* parent=0, s32 id=-1,
00465             const core::vector3df& position = core::vector3df(0,0,0),
00466             const core::vector3df& rotation = core::vector3df(0,0,0),
00467             const core::vector3df& scale = core::vector3df(1.0f, 1.0f, 1.0f)) = 0;
00468 
00470 
00484         virtual IMeshSceneNode* addSphereSceneNode(f32 radius=5.0f, s32 polyCount=16,
00485                 ISceneNode* parent=0, s32 id=-1,
00486                 const core::vector3df& position = core::vector3df(0,0,0),
00487                 const core::vector3df& rotation = core::vector3df(0,0,0),
00488                 const core::vector3df& scale = core::vector3df(1.0f, 1.0f, 1.0f)) = 0;
00489 
00491 
00501         virtual IAnimatedMeshSceneNode* addAnimatedMeshSceneNode(IAnimatedMesh* mesh,
00502                 ISceneNode* parent=0, s32 id=-1,
00503                 const core::vector3df& position = core::vector3df(0,0,0),
00504                 const core::vector3df& rotation = core::vector3df(0,0,0),
00505                 const core::vector3df& scale = core::vector3df(1.0f, 1.0f, 1.0f),
00506                 bool alsoAddIfMeshPointerZero=false) = 0;
00507 
00509 
00519         virtual IMeshSceneNode* addMeshSceneNode(IMesh* mesh, ISceneNode* parent=0, s32 id=-1,
00520             const core::vector3df& position = core::vector3df(0,0,0),
00521             const core::vector3df& rotation = core::vector3df(0,0,0),
00522             const core::vector3df& scale = core::vector3df(1.0f, 1.0f, 1.0f),
00523             bool alsoAddIfMeshPointerZero=false) = 0;
00524 
00526 
00540         virtual ISceneNode* addWaterSurfaceSceneNode(IMesh* mesh,
00541             f32 waveHeight=2.0f, f32 waveSpeed=300.0f, f32 waveLength=10.0f,
00542             ISceneNode* parent=0, s32 id=-1,
00543             const core::vector3df& position = core::vector3df(0,0,0),
00544             const core::vector3df& rotation = core::vector3df(0,0,0),
00545             const core::vector3df& scale = core::vector3df(1.0f, 1.0f, 1.0f)) = 0;
00546 
00547 
00549 
00561         virtual IMeshSceneNode* addOctreeSceneNode(IAnimatedMesh* mesh, ISceneNode* parent=0,
00562             s32 id=-1, s32 minimalPolysPerNode=512, bool alsoAddIfMeshPointerZero=false) = 0;
00563 
00565 
00566         _IRR_DEPRECATED_ IMeshSceneNode* addOctTreeSceneNode(IAnimatedMesh* mesh, ISceneNode* parent=0,
00567             s32 id=-1, s32 minimalPolysPerNode=512, bool alsoAddIfMeshPointerZero=false)
00568         {
00569             return addOctreeSceneNode(mesh, parent, id, minimalPolysPerNode, alsoAddIfMeshPointerZero);
00570         }
00571 
00573 
00585         virtual IMeshSceneNode* addOctreeSceneNode(IMesh* mesh, ISceneNode* parent=0,
00586             s32 id=-1, s32 minimalPolysPerNode=256, bool alsoAddIfMeshPointerZero=false) = 0;
00587 
00589 
00590         _IRR_DEPRECATED_ IMeshSceneNode* addOctTreeSceneNode(IMesh* mesh, ISceneNode* parent=0,
00591             s32 id=-1, s32 minimalPolysPerNode=256, bool alsoAddIfMeshPointerZero=false)
00592         {
00593             return addOctreeSceneNode(mesh, parent, id, minimalPolysPerNode, alsoAddIfMeshPointerZero);
00594         }
00595 
00597 
00613         virtual ICameraSceneNode* addCameraSceneNode(ISceneNode* parent = 0,
00614             const core::vector3df& position = core::vector3df(0,0,0),
00615             const core::vector3df& lookat = core::vector3df(0,0,100),
00616             s32 id=-1, bool makeActive=true) = 0;
00617 
00619 
00635         virtual ICameraSceneNode* addCameraSceneNodeMaya(ISceneNode* parent=0,
00636             f32 rotateSpeed=-1500.f, f32 zoomSpeed=200.f,
00637             f32 translationSpeed=1500.f, s32 id=-1, f32 distance=70.f,
00638             bool makeActive=true) =0;
00639 
00641 
00704         virtual ICameraSceneNode* addCameraSceneNodeFPS(ISceneNode* parent = 0,
00705             f32 rotateSpeed = 100.0f, f32 moveSpeed = 0.5f, s32 id=-1,
00706             SKeyMap* keyMapArray=0, s32 keyMapSize=0, bool noVerticalMovement=false,
00707             f32 jumpSpeed = 0.f, bool invertMouse=false,
00708             bool makeActive=true) = 0;
00709 
00711 
00723         virtual ILightSceneNode* addLightSceneNode(ISceneNode* parent = 0,
00724             const core::vector3df& position = core::vector3df(0,0,0),
00725             video::SColorf color = video::SColorf(1.0f, 1.0f, 1.0f),
00726             f32 radius=100.0f, s32 id=-1) = 0;
00727 
00729 
00747         virtual IBillboardSceneNode* addBillboardSceneNode(ISceneNode* parent = 0,
00748             const core::dimension2d<f32>& size = core::dimension2d<f32>(10.0f, 10.0f),
00749             const core::vector3df& position = core::vector3df(0,0,0), s32 id=-1,
00750             video::SColor colorTop = 0xFFFFFFFF, video::SColor colorBottom = 0xFFFFFFFF) = 0;
00751 
00753 
00767         virtual ISceneNode* addSkyBoxSceneNode(video::ITexture* top, video::ITexture* bottom,
00768             video::ITexture* left, video::ITexture* right, video::ITexture* front,
00769             video::ITexture* back, ISceneNode* parent = 0, s32 id=-1) = 0;
00770 
00772 
00789         virtual ISceneNode* addSkyDomeSceneNode(video::ITexture* texture,
00790             u32 horiRes=16, u32 vertRes=8,
00791             f32 texturePercentage=0.9, f32 spherePercentage=2.0,f32 radius = 1000.f,
00792             ISceneNode* parent=0, s32 id=-1) = 0;
00793 
00795 
00807         virtual IParticleSystemSceneNode* addParticleSystemSceneNode(
00808             bool withDefaultEmitter=true, ISceneNode* parent=0, s32 id=-1,
00809             const core::vector3df& position = core::vector3df(0,0,0),
00810             const core::vector3df& rotation = core::vector3df(0,0,0),
00811             const core::vector3df& scale = core::vector3df(1.0f, 1.0f, 1.0f)) = 0;
00812 
00814 
00869         virtual ITerrainSceneNode* addTerrainSceneNode(
00870             const io::path& heightMapFileName,
00871                 ISceneNode* parent=0, s32 id=-1,
00872             const core::vector3df& position = core::vector3df(0.0f,0.0f,0.0f),
00873             const core::vector3df& rotation = core::vector3df(0.0f,0.0f,0.0f),
00874             const core::vector3df& scale = core::vector3df(1.0f,1.0f,1.0f),
00875             video::SColor vertexColor = video::SColor(255,255,255,255),
00876             s32 maxLOD=5, E_TERRAIN_PATCH_SIZE patchSize=ETPS_17, s32 smoothFactor=0,
00877             bool addAlsoIfHeightmapEmpty = false) = 0;
00878 
00880 
00907         virtual ITerrainSceneNode* addTerrainSceneNode(
00908             io::IReadFile* heightMapFile,
00909             ISceneNode* parent=0, s32 id=-1,
00910             const core::vector3df& position = core::vector3df(0.0f,0.0f,0.0f),
00911             const core::vector3df& rotation = core::vector3df(0.0f,0.0f,0.0f),
00912             const core::vector3df& scale = core::vector3df(1.0f,1.0f,1.0f),
00913             video::SColor vertexColor = video::SColor(255,255,255,255),
00914             s32 maxLOD=5, E_TERRAIN_PATCH_SIZE patchSize=ETPS_17, s32 smoothFactor=0,
00915             bool addAlsoIfHeightmapEmpty = false) = 0;
00916 
00918 
00921         virtual IMeshSceneNode* addQuake3SceneNode(const IMeshBuffer* meshBuffer, const quake3::IShader * shader,
00922                                                 ISceneNode* parent=0, s32 id=-1
00923                                                 ) = 0;
00924 
00925 
00927 
00931         virtual ISceneNode* addEmptySceneNode(ISceneNode* parent=0, s32 id=-1) = 0;
00932 
00934 
00940         virtual IDummyTransformationSceneNode* addDummyTransformationSceneNode(
00941             ISceneNode* parent=0, s32 id=-1) = 0;
00942 
00944         virtual ITextSceneNode* addTextSceneNode(gui::IGUIFont* font, const wchar_t* text,
00945             video::SColor color=video::SColor(100,255,255,255),
00946             ISceneNode* parent = 0, const core::vector3df& position = core::vector3df(0,0,0),
00947             s32 id=-1) = 0;
00948 
00950 
00961         virtual IBillboardTextSceneNode* addBillboardTextSceneNode( gui::IGUIFont* font, const wchar_t* text,
00962             ISceneNode* parent = 0,
00963             const core::dimension2d<f32>& size = core::dimension2d<f32>(10.0f, 10.0f),
00964             const core::vector3df& position = core::vector3df(0,0,0), s32 id=-1,
00965             video::SColor colorTop = 0xFFFFFFFF, video::SColor colorBottom = 0xFFFFFFFF) = 0;
00966 
00968 
00994         virtual IAnimatedMesh* addHillPlaneMesh(const io::path& name,
00995             const core::dimension2d<f32>& tileSize, const core::dimension2d<u32>& tileCount,
00996             video::SMaterial* material = 0, f32 hillHeight = 0.0f,
00997             const core::dimension2d<f32>& countHills = core::dimension2d<f32>(0.0f, 0.0f),
00998             const core::dimension2d<f32>& textureRepeatCount = core::dimension2d<f32>(1.0f, 1.0f)) = 0;
00999 
01001 
01023         virtual IAnimatedMesh* addTerrainMesh(const io::path& meshname,
01024             video::IImage* texture, video::IImage* heightmap,
01025             const core::dimension2d<f32>& stretchSize = core::dimension2d<f32>(10.0f,10.0f),
01026             f32 maxHeight=200.0f,
01027             const core::dimension2d<u32>& defaultVertexBlockSize = core::dimension2d<u32>(64,64)) = 0;
01028 
01030 
01041         virtual IAnimatedMesh* addArrowMesh(const io::path& name,
01042                 video::SColor vtxColorCylinder=0xFFFFFFFF,
01043                 video::SColor vtxColorCone=0xFFFFFFFF,
01044                 u32 tesselationCylinder=4, u32 tesselationCone=8,
01045                 f32 height=1.f, f32 cylinderHeight=0.6f,
01046                 f32 widthCylinder=0.05f, f32 widthCone=0.3f) = 0;
01047 
01049 
01055         virtual IAnimatedMesh* addSphereMesh(const io::path& name,
01056                 f32 radius=5.f, u32 polyCountX = 16,
01057                 u32 polyCountY = 16) = 0;
01058 
01060 
01068         virtual IAnimatedMesh* addVolumeLightMesh(const io::path& name,
01069                 const u32 SubdivideU = 32, const u32 SubdivideV = 32,
01070                 const video::SColor FootColor = video::SColor(51, 0, 230, 180),
01071                 const video::SColor TailColor = video::SColor(0, 0, 0, 0)) = 0;
01072 
01074 
01080         virtual ISceneNode* getRootSceneNode() = 0;
01081 
01083 
01090         virtual ISceneNode* getSceneNodeFromId(s32 id, ISceneNode* start=0) = 0;
01091 
01093 
01100         virtual ISceneNode* getSceneNodeFromName(const c8* name, ISceneNode* start=0) = 0;
01101 
01103 
01110         virtual ISceneNode* getSceneNodeFromType(scene::ESCENE_NODE_TYPE type, ISceneNode* start=0) = 0;
01111 
01113 
01118         virtual void getSceneNodesFromType(ESCENE_NODE_TYPE type,
01119                 core::array<scene::ISceneNode*>& outNodes,
01120                 ISceneNode* start=0) = 0;
01121 
01123 
01126         virtual ICameraSceneNode* getActiveCamera() const =0;
01127 
01129 
01131         virtual void setActiveCamera(ICameraSceneNode* camera) = 0;
01132 
01134         virtual void setShadowColor(video::SColor color = video::SColor(150,0,0,0)) = 0;
01135 
01137         virtual video::SColor getShadowColor() const = 0;
01138 
01140 
01148         virtual u32 registerNodeForRendering(ISceneNode* node,
01149             E_SCENE_NODE_RENDER_PASS pass = ESNRP_AUTOMATIC) = 0;
01150 
01152 
01156         virtual void drawAll() = 0;
01157 
01159 
01164         virtual ISceneNodeAnimator* createRotationAnimator(const core::vector3df& rotationSpeed) = 0;
01165 
01167 
01179         virtual ISceneNodeAnimator* createFlyCircleAnimator(
01180                 const core::vector3df& center=core::vector3df(0.f,0.f,0.f),
01181                 f32 radius=100.f, f32 speed=0.001f,
01182                 const core::vector3df& direction=core::vector3df(0.f, 1.f, 0.f),
01183                 f32 startPosition = 0.f,
01184                 f32 radiusEllipsoid = 0.f) = 0;
01185 
01187 
01199         virtual ISceneNodeAnimator* createFlyStraightAnimator(const core::vector3df& startPoint,
01200             const core::vector3df& endPoint, u32 timeForWay, bool loop=false, bool pingpong = false) = 0;
01201 
01203 
01212         virtual ISceneNodeAnimator* createTextureAnimator(const core::array<video::ITexture*>& textures,
01213             s32 timePerFrame, bool loop=true) = 0;
01214 
01216 
01221         virtual ISceneNodeAnimator* createDeleteAnimator(u32 timeMs) = 0;
01222 
01224 
01254         virtual ISceneNodeAnimatorCollisionResponse* createCollisionResponseAnimator(
01255             ITriangleSelector* world, ISceneNode* sceneNode,
01256             const core::vector3df& ellipsoidRadius = core::vector3df(30,60,30),
01257             const core::vector3df& gravityPerSecond = core::vector3df(0,-10.0f,0),
01258             const core::vector3df& ellipsoidTranslation = core::vector3df(0,0,0),
01259             f32 slidingValue = 0.0005f) = 0;
01260 
01262 
01270         virtual ISceneNodeAnimator* createFollowSplineAnimator(s32 startTime,
01271             const core::array< core::vector3df >& points,
01272             f32 speed = 1.0f, f32 tightness = 0.5f, bool loop=true, bool pingpong=false) = 0;
01273 
01275 
01293         virtual ITriangleSelector* createTriangleSelector(IMesh* mesh, ISceneNode* node) = 0;
01294 
01296 
01301         virtual ITriangleSelector* createTriangleSelector(IAnimatedMeshSceneNode* node) = 0;
01302 
01303 
01305 
01313         virtual ITriangleSelector* createTriangleSelectorFromBoundingBox(ISceneNode* node) = 0;
01314 
01316 
01338         virtual ITriangleSelector* createOctreeTriangleSelector(IMesh* mesh,
01339             ISceneNode* node, s32 minimalPolysPerNode=32) = 0;
01340 
01342 
01343         _IRR_DEPRECATED_ ITriangleSelector* createOctTreeTriangleSelector(IMesh* mesh,
01344             ISceneNode* node, s32 minimalPolysPerNode=32)
01345         {
01346             return createOctreeTriangleSelector(mesh, node, minimalPolysPerNode);
01347         }
01348 
01350 
01357         virtual IMetaTriangleSelector* createMetaTriangleSelector() = 0;
01358 
01360 
01365         virtual ITriangleSelector* createTerrainTriangleSelector(
01366             ITerrainSceneNode* node, s32 LOD=0) = 0;
01367 
01369 
01375         virtual void addExternalMeshLoader(IMeshLoader* externalLoader) = 0;
01376 
01378         virtual u32 getMeshLoaderCount() const = 0;
01379 
01381 
01384         virtual IMeshLoader* getMeshLoader(u32 index) const = 0;
01385 
01387 
01393         virtual void addExternalSceneLoader(ISceneLoader* externalLoader) = 0;
01394 
01396         virtual u32 getSceneLoaderCount() const = 0;
01397 
01399 
01402         virtual ISceneLoader* getSceneLoader(u32 index) const = 0;
01403 
01405 
01407         virtual ISceneCollisionManager* getSceneCollisionManager() = 0;
01408 
01410 
01412         virtual IMeshManipulator* getMeshManipulator() = 0;
01413 
01415 
01423         virtual void addToDeletionQueue(ISceneNode* node) = 0;
01424 
01426 
01428         virtual bool postEventFromUser(const SEvent& event) = 0;
01429 
01431 
01432         virtual void clear() = 0;
01433 
01435 
01440         virtual io::IAttributes* getParameters() = 0;
01441 
01443 
01449         virtual E_SCENE_NODE_RENDER_PASS getSceneNodeRenderPass() const = 0;
01450 
01452 
01454         virtual ISceneNodeFactory* getDefaultSceneNodeFactory() = 0;
01455 
01457 
01459         virtual void registerSceneNodeFactory(ISceneNodeFactory* factoryToAdd) = 0;
01460 
01462         virtual u32 getRegisteredSceneNodeFactoryCount() const = 0;
01463 
01465 
01467         virtual ISceneNodeFactory* getSceneNodeFactory(u32 index) = 0;
01468 
01470 
01472         virtual ISceneNodeAnimatorFactory* getDefaultSceneNodeAnimatorFactory() = 0;
01473 
01475 
01477         virtual void registerSceneNodeAnimatorFactory(ISceneNodeAnimatorFactory* factoryToAdd) = 0;
01478 
01480         virtual u32 getRegisteredSceneNodeAnimatorFactoryCount() const = 0;
01481 
01483 
01485         virtual ISceneNodeAnimatorFactory* getSceneNodeAnimatorFactory(u32 index) = 0;
01486 
01488         virtual const c8* getSceneNodeTypeName(ESCENE_NODE_TYPE type) = 0;
01489 
01491         virtual const c8* getAnimatorTypeName(ESCENE_NODE_ANIMATOR_TYPE type) = 0;
01492 
01494 
01496         virtual ISceneNode* addSceneNode(const char* sceneNodeTypeName, ISceneNode* parent=0) = 0;
01497 
01499 
01503         virtual ISceneNodeAnimator* createSceneNodeAnimator(const char* typeName, ISceneNode* target=0) = 0;
01504 
01506 
01524         virtual ISceneManager* createNewSceneManager(bool cloneContent=false) = 0;
01525 
01527 
01542         virtual bool saveScene(const io::path& filename, ISceneUserDataSerializer* userDataSerializer=0, ISceneNode* node=0) = 0;
01543 
01545 
01560         virtual bool saveScene(io::IWriteFile* file, ISceneUserDataSerializer* userDataSerializer=0, ISceneNode* node=0) = 0;
01561 
01563 
01580         virtual bool saveScene(io::IXMLWriter* writer, const io::path& currentPath, ISceneUserDataSerializer* userDataSerializer=0, ISceneNode* node=0) = 0;
01581 
01583 
01599         virtual bool loadScene(const io::path& filename, ISceneUserDataSerializer* userDataSerializer=0, ISceneNode* rootNode=0) = 0;
01600 
01602 
01618         virtual bool loadScene(io::IReadFile* file, ISceneUserDataSerializer* userDataSerializer=0, ISceneNode* rootNode=0) = 0;
01619 
01621 
01623         virtual IMeshWriter* createMeshWriter(EMESH_WRITER_TYPE type) = 0;
01624 
01626 
01628         virtual ISkinnedMesh* createSkinnedMesh() = 0;
01629 
01631         virtual void setAmbientLight(const video::SColorf &ambientColor) = 0;
01632 
01634         virtual const video::SColorf& getAmbientLight() const = 0;
01635 
01637 
01639         virtual void setLightManager(ILightManager* lightManager) = 0;
01640 
01642 
01644         virtual const IGeometryCreator* getGeometryCreator(void) const = 0;
01645 
01647 
01655         virtual bool isCulled(const ISceneNode* node) const =0;
01656     };
01657 
01658 
01659 } // end namespace scene
01660 } // end namespace irr
01661 
01662 #endif
01663