DragonNest/Common/EternityEngineSrv/EtLoader.cpp
2024-12-20 16:56:44 +08:00

60 lines
2.5 KiB
C++
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "Stdafx.h"
#include "EtLoader.h"
#include "EtResource.h"
#include "EtAni.h"
#include "EtSkin.h"
#include "EtMesh.h"
#include "CriticalSection.h"
#include "MultiCommon.h"
#include "MultiRoom.h"
std::vector< std::string > g_vecResourceDir;
CSyncLock g_ResourceSyncLock;
EtResourceHandle LoadResource( CMultiRoom *pRoom, const char *pFileName, ResourceType Type )
{
EtResourceHandle Handle;
if( pFileName[ 0 ] == 0 )
{
return CEtResource::Identity();
}
Handle = CEtResource::GetResource( pRoom, pFileName );
if( !Handle )
{
CEtResource *pResource;
CEtResourceAccess Access( pFileName );
if( Access.IsValid() == false ) {
OutputDebug( "%s File Not Found!!!\n", pFileName );
return CEtResource::Identity();
}
switch( Type )
{
case RT_ANI:
pResource = new CEtAni( pRoom );
break;
case RT_SKIN:
pResource = new CEtSkin( pRoom );
break;
case RT_MESH:
pResource = new CEtMesh( pRoom );
break;
default:
ASSERT( 0 && "Invalid Resource Type!!!" );
return Handle;
}
Handle = pResource->GetMySmartPtr();
Handle->AddRef();
pResource->SetResourceType( Type );
pResource->Load( Access.GetFullName() );
}
else {
Handle->AddRef();
}
return Handle;
}