#if (_MSC_VER)
#ifndef _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES
#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1
#endif
#ifndef _CRT_NONSTDC_NO_WARNINGS
#define _CRT_NONSTDC_NO_WARNINGS 1
#endif
#ifndef _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS 1
#endif
#ifndef _CRT_SECURE_NO_DEPRECATE
#define _CRT_SECURE_NO_DEPRECATE 1
#endif
#endif
#include "MyOwnReader.h"
MyOwnReader::MyOwnReader(FbxManager &pFbxManager, int pID):
FbxReader(pFbxManager, pID, mStatus),
mManager(&pFbxManager)
{
}
MyOwnReader::~MyOwnReader()
{
FbxArrayDelete(mTakeInfo);
FileClose();
}
void MyOwnReader::GetVersion(int& pMajor, int& pMinor, int& pRevision)
{
pMajor = 1;
pMinor = 0;
pRevision=0;
}
bool MyOwnReader::FileOpen(char* pFileName)
{
FileClose();
mFilePointer = fopen(pFileName, "r");
return false;
FbxTakeInfo * lTakeInfo = FbxNew<FbxTakeInfo>();
lTakeInfo->mName = "First Take";
mTakeInfo.Add(lTakeInfo);
lTakeInfo = FbxNew<FbxTakeInfo>();
lTakeInfo->mName = "Second Take";
mTakeInfo.Add(lTakeInfo);
return true;
}
bool MyOwnReader::FileClose()
{
fclose(mFilePointer);
return true;
}
bool MyOwnReader::IsFileOpen()
{
return true;
return false;
}
bool MyOwnReader::GetReadOptions(bool )
{
return true;
}
FbxArray<FbxTakeInfo*>* MyOwnReader::GetTakeInfo()
{
return &mTakeInfo;
}
{
if (!pDocument)
{
GetStatus().SetCode(FbxStatus::eInvalidFile);
return false;
}
FbxScene* lScene = FbxCast<FbxScene>(pDocument);
bool lIsAScene = (lScene !=
NULL);
bool lResult = false;
if(lIsAScene)
{
FbxNode* lRootNode = lScene->GetRootNode();
FbxNodeAttribute * lRootNodeAttribute = FbxNull::Create(lScene,"");
lRootNode->SetNodeAttribute(lRootNodeAttribute);
int lSize;
{
fseek (mFilePointer , 0 , SEEK_END);
lSize = ftell (mFilePointer);
rewind (mFilePointer);
lBuffer = (char*) malloc (sizeof(char)*lSize + 1);
size_t lRead = fread(lBuffer, 1, lSize, mFilePointer);
lBuffer[lRead]='\0';
FbxString lString(lBuffer);
FbxString lSubString, lChildName, lParentName;
FbxNode* lChildNode;
FbxNode* lParentNode;
FbxNodeAttribute* lChildAttribute;
int lEndTokenCount = lString.GetTokenCount("\n");
for (
int i = 0;
i < lEndTokenCount;
i++)
{
lSubString = lString.GetToken(
i,
"\n");
FbxString lNodeString;
lChildName = lSubString.GetToken(0, "\"");
lParentName = lSubString.GetToken(2, "\"");
if(lParentName == "RootNode")
{
lChildNode = FbxNode::Create(lScene,lChildName.Buffer());
lChildAttribute = FbxNull::Create(mManager,"");
lChildNode->SetNodeAttribute(lChildAttribute);
lRootNode->AddChild(lChildNode);
}
else
{
lChildNode = FbxNode::Create(lScene,lChildName.Buffer());
lChildAttribute = FbxNull::Create(lScene,"");
lChildNode->SetNodeAttribute(lChildAttribute);
lParentNode = lRootNode->FindChild(lParentName.Buffer());
if(lParentNode)
{
lParentNode->AddChild(lChildNode);
} else {
}
}
}
free(lBuffer);
}
lResult = true;
}
return lResult;
}