26 lines
651 B
C++
26 lines
651 B
C++
#pragma once
|
|
|
|
#include <Nazara/Core/AssetDescriptor.hpp>
|
|
|
|
namespace Nz
|
|
{
|
|
template <typename TResource>
|
|
class Asset final
|
|
{
|
|
public:
|
|
const std::shared_ptr<TResource>& Get() const { return m_resource; }
|
|
explicit operator bool() const noexcept { return !!m_resource; }
|
|
|
|
TResource& operator*() { return *m_resource.get(); }
|
|
const TResource& operator*() const { return *m_resource.get(); }
|
|
TResource* operator->() { return m_resource.get(); }
|
|
const TResource* operator->() const { return m_resource.get(); }
|
|
|
|
protected:
|
|
AssetDescriptor<TResource> m_descriptor;
|
|
std::shared_ptr<TResource> m_resource;
|
|
|
|
friend class AssetCatalog;
|
|
};
|
|
}
|