44 lines
1 KiB
D
44 lines
1 KiB
D
module gameengine.core.engine;
|
|
|
|
import gameengine.renderer;
|
|
import gameengine.node.node;
|
|
import core.time;
|
|
|
|
class Engine {
|
|
this(IRenderer* renderer) {
|
|
this.renderer = renderer;
|
|
previousProcessTick = MonoTime.currTime();
|
|
previousPhysicsProcessTick = MonoTime.currTime();
|
|
}
|
|
|
|
void runNodeProcesses() {
|
|
MonoTime currentTime = MonoTime.currTime();
|
|
|
|
Duration difference = currentTime - previousProcessTick;
|
|
|
|
float delta = difference.total!"hnsecs" / 10_000_000.0;
|
|
|
|
// Temp
|
|
debug { import std.stdio : writeln; import std.format; try { writeln(format("%f", delta)); } catch (Exception) {} }
|
|
foreach (Node* node ; nodeList) {
|
|
node.process(delta);
|
|
}
|
|
|
|
this.previousProcessTick = MonoTime.currTime();
|
|
}
|
|
|
|
void runNodePhysicsProcesses() {
|
|
// Schade!
|
|
this.previousPhysicsProcessTick = MonoTime.currTime();
|
|
}
|
|
|
|
void drawNodes() {}
|
|
|
|
string engineVersion() const { return "0.0.0"; }
|
|
|
|
private IRenderer* renderer;
|
|
private MonoTime previousProcessTick;
|
|
private MonoTime previousPhysicsProcessTick;
|
|
|
|
private Node*[] nodeList;
|
|
} |