Danbias/Code/Misc/Resource/OResource.cpp

64 lines
1.6 KiB
C++
Raw Normal View History

#include "OResource.h"
using namespace Oyster::Resource;
OResource::OResource(OHRESOURCE handle, ResourceType type, size_t resourceSize, size_t elementSize, ::std::wstring filename)
: resourceData (handle)
, resourceFilename (filename)
, resourceSize (resourceSize)
, resourceElementSize (elementSize)
, resourceType (type)
{
}
OResource::~OResource()
{}
bool OResource::Release()
{
if(this->resourceRef.Decref() == 0)
{
Remove(this->resourceType, this->resourceData);
return true;
}
return false;
}
void OResource::Remove(ResourceType t, OHRESOURCE& r)
{
switch (t)
{
case Oyster::Resource::ResourceType_Texture_PNG:
case Oyster::Resource::ResourceType_Texture_DDS:
case Oyster::Resource::ResourceType_Texture_JPG:
break;
case Oyster::Resource::ResourceType_Mesh_VertexData:
case Oyster::Resource::ResourceType_Mesh_AnimationData:
break;
case Oyster::Resource::ResourceType_Audio_mp3:
break;
case Oyster::Resource::ResourceType_Shader_Vertex:
case Oyster::Resource::ResourceType_Shader_Hull:
case Oyster::Resource::ResourceType_Shader_Domain:
case Oyster::Resource::ResourceType_Shader_Geometry:
case Oyster::Resource::ResourceType_Shader_Pixel:
case Oyster::Resource::ResourceType_Shader_Compute:
break;
case Oyster::Resource::ResourceType_UNKNOWN:
case Oyster::Resource::ResourceType_Byte_Raw:
case Oyster::Resource::ResourceType_Byte_ANSI:
case Oyster::Resource::ResourceType_Byte_UTF8:
case Oyster::Resource::ResourceType_Byte_UNICODE:
case Oyster::Resource::ResourceType_Byte_UTF16LE:
delete ((char*)r);
break;
}
}