7 #include "imstkFpsTxtCounter.h" 8 #include "imstkEntity.h" 9 #include "imstkScene.h" 10 #include "imstkSceneManager.h" 11 #include "imstkTextVisualModel.h" 12 #include "imstkViewer.h" 16 FpsTxtCounter::FpsTxtCounter(
const std::string& name) :
SceneBehaviour(name),
17 m_fpsTextVisualModel(
std::make_shared<TextVisualModel>(
"FpsCounterTxt"))
19 m_fpsTextVisualModel->setPosition(TextVisualModel::DisplayPosition::LowerLeft);
20 m_fpsTextVisualModel->setFontSize(30.0);
27 std::shared_ptr<Entity> entity = m_entity.lock();
28 CHECK(entity !=
nullptr) <<
"FpsTxtCounter must have entity to initialize";
29 if (!entity->containsComponent(m_fpsTextVisualModel))
31 m_fpsTextVisualModel->setName(entity->getName() +
"_FpsCounterTxt");
32 entity->addComponent(m_fpsTextVisualModel);
34 CHECK(m_viewer.lock() !=
nullptr) <<
"FpsTxtCounter must have a Viewer to track";
40 std::shared_ptr<Viewer> viewer = m_viewer.lock();
41 const int infoLevel = viewer->getInfoLevel();
42 if (infoLevel != m_prevInfoLevel)
46 m_fpsTextVisualModel->setVisibility(
false);
48 else if (infoLevel == 1 || infoLevel == 2)
50 m_fpsTextVisualModel->setVisibility(
true);
53 m_prevInfoLevel = infoLevel;
58 if (m_fpsTextVisualModel->getVisibility() && m_lastUpdate > m_fpsUpdateDelay)
60 std::shared_ptr<SceneManager> sceneManager = m_sceneManager.lock();
62 std::string fpsVisualStr =
"V: " +
63 std::to_string(static_cast<int>(viewer->getVisualFps())) +
" | " +
65 std::to_string(sceneManager->getActiveScene()->getFrameTime() * 1000.0) +
" ms";
66 m_fpsTextVisualModel->setText(fpsVisualStr);
void visualUpdate(const double &dt)
Update the display of the last frames update times.
void init() override
Initialize the component, called at a later time after all component construction is complete...