2023-01-21 18:43:21 +01:00
|
|
|
#pragma once
|
|
|
|
|
#include "Asset.h"
|
|
|
|
|
|
|
|
|
|
namespace Seele
|
|
|
|
|
{
|
|
|
|
|
DECLARE_REF(Material)
|
2023-11-05 10:36:01 +01:00
|
|
|
DECLARE_REF(MaterialInstanceAsset)
|
|
|
|
|
struct InstantiationParameter
|
|
|
|
|
{
|
|
|
|
|
std::string name;
|
|
|
|
|
std::string folderPath;
|
|
|
|
|
};
|
2023-01-21 18:43:21 +01:00
|
|
|
class MaterialAsset : public Asset
|
|
|
|
|
{
|
|
|
|
|
public:
|
2023-02-13 14:56:13 +01:00
|
|
|
static constexpr uint64 IDENTIFIER = 0x4;
|
2023-01-21 18:43:21 +01:00
|
|
|
MaterialAsset();
|
2023-02-13 14:56:13 +01:00
|
|
|
MaterialAsset(std::string_view folderPath, std::string_view name);
|
2023-01-21 18:43:21 +01:00
|
|
|
virtual ~MaterialAsset();
|
2023-02-13 14:56:13 +01:00
|
|
|
virtual void save(ArchiveBuffer& buffer) const override;
|
|
|
|
|
virtual void load(ArchiveBuffer& buffer) override;
|
2023-01-21 18:43:21 +01:00
|
|
|
PMaterial getMaterial() const { return material; }
|
2023-11-06 14:47:21 +01:00
|
|
|
PMaterialInstanceAsset instantiate(const InstantiationParameter& params);
|
2023-01-21 18:43:21 +01:00
|
|
|
private:
|
2023-11-05 10:36:01 +01:00
|
|
|
OMaterial material;
|
2023-01-21 18:43:21 +01:00
|
|
|
friend class MaterialLoader;
|
|
|
|
|
};
|
|
|
|
|
DEFINE_REF(MaterialAsset)
|
|
|
|
|
} // namespace Seele
|