Functions for managing resource types.
Namespace: | dmResource |
Include: | #include <dmsdk/resource/resource.hpp> |
TYPES | |
---|---|
FDecryptResource | Decrypts a file |
FResourceDecrypt | Encrypts a resource in-place |
HDescriptor | Holds information about a currently loaded resourc... |
HFactory | Resource factory handle. Holds references to all c... |
HPreloadHintInfo | Holds information about preloading resources |
HResourceDescriptor | Holds information about a currently loaded resourc... |
HResourceFactory | Resource factory handle. Holds references to all c... |
HResourcePreloadHintInfo | Holds information about preloading resources |
HResourceType | Represents a resource type, with a context and typ... |
HResourceTypeContext | Holds the resource types, as well as extra in engi... |
ENUMS | |
---|---|
ResourceResult | ResourceResult |
Result | ResourceResult |
MACROS | |
---|---|
DM_DECLARE_RESOURCE_TYPE() | declare a new resource type |
ResourceResult AddFile(HResourceFactory factory, const char* path, uint32_t size, const void* resource)
Adds a file to the resource system Any request for this path will go through any existing mounts first. If you wish to provide file overrides, please use the LiveUpdate feature for that. The file isn't persisted between sessions.
PARAMETERS
HResourceFactory |
factory |
Factory handle |
const char* |
path |
The path of the resource |
uint32_t |
size |
The size of the resource (in bytes) |
const void* |
resource |
The resource payload |
RETURNS
ResourceResult |
RESULT_OK on success |
dmResource::Result AddFile(dmResource::HFactory factory, const char* path, uint32_t size, const void* resource)
Adds a file to the resource system Any request for this path will go through any existing mounts first. If you wish to provide file overrides, please use the LiveUpdate feature for that. The file isn't persisted between sessions.
PARAMETERS
dmResource::HFactory |
factory |
Factory handle |
const char* |
path |
The path of the resource |
uint32_t |
size |
The size of the resource (in bytes) |
const void* |
resource |
The resource payload |
RETURNS
dmResource::Result |
on success. |
void FReloadedCallback( params)
Function called when a resource has been reloaded.
PARAMETERS
|
params |
Parameters |
void FResourceReloadedCallback( params)
Function called when a resource has been reloaded.
PARAMETERS
|
params |
Parameters |
ResourceResult Get(HResourceFactory factory, const char* name, void** resource)
Get a resource from factory
PARAMETERS
HResourceFactory |
factory |
Factory handle |
const char* |
name |
Resource name |
void** |
resource |
Created resource |
RETURNS
ResourceResult |
RESULT_OK on success |
dmResource::Result Get(dmResource::HFactory factory, const char* name, void** resource)
Get a resource from factory
PARAMETERS
dmResource::HFactory |
factory |
Factory handle |
const char* |
name |
Resource name |
void** |
resource |
Created resource |
RETURNS
dmResource::Result |
RESULT_OK on success |
dmResource::Result Get(dmResource::HFactory factory, dmhash_t name, void** resource)
Get a resource from factory
PARAMETERS
dmResource::HFactory |
factory |
Factory handle |
dmhash_t |
name |
Resource name |
void** |
resource |
Created resource |
RETURNS
dmResource::Result |
RESULT_OK on success |
ResourceResult GetByHash(HResourceFactory factory, dmhash_t name, void** resource)
Get a resource from factory
PARAMETERS
HResourceFactory |
factory |
Factory handle |
dmhash_t |
name |
Resource name |
void** |
resource |
Created resource |
RETURNS
ResourceResult |
RESULT_OK on success |
ResourceResult GetDescriptor(HResourceFactory factory, dmhash_t path, HResourceDescriptor* descriptor)
Get resource descriptor from resource (name)
PARAMETERS
HResourceFactory |
factory |
Factory handle |
dmhash_t |
path |
Resource path |
HResourceDescriptor* |
descriptor |
Returned resource descriptor |
RETURNS
ResourceResult |
RESULT_OK on success |
ResourceResult GetDescriptorByHash(HResourceFactory factory, dmhash_t path_hash, HResourceDescriptor* descriptor)
Get resource descriptor from resource (name)
PARAMETERS
HResourceFactory |
factory |
Factory handle |
dmhash_t |
path_hash |
Resource path hash |
HResourceDescriptor* |
descriptor |
Returned resource descriptor |
RETURNS
ResourceResult |
RESULT_OK on success |
ResourceResult GetPath(HResourceFactory factory, void* resource, dmhash_t* hash)
Returns the canonical path hash of a resource
PARAMETERS
HResourceFactory |
factory |
Factory handle |
void* |
resource |
The resource pointer |
dmhash_t* |
hash |
(out) The path hash of the resource |
RETURNS
ResourceResult |
RESULT_OK on success |
ResourceResult GetRaw(HResourceFactory factory, dmhash_t name, void** resource, uint32_t* resource_size)
Get raw resource data. Unregistered resources can be loaded with this function. If successful, the returned resource data must be deallocated with free()
PARAMETERS
HResourceFactory |
factory |
Factory handle |
dmhash_t |
name |
Resource name |
void** |
resource |
Created resource |
uint32_t* |
resource_size |
Resource size |
RETURNS
ResourceResult |
RESULT_OK on success |
bool PreloadHint(dmResource::HResourcePreloadHintInfo preloader, const char* path)
Hint the preloader what to load before Create is called on the resource. The resources are not guaranteed to be loaded before Create is called. This function can be called from a worker thread.
PARAMETERS
dmResource::HResourcePreloadHintInfo |
preloader |
Preloader handle |
const char* |
path |
Resource path |
RETURNS
bool |
if successfully invoking preloader. |
bool PreloadHint(dmResource::HResourcePreloadHintInfo factory, const char* name)
Hint the preloader what to load before Create is called on the resource. The resources are not guaranteed to be loaded before Create is called. This function can be called from a worker thread.
PARAMETERS
dmResource::HResourcePreloadHintInfo |
factory |
Preloader handle |
const char* |
name |
Resource name |
RETURNS
bool |
if successfully invoking preloader. |
void RegisterResourceDecryptionFunction(dmResource::FDecryptResource decrypt_resource)
Registers a custom resource decryption function
PARAMETERS
dmResource::FDecryptResource |
decrypt_resource |
The decryption function |
void RegisterType()
PARAMETERS
void Release(HResourceFactory factory, void* resource)
Release resource
PARAMETERS
HResourceFactory |
factory |
Factory handle |
void* |
resource |
Resource pointer |
void Release(dmResource::HFactory factory, void* resource)
Release resource
PARAMETERS
dmResource::HFactory |
factory |
Factory handle |
void* |
resource |
Resource pointer |
ResourceResult RemoveFile(HResourceFactory factory, const char* path)
Removes a previously registered file from the resource system
PARAMETERS
HResourceFactory |
factory |
Factory handle |
const char* |
path |
The path of the resource |
RETURNS
ResourceResult |
RESULT_OK on success |
dmResource::Result RemoveFile(dmResource::HFactory factory, const char* path)
Removes a previously registered file from the resource system
PARAMETERS
dmResource::HFactory |
factory |
Factory handle |
const char* |
path |
The path of the resource |
RETURNS
dmResource::Result |
on success. |
ResourceResult ResourceAddFile(HResourceFactory factory, const char* path, uint32_t size, const void* resource)
Adds a file to the resource system Any request for this path will go through any existing mounts first. If you wish to provide file overrides, please use the LiveUpdate feature for that. The file isn't persisted between sessions.
PARAMETERS
HResourceFactory |
factory |
Factory handle |
const char* |
path |
The path of the resource |
uint32_t |
size |
The size of the resource (in bytes) |
const void* |
resource |
The resource payload |
RETURNS
ResourceResult |
RESULT_OK on success |
void ResourceCreateParams()
Parameters to ResourceCreate function of the resource type
PARAMETERS
void ResourceDestroyParams()
Parameters to ResourceDestroy function of the resource type
PARAMETERS
ResourceResult ResourceGet(HResourceFactory factory, const char* name, void** resource)
Get a resource from factory
PARAMETERS
HResourceFactory |
factory |
Factory handle |
const char* |
name |
Resource name |
void** |
resource |
Created resource |
RETURNS
ResourceResult |
RESULT_OK on success |
ResourceResult ResourceGetByHash(HResourceFactory factory, dmhash_t name, void** resource)
Get a resource from factory
PARAMETERS
HResourceFactory |
factory |
Factory handle |
dmhash_t |
name |
Resource name |
void** |
resource |
Created resource |
RETURNS
ResourceResult |
RESULT_OK on success |
ResourceResult ResourceGetPath(HResourceFactory factory, void* resource, dmhash_t* hash)
Returns the canonical path hash of a resource
PARAMETERS
HResourceFactory |
factory |
Factory handle |
void* |
resource |
The resource pointer |
dmhash_t* |
hash |
(out) The path hash of the resource |
RETURNS
ResourceResult |
RESULT_OK on success |
ResourceResult ResourceGetRaw(HResourceFactory factory, dmhash_t name, void** resource, uint32_t* resource_size)
Get raw resource data. Unregistered resources can be loaded with this function. If successful, the returned resource data must be deallocated with free()
PARAMETERS
HResourceFactory |
factory |
Factory handle |
dmhash_t |
name |
Resource name |
void** |
resource |
Created resource |
uint32_t* |
resource_size |
Resource size |
RETURNS
ResourceResult |
RESULT_OK on success |
void ResourcePostCreateParams()
Parameters to ResourcePostCreate function of the resource type
PARAMETERS
bool ResourcePreloadHint(dmResource::HResourcePreloadHintInfo preloader, const char* path)
Hint the preloader what to load before Create is called on the resource. The resources are not guaranteed to be loaded before Create is called. This function can be called from a worker thread.
PARAMETERS
dmResource::HResourcePreloadHintInfo |
preloader |
Preloader handle |
const char* |
path |
Resource path |
RETURNS
bool |
if successfully invoking preloader. |
void ResourcePreloadParams()
Parameters to ResourcePreload function of the resource type
PARAMETERS
void ResourceRecreateParams()
Parameters to ResourceRecreate function of the resource type
PARAMETERS
void ResourceRegisterDecryptionFunction(dmResource::FDecryptResource decrypt_resource)
Registers a custom resource decryption function
PARAMETERS
dmResource::FDecryptResource |
decrypt_resource |
The decryption function |
void ResourceRelease(HResourceFactory factory, void* resource)
Release resource
PARAMETERS
HResourceFactory |
factory |
Factory handle |
void* |
resource |
Resource pointer |
void ResourceReloadedParams()
Parameters to ResourceReloaded function of the resource type
PARAMETERS
void ResourceReloadedParams()
Parameters to ResourceReloaded function of the resource type
PARAMETERS
ResourceResult ResourceRemoveFile(HResourceFactory factory, const char* path)
Removes a previously registered file from the resource system
PARAMETERS
HResourceFactory |
factory |
Factory handle |
const char* |
path |
The path of the resource |
RETURNS
ResourceResult |
RESULT_OK on success |
void ResourceTypeCreatorDescBufferSize()
Resource type creator desc byte size declaration. The registered description data passeed to ResourceRegisterTypeCreatorDesc must be of at least this size.
PARAMETERS
void SetupType()
Setup function pointers and context for a resource type
PARAMETERS
Decrypts a file
Encrypts a resource in-place
Holds information about a currently loaded resource.
Resource factory handle. Holds references to all currently loaded resources.
Holds information about preloading resources
Holds information about a currently loaded resource.
Resource factory handle. Holds references to all currently loaded resources.
Holds information about preloading resources
Represents a resource type, with a context and type functions for creation and destroying a resource.
Holds the resource types, as well as extra in engine contexts that can be shared across type functions.
ResourceResult
RESOURCE_RESULT_OK |
|
RESOURCE_RESULT_INVALID_DATA |
|
RESOURCE_RESULT_DDF_ERROR |
|
RESOURCE_RESULT_RESOURCE_NOT_FOUND |
|
RESOURCE_RESULT_MISSING_FILE_EXTENSION |
|
RESOURCE_RESULT_ALREADY_REGISTERED |
|
RESOURCE_RESULT_INVAL |
|
RESOURCE_RESULT_UNKNOWN_RESOURCE_TYPE |
|
RESOURCE_RESULT_OUT_OF_MEMORY |
|
RESOURCE_RESULT_IO_ERROR |
|
RESOURCE_RESULT_NOT_LOADED |
|
RESOURCE_RESULT_OUT_OF_RESOURCES |
|
RESOURCE_RESULT_STREAMBUFFER_TOO_SMALL |
|
RESOURCE_RESULT_FORMAT_ERROR |
|
RESOURCE_RESULT_CONSTANT_ERROR |
|
RESOURCE_RESULT_NOT_SUPPORTED |
|
RESOURCE_RESULT_RESOURCE_LOOP_ERROR |
|
RESOURCE_RESULT_PENDING |
|
RESOURCE_RESULT_INVALID_FILE_EXTENSION |
|
RESOURCE_RESULT_VERSION_MISMATCH |
|
RESOURCE_RESULT_SIGNATURE_MISMATCH |
|
RESOURCE_RESULT_UNKNOWN_ERROR |
ResourceResult
RESOURCE_RESULT_OK |
|
RESOURCE_RESULT_INVALID_DATA |
|
RESOURCE_RESULT_DDF_ERROR |
|
RESOURCE_RESULT_RESOURCE_NOT_FOUND |
|
RESOURCE_RESULT_MISSING_FILE_EXTENSION |
|
RESOURCE_RESULT_ALREADY_REGISTERED |
|
RESOURCE_RESULT_INVAL |
|
RESOURCE_RESULT_UNKNOWN_RESOURCE_TYPE |
|
RESOURCE_RESULT_OUT_OF_MEMORY |
|
RESOURCE_RESULT_IO_ERROR |
|
RESOURCE_RESULT_NOT_LOADED |
|
RESOURCE_RESULT_OUT_OF_RESOURCES |
|
RESOURCE_RESULT_STREAMBUFFER_TOO_SMALL |
|
RESOURCE_RESULT_FORMAT_ERROR |
|
RESOURCE_RESULT_CONSTANT_ERROR |
|
RESOURCE_RESULT_NOT_SUPPORTED |
|
RESOURCE_RESULT_RESOURCE_LOOP_ERROR |
|
RESOURCE_RESULT_PENDING |
|
RESOURCE_RESULT_INVALID_FILE_EXTENSION |
|
RESOURCE_RESULT_VERSION_MISMATCH |
|
RESOURCE_RESULT_SIGNATURE_MISMATCH |
|
RESOURCE_RESULT_UNKNOWN_ERROR |
Declare and register new resource type to the engine. This macro is used to declare the resource type callback functions used by the engine to communicate with the extension.
EXAMPLES
Register a new type:#include <dmsdk/resource/resource_params.h>
#include <dmsdk/resource/resource_type.h>
static ResourceResult MyResourceTypeScriptCreate(const ResourceCreateParams* params) {}
static ResourceResult MyResourceTypeScriptDestroy(const ResourceDestroyParams* params) {}
static ResourceResult MyResourceTypeScriptRecreate(const ResourceRereateParams* params) {}
struct MyContext
{
// ...
};
static ResourceResult RegisterResourceTypeBlob(HResourceTypeRegisterContext ctx, HResourceType type)
{
// The engine.cpp creates the contexts for our built in types.
// Here we register a custom type
MyContext* context = new MyContext;
ResourceTypeSetContext(type, (void*)context);
ResourceTypeSetCreateFn(type, MyResourceTypeScriptCreate);
ResourceTypeSetDestroyFn(type, MyResourceTypeScriptDestroy);
ResourceTypeSetRecreateFn(type, MyResourceTypeScriptRecreate);
}
static ResourceResult DeregisterResourceTypeBlob(ResourceTypeRegisterContext& ctx)
{
MyContext** context = (MyContext*)ResourceTypeGetContext(type);
delete *context;
}
DM_DECLARE_RESOURCE_TYPE(ResourceTypeBlob, "blobc", RegisterResourceTypeBlob, DeregisterResourceTypeBlob);