plugin.cpp 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. /*
  2. Copyright (C) 2001-2006, William Joseph.
  3. All Rights Reserved.
  4. This file is part of GtkRadiant.
  5. GtkRadiant is free software; you can redistribute it and/or modify
  6. it under the terms of the GNU General Public License as published by
  7. the Free Software Foundation; either version 2 of the License, or
  8. (at your option) any later version.
  9. GtkRadiant is distributed in the hope that it will be useful,
  10. but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. GNU General Public License for more details.
  13. You should have received a copy of the GNU General Public License
  14. along with GtkRadiant; if not, write to the Free Software
  15. Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  16. */
  17. #include "plugin.h"
  18. #include "ishaders.h"
  19. #include "ifilesystem.h"
  20. #include "itextures.h"
  21. #include "iscriplib.h"
  22. #include "qerplugin.h"
  23. #include "string/string.h"
  24. #include "modulesystem/singletonmodule.h"
  25. #include "shaders.h"
  26. class ShadersDependencies :
  27. public GlobalFileSystemModuleRef,
  28. public GlobalTexturesModuleRef,
  29. public GlobalScripLibModuleRef,
  30. public GlobalRadiantModuleRef
  31. {
  32. ImageModuleRef m_bitmapModule;
  33. public:
  34. ShadersDependencies() :
  35. m_bitmapModule("bmp")
  36. {
  37. }
  38. ImageModuleRef& getBitmapModule()
  39. {
  40. return m_bitmapModule;
  41. }
  42. };
  43. class ShadersQ3API
  44. {
  45. ShaderSystem* m_shadersq3;
  46. public:
  47. typedef ShaderSystem Type;
  48. STRING_CONSTANT(Name, "quake3");
  49. ShadersQ3API(ShadersDependencies& dependencies)
  50. {
  51. g_shadersExtension = "shader";
  52. g_shadersDirectory = "scripts/";
  53. g_bitmapModule = dependencies.getBitmapModule().getTable();
  54. Shaders_Construct();
  55. m_shadersq3 = &GetShaderSystem();
  56. }
  57. ~ShadersQ3API()
  58. {
  59. Shaders_Destroy();
  60. }
  61. ShaderSystem* getTable()
  62. {
  63. return m_shadersq3;
  64. }
  65. };
  66. typedef SingletonModule<ShadersQ3API, ShadersDependencies, DependenciesAPIConstructor<ShadersQ3API, ShadersDependencies> > ShadersQ3Module;
  67. ShadersQ3Module g_ShadersQ3Module;
  68. class ShadersDoom3API
  69. {
  70. ShaderSystem* m_shadersdoom3;
  71. public:
  72. typedef ShaderSystem Type;
  73. STRING_CONSTANT(Name, "doom3");
  74. ShadersDoom3API(ShadersDependencies& dependencies)
  75. {
  76. g_shadersExtension = "mtr";
  77. g_shadersDirectory = "materials/";
  78. g_enableDefaultShaders = false;
  79. g_shaderLanguage = SHADERLANGUAGE_DOOM3;
  80. g_useShaderList = false;
  81. g_bitmapModule = dependencies.getBitmapModule().getTable();
  82. Shaders_Construct();
  83. m_shadersdoom3 = &GetShaderSystem();
  84. }
  85. ~ShadersDoom3API()
  86. {
  87. Shaders_Destroy();
  88. }
  89. ShaderSystem* getTable()
  90. {
  91. return m_shadersdoom3;
  92. }
  93. };
  94. typedef SingletonModule<ShadersDoom3API, ShadersDependencies, DependenciesAPIConstructor<ShadersDoom3API, ShadersDependencies> > ShadersDoom3Module;
  95. ShadersDoom3Module g_ShadersDoom3Module;
  96. class ShadersQuake4API
  97. {
  98. ShaderSystem* m_shadersquake4;
  99. public:
  100. typedef ShaderSystem Type;
  101. STRING_CONSTANT(Name, "quake4");
  102. ShadersQuake4API(ShadersDependencies& dependencies)
  103. {
  104. g_shadersExtension = "mtr";
  105. g_shadersDirectory = "materials/";
  106. g_enableDefaultShaders = false;
  107. g_shaderLanguage = SHADERLANGUAGE_QUAKE4;
  108. g_useShaderList = false;
  109. g_bitmapModule = dependencies.getBitmapModule().getTable();
  110. Shaders_Construct();
  111. m_shadersquake4 = &GetShaderSystem();
  112. }
  113. ~ShadersQuake4API()
  114. {
  115. Shaders_Destroy();
  116. }
  117. ShaderSystem* getTable()
  118. {
  119. return m_shadersquake4;
  120. }
  121. };
  122. typedef SingletonModule<ShadersQuake4API, ShadersDependencies, DependenciesAPIConstructor<ShadersQuake4API, ShadersDependencies> > ShadersQuake4Module;
  123. ShadersQuake4Module g_ShadersQuake4Module;
  124. extern "C" void RADIANT_DLLEXPORT Radiant_RegisterModules(ModuleServer& server)
  125. {
  126. GlobalErrorStream::instance().setOutputStream(server.getErrorStream());
  127. GlobalOutputStream::instance().setOutputStream(server.getOutputStream());
  128. GlobalDebugMessageHandler::instance().setHandler(server.getDebugMessageHandler());
  129. GlobalModuleServer::instance().set(server);
  130. g_ShadersQ3Module.selfRegister();
  131. g_ShadersDoom3Module.selfRegister();
  132. g_ShadersQuake4Module.selfRegister();
  133. }