SHADE_Y3/SHADE_Engine/src/ECS_Base/System/SHSystem.h

73 lines
2.2 KiB
C++

/*********************************************************************
* \file SHSystem.h
* \author Daniel Chua Yee Chen
* \brief Declaration for the SHSytem abstract base class
*
* \copyright Copyright (c) 2021 DigiPen Institute of Technology. Reproduction
or disclosure of this file or its contents without the prior written
consent of DigiPen Institute of Technology is prohibited.
*********************************************************************/
#pragma once
#include "../SHECSMacros.h"
#include "SH_API.h"
namespace SHADE
{
class SHSystemManager;
class SH_API SHSystem
{
private:
SystemID systemID;
protected:
/*!*************************************************************************
* \brief
* Protected default constructor for SHSytem class
***************************************************************************/
SHSystem()= default;
public:
/*!*************************************************************************
* \brief
* Destructor for SHSytem class
***************************************************************************/
virtual ~SHSystem() = default;
/*!*************************************************************************
* \brief
* Pure virtual Init function. Derived class must implement this
***************************************************************************/
virtual void Init() = 0;
///*!*************************************************************************
// * \brief
// * Pure virtual Run function. Derived class must implement this
// * \param dt
// * Delta time
//***************************************************************************/
//virtual void Run(float dt) = 0;
/*!*************************************************************************
* \brief
* Pure virtual Exit function. Derived class must implement this
***************************************************************************/
virtual void Exit() = 0;
friend class SHSystemManager;
inline SystemID GetSystemID(void) const noexcept { return systemID; }
inline SystemVersionID GetSystemVersion(void) const noexcept { return static_cast<SystemVersionID>(systemID >> sizeof(SystemVersionID) * CHAR_BIT); }
};
}