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 | |
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::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 |