84 lines
1.9 KiB
C++
84 lines
1.9 KiB
C++
#pragma once
|
|
|
|
|
|
#include "lumix.h"
|
|
|
|
|
|
struct lua_State;
|
|
|
|
|
|
namespace Lumix
|
|
{
|
|
namespace FS
|
|
{
|
|
class DiskFileDevice;
|
|
class FileSystem;
|
|
}
|
|
|
|
namespace MTJD
|
|
{
|
|
class Manager;
|
|
}
|
|
|
|
class InputBlob;
|
|
class IAllocator;
|
|
class InputSystem;
|
|
class OutputBlob;
|
|
class PathManager;
|
|
class PluginManager;
|
|
class ResourceManager;
|
|
class Universe;
|
|
|
|
|
|
class LUMIX_ENGINE_API Engine
|
|
{
|
|
public:
|
|
struct PlatformData
|
|
{
|
|
void* window_handle;
|
|
};
|
|
|
|
public:
|
|
virtual ~Engine() {}
|
|
|
|
static Engine* create(const char* base_path0,
|
|
const char* base_path1,
|
|
FS::FileSystem* fs,
|
|
IAllocator& allocator);
|
|
static void destroy(Engine* engine, IAllocator& allocator);
|
|
|
|
virtual Universe& createUniverse() = 0;
|
|
virtual void destroyUniverse(Universe& context) = 0;
|
|
virtual void setPlatformData(const PlatformData& data) = 0;
|
|
virtual const PlatformData& getPlatformData() = 0;
|
|
|
|
virtual FS::FileSystem& getFileSystem() = 0;
|
|
virtual FS::DiskFileDevice* getDiskFileDevice() = 0;
|
|
virtual FS::DiskFileDevice* getPatchFileDevice() = 0;
|
|
virtual InputSystem& getInputSystem() = 0;
|
|
virtual PluginManager& getPluginManager() = 0;
|
|
virtual MTJD::Manager& getMTJDManager() = 0;
|
|
virtual ResourceManager& getResourceManager() = 0;
|
|
virtual IAllocator& getAllocator() = 0;
|
|
|
|
virtual void startGame(Universe& context) = 0;
|
|
virtual void stopGame(Universe& context) = 0;
|
|
|
|
virtual void update(Universe& context) = 0;
|
|
virtual uint32 serialize(Universe& ctx, OutputBlob& serializer) = 0;
|
|
virtual bool deserialize(Universe& ctx, InputBlob& serializer) = 0;
|
|
virtual float getFPS() const = 0;
|
|
virtual float getLastTimeDelta() = 0;
|
|
virtual void setTimeMultiplier(float multiplier) = 0;
|
|
virtual void pause(bool pause) = 0;
|
|
virtual void nextFrame() = 0;
|
|
virtual PathManager& getPathManager() = 0;
|
|
virtual lua_State* getState() = 0;
|
|
virtual void runScript(const char* src, int src_length, const char* path) = 0;
|
|
|
|
protected:
|
|
Engine() {}
|
|
};
|
|
|
|
|
|
} // ~namespace Lumix
|