X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=radiant%2Fplugin.cpp;h=fc77af1fc6b12949bd3d199b79b7f81633cf1da8;hb=9dfae1c9b270ee369c6362903a9205b30751b95f;hp=a43572aaf8c194154538b26ee36d7349521b4bbf;hpb=3c73487420fde8d4a3b5360d8b99e48132517900;p=xonotic%2Fnetradiant.git diff --git a/radiant/plugin.cpp b/radiant/plugin.cpp index a43572aa..fc77af1f 100644 --- a/radiant/plugin.cpp +++ b/radiant/plugin.cpp @@ -83,250 +83,274 @@ #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 ); +const char *getMapName() +{ + return Map_Name(g_map); } -scene::Node& getMapWorldEntity(){ - return Map_FindOrInsertWorldspawn( g_map ); +scene::Node &getMapWorldEntity() +{ + return Map_FindOrInsertWorldspawn(g_map); } -VIEWTYPE XYWindow_getViewType(){ - return g_pParentWnd->GetXYWnd()->GetViewType(); +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; +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 *TextureBrowser_getSelectedShader() +{ + return TextureBrowser_GetSelectedShader(GlobalTextureBrowser()); } -class RadiantCoreAPI +const char *getGameFile() { -_QERFuncTable_1 m_radiantcore; -public: -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.getGameToolsPath = &GameToolsPath_get; - m_radiantcore.getSettingsPath = &SettingsPath_get; - m_radiantcore.getMapsPath = &getMapsPath; - - 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.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.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; + return g_GamesDialog.m_sGameFile.c_str(); } + +class RadiantCoreAPI { + _QERFuncTable_1 m_radiantcore; +public: + 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.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 -{ -ImageModulesRef m_image_modules; -MapModulesRef m_map_modules; -ToolbarModulesRef m_toolbar_modules; -PluginModulesRef m_plugin_modules; + 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; 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 -{ +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; +namespace { + 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; - } - delete g_RadiantDependencies; +void Radiant_Destroy() +{ + if (g_RadiantInitialised) { + delete g_Radiant; + } + + 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(); }