X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=plugins%2Fshaders%2Fplugin.cpp;h=b4fbba3ec37066d3e02a115bbe459f57c419cbcc;hb=830125fad042fad35dc029b6eb57c8156ad7e176;hp=6ef23c372b60d942f12559e0d37ac5057c2a92ce;hpb=95ac019c0063b6e281fe5eeefb7fe19b9b7be9b0;p=xonotic%2Fnetradiant.git diff --git a/plugins/shaders/plugin.cpp b/plugins/shaders/plugin.cpp index 6ef23c37..b4fbba3e 100644 --- a/plugins/shaders/plugin.cpp +++ b/plugins/shaders/plugin.cpp @@ -1,157 +1,101 @@ /* -Copyright (C) 2001-2006, William Joseph. -All Rights Reserved. - -This file is part of GtkRadiant. - -GtkRadiant is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -GtkRadiant is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GtkRadiant; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ + Copyright (c) 2001, Loki software, inc. + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or + other materials provided with the distribution. + + Neither the name of Loki software nor the names of its contributors may be used + to endorse or promote products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY + DIRECT,INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +// +// Shaders Plugin +// #include "plugin.h" -#include "ishaders.h" -#include "ifilesystem.h" -#include "itextures.h" -#include "iscriplib.h" -#include "qerplugin.h" - -#include "string/string.h" -#include "modulesystem/singletonmodule.h" - -#include "shaders.h" - -class ShadersDependencies : - public GlobalFileSystemModuleRef, - public GlobalTexturesModuleRef, - public GlobalScripLibModuleRef, - public GlobalRadiantModuleRef -{ - ImageModuleRef m_bitmapModule; -public: - ShadersDependencies() : - m_bitmapModule("bmp") - { - } - ImageModuleRef& getBitmapModule() - { - return m_bitmapModule; - } -}; - -class ShadersQ3API -{ - ShaderSystem* m_shadersq3; -public: - typedef ShaderSystem Type; - STRING_CONSTANT(Name, "quake3"); - - ShadersQ3API(ShadersDependencies& dependencies) - { - g_shadersExtension = "shader"; - g_shadersDirectory = "scripts/"; - g_bitmapModule = dependencies.getBitmapModule().getTable(); - Shaders_Construct(); - m_shadersq3 = &GetShaderSystem(); - } - ~ShadersQ3API() - { - Shaders_Destroy(); - } - ShaderSystem* getTable() - { - return m_shadersq3; - } -}; - -typedef SingletonModule > ShadersQ3Module; - -ShadersQ3Module g_ShadersQ3Module; +// ============================================================================= +// Globals +// function tables +_QERFuncTable_1 g_FuncTable; +_QERAppDataTable g_DataTable; +_QERQglTable g_QglTable; +_QERAppShadersTable g_ShadersTable; +_QERFileSystemTable g_VFSTable; +_QERScripLibTable g_ScripLibTable; +_QERBrushTable g_BrushTable; -class ShadersDoom3API -{ - ShaderSystem* m_shadersdoom3; -public: - typedef ShaderSystem Type; - STRING_CONSTANT(Name, "doom3"); - - ShadersDoom3API(ShadersDependencies& dependencies) - { - g_shadersExtension = "mtr"; - g_shadersDirectory = "materials/"; - g_enableDefaultShaders = false; - g_shaderLanguage = SHADERLANGUAGE_DOOM3; - g_useShaderList = false; - g_bitmapModule = dependencies.getBitmapModule().getTable(); - Shaders_Construct(); - m_shadersdoom3 = &GetShaderSystem(); - } - ~ShadersDoom3API() - { - Shaders_Destroy(); - } - ShaderSystem* getTable() - { - return m_shadersdoom3; - } -}; - -typedef SingletonModule > ShadersDoom3Module; +// static bool g_bInterfaceInitDone = false; -ShadersDoom3Module g_ShadersDoom3Module; +// ============================================================================= +// SYNAPSE +CSynapseServer* g_pSynapseServer = NULL; +CSynapseClientShaders g_SynapseClient; -class ShadersQuake4API +static const XMLConfigEntry_t entries[] = { - ShaderSystem* m_shadersquake4; -public: - typedef ShaderSystem Type; - STRING_CONSTANT(Name, "quake4"); - - ShadersQuake4API(ShadersDependencies& dependencies) - { - g_shadersExtension = "mtr"; - g_shadersDirectory = "materials/"; - g_enableDefaultShaders = false; - g_shaderLanguage = SHADERLANGUAGE_QUAKE4; - g_useShaderList = false; - g_bitmapModule = dependencies.getBitmapModule().getTable(); - Shaders_Construct(); - m_shadersquake4 = &GetShaderSystem(); - } - ~ShadersQuake4API() - { - Shaders_Destroy(); - } - ShaderSystem* getTable() - { - return m_shadersquake4; - } + { SHADERS_MAJOR, SYN_PROVIDE, sizeof( _QERShadersTable ), NULL }, + { VFS_MAJOR, SYN_REQUIRE, sizeof( g_VFSTable ), &g_VFSTable }, + { NULL, SYN_UNKNOWN, 0, NULL } }; -typedef SingletonModule > ShadersQuake4Module; - -ShadersQuake4Module g_ShadersQuake4Module; - +#if __GNUC__ >= 4 +#pragma GCC visibility push(default) +#endif +extern "C" CSynapseClient * SYNAPSE_DLL_EXPORT Synapse_EnumerateInterfaces( const char *version, CSynapseServer *pServer ) { +#if __GNUC__ >= 4 +#pragma GCC visibility pop +#endif + if ( strcmp( version, SYNAPSE_VERSION ) ) { + Syn_Printf( "ERROR: synapse API version mismatch: should be '" SYNAPSE_VERSION "', got '%s'\n", version ); + return NULL; + } + g_pSynapseServer = pServer; + g_pSynapseServer->IncRef(); + Set_Syn_Printf( g_pSynapseServer->Get_Syn_Printf() ); + + if ( !g_SynapseClient.ConfigXML( pServer, NULL, entries ) ) { + return NULL; + } + + g_SynapseClient.AddAPI( RADIANT_MAJOR, NULL, sizeof( _QERFuncTable_1 ), SYN_REQUIRE, &g_FuncTable ); + g_SynapseClient.AddAPI( DATA_MAJOR, NULL, sizeof( _QERAppDataTable ), SYN_REQUIRE, &g_DataTable ); + g_SynapseClient.AddAPI( QGL_MAJOR, NULL, sizeof( _QERQglTable ), SYN_REQUIRE, &g_QglTable ); + g_SynapseClient.AddAPI( APPSHADERS_MAJOR, NULL, sizeof( _QERAppShadersTable ), SYN_REQUIRE, &g_ShadersTable ); + g_SynapseClient.AddAPI( SCRIPLIB_MAJOR, NULL, sizeof( _QERScripLibTable ), SYN_REQUIRE, &g_ScripLibTable ); + g_SynapseClient.AddAPI( BRUSH_MAJOR, NULL, sizeof( _QERBrushTable ), SYN_REQUIRE, &g_BrushTable ); + + return &g_SynapseClient; +} +#include "version.h" -extern "C" void RADIANT_DLLEXPORT Radiant_RegisterModules(ModuleServer& server) -{ - initialiseModule(server); +const char* CSynapseClientShaders::GetInfo(){ + return "Q3/Half-Life shaders module built " __DATE__ " " RADIANT_VERSION; +} - g_ShadersQ3Module.selfRegister(); - g_ShadersDoom3Module.selfRegister(); - g_ShadersQuake4Module.selfRegister(); +const char* CSynapseClientShaders::GetName(){ + return "shaders"; }