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

30 lines
771 B
C++
Raw Normal View History

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-05 10:36:01 +01:00
OMaterialInstanceAsset 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