Remove 156 files
[xonotic/netradiant.git] / plugins / shaders / plugin.cpp
1 /*
2    Copyright (C) 2001-2006, William Joseph.
3    All Rights Reserved.
4
5    This file is part of GtkRadiant.
6
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.
11
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.
16
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
20  */
21
22 #include "ishaders.h"
23 #include "ifilesystem.h"
24 #include "itextures.h"
25 #include "iscriplib.h"
26 #include "qerplugin.h"
27
28 #include "string/string.h"
29 #include "modulesystem/singletonmodule.h"
30
31 #include "shaders.h"
32
33 class ShadersDependencies :
34         public GlobalFileSystemModuleRef,
35         public GlobalTexturesModuleRef,
36         public GlobalScripLibModuleRef,
37         public GlobalRadiantModuleRef
38 {
39 ImageModuleRef m_bitmapModule;
40 public:
41 ShadersDependencies() :
42         m_bitmapModule( "png" ){
43 }
44 ImageModuleRef& getBitmapModule(){
45         return m_bitmapModule;
46 }
47 };
48
49 class ShadersQ3API
50 {
51 ShaderSystem* m_shadersq3;
52 public:
53 typedef ShaderSystem Type;
54 STRING_CONSTANT( Name, "quake3" );
55
56 ShadersQ3API( ShadersDependencies& dependencies ){
57         g_shadersExtension = "shader";
58         g_shadersDirectory = "scripts/";
59         g_bitmapModule = dependencies.getBitmapModule().getTable();
60         Shaders_Construct();
61         m_shadersq3 = &GetShaderSystem();
62 }
63 ~ShadersQ3API(){
64         Shaders_Destroy();
65 }
66 ShaderSystem* getTable(){
67         return m_shadersq3;
68 }
69 };
70
71 typedef SingletonModule<ShadersQ3API, ShadersDependencies, DependenciesAPIConstructor<ShadersQ3API, ShadersDependencies> > ShadersQ3Module;
72
73 ShadersQ3Module g_ShadersQ3Module;
74
75
76 class ShadersDoom3API
77 {
78 ShaderSystem* m_shadersdoom3;
79 public:
80 typedef ShaderSystem Type;
81 STRING_CONSTANT( Name, "doom3" );
82
83 ShadersDoom3API( ShadersDependencies& dependencies ){
84         g_shadersExtension = "mtr";
85         g_shadersDirectory = "materials/";
86         g_enableDefaultShaders = false;
87         g_shaderLanguage = SHADERLANGUAGE_DOOM3;
88         g_useShaderList = false;
89         g_bitmapModule = dependencies.getBitmapModule().getTable();
90         Shaders_Construct();
91         m_shadersdoom3 = &GetShaderSystem();
92 }
93 ~ShadersDoom3API(){
94         Shaders_Destroy();
95 }
96 ShaderSystem* getTable(){
97         return m_shadersdoom3;
98 }
99 };
100
101 typedef SingletonModule<ShadersDoom3API, ShadersDependencies, DependenciesAPIConstructor<ShadersDoom3API, ShadersDependencies> > ShadersDoom3Module;
102
103 ShadersDoom3Module g_ShadersDoom3Module;
104
105
106 class ShadersQuake4API
107 {
108 ShaderSystem* m_shadersquake4;
109 public:
110 typedef ShaderSystem Type;
111 STRING_CONSTANT( Name, "quake4" );
112
113 ShadersQuake4API( ShadersDependencies& dependencies ){
114         g_shadersExtension = "mtr";
115         g_shadersDirectory = "materials/";
116         g_enableDefaultShaders = false;
117         g_shaderLanguage = SHADERLANGUAGE_QUAKE4;
118         g_useShaderList = false;
119         g_bitmapModule = dependencies.getBitmapModule().getTable();
120         Shaders_Construct();
121         m_shadersquake4 = &GetShaderSystem();
122 }
123 ~ShadersQuake4API(){
124         Shaders_Destroy();
125 }
126 ShaderSystem* getTable(){
127         return m_shadersquake4;
128 }
129 };
130
131 typedef SingletonModule<ShadersQuake4API, ShadersDependencies, DependenciesAPIConstructor<ShadersQuake4API, ShadersDependencies> > ShadersQuake4Module;
132
133 ShadersQuake4Module g_ShadersQuake4Module;
134
135
136
137 extern "C" void RADIANT_DLLEXPORT Radiant_RegisterModules( ModuleServer& server ){
138         initialiseModule( server );
139
140         g_ShadersQ3Module.selfRegister();
141         g_ShadersDoom3Module.selfRegister();
142         g_ShadersQuake4Module.selfRegister();
143 }