Files
Client/CryptoSource/GCMDSLoader/GCMDSLoader.cpp
LGram16 dd97ddec92 Restructure repository to include all source folders
Move git root from Client/ to src/ to track all source code:
- Client: Game client source (moved to Client/Client/)
- Server: Game server source
- GameTools: Development tools
- CryptoSource: Encryption utilities
- database: Database scripts
- Script: Game scripts
- rylCoder_16.02.2008_src: Legacy coder tools
- GMFont, Game: Additional resources

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 20:17:20 +09:00

196 lines
5.1 KiB
C++

// 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;
}