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