LumixEngine/src/engine/engine.h
2015-01-30 00:05:17 +01:00

74 lines
1.8 KiB
C++

#pragma once
#include "core/lumix.h"
#include "core/array.h"
namespace Lumix
{
namespace FS
{
class FileSystem;
}
class Hierarchy;
namespace MTJD
{
class Manager;
}
class InputBlob;
class EditorServer;
class InputSystem;
class IPlugin;
class IScene;
class JsonSerializer;
class OutputBlob;
class PluginManager;
class Renderer;
class ResourceManager;
class Universe;
class WorldEditor;
class LUMIX_ENGINE_API Engine
{
public:
virtual ~Engine() {}
static Engine* create(const char* base_path, FS::FileSystem* fs, WorldEditor* editor, IAllocator& allocator);
static void destroy(Engine* engine);
virtual Universe* createUniverse() = 0;
virtual void destroyUniverse() = 0;
virtual WorldEditor* getWorldEditor() const = 0;
virtual FS::FileSystem& getFileSystem() = 0;
virtual Renderer& getRenderer() = 0;
virtual InputSystem& getInputSystem() = 0;
virtual PluginManager& getPluginManager() = 0;
virtual IPlugin* loadPlugin(const char* name) = 0;
virtual Universe* getUniverse() const = 0;
virtual Hierarchy* getHierarchy() const = 0;
virtual const Array<IScene*>& getScenes() const = 0;
virtual IScene* getScene(uint32_t type) const = 0;
virtual IScene* getSceneByComponentType(uint32_t type) const = 0;
virtual MTJD::Manager& getMTJDManager() = 0;
virtual IAllocator& getAllocator() = 0;
virtual ResourceManager& getResourceManager() = 0;
virtual const char* getBasePath() const = 0;
virtual void update(bool is_game_running, float time_delta_multiplier) = 0;
virtual uint32_t serialize(OutputBlob& serializer) = 0;
virtual bool deserialize(InputBlob& serializer) = 0;
virtual float getFPS() const = 0;
virtual float getLastTimeDelta() = 0;
protected:
Engine() {}
};
} // ~namespace Lumix