Engine²
Open-source game engine written in C++.
Loading...
Searching...
No Matches
Object::Resource::ResourceManager< ResourceType > Class Template Reference

#include <ResourceManager.hpp>

Classes

struct  ResourceLoader
 ResourceLoader structure is used to load a resource from another resource or from arguments. More...

Public Member Functions

 ResourceManager ()=default
 ~ResourceManager ()=default
 ResourceManager (const ResourceManager &)=delete
ResourceManageroperator= (const ResourceManager &)=delete
 ResourceManager (ResourceManager &&) noexcept=default
ResourceManageroperator= (ResourceManager &&) noexcept=default
template<typename... Args>
entt::resource< ResourceType > Add (const entt::hashed_string &id, Args &&...args)
 Adds a resource to the manager.
ResourceType & Get (const entt::hashed_string &id)
 Get the reference to a stored resource.
const ResourceType & Get (const entt::hashed_string &id) const
 Get the reference to a stored resource.
void Remove (const entt::hashed_string &id)
 Delete an resource from the manager.
bool Contains (const entt::hashed_string &id) const
 Check whenever the resource with given id exists in the manager.
void SetDefault (ResourceType &&resource)
 Set the default resource that will be used as fallback.
template<typename... Args>
void SetDefault (Args &&...args)
ResourceType & GetDefault ()
 Get the default resource.
const ResourceType & GetDefault () const
 Get the default resource.
ResourceType & GetOrDefault (const entt::hashed_string &id)
 Get the reference to a stored resource, or the default resource if it doesn't exist.
const ResourceType & GetOrDefault (const entt::hashed_string &id) const
 Get the reference to a stored resource, or the default resource if it doesn't exist.
bool HasDefault () const
 Check if a default resource has been set.

Private Attributes

entt::resource_cache< ResourceType, ResourceLoadercache {}
std::optional< ResourceType > defaultResource = std::nullopt

Detailed Description

template<typename ResourceType>
class Object::Resource::ResourceManager< ResourceType >

ResourceManager is a simple class that store resources. It provides methods to add, get, and remove resources. It should be used to manage resources like textures, shaders, and meshes.

Constructor & Destructor Documentation

◆ ResourceManager() [1/3]

template<typename ResourceType>
Object::Resource::ResourceManager< ResourceType >::ResourceManager ( )
default

◆ ~ResourceManager()

template<typename ResourceType>
Object::Resource::ResourceManager< ResourceType >::~ResourceManager ( )
default

◆ ResourceManager() [2/3]

template<typename ResourceType>
Object::Resource::ResourceManager< ResourceType >::ResourceManager ( const ResourceManager< ResourceType > & )
delete

◆ ResourceManager() [3/3]

template<typename ResourceType>
Object::Resource::ResourceManager< ResourceType >::ResourceManager ( ResourceManager< ResourceType > && )
defaultnoexcept

Member Function Documentation

◆ Add()

template<typename ResourceType>
template<typename... Args>
entt::resource< ResourceType > Object::Resource::ResourceManager< ResourceType >::Add ( const entt::hashed_string & id,
Args &&... args )
inline

Adds a resource to the manager.

Note
If the resource already exists, it will be overwritten.
Parameters
idid of the resource
argsarguments to create the resource
Returns
the added resource

◆ Contains()

template<typename ResourceType>
bool Object::Resource::ResourceManager< ResourceType >::Contains ( const entt::hashed_string & id) const
inlinenodiscard

Check whenever the resource with given id exists in the manager.

Parameters
idid of the resource
Returns
true if the resource exists, false otherwise.

◆ Get() [1/2]

template<typename ResourceType>
ResourceType & Object::Resource::ResourceManager< ResourceType >::Get ( const entt::hashed_string & id)
inlinenodiscard

Get the reference to a stored resource.

Exceptions
ResourceManagerErrorif the resource with given id doesn't exist.
Parameters
idid of the resource to get
Returns
the wanted resource

◆ Get() [2/2]

template<typename ResourceType>
const ResourceType & Object::Resource::ResourceManager< ResourceType >::Get ( const entt::hashed_string & id) const
inlinenodiscard

Get the reference to a stored resource.

Exceptions
ResourceManagerErrorif the resource with given id doesn't exist.
Parameters
idid of the resource to get
Returns
the wanted resource

◆ GetDefault() [1/2]

template<typename ResourceType>
ResourceType & Object::Resource::ResourceManager< ResourceType >::GetDefault ( )
inlinenodiscard

Get the default resource.

Exceptions
ResourceManagerErrorif no default resource is set.
Returns
the default resource

◆ GetDefault() [2/2]

template<typename ResourceType>
const ResourceType & Object::Resource::ResourceManager< ResourceType >::GetDefault ( ) const
inlinenodiscard

Get the default resource.

Exceptions
ResourceManagerErrorif no default resource is set.
Returns
the default resource

◆ GetOrDefault() [1/2]

template<typename ResourceType>
ResourceType & Object::Resource::ResourceManager< ResourceType >::GetOrDefault ( const entt::hashed_string & id)
inlinenodiscard

Get the reference to a stored resource, or the default resource if it doesn't exist.

Exceptions
ResourceManagerErrorif the resource with given id doesn't exist and no default is set.
Parameters
idid of the resource to get
Returns
the wanted resource, or the default resource if the requested one doesn't exist

◆ GetOrDefault() [2/2]

template<typename ResourceType>
const ResourceType & Object::Resource::ResourceManager< ResourceType >::GetOrDefault ( const entt::hashed_string & id) const
inlinenodiscard

Get the reference to a stored resource, or the default resource if it doesn't exist.

Exceptions
ResourceManagerErrorif the resource with given id doesn't exist and no default is set.
Parameters
idid of the resource to get
Returns
the wanted resource, or the default resource if the requested one doesn't exist

◆ HasDefault()

template<typename ResourceType>
bool Object::Resource::ResourceManager< ResourceType >::HasDefault ( ) const
inlinenodiscard

Check if a default resource has been set.

Returns
true if a default resource is set, false otherwise

◆ operator=() [1/2]

template<typename ResourceType>
ResourceManager & Object::Resource::ResourceManager< ResourceType >::operator= ( const ResourceManager< ResourceType > & )
delete

◆ operator=() [2/2]

template<typename ResourceType>
ResourceManager & Object::Resource::ResourceManager< ResourceType >::operator= ( ResourceManager< ResourceType > && )
defaultnoexcept

◆ Remove()

template<typename ResourceType>
void Object::Resource::ResourceManager< ResourceType >::Remove ( const entt::hashed_string & id)
inline

Delete an resource from the manager.

Parameters
idid of the resource to delete

◆ SetDefault() [1/2]

template<typename ResourceType>
template<typename... Args>
void Object::Resource::ResourceManager< ResourceType >::SetDefault ( Args &&... args)
inline

◆ SetDefault() [2/2]

template<typename ResourceType>
void Object::Resource::ResourceManager< ResourceType >::SetDefault ( ResourceType && resource)
inline

Set the default resource that will be used as fallback.

Note
The resource with the given id must already exist in the manager.
Exceptions
ResourceManagerErrorif the resource with given id doesn't exist.
Parameters
idid of the resource to use as default

Member Data Documentation

◆ cache

template<typename ResourceType>
entt::resource_cache<ResourceType, ResourceLoader> Object::Resource::ResourceManager< ResourceType >::cache {}
private

◆ defaultResource

template<typename ResourceType>
std::optional<ResourceType> Object::Resource::ResourceManager< ResourceType >::defaultResource = std::nullopt
private

The documentation for this class was generated from the following file: