Cogs.Core
Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | List of all members
Cogs::Core::ResourceManagerBase Class Referenceabstract
Inheritance diagram for Cogs::Core::ResourceManagerBase:
Cogs::Core::IResourceManager Cogs::Core::ResourceManager< Animation, AnimationLoadInfo > Cogs::Core::ResourceManager< Asset, AssetLoadInfo > Cogs::Core::ResourceManager< BlueNoise, BasicBlueNoiseLoadInfo > Cogs::Core::ResourceManager< BlueNoise, BlueNoiseLoadInfo > Cogs::Core::ResourceManager< BufferResource, BufferLoadInfo > Cogs::Core::ResourceManager< Effect, EffectLoadInfo > Cogs::Core::ResourceManager< Font, FontLoadInfo > Cogs::Core::ResourceManager< GuiDocument, GuiLoadInfo > Cogs::Core::ResourceManager< MaterialInstance, ResourceLoadInfoBase > Cogs::Core::ResourceManager< Material, MaterialLoadInfo > Cogs::Core::ResourceManager< Mesh, ResourceLoadInfoBase > Cogs::Core::ResourceManager< Model, ModelLoadInfo > Cogs::Core::ResourceManager< Sound, SoundLoadInfo > Cogs::Core::ResourceManager< Texture, TextureLoadInfo > Cogs::Core::ResourceManager< ResourceType, LoadInfoType >

Public Member Functions

 ResourceManagerBase (Context *context)
 
void initialize () override
 
void clear () override
 
void reportLeaks (std::string_view typeName)
 
std::string getReport ()
 Return a string with current resource usage.
 
bool checkPreloaded (ResourceLoadInfoBase *loadInfo)
 
ResourceHandleBase releaseInternal (ResourceId resourceId)
 Releases a resourceId -> ResourceHandle mapping.
 
ResourceHandleBase loadResourceInternal (ResourceLoadInfoBase *loadInfo)
 Load a resource using the given loadInfo.
 
void processLoading () final
 Process loading resources.
 
void setProcessed (ResourceLoadInfoBase *loadInfo, bool swapping=false)
 Signal the resource being loaded as done loading and ready for activation etc.
 
void activateResources () final
 
virtual void processDeletion () override
 Process resources pending deallocation.
 
void fillDeletionQueue (std::vector< ResourceBase * > &deletion)
 
void destroyLocked (ResourceBase *resource)
 
void safeDestroy (ResourceBase *resource)
 
ResourceId getNextResourceId () override
 Get the next unique resource id.
 
void resourceChanged (ResourceBase *resource) override
 
void resourceDeleted (ResourceBase *resource) override
 
void setResourceId (ResourceBase *resource, ResourceId id) override
 Assign the given id to a previously created resource.
 
void queueResource (ResourceLoadInfoBase *loadInfo)
 Re-queue the given loadInfo to defer loading to the next time the processLoading() phase is performed.
 
virtual void handleLoadInternal (ResourceLoadInfoBase *loadInfo)=0
 
virtual ActivationResult handleActivationInternal (ResourceHandleBase r, ResourceBase *resource)=0
 
virtual void handleDeletionInternal (ResourceBase *resource)=0
 
virtual void handleFailedLoadInternal (ResourceLoadInfoBase *loadInfo)=0
 
virtual void destroyLoadInfoInternal (ResourceLoadInfoBase *loadInfo)=0
 
virtual bool shouldAutoReload () const
 
virtual bool shouldMergeBySource () const
 
virtual void handleReload (ResourceHandleBase)
 
std::vector< ResourceBase * > getAllocatedResources () const
 
ResourceHandleBase getOrCreate (ResourceId id)
 
ResourceHandleBase getByName (std::string_view name) const
 
ResourceHandleBase getBySource (std::string_view source) const
 
ResourceHandleBase createResource ()
 
virtual ResourceBasecreateInternal ()=0
 
virtual void destroyInternal (ResourceBase *resource)=0
 
virtual void destroyInternalLocked (ResourceBase *resource)=0
 
ResourceHandleBase generateHandle (ResourceBase *resource)
 
void clearUpdated ()
 
virtual int getUpdateQuota () const
 
size_t updatedResourceCount ()
 
size_t orphanedResourceCount ()
 
size_t allocatedResourceCount ()
 
- Public Member Functions inherited from Cogs::Core::IResourceManager
virtual void initialize ()=0
 
virtual void clear ()=0
 
virtual void clearSwapping ()=0
 
virtual void processLoading ()=0
 
virtual void processSwapping ()=0
 
virtual void activateResources ()=0
 
virtual void processDeletion ()=0
 
virtual void resourceChanged (ResourceBase *resource)=0
 
