void ZActor::OnUpdate(float fDelta) { if(m_pVMesh) { m_pVMesh->SetVisibility(1.f); } if (CheckFlag(AF_MY_CONTROL)) { m_TaskManager.Run(fDelta); CheckDead(fDelta); ProcessNetwork(fDelta); // for test - bird if (m_bTestControl) { TestControl(fDelta); } else { __BP(60,"ZActor::OnUpdate::ProcessAI"); if(isThinkAble()) ProcessAI(fDelta); __EP(60); } ProcessMovement(fDelta); } ProcessMotion(fDelta); if (CheckFlag(AF_MY_CONTROL)) { UpdateHeight(fDelta); } }
void psNetConnection::Run () { csTicks currentticks = csGetTicks(); csTicks lastlinkcheck = currentticks; csTicks lastresendcheck = currentticks; csTicks laststatdisplay = currentticks; // Maximum time to spend in ProcessNetwork csTicks maxTime = MIN(MIN(LINKCHECK, RESENDCHECK), STATDISPLAYCHECK); csTicks timeout; long lasttotaltransferin=0; long lasttotaltransferout=0; long lasttotalcountin=0; long lasttotalcountout=0; float kbpsout = 0; float kbpsin = 0; while ( shouldRun ) { if (!ready) { csSleep(100); continue; } timeout = csGetTicks() + maxTime; ProcessNetwork (timeout); currentticks = csGetTicks(); if (currentticks - lastlinkcheck > LINKCHECK) { lastlinkcheck = currentticks; CheckLinkDead (currentticks); } if (currentticks - lastresendcheck > RESENDCHECK) { lastresendcheck = currentticks; CheckResendPkts (); CheckFragmentTimeouts(); } if (currentticks - laststatdisplay > STATDISPLAYCHECK) { kbpsin = (float)(totaltransferin - lasttotaltransferin) / (float)(currentticks - laststatdisplay); lasttotaltransferin = totaltransferin; kbpsout = (float)(totaltransferout - lasttotaltransferout) / (float)(currentticks - laststatdisplay); lasttotaltransferout = totaltransferout; laststatdisplay = currentticks; if (pslog::disp_flag[LOG_LOAD]) { printf("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n"); printf("+ Currently using %1.2fKbps out, %1.2fkbps in...\n", kbpsout, kbpsin); printf("+ Packets: %ld out , %ld in\n", totalcountout-lasttotalcountout,totalcountin-lasttotalcountin); printf("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n"); } lasttotalcountout = totalcountout; lasttotalcountin = totalcountin; } } Debug2(LOG_NET, 0, "Run Stopped this=%p\n",this); }
// This function is the network thread // Thread: Network void NetManager::Run () { csTicks currentticks = csGetTicks(); csTicks lastlinkcheck = currentticks; csTicks lastresendcheck = currentticks; csTicks laststatdisplay = currentticks; // Maximum time to spend in ProcessNetwork csTicks maxTime = MIN(MIN(LINKCHECK, RESENDCHECK), STATDISPLAYCHECK); csTicks timeout; long lasttotaltransferin=0; long lasttotaltransferout=0; long lasttotalcountin=0; long lasttotalcountout=0; float kbpsout = 0; float kbpsin = 0; float kbpsOutMax = 0; float kbpsInMax = 0; size_t clientCountMax = 0; printf("Network thread started!\n"); stop_network = false; while ( !stop_network ) { if (!IsReady()) { csSleep(100); continue; } timeout = csGetTicks() + maxTime; ProcessNetwork (timeout); currentticks = csGetTicks(); // Check for link dead clients. if (currentticks - lastlinkcheck > LINKCHECK) { CheckLinkDead(); lastlinkcheck = csGetTicks(); } // Check to resend packages that have not been ACK'd yet if (currentticks - lastresendcheck > RESENDCHECK) { CheckResendPkts(); CheckFragmentTimeouts(); lastresendcheck = csGetTicks(); } // Display Network statistics if (currentticks - laststatdisplay > STATDISPLAYCHECK) { kbpsin = (float)(totaltransferin - lasttotaltransferin) / (float)STATDISPLAYCHECK; if ( kbpsin > kbpsInMax ) { kbpsInMax = kbpsin; } lasttotaltransferin = totaltransferin; kbpsout = (float)(totaltransferout - lasttotaltransferout) / (float)STATDISPLAYCHECK; if ( kbpsout > kbpsOutMax ) { kbpsOutMax = kbpsout; } lasttotaltransferout = totaltransferout; laststatdisplay = currentticks; if ( clients.Count() > clientCountMax ) { clientCountMax = clients.Count(); } csString status; status.Format("Currently using %1.2fKbps out, %1.2fkbps in. Packets: %ld out, %ld in", kbpsout, kbpsin, totalcountout-lasttotalcountout,totalcountin-lasttotalcountin); if(LogCSV::GetSingletonPtr()) LogCSV::GetSingleton().Write(CSV_STATUS, status); if (pslog::disp_flag[LOG_LOAD]) { CPrintf(CON_DEBUG, "Currently %d (Max: %d) clients using %1.2fKbps (Max: %1.2fKbps) outbound, " "%1.2fkbps (Max: %1.2fKbps) inbound...\n", clients.Count(),clientCountMax, kbpsout, kbpsOutMax, kbpsin, kbpsInMax); CPrintf(CON_DEBUG, "Packets inbound %ld , outbound %ld...\n", totalcountin-lasttotalcountin,totalcountout-lasttotalcountout); } lasttotalcountout = totalcountout; lasttotalcountin = totalcountin; } } printf("Network thread stopped!\n"); }