CSkeletonLoader: Make use of unsigned stream helpers where applicable

Same behavior, less implicit sign conversions.
This commit is contained in:
Lioncash 2020-06-19 23:52:09 -04:00
parent 71fd2b8754
commit d738ae0d45

View File

@ -9,7 +9,7 @@ void CSkeletonLoader::SetLocalBoneCoords(CBone *pBone)
for (size_t iChild = 0; iChild < pBone->NumChildren(); iChild++) for (size_t iChild = 0; iChild < pBone->NumChildren(); iChild++)
SetLocalBoneCoords(pBone->ChildByIndex(iChild)); SetLocalBoneCoords(pBone->ChildByIndex(iChild));
if (pBone->mpParent) if (pBone->mpParent != nullptr)
pBone->mLocalPosition = pBone->mPosition - pBone->mpParent->mPosition; pBone->mLocalPosition = pBone->mPosition - pBone->mpParent->mPosition;
else else
pBone->mLocalPosition = pBone->mPosition; pBone->mLocalPosition = pBone->mPosition;
@ -33,10 +33,10 @@ std::unique_ptr<CSkeleton> CSkeletonLoader::LoadCINF(IInputStream& rCINF, CResou
EGame Game = pEntry->Game(); EGame Game = pEntry->Game();
// We don't support DKCR CINF right now // We don't support DKCR CINF right now
if (rCINF.PeekLong() == 0x9E220006) if (rCINF.PeekULong() == 0x9E220006)
return ptr; return ptr;
const uint32 NumBones = rCINF.ReadLong(); const uint32 NumBones = rCINF.ReadULong();
ptr->mBones.reserve(NumBones); ptr->mBones.reserve(NumBones);
// Read bones // Read bones
@ -51,8 +51,8 @@ std::unique_ptr<CSkeleton> CSkeletonLoader::LoadCINF(IInputStream& rCINF, CResou
{ {
auto& pBone = ptr->mBones.emplace_back(std::make_unique<CBone>(ptr.get())); auto& pBone = ptr->mBones.emplace_back(std::make_unique<CBone>(ptr.get()));
pBone->mID = rCINF.ReadLong(); pBone->mID = rCINF.ReadULong();
BoneInfo[iBone].ParentID = rCINF.ReadLong(); BoneInfo[iBone].ParentID = rCINF.ReadULong();
pBone->mPosition = CVector3f(rCINF); pBone->mPosition = CVector3f(rCINF);
// Version test. No version number. The next value is the linked bone count in MP1 and the // Version test. No version number. The next value is the linked bone count in MP1 and the
@ -61,7 +61,7 @@ std::unique_ptr<CSkeleton> CSkeletonLoader::LoadCINF(IInputStream& rCINF, CResou
// know) has at least two bones so the linked bone count will never be 0. // know) has at least two bones so the linked bone count will never be 0.
if (Game == EGame::Invalid) if (Game == EGame::Invalid)
{ {
const uint32 Check = rCINF.PeekLong(); const uint32 Check = rCINF.PeekULong();
Game = ((Check > 100 || Check == 0) ? EGame::Echoes : EGame::Prime); Game = ((Check > 100 || Check == 0) ? EGame::Echoes : EGame::Prime);
} }
if (Game >= EGame::Echoes) if (Game >= EGame::Echoes)
@ -70,12 +70,12 @@ std::unique_ptr<CSkeleton> CSkeletonLoader::LoadCINF(IInputStream& rCINF, CResou
pBone->mLocalRotation = CQuaternion(rCINF); pBone->mLocalRotation = CQuaternion(rCINF);
} }
const uint32 NumLinkedBones = rCINF.ReadLong(); const uint32 NumLinkedBones = rCINF.ReadULong();
ASSERT(NumLinkedBones != 0); ASSERT(NumLinkedBones != 0);
for (uint32 iLink = 0; iLink < NumLinkedBones; iLink++) for (uint32 iLink = 0; iLink < NumLinkedBones; iLink++)
{ {
uint32 LinkedID = rCINF.ReadLong(); const uint32 LinkedID = rCINF.ReadULong();
if (LinkedID != BoneInfo[iBone].ParentID) if (LinkedID != BoneInfo[iBone].ParentID)
BoneInfo[iBone].ChildIDs.push_back(LinkedID); BoneInfo[iBone].ChildIDs.push_back(LinkedID);
@ -86,23 +86,21 @@ std::unique_ptr<CSkeleton> CSkeletonLoader::LoadCINF(IInputStream& rCINF, CResou
for (uint32 iBone = 0; iBone < NumBones; iBone++) for (uint32 iBone = 0; iBone < NumBones; iBone++)
{ {
CBone *pBone = ptr->mBones[iBone].get(); CBone *pBone = ptr->mBones[iBone].get();
SBoneInfo& rInfo = BoneInfo[iBone]; const SBoneInfo& rInfo = BoneInfo[iBone];
pBone->mpParent = ptr->BoneByID(rInfo.ParentID); pBone->mpParent = ptr->BoneByID(rInfo.ParentID);
for (const auto childID : rInfo.ChildIDs) for (const auto childID : rInfo.ChildIDs)
{ {
CBone *pChild = ptr->BoneByID(childID); if (CBone* pChild = ptr->BoneByID(childID))
if (pChild)
pBone->mChildren.push_back(pChild); pBone->mChildren.push_back(pChild);
else else
errorf("%s: Bone %u has invalid child ID: %u", *rCINF.GetSourceString(), pBone->mID, childID); errorf("%s: Bone %u has invalid child ID: %u", *rCINF.GetSourceString(), pBone->mID, childID);
} }
if (!pBone->mpParent) if (pBone->mpParent == nullptr)
{ {
if (!ptr->mpRootBone) if (ptr->mpRootBone == nullptr)
ptr->mpRootBone = pBone; ptr->mpRootBone = pBone;
else else
errorf("%s: Multiple root bones?", *rCINF.GetSourceString()); errorf("%s: Multiple root bones?", *rCINF.GetSourceString());
@ -113,16 +111,16 @@ std::unique_ptr<CSkeleton> CSkeletonLoader::LoadCINF(IInputStream& rCINF, CResou
Loader.CalculateBoneInverseBindMatrices(); Loader.CalculateBoneInverseBindMatrices();
// Skip bone ID array // Skip bone ID array
const uint32 NumBoneIDs = rCINF.ReadLong(); const uint32 NumBoneIDs = rCINF.ReadULong();
rCINF.Seek(NumBoneIDs * 4, SEEK_CUR); rCINF.Seek(NumBoneIDs * 4, SEEK_CUR);
// Read bone names // Read bone names
const uint32 NumBoneNames = rCINF.ReadLong(); const uint32 NumBoneNames = rCINF.ReadULong();
for (uint32 iName = 0; iName < NumBoneNames; iName++) for (uint32 iName = 0; iName < NumBoneNames; iName++)
{ {
TString Name = rCINF.ReadString(); TString Name = rCINF.ReadString();
const uint32 BoneID = rCINF.ReadLong(); const uint32 BoneID = rCINF.ReadULong();
ptr->BoneByID(BoneID)->mName = std::move(Name); ptr->BoneByID(BoneID)->mName = std::move(Name);
} }