#include "../Common/Common.h"
#include "DisplayCommon.h"
#include "DisplayHierarchy.h"
#include "DisplayAnimation.h"
#include "DisplayMarker.h"
#include "DisplaySkeleton.h"
#include "DisplayMesh.h"
#include "DisplayNurb.h"
#include "DisplayPatch.h"
#include "DisplayLodGroup.h"
#include "DisplayCamera.h"
#include "DisplayLight.h"
#include "DisplayGlobalSettings.h"
#include "DisplayPose.h"
#include "DisplayPivotsAndLimits.h"
#include "DisplayUserProperties.h"
#include "DisplayGenericInfo.h"
void DisplayContent(
FbxNode* pNode);
 
void DisplayTarget(
FbxNode* pNode);
 
void DisplayTransformPropagation(
FbxNode* pNode);
 
void DisplayGeometricTransform(
FbxNode* pNode);
 
static bool gVerbose = true;
int main(int argc, char** argv)
{
    bool lResult;
    
    InitializeSdkObjects(lSdkManager, lScene);
    
    
    for( int i = 1, c = argc; i < c; ++i )
    {
        if( 
FbxString(argv[i]) == 
"-test" ) gVerbose = 
false;
 
        else if( lFilePath.IsEmpty() ) lFilePath = argv[i];
    }
    if( lFilePath.IsEmpty() )
    {
        lResult = false;
        FBXSDK_printf("\n\nUsage: ImportScene <FBX file name>\n\n");
    }
    else
    {
        FBXSDK_printf("\n\nFile: %s\n\n", lFilePath.Buffer());
        lResult = LoadScene(lSdkManager, lScene, lFilePath.Buffer());
    }
    if(lResult == false)
    {
        FBXSDK_printf("\n\nAn error occurred while loading the scene...");
    }
    else 
    {
        
        DisplayMetaData(lScene);
        FBXSDK_printf("\n\n---------------------\nGlobal Light Settings\n---------------------\n\n");
        FBXSDK_printf("\n\n----------------------\nGlobal Camera Settings\n----------------------\n\n");
        FBXSDK_printf("\n\n--------------------\nGlobal Time Settings\n--------------------\n\n");
        FBXSDK_printf("\n\n---------\nHierarchy\n---------\n\n");
        if( gVerbose ) DisplayHierarchy(lScene);
        FBXSDK_printf("\n\n------------\nNode Content\n------------\n\n");
        if( gVerbose ) DisplayContent(lScene);
        FBXSDK_printf("\n\n----\nPose\n----\n\n");
        if( gVerbose ) DisplayPose(lScene);
        FBXSDK_printf("\n\n---------\nAnimation\n---------\n\n");
        if( gVerbose ) DisplayAnimation(lScene);
        
        FBXSDK_printf("\n\n---------\nGeneric Information\n---------\n\n");
        if( gVerbose ) DisplayGenericInfo(lScene);
    }
    
    DestroySdkObjects(lSdkManager, lResult);
    return 0;
}
{
    int i;
    if(lNode)
    {
        {
        }
    }
}
void DisplayContent(
FbxNode* pNode)
 
{
    int i;
    {
        FBXSDK_printf("NULL Node Attribute\n\n");
    }
    else
    {
        switch (lAttributeType)
        {
        default:
            break;
            DisplayMarker(pNode);
            break;
            DisplaySkeleton(pNode);
            break;
            DisplayMesh(pNode);
            break;
            DisplayNurb(pNode);
            break;
            DisplayPatch(pNode);
            break;
            DisplayCamera(pNode);
            break;
            DisplayLight(pNode);
            break;
            DisplayLodGroup(pNode);
            break;
        }   
    }
    DisplayUserProperties(pNode);
    DisplayTarget(pNode);
    DisplayPivotsAndLimits(pNode);
    DisplayTransformPropagation(pNode);
    DisplayGeometricTransform(pNode);
    {
    }
}
{
    {
    }
}
void DisplayTransformPropagation(
FbxNode* pNode)
 
{
    FBXSDK_printf("    Transformation Propagation\n");
    
    
    
    FBXSDK_printf("        Rotation Space: ");
    switch (lRotationOrder)
    {
        FBXSDK_printf("Euler XYZ\n");
        break;
        FBXSDK_printf("Euler XZY\n");
        break;
        FBXSDK_printf("Euler YZX\n");
        break;
        FBXSDK_printf("Euler YXZ\n");
        break;
        FBXSDK_printf("Euler ZXY\n");
        break;
        FBXSDK_printf("Euler ZYX\n");
        break;
        FBXSDK_printf("Spheric XYZ\n");
        break;
    }
    
    
    
    
    FBXSDK_printf("        Use the Rotation Space for Limit specification only: %s\n",
    
    
    
    FBXSDK_printf("        Transformation Inheritance: ");
    switch (lInheritType)
    {
        FBXSDK_printf("RrSs\n");
        break;
        FBXSDK_printf("RSrs\n");
        break;
        FBXSDK_printf("Rrs\n");
        break;
    }
}
void DisplayGeometricTransform(
FbxNode* pNode)
 
{
    FBXSDK_printf("    Geometric Transformations\n");
    
    
    
    FBXSDK_printf("        Translation: %f %f %f\n", lTmpVector[0], lTmpVector[1], lTmpVector[2]);
    
    
    
    FBXSDK_printf("        Rotation:    %f %f %f\n", lTmpVector[0], lTmpVector[1], lTmpVector[2]);
    
    
    
    FBXSDK_printf("        Scaling:     %f %f %f\n", lTmpVector[0], lTmpVector[1], lTmpVector[2]);
}
{
    if (sceneInfo)
    {
        FBXSDK_printf("\n\n--------------------\nMeta-Data\n--------------------\n\n");
        if (thumbnail)
        {
            FBXSDK_printf("    Thumbnail:\n");
            switch (thumbnail->GetDataFormat())
            {
                FBXSDK_printf("        Format: RGB\n");
                break;
                FBXSDK_printf("        Format: RGBA\n");
                break;
            }
            switch (thumbnail->GetSize())
            {
            default:
                break;
                FBXSDK_printf("        Size: no dimensions specified (%ld bytes)\n", thumbnail->GetSizeInBytes());
                break;
                FBXSDK_printf("        Size: 64 x 64 pixels (%ld bytes)\n", thumbnail->GetSizeInBytes());
                break;
                FBXSDK_printf("        Size: 128 x 128 pixels (%ld bytes)\n", thumbnail->GetSizeInBytes());
            }
        }
    }
}