DOOM-3-BFG

DOOM 3 BFG Edition
Log | Files | Refs

ModelManager.h (3846B)


      1 /*
      2 ===========================================================================
      3 
      4 Doom 3 BFG Edition GPL Source Code
      5 Copyright (C) 1993-2012 id Software LLC, a ZeniMax Media company. 
      6 
      7 This file is part of the Doom 3 BFG Edition GPL Source Code ("Doom 3 BFG Edition Source Code").  
      8 
      9 Doom 3 BFG Edition Source Code is free software: you can redistribute it and/or modify
     10 it under the terms of the GNU General Public License as published by
     11 the Free Software Foundation, either version 3 of the License, or
     12 (at your option) any later version.
     13 
     14 Doom 3 BFG Edition Source Code is distributed in the hope that it will be useful,
     15 but WITHOUT ANY WARRANTY; without even the implied warranty of
     16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     17 GNU General Public License for more details.
     18 
     19 You should have received a copy of the GNU General Public License
     20 along with Doom 3 BFG Edition Source Code.  If not, see <http://www.gnu.org/licenses/>.
     21 
     22 In addition, the Doom 3 BFG Edition Source Code is also subject to certain additional terms. You should have received a copy of these additional terms immediately following the terms and conditions of the GNU General Public License which accompanied the Doom 3 BFG Edition Source Code.  If not, please request a copy in writing from id Software at the address below.
     23 
     24 If you have questions concerning this license or the applicable additional terms, you may contact in writing id Software LLC, c/o ZeniMax Media Inc., Suite 120, Rockville, Maryland 20850 USA.
     25 
     26 ===========================================================================
     27 */
     28 
     29 #ifndef __MODELMANAGER_H__
     30 #define __MODELMANAGER_H__
     31 
     32 /*
     33 ===============================================================================
     34 
     35 	Model Manager
     36 
     37 	Temporarily created models do not need to be added to the model manager.
     38 
     39 ===============================================================================
     40 */
     41 
     42 class idRenderModelManager {
     43 public:
     44 	virtual					~idRenderModelManager() {}
     45 
     46 	// registers console commands and clears the list
     47 	virtual	void			Init() = 0;
     48 
     49 	// frees all the models
     50 	virtual	void			Shutdown() = 0;
     51 
     52 	// called only by renderer::BeginLevelLoad
     53 	virtual void			BeginLevelLoad() = 0;
     54 
     55 	// called only by renderer::EndLevelLoad
     56 	virtual void			EndLevelLoad() = 0;
     57 
     58 	// called only by renderer::Preload
     59 	virtual void			Preload( const idPreloadManifest &manifest ) = 0;
     60 
     61 	// allocates a new empty render model.
     62 	virtual idRenderModel *	AllocModel() = 0;
     63 
     64 	// frees a render model
     65 	virtual void			FreeModel( idRenderModel *model ) = 0;
     66 
     67 	// returns NULL if modelName is NULL or an empty string, otherwise
     68 	// it will create a default model if not loadable
     69 	virtual	idRenderModel *	FindModel( const char *modelName ) = 0;
     70 
     71 	// returns NULL if not loadable
     72 	virtual	idRenderModel *	CheckModel( const char *modelName ) = 0;
     73 
     74 	// returns the default cube model
     75 	virtual	idRenderModel *	DefaultModel() = 0;
     76 
     77 	// world map parsing will add all the inline models with this call
     78 	virtual	void			AddModel( idRenderModel *model ) = 0;
     79 
     80 	// when a world map unloads, it removes its internal models from the list
     81 	// before freeing them.
     82 	// There may be an issue with multiple renderWorlds that share data...
     83 	virtual	void			RemoveModel( idRenderModel *model ) = 0;
     84 
     85 	// the reloadModels console command calls this, but it can
     86 	// also be explicitly invoked
     87 	virtual	void			ReloadModels( bool forceAll = false ) = 0;
     88 
     89 	// write "touchModel <model>" commands for each non-world-map model
     90 	virtual	void			WritePrecacheCommands( idFile *f ) = 0;
     91 
     92 	// called during vid_restart
     93 	virtual	void			FreeModelVertexCaches() = 0;
     94 
     95 	// print memory info
     96 	virtual	void			PrintMemInfo( MemInfo_t *mi ) = 0;
     97 };
     98 
     99 // this will be statically pointed at a private implementation
    100 extern	idRenderModelManager	*renderModelManager;
    101 
    102 #endif /* !__MODELMANAGER_H__ */