// Copyright (C) 2020 Jérôme Leclercq // This file is part of the "Nazara Engine - Core module" // For conditions of distribution and use, see copyright notice in Config.hpp #include #include #include namespace Nz { namespace Detail { template struct RegisterComponent { void operator()(entt::id_type& expectedId) { if (entt::type_seq() != expectedId++) throw std::runtime_error(std::string(entt::type_name::value()) + " has wrong index, please initialize Nazara ECS before instancing your own components"); } }; } /*! * \ingroup core * \class Nz::ECS * \brief Core class that represents the ECS module */ inline ECS::ECS(Config /*config*/) : ModuleBase("ECS", this) { RegisterComponents(); } inline void ECS::RegisterComponents() { entt::id_type expectedId = 0; TypeListApply, Detail::RegisterComponent>(expectedId); } } #include