CeresEngine 0.2.0
A game development framework
Loading...
Searching...
No Matches
CeresEngine::ResourceData Class Referenceabstract

An object, provided by the resource manager, to view and alter data from the resource itself. More...

#include <CeresEngine/Resource/Resource.hpp>

Inheritance diagram for CeresEngine::ResourceData:
CeresEngine::RefCounted< ResourceData > CeresEngine::MemoryResourceData CeresEngine::PackagedResourceData

Public Member Functions

 ResourceData (ResourceManager &resourceManager) noexcept
 Creates a new ResourceData instance.
 
virtual ~ResourceData () noexcept=default
 ResourceData virtual destructor.
 
virtual ResourceStreamDatacreateStream (const ResourceStreamFlags &flags=ResourceStreamFlag::Default)=0
 Creates a new resource stream.
 
virtual ResourceStreamDataPtr getStream (const ResourceStreamID &streamID) const =0
 Gets a resource by it's stream ID.
 
virtual Vector< ResourceStreamDataPtrgetStreams () const =0
 Gets a list of streams that are owned by this resource.
 
virtual void destroyStream (ResourceStreamData &stream)=0
 Destroys a stream by ID.
 
- Public Member Functions inherited from CeresEngine::RefCounted< ResourceData >
 RefCounted (Args &&... args)
 Creates a new RefCounted object and constructs a new Deleter by forwarding Args to it.
 
void retain () noexcept
 Retains the object by increment it's reference count by one.
 
bool release () noexcept
 Relases the object by decrementing it's reference count by one.
 

Public Attributes

ResourceManagermanager
 The resource manager that owns the resource.
 
const PackagePtr package = nullptr
 The package from which the resource was loaded from.
 
const ResourceID id = ResourceID::null
 The resource UUID, if registered with a resource manager.
 
const WeakResourceHandle< Resourcehandle = nullptr
 A weak handle to the resource.
 
const WeakResourceHandle< Resourceparent = nullptr
 A parent resource to which this resource is attached to.
 
SPtr< ResourceMetadatametadata = nullptr
 A pointer to the user-defined resource metadata.
 

Private Attributes

Map< ResourceID, WeakResourceHandle< Resource > > mSubResources
 A map that enumerates the sub-resurces attached to this resource.
 
Vector< HResourcemUnsavedResources
 A list of sub-resources that are pending a save.
 

Detailed Description

An object, provided by the resource manager, to view and alter data from the resource itself.

Constructor & Destructor Documentation

◆ ResourceData()

CeresEngine::ResourceData::ResourceData ( ResourceManager resourceManager)
inlineexplicitnoexcept

Creates a new ResourceData instance.

Parameters
resourceManagerThe resource manager instance that owns this resource data object.

◆ ~ResourceData()

virtual CeresEngine::ResourceData::~ResourceData ( )
virtualdefaultnoexcept

ResourceData virtual destructor.

Member Function Documentation

◆ createStream()

virtual ResourceStreamData & CeresEngine::ResourceData::createStream ( const ResourceStreamFlags flags = ResourceStreamFlag::Default)
pure virtual

Creates a new resource stream.

Parameters
streamIDThe ID of the stream to be created or replaced.
Returns
An async task that will return the newly created resource stream.

Implemented in CeresEngine::MemoryResourceData.

◆ destroyStream()

virtual void CeresEngine::ResourceData::destroyStream ( ResourceStreamData stream)
pure virtual

Destroys a stream by ID.

Parameters
streamIDThe ID of the stream to be returned.

Implemented in CeresEngine::MemoryResourceData.

◆ getStream()

virtual ResourceStreamDataPtr CeresEngine::ResourceData::getStream ( const ResourceStreamID streamID) const
pure virtual

Gets a resource by it's stream ID.

Parameters
streamIDThe ID of the stream to be fetched.
Returns
A pointer to the stream data.

Implemented in CeresEngine::MemoryResourceData.

◆ getStreams()

virtual Vector< ResourceStreamDataPtr > CeresEngine::ResourceData::getStreams ( ) const
pure virtual

Gets a list of streams that are owned by this resource.

Implemented in CeresEngine::MemoryResourceData.

Member Data Documentation

◆ handle

const WeakResourceHandle<Resource> CeresEngine::ResourceData::handle = nullptr

A weak handle to the resource.

Can be used to get a resource handle from the resource itself, thus extending it's own lifetime.

◆ id

const ResourceID CeresEngine::ResourceData::id = ResourceID::null

The resource UUID, if registered with a resource manager.

◆ manager

ResourceManager& CeresEngine::ResourceData::manager

The resource manager that owns the resource.

◆ metadata

SPtr<ResourceMetadata> CeresEngine::ResourceData::metadata = nullptr

A pointer to the user-defined resource metadata.

Can be freely changed by the user to store metadata for the package. The metadata will be serialized alongside the resource and can be loaded separatedly from the resource. This allows quickly fetching data from the resource and let the user determine if it needs to be loaded or not.

◆ mSubResources

Map<ResourceID, WeakResourceHandle<Resource> > CeresEngine::ResourceData::mSubResources
private

A map that enumerates the sub-resurces attached to this resource.

◆ mUnsavedResources

Vector<HResource> CeresEngine::ResourceData::mUnsavedResources
private

A list of sub-resources that are pending a save.

◆ package

const PackagePtr CeresEngine::ResourceData::package = nullptr

The package from which the resource was loaded from.

Can be nullptr if the resource is not contained in a package.

◆ parent

const WeakResourceHandle<Resource> CeresEngine::ResourceData::parent = nullptr

A parent resource to which this resource is attached to.

This will ensure that the parent resource remains alive for as long as the children is referenced somewhere.


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