void GraphicsScene::Update( f32 DeltaTime ) { Bool bPaused = g_GraphicsManagers.pEnvironment->Runtime().GetStatus() == IEnvironment::IRuntime::Status::Paused; m_bPause = bPaused; m_fDeltaTime = DeltaTime; if( m_bUseInstancedGeom ) { } u32 size = (u32)m_Objects.size(); if (m_bParallelize && ( g_GraphicsManagers.pTask != NULL ) && ( UpdateGrainSize < size )) { g_GraphicsManagers.pTask->ParallelFor( m_pTask, UpdateCallback, this, 0, size, UpdateGrainSize ); } else { ProcessRange( 0, size ); } // Terrain Update }
void FancyDisassembler::Disassemble(const Container &container, DisassemblyWriter& writer) { metadata.clear(); sections.clear(); rangeToDisasm.clear(); unprocessedRanges.clear(); r2Values.clear(); DoDisassemble(container); // run through disassembly to add metadata where it belongs for (auto& pair : sections) { auto& disasm = pair.second.disasm; for (auto iter = disasm->Begin(); iter != disasm->End(); iter++) unprocessedRanges.insert(&iter->second); } // first try to process all instruction ranges with a known table of contents; // this will only work if we start with a transition vector TryInitR2WithMainSymbol(container); // now, process all instruction ranges for which we have a known table of contents while (r2Values.size() > 0) { auto iter = r2Values.begin(); auto& pair = *iter; ProcessRange(*pair.first, pair.second); unprocessedRanges.erase(pair.first); r2Values.erase(iter); } // now, process all remaining ranges: we cannot resolve indirect branches, but we can still resolve static branches while (unprocessedRanges.size() > 0) { auto iter = unprocessedRanges.begin(); ProcessRange(**iter, nullptr); unprocessedRanges.erase(iter); } // and finally, print all sections for (auto& pair : sections) pair.second.WriteTo(writer, metadata); }
/** * @inheritDoc */ void GraphicScene::Update(f32 DeltaTime) { m_bPause = g_serviceManager->getRuntimeService()->isPaused(); m_fDeltaTime = DeltaTime; u32 size = (u32)m_pObjects.size(); if (g_serviceManager->getTaskManager() != NULL && UpdateGrainSize < size) { g_serviceManager->getTaskManager()->ParallelFor(m_pSystemTask, UpdateCallback, this, 0, size, UpdateGrainSize); } else { ProcessRange(0, size); } }