|
Nebula
|
#include <resourceloader.h>
Inherits Core::RefCounted.
Inherited by Characters::SkeletonLoader, CoreAnimation::AnimationLoader, CoreGraphics::MeshLoader, CoreGraphics::ShaderLoader, CoreGraphics::TextureLoader, Materials::MaterialLoader, Models::ModelLoader, and Physics::StreamActorPool.
Classes | |
| struct | _Callbacks |
| callback functions to run when an associated resource is loaded (can be stacked) More... | |
| struct | _LoadMetaData |
| struct | _PendingResourceLoad |
| struct for pending resources which are about to be loaded More... | |
| struct | _PendingResourceUnload |
| struct | _PendingStreamLod |
| struct for pending stream More... | |
| struct | _PlaceholderResource |
| struct | _StreamData |
| struct | LoadState |
| struct | ResourceInitOutput |
| struct | ResourceLoadJob |
| struct | ResourceLoadOutput |
| struct | ResourceStreamOutput |
Public Member Functions | |
| ResourceLoader () | |
| constructor | |
| virtual | ~ResourceLoader () |
| destructor | |
| virtual void | Setup () |
| setup resource loader, initiates the placeholder and error resources if valid, so don't forget to run! | |
| virtual void | Discard () |
| discard resource loader | |
| virtual void | LoadFallbackResources () |
| load placeholder and error resources | |
| void | ClearPendingUnloads () |
| clear pending unloads | |
| Resources::ResourceId | CreateResource (const Resources::ResourceName &res, const void *loadInfo, SizeT loadInfoSize, const Util::StringAtom &tag, std::function< void(const Resources::ResourceId)> success, std::function< void(const Resources::ResourceId)> failed, bool immediate, bool stream) |
| create a container with a tag associated with it, if no tag is provided, the resource will be untagged | |
| void | DiscardResource (const Resources::ResourceId id) |
| discard container | |
| void | DiscardByTag (const Util::StringAtom &tag) |
| discard all resources associated with a tag | |
| void | CreateListener (const Resources::ResourceId res, std::function< void(const Resources::ResourceId)> success, std::function< void(const Resources::ResourceId)> failed) |
| Create new listener on resource. | |
| const Resources::ResourceName & | GetName (const Resources::ResourceId id) const |
| get resource name | |
| const uint32_t | GetUsage (const Resources::ResourceId id) const |
| get resource usage from resource id | |
| const Util::StringAtom | GetTag (const Resources::ResourceId id) const |
| get resource tag was first registered with | |
| const Resource::State | GetState (const Resources::ResourceId id) const |
| get resource state | |
| const Resources::ResourceId | GetId (const Resources::ResourceName &name) const |
| get resource id by name, use with care | |
| const Util::Dictionary< Resources::ResourceName, Ids::Id32 > & | GetResources () const |
| get the dictionary of all resource-id pairs | |
| const bool | HasResource (const Resources::ResourceId id) const |
| returns true if pool has resource | |
| const int32_t & | GetUniqueId () const |
| get the global identifier for this pool | |
| void | ReloadResource (const Resources::ResourceName &res, std::function< void(const Resources::ResourceId)> success, std::function< void(const Resources::ResourceId)> failed) |
| reload resource using resource name | |
| void | ReloadResource (const Resources::ResourceId &id, std::function< void(const Resources::ResourceId)> success, std::function< void(const Resources::ResourceId)> failed) |
| reload resource using resource id | |
| void | SetMinLod (const Resources::ResourceId &id, const float lod, bool immediate) |
| begin updating a resources lod | |
Public Member Functions inherited from Core::RefCounted | |
| RefCounted () | |
| constructor | |
| int | GetRefCount () const |
| get the current refcount | |
| void | AddRef () |
| increment refcount by one | |
| void | Release () |
| decrement refcount and destroy object if refcount is zero | |
| bool | IsInstanceOf (const Rtti &rtti) const |
| return true if this object is instance of given class | |
| bool | IsInstanceOf (const Util::String &className) const |
| return true if this object is instance of given class by string | |
| bool | IsInstanceOf (const Util::FourCC &classFourCC) const |
| return true if this object is instance of given class by fourcc | |
| bool | IsA (const Rtti &rtti) const |
| return true if this object is instance of given class, or a derived class | |
| bool | IsA (const Util::String &rttiName) const |
| return true if this object is instance of given class, or a derived class, by string | |
| bool | IsA (const Util::FourCC &rttiFourCC) const |
| return true if this object is instance of given class, or a derived class, by fourcc | |
| const Util::String & | GetClassName () const |
| get the class name | |
| Util::FourCC | GetClassFourCC () const |
| get the class FourCC code | |
Protected Member Functions | |
| virtual void | UpdateLoaderSyncState () |
| Update loader internal state. | |
| virtual ResourceInitOutput | InitializeResource (const ResourceLoadJob &job, const Ptr< IO::Stream > &stream)=0 |
| Initialize and create the resource, optionally load if no subresource management is necessary. | |
| virtual ResourceStreamOutput | StreamResource (const ResourceLoadJob &job) |
| Stream resource. | |
| virtual Resource::State | ReloadFromStream (const Resources::ResourceId id, const Ptr< IO::Stream > &stream) |
| perform a reload | |
| virtual uint | LodMask (const _StreamData &stream, float lod, bool async) const |
| Create load mask based on LOD. This will be used to determine if the resoure is fully loaded. | |
| virtual void | RequestLOD (const Ids::Id32 entry, float lod) const |
| Set lod factor for resource. | |
| virtual void | Unload (const Resources::ResourceId id)=0 |
| unload resource (overload to implement resource deallocation) | |
| virtual void | Update (IndexT frameIndex) |
| update the resource loader, this is done every frame | |
| void | SetupIdFromEntry (const Ids::Id32 entry, ResourceId &cacheEntry) |
| Construct resource ID based on loader entry. | |
| void | RunCallbacks (Resource::State status, const Resources::ResourceId id) |
| run callbacks | |
| void | EnqueueJob (const std::function< void()> &func) |
| Issue async job. | |
| Resources::ResourceId | GetPlaceholder (const Resources::ResourceName &name) |
| get placeholder based on resource name | |
Protected Member Functions inherited from Core::RefCounted | |
| virtual | ~RefCounted () |
| destructor (called when refcount reaches zero) | |
Static Protected Attributes | |
| static const uint32_t | ResourceIndexGrow = 512 |
Private Member Functions | |
| __DeclareAbstractClass (ResourceLoader) | |
Friends | |
| class | ResourceServer |
| void | ApplyLoadOutput (ResourceLoader *loader, const ResourceLoader::ResourceLoadOutput &output) |
| void | DispatchJob (ResourceLoader *loader, const ResourceLoader::ResourceLoadJob &job) |
| ResourceLoadOutput | _LoadInternal (ResourceLoader *loader, ResourceLoader::ResourceLoadJob job) |
Additional Inherited Members | |
Static Public Member Functions inherited from Core::RefCounted | |
| static void | DumpRefCountingLeaks () |
| dump refcounting leaks, call at end of application (NEBULA_DEBUG builds only!) | |
| Resources::ResourceLoader::ResourceLoader | ( | ) |
constructor
|
virtual |
destructor
|
private |
| void Resources::ResourceLoader::ClearPendingUnloads | ( | ) |
clear pending unloads
| void Resources::ResourceLoader::CreateListener | ( | const Resources::ResourceId | res, |
| std::function< void(const Resources::ResourceId)> | success, | ||
| std::function< void(const Resources::ResourceId)> | failed ) |
Create new listener on resource.
| Resources::ResourceId Resources::ResourceLoader::CreateResource | ( | const Resources::ResourceName & | res, |
| const void * | loadInfo, | ||
| SizeT | loadInfoSize, | ||
| const Util::StringAtom & | tag, | ||
| std::function< void(const Resources::ResourceId)> | success, | ||
| std::function< void(const Resources::ResourceId)> | failed, | ||
| bool | immediate, | ||
| bool | stream ) |
create a container with a tag associated with it, if no tag is provided, the resource will be untagged
|
virtual |
discard resource loader
| void Resources::ResourceLoader::DiscardByTag | ( | const Util::StringAtom & | tag | ) |
discard all resources associated with a tag
| void Resources::ResourceLoader::DiscardResource | ( | const Resources::ResourceId | id | ) |
discard container
|
protected |
Issue async job.
|
inline |
get resource id by name, use with care
|
inline |
get resource name
|
protected |
get placeholder based on resource name
|
inline |
get the dictionary of all resource-id pairs
|
inline |
get resource state
|
inline |
get resource tag was first registered with
|
inline |
get the global identifier for this pool
|
inline |
get resource usage from resource id
|
inline |
returns true if pool has resource
|
protectedpure virtual |
Initialize and create the resource, optionally load if no subresource management is necessary.
Implemented in Characters::SkeletonLoader, CoreAnimation::AnimationLoader, CoreGraphics::MeshLoader, CoreGraphics::ShaderLoader, CoreGraphics::TextureLoader, Materials::MaterialLoader, Models::ModelLoader, and Physics::StreamActorPool.
|
virtual |
load placeholder and error resources
|
protectedvirtual |
Create load mask based on LOD. This will be used to determine if the resoure is fully loaded.
Reimplemented in CoreGraphics::MeshLoader, CoreGraphics::TextureLoader, and Models::ModelLoader.
|
protectedvirtual |
perform a reload
Reimplemented in CoreGraphics::ShaderLoader.
| void Resources::ResourceLoader::ReloadResource | ( | const Resources::ResourceId & | id, |
| std::function< void(const Resources::ResourceId)> | success, | ||
| std::function< void(const Resources::ResourceId)> | failed ) |
reload resource using resource id
| void Resources::ResourceLoader::ReloadResource | ( | const Resources::ResourceName & | res, |
| std::function< void(const Resources::ResourceId)> | success, | ||
| std::function< void(const Resources::ResourceId)> | failed ) |
reload resource using resource name
|
protectedvirtual |
Set lod factor for resource.
|
protected |
run callbacks
Run all callbacks pending on a resource, must be within the critical section!
| void Resources::ResourceLoader::SetMinLod | ( | const Resources::ResourceId & | id, |
| const float | lod, | ||
| bool | immediate ) |
begin updating a resources lod
|
virtual |
setup resource loader, initiates the placeholder and error resources if valid, so don't forget to run!
Reimplemented in Materials::MaterialLoader, Models::ModelLoader, and Physics::StreamActorPool.
|
protected |
Construct resource ID based on loader entry.
|
protectedvirtual |
Stream resource.
Reimplemented in CoreGraphics::MeshLoader, CoreGraphics::TextureLoader, and Models::ModelLoader.
|
protectedpure virtual |
unload resource (overload to implement resource deallocation)
Implemented in Characters::SkeletonLoader, CoreAnimation::AnimationLoader, CoreGraphics::MeshLoader, CoreGraphics::ShaderLoader, CoreGraphics::TextureLoader, Materials::MaterialLoader, Models::ModelLoader, and Physics::StreamActorPool.
|
protectedvirtual |
update the resource loader, this is done every frame
|
protectedvirtual |
Update loader internal state.
Reimplemented in CoreGraphics::MeshLoader, and CoreGraphics::TextureLoader.
|
friend |
Enqueue resource load output
|
friend |
|
friend |
|
friend |
|
protected |
|
protected |
async section to sync callbacks and pending list with thread
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
these types need to be properly initiated in a subclass Setup function
|
protected |
|
protected |
|
protected |
|
staticprotected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
id in resource manager
|
protected |
|
protected |