JD2022-TU1/main/tools/legacy/TexturePacker/AnimTexPacker/AnimationLoader.h

98 lines
3.7 KiB
C++

#ifndef _ITF_ANIMATIONLOADER_H_
#define _ITF_ANIMATIONLOADER_H_
#ifndef _ITF_ANIMPACKERCONFIGURATION_H_
#include "AnimTexPacker/AnimPackerConfiguration.h"
#endif
#ifndef _ITF_RESOURCEMANAGER_H_
#include "engine/resources/ResourceManager.h"
#endif //_ITF_RESOURCEMANAGER_H_
#ifndef _ITF_PATCHDEPOT_H_
#include "AnimTexPacker/PatchDepot.h"
#endif
#ifndef _ITF_PBKMERGERLIST_H_
#include "AnimTexPacker/PbkMergerList.h"
#endif
#ifndef _ITF_SUBANIMLIGHTSET_H_
#include "engine/animation/SubAnimSet.h"
#endif //_ITF_SUBANIMLIGHTSET_H_
namespace ITF
{
class AnimTrack;
namespace AnimTexPacker
{
///////////////////////////////////////////////////////////////////////////////////////////
///Loads, parses, packs a list of animations
class AnimationLoader
{
public:
///////////////////////////////////////////////////////////////////////////////////////////
///Construction
AnimationLoader();
///////////////////////////////////////////////////////////////////////////////////////////
///Destruction
~AnimationLoader();
///////////////////////////////////////////////////////////////////////////////////////////
///Loads and parse
void loadAnimations(const ITF_VECTOR<Path> &animPathList, const ITF_VECTOR<TextureBankPath> *_textureBank, u32 _hdDownscaleMask);
///////////////////////////////////////////////////////////////////////////////////////////
///Packs
bbool buildPackedMap(const AnimPackerConfiguration &_config, const Platform& _platform);
#if !defined(ITF_FINAL) && defined(ITF_WIN32)
///////////////////////////////////////////////////////////////////////////////////////////
///Export GenAnim animations to directory
void exportAnimations(const Path& _directory);
#endif
void cookAnimations(const Path& _directory, const Platform& _platform);
///////////////////////////////////////////////////////////////////////////////////////////
u32 getMergeListCount() { return m_mergerList.size(); }
///////////////////////////////////////////////////////////////////////////////////////////
PbkMergerList & getMergeList() { return m_mergerList; }
///////////////////////////////////////////////////////////////////////////////////////////
ITF_LIST<PbkMerger*> getMergeListPtr();
///////////////////////////////////////////////////////////////////////////////////////////
void modifyAnimations(const AnimPackerConfiguration &_config);
///////////////////////////////////////////////////////////////////////////////////////////
void fillUnion(ITF_VECTOR<AnimationLoader> & _loaderList);
private:
///////////////////////////////////////////////////////////////////////////////////////////
void mayUpdateBoneCount(u32 _boneCount);
///////////////////////////////////////////////////////////////////////////////////////////
StringID findSeedBone(const StringID &_boneID);
///////////////////////////////////////////////////////////////////////////////////////////
AnimTrack * parseAnimation(SubAnimSet *_subAnimSet,u32 _subIdx, u32 _hdDownscaleMask);
private:
PatchDepot m_patchDepot;
ITF_VECTOR<BoneMaxSize> m_boneMaxSizes;
SafeArray<AnimTrack*> m_loadedAnimations;
ITF_VECTOR<Path> m_loadedAnimationPathes;
PbkMergerList m_mergerList;
SubAnimSet m_subAnimSet;
ResourceContainer m_resourceContainer;
};
}
}
#endif