|
Cogs.Core
|
Model manager responsible for loading, processing and lifetime for Model resources. More...
#include <ModelManager.h>
Classes | |
| struct | FetchedItem |
Public Member Functions | |
| ModelManager (Context *context) | |
| Constructs a ModelManager in the given context. | |
| ~ModelManager () | |
| Destructs the ModelManager. | |
| ModelHandle | loadModel (const StringView &resourceName, ResourceId resourceId, ModelLoadFlags flags) |
| Load a Model resource from the named resource given. | |
| void | cancelModelLoad (ModelHandle handle) |
| void | handleLoad (ModelLoadInfo *loadInfo) override |
| Overridden to handle loading Model resources. | |
| void | handleReload (ResourceHandleBase handle) override |
| void | processDeletion () override |
| Process resources pending deallocation. | |
| void | handleDeletion (Model *model) override |
| Handler for deletion of resources. | |
| void | destroyInternal (ResourceBase *resource) override |
Public Member Functions inherited from Cogs::Core::ResourceManager< Model, ModelLoadInfo > | |
| ResourceManager (Context *context, Collections::ElementOffset capacity=1024) | |
| Constructs a resource manager with the given context. | |
| ~ResourceManager () override | |
| Destructs a resource manager, provided for destruction via base pointer. | |
| void | clear () override |
| Clear the resource manager, cleaning up resources held by member handles. | |
| void | clearSwapping () override |
| Clear the swap queue, ensuring indirect resource references are released. | |
| ResourceHandle | create () |
| Create a new resource. | |
| ResourceHandle | release (ResourceId resourceId) |
| ResourceHandle | loadResource (ModelLoadInfo *loadInfo) |
| ResourceProxy | createLocked () |
| Creates a new resource, but returns a ResourceProxy for thread safe editing instead of a handle to the actual resource. | |
| ResourceProxy | lock (const ResourceHandle &handle) |
| Takes the handle given and returns a resource proxy to edit the contents of the held resource safely on other threads than the main thread. | |
| void | unlockProxy (const ResourceHandle &handle, const ResourceHandle &proxy) |
| Unlock the given resource proxy. | |
| ResourceHandle | generateHandle (ResourceBase *resource) |
| Generate a handle to the given resource. | |
| virtual void | handleLoad (ModelLoadInfo *) |
| Handler for resource loading. | |
| virtual void | handleFailedLoad (const ModelLoadInfo *) |
| Handler for failed resource loads using the given loadInfo. | |
| virtual ActivationResult | handleActivation (ResourceHandle, Model *) |
| Handler for activation of resources. | |
| virtual void | handleDeletion (Model *) |
| Handler for deletion of resources. | |
| Model * | get (const ResourceHandleBase &handle) |
| Resolve the given handle to a resource. | |
| void | processSwapping () override |
| Process queued swap operations, exchanging resource contents of the destination resources by those indicated in the operation data. | |
| ResourceHandle | getHandle (const ResourceId id) const |
| Get a resource handle to the resource with the given id. | |
| void | registerLoader (IResourceLoader< Model, ModelLoadInfo > *loader) |
| Register a resource loader capable of handling resources of the template type. | |
| void | destroyLoadInfoInternal (ResourceLoadInfoBase *loadInfo) override |
| ModelLoadInfo * | createLoadInfo () |
Public Member Functions inherited from Cogs::Core::ResourceManagerBase | |
| 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 | |
| void | postProcessLoading () override final |
| Hook for resource managers to run code at the tail of processLoading. | |
Protected Member Functions inherited from Cogs::Core::ResourceManager< Model, ModelLoadInfo > | |
| Model * | createInternal () override |
| void | destroyInternal (ResourceBase *resource) override |
| void | handleLoadInternal (ResourceLoadInfoBase *loadInfo) override |
| ActivationResult | handleActivationInternal (ResourceHandleBase r, ResourceBase *resource) override |
| void | handleDeletionInternal (ResourceBase *resource) override |
| void | handleFailedLoadInternal (ResourceLoadInfoBase *loadInfo) override |
| IResourceLoader< Model, ModelLoadInfo > * | findLoader (const ModelLoadInfo *loadInfo) |
| Find a loader capable of loading the resource given by loadInfo. | |
Protected Member Functions inherited from Cogs::Core::ResourceManagerBase | |
| 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. | |
Private Member Functions | |
| bool | processFetchedItem (ILoadedModelLoader *loadedLoader, ModelLoadInfo *loadInfo, std::unique_ptr< FileContents > data) |
Private Attributes | |
| std::thread::id | main |
| std::unique_ptr< struct ModelManagerData > | data |
| std::queue< FetchedItem > | fetchedItems |
| struct { | |
| Cogs::Mutex lock | |
| std::map< size_t, DataFetcherManager::FetchId > map | |
| } | fetchIds |
Additional Inherited Members | |
Public Types inherited from Cogs::Core::ResourceManager< Model, ModelLoadInfo > | |
| using | ResourceHandle = ResourceHandle_t< Model > |
| Type of handle used to hold resources. | |
| using | ResourceProxy = ResourceProxy< Model, ResourceManager > |
| Type of resource proxy objects, specialized on the type of resource. | |
Protected Attributes inherited from Cogs::Core::ResourceManager< Model, ModelLoadInfo > | |
| Mutex | swapMutex |
| Collections::Pool< Model > | resources |
| std::vector< IResourceLoader< Model, ModelLoadInfo > * > | loaders |
| std::deque< SwapOperation > | swapQueue |
| ResourceHandle | defaultResource |
Protected Attributes inherited from Cogs::Core::ResourceManagerBase | |
| std::unique_ptr< ResourceManagerBaseStorage > | storage |
| Context * | context = nullptr |
| ResourceTypes | resourceType = ResourceTypes::Unknown |
Model manager responsible for loading, processing and lifetime for Model resources.
Definition at line 25 of file ModelManager.h.
| Cogs::Core::ModelManager::ModelManager | ( | Context * | context | ) |
Constructs a ModelManager in the given context.
Definition at line 41 of file ModelManager.cpp.
References Cogs::Core::TaskManager::ResourceQueue, Cogs::Core::Context::taskManager, and Cogs::Core::Context::variables.
| Cogs::Core::ModelManager::~ModelManager | ( | ) |
Destructs the ModelManager.
Definition at line 54 of file ModelManager.cpp.
| void Cogs::Core::ModelManager::cancelModelLoad | ( | ModelHandle | handle | ) |
Definition at line 338 of file ModelManager.cpp.
|
overridevirtual |
Implements Cogs::Core::ResourceManagerBase.
Definition at line 406 of file ModelManager.cpp.
|
overridevirtual |
Handler for deletion of resources.
Should be overridden by derived resource managers to handle resource deletion, for example Textures needing to be removed from the renderer when the texture is no longer used by any materials or fonts.
This handler is invoked for all orphaned resources during the processDeletion() processing phase.
processDeletion() will invoke the destroy() function, which in turn invokes the deletion handler.
| resource | Pointer to the resource being deleted. |
Reimplemented from Cogs::Core::ResourceManager< Model, ModelLoadInfo >.
Definition at line 397 of file ModelManager.cpp.
References Cogs::Core::ResourceManager< ResourceType, LoadInfoType >::handleDeletion().
|
overridevirtual |
Overridden to handle loading Model resources.
Reimplemented from Cogs::Core::ResourceManager< Model, ModelLoadInfo >.
Definition at line 152 of file ModelManager.cpp.
References Cogs::BrotliDecompress, Cogs::Core::ResourceLoadInfoBase::handle, Cogs::hash(), Cogs::StringView::hashLowercase(), Cogs::Core::ResourceBase::referenceCount(), Cogs::Core::ResourceLoadInfoBase::resourceName, Cogs::Core::ResourceLoadInfoBase::resourcePath, Cogs::Core::TaskManager::ResourceQueue, and Cogs::ZStdDecompress.
|
overridevirtual |
Reimplemented from Cogs::Core::ResourceManagerBase.
Definition at line 355 of file ModelManager.cpp.
| Cogs::Core::ModelHandle Cogs::Core::ModelManager::loadModel | ( | const StringView & | resourceName, |
| ResourceId | resourceId, | ||
| ModelLoadFlags | flags | ||
| ) |
Load a Model resource from the named resource given.
| resourceName | Named resource to load from disk or cached file contents in ResourceStore. |
| resourceId | Resource identifier to assign to the resource. If a resource with the given id already exists, the contents of the existing resource will be replaced with the loaded model. |
| flags | Flags used to control loading behavior. |
Definition at line 64 of file ModelManager.cpp.
References Cogs::Core::ResourceLoadInfoBase::loadFlags, Cogs::Core::ResourceLoadInfoBase::resourceId, Cogs::Core::ResourceLoadInfoBase::resourcePath, and Cogs::StringView::to_string().
|
finaloverrideprotectedvirtual |
Hook for resource managers to run code at the tail of processLoading.
Reimplemented from Cogs::Core::ResourceManagerBase.
Definition at line 79 of file ModelManager.cpp.
|
overridevirtual |
Process resources pending deallocation.
Processes resources in the orphaned queue and invokes destroy() for resources ready for destruction.
Reimplemented from Cogs::Core::ResourceManagerBase.
Definition at line 369 of file ModelManager.cpp.
|
private |
Definition at line 114 of file ModelManager.cpp.
|
private |
Definition at line 69 of file ModelManager.h.
|
private |
Definition at line 78 of file ModelManager.h.
| Cogs::Mutex Cogs::Core::ModelManager::lock |
Definition at line 81 of file ModelManager.h.
|
private |
Definition at line 64 of file ModelManager.h.
| std::map<size_t, DataFetcherManager::FetchId> Cogs::Core::ModelManager::map |
Definition at line 82 of file ModelManager.h.