2025-10-05 10:07:36 +03:30
|
|
|
#include <memory/scope.hpp>
|
2025-10-04 22:08:19 +03:30
|
|
|
#include <renderer/backend/vk/messenger.hpp>
|
|
|
|
|
#include <renderer/frontend/messenger.hpp>
|
|
|
|
|
|
|
|
|
|
namespace lt::renderer {
|
|
|
|
|
|
|
|
|
|
[[nodiscard]] /* static */ auto IMessenger::create(
|
2025-10-07 16:09:50 +03:30
|
|
|
Api target_api,
|
2025-10-04 22:08:19 +03:30
|
|
|
IInstance *instance,
|
|
|
|
|
ecs::Entity entity
|
2025-10-05 10:07:36 +03:30
|
|
|
) -> memory::Scope<IMessenger>
|
2025-10-04 22:08:19 +03:30
|
|
|
{
|
|
|
|
|
switch (target_api)
|
|
|
|
|
{
|
2025-10-07 16:09:50 +03:30
|
|
|
case Api::vulkan: return memory::create_scope<vk::Messenger>(instance, std::move(entity));
|
|
|
|
|
case Api::none:
|
|
|
|
|
case Api::metal:
|
|
|
|
|
case Api::direct_x: throw std::runtime_error { "Invalid API" };
|
2025-10-04 22:08:19 +03:30
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} // namespace lt::renderer
|