Cogs.Core
|
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 ResourceBase * | createInternal ()=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 () |
![]() | |
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< ResourceManagerBaseStorage > | storage |
Context * | context = 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. | |
Definition at line 14 of file ResourceManagerBase.h.
Cogs::Core::ResourceManagerBase::ResourceManagerBase | ( | Context * | context | ) |
Definition at line 128 of file ResourceManagerBase.cpp.
|
override |
Definition at line 135 of file ResourceManagerBase.cpp.
|
finalvirtual |
Implements Cogs::Core::IResourceManager.
Definition at line 414 of file ResourceManagerBase.cpp.
size_t Cogs::Core::ResourceManagerBase::allocatedResourceCount | ( | ) |
Definition at line 738 of file ResourceManagerBase.cpp.
bool Cogs::Core::ResourceManagerBase::checkPreloaded | ( | ResourceLoadInfoBase * | loadInfo | ) |
Definition at line 216 of file ResourceManagerBase.cpp.
|
overridevirtual |
Implements Cogs::Core::IResourceManager.
Reimplemented in 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 >, and Cogs::Core::ResourceManager< Texture, TextureLoadInfo >.
Definition at line 158 of file ResourceManagerBase.cpp.
void Cogs::Core::ResourceManagerBase::clearUpdated | ( | ) |
Definition at line 233 of file ResourceManagerBase.cpp.
Cogs::Core::ResourceHandleBase Cogs::Core::ResourceManagerBase::createResource | ( | ) |
Definition at line 698 of file ResourceManagerBase.cpp.
|
private |
Definition at line 705 of file ResourceManagerBase.cpp.
|
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.
resource | Pointer 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.
void Cogs::Core::ResourceManagerBase::destroyLocked | ( | ResourceBase * | resource | ) |
Definition at line 550 of file ResourceManagerBase.cpp.
void Cogs::Core::ResourceManagerBase::fillDeletionQueue | ( | std::vector< ResourceBase * > & | deletion | ) |
Definition at line 468 of file ResourceManagerBase.cpp.
Cogs::Core::ResourceHandleBase Cogs::Core::ResourceManagerBase::generateHandle | ( | ResourceBase * | resource | ) |
Definition at line 721 of file ResourceManagerBase.cpp.
std::vector< Cogs::Core::ResourceBase * > Cogs::Core::ResourceManagerBase::getAllocatedResources | ( | ) | const |
Definition at line 624 of file ResourceManagerBase.cpp.
Cogs::Core::ResourceHandleBase Cogs::Core::ResourceManagerBase::getByName | ( | std::string_view | name | ) | const |
Definition at line 666 of file ResourceManagerBase.cpp.
Cogs::Core::ResourceHandleBase Cogs::Core::ResourceManagerBase::getBySource | ( | std::string_view | source | ) | const |
Definition at line 684 of file ResourceManagerBase.cpp.
|
overridevirtual |
Get the next unique resource id.
Implements Cogs::Core::IResourceManager.
Definition at line 557 of file ResourceManagerBase.cpp.
Cogs::Core::ResourceHandleBase Cogs::Core::ResourceManagerBase::getOrCreate | ( | ResourceId | id | ) |
Definition at line 639 of file ResourceManagerBase.cpp.
|
private |
Definition at line 646 of file ResourceManagerBase.cpp.
std::string Cogs::Core::ResourceManagerBase::getReport | ( | ) |
Return a string with current resource usage.
Definition at line 179 of file ResourceManagerBase.cpp.
|
protected |
Get existing resource handle.
Definition at line 600 of file ResourceManagerBase.cpp.
References Cogs::Core::ResourceHandleBase::NoHandle.
Referenced by Cogs::Core::ResourceManager< ResourceType, LoadInfoType >::getHandle().
|
virtual |
Definition at line 246 of file ResourceManagerBase.cpp.
|
inlinevirtual |
Definition at line 113 of file ResourceManagerBase.h.
|
overridevirtual |
Implements Cogs::Core::IResourceManager.
Reimplemented in Cogs::Core::TextureManager.
Definition at line 140 of file ResourceManagerBase.cpp.
|
protected |
Check if resource handle points to.
Definition at line 613 of file ResourceManagerBase.cpp.
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.
loadInfo | A load info structure containing resource load data. |
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.
size_t Cogs::Core::ResourceManagerBase::orphanedResourceCount | ( | ) |
Definition at line 732 of file ResourceManagerBase.cpp.
|
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.
|
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.
|
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().
void Cogs::Core::ResourceManagerBase::queueResource | ( | ResourceLoadInfoBase * | loadInfo | ) |
Re-queue the given loadInfo to defer loading to the next time the processLoading() phase is performed.
loadInfo | A 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().
Cogs::Core::ResourceHandleBase Cogs::Core::ResourceManagerBase::releaseInternal | ( | ResourceId | resourceId | ) |
Releases a resourceId -> ResourceHandle mapping.
Definition at line 251 of file ResourceManagerBase.cpp.
References Cogs::Core::ResourceHandleBase::NoHandle.
void Cogs::Core::ResourceManagerBase::reportLeaks | ( | std::string_view | typeName | ) |
Definition at line 165 of file ResourceManagerBase.cpp.
|
overridevirtual |
Implements Cogs::Core::IResourceManager.
Definition at line 562 of file ResourceManagerBase.cpp.
|
overridevirtual |
Implements Cogs::Core::IResourceManager.
Definition at line 575 of file ResourceManagerBase.cpp.
void Cogs::Core::ResourceManagerBase::safeDestroy | ( | ResourceBase * | resource | ) |
Definition at line 508 of file ResourceManagerBase.cpp.
void Cogs::Core::ResourceManagerBase::setProcessed | ( | ResourceLoadInfoBase * | loadInfo, |
bool | swapping = false |
||
) |
Signal the resource being loaded as done loading and ready for activation etc.
loadInfo | Reference 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().
|
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().
|
virtual |
Definition at line 619 of file ResourceManagerBase.cpp.
|
inlinevirtual |
Reimplemented in Cogs::Core::FontManager.
Definition at line 112 of file ResourceManagerBase.h.
size_t Cogs::Core::ResourceManagerBase::updatedResourceCount | ( | ) |
Definition at line 726 of file ResourceManagerBase.cpp.
|
protected |
Definition at line 156 of file ResourceManagerBase.h.
|
protected |
Definition at line 157 of file ResourceManagerBase.h.
|
protected |
Definition at line 154 of file ResourceManagerBase.h.