Game Development Reference
In-Depth Information
char *rawBuffer = loader->VUseRawFile() ?
Allocate(rawSize) : GCC_NEW char[rawSize];
if (rawBuffer==NULL)
{
// resource cache out of memory
return shared_ptr<ResHandle>();
}
m_file->VGetRawResource(*r, rawBuffer);
char *buffer = NULL;
unsigned int size = 0;
if (loader->VUseRawFile())
{
buffer = rawBuffer;
handle = shared_ptr<ResHandle>(
GCC_NEW ResHandle(*r, buffer, rawSize, this));
}
else
{
size = loader->VGetLoadedResourceSize(rawBuffer, rawSize);
buffer = Allocate(size);
if (rawBuffer==NULL || buffer==NULL)
{
// resource cache out of memory
return shared_ptr<ResHandle>();
}
handle = shared_ptr<ResHandle>(
GCC_NEW ResHandle(*r, buffer, size, this));
bool success = loader->VLoadResource(rawBuffer, rawSize, handle);
SAFE_DELETE_ARRAY(rawBuffer);
if (!success)
{
// resource cache out of memory
return shared_ptr<ResHandle>();
}
}
if (handle)
{
m_lru.push_front(handle);
m_resources[r->m_name] = handle;
Search WWH ::




Custom Search