5#include <nlohmann/json_fwd.hpp>
7#include "core/reflect.h"
8#include "resource/asset/animation_clip_asset.h"
9#include "resource/asset/audio_clip_asset.h"
10#include "resource/asset/mesh_asset.h"
11#include "resource/asset/skeleton_asset.h"
12#include "resource/asset/texture_asset.h"
14namespace Vkm::Engine {
23template<
typename Asset>
34 RecipeImport<MeshAsset> createMesh =
nullptr;
35 RecipeImport<TextureAsset> createTexture =
nullptr;
36 RecipeImport<SkeletonAsset> createSkeleton =
nullptr;
37 RecipeImport<AnimationClipAsset> createAnimationClip =
nullptr;
38 RecipeImport<AudioClipAsset> createAudioClip =
nullptr;
54template<
typename Asset>
55RecipeImport<Asset> recipeImport() {
57 if constexpr (std::is_same_v<Asset, MeshAsset>)
return factory.createMesh;
58 else if constexpr (std::is_same_v<Asset, TextureAsset>)
return factory.createTexture;
59 else if constexpr (std::is_same_v<Asset, SkeletonAsset>)
return factory.createSkeleton;
60 else if constexpr (std::is_same_v<Asset, AnimationClipAsset>)
return factory.createAnimationClip;
61 else if constexpr (std::is_same_v<Asset, AudioClipAsset>)
return factory.createAudioClip;
62 else static_assert(Reflect::DEPENDENT_FALSE<Asset>,
"recipeImport: this kind has no import slot");
Open type-erased resource registry with typed handles and generational lifetimes.
Definition resource_manager.h:46
The io<->tools recipe-import seam: one import per kind that cooks to a binary.
Definition asset_factory.h:33
Opaque, type-safe handle for resources, distinguished by ResourceType.
Definition resource_handle.h:16