LumixEngine/src/engine/iplugin.h
2015-08-18 22:57:22 +02:00

53 lines
No EOL
1.2 KiB
C++

#pragma once
#include "lumix.h"
namespace Lumix
{
class Engine;
class InputBlob;
class IPlugin;
class OutputBlob;
class Universe;
struct UniverseContext;
class LUMIX_ENGINE_API IScene abstract
{
public:
virtual ~IScene() {}
virtual ComponentIndex createComponent(uint32_t, Entity) = 0;
virtual void destroyComponent(ComponentIndex component, uint32_t type) = 0;
virtual void serialize(OutputBlob& serializer) = 0;
virtual void deserialize(InputBlob& serializer) = 0;
virtual IPlugin& getPlugin() const = 0;
virtual void update(float time_delta) = 0;
virtual bool ownComponentType(uint32_t type) const = 0;
virtual Universe& getUniverse() = 0;
virtual void startGame() {}
virtual void stopGame() {}
};
class LUMIX_ENGINE_API IPlugin abstract
{
public:
virtual ~IPlugin();
virtual bool create() = 0;
virtual void destroy() = 0;
virtual void serialize(OutputBlob&) {}
virtual void deserialize(InputBlob&) {}
virtual void update(float) {}
virtual const char* getName() const = 0;
virtual void sendMessage(const char*) {};
virtual IScene* createScene(UniverseContext&) { return nullptr; }
virtual void destroyScene(IScene*) { ASSERT(false); }
};
};