XII Release 0.1.0
Loading...
Searching...
No Matches
xiiResourceLoaderFromMemory Class Reference

A resource loader that is mainly used to update a resource on the fly with custom data, e.g. in an editor. More...

#include <ResourceTypeLoader.h>

Inheritance diagram for xiiResourceLoaderFromMemory:
[legend]

Public Member Functions

virtual xiiResourceLoadData OpenDataStream (const xiiResource *pResource) override
 Override this function to implement the resource loading.
 
virtual void CloseDataStream (const xiiResource *pResource, const xiiResourceLoadData &loaderData) override
 This function is called when the resource has been updated with the data from the resource loader and the loader can deallocate any temporary memory.
 
virtual bool IsResourceOutdated (const xiiResource *pResource) const override
 If this function returns true, a resource is unloaded and loaded again to update its content.
 

Public Attributes

xiiString m_sResourceDescription
 
xiiTimestamp m_ModificationTimestamp
 
xiiDefaultMemoryStreamStorage m_CustomData
 

Detailed Description

A resource loader that is mainly used to update a resource on the fly with custom data, e.g. in an editor.

Use like this: Allocate a xiiResourceLoaderFromMemory instance on the heap, using XII_DEFAULT_NEW and store the result in a xiiUniquePtr<xiiResourceTypeLoader>. Then set the description, the modification time (simply use xiiTimestamp::CurrentTimestamp()), and the custom data. Use a xiiMemoryStreamWriter to write your custom data. Make sure to write EXACTLY the same format that the targeted resource type would read, including all data that would typically be written by outside code, e.g. the default xiiResourceLoaderFromFile additionally writes the path to the resource at the start of the stream. If such data is usually present in the stream, you must write this yourself. Then call xiiResourceManager::UpdateResourceWithCustomLoader(), specify the target resource and std::move your created loader in there.

Member Function Documentation

◆ CloseDataStream()

void xiiResourceLoaderFromMemory::CloseDataStream ( const xiiResource * pResource,
const xiiResourceLoadData & loaderData )
overridevirtual

This function is called when the resource has been updated with the data from the resource loader and the loader can deallocate any temporary memory.

Implements xiiResourceTypeLoader.

◆ IsResourceOutdated()

bool xiiResourceLoaderFromMemory::IsResourceOutdated ( const xiiResource * pResource) const
overridevirtual

If this function returns true, a resource is unloaded and loaded again to update its content.

Call xiiResource::GetLoadedFileModificationTime() to query the file modification time that was returned through xiiResourceLoadData::m_LoadedFileModificationDate.

Reimplemented from xiiResourceTypeLoader.

◆ OpenDataStream()

xiiResourceLoadData xiiResourceLoaderFromMemory::OpenDataStream ( const xiiResource * pResource)
overridevirtual

Override this function to implement the resource loading.

This function should take the information from pResource, e.g. which file to load, and do the loading work. It should allocate temporary storage for the loaded data and encode it in a memory stream, such that the resource can read all necessary information from the stream.

See also
xiiResourceLoadData

Implements xiiResourceTypeLoader.


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