virtual void resourceDeleted (ResourceBase *resource)=0
 
virtual ResourceId getNextResourceId ()=0
 
virtual void setResourceId (ResourceBase *resource, ResourceId id)=0
 

Protected Member Functions

ResourceHandleBase getResourceHandle (ResourceId id) const
 Get existing resource handle.
 
bool isValidResource (ResourceId id) const
 Check if resource handle points to.
 
virtual void postProcessLoading ()
 Hook for resource managers to run code at the tail of processLoading.
 

Protected Attributes

std::unique_ptr< ResourceManagerBaseStoragestorage
 
Contextcontext = nullptr
 
ResourceTypes resourceType = ResourceTypes::Unknown
 

Private Member Functions

ResourceHandleBase createResourceInternal ()
 
ResourceHandleBase getOrCreateInternal (ResourceId id)
 
void destroy (ResourceBase *resource)
 Destroy the given resource, freeing it's data and sub-allocations.
 

Detailed Description

Definition at line 14 of file ResourceManagerBase.h.

Constructor & Destructor Documentation

◆ ResourceManagerBase()

Cogs::Core::ResourceManagerBase::ResourceManagerBase ( Context context)

Definition at line 128 of file ResourceManagerBase.cpp.

◆ ~ResourceManagerBase()

Cogs::Core::ResourceManagerBase::~ResourceManagerBase ( )
override

Definition at line 135 of file ResourceManagerBase.cpp.

Member Function Documentation

◆ activateResources()

void Cogs::Core::ResourceManagerBase::activateResources ( )
finalvirtual

Implements Cogs::Core::IResourceManager.

Definition at line 414 of file ResourceManagerBase.cpp.

◆ allocatedResourceCount()

size_t Cogs::Core::ResourceManagerBase::allocatedResourceCount ( )

Definition at line 738 of file ResourceManagerBase.cpp.

◆ checkPreloaded()

bool Cogs::Core::ResourceManagerBase::checkPreloaded ( ResourceLoadInfoBase loadInfo)

Definition at line 216 of file ResourceManagerBase.cpp.

◆ clear()

void Cogs::Core::ResourceManagerBase::clear ( )
overridevirtual

◆ clearUpdated()

void Cogs::Core::ResourceManagerBase::clearUpdated ( )

Definition at line 233 of file ResourceManagerBase.cpp.

◆ createResource()

Cogs::Core::ResourceHandleBase Cogs::Core::ResourceManagerBase::createResource ( )

Definition at line 698 of file ResourceManagerBase.cpp.

◆ createResourceInternal()

Cogs::Core::ResourceHandleBase Cogs::Core::ResourceManagerBase::createResourceInternal ( )
private

Definition at line 705 of file ResourceManagerBase.cpp.

◆ destroy()

void Cogs::Core::ResourceManagerBase::destroy ( ResourceBase resource)
private

Destroy the given resource, freeing it's data and sub-allocations.

No memory is necessarily released by this operation. See ResourcePool::deallocate() for more details.

Custom deletion handling logic in derived resource handlers is invoked from this method, ensuring actions like notifying the renderer that a Mesh is no longer in use can be implemented where necessary.

Parameters
resourcePointer to the resource to destroy. The resource is assumed to have a reference-count of zero.

Definition at line 515 of file ResourceManagerBase.cpp.

References Cogs::StringView::empty(), Cogs::Core::ResourceBase::getSlot(), Cogs::hash(), Cogs::Core::ResourceBase::info, Cogs::Core::ResourceBase::isSet(), Cogs::Core::ResourceBase::referenceCount(), Cogs::Core::ResourceBase::setOwner(), Cogs::Core::ResourceBase::setSlot(), Cogs::Core::ResourceBase::unsetFlag(), and Cogs::Core::Watched.

◆ destroyLocked()

void Cogs::Core::ResourceManagerBase::destroyLocked ( ResourceBase resource)

Definition at line 550 of file ResourceManagerBase.cpp.

◆ fillDeletionQueue()

void Cogs::Core::ResourceManagerBase::fillDeletionQueue ( std::vector< ResourceBase * > &  deletion)

Definition at line 468 of file ResourceManagerBase.cpp.

◆ generateHandle()

Cogs::Core::ResourceHandleBase Cogs::Core::ResourceManagerBase::generateHandle ( ResourceBase resource)

Definition at line 721 of file ResourceManagerBase.cpp.

◆ getAllocatedResources()

std::vector< Cogs::Core::ResourceBase * > Cogs::Core::ResourceManagerBase::getAllocatedResources ( ) const

Definition at line 624 of file ResourceManagerBase.cpp.

◆ getByName()

