This commit is contained in:
Phillip Stephens 2016-04-07 00:10:35 -07:00
commit 0b69c63e98
4 changed files with 23 additions and 25 deletions

View File

@ -32,20 +32,6 @@ struct AnimationResInfo
bool additive;
};
static void WriteOutAnimId(athena::io::YAMLDocWriter& __dna_docout,
const UniqueID32& ancsId,
const std::string& animName)
{
__dna_docout.enterSubRecord("animId");
hecl::ProjectPath path = UniqueIDBridge::TranslatePakIdToPath(ancsId);
if (path)
{
path = path.getWithExtension(_S(".blend"));
__dna_docout.writeString(nullptr, path.getRelativePathUTF8() + _S('|') + animName);
}
__dna_docout.leaveSubRecord();
}
template <class PAKRouter, class ANCSDNA, class MaterialSet, class SurfaceHeader, atUint32 CMDLVersion>
bool ReadANCSToBlender(hecl::BlenderConnection& conn,
const ANCSDNA& ancs,

View File

@ -40,6 +40,8 @@ struct ANCS : BigYAML
atUint32 idx;
std::string name;
UniqueID32 cmdl;
UniqueID32 _cskrOld;
UniqueID32 _cinfOld;
AuxiliaryID32 cskr = _S("skin");
AuxiliaryID32 cinf = {_S("layout"), _S(".blend")};
@ -145,6 +147,7 @@ struct ANCS : BigYAML
std::vector<Effect> effects;
UniqueID32 cmdlOverlay;
UniqueID32 _cskrOverlayOld;
AuxiliaryID32 cskrOverlay = _S("skin");
std::vector<atUint32> animIdxs;
@ -227,8 +230,6 @@ struct ANCS : BigYAML
void read(athena::io::YAMLDocReader& __dna_docin)
{
/* animId */
__dna_docin.enumerate("animId", animId);
/* animIdx */
animIdx = __dna_docin.readUint32("animIdx");
/* animName */
@ -237,12 +238,17 @@ struct ANCS : BigYAML
unk1 = __dna_docin.readFloat("unk1");
/* unk2 */
unk2 = __dna_docin.readUint32("unk2");
hecl::ProjectPath path = UniqueIDBridge::TranslatePakIdToPath(m_ancsId);
if (path)
{
hecl::SystemStringView sysView(animName);
animId = path.ensureAuxInfo(sysView.sys_str().c_str());
}
}
void write(athena::io::YAMLDocWriter& __dna_docout) const
{
/* animId */
DNAANCS::WriteOutAnimId(__dna_docout, m_ancsId, animName);
/* animIdx */
__dna_docout.writeUint32("animIdx", animIdx);
/* animName */
@ -569,11 +575,11 @@ struct ANCS : BigYAML
DNAANCS::CharacterResInfo<UniqueID32>& chOut = out.back();
chOut.name = ci.name;
chOut.cmdl = ci.cmdl;
chOut.cskr = ci.cskr;
chOut.cinf = ci.cinf;
chOut.cskr = ci._cskrOld;
chOut.cinf = ci._cinfOld;
if (ci.cmdlOverlay)
chOut.overlays.emplace_back(FOURCC('OVER'), std::make_pair(ci.cmdlOverlay, ci.cskrOverlay));
chOut.overlays.emplace_back(FOURCC('OVER'), std::make_pair(ci.cmdlOverlay, ci._cskrOverlayOld));
}
}
@ -599,8 +605,11 @@ struct ANCS : BigYAML
{
for (CharacterSet::CharacterInfo& character : characterSet.characters)
{
character._cskrOld = character.cskr;
character._cinfOld = character.cinf;
character.cskr = character.cmdl;
character.cinf = ancsId;
character._cskrOverlayOld = character.cskrOverlay;
character.cskrOverlay = character.cmdlOverlay;
}
}

View File

@ -41,6 +41,8 @@ struct ANCS : BigYAML
atUint32 idx;
std::string name;
UniqueID32 cmdl;
UniqueID32 _cskrOld;
UniqueID32 _cinfOld;
AuxiliaryID32 cskr = _S("skin");
AuxiliaryID32 cinf = {_S("layout"), _S("skin")};
@ -88,6 +90,7 @@ struct ANCS : BigYAML
std::vector<Effect> effects;
UniqueID32 cmdlOverlay;
UniqueID32 _cskrOverlayOld;
AuxiliaryID32 cskrOverlay = _S("skin");
std::vector<atUint32> animIdxs;
@ -201,11 +204,11 @@ struct ANCS : BigYAML
DNAANCS::CharacterResInfo<UniqueID32>& chOut = out.back();
chOut.name = ci.name;
chOut.cmdl = ci.cmdl;
chOut.cskr = ci.cskr;
chOut.cinf = ci.cinf;
chOut.cskr = ci._cskrOld;
chOut.cinf = ci._cinfOld;
if (ci.cmdlOverlay)
chOut.overlays.emplace_back(FOURCC('OVER'), std::make_pair(ci.cmdlOverlay, ci.cskrOverlay));
chOut.overlays.emplace_back(FOURCC('OVER'), std::make_pair(ci.cmdlOverlay, ci._cskrOverlayOld));
}
}

2
hecl

@ -1 +1 @@
Subproject commit de043503e5d2312ccc10876b0ac3d5ebb91bb768
Subproject commit 22d1a5a98969e82bc314e9908f7f0d677eb4a9d5