Skip to content

Commit

Permalink
Merge pull request #285 from dgelessus/fix_plarmaturelodmod_prc_dupli…
Browse files Browse the repository at this point in the history
…cate_meshes

Fix `plArmatureLODMod` writing PRC `Meshes` tag twice
  • Loading branch information
zrax authored Mar 29, 2024
2 parents c7ee59a + 58fa6d4 commit ebb8db0
Show file tree
Hide file tree
Showing 2 changed files with 0 additions and 54 deletions.
50 changes: 0 additions & 50 deletions core/PRP/Avatar/plArmatureMod.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -348,53 +348,3 @@ void plArmatureLODMod::write(hsStream* S, plResManager* mgr)
mgr->writeKey(S, fUnusedBones[i][j]);
}
}

void plArmatureLODMod::IPrcWrite(pfPrcHelper* prc)
{
plArmatureMod::IPrcWrite(prc);

prc->writeSimpleTag("Meshes");
for (size_t i=0; i<fMeshKeys.size(); i++) {
prc->writeSimpleTag("Mesh");
plResManager::PrcWriteKey(prc, fMeshKeys[i]);
prc->writeSimpleTag("UnusedBones");
for (size_t j=0; j<fUnusedBones[i].size(); j++)
plResManager::PrcWriteKey(prc, fUnusedBones[i][j]);
prc->closeTag(); // UnusedBones
prc->closeTag(); // Mesh
}
prc->closeTag();
}

void plArmatureLODMod::IPrcParse(const pfPrcTag* tag, plResManager* mgr)
{
if (tag->getName() == "Meshes") {
fMeshKeys.resize(tag->countChildren());
fUnusedBones.resize(fMeshKeys.size());
const pfPrcTag* child = tag->getFirstChild();
for (size_t i=0; i<fMeshKeys.size(); i++) {
if (child->getName() != "Mesh")
throw pfPrcTagException(__FILE__, __LINE__, child->getName());

const pfPrcTag* subchild = child->getFirstChild();
while (subchild) {
if (subchild->getName() == "plKey") {
fMeshKeys[i] = mgr->prcParseKey(subchild);
} else if (subchild->getName() == "UnusedBones") {
fUnusedBones[i].resize(subchild->countChildren());
const pfPrcTag* boneChild = subchild->getFirstChild();
for (size_t j=0; j<fUnusedBones[i].size(); j++) {
fUnusedBones[i][j] = mgr->prcParseKey(boneChild);
boneChild = boneChild->getNextSibling();
}
} else {
throw pfPrcTagException(__FILE__, __LINE__, subchild->getName());
}
subchild = subchild->getNextSibling();
}
child = child->getNextSibling();
}
} else {
plArmatureMod::IPrcParse(tag, mgr);
}
}
4 changes: 0 additions & 4 deletions core/PRP/Avatar/plArmatureMod.h
Original file line number Diff line number Diff line change
Expand Up @@ -89,10 +89,6 @@ class HSPLASMA_EXPORT plArmatureLODMod : public plArmatureMod
public:
void read(hsStream* S, plResManager* mgr) HS_OVERRIDE;
void write(hsStream* S, plResManager* mgr) HS_OVERRIDE;

protected:
void IPrcWrite(pfPrcHelper* prc) HS_OVERRIDE;
void IPrcParse(const pfPrcTag* tag, plResManager* mgr) HS_OVERRIDE;
};

#endif

0 comments on commit ebb8db0

Please sign in to comment.