Cogs::Core::ResourceHandleBase Cogs::Core::ResourceManagerBase::getByName ( std::string_view  name) const

Definition at line 666 of file ResourceManagerBase.cpp.

◆ getBySource()

Cogs::Core::ResourceHandleBase Cogs::Core::ResourceManagerBase::getBySource ( std::string_view  source) const

Definition at line 684 of file ResourceManagerBase.cpp.

◆ getNextResourceId()

ResourceId Cogs::Core::ResourceManagerBase::getNextResourceId ( )
overridevirtual

Get the next unique resource id.

Returns
A ResourceId with a unique value.

Implements Cogs::Core::IResourceManager.

Definition at line 557 of file ResourceManagerBase.cpp.

◆ getOrCreate()

Cogs::Core::ResourceHandleBase Cogs::Core::ResourceManagerBase::getOrCreate ( ResourceId  id)

Definition at line 639 of file ResourceManagerBase.cpp.

◆ getOrCreateInternal()

Cogs::Core::ResourceHandleBase Cogs::Core::ResourceManagerBase::getOrCreateInternal ( ResourceId  id)
private

Definition at line 646 of file ResourceManagerBase.cpp.

◆ getReport()

std::string Cogs::Core::ResourceManagerBase::getReport ( )

Return a string with current resource usage.

Definition at line 179 of file ResourceManagerBase.cpp.

◆ getResourceHandle()

Cogs::Core::ResourceHandleBase Cogs::Core::ResourceManagerBase::getResourceHandle ( ResourceId  id) const
protected

Get existing resource handle.

See also
getHandle

Definition at line 600 of file ResourceManagerBase.cpp.

References Cogs::Core::ResourceHandleBase::NoHandle.

Referenced by Cogs::Core::ResourceManager< ResourceType, LoadInfoType >::getHandle().

◆ getUpdateQuota()

int Cogs::Core::ResourceManagerBase::getUpdateQuota ( ) const
virtual

Definition at line 246 of file ResourceManagerBase.cpp.

◆ handleReload()

virtual void Cogs::Core::ResourceManagerBase::handleReload ( ResourceHandleBase  )
inlinevirtual

Definition at line 113 of file ResourceManagerBase.h.

◆ initialize()

void Cogs::Core::ResourceManagerBase::initialize ( )
overridevirtual

Implements Cogs::Core::IResourceManager.

Reimplemented in Cogs::Core::TextureManager.

Definition at line 140 of file ResourceManagerBase.cpp.

◆ isValidResource()

bool Cogs::Core::ResourceManagerBase::isValidResource ( ResourceId  id) const
protected

Check if resource handle points to.

Definition at line 613 of file ResourceManagerBase.cpp.

◆ loadResourceInternal()

Cogs::Core::ResourceHandleBase Cogs::Core::ResourceManagerBase::loadResourceInternal ( ResourceLoadInfoBase loadInfo)

Load a resource using the given loadInfo.

Loads a resource from the description in the load info. If needed, a new resource is allocated to place the loaded contents into. If a resource with the destination resourceId already exists, the data is loaded into the existing resource by proxy.

Parameters
loadInfoA load info structure containing resource load data.
Returns
Handle to the destination resource.

Definition at line 270 of file ResourceManagerBase.cpp.

References Cogs::Core::DoNotStoreSource, Cogs::Core::ForceUnique, Cogs::Core::ResourceLoadInfoBase::handle, Cogs::hash(), Cogs::Core::ResourceLoadInfoBase::loadFlags, Cogs::Core::ResourceLoadInfoBase::resourceFlags, Cogs::Core::ResourceLoadInfoBase::resourceId, Cogs::Core::ResourceLoadInfoBase::resourceName, Cogs::Core::ResourceLoadInfoBase::resourcePath, Cogs::Core::ResourceBase::unsetFlag(), and Cogs::Core::Watched.

◆ orphanedResourceCount()

size_t Cogs::Core::ResourceManagerBase::orphanedResourceCount ( )

Definition at line 732 of file ResourceManagerBase.cpp.

◆ postProcessLoading()

virtual void Cogs::Core::ResourceManagerBase::postProcessLoading ( )
inlineprotectedvirtual

Hook for resource managers to run code at the tail of processLoading.

Reimplemented in Cogs::Core::ModelManager, and Cogs::Core::TextureManager.

Definition at line 151 of file ResourceManagerBase.h.

◆ processDeletion()

void Cogs::Core::ResourceManagerBase::processDeletion ( )
overridevirtual

Process resources pending deallocation.

Processes resources in the orphaned queue and invokes destroy() for resources ready for destruction.

Implements Cogs::Core::IResourceManager.

