Extra2D/include/assets/builtin/builtin_asset_factory.h

42 lines
1.0 KiB
C++

#pragma once
#include <assets/asset_storage.h>
#include <assets/handle.h>
#include <assets/io/asset_file_system.h>
#include <renderer/material.h>
#include <renderer/mesh.h>
#include <renderer/shader.h>
#include <renderer/texture.h>
namespace extra2d {
class BuiltinAssetFactory {
public:
BuiltinAssetFactory(AssetStorage<Texture> &textures, AssetStorage<Shader> &shaders,
AssetStorage<Material> &materials, AssetStorage<Mesh> &meshes,
const AssetFileSystem &fileSystem);
bool create();
void destroy();
Handle<Texture> defaultTexture() const;
Handle<Shader> defaultShader() const;
Handle<Material> defaultMaterial() const;
Handle<Mesh> defaultQuad() const;
private:
AssetStorage<Texture> &textures_;
AssetStorage<Shader> &shaders_;
AssetStorage<Material> &materials_;
AssetStorage<Mesh> &meshes_;
const AssetFileSystem &fileSystem_;
Handle<Texture> defaultTexture_;
Handle<Shader> defaultShader_;
Handle<Material> defaultMaterial_;
Handle<Mesh> defaultQuad_;
};
} // namespace extra2d