| 4781 | |
| 4782 | |
| 4783 | void PixelGameEngine::olc_CoreUpdate() |
| 4784 | { |
| 4785 | // Handle Timing |
| 4786 | m_tp2 = std::chrono::system_clock::now(); |
| 4787 | std::chrono::duration<float> elapsedTime = m_tp2 - m_tp1; |
| 4788 | m_tp1 = m_tp2; |
| 4789 | |
| 4790 | // Our time per frame coefficient |
| 4791 | float fElapsedTime = elapsedTime.count(); |
| 4792 | fLastElapsed = fElapsedTime; |
| 4793 | |
| 4794 | if (bConsoleSuspendTime) |
| 4795 | fElapsedTime = 0.0f; |
| 4796 | |
| 4797 | // Some platforms will need to check for events |
| 4798 | platform->HandleSystemEvent(); |
| 4799 | |
| 4800 | // Compare hardware input states from previous frame |
| 4801 | auto ScanHardware = [&](HWButton* pKeys, bool* pStateOld, bool* pStateNew, uint32_t nKeyCount) |
| 4802 | { |
| 4803 | for (uint32_t i = 0; i < nKeyCount; i++) |
| 4804 | { |
| 4805 | pKeys[i].bPressed = false; |
| 4806 | pKeys[i].bReleased = false; |
| 4807 | if (pStateNew[i] != pStateOld[i]) |
| 4808 | { |
| 4809 | if (pStateNew[i]) |
| 4810 | { |
| 4811 | pKeys[i].bPressed = !pKeys[i].bHeld; |
| 4812 | pKeys[i].bHeld = true; |
| 4813 | } |
| 4814 | else |
| 4815 | { |
| 4816 | pKeys[i].bReleased = true; |
| 4817 | pKeys[i].bHeld = false; |
| 4818 | } |
| 4819 | } |
| 4820 | pStateOld[i] = pStateNew[i]; |
| 4821 | } |
| 4822 | }; |
| 4823 | |
| 4824 | ScanHardware(pKeyboardState, pKeyOldState, pKeyNewState, 256); |
| 4825 | ScanHardware(pMouseState, pMouseOldState, pMouseNewState, nMouseButtons); |
| 4826 | |
| 4827 | // Cache mouse coordinates so they remain consistent during frame |
| 4828 | vMousePos = vMousePosCache; |
| 4829 | nMouseWheelDelta = nMouseWheelDeltaCache; |
| 4830 | nMouseWheelDeltaCache = 0; |
| 4831 | |
| 4832 | vDroppedFiles = vDroppedFilesCache; |
| 4833 | vDroppedFilesPoint = vDroppedFilesPointCache; |
| 4834 | vDroppedFilesCache.clear(); |
| 4835 | |
| 4836 | |
| 4837 | |
| 4838 | // Swap Keypress cache |
| 4839 | nKeyPressCacheTarget ^= 0x01; |
| 4840 |
no test coverage detected