#ifndef ENGINE_H #define ENGINE_H #include class Input; class SparrowRenderer; class SceneTree; class SparrowShell; class PhysicsDebugNode; namespace sf { class Clock; class Window; } class btDiscreteDynamicsWorld; class Engine { public: Engine(); ~Engine(); void createWindow(std::string title = "SparrowEngine", unsigned int w = 800, unsigned int h = 600, const std::string &mode = "windowed"); // void setScene(SceneTree *scene); void setScene(std::string scene); void initPhysics(); void enablePhysicsDebug(); void disablePhysicsDebug(); void toggleMouseVisibility(); // special inputs void setTogglePhysicsDebugAction(int action); void setToggleShellAction(int action); void setExitGameAction(int action); void setShowMouseAction(int action); void start(); void stop(); Input* getInput() const {return m_input;} sf::Window* getWindow() const {return m_window;} SparrowRenderer* getRenderer() const {return m_renderer;} btDiscreteDynamicsWorld* getPhysics() const {return m_world;} SparrowShell* getShell() const {return m_sparrowshell;} SceneTree* getScene() const; unsigned int getTime() const; unsigned int getDeltaTime() const; // SceneTree* createScene(); void createScene(std::string scene_name); //void setCurrentScene(std::string scene_name){m_current_scene = scene_name;} private: sf::Clock* m_clock; unsigned int m_timeStamp = 0; unsigned int m_lastTimeStamp = 0; bool m_running; sf::Window* m_window; Input* m_input; // SceneTree* m_scene; std::string m_current_scene; SparrowShell* m_sparrowshell; btDiscreteDynamicsWorld* m_world; PhysicsDebugNode *m_physicsDebugNode; SparrowRenderer* m_renderer; void update(); int m_togglePhysicsDebugAction; int m_toggleShellAction; int m_exitGameAction; int m_showMouseAction; bool m_mouseVisible; void checkSpecialInputs(); }; #endif