00001 /**************************************************************************************** 00002 00003 Copyright (C) 2013 Autodesk, Inc. 00004 All rights reserved. 00005 00006 Use of this software is subject to the terms of the Autodesk license agreement 00007 provided at the time of installation or download, or which otherwise accompanies 00008 this software in either electronic or hard copy form. 00009 00010 ****************************************************************************************/ 00011 00013 #ifndef _FBXSDK_SCENE_OBJECTS_CONTAINER_H_ 00014 #define _FBXSDK_SCENE_OBJECTS_CONTAINER_H_ 00015 00016 #include <fbxsdk/fbxsdk_def.h> 00017 00018 #include <fbxsdk/core/base/fbxarray.h> 00019 #include <fbxsdk/scene/fbxscene.h> 00020 00021 #include <fbxsdk/fbxsdk_nsbegin.h> 00022 00023 typedef FbxArray<FbxNodeAttribute::EType> FbxAttributeFilters; 00024 00025 /* Internal helper class used to traverse scene in the FbxAxisSystem and FbxSystemUnit 00026 */ 00027 class FbxObjectsContainer 00028 { 00029 public: 00030 enum EDepth 00031 { 00032 eChildOnly, 00033 eChildAndSubChild, 00034 eSubChildWithNoScaleInherit 00035 }; 00036 00037 FbxObjectsContainer() : mStartNode(NULL) {} 00038 virtual ~FbxObjectsContainer(){ Clear(); } 00039 00040 // Store all anim curve nodes pointers that need to be converted 00041 FbxArray<FbxAnimCurveNode*> mFCurvesT; 00042 FbxArray<FbxAnimCurveNode*> mFCurvesR; 00043 FbxArray<FbxAnimCurveNode*> mFCurvesS; 00044 00045 // Store all node that need to be converted 00046 FbxArray<FbxNode*> mNodes; 00047 00048 public: 00049 void ExtractSceneObjects(FbxScene* pScene, EDepth pDepth, const FbxAttributeFilters& pFilters); 00050 00051 void ExtractSceneObjects(FbxNode* pRootNode, EDepth pDepth, const FbxAttributeFilters& pFilters); 00052 00053 void Clear() { mFCurvesT.Clear(); mFCurvesR.Clear(); mFCurvesS.Clear(); mNodes.Clear(); mStartNode = NULL; } 00054 00055 protected: 00056 // Extract all node and fcurve from all take for this node. 00057 void ExtractNodesAnimCurveNodes(FbxNode* pNode, EDepth pDepth, const FbxAttributeFilters& pFilters); 00058 void ExtractAnimCurveNodes(FbxNode* pNode); 00059 bool InheritsScale( FbxNode* pNode ) const; 00060 00061 FbxNode* mStartNode; 00062 }; 00063 00064 #include <fbxsdk/fbxsdk_nsend.h> 00065 00066 #endif /* _FBXSDK_SCENE_OBJECTS_CONTAINER_H_ */