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-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-05 10:36:01 +01:00
|
|
|
OMaterialInstanceAsset Seele::MaterialAsset::instantiate(const InstantiationParameter& params)
|
|
|
|
|
{
|
|
|
|
|
OMaterialInstance instance = material->instantiate();
|
|
|
|
|
instance->setBaseMaterial(this);
|
|
|
|
|
OMaterialInstanceAsset asset = new MaterialInstanceAsset(params.folderPath, params.name);
|
|
|
|
|
asset->setHandle(std::move(instance));
|
|
|
|
|
return asset;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|