100 lines
3.6 KiB
C++
100 lines
3.6 KiB
C++
#include "stdafx.h"
|
|
|
|
#ifdef ITF_WIN32
|
|
|
|
#ifndef _ITF_PBKMERGERLIST_H_
|
|
#include "AnimTexPacker/PbkMergerList.h"
|
|
#endif
|
|
|
|
#ifndef _ITF_ANIMPACKERCONFIGURATION_H_
|
|
#include "AnimTexPacker/AnimPackerConfiguration.h"
|
|
#endif
|
|
|
|
#ifndef _ITF_ANIMATIONTRACK_H_
|
|
#include "engine/animation/AnimationTrack.h"
|
|
#endif //_ITF_ANIMATIONTRACK_H_
|
|
|
|
namespace ITF
|
|
{
|
|
namespace AnimTexPacker
|
|
{
|
|
///////////////////////////////////////////////////////////////////////////////////////////
|
|
PbkMergerList::~PbkMergerList()
|
|
{
|
|
for (PbkMergerList::iterator iter=begin();
|
|
iter!=end();
|
|
iter++)
|
|
{
|
|
PbkMerger &merger = *iter;
|
|
merger.destroyCompositePatchBank();
|
|
}
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////
|
|
PbkMerger *PbkMergerList::getPbkMergerFromTemplateID(const StringID &_templateID)
|
|
{
|
|
for (PbkMergerList::iterator iter=begin();
|
|
iter!=end();
|
|
iter++)
|
|
{
|
|
PbkMerger &merger = *iter;
|
|
if (merger.findPatch(_templateID))
|
|
return &merger;
|
|
}
|
|
return NULL;
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////
|
|
void PbkMergerList::buildPbkMergerList(int & _serialMergerIndex, const AnimPackerConfiguration &_config, PbkMergerList &_mergers, PatchDepot &_depot)
|
|
{
|
|
SafeArray<bbool> isPatchBankMerged;
|
|
isPatchBankMerged.reserve(_depot.size());
|
|
for (u32 i=0; i<_depot.size(); i++)
|
|
{
|
|
isPatchBankMerged.push_back(bfalse);
|
|
}
|
|
|
|
AnimPackerConfiguration::PbkConcatDescList::const_iterator concatIter;
|
|
for (concatIter = _config.m_concatenatedPbkList.begin();
|
|
concatIter != _config.m_concatenatedPbkList.end();
|
|
concatIter++)
|
|
{
|
|
const AnimPackerConfiguration::PbkConcatDesc &pbkConcatDesc=*concatIter;
|
|
//build 1 PbkMerger from a PbkConcatDesc
|
|
PbkMerger merger(_serialMergerIndex, _config.m_baseName);
|
|
|
|
PatchDepot::iterator iter;
|
|
int pbkIndex=0;
|
|
for (iter=_depot.begin(); iter!=_depot.end(); iter++, pbkIndex++)
|
|
{
|
|
if (isPatchBankMerged[pbkIndex])
|
|
continue;
|
|
|
|
PatchList &patchList = *iter;
|
|
String8 filename = patchList.m_bankName.getDebugString();
|
|
if (_config.m_ignorePbkList.checkFileMatch(filename) || _config.m_fullIgnorePbkList.checkFileMatch(filename))
|
|
{
|
|
isPatchBankMerged[pbkIndex] = btrue;
|
|
continue;
|
|
}
|
|
|
|
if (pbkConcatDesc.checkFileMatch(filename))
|
|
{
|
|
isPatchBankMerged[pbkIndex] = btrue;
|
|
merger.m_listOfPatchLists.push_back(&patchList);
|
|
merger.m_imgMask |= patchList.m_imgMask;
|
|
merger.m_hdDownscaleMask &= patchList.m_hdDownscaleMask;
|
|
merger.m_imgUseAlphaMask |= patchList.m_imgUseAlphaMask;
|
|
}
|
|
}
|
|
//
|
|
if (merger.m_listOfPatchLists.size()!=0)
|
|
{
|
|
_mergers.push_back(merger);
|
|
_serialMergerIndex++;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#endif
|