* Fix bug in loading of 3.3.5 M2 files
This commit is contained in:
parent
73efbaf339
commit
e960db4cd8
@ -303,7 +303,7 @@ for(u32 i=0; i<M2MAnimations.size(); i++)
|
|||||||
}
|
}
|
||||||
for(u32 j=0; j<M2MBones.size(); j++)
|
for(u32 j=0; j<M2MBones.size(); j++)
|
||||||
{
|
{
|
||||||
if(M2MBones[j].translation.header.TimeStamp.num>0 && M2MBones[j].translation.header.Values.num>0)
|
if(M2MBones[j].translation.header.TimeStamp.num>i && M2MBones[j].translation.header.Values.num>i)
|
||||||
{
|
{
|
||||||
//Timestamps
|
//Timestamps
|
||||||
MeshFile->seek(M2MBones[j].translation.header.TimeStamp.ofs+8*i);
|
MeshFile->seek(M2MBones[j].translation.header.TimeStamp.ofs+8*i);
|
||||||
@ -330,7 +330,7 @@ for(u32 i=0; i<M2MAnimations.size(); i++)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(M2MBones[j].rotation.header.TimeStamp.num>0 && M2MBones[j].rotation.header.Values.num>0)
|
if(M2MBones[j].rotation.header.TimeStamp.num>i && M2MBones[j].rotation.header.Values.num>i)
|
||||||
{
|
{
|
||||||
//Timestamps
|
//Timestamps
|
||||||
MeshFile->seek(M2MBones[j].rotation.header.TimeStamp.ofs+8*i);
|
MeshFile->seek(M2MBones[j].rotation.header.TimeStamp.ofs+8*i);
|
||||||
@ -358,7 +358,7 @@ for(u32 i=0; i<M2MAnimations.size(); i++)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(M2MBones[j].scaling.header.TimeStamp.num>0 && M2MBones[j].scaling.header.Values.num>0)
|
if(M2MBones[j].scaling.header.TimeStamp.num>i && M2MBones[j].scaling.header.Values.num>i)
|
||||||
{
|
{
|
||||||
//Timestamps
|
//Timestamps
|
||||||
MeshFile->seek(M2MBones[j].scaling.header.TimeStamp.ofs+8*i);
|
MeshFile->seek(M2MBones[j].scaling.header.TimeStamp.ofs+8*i);
|
||||||
@ -400,50 +400,50 @@ DEBUG(logdebug("Read %u Bones",M2MBones.size()));
|
|||||||
|
|
||||||
void CM2MeshFileLoader::ReadAnimationData()
|
void CM2MeshFileLoader::ReadAnimationData()
|
||||||
{
|
{
|
||||||
//Global Sequences. This is global data
|
// //Global Sequences. This is global data
|
||||||
u32 tempGlobalSeq;
|
// u32 tempGlobalSeq;
|
||||||
if(!M2MGlobalSequences.empty())
|
// if(!M2MGlobalSequences.empty())
|
||||||
{
|
// {
|
||||||
M2MGlobalSequences.clear();
|
// M2MGlobalSequences.clear();
|
||||||
}
|
// }
|
||||||
MeshFile->seek(header.GlobalSequences.ofs);
|
// MeshFile->seek(header.GlobalSequences.ofs);
|
||||||
for(u32 i=0;i<header.GlobalSequences.num;i++)
|
// for(u32 i=0;i<header.GlobalSequences.num;i++)
|
||||||
{
|
// {
|
||||||
MeshFile->read(&tempGlobalSeq,sizeof(u32));
|
// MeshFile->read(&tempGlobalSeq,sizeof(u32));
|
||||||
M2MGlobalSequences.push_back(tempGlobalSeq);
|
// M2MGlobalSequences.push_back(tempGlobalSeq);
|
||||||
DEBUG(logdebug("Global Sequence %u End %u",i,tempGlobalSeq));
|
// DEBUG(logdebug("Global Sequence %u End %u",i,tempGlobalSeq));
|
||||||
}
|
// }
|
||||||
DEBUG(logdebug("Read %u Global Sequence entries",M2MGlobalSequences.size()));
|
// DEBUG(logdebug("Read %u Global Sequence entries",M2MGlobalSequences.size()));
|
||||||
|
//
|
||||||
//BoneLookupTable. This is global data
|
// //BoneLookupTable. This is global data
|
||||||
u16 tempBoneLookup;
|
// u16 tempBoneLookup;
|
||||||
if(!M2MBoneLookupTable.empty())
|
// if(!M2MBoneLookupTable.empty())
|
||||||
{
|
// {
|
||||||
M2MBoneLookupTable.clear();
|
// M2MBoneLookupTable.clear();
|
||||||
}
|
// }
|
||||||
MeshFile->seek(header.BoneLookupTable.ofs);
|
// MeshFile->seek(header.BoneLookupTable.ofs);
|
||||||
for(u32 i=0;i<header.BoneLookupTable.num;i++)
|
// for(u32 i=0;i<header.BoneLookupTable.num;i++)
|
||||||
{
|
// {
|
||||||
MeshFile->read(&tempBoneLookup,sizeof(u16));
|
// MeshFile->read(&tempBoneLookup,sizeof(u16));
|
||||||
M2MBoneLookupTable.push_back(tempBoneLookup);
|
// M2MBoneLookupTable.push_back(tempBoneLookup);
|
||||||
DEBUG(logdebug("BoneLookupTable %u Value %u",i,tempBoneLookup));
|
// DEBUG(logdebug("BoneLookupTable %u Value %u",i,tempBoneLookup));
|
||||||
}
|
// }
|
||||||
DEBUG(logdebug("Read %u BoneLookupTable entries",M2MBoneLookupTable.size()));
|
// DEBUG(logdebug("Read %u BoneLookupTable entries",M2MBoneLookupTable.size()));
|
||||||
|
//
|
||||||
//SkeleBoneLookupTable. This is global data
|
// //SkeleBoneLookupTable. This is global data
|
||||||
u16 tempSkeleBoneLookup;
|
// u16 tempSkeleBoneLookup;
|
||||||
if(!M2MSkeleBoneLookupTable.empty())
|
// if(!M2MSkeleBoneLookupTable.empty())
|
||||||
{
|
// {
|
||||||
M2MSkeleBoneLookupTable.clear();
|
// M2MSkeleBoneLookupTable.clear();
|
||||||
}
|
// }
|
||||||
MeshFile->seek(header.SkelBoneLookup.ofs);
|
// MeshFile->seek(header.SkelBoneLookup.ofs);
|
||||||
for(u32 i=0;i<header.SkelBoneLookup.num;i++)
|
// for(u32 i=0;i<header.SkelBoneLookup.num;i++)
|
||||||
{
|
// {
|
||||||
MeshFile->read(&tempSkeleBoneLookup,sizeof(u16));
|
// MeshFile->read(&tempSkeleBoneLookup,sizeof(u16));
|
||||||
M2MSkeleBoneLookupTable.push_back(tempSkeleBoneLookup);
|
// M2MSkeleBoneLookupTable.push_back(tempSkeleBoneLookup);
|
||||||
DEBUG(logdebug("SkeleBoneLookupTable %u Value %u",i,tempSkeleBoneLookup));
|
// DEBUG(logdebug("SkeleBoneLookupTable %u Value %u",i,tempSkeleBoneLookup));
|
||||||
}
|
// }
|
||||||
DEBUG(logdebug("Read %u SkeleBoneLookupTable entries",M2MSkeleBoneLookupTable.size()));
|
// DEBUG(logdebug("Read %u SkeleBoneLookupTable entries",M2MSkeleBoneLookupTable.size()));
|
||||||
|
|
||||||
//Animations. This is global data
|
//Animations. This is global data
|
||||||
u32 laststart = 0;
|
u32 laststart = 0;
|
||||||
@ -481,20 +481,20 @@ void CM2MeshFileLoader::ReadAnimationData()
|
|||||||
DEBUG(logdebug("Animation %u Id %u Start %u End %u",i,tempAnimation.animationID,tempAnimation.start,tempAnimation.end));
|
DEBUG(logdebug("Animation %u Id %u Start %u End %u",i,tempAnimation.animationID,tempAnimation.start,tempAnimation.end));
|
||||||
}
|
}
|
||||||
DEBUG(logdebug("Read %u Animations",M2MAnimations.size()));
|
DEBUG(logdebug("Read %u Animations",M2MAnimations.size()));
|
||||||
//Animation Lookup. This is global data
|
// //Animation Lookup. This is global data
|
||||||
s16 tempAniLookup;
|
// s16 tempAniLookup;
|
||||||
if(!M2MAnimationLookup.empty())
|
// if(!M2MAnimationLookup.empty())
|
||||||
{
|
// {
|
||||||
M2MAnimationLookup.clear();
|
// M2MAnimationLookup.clear();
|
||||||
}
|
// }
|
||||||
MeshFile->seek(header.AnimationLookup.ofs);
|
// MeshFile->seek(header.AnimationLookup.ofs);
|
||||||
for(u32 i=0;i<header.AnimationLookup.num;i++)
|
// for(u32 i=0;i<header.AnimationLookup.num;i++)
|
||||||
{
|
// {
|
||||||
MeshFile->read(&tempAniLookup,sizeof(s16));
|
// MeshFile->read(&tempAniLookup,sizeof(s16));
|
||||||
M2MAnimationLookup.push_back(tempAniLookup);
|
// M2MAnimationLookup.push_back(tempAniLookup);
|
||||||
DEBUG(logdebug("Animation Lookup %u Id %u",i,tempAniLookup));
|
// DEBUG(logdebug("Animation Lookup %u Id %u",i,tempAniLookup));
|
||||||
}
|
// }
|
||||||
DEBUG(logdebug("Read %u AnimationLookup",M2MAnimationLookup.size()));
|
// DEBUG(logdebug("Read %u AnimationLookup",M2MAnimationLookup.size()));
|
||||||
}
|
}
|
||||||
|
|
||||||
void CM2MeshFileLoader::ReadTextureDefinitions()
|
void CM2MeshFileLoader::ReadTextureDefinitions()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user