void CGameUI2::Initialize(CreateInterfaceFn appFactory) { MEM_ALLOC_CREDIT(); ConnectTier1Libraries(&appFactory, 1); ConnectTier2Libraries(&appFactory, 1); ConVar_Register(FCVAR_CLIENTDLL); ConnectTier3Libraries(&appFactory, 1); engine = static_cast<IVEngineClient*>(appFactory(VENGINE_CLIENT_INTERFACE_VERSION, nullptr)); enginesound = static_cast<IEngineSound*>(appFactory(IENGINESOUND_CLIENT_INTERFACE_VERSION, nullptr)); enginevgui = static_cast<IEngineVGui*>(appFactory(VENGINE_VGUI_VERSION, nullptr)); soundemitterbase = static_cast<ISoundEmitterSystemBase*>(appFactory(SOUNDEMITTERSYSTEM_INTERFACE_VERSION, nullptr)); render = static_cast<IVRenderView*>(appFactory(VENGINE_RENDERVIEW_INTERFACE_VERSION, nullptr)); CreateInterfaceFn gameUIFactory = g_GameUI.GetFactory(); if (gameUIFactory) gameui = static_cast<IGameUI*>(gameUIFactory(GAMEUI_INTERFACE_VERSION, nullptr)); if (!enginesound || !enginevgui || !engine || !soundemitterbase || !render || !gameui) Error("CGameUI2::Initialize() failed to get necessary interfaces.\n"); if (!CommandLine()->FindParm("-shaderedit")) { GetBasePanel()->Create(); if (GetBasePanel()) gameui->SetMainMenuOverride(GetBasePanel()->GetMainMenu()->GetVPanel()); } }
void Interfaces::Load(CreateInterfaceFn interfaceFactory, CreateInterfaceFn gameServerFactory) { ConnectTier1Libraries(&interfaceFactory, 1); ConnectTier2Libraries(&interfaceFactory, 1); ConnectTier3Libraries(&interfaceFactory, 1); vguiLibrariesAvailable = vgui::VGui_InitInterfacesList("ExternalExtensions", &interfaceFactory, 1); pEngineClient = (IVEngineClient *)interfaceFactory(VENGINE_CLIENT_INTERFACE_VERSION, nullptr); pEngineTool = (IEngineTool *)interfaceFactory(VENGINETOOL_INTERFACE_VERSION, nullptr); pGameEventManager = (IGameEventManager2 *)interfaceFactory(INTERFACEVERSION_GAMEEVENTSMANAGER2, nullptr); pModelInfoClient = (IVModelInfoClient *)interfaceFactory(VMODELINFO_CLIENT_INTERFACE_VERSION, nullptr); pRenderView = (IVRenderView *)interfaceFactory(VENGINE_RENDERVIEW_INTERFACE_VERSION, nullptr); CreateInterfaceFn gameClientFactory; pEngineTool->GetClientFactory(gameClientFactory); pClientDLL = (IBaseClientDLL*)gameClientFactory(CLIENT_DLL_INTERFACE_VERSION, nullptr); pClientEntityList = (IClientEntityList*)gameClientFactory(VCLIENTENTITYLIST_INTERFACE_VERSION, nullptr); pSteamAPIContext = new CSteamAPIContext(); steamLibrariesAvailable = SteamAPI_InitSafe() && pSteamAPIContext->Init(); g_pEntityList = dynamic_cast<CBaseEntityList *>(Interfaces::pClientEntityList); char dll[MAX_PATH]; bool steam; if (FileSystem_GetFileSystemDLLName(dll, sizeof(dll), steam) == FS_OK) { CFSLoadModuleInfo fsLoadModuleInfo; fsLoadModuleInfo.m_bSteam = steam; fsLoadModuleInfo.m_pFileSystemDLLName = dll; fsLoadModuleInfo.m_ConnectFactory = interfaceFactory; if (FileSystem_LoadFileSystemModule(fsLoadModuleInfo) == FS_OK) { CFSMountContentInfo fsMountContentInfo; fsMountContentInfo.m_bToolsMode = fsLoadModuleInfo.m_bToolsMode; fsMountContentInfo.m_pDirectoryName = fsLoadModuleInfo.m_GameInfoPath; fsMountContentInfo.m_pFileSystem = fsLoadModuleInfo.m_pFileSystem; if (FileSystem_MountContent(fsMountContentInfo) == FS_OK) { CFSSearchPathsInit fsSearchPathsInit; fsSearchPathsInit.m_pDirectoryName = fsLoadModuleInfo.m_GameInfoPath; fsSearchPathsInit.m_pFileSystem = fsLoadModuleInfo.m_pFileSystem; if (FileSystem_LoadSearchPaths(fsSearchPathsInit) == FS_OK) { Interfaces::pFileSystem = fsLoadModuleInfo.m_pFileSystem; } } } } }
//----------------------------------------------------------------------------- // // Purpose: Valve entry point called after the Valve DLLs are loaded // Input : CreateInterfaceFn factory // Output : true is everything is good, false otherwise // //----------------------------------------------------------------------------- DLL_EXPORT bool VsMayaConnect( CreateInterfaceFn factory ) { ConnectTier1Libraries( &factory, 1 ); ConnectTier2Libraries( &factory, 1 ); ConnectTier3Libraries( &factory, 1 ); if ( !ConnectDataModel( factory ) ) return false; if ( InitDataModel( ) != INIT_OK ) return false; MathLib_Init( 2.2f, 2.2f, 0.0f, 2.0f, false, false, false, false ); if ( !g_pFullFileSystem || !g_pDataModel ) { Warning( "vsDmxIO is missing a required interface!\n" ); return false; } // Can't unload this plugin until the libraries have been disconnected g_okToUnload = false; return true; }
//----------------------------------------------------------------------------- // //----------------------------------------------------------------------------- bool CDmxEditApp::PreInit( ) { CreateInterfaceFn factory = GetFactory(); MathLib_Init( 2.2f, 2.2f, 0.0f, 2.0f, false, false, false, false ); ConnectTier1Libraries( &factory, 1 ); ConnectTier2Libraries( &factory, 1 ); ConnectTier3Libraries( &factory, 1 ); if ( !ConnectDataModel( factory ) ) return false; if ( InitDataModel( ) != INIT_OK ) return false; if ( !g_pFullFileSystem || !g_pDataModel ) { Error( "// ERROR: dmxedit is missing a required interface!\n" ); return false; } return true; }
//----------------------------------------------------------------------------- // Purpose: Initialization //----------------------------------------------------------------------------- void CGameUI::Initialize( CreateInterfaceFn factory ) { MEM_ALLOC_CREDIT(); ConnectTier1Libraries( &factory, 1 ); ConnectTier2Libraries( &factory, 1 ); ConVar_Register( FCVAR_CLIENTDLL ); ConnectTier3Libraries( &factory, 1 ); enginesound = (IEngineSound *)factory(IENGINESOUND_CLIENT_INTERFACE_VERSION, NULL); engine = (IVEngineClient *)factory( VENGINE_CLIENT_INTERFACE_VERSION, NULL ); bik = (IBik*)factory( BIK_INTERFACE_VERSION, NULL ); #ifndef _X360 SteamAPI_InitSafe(); steamapicontext->Init(); #endif CGameUIConVarRef var( "gameui_xbox" ); m_bIsConsoleUI = var.IsValid() && var.GetBool(); vgui::VGui_InitInterfacesList( "GameUI", &factory, 1 ); vgui::VGui_InitMatSysInterfacesList( "GameUI", &factory, 1 ); // load localization file g_pVGuiLocalize->AddFile( "Resource/gameui_%language%.txt", "GAME", true ); // load mod info ModInfo().LoadCurrentGameInfo(); // load localization file for kb_act.lst g_pVGuiLocalize->AddFile( "Resource/valve_%language%.txt", "GAME", true ); bool bFailed = false; enginevguifuncs = (IEngineVGui *)factory( VENGINE_VGUI_VERSION, NULL ); enginesurfacefuncs = (vgui::ISurface *)factory(VGUI_SURFACE_INTERFACE_VERSION, NULL); gameuifuncs = (IGameUIFuncs *)factory( VENGINE_GAMEUIFUNCS_VERSION, NULL ); xboxsystem = (IXboxSystem *)factory( XBOXSYSTEM_INTERFACE_VERSION, NULL ); #ifdef _X360 xonline = (IXOnline *)factory( XONLINE_INTERFACE_VERSION, NULL ); #endif #ifdef SWARM_DLL g_pMatchExtSwarm = ( IMatchExtSwarm * ) factory( IMATCHEXT_SWARM_INTERFACE, NULL ); #endif #ifdef SDK_DLL g_pMatchExtSwarm = ( IMatchExtSwarm * ) factory( IMATCHEXT_SWARM_INTERFACE, NULL ); #endif bFailed = !enginesurfacefuncs || !gameuifuncs || !enginevguifuncs || !xboxsystem || #ifdef _X360 !xonline || #endif #ifdef SWARM_DLL !g_pMatchExtSwarm || #endif #ifdef SDK_DLL !g_pMatchExtSwarm || #endif !g_pMatchFramework; if ( bFailed ) { Error( "CGameUI::Initialize() failed to get necessary interfaces\n" ); } // setup base panel UI_BASEMOD_PANEL_CLASS& factoryBasePanel = ConstructUiBaseModPanelClass(); // explicit singleton instantiation factoryBasePanel.SetBounds( 0, 0, 640, 480 ); factoryBasePanel.SetPaintBorderEnabled( false ); factoryBasePanel.SetPaintBackgroundEnabled( true ); factoryBasePanel.SetPaintEnabled( true ); factoryBasePanel.SetVisible( true ); factoryBasePanel.SetMouseInputEnabled( IsPC() ); // factoryBasePanel.SetKeyBoardInputEnabled( IsPC() ); factoryBasePanel.SetKeyBoardInputEnabled( true ); vgui::VPANEL rootpanel = enginevguifuncs->GetPanel( PANEL_GAMEUIDLL ); factoryBasePanel.SetParent( rootpanel ); }