Files
Seele/src/Engine/Asset/MaterialAsset.cpp
T

46 lines
1.2 KiB
C++
Raw Normal View History

2023-01-21 18:43:21 +01:00
#include "MaterialAsset.h"
#include "Material/Material.h"
2023-01-29 18:58:59 +01:00
#include "Graphics/Graphics.h"
2023-11-05 10:36:01 +01:00
#include "MaterialInstanceAsset.h"
2023-11-06 14:47:21 +01:00
#include "Asset/AssetRegistry.h"
2023-01-21 18:43:21 +01:00
using namespace Seele;
MaterialAsset::MaterialAsset()
{
}
2023-02-13 14:56:13 +01:00
MaterialAsset::MaterialAsset(std::string_view folderPath, std::string_view name)
: Asset(folderPath, name)
2023-01-21 18:43:21 +01:00
{
}
MaterialAsset::~MaterialAsset()
{
}
2023-02-13 14:56:13 +01:00
void MaterialAsset::save(ArchiveBuffer& buffer) const
2023-01-21 18:43:21 +01:00
{
2023-02-13 14:56:13 +01:00
material->save(buffer);
2023-01-21 18:43:21 +01:00
}
2023-02-13 14:56:13 +01:00
void MaterialAsset::load(ArchiveBuffer& buffer)
2023-01-21 18:43:21 +01:00
{
2023-02-13 14:56:13 +01:00
material = new Material();
material->load(buffer);
2023-04-09 16:39:53 +02:00
material->compile();
2023-01-21 18:43:21 +01:00
}
2023-11-06 14:47:21 +01:00
PMaterialInstanceAsset MaterialAsset::instantiate(const InstantiationParameter& params)
2023-11-05 10:36:01 +01:00
{
OMaterialInstance instance = material->instantiate();
instance->setBaseMaterial(this);
OMaterialInstanceAsset asset = new MaterialInstanceAsset(params.folderPath, params.name);
asset->setHandle(std::move(instance));
2023-11-06 14:47:21 +01:00
asset->setBase(this);
PMaterialInstanceAsset ref = asset;
AssetRegistry::get().saveAsset(ref, MaterialInstanceAsset::IDENTIFIER, ref->getFolderPath(), ref->getName());
AssetRegistry::get().registerMaterialInstance(std::move(asset));
return ref;
2023-11-05 10:36:01 +01:00
}