JD2022-TU1/main/tools/legacy/TexturePacker/AnimTexPacker/PbkMergerList.cpp

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