#pragma once

/*
	GameEngine and Editor
	by John Ryland
	Copyright (c) 2023
*/

////////////////////////////////////////////////////////////////////////////////////
//	Entity Component System Interface

namespace GameEngine {

class IEntityComponentSystem
{
public:
    IEntityComponentSystem() {}
    virtual ~IEntityComponentSystem() {}

    virtual void Initialize() = 0;
    virtual void Shutdown() = 0;

    virtual void Prepare() = 0;
    virtual void Update() = 0;
    virtual void Render() = 0;
    virtual void Present() = 0;
};

} // GameEngine namespace
