MCPcopy Create free account
hub / github.com/begla/Intrinsic / executeTasks

Method executeTasks

IntrinsicCore/src/IntrinsicCoreTaskManager.cpp:62–164  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

60float TaskManager::_timeModulator = 1.0f;
61
62void TaskManager::executeTasks()
63{
64#if defined(_INTR_PROFILING_ENABLED)
65 MICROPROFILE_SCOPE(MAIN);
66#endif // _INTR_PROFILING_ENABLED
67
68 _INTR_PROFILE_CPU("TaskManager", "Execute Tasks");
69
70 if (_frameCounter > 0u)
71 {
72 _INTR_PROFILE_CPU("TaskManager", "Limit To Max FPS");
73
74 _lastDeltaT = std::min(
75 (TimingHelper::getMicroseconds() - _lastUpdate) * 0.000001f, 0.3f);
76 _lastActualFrameDuration = _lastDeltaT;
77
78 // Adjust deltaT to target frame rate
79 while (_lastDeltaT < Settings::Manager::_targetFrameRate)
80 {
81 _lastDeltaT = (TimingHelper::getMicroseconds() - _lastUpdate) * 0.000001f;
82 std::this_thread::yield();
83 }
84 }
85
86 // Avoid very high deltaTs due to stalls
87 _lastDeltaT = std::min(_lastDeltaT, 0.1f);
88
89 const float modDeltaT = _lastDeltaT * _timeModulator;
90 _totalTimePassed += modDeltaT;
91 _lastUpdate = TimingHelper::getMicroseconds();
92
93 {
94 _INTR_PROFILE_CPU("TaskManager", "Non-Rendering Tasks");
95
96 // Events and input
97 {
98 _INTR_PROFILE_CPU("TaskManager", "Pump Events");
99
100 Input::System::reset();
101 SystemEventProvider::SDL::pumpEvents();
102 }
103
104 // Game state update
105 {
106 GameStates::Manager::update(modDeltaT);
107 }
108
109 // Scripts
110 {
111 Components::ScriptManager::tickScripts(
112 Components::ScriptManager::_activeRefs, modDeltaT);
113 }
114
115 // Physics
116 {
117 _INTR_PROFILE_CPU("TaskManager", "Update From Physics Results");
118
119 Components::RigidBodyManager::updateNodesFromActors(

Callers

nothing calls this directly

Calls 1

getMicrosecondsFunction · 0.85

Tested by

no test coverage detected