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