#include "Kernel.hpp" namespace megu::kernel { Kernel::Kernel(Window & window) : _window(window), _pEngine(), _gEngine(window) { this->_pEngine.boot(*this); this->_gEngine.boot(*this); } Kernel::~Kernel() { this->_pEngine.stop(*this); this->_pEngine.stop(*this); } void Kernel::step() { double time = Window::Time(); if(this->_window.isOpen()) { this->_gEngine.step(*this, time); this->_gResolver.resolve(*this, this->_gEngine, time); } this->_pEngine.step(*this, time); this->_pResolver.resolve(*this, this->_pEngine, time); } void Kernel::add(Prop * props) { this->_props[props->id()] = props; auto * pComponent = props->getPhysicComponent(); if(pComponent != nullptr) { this->_pEngine.add(*this, *pComponent); this->_pResolver.add(*pComponent); } auto * gComponent = props->getGraphicComponent(); if(gComponent != nullptr) { this->_gEngine.add(*this, *gComponent); this->_gResolver.add(*gComponent); } } }