Program Listing for File System.hpp

Return to documentation for file (include/ari/en/System.hpp)

#pragma once
#include "../aridef.hpp"

namespace ari
{
    class World;

    class ARI_API System
    {
    public:

        enum class Type
        {
            GameplaySystem,
            SceneSystem,
            RenderSystem
        };

        enum class UpdateState
        {
            GameplayState,
            SceneManagerState,
            MainThreadState
        };

        System() = default;

        virtual ~System() = default;

        virtual void Update(World* p_world, UpdateState state) = 0;

        virtual void Configure(World* p_world) = 0;

        virtual void Unconfigure(World* p_world) = 0;

        virtual Type GetSystemType() = 0;

        virtual bool NeedUpdateOnState(UpdateState state) = 0;

    }; // System

} // ari