void CGameWindow::Render() { if (!GameServer()) return; TPROF("CGameWindow::Render"); GameServer()->Render(); if (true) { TPROF("GUI"); glgui::CRootPanel::Get()->Think(GameServer()->GetGameTime()); glgui::CRootPanel::Get()->Paint(0, 0, (int)m_iWindowWidth, (int)m_iWindowHeight); } }
void CGameServer::Render() { TPROF("CGameServer::Render"); if (!GetCameraManager()) return; GetCameraManager()->Think(); GameWindow()->GetGameRenderer()->Render(); }
void CGameWindow::Run() { while (IsOpen()) { CProfiler::BeginFrame(); if (true) { TPROF("CGameWindow::Run"); PreFrame(); if (GameServer()->IsHalting()) { //DestroyGame(); //CreateGame(m_eRestartAction); } float flTime = GetTime(); if (GameServer()) { if (GameServer()->IsLoading()) { // Pump the network CNetwork::Think(); RenderLoading(); continue; } else if (GameServer()->IsClient() && !GameNetwork()->IsConnected()) { //DestroyGame(); //CreateGame(GAMETYPE_MENU); } else { GameServer()->Think(flTime); Render(); } } PostFrame(); } CProfiler::Render(); SwapBuffers(); } }
void CParticleSystemLibrary::Render() { TPROF("CParticleSystemLibrary::Render"); if (!r_particles.GetBool()) return; MakeQuad(); CParticleSystemLibrary* pPSL = Get(); if (!pPSL->m_apInstances.size()) return; tmap<size_t, CSystemInstance*>::iterator it; if (true) { CGameRenderingContext c(GameServer()->GetRenderer(), true); c.UseProgram("particle"); c.SetUniform("bDiffuse", true); c.SetUniform("iDiffuse", 0); for (it = pPSL->m_apInstances.begin(); it != pPSL->m_apInstances.end(); it++) { CSystemInstance* pInstance = (*it).second; pInstance->Render(&c, false); } } if (true) { CGameRenderingContext c(GameServer()->GetRenderer(), true); c.UseProgram("particle"); c.SetUniform("bDiffuse", true); c.SetUniform("iDiffuse", 0); c.SetDepthMask(false); for (it = pPSL->m_apInstances.begin(); it != pPSL->m_apInstances.end(); it++) { CSystemInstance* pInstance = (*it).second; pInstance->Render(&c, true); } } CRenderingContext::DebugFinish(); }
void CParticleSystemLibrary::Render() { TPROF("CParticleSystemLibrary::Render"); CParticleSystemLibrary* pPSL = Get(); if (!pPSL->m_apInstances.size()) return; tmap<size_t, CSystemInstance*>::iterator it; if (true) { CGameRenderingContext c(GameServer()->GetRenderer(), true); c.UseProgram("model"); c.SetUniform("bDiffuse", true); c.SetUniform("iDiffuse", 0); c.SetUniform("bColorSwapInAlpha", false); for (it = pPSL->m_apInstances.begin(); it != pPSL->m_apInstances.end(); it++) { CSystemInstance* pInstance = (*it).second; if (pInstance->GetSystem()->GetBlend() == BLEND_NONE) pInstance->Render(&c); } } if (true) { CGameRenderingContext c(GameServer()->GetRenderer(), true); c.UseProgram("model"); c.SetUniform("bDiffuse", true); c.SetUniform("iDiffuse", 0); c.SetUniform("bColorSwapInAlpha", false); for (it = pPSL->m_apInstances.begin(); it != pPSL->m_apInstances.end(); it++) { CSystemInstance* pInstance = (*it).second; if (pInstance->GetSystem()->GetBlend() != BLEND_NONE) pInstance->Render(&c); } } }
void CParticleSystemLibrary::Simulate() { TPROF("CParticleSystemLibrary::Simulate"); CParticleSystemLibrary* pPSL = Get(); tmap<size_t, CSystemInstance*>::iterator it = pPSL->m_apInstances.begin(); tvector<size_t> aiDeleted; for (; it != pPSL->m_apInstances.end(); it++) { CSystemInstance* pInstance = (*it).second; pInstance->Simulate(); if (pInstance->IsStopped() && pInstance->GetNumParticles() == 0) aiDeleted.push_back((*it).first); } for (size_t i = 0; i < aiDeleted.size(); i++) RemoveInstance(aiDeleted[i]); }
void CGameServer::Think(double flHostTime) { TPROF("CGameServer::Think"); m_iFrame++; m_flFrameTime = flHostTime - m_flHostTime; m_flFrameTime *= m_flTimeScale; // If the framerate drops, don't let too much happen without the player seeing if (GameNetwork()->IsConnected()) { // But not as much in multiplayer games where we need to keep the game time synchronized if (m_flFrameTime > 1.0f) m_flFrameTime = 1.0f; } else { if (m_flFrameTime > 0.15f) m_flFrameTime = 0.15f; } m_flGameTime += m_flFrameTime; m_flHostTime = flHostTime; if (GameNetwork()->IsConnected() && GameNetwork()->IsHost() && m_flHostTime > m_flNextClientInfoUpdate) { m_flNextClientInfoUpdate = m_flHostTime + 5.0f; size_t iClientsConnected = GameNetwork()->GetClientsConnected(); for (size_t i = 0; i < iClientsConnected; i++) { size_t iClient = GameNetwork()->GetClientConnectionId(i); if (iClient == ~0) continue; GameNetwork()->CallFunction(iClient, "ClientInfo", iClient, GetGameTime()); } } // Erase anything deleted last frame. for (size_t i = 0; i < m_ahDeletedEntities.size(); i++) delete m_ahDeletedEntities[i]; m_ahDeletedEntities.clear(); if (CWorkbench::IsActive()) Workbench()->Think(); CNetwork::Think(); size_t iMaxEntities = GameServer()->GetMaxEntities(); for (size_t i = 0; i < iMaxEntities; i++) { CBaseEntity* pEntity = CBaseEntity::GetEntity(i); if (!pEntity) continue; pEntity->Think(); if (m_bHalting) break; } Simulate(); Think(); if (GameNetwork()->IsHost()) CGameServerNetwork::UpdateNetworkVariables(NETWORK_TOCLIENTS); if (GameNetwork()->IsHost()) { for (size_t i = 0; i < iMaxEntities; i++) { CBaseEntity* pEntity = CBaseEntity::GetEntity(i); if (!pEntity) continue; if (!pEntity->HasIssuedClientSpawn()) pEntity->IssueClientSpawn(); if (m_bHalting) break; } } CParticleSystemLibrary::Simulate(); TPortal_Think(); }