void game::MainLoop() { // init steam we need to initialize this before the renderer for the overlay. { gSteam.InitSteam(); if(gSteam.steamID) { gUserProfile.RegisterSteamCallbacks(); } } InitRender(1); CurRenderPipeline = new r3dDefferedRenderer; CurRenderPipeline->Init(); SetFocus(win::hWnd); r3dMenuInit(); r3dParticleSystemInit(); InitDesktopSystem(); InitPostFX(); InitPointLightsRendererV2(); g_pWind = new r3dWind ; g_pEngineConsole = new EngineConsole; g_pDefaultConsole = g_pEngineConsole; g_pEngineConsole->Init(); g_pEngineConsole->SetCommandProcessor( g_pCmdProc ); g_DamageLib = new DamageLib ; g_DamageLib->Load(); g_MeshPropertyLib = new MeshPropertyLib; #ifndef FINAL_BUILD g_Manipulator3d.Init(); // show non-level specific art bugs r3dShowArtBugs() ; #endif g_cursor_mode->SetChangeCallback( &CursorModeCallback ) ; _r3d_bTerminateOnZ = r_terminateOnZ->GetInt(); // set dynamic matlib by default. // make it statis only in GAME mode r3dMaterialLibrary::IsDynamic = true; imgui_SetFixMouseCoords( false ); #ifdef FINAL_BUILD int m_ret = Menu_AppSelect::bStartGamePublic; // start game #else int m_ret = 0; if ( *d_map_force_load->GetString() || LevelEditName[0]!='\0' ) m_ret = Menu_AppSelect::bStartLevelEditor; else CALL_MENU(Menu_AppSelect); #endif #ifndef FINAL_BUILD // all choises is editors by default g_bEditMode = true; g_bStartedAsParticleEditor = false; #endif void InitGrass(); InitGrass(); g_pHUDCameraEffects = new HUDCameraEffects ; r3d_assert(g_pWeaponArmory == NULL); g_pWeaponArmory = new ClientWeaponArmory(); g_pWeaponArmory->Init(); r3dShowArtBugs(); // for editors, do not lock mouse. when we start game, in ExecuteNetworkGame we will set that var to true d_mouse_window_lock->SetBool(false); switch (m_ret) { #ifndef FINAL_BUILD case Menu_AppSelect::bUpdateDB: g_bEditMode = false; UpdateDB("198.50.211.32", "Data/Weapons/itemsDB.xml"); MessageBox(0, "Successfully updated English DB!", "Result", MB_OK); break; case Menu_AppSelect::bStartLevelEditor: g_pVisibilityGrid = new VisibiltyGrid ; ExecuteLevelEditor(); break; case Menu_AppSelect::bStartParticleEditor: g_bStartedAsParticleEditor = true; ExecuteParticleEditor(); break; case Menu_AppSelect::bStartPhysicsEditor: ExecutePhysicsEditor(); break; case Menu_AppSelect::bStartCharacterEditor: ExecuteCharacterEditor(); break; #endif case Menu_AppSelect::bStartGamePublic: // override server settings if special key isn't set if(strstr(__r3dCmdLine, "-ffgrtvzdf") == NULL) { // hardcoded IP for now //g_serverip->SetString("127.0.0.1"); } // override API settings g_api_ip->SetString("198.50.211.32"); // external g_serverip->SetString("198.50.211.32"); // external g_bEditMode = false; ExecuteNetworkGame(); break; }; #ifndef FINAL_BUILD if( g_bEditMode ) { SAFE_DELETE( g_pVisibilityGrid ); } #endif // shutdown steam if(gSteam.inited_) { gUserProfile.DeregisterSteamCallbacks(); gSteam.Shutdown(); } SAFE_DELETE( g_pWind ) ; r3dMaterialLibrary::UnloadManaged(); r3dMaterialLibrary::Reset(); MeshGlobalBuffer::unloadManaged(); g_pWeaponArmory->Destroy(); SAFE_DELETE(g_pWeaponArmory); #ifndef FINAL_BUILD g_Manipulator3d.Close(); #endif r3dMenuClose(); AI_Player_FreeStuff(); SAFE_DELETE( g_pHUDCameraEffects ) ; SAFE_DELETE( g_GameRewards ); void CloseGrass(); CloseGrass(); DestroyPointLightsRendererV2(); ClosePostFX(); SAFE_DELETE( g_DamageLib ); SAFE_DELETE( g_MeshPropertyLib ); r3dFreeGOBMeshes(); obj_Zombie::FreePhysSkeletonCache(); g_pEngineConsole->Release(); SAFE_DELETE( g_pEngineConsole ); g_pDefaultConsole = NULL; ReleaseDesktopSystem(); DoneDrawCollections(); r3dParticleSystemClose(); CurRenderPipeline->Close(); SAFE_DELETE(CurRenderPipeline); r3dMaterialLibrary::Destroy(); CloseRender(); if(gSurveyOutLink) ShellExecute(NULL, "open", gSurveyOutLink, "", NULL, SW_SHOW); /*r3dOutToLog("HackShield : UnInitialize...\n"); _AhnHS_StopService(); _AhnHS_Uninitialize();*/ HMODULE hMod; hMod = LoadLibrary(TEXT("WGCrash.dll")); //HackCheck _HackCheck; //_HackCheck = (HackCheck)GetProcAddress(hMod,"DetachProcess"); //_HackCheck(); FreeLibrary(hMod); TerminateProcess(GetCurrentProcess(),-1); return; }
CAudioRender::~CAudioRender(void) { CloseRender(); }