Esempio n. 1
0
//////////////////////////////////////////////////////////////////////////
// destroyResource
void CsCore::destroyResource( CsResource* pResource )
{
	std::lock_guard< std::recursive_mutex > Lock( ContainerLock_ );
		
	// Find the resource in the list.
	TResourceListIterator FoundIt = LoadedResources_.end();
	
	for( TResourceListIterator It( LoadedResources_.begin() ); It != LoadedResources_.end(); ++It )
	{
		if( (*It) == pResource )
		{
			FoundIt = It;
			break;
		}
	}
	
	// If it's in the loaded list we need to put it into the unloading list,
	// otherwise delete it right away (imported resource).
	if( FoundIt != LoadedResources_.end() )
	{
		// Remove from list.
		LoadedResources_.erase( FoundIt );
	
		// Put into unloading list.
		UnloadingResources_.push_back( pResource );
	}
	else
	{
		pResource->getClass()->destruct( pResource );
		BcMemFree( pResource );
	}
}
Esempio n. 2
0
//////////////////////////////////////////////////////////////////////////
// processUnloadingResources
void CsCore::processUnloadingResources()
{
	std::lock_guard< std::recursive_mutex > Lock( ContainerLock_ );

	while( UnloadingResources_.size() > 0 )
	{
		TResourceList ResourceList = UnloadingResources_;

		TResourceListIterator It( ResourceList.begin() );
		while( It != ResourceList.end() )
		{
			CsResource* pResource = (*It);
			
			// Destroy resource.
			pResource->destroy();
			
			// Free resource.
			pResource->getClass()->destruct( pResource );
			BcMemFree( pResource );
			
			// Next.
			++It;
		}
	
		UnloadingResources_.clear();
	}
}
Esempio n. 3
0
//////////////////////////////////////////////////////////////////////////
// loadJsonFile
BcBool CsPackageImporter::loadJsonFile( const BcChar* pFileName, Json::Value& Root )
{
	BcBool Success = BcFalse;
	BcFile File;
	if( File.open( pFileName ) )
	{
		const BcU8* pData = File.readAllBytes();		
		Json::Reader Reader;
		
		if( Reader.parse( (const char*)pData, (const char*)pData + File.size(), Root ) )
		{
			Success = BcTrue;
		}
		else
		{
			PSY_LOG( "Failed to parse Json:\n %s\n", Reader.getFormatedErrorMessages().c_str() );
 			BcAssertMsg( BcFalse, "Failed to parse \"%s\", see log for more details.", pFileName );
		}
		
		BcMemFree( (void*)pData );
	}
	else
	{
		BcAssertMsg( BcFalse, "Failed to load \"%s\"", pFileName );
	}
	
	return Success;
}
Esempio n. 4
0
//////////////////////////////////////////////////////////////////////////
// Dtor
CsPackageLoader::~CsPackageLoader()
{
	BcAssertMsg( hasPendingCallback() == BcFalse, "CsPackageLoader: Callbacks are pending." );

	File_.close();
	
	BcMemFree( pPackageData_ );
	pPackageData_ = NULL;
}