1 // Copyright (C) 2002-2012 Nikolaus Gebhardt 2 // This file is part of the "Irrlicht Engine". 3 // For conditions of distribution and use, see copyright notice in irrlicht.h 4 5 #ifndef __I_Q3_LEVEL_MESH_H_INCLUDED__ 6 #define __I_Q3_LEVEL_MESH_H_INCLUDED__ 7 8 #include "IAnimatedMesh.h" 9 #include "IQ3Shader.h" 10 11 namespace irr 12 { 13 namespace scene 14 { 15 //! Interface for a Mesh which can be loaded directly from a Quake3 .bsp-file. 16 /** The Mesh tries to load all textures of the map.*/ 17 class IQ3LevelMesh : public IAnimatedMesh 18 { 19 public: 20 21 //! loads the shader definition from file 22 /** \param filename Name of the shaderfile, defaults to /scripts if fileNameIsValid is false. 23 \param fileNameIsValid Specifies whether the filename is valid in the current situation. */ 24 virtual const quake3::IShader* getShader( const c8* filename, bool fileNameIsValid=true ) = 0; 25 26 //! returns a already loaded Shader 27 virtual const quake3::IShader* getShader(u32 index) const = 0; 28 29 //! get's an interface to the entities 30 virtual quake3::tQ3EntityList& getEntityList() = 0; 31 32 //! returns the requested brush entity 33 /** \param num The number from the model key of the entity. 34 35 Use this interface if you parse the entities yourself.*/ 36 virtual IMesh* getBrushEntityMesh(s32 num) const = 0; 37 38 //! returns the requested brush entity 39 virtual IMesh* getBrushEntityMesh(quake3::IEntity &ent) const = 0; 40 }; 41 42 } // end namespace scene 43 } // end namespace irr 44 45 #endif 46 47