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
24 #include "debugging/debugging.h"
26 #include "iscenegraph.h"
28 #include "iselection.h"
33 #include "ireference.h"
35 #include "preferencesystem.h"
36 #include "qerplugin.h"
37 #include "namespace.h"
38 #include "modelskin.h"
40 #include "typesystem.h"
43 #include "skincache.h"
45 #include "modulesystem/singletonmodule.h"
47 class EntityDependencies :
48 public GlobalRadiantModuleRef,
49 public GlobalOpenGLModuleRef,
50 public GlobalUndoModuleRef,
51 public GlobalSceneGraphModuleRef,
52 public GlobalShaderCacheModuleRef,
53 public GlobalSelectionModuleRef,
54 public GlobalReferenceModuleRef,
55 public GlobalFilterModuleRef,
56 public GlobalPreferenceSystemModuleRef,
57 public GlobalNamespaceModuleRef,
58 public GlobalModelSkinCacheModuleRef
62 class EntityQ3API : public TypeSystemRef
64 EntityCreator* m_entityq3;
66 typedef EntityCreator Type;
67 STRING_CONSTANT(Name, "quake3");
73 m_entityq3 = &GetEntityCreator();
75 GlobalReferenceCache().setEntityCreator(*m_entityq3);
81 EntityCreator* getTable()
87 typedef SingletonModule<EntityQ3API, EntityDependencies> EntityQ3Module;
89 EntityQ3Module g_EntityQ3Module;
92 class EntityWolfAPI : public TypeSystemRef
94 EntityCreator* m_entitywolf;
96 typedef EntityCreator Type;
97 STRING_CONSTANT(Name, "wolf");
101 Entity_Construct(eGameTypeRTCW);
103 m_entitywolf = &GetEntityCreator();
105 GlobalReferenceCache().setEntityCreator(*m_entitywolf);
111 EntityCreator* getTable()
117 typedef SingletonModule<EntityWolfAPI, EntityDependencies> EntityWolfModule;
119 EntityWolfModule g_EntityWolfModule;
122 class EntityDoom3API : public TypeSystemRef
124 EntityCreator* m_entitydoom3;
126 typedef EntityCreator Type;
127 STRING_CONSTANT(Name, "doom3");
131 Entity_Construct(eGameTypeDoom3);
133 m_entitydoom3 = &GetEntityCreator();
135 GlobalReferenceCache().setEntityCreator(*m_entitydoom3);
141 EntityCreator* getTable()
143 return m_entitydoom3;
147 typedef SingletonModule<EntityDoom3API, EntityDependencies> EntityDoom3Module;
149 EntityDoom3Module g_EntityDoom3Module;
152 extern "C" void RADIANT_DLLEXPORT Radiant_RegisterModules(ModuleServer& server)
154 GlobalErrorStream::instance().setOutputStream(server.getErrorStream());
155 GlobalOutputStream::instance().setOutputStream(server.getOutputStream());
156 GlobalDebugMessageHandler::instance().setHandler(server.getDebugMessageHandler());
157 GlobalModuleServer::instance().set(server);
159 g_EntityQ3Module.selfRegister();
160 g_EntityWolfModule.selfRegister();
161 g_EntityDoom3Module.selfRegister();
162 Doom3ModelSkinCacheModule_selfRegister(server);