From e6bc94a4af8173a5f8695bb7e5803aa76f6f5fb6 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Thu, 19 Aug 2004 07:47:56 +0000 Subject: [PATCH] unwrap LoadMilkshapeAsciiBones (no other changes) --- stepmania/src/Model.cpp | 186 ++++++++++++++++++++-------------------- 1 file changed, 93 insertions(+), 93 deletions(-) diff --git a/stepmania/src/Model.cpp b/stepmania/src/Model.cpp index db0c05aaa2..7b38281e3f 100644 --- a/stepmania/src/Model.cpp +++ b/stepmania/src/Model.cpp @@ -286,116 +286,116 @@ void Model::LoadMilkshapeAsciiBones( CString sAniName, CString sPath ) // bones // int nNumBones = 0; - if( sscanf (sLine, "Bones: %d", &nNumBones) == 1 ) + if( sscanf (sLine, "Bones: %d", &nNumBones) != 1 ) + continue; + + m_mapNameToAnimation[sAniName] = msAnimation(); + msAnimation &Animation = m_mapNameToAnimation[sAniName]; + + char szName[MS_MAX_NAME]; + + Animation.Bones.resize( nNumBones ); + + for( int i = 0; i < nNumBones; i++ ) { - m_mapNameToAnimation[sAniName] = msAnimation(); - msAnimation &Animation = m_mapNameToAnimation[sAniName]; + msBone& Bone = Animation.Bones[i]; - char szName[MS_MAX_NAME]; + // name + if( f.GetLine( sLine ) <= 0 ) + THROW; + if (sscanf (sLine, "\"%[^\"]\"", szName) != 1) + THROW; + strcpy( Bone.szName, szName ); - Animation.Bones.resize( nNumBones ); + // parent + if( f.GetLine( sLine ) <= 0 ) + THROW; + strcpy (szName, ""); + sscanf (sLine, "\"%[^\"]\"", szName); - for( int i = 0; i < nNumBones; i++ ) + strcpy( Bone.szParentName, szName ); + + // flags, position, rotation + RageVector3 Position, Rotation; + if( f.GetLine( sLine ) <= 0 ) + THROW; + + int nFlags; + if (sscanf (sLine, "%d %f %f %f %f %f %f", + &nFlags, + &Position[0], &Position[1], &Position[2], + &Rotation[0], &Rotation[1], &Rotation[2]) != 7) { - msBone& Bone = Animation.Bones[i]; + THROW; + } + Rotation = RadianToDegree(Rotation); - // name - if( f.GetLine( sLine ) <= 0 ) - THROW; - if (sscanf (sLine, "\"%[^\"]\"", szName) != 1) - THROW; - strcpy( Bone.szName, szName ); + Bone.nFlags = nFlags; + memcpy( &Bone.Position, &Position, sizeof(Bone.Position) ); + memcpy( &Bone.Rotation, &Rotation, sizeof(Bone.Rotation) ); - // parent - if( f.GetLine( sLine ) <= 0 ) - THROW; - strcpy (szName, ""); - sscanf (sLine, "\"%[^\"]\"", szName); + // position key count + if( f.GetLine( sLine ) <= 0 ) + THROW; + int nNumPositionKeys = 0; + if (sscanf (sLine, "%d", &nNumPositionKeys) != 1) + THROW; - strcpy( Bone.szParentName, szName ); + Bone.PositionKeys.resize( nNumPositionKeys ); - // flags, position, rotation - RageVector3 Position, Rotation; - if( f.GetLine( sLine ) <= 0 ) + for( int j = 0; j < nNumPositionKeys; ++j ) + { + if( f.GetLine( sLine ) <= 0 ) THROW; - int nFlags; - if (sscanf (sLine, "%d %f %f %f %f %f %f", - &nFlags, - &Position[0], &Position[1], &Position[2], - &Rotation[0], &Rotation[1], &Rotation[2]) != 7) - { - THROW; - } - Rotation = RadianToDegree(Rotation); - - Bone.nFlags = nFlags; - memcpy( &Bone.Position, &Position, sizeof(Bone.Position) ); - memcpy( &Bone.Rotation, &Rotation, sizeof(Bone.Rotation) ); - - // position key count - if( f.GetLine( sLine ) <= 0 ) - THROW; - int nNumPositionKeys = 0; - if (sscanf (sLine, "%d", &nNumPositionKeys) != 1) + float fTime; + if (sscanf (sLine, "%f %f %f %f", &fTime, &Position[0], &Position[1], &Position[2]) != 4) THROW; - Bone.PositionKeys.resize( nNumPositionKeys ); - - for( int j = 0; j < nNumPositionKeys; ++j ) - { - if( f.GetLine( sLine ) <= 0 ) - THROW; - - float fTime; - if (sscanf (sLine, "%f %f %f %f", &fTime, &Position[0], &Position[1], &Position[2]) != 4) - THROW; - - msPositionKey key; - key.fTime = fTime; - key.Position = RageVector3( Position[0], Position[1], Position[2] ); - Bone.PositionKeys[j] = key; - } - - // rotation key count - if( f.GetLine( sLine ) <= 0 ) - THROW; - int nNumRotationKeys = 0; - if (sscanf (sLine, "%d", &nNumRotationKeys) != 1) - THROW; - - Bone.RotationKeys.resize( nNumRotationKeys ); - - for( int j = 0; j < nNumRotationKeys; ++j ) - { - if( f.GetLine( sLine ) <= 0 ) - THROW; - - float fTime; - if (sscanf (sLine, "%f %f %f %f", &fTime, &Rotation[0], &Rotation[1], &Rotation[2]) != 4) - THROW; - Rotation = RadianToDegree(Rotation); - - msRotationKey key; - key.fTime = fTime; - key.Rotation = RageVector3( Rotation[0], Rotation[1], Rotation[2] ); - Bone.RotationKeys[j] = key; - } + msPositionKey key; + key.fTime = fTime; + key.Position = RageVector3( Position[0], Position[1], Position[2] ); + Bone.PositionKeys[j] = key; } - // Ignore "Frames:" in file. Calculate it ourself - Animation.nTotalFrames = 0; - for( int i = 0; i < (int)Animation.Bones.size(); i++ ) - { - msBone& Bone = Animation.Bones[i]; - for( unsigned j = 0; j < Bone.PositionKeys.size(); ++j ) - Animation.nTotalFrames = max( Animation.nTotalFrames, (int)Bone.PositionKeys[j].fTime ); - for( unsigned j = 0; j < Bone.RotationKeys.size(); ++j ) - Animation.nTotalFrames = max( Animation.nTotalFrames, (int)Bone.RotationKeys[j].fTime ); - } + // rotation key count + if( f.GetLine( sLine ) <= 0 ) + THROW; + int nNumRotationKeys = 0; + if (sscanf (sLine, "%d", &nNumRotationKeys) != 1) + THROW; - PlayAnimation( sAniName ); + Bone.RotationKeys.resize( nNumRotationKeys ); + + for( int j = 0; j < nNumRotationKeys; ++j ) + { + if( f.GetLine( sLine ) <= 0 ) + THROW; + + float fTime; + if (sscanf (sLine, "%f %f %f %f", &fTime, &Rotation[0], &Rotation[1], &Rotation[2]) != 4) + THROW; + Rotation = RadianToDegree(Rotation); + + msRotationKey key; + key.fTime = fTime; + key.Rotation = RageVector3( Rotation[0], Rotation[1], Rotation[2] ); + Bone.RotationKeys[j] = key; + } + } + + // Ignore "Frames:" in file. Calculate it ourself + Animation.nTotalFrames = 0; + for( int i = 0; i < (int)Animation.Bones.size(); i++ ) + { + msBone& Bone = Animation.Bones[i]; + for( unsigned j = 0; j < Bone.PositionKeys.size(); ++j ) + Animation.nTotalFrames = max( Animation.nTotalFrames, (int)Bone.PositionKeys[j].fTime ); + for( unsigned j = 0; j < Bone.RotationKeys.size(); ++j ) + Animation.nTotalFrames = max( Animation.nTotalFrames, (int)Bone.RotationKeys[j].fTime ); } + + PlayAnimation( sAniName ); } }