2026-02-27 20:46:16 +08:00
|
|
|
#include <core/director.h>
|
|
|
|
|
|
|
|
|
|
namespace extra2d {
|
|
|
|
|
|
|
|
|
|
Director& Director::inst() {
|
|
|
|
|
static Director instance;
|
|
|
|
|
return instance;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool Director::init() {
|
|
|
|
|
if (inited_) return true;
|
|
|
|
|
|
|
|
|
|
inited_ = true;
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Director::shutdown() {
|
|
|
|
|
if (!inited_) return;
|
|
|
|
|
|
2026-02-27 20:55:06 +08:00
|
|
|
SVC_MGR.shutdownAll();
|
|
|
|
|
SCHED.unscheduleAll();
|
2026-02-27 20:46:16 +08:00
|
|
|
|
|
|
|
|
inited_ = false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Director::mainLoop(float dt) {
|
|
|
|
|
if (paused_) return;
|
|
|
|
|
|
|
|
|
|
dt_ = dt;
|
|
|
|
|
totalTime_ += dt;
|
|
|
|
|
frameCount_++;
|
|
|
|
|
|
2026-02-27 20:55:06 +08:00
|
|
|
SVC_MGR.updateAll(dt);
|
2026-02-27 20:46:16 +08:00
|
|
|
|
|
|
|
|
fixedAccumulator_ += dt;
|
|
|
|
|
while (fixedAccumulator_ >= fixedDt_) {
|
2026-02-27 20:55:06 +08:00
|
|
|
SVC_MGR.fixedUpdateAll(fixedDt_);
|
2026-02-27 20:46:16 +08:00
|
|
|
fixedAccumulator_ -= fixedDt_;
|
|
|
|
|
}
|
|
|
|
|
|
2026-02-27 20:55:06 +08:00
|
|
|
SCHED.update(dt);
|
2026-02-27 20:46:16 +08:00
|
|
|
|
2026-02-27 20:55:06 +08:00
|
|
|
SVC_MGR.lateUpdateAll(dt);
|
2026-02-27 20:46:16 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Director::mainLoopParallel(float dt) {
|
|
|
|
|
if (paused_) return;
|
|
|
|
|
|
|
|
|
|
dt_ = dt;
|
|
|
|
|
totalTime_ += dt;
|
|
|
|
|
frameCount_++;
|
|
|
|
|
|
2026-02-27 20:55:06 +08:00
|
|
|
SVC_MGR.updateAll(dt);
|
2026-02-27 20:46:16 +08:00
|
|
|
|
|
|
|
|
fixedAccumulator_ += dt;
|
|
|
|
|
while (fixedAccumulator_ >= fixedDt_) {
|
2026-02-27 20:55:06 +08:00
|
|
|
SVC_MGR.fixedUpdateAll(fixedDt_);
|
2026-02-27 20:46:16 +08:00
|
|
|
fixedAccumulator_ -= fixedDt_;
|
|
|
|
|
}
|
|
|
|
|
|
2026-02-27 20:55:06 +08:00
|
|
|
SCHED.updateParallel(dt);
|
2026-02-27 20:46:16 +08:00
|
|
|
|
2026-02-27 20:55:06 +08:00
|
|
|
SVC_MGR.lateUpdateAll(dt);
|
2026-02-27 20:46:16 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Director::pause() {
|
|
|
|
|
paused_ = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Director::resume() {
|
|
|
|
|
paused_ = false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Director::setTimeScale(float scale) {
|
2026-02-27 20:55:06 +08:00
|
|
|
SCHED.setTimeScale(scale);
|
2026-02-27 20:46:16 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} // namespace extra2d
|