X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=radiant%2Fplugin.cpp;h=2c3d6dd0cc5e05570c302caa3231f32e76589683;hb=32dc1da26645b97a5823ff22175000542225c6dd;hp=3cf53115310f9a187fbe547c1f83c3e60d39fd5f;hpb=12b372f89ce109a4db9d510884fbe7d05af79870;p=xonotic%2Fnetradiant.git diff --git a/radiant/plugin.cpp b/radiant/plugin.cpp index 3cf53115..2c3d6dd0 100644 --- a/radiant/plugin.cpp +++ b/radiant/plugin.cpp @@ -1,23 +1,23 @@ /* -Copyright (C) 2001-2006, William Joseph. -All Rights Reserved. + Copyright (C) 2001-2006, William Joseph. + All Rights Reserved. -This file is part of GtkRadiant. + 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 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. + 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 -*/ + 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 + */ #include "plugin.h" @@ -83,235 +83,247 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #include "generic/callback.h" -const char* GameDescription_getKeyValue(const char* key) -{ - return g_pGameDescription->getKeyValue(key); +const char* GameDescription_getKeyValue( const char* key ){ + return g_pGameDescription->getKeyValue( key ); } -const char* GameDescription_getRequiredKeyValue(const char* key) -{ - return g_pGameDescription->getRequiredKeyValue(key); +const char* GameDescription_getRequiredKeyValue( const char* key ){ + return g_pGameDescription->getRequiredKeyValue( key ); +} + +const char* getMapName(){ + return Map_Name( g_map ); +} + +scene::Node& getMapWorldEntity(){ + return Map_FindOrInsertWorldspawn( g_map ); +} + +VIEWTYPE XYWindow_getViewType(){ + return g_pParentWnd->GetXYWnd()->GetViewType(); +} + +Vector3 XYWindow_windowToWorld( const WindowVector& position ){ + Vector3 result( 0, 0, 0 ); + g_pParentWnd->GetXYWnd()->XY_ToPoint( static_cast( position.x() ), static_cast( position.y() ), result ); + return result; +} + +const char* TextureBrowser_getSelectedShader(){ + return TextureBrowser_GetSelectedShader( GlobalTextureBrowser() ); +} + +const char* getGameFile(){ + return g_GamesDialog.m_sGameFile.c_str(); } class RadiantCoreAPI { - _QERFuncTable_1 m_radiantcore; +_QERFuncTable_1 m_radiantcore; public: - typedef _QERFuncTable_1 Type; - STRING_CONSTANT(Name, "*"); - - RadiantCoreAPI() - { - m_radiantcore.getEnginePath = &EnginePath_get; - m_radiantcore.getAppPath = &AppPath_get; - m_radiantcore.getGameToolsPath = &GameToolsPath_get; - m_radiantcore.getSettingsPath = &SettingsPath_get; - - m_radiantcore.getGameName = &gamename_get; - m_radiantcore.getGameMode = &gamemode_get; - - m_radiantcore.getGameDescriptionKeyValue = &GameDescription_getKeyValue; - m_radiantcore.getRequiredGameDescriptionKeyValue = &GameDescription_getRequiredKeyValue; - - m_radiantcore.attachGameToolsPathObserver = Radiant_attachGameToolsPathObserver; - m_radiantcore.detachGameToolsPathObserver = Radiant_detachGameToolsPathObserver; - m_radiantcore.attachEnginePathObserver = Radiant_attachEnginePathObserver; - m_radiantcore.detachEnginePathObserver = Radiant_detachEnginePathObserver; - m_radiantcore.attachGameNameObserver = Radiant_attachGameNameObserver; - m_radiantcore.detachGameNameObserver = Radiant_detachGameNameObserver; - m_radiantcore.attachGameModeObserver = Radiant_attachGameModeObserver; - m_radiantcore.detachGameModeObserver = Radiant_detachGameModeObserver; - - m_radiantcore.m_pfnMessageBox = >k_MessageBox; - m_radiantcore.m_pfnFileDialog = &file_dialog; - m_radiantcore.m_pfnColorDialog = &color_dialog; - m_radiantcore.m_pfnDirDialog = &dir_dialog; - m_radiantcore.m_pfnNewImage = &new_plugin_image; - } - _QERFuncTable_1* getTable() - { - return &m_radiantcore; - } +typedef _QERFuncTable_1 Type; +STRING_CONSTANT( Name, "*" ); + +RadiantCoreAPI(){ + m_radiantcore.getEnginePath = &EnginePath_get; + m_radiantcore.getLocalRcPath = &LocalRcPath_get; + m_radiantcore.getAppPath = &AppPath_get; + m_radiantcore.getDataPath = &DataPath_get; + m_radiantcore.getGameToolsPath = &GameToolsPath_get; + m_radiantcore.getSettingsPath = &SettingsPath_get; + m_radiantcore.getMapsPath = &getMapsPath; + + m_radiantcore.getGameFile = &getGameFile; + m_radiantcore.getGameName = &gamename_get; + m_radiantcore.getGameMode = &gamemode_get; + + m_radiantcore.getMapName = &getMapName; + m_radiantcore.getMapWorldEntity = getMapWorldEntity; + m_radiantcore.getGridSize = GetGridSize; + + m_radiantcore.getGameDescriptionKeyValue = &GameDescription_getKeyValue; + m_radiantcore.getRequiredGameDescriptionKeyValue = &GameDescription_getRequiredKeyValue; + + m_radiantcore.XYWindowDestroyed_connect = XYWindowDestroyed_connect; + m_radiantcore.XYWindowDestroyed_disconnect = XYWindowDestroyed_disconnect; + m_radiantcore.XYWindowMouseDown_connect = XYWindowMouseDown_connect; + m_radiantcore.XYWindowMouseDown_disconnect = XYWindowMouseDown_disconnect; + m_radiantcore.XYWindow_getViewType = XYWindow_getViewType; + m_radiantcore.XYWindow_windowToWorld = XYWindow_windowToWorld; + m_radiantcore.TextureBrowser_getSelectedShader = TextureBrowser_getSelectedShader; + + m_radiantcore.m_pfnMessageBox = >k_MessageBox; + m_radiantcore.m_pfnFileDialog = &file_dialog; + m_radiantcore.m_pfnColorDialog = &color_dialog; + m_radiantcore.m_pfnDirDialog = &dir_dialog; + m_radiantcore.m_pfnNewImage = &new_plugin_image; +} +_QERFuncTable_1* getTable(){ + return &m_radiantcore; +} }; typedef SingletonModule RadiantCoreModule; typedef Static StaticRadiantCoreModule; -StaticRegisterModule staticRegisterRadiantCore(StaticRadiantCoreModule::instance()); +StaticRegisterModule staticRegisterRadiantCore( StaticRadiantCoreModule::instance() ); class RadiantDependencies : - public GlobalRadiantModuleRef, - public GlobalFileSystemModuleRef, - public GlobalEntityModuleRef, - public GlobalShadersModuleRef, - public GlobalBrushModuleRef, - public GlobalSceneGraphModuleRef, - public GlobalShaderCacheModuleRef, - public GlobalFiletypesModuleRef, - public GlobalSelectionModuleRef, - public GlobalReferenceModuleRef, - public GlobalOpenGLModuleRef, - public GlobalEntityClassManagerModuleRef, - public GlobalUndoModuleRef, - public GlobalScripLibModuleRef, - public GlobalNamespaceModuleRef + public GlobalRadiantModuleRef, + public GlobalFileSystemModuleRef, + public GlobalEntityModuleRef, + public GlobalShadersModuleRef, + public GlobalBrushModuleRef, + public GlobalSceneGraphModuleRef, + public GlobalShaderCacheModuleRef, + public GlobalFiletypesModuleRef, + public GlobalSelectionModuleRef, + public GlobalReferenceModuleRef, + public GlobalOpenGLModuleRef, + public GlobalEntityClassManagerModuleRef, + public GlobalUndoModuleRef, + public GlobalScripLibModuleRef, + public GlobalNamespaceModuleRef { - ImageModulesRef m_image_modules; - MapModulesRef m_map_modules; - ToolbarModulesRef m_toolbar_modules; - PluginModulesRef m_plugin_modules; +ImageModulesRef m_image_modules; +MapModulesRef m_map_modules; +ToolbarModulesRef m_toolbar_modules; +PluginModulesRef m_plugin_modules; public: - RadiantDependencies() : - GlobalEntityModuleRef(GlobalRadiant().getRequiredGameDescriptionKeyValue("entities")), - GlobalShadersModuleRef(GlobalRadiant().getRequiredGameDescriptionKeyValue("shaders")), - GlobalBrushModuleRef(GlobalRadiant().getRequiredGameDescriptionKeyValue("brushtypes")), - GlobalEntityClassManagerModuleRef(GlobalRadiant().getRequiredGameDescriptionKeyValue("entityclass")), - m_image_modules(GlobalRadiant().getRequiredGameDescriptionKeyValue("texturetypes")), - m_map_modules(GlobalRadiant().getRequiredGameDescriptionKeyValue("maptypes")), - m_toolbar_modules("*"), - m_plugin_modules("*") - { - } - - ImageModules& getImageModules() - { - return m_image_modules.get(); - } - MapModules& getMapModules() - { - return m_map_modules.get(); - } - ToolbarModules& getToolbarModules() - { - return m_toolbar_modules.get(); - } - PluginModules& getPluginModules() - { - return m_plugin_modules.get(); - } +RadiantDependencies() : + GlobalEntityModuleRef( GlobalRadiant().getRequiredGameDescriptionKeyValue( "entities" ) ), + GlobalShadersModuleRef( GlobalRadiant().getRequiredGameDescriptionKeyValue( "shaders" ) ), + GlobalBrushModuleRef( GlobalRadiant().getRequiredGameDescriptionKeyValue( "brushtypes" ) ), + GlobalEntityClassManagerModuleRef( GlobalRadiant().getRequiredGameDescriptionKeyValue( "entityclass" ) ), + m_image_modules( GlobalRadiant().getRequiredGameDescriptionKeyValue( "texturetypes" ) ), + m_map_modules( GlobalRadiant().getRequiredGameDescriptionKeyValue( "maptypes" ) ), + m_toolbar_modules( "*" ), + m_plugin_modules( "*" ){ +} + +ImageModules& getImageModules(){ + return m_image_modules.get(); +} +MapModules& getMapModules(){ + return m_map_modules.get(); +} +ToolbarModules& getToolbarModules(){ + return m_toolbar_modules.get(); +} +PluginModules& getPluginModules(){ + return m_plugin_modules.get(); +} }; class Radiant : public TypeSystemRef { public: - Radiant() - { - Preferences_Init(); - - GlobalFiletypes().addType("sound", "wav", filetype_t("PCM sound files", "*.wav")); - - Selection_construct(); - HomePaths_Construct(); - VFS_Construct(); - Grid_construct(); - MultiMon_Construct(); - MRU_Construct(); - Pointfile_Construct(); - GLWindow_Construct(); - BuildMenu_Construct(); - Map_Construct(); - EntityList_Construct(); - MainFrame_Construct(); - GroupDialog_Construct(); - SurfaceInspector_Construct(); - PatchInspector_Construct(); - CamWnd_Construct(); - XYWindow_Construct(); - BuildMonitor_Construct(); - TextureBrowser_Construct(); - Entity_Construct(); - Autosave_Construct(); - EntityInspector_construct(); - FindTextureDialog_Construct(); - NullModel_construct(); - MapRoot_construct(); - - EnginePath_verify(); - EnginePath_Realise(); - } - ~Radiant() - { - EnginePath_Unrealise(); - - MapRoot_destroy(); - NullModel_destroy(); - FindTextureDialog_Destroy(); - EntityInspector_destroy(); - Autosave_Destroy(); - Entity_Destroy(); - TextureBrowser_Destroy(); - BuildMonitor_Destroy(); - XYWindow_Destroy(); - CamWnd_Destroy(); - PatchInspector_Destroy(); - SurfaceInspector_Destroy(); - GroupDialog_Destroy(); - MainFrame_Destroy(); - EntityList_Destroy(); - Map_Destroy(); - BuildMenu_Destroy(); - GLWindow_Destroy(); - Pointfile_Destroy(); - MRU_Destroy(); - MultiMon_Destroy(); - Grid_destroy(); - VFS_Destroy(); - HomePaths_Destroy(); - Selection_destroy(); - } +Radiant(){ + Preferences_Init(); + + GlobalFiletypes().addType( "sound", "wav", filetype_t( "PCM sound files", "*.wav" ) ); + + Selection_construct(); + HomePaths_Construct(); + VFS_Construct(); + Grid_construct(); + MultiMon_Construct(); + MRU_Construct(); + Pointfile_Construct(); + GLWindow_Construct(); + BuildMenu_Construct(); + Map_Construct(); + EntityList_Construct(); + MainFrame_Construct(); + GroupDialog_Construct(); + SurfaceInspector_Construct(); + PatchInspector_Construct(); + CamWnd_Construct(); + XYWindow_Construct(); + BuildMonitor_Construct(); + TextureBrowser_Construct(); + Entity_Construct(); + Autosave_Construct(); + EntityInspector_construct(); + FindTextureDialog_Construct(); + NullModel_construct(); + MapRoot_construct(); + + EnginePath_verify(); + EnginePath_Realise(); +} +~Radiant(){ + EnginePath_Unrealise(); + + MapRoot_destroy(); + NullModel_destroy(); + FindTextureDialog_Destroy(); + EntityInspector_destroy(); + Autosave_Destroy(); + Entity_Destroy(); + TextureBrowser_Destroy(); + BuildMonitor_Destroy(); + XYWindow_Destroy(); + CamWnd_Destroy(); + PatchInspector_Destroy(); + SurfaceInspector_Destroy(); + GroupDialog_Destroy(); + MainFrame_Destroy(); + EntityList_Destroy(); + Map_Destroy(); + BuildMenu_Destroy(); + GLWindow_Destroy(); + Pointfile_Destroy(); + MRU_Destroy(); + MultiMon_Destroy(); + Grid_destroy(); + VFS_Destroy(); + HomePaths_Destroy(); + Selection_destroy(); +} }; namespace { - bool g_RadiantInitialised = false; - RadiantDependencies* g_RadiantDependencies; - Radiant* g_Radiant; +bool g_RadiantInitialised = false; +RadiantDependencies* g_RadiantDependencies; +Radiant* g_Radiant; } -bool Radiant_Construct(ModuleServer& server) -{ - GlobalModuleServer::instance().set(server); - StaticModuleRegistryList().instance().registerModules(); +bool Radiant_Construct( ModuleServer& server ){ + GlobalModuleServer::instance().set( server ); + StaticModuleRegistryList().instance().registerModules(); - g_RadiantDependencies = new RadiantDependencies(); + g_RadiantDependencies = new RadiantDependencies(); - g_RadiantInitialised = !server.getError(); + g_RadiantInitialised = !server.getError(); - if(g_RadiantInitialised) - { - g_Radiant = new Radiant; - } + if ( g_RadiantInitialised ) { + g_Radiant = new Radiant; + } - return g_RadiantInitialised; + return g_RadiantInitialised; } -void Radiant_Destroy() -{ - if(g_RadiantInitialised) - { - delete g_Radiant; - } +void Radiant_Destroy(){ + if ( g_RadiantInitialised ) { + delete g_Radiant; + } - delete g_RadiantDependencies; + delete g_RadiantDependencies; } -ImageModules& Radiant_getImageModules() -{ - return g_RadiantDependencies->getImageModules(); +ImageModules& Radiant_getImageModules(){ + return g_RadiantDependencies->getImageModules(); } -MapModules& Radiant_getMapModules() -{ - return g_RadiantDependencies->getMapModules(); +MapModules& Radiant_getMapModules(){ + return g_RadiantDependencies->getMapModules(); } -ToolbarModules& Radiant_getToolbarModules() -{ - return g_RadiantDependencies->getToolbarModules(); +ToolbarModules& Radiant_getToolbarModules(){ + return g_RadiantDependencies->getToolbarModules(); } -PluginModules& Radiant_getPluginModules() -{ - return g_RadiantDependencies->getPluginModules(); +PluginModules& Radiant_getPluginModules(){ + return g_RadiantDependencies->getPluginModules(); } - -