Fixed writing to Skeleton.Bones[-1] when FindBone() returns -1 because, say, PELVISPOLY does not exist

This commit is contained in:
Fatbag 2012-02-19 01:00:11 -06:00
parent e3f6880ed2
commit 6df7a494a1

View file

@ -217,20 +217,23 @@ void AdvanceFrame(Skeleton_t& Skeleton, Animation_t& Animation){
static unsigned Frame = 0; static unsigned Frame = 0;
for(unsigned i=0; i<Animation.MotionsCount; i++){ for(unsigned i=0; i<Animation.MotionsCount; i++){
Bone_t& Bone = Skeleton.Bones[FindBone(Skeleton, Animation.Motions[i].BoneName, Skeleton.BoneCount)]; unsigned BoneIndex = FindBone(Skeleton, Animation.Motions[i].BoneName, Skeleton.BoneCount);
if(BoneIndex != (unsigned)-1){
Bone_t& Bone = Skeleton.Bones[BoneIndex];
if(Animation.Motions[i].HasTranslation){ if(Animation.Motions[i].HasTranslation){
Translation_t& Translation = Animation.Motions[i].Translations[Frame]; Translation_t& Translation = Animation.Motions[i].Translations[Frame];
Bone.Translation.x = Translation.x; Bone.Translation.x = Translation.x;
Bone.Translation.y = Translation.y; Bone.Translation.y = Translation.y;
Bone.Translation.z = Translation.z; Bone.Translation.z = Translation.z;
} }
if(Animation.Motions[i].HasRotation){ if(Animation.Motions[i].HasRotation){
Rotation_t& Rotation = Animation.Motions[i].Rotations[Frame]; Rotation_t& Rotation = Animation.Motions[i].Rotations[Frame];
Bone.Rotation.x = Rotation.x; Bone.Rotation.x = Rotation.x;
Bone.Rotation.y = Rotation.y; Bone.Rotation.y = Rotation.y;
Bone.Rotation.z = Rotation.z; Bone.Rotation.z = Rotation.z;
Bone.Rotation.w = Rotation.w; Bone.Rotation.w = Rotation.w;
}
} }
} }