Reimplemented in Cogs::Core::MeshManager, and Cogs::Core::ModelManager.

Definition at line 485 of file ResourceManagerBase.cpp.

◆ processLoading()

void Cogs::Core::ResourceManagerBase::processLoading ( )
finalvirtual

Process loading resources.

Invokes handling of resource loads for the resources currently queued for loading. Except for resources with the ResourceLoadFlags::ForceSynchronous, no guarantee is given that loading the resource will not be deferred until a later time.

Resources having their load handlers invoked will be set in the state ResourceState::Loading.

After invoking load handlers, any queued resources will be reintroduced in the loading queue.

Implements Cogs::Core::IResourceManager.

Definition at line 363 of file ResourceManagerBase.cpp.

References Cogs::Core::ResourceLoadInfoBase::handle.

Referenced by Cogs::Core::DefaultMaterial::initialize().

◆ queueResource()

void Cogs::Core::ResourceManagerBase::queueResource ( ResourceLoadInfoBase loadInfo)

Re-queue the given loadInfo to defer loading to the next time the processLoading() phase is performed.

Parameters
loadInfoA load info structure containing resource load data.

Definition at line 593 of file ResourceManagerBase.cpp.

References Cogs::Core::ResourceLoadInfoBase::handle, and Cogs::Core::ResourceBase::setFlag().

◆ releaseInternal()

Cogs::Core::ResourceHandleBase Cogs::Core::ResourceManagerBase::releaseInternal ( ResourceId  resourceId)

Releases a resourceId -> ResourceHandle mapping.

Returns
Handle to the released resource or an empty handle.

Definition at line 251 of file ResourceManagerBase.cpp.

References Cogs::Core::ResourceHandleBase::NoHandle.

◆ reportLeaks()

void Cogs::Core::ResourceManagerBase::reportLeaks ( std::string_view  typeName)

Definition at line 165 of file ResourceManagerBase.cpp.

◆ resourceChanged()

void Cogs::Core::ResourceManagerBase::resourceChanged ( ResourceBase resource)
overridevirtual

Implements Cogs::Core::IResourceManager.

Definition at line 562 of file ResourceManagerBase.cpp.

◆ resourceDeleted()

void Cogs::Core::ResourceManagerBase::resourceDeleted ( ResourceBase resource)
overridevirtual

Implements Cogs::Core::IResourceManager.

Definition at line 575 of file ResourceManagerBase.cpp.

◆ safeDestroy()

void Cogs::Core::ResourceManagerBase::safeDestroy ( ResourceBase resource)

Definition at line 508 of file ResourceManagerBase.cpp.

◆ setProcessed()

void Cogs::Core::ResourceManagerBase::setProcessed ( ResourceLoadInfoBase loadInfo,
bool  swapping = false 
)

Signal the resource being loaded as done loading and ready for activation etc.

Parameters
loadInfoReference to a load info structure containing resource load data.

Definition at line 392 of file ResourceManagerBase.cpp.

References Cogs::Core::ResourceLoadInfoBase::handle, Cogs::Core::ResourceLoadInfoBase::resourceId, and Cogs::Core::ResourceBase::unsetFlag().

◆ setResourceId()

void Cogs::Core::ResourceManagerBase::setResourceId ( ResourceBase resource,
ResourceId  id 
)
overridevirtual

Assign the given id to a previously created resource.

Implements Cogs::Core::IResourceManager.

Definition at line 584 of file ResourceManagerBase.cpp.

References Cogs::Core::ResourceBase::setId().

◆ shouldAutoReload()

bool Cogs::Core::ResourceManagerBase::shouldAutoReload ( ) const
virtual

Definition at line 619 of file ResourceManagerBase.cpp.

◆ shouldMergeBySource()

virtual bool Cogs::Core::ResourceManagerBase::shouldMergeBySource ( ) const
inlinevirtual

Reimplemented in Cogs::Core::FontManager.

Definition at line 112 of file ResourceManagerBase.h.

◆ updatedResourceCount()

size_t Cogs::Core::ResourceManagerBase::updatedResourceCount ( )

Definition at line 726 of file ResourceManagerBase.cpp.

Member Data Documentation

◆ context

Context* Cogs::Core::ResourceManagerBase::context = nullptr
protected

Definition at line 156 of file ResourceManagerBase.h.

◆ resourceType

ResourceTypes Cogs::Core::ResourceManagerBase::resourceType = ResourceTypes::Unknown
protected

Definition at line 157 of file ResourceManagerBase.h.

◆ storage

std::unique_ptr<ResourceManagerBaseStorage> Cogs::Core::ResourceManagerBase::storage
protected

Definition at line 154 of file ResourceManagerBase.h.


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