text: #ifndef __MODULE_H__
  #define __MODULE_H__
  
  #include "JSONLoader.h"
  
  class Application;
  struct PhysBody3D;
  struct Event;
  
  
  class Module
  {
  private :
  	bool enabled;
  
  public:
  	Application* App;
  
  	Module(Application* parent, bool start_enabled = true) : App(parent)
  	{}
  
  	virtual ~Module()
  	{}
  
  	virtual bool Init(nlohmann::json config)
  	{
  		return true;
  	}
  
  	virtual bool Start()
  	{
  		return true;
  	}
  
  	virtual update_status PreUpdate(float dt)
  	{
  		return UPDATE_CONTINUE;
  	}
  
  	virtual update_status Update(float dt)
  	{
  		return UPDATE_CONTINUE;
  	}
  
  	virtual update_status PostUpdate(float dt)
  	{
  		return UPDATE_CONTINUE;
  	}
  
  	virtual bool CleanUp()
  	{
  		return true;
  	}
  
  	virtual void CallbackEvent(const Event& event)
  	{ }
  
  
  
  	virtual void Load(nlohmann::json& file)
  	{}
  
  	virtual void Save(nlohmann::json& file)
  	{}
  
  
  	virtual void ReloadFromConfig()
  	{}
  };
  
  #endif // __MODULE_H__
  