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; }