/********************************************************************* * \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" namespace SHADE { class SHSystemManager; class 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(systemID >> sizeof(SystemVersionID) * CHAR_BIT); } }; }