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