7 #include "imstkSimulationUtils.h" 8 #include "imstkEntity.h" 9 #include "imstkFpsTxtCounter.h" 10 #include "imstkKeyboardDeviceClient.h" 11 #include "imstkKeyboardSceneControl.h" 12 #include "imstkLogger.h" 13 #include "imstkMouseDeviceClient.h" 14 #include "imstkMouseSceneControl.h" 15 #include "imstkPerformanceGraph.h" 16 #include "imstkSceneControlText.h" 17 #include "imstkSceneManager.h" 18 #include "imstkSimulationManager.h" 19 #include "imstkViewer.h" 23 namespace SimulationUtils
25 std::shared_ptr<Entity>
26 createDefaultSceneControl(
27 std::shared_ptr<SimulationManager> driver)
29 std::shared_ptr<SceneManager> sceneManager =
nullptr;
30 std::shared_ptr<Viewer> viewer =
nullptr;
31 for (
auto driverModule : driver->getModules())
33 if (
auto viewerModule = std::dynamic_pointer_cast<Viewer>(driverModule))
35 viewer = viewerModule;
37 else if (
auto sceneManagerModule = std::dynamic_pointer_cast<SceneManager>(driverModule))
39 sceneManager = sceneManagerModule;
42 CHECK(sceneManager !=
nullptr) <<
"The SimulationManager has no SceneManager";
43 CHECK(viewer !=
nullptr) <<
"The SimulationManager has no Viewer";
46 auto statusText = std::make_shared<SceneControlText>();
47 statusText->setSceneManager(sceneManager);
50 auto keyControl = std::make_shared<KeyboardSceneControl>();
51 keyControl->setDevice(viewer->getKeyboardDevice());
52 keyControl->setSceneManager(sceneManager);
53 keyControl->setModuleDriver(driver);
54 keyControl->setSceneControlText(statusText);
57 auto mouseControl = std::make_shared<MouseSceneControl>();
58 mouseControl->setDevice(viewer->getMouseDevice());
59 mouseControl->setSceneManager(sceneManager);
62 auto fpsCounter = std::make_shared<FpsTxtCounter>();
63 fpsCounter->setSceneManager(sceneManager);
64 fpsCounter->setViewer(viewer);
67 auto perfGraph = std::make_shared<PerformanceGraph>();
68 perfGraph->setSceneManager(sceneManager);
69 perfGraph->setViewer(viewer);
71 auto entity = std::make_shared<Entity>(
"DefaultSceneControlEntity");
72 entity->addComponent(keyControl);
73 entity->addComponent(statusText);
74 entity->addComponent(mouseControl);
75 entity->addComponent(fpsCounter);
76 entity->addComponent(perfGraph);