GLES drivers adapted, but only did make compile-tests. git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/branches/ogl-es@6038 dfc29bdd-3216-0410-991c-e03cc46cb475
		
			
				
	
	
		
			108 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| // Copyright (C) 2002-2012 Nikolaus Gebhardt
 | |
| // This file is part of the "Irrlicht Engine".
 | |
| // For conditions of distribution and use, see copyright notice in irrlicht.h
 | |
| 
 | |
| #include "IrrCompileConfig.h"
 | |
| #ifdef _IRR_COMPILE_WITH_BSP_LOADER_
 | |
| 
 | |
| #include "CBSPMeshFileLoader.h"
 | |
| #include "CQ3LevelMesh.h"
 | |
| 
 | |
| namespace irr
 | |
| {
 | |
| namespace scene
 | |
| {
 | |
| 
 | |
| //! Constructor
 | |
| CBSPMeshFileLoader::CBSPMeshFileLoader(scene::ISceneManager* smgr,
 | |
| 		io::IFileSystem* fs)
 | |
| : FileSystem(fs), SceneManager(smgr)
 | |
| {
 | |
| 
 | |
| 	#ifdef _DEBUG
 | |
| 	setDebugName("CBSPMeshFileLoader");
 | |
| 	#endif
 | |
| 
 | |
| 	if (FileSystem)
 | |
| 		FileSystem->grab();
 | |
| }
 | |
| 
 | |
| 
 | |
| //! destructor
 | |
| CBSPMeshFileLoader::~CBSPMeshFileLoader()
 | |
| {
 | |
| 	if (FileSystem)
 | |
| 		FileSystem->drop();
 | |
| }
 | |
| 
 | |
| 
 | |
| //! returns true if the file maybe is able to be loaded by this class
 | |
| //! based on the file extension (e.g. ".bsp")
 | |
| bool CBSPMeshFileLoader::isALoadableFileExtension(const io::path& filename) const
 | |
| {
 | |
| 	return core::hasFileExtension ( filename, "bsp", "shader", "cfg" );
 | |
| }
 | |
| 
 | |
| 
 | |
| //! creates/loads an animated mesh from the file.
 | |
| //! \return Pointer to the created mesh. Returns 0 if loading failed.
 | |
| //! If you no longer need the mesh, you should call IAnimatedMesh::drop().
 | |
| //! See IReferenceCounted::drop() for more information.
 | |
| IAnimatedMesh* CBSPMeshFileLoader::createMesh(io::IReadFile* file)
 | |
| {
 | |
| 	s32 type = core::isFileExtension ( file->getFileName(), "bsp", "shader", "cfg" );
 | |
| 	CQ3LevelMesh* q = 0;
 | |
| 
 | |
| 	switch ( type )
 | |
| 	{
 | |
| 		case 1:
 | |
| 			q = new CQ3LevelMesh(FileSystem, SceneManager, LoadParam);
 | |
| 
 | |
| 			// determine real shaders in LoadParam
 | |
| 			if ( 0 == LoadParam.loadAllShaders )
 | |
| 			{
 | |
| 				q->getShader("scripts/common.shader");
 | |
| 				q->getShader("scripts/sfx.shader");
 | |
| 				q->getShader("scripts/gfx.shader");
 | |
| 				q->getShader("scripts/liquid.shader");
 | |
| 				q->getShader("scripts/models.shader");
 | |
| 				q->getShader("scripts/walls.shader");
 | |
| 				//q->getShader("scripts/sky.shader");
 | |
| 			}
 | |
| 
 | |
| 			if ( q->loadFile(file) )
 | |
| 				return q;
 | |
| 
 | |
| 			q->drop();
 | |
| 			break;
 | |
| 
 | |
| 		case 2:
 | |
| 			q = new CQ3LevelMesh(FileSystem, SceneManager,LoadParam);
 | |
| 			q->getShader( file );
 | |
| 			return q;
 | |
| 			break;
 | |
| 
 | |
| 		case 3:
 | |
| 			// load quake 3 loading parameter
 | |
| 			if ( file->getFileName() == "levelparameter.cfg" )
 | |
| 			{
 | |
| 				file->read ( &LoadParam, sizeof ( LoadParam ) );
 | |
| 			}
 | |
| 			else
 | |
| 			{
 | |
| 				q = new CQ3LevelMesh(FileSystem, SceneManager,LoadParam);
 | |
| 				q->getConfiguration( file );
 | |
| 				return q;
 | |
| 			}
 | |
| 			break;
 | |
| 	}
 | |
| 
 | |
| 	return 0;
 | |
| }
 | |
| 
 | |
| } // end namespace scene
 | |
| } // end namespace irr
 | |
| 
 | |
| #endif // _IRR_COMPILE_WITH_BSP_LOADER_
 | |
| 
 |