Skip to content
Snippets Groups Projects
Select Git revision
  • 8c788a952f4e9635035b409c7f414bf46b698a84
  • main default protected
  • variant
3 results

Controller.java

Blame
  • Forked from COUETOUX Basile / FirefighterStarter
    Source project has a limited visibility.
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    Kernel.cpp 1.13 KiB
    #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);
            }
        }
    }