#ifdef FBXSDK_ENV_WIN
#include <malloc.h>
#endif
#include "../MyOwnWriterReader/MyOwnWriterReader.h"
#include "../Common/Common.h"
#define SAMPLE_FILENAME "ExportScene05.fbx"
int main(int argc, char** argv)
{
    bool lResult;
    
    InitializeSdkObjects(lSdkManager, lScene);
    
    lResult = CreateScene(lScene);
    if(lResult == false)
    {
        FBXSDK_printf("\n\nAn error occurred while creating the scene...\n");
        DestroySdkObjects(lSdkManager, lResult);
        return 1;
    }
    
    
    const char* lSampleFileName = 
NULL;
 
    for( int i = 1; i < argc; ++i )
    {
        if( FBXSDK_stricmp(argv[i], "-test") == 0 ) continue;
        else if( !lSampleFileName ) lSampleFileName = argv[i];
    }
    if( !lSampleFileName ) lSampleFileName = SAMPLE_FILENAME;
    lResult = SaveScene(lSdkManager, lScene, lSampleFileName);
    if(lResult == false)
    {
        FBXSDK_printf("\n\nAn error occurred while saving the scene...\n");
        DestroySdkObjects(lSdkManager, lResult);
        return 1;
    }
    
    FBXSDK_printf("Writing to file with custom writer\n");
    int lRegisteredCount;
    int lPluginId;
    
        lPluginId, lRegisteredCount, FillOwnWriterIOSettings);
    
    const char* lFileName = "CustomWriter.CFF";
    
    
    
    
    {
        FBXSDK_printf("Call to FbxExporter::Initialize() failed.\n");
        
        DestroySdkObjects(lSdkManager, false);
        return 1;
    }
    
    lResult = lExporter->
Export(lScene); 
 
    if(lResult == false)
    {
        FBXSDK_printf("Error in write of our custom writer\n");
        
        DestroySdkObjects(lSdkManager, lResult);
        return 1;
    }
    
    
        lPluginId, lRegisteredCount, FillOwnReaderIOSettings);
    
    
    
    
    lResult = lImporter->
Import(lScene);
 
    if(lResult == false)
    {
        FBXSDK_printf("There was a problem in the read of our custom reader\n");
        
        DestroySdkObjects(lSdkManager, lResult);
        return 1;
    }
    
    DestroySdkObjects(lSdkManager, lResult);
    return 0;
}
{
    
    
    
    pNodeA->UpdatePivotsAndLimitsFromProperties();
    
    
    pNodeB->UpdatePivotsAndLimitsFromProperties();
    
    
    lT.
Set(0.0, 0.0, 0.0); lGM.
SetT(lT);
 
    lR.
Set(0.0, 0.0, 45.0); lGM.
SetR(lR);
 
    SetGlobalDefaultPosition(pNodeA, lGM);
    
    lT.
Set(30.0, 20.0, 0.0); lGM.
SetT(lT);
 
    lR.
Set(0.0, 0.0, 0.0); lGM.
SetR(lR);
 
    SetGlobalDefaultPosition(pNodeB, lGM);
    
    lT.
Set(55.0, 20.0, 0.0); lGM.
SetT(lT);
 
    lR.
Set(0.0, 0.0, -40.0); lGM.
SetR(lR);
 
    SetGlobalDefaultPosition(pNodeC, lGM);
    
    lT.
Set(70.0, 10.0, 0.0); lGM.
SetT(lT);
 
    lR.
Set(0.0, 0.0, 0.0); lGM.
SetR(lR);
 
    SetGlobalDefaultPosition(pNodeD, lGM);
    
    
    
    
    
    
    
    
    
    
    
    
    pInstanceMetaData->
SetName(
"Instance");
 
    
    
    return true;
}
{
    {
        lParentGlobalPosition = GetGlobalDefaultPosition(pNode->
GetParent());
 
        lLocalPosition = lParentGlobalPosition.
Inverse() * pGlobalPosition;
 
    }
    else
    {
        lLocalPosition = pGlobalPosition;
    }
}
{
    {
        lParentGlobalPosition = GetGlobalDefaultPosition(pNode->
GetParent());
 
        lGlobalPosition = lParentGlobalPosition * lLocalPosition;
    }
    else
    {
        lGlobalPosition = lLocalPosition;
    }
    return lGlobalPosition;
}