Helios Engine
A modular ECS based data-oriented C++23 game engine framework
Loading...
Searching...
No Matches
helios::ecs::ResourceManager Class Reference

Resource manager for storing and managing resources of various types. More...

#include <manager.hpp>

Public Member Functions

 ResourceManager ()=default
 ResourceManager (const ResourceManager &)=default
 ResourceManager (ResourceManager &&) noexcept=default
 ~ResourceManager ()=default
ResourceManageroperator= (const ResourceManager &)=default
ResourceManageroperator= (ResourceManager &&) noexcept=default
void Clear ()
 Clears all resources, destroying stored values and removing all entries.
template<ResourceTrait T>
void Insert (T &&resource)
 Inserts a new resource.
template<ResourceTrait... Ts>
requires utils::UniqueTypes<Ts...> && (sizeof...(Ts) > 1)
void Insert (Ts &&... resources)
 Inserts multiple resources.
template<ResourceTrait T>
bool TryInsert (T &&resource)
 Tries to insert resource if not present.
template<ResourceTrait... Ts>
requires utils::UniqueTypes<Ts...> && (sizeof...(Ts) > 1)
auto TryInsert (Ts &&... resources) -> std::array< bool, sizeof...(Ts)>
 Tries to insert resources if not present.
template<ResourceTrait T, typename... Args>
requires std::constructible_from<T, Args...>
void Emplace (Args &&... args)
 Emplaces a new resource in-place.
template<ResourceTrait T, typename... Args>
requires std::constructible_from<T, Args...>
bool TryEmplace (Args &&... args)
 Tries to emplace a resource if not present.
template<ResourceTrait T>
void Remove ()
 Removes a resource.
template<ResourceTrait T>
bool TryRemove ()
 Tries to remove a resource.
template<ResourceTrait T>
T & Get () noexcept
 Gets mutable reference to a resource.
template<ResourceTrait T>
const T & Get () const noexcept
 Gets const reference to a resource.
template<ResourceTrait T>
T * TryGet () noexcept
 Tries to get mutable pointer to a resource.
template<ResourceTrait T>
const T * TryGet () const noexcept
 Tries to get const pointer to a resource.
template<ResourceTrait T>
bool Has () const noexcept
 Checks if a resource exists.
size_t Count () const noexcept
 Gets the number of stored resources.

Detailed Description

Resource manager for storing and managing resources of various types.

Stores resources inline using MultiTypeMap<TypedBuffer>.

Note
Not thread-safe.

Definition at line 21 of file manager.hpp.

Constructor & Destructor Documentation

◆ ResourceManager() [1/3]

helios::ecs::ResourceManager::ResourceManager ( )
default

◆ ResourceManager() [2/3]

helios::ecs::ResourceManager::ResourceManager ( const ResourceManager & )
default

◆ ResourceManager() [3/3]

helios::ecs::ResourceManager::ResourceManager ( ResourceManager && )
defaultnoexcept

◆ ~ResourceManager()

helios::ecs::ResourceManager::~ResourceManager ( )
default

Member Function Documentation

◆ Clear()

void helios::ecs::ResourceManager::Clear ( )
inline

Clears all resources, destroying stored values and removing all entries.

Definition at line 33 of file manager.hpp.

◆ Count()

size_t helios::ecs::ResourceManager::Count ( ) const
inlinenodiscardnoexcept

Gets the number of stored resources.

Returns
Resource count

Definition at line 165 of file manager.hpp.

◆ Emplace()

template<ResourceTrait T, typename... Args>
requires std::constructible_from<T, Args...>
void helios::ecs::ResourceManager::Emplace ( Args &&... args)
inline

Emplaces a new resource in-place.

Constructs resource directly in storage.

Template Parameters
TResource type
ArgsConstructor argument types
Parameters
argsArguments to forward to resource constructor

Definition at line 194 of file manager.hpp.

◆ Get() [1/2]

template<ResourceTrait T>
const T & helios::ecs::ResourceManager::Get ( ) const
inlinenodiscardnoexcept

Gets const reference to a resource.

Warning
Triggers assertion if resource doesn't exist.
Template Parameters
TResource type
Returns
Const reference to resource

Definition at line 225 of file manager.hpp.

◆ Get() [2/2]

template<ResourceTrait T>
T & helios::ecs::ResourceManager::Get ( )
inlinenodiscardnoexcept

Gets mutable reference to a resource.

Warning
Triggers assertion if resource doesn't exist.
Template Parameters
TResource type
Returns
Mutable reference to resource

Definition at line 217 of file manager.hpp.

◆ Has()

template<ResourceTrait T>
bool helios::ecs::ResourceManager::Has ( ) const
inlinenodiscardnoexcept

Checks if a resource exists.

Template Parameters
TResource type
Returns
True if resource exists, false otherwise

Definition at line 157 of file manager.hpp.

◆ Insert() [1/2]

template<ResourceTrait T>
void helios::ecs::ResourceManager::Insert ( T && resource)
inline

Inserts a new resource.

Replaces existing resource if present.

Template Parameters
TResource type
Parameters
resourceResource to insert

Definition at line 175 of file manager.hpp.

◆ Insert() [2/2]

template<ResourceTrait... Ts>
requires utils::UniqueTypes<Ts...> && (sizeof...(Ts) > 1)
void helios::ecs::ResourceManager::Insert ( Ts &&... resources)
inline

Inserts multiple resources.

Replaces existing resources if present.

Template Parameters
TsResource types, must be unique and non-empty
Parameters
resourcesResources to insert

Definition at line 52 of file manager.hpp.

◆ operator=() [1/2]

ResourceManager & helios::ecs::ResourceManager::operator= ( const ResourceManager & )
default

◆ operator=() [2/2]

ResourceManager & helios::ecs::ResourceManager::operator= ( ResourceManager && )
defaultnoexcept

◆ Remove()

template<ResourceTrait T>
void helios::ecs::ResourceManager::Remove ( )
inline

Removes a resource.

Warning
Triggers assertion if resource doesn't exist.
Template Parameters
TResource type

Definition at line 211 of file manager.hpp.

◆ TryEmplace()

template<ResourceTrait T, typename... Args>
requires std::constructible_from<T, Args...>
bool helios::ecs::ResourceManager::TryEmplace ( Args &&... args)
inline

Tries to emplace a resource if not present.

Template Parameters
TResource type
ArgsConstructor argument types
Parameters
argsArguments to forward to resource constructor
Returns
True if emplaced, false if resource already exists

Definition at line 201 of file manager.hpp.

◆ TryGet() [1/2]

template<ResourceTrait T>
const T * helios::ecs::ResourceManager::TryGet ( ) const
inlinenodiscardnoexcept

Tries to get const pointer to a resource.

Template Parameters
TResource type
Returns
Const pointer to resource, or nullptr if not found

Definition at line 242 of file manager.hpp.

◆ TryGet() [2/2]

template<ResourceTrait T>
T * helios::ecs::ResourceManager::TryGet ( )
inlinenodiscardnoexcept

Tries to get mutable pointer to a resource.

Template Parameters
TResource type
Returns
Pointer to resource, or nullptr if not found

Definition at line 233 of file manager.hpp.

◆ TryInsert() [1/2]

template<ResourceTrait T>
bool helios::ecs::ResourceManager::TryInsert ( T && resource)
inline

Tries to insert resource if not present.

Template Parameters
TResource type
Parameters
resourceResource to insert
Returns
True if inserted, false if resource already exists

Definition at line 182 of file manager.hpp.

◆ TryInsert() [2/2]

template<ResourceTrait... Ts>
requires utils::UniqueTypes<Ts...> && (sizeof...(Ts) > 1)
auto helios::ecs::ResourceManager::TryInsert ( Ts &&... resources) -> std::array< bool, sizeof...(Ts)>
inline

Tries to insert resources if not present.

Template Parameters
TsResource types, must be unique and non-empty
Parameters
resourcesResources to insert
Returns
True if inserted, false if resource already exists

Definition at line 73 of file manager.hpp.

◆ TryRemove()

template<ResourceTrait T>
bool helios::ecs::ResourceManager::TryRemove ( )
inline

Tries to remove a resource.

Template Parameters
TResource type
Returns
True if removed, false if resource didn't exist

Definition at line 113 of file manager.hpp.