{
public:
CustomStreamClass(
FbxManager* pSdkManager,
const char* mode )
{
if (mode ==
NULL)
return;
FBXSDK_strcpy(mFileName, 30, "CustomStreamClass_temp.txt");
FBXSDK_strcpy(mMode, 3, (mode) ? mode : "r");
if ( mode[0] == 'r' )
{
const char* format = "FBX (*.fbx)";
mWriterID = -1;
}
else
{
const char* format = "FBX ascii (*.fbx)";
mReaderID = -1;
}
}
~CustomStreamClass()
{
}
{
}
virtual bool Open(
void* )
{
FBXSDK_fopen(mFile, mFileName, mMode);
fseek( mFile, 0L, SEEK_SET );
return ( mFile !=
NULL );
}
{
if ( mFile )
fclose( mFile );
return true;
}
{
return true;
}
virtual int Write(
const void* pData,
int pSize)
{
return 0;
return (int)fwrite( pData, 1, pSize, mFile );
}
virtual int Read (
void* pData,
int pSize)
const
{
return 0;
return (int)fread( pData, 1, pSize, mFile );
}
{
return mReaderID;
}
{
return mWriterID;
}
{
switch ( pSeekPos )
{
fseek( mFile, (long)pOffset, SEEK_SET );
break;
fseek( mFile, (long)pOffset, SEEK_CUR );
break;
fseek( mFile, (long)pOffset, SEEK_END );
break;
}
}
{
return 0;
return ftell( mFile );
}
{
if ( mFile )
fseek( mFile, pPosition, SEEK_SET );
}
{
return 0;
return ferror( mFile );
}
{
clearerr( mFile );
}
private:
FILE* mFile;
int mReaderID;
int mWriterID;
char mFileName[30];
char mMode[3];
};
int testExport()
{
CustomStreamClass stream( lSdkManager, "wb" );
if ( !lExporter->
Initialize( &stream, streamData, -1, ios ) )
return -1;
if ( !lExporter->
Export( lScene ) )
return -1;
return 0;
}
int testImport()
{
CustomStreamClass stream( lSdkManager, "rb" );
if ( !lImporter->
Initialize( &stream, streamData, -1, ios ) )
return -1;
if ( !lImporter->
Import( lScene ) )
return -1;
return 0;
}
int main(int , char** )
{
int ret;
ret = testExport();
if ( ret ) return ret;
ret = testImport();
if ( ret ) return ret;
return 0;
}