2 Copyright (C) 2001-2006, William Joseph.
5 This file is part of GtkRadiant.
7 GtkRadiant is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version.
12 GtkRadiant is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with GtkRadiant; if not, write to the Free Software
19 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
22 #include "debugging/debugging.h"
24 #include "iscenegraph.h"
26 #include "iselection.h"
31 #include "ireference.h"
33 #include "preferencesystem.h"
34 #include "qerplugin.h"
35 #include "namespace.h"
36 #include "modelskin.h"
38 #include "typesystem.h"
41 #include "skincache.h"
43 #include "modulesystem/singletonmodule.h"
45 class EntityDependencies :
46 public GlobalRadiantModuleRef,
47 public GlobalOpenGLModuleRef,
48 public GlobalUndoModuleRef,
49 public GlobalSceneGraphModuleRef,
50 public GlobalShaderCacheModuleRef,
51 public GlobalSelectionModuleRef,
52 public GlobalReferenceModuleRef,
53 public GlobalFilterModuleRef,
54 public GlobalPreferenceSystemModuleRef,
55 public GlobalNamespaceModuleRef,
56 public GlobalModelSkinCacheModuleRef
60 class EntityQ3API : public TypeSystemRef
62 EntityCreator* m_entityq3;
64 typedef EntityCreator Type;
65 STRING_CONSTANT( Name, "quake3" );
70 m_entityq3 = &GetEntityCreator();
72 GlobalReferenceCache().setEntityCreator( *m_entityq3 );
77 EntityCreator* getTable(){
82 typedef SingletonModule<EntityQ3API, EntityDependencies> EntityQ3Module;
84 EntityQ3Module g_EntityQ3Module;
87 class EntityWolfAPI : public TypeSystemRef
89 EntityCreator* m_entitywolf;
91 typedef EntityCreator Type;
92 STRING_CONSTANT( Name, "wolf" );
95 Entity_Construct( eGameTypeRTCW );
97 m_entitywolf = &GetEntityCreator();
99 GlobalReferenceCache().setEntityCreator( *m_entitywolf );
104 EntityCreator* getTable(){
109 typedef SingletonModule<EntityWolfAPI, EntityDependencies> EntityWolfModule;
111 EntityWolfModule g_EntityWolfModule;
114 class EntityDoom3API : public TypeSystemRef
116 EntityCreator* m_entitydoom3;
118 typedef EntityCreator Type;
119 STRING_CONSTANT( Name, "doom3" );
122 Entity_Construct( eGameTypeDoom3 );
124 m_entitydoom3 = &GetEntityCreator();
126 GlobalReferenceCache().setEntityCreator( *m_entitydoom3 );
131 EntityCreator* getTable(){
132 return m_entitydoom3;
136 typedef SingletonModule<EntityDoom3API, EntityDependencies> EntityDoom3Module;
138 EntityDoom3Module g_EntityDoom3Module;
141 extern "C" void RADIANT_DLLEXPORT Radiant_RegisterModules( ModuleServer& server ){
142 initialiseModule( server );
144 g_EntityQ3Module.selfRegister();
145 g_EntityWolfModule.selfRegister();
146 g_EntityDoom3Module.selfRegister();
147 Doom3ModelSkinCacheModule_selfRegister( server );