// GCMDSLoader.cpp : ÄÜ¼Ö ÀÀ¿ë ÇÁ·Î±×·¥¿¡ ´ëÇÑ ÁøÀÔÁ¡À» Á¤ÀÇÇÕ´Ï´Ù. // #include "stdafx.h" #include "SimpleParser.h" int _tmain(int argc, _TCHAR* argv[]) { // FileLoader CSimpleParser parser; if( false == parser.OpenFile( "aaa.gcmds" ) ) { return false; } /* // Client Source.. if( 0 != stricmp( "SKELETON_KEY_DATA", parser.GetNextToken() ) ) { return false; // invalid header } while( (szToken = parser.GetNextToken()) != NULL ) { if( 0 == stricmp( "skeletoncount", szToken ) ) { szToken = parser.GetNextToken(); m_lSkeletonCount = aton( szToken ); } else if( 0 == stricmp( "skeleton", szToken ) ) { m_pSkeletonHierarchy = new long[m_lSkeletonCount]; m_pAniHolderIndex = new long[m_lSkeletonCount]; m_pIndexInSubpart = new long[m_lSkeletonCount]; m_pszSkeletonName = new char*[m_lSkeletonCount]; szToken = parser.GetNextToken(); while( 0 != stricmp( szToken, ";" ) ) { i = aton(szToken); if( i >= m_lSkeletonCount ) { // skip remainder of 4 tokens for( j = 0; j < 4; ++j ) { parser.GetNextToken(); } szToken = parser.GetNextToken(); continue; } m_pSkeletonHierarchy[i] = aton( parser.GetNextToken() ); m_pAniHolderIndex[i] = aton( parser.GetNextToken() ); m_pIndexInSubpart[i] = aton( parser.GetNextToken() ); szToken = parser.GetNextToken(); m_pszSkeletonName[i] = new char[strlen(szToken)+1]; strcpy( m_pszSkeletonName[i], szToken ); szToken = parser.GetNextToken(); } } else if( 0 == stricmp( "aniholdercount", szToken ) ) { szToken = parser.GetNextToken(); m_lAniHolderCount = aton( szToken ); } else if( 0 == stricmp( "TMInverse", szToken ) ) { m_pLocalizerMatrix = new matrix[m_lSkeletonCount]; szToken = parser.GetNextToken(); while( 0 != stricmp( szToken, ";" ) ) { i = aton(parser.GetNextToken()); // skip "matrix" token if( i >= m_lSkeletonCount ) { // skip remainder of 12 tokens for( j = 0; j < 12; ++j ) { parser.GetNextToken(); } szToken = parser.GetNextToken(); continue; } m_pLocalizerMatrix[i]._11 = atof( parser.GetNextToken() ); m_pLocalizerMatrix[i]._12 = atof( parser.GetNextToken() ); m_pLocalizerMatrix[i]._13 = atof( parser.GetNextToken() ); m_pLocalizerMatrix[i]._14 = 0.0f; m_pLocalizerMatrix[i]._21 = atof( parser.GetNextToken() ); m_pLocalizerMatrix[i]._22 = atof( parser.GetNextToken() ); m_pLocalizerMatrix[i]._23 = atof( parser.GetNextToken() ); m_pLocalizerMatrix[i]._24 = 0.0f; m_pLocalizerMatrix[i]._31 = atof( parser.GetNextToken() ); m_pLocalizerMatrix[i]._32 = atof( parser.GetNextToken() ); m_pLocalizerMatrix[i]._33 = atof( parser.GetNextToken() ); m_pLocalizerMatrix[i]._34 = 0.0f; m_pLocalizerMatrix[i]._41 = atof( parser.GetNextToken() ); m_pLocalizerMatrix[i]._42 = atof( parser.GetNextToken() ); m_pLocalizerMatrix[i]._43 = atof( parser.GetNextToken() ); m_pLocalizerMatrix[i]._44 = 1.0f; szToken = parser.GetNextToken(); } } else if( 0 == stricmp( "BoundingVolume", szToken ) ) { Z3D_BOUNDINGVOLUME_INFO bvi; vector3 vPos; quaternion qRot; vector3 vSize; vector3 vTmp; szToken = parser.GetNextToken(); while( 0 != stricmp( szToken, ";" ) ) { if( 0 == stricmp( "OBB", szToken ) || 0 == stricmp( "CYLINDER", szToken ) || 0 == stricmp( "SPHERE", szToken ) ) { if( 0 == stricmp( "OBB", szToken ) ) { bvi.eBVType = Z3D_BOUNDINGVOLUME_INFO::Z3DBV_OBB; } else if ( 0 == stricmp( "CYLINDER", szToken ) ) { bvi.eBVType = Z3D_BOUNDINGVOLUME_INFO::Z3DBV_CYLINDER; } else if ( 0 == stricmp( "SPHERE", szToken ) ) { bvi.eBVType = Z3D_BOUNDINGVOLUME_INFO::Z3DBV_SPHERE; } bvi.lSkelIndex = aton( parser.GetNextToken() ); szToken = parser.GetNextToken(); while( 0 != stricmp( szToken, ";" ) ) { if( 0 == stricmp( "pos", szToken ) ) { vPos.x = atof( parser.GetNextToken() ); vPos.y = atof( parser.GetNextToken() ); vPos.z = atof( parser.GetNextToken() ); } else if( 0 == stricmp( "rot", szToken ) ) { qRot.x = atof( parser.GetNextToken() ); qRot.y = atof( parser.GetNextToken() ); qRot.z = atof( parser.GetNextToken() ); qRot.w = atof( parser.GetNextToken() ); } else if( 0 == stricmp( "size", szToken ) ) { vSize.x = atof( parser.GetNextToken() ); vSize.y = atof( parser.GetNextToken() ); vSize.z = atof( parser.GetNextToken() ); } szToken = parser.GetNextToken(); } // calc if( Z3D_BOUNDINGVOLUME_INFO::Z3DBV_OBB == bvi.eBVType ) { z3d::VectorRotate( vTmp, vector3(0,0.5f*vSize.y,0), qRot ); bvi.vOrigin = vPos + vTmp; bvi.vExtent = 0.5f*vSize; bvi.qRot = qRot; } else if( Z3D_BOUNDINGVOLUME_INFO::Z3DBV_CYLINDER == bvi.eBVType ) { } else if( Z3D_BOUNDINGVOLUME_INFO::Z3DBV_SPHERE == bvi.eBVType ) { } m_vecBoundingVolumeInfo.push_back( bvi ); szToken = parser.GetNextToken(); } } } } */ parser.Close(); return 0; }