| 1234567891011121314151617181920212223242526272829303132333435 |
- #include "CmDeferredCallManager.h"
- namespace CamelotFramework
- {
- DeferredCallManager::DeferredCallManager()
- {
- }
- void DeferredCallManager::queueDeferredCall(std::function<void()> func)
- {
- mCallbacks.push_back(func);
- }
- void DeferredCallManager::update()
- {
- while(!mCallbacks.empty())
- {
- // Copy because callbacks can be queued within callbacks
- Vector<std::function<void()>>::type callbackCopy = mCallbacks;
- mCallbacks.clear();
- for(auto& call : callbackCopy)
- {
- call();
- }
- }
- }
- // Declared in CmPrerequisites.h
- void deferredCall(std::function<void()> callback)
- {
- DeferredCallManager::instance().queueDeferredCall(callback);
- }
- }
|