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>
196 lines
5.1 KiB
C++
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;
|
|
}
|
|
|