LumixEngine/src/engine/plugin_manager.h
2015-11-12 22:35:26 +01:00

39 lines
904 B
C++

#pragma once
#include "lumix.h"
#include "core/array.h"
#include "core/delegate_list.h"
namespace Lumix
{
class Engine;
class InputBlob;
class IPlugin;
class JsonSerializer;
class OutputBlob;
class Universe;
class LUMIX_ENGINE_API PluginManager
{
public:
virtual ~PluginManager() {}
static PluginManager* create(Engine& engine);
static void destroy(PluginManager* manager);
virtual IPlugin* load(const char* path) = 0;
virtual void addPlugin(IPlugin* plugin) = 0;
virtual void update(float dt) = 0;
virtual void serialize(OutputBlob& serializer) = 0;
virtual void deserialize(InputBlob& serializer) = 0;
virtual IPlugin* getPlugin(const char* name) = 0;
virtual const Array<IPlugin*>& getPlugins() const = 0;
virtual const Array<void*>& getLibraries() const = 0;
virtual DelegateList<void(void*)>& libraryLoaded() = 0;
};
} // ~namespace Lumix