diff options
Diffstat (limited to 'src/libjin/time/timer.cpp')
-rw-r--r-- | src/libjin/time/timer.cpp | 228 |
1 files changed, 114 insertions, 114 deletions
diff --git a/src/libjin/time/timer.cpp b/src/libjin/time/timer.cpp index 32b2f57..a20e46b 100644 --- a/src/libjin/time/timer.cpp +++ b/src/libjin/time/timer.cpp @@ -5,120 +5,120 @@ namespace JinEngine { - namespace Time - { - - - Timer::Timer() - : mHandlers() - { - } - - Timer::~Timer() - { - for (int i = 0; i < mHandlers.size(); ++i) - delete mHandlers[i]; - } - - void Timer::update(float dt) - { - // Process handler. - std::vector<Handler*>::iterator it = mHandlers.begin(); - for (; it != mHandlers.end(); ++it) - (*it)->process(dt); - // Erase canceled handler. - for (it = mHandlers.begin(); it != mHandlers.end();) - { - if ((*it)->canceled) - { - Handler* h = *it; - it = mHandlers.erase(it); - delete h; - } - else - ++it; - } - } - - void Timer::cancel(Handler* handler) - { - if(handler != nullptr) - handler->canceled = true; - } - - void Timer::cancelAll() - { - for (auto h : mHandlers) - cancel(h); - } - - Timer::Handler* Timer::every(float dt, TimerCallback callback, void* p, FinishCallback finish) - { - Handler* t = new Handler(Handler::EVERY, dt, 0, callback, p, finish); - mHandlers.push_back(t); - return t; - } - - Timer::Handler* Timer::after(float dt, TimerCallback callback, void* p, FinishCallback finish) - { - Handler* t = new Handler(Handler::AFTER, dt, 0, callback, p, finish); - mHandlers.push_back(t); - return t; - } - - Timer::Handler* Timer::repeat(float dt, int count, TimerCallback callback, void* p, FinishCallback finish) - { - Handler* t = new Handler(Handler::REPEAT, dt, count, callback, p, finish); - mHandlers.push_back(t); - return t; - } - - Timer::Handler::Handler(Type t, float d, int c, TimerCallback f, void* p, FinishCallback finishcallback) - : type(t) - , duration(d) - , count(c) - , tickdown(d) - , countdown(c) - , callback(f) - , paramters(p) - , canceled(false) - , finishCallback(finishcallback) - { - } - - Timer::Handler::~Handler() - { - if (finishCallback != nullptr) - finishCallback(paramters); - } - - void Timer::Handler::process(float dt) - { - tickdown -= dt; - if (tickdown <= 0) - { - tickdown += duration; - if (!canceled && callback != nullptr) - callback(paramters); - if (type == EVERY) - { - } - else if (type == AFTER) - { - canceled = true; - } - else if (type == REPEAT) - { - --countdown; - if (countdown <= 0) - canceled = true; - } - } - } - - float deltaTime = 0; - - } // namespace Time + namespace Time + { + + + Timer::Timer() + : mHandlers() + { + } + + Timer::~Timer() + { + for (int i = 0; i < mHandlers.size(); ++i) + delete mHandlers[i]; + } + + void Timer::update(float dt) + { + // Process handler. + std::vector<Handler*>::iterator it = mHandlers.begin(); + for (; it != mHandlers.end(); ++it) + (*it)->process(dt); + // Erase canceled handler. + for (it = mHandlers.begin(); it != mHandlers.end();) + { + if ((*it)->canceled) + { + Handler* h = *it; + it = mHandlers.erase(it); + delete h; + } + else + ++it; + } + } + + void Timer::cancel(Handler* handler) + { + if(handler != nullptr) + handler->canceled = true; + } + + void Timer::cancelAll() + { + for (auto h : mHandlers) + cancel(h); + } + + Timer::Handler* Timer::every(float dt, TimerCallback callback, void* p, FinishCallback finish) + { + Handler* t = new Handler(Handler::EVERY, dt, 0, callback, p, finish); + mHandlers.push_back(t); + return t; + } + + Timer::Handler* Timer::after(float dt, TimerCallback callback, void* p, FinishCallback finish) + { + Handler* t = new Handler(Handler::AFTER, dt, 0, callback, p, finish); + mHandlers.push_back(t); + return t; + } + + Timer::Handler* Timer::repeat(float dt, int count, TimerCallback callback, void* p, FinishCallback finish) + { + Handler* t = new Handler(Handler::REPEAT, dt, count, callback, p, finish); + mHandlers.push_back(t); + return t; + } + + Timer::Handler::Handler(Type t, float d, int c, TimerCallback f, void* p, FinishCallback finishcallback) + : type(t) + , duration(d) + , count(c) + , tickdown(d) + , countdown(c) + , callback(f) + , paramters(p) + , canceled(false) + , finishCallback(finishcallback) + { + } + + Timer::Handler::~Handler() + { + if (finishCallback != nullptr) + finishCallback(paramters); + } + + void Timer::Handler::process(float dt) + { + tickdown -= dt; + if (tickdown <= 0) + { + tickdown += duration; + if (!canceled && callback != nullptr) + callback(paramters); + if (type == EVERY) + { + } + else if (type == AFTER) + { + canceled = true; + } + else if (type == REPEAT) + { + --countdown; + if (countdown <= 0) + canceled = true; + } + } + } + + float deltaTime = 0; + + } // namespace Time } // namespace JinEngine #endif // defined(jin_time)
\ No newline at end of file |