#pragma once
/*
ApplicationFramework
by John Ryland
Copyright (c) 2023
*/
////////////////////////////////////////////////////////////////////////////////////
// Core System Collection
#include "ISystemCollection.h"
#include "ICoreSystem.h"
namespace ApplicationFramework {
template <typename InterfaceType>
class ICoreSystemCollection : public ISystemCollection<InterfaceType>
{
public:
void Prepare() override { this->Apply(std::mem_fn(&ICoreSystem::Prepare)); }
void Render() override { this->Apply(std::mem_fn(&ICoreSystem::Render)); }
void Present() override { this->Apply(std::mem_fn(&ICoreSystem::Present)); }
};
using CoreSystemCollection = ICoreSystemCollection<ICoreSystem>;
} // ApplicationFramework namespace