Graphics/MaterialInstance: Add LoadFrom*
This commit is contained in:
parent
5502e51d71
commit
fe0d70d9e1
|
|
@ -39,7 +39,7 @@ namespace Nz
|
||||||
using MaterialInstanceManager = ResourceManager<MaterialInstance, MaterialInstanceParams>;
|
using MaterialInstanceManager = ResourceManager<MaterialInstance, MaterialInstanceParams>;
|
||||||
using MaterialInstanceSaver = ResourceSaver<MaterialInstance, MaterialInstanceParams>;
|
using MaterialInstanceSaver = ResourceSaver<MaterialInstance, MaterialInstanceParams>;
|
||||||
|
|
||||||
class NAZARA_GRAPHICS_API MaterialInstance : public TransferInterface
|
class NAZARA_GRAPHICS_API MaterialInstance : public Resource, public TransferInterface
|
||||||
{
|
{
|
||||||
struct CopyToken {};
|
struct CopyToken {};
|
||||||
|
|
||||||
|
|
@ -106,6 +106,10 @@ namespace Nz
|
||||||
|
|
||||||
static constexpr std::size_t InvalidPropertyIndex = MaterialSettings::InvalidPropertyIndex;
|
static constexpr std::size_t InvalidPropertyIndex = MaterialSettings::InvalidPropertyIndex;
|
||||||
|
|
||||||
|
static std::shared_ptr<MaterialInstance> LoadFromFile(const std::filesystem::path& filePath, const MaterialInstanceParams& params = MaterialInstanceParams());
|
||||||
|
static std::shared_ptr<MaterialInstance> LoadFromMemory(const void* data, std::size_t size, const MaterialInstanceParams& params = MaterialInstanceParams());
|
||||||
|
static std::shared_ptr<MaterialInstance> LoadFromStream(Stream& stream, const MaterialInstanceParams& params = MaterialInstanceParams());
|
||||||
|
|
||||||
NazaraSignal(OnMaterialInstancePipelineInvalidated, const MaterialInstance* /*matInstance*/, std::size_t /*passIndex*/);
|
NazaraSignal(OnMaterialInstancePipelineInvalidated, const MaterialInstance* /*matInstance*/, std::size_t /*passIndex*/);
|
||||||
NazaraSignal(OnMaterialInstanceShaderBindingInvalidated, const MaterialInstance* /*matInstance*/);
|
NazaraSignal(OnMaterialInstanceShaderBindingInvalidated, const MaterialInstance* /*matInstance*/);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -337,4 +337,28 @@ namespace Nz
|
||||||
|
|
||||||
OnTransferRequired(this);
|
OnTransferRequired(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::shared_ptr<MaterialInstance> MaterialInstance::LoadFromFile(const std::filesystem::path& filePath, const MaterialInstanceParams& params)
|
||||||
|
{
|
||||||
|
Graphics* graphics = Graphics::Instance();
|
||||||
|
NazaraAssert(graphics, "Utility module has not been initialized");
|
||||||
|
|
||||||
|
return graphics->GetMaterialInstanceLoader().LoadFromFile(filePath, params);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::shared_ptr<MaterialInstance> MaterialInstance::LoadFromMemory(const void* data, std::size_t size, const MaterialInstanceParams& params)
|
||||||
|
{
|
||||||
|
Graphics* graphics = Graphics::Instance();
|
||||||
|
NazaraAssert(graphics, "Utility module has not been initialized");
|
||||||
|
|
||||||
|
return graphics->GetMaterialInstanceLoader().LoadFromMemory(data, size, params);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::shared_ptr<MaterialInstance> MaterialInstance::LoadFromStream(Stream& stream, const MaterialInstanceParams& params)
|
||||||
|
{
|
||||||
|
Graphics* graphics = Graphics::Instance();
|
||||||
|
NazaraAssert(graphics, "Utility module has not been initialized");
|
||||||
|
|
||||||
|
return graphics->GetMaterialInstanceLoader().LoadFromStream(stream, params);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue