1/****************************************************************************************
2
3 Copyright (C) 2015 Autodesk, Inc.
4 All rights reserved.
5
6 Use of this software is subject to the terms of the Autodesk license agreement
7 provided at the time of installation or download, or which otherwise accompanies
8 this software in either electronic or hard copy form.
9
10****************************************************************************************/
11
12//! \file fbxvertexcachedeformer.h
13#ifndef _FBXSDK_SCENE_GEOMETRY_VERTEX_CACHE_DEFORMER_H_
14#define _FBXSDK_SCENE_GEOMETRY_VERTEX_CACHE_DEFORMER_H_
15
16#include <fbxsdk/fbxsdk_def.h>
17
18#include <fbxsdk/scene/geometry/fbxdeformer.h>
19#include <fbxsdk/scene/geometry/fbxcache.h>
20
21#include <fbxsdk/fbxsdk_nsbegin.h>
22
23/** \brief This class deforms control points of a geometry using control point positions
24 * stored in the associated cache object.
25 * \nosubgrouping
26 */
27class FBXSDK_DLL FbxVertexCacheDeformer : public FbxDeformer
28{
29 FBXSDK_OBJECT_DECLARE(FbxVertexCacheDeformer, FbxDeformer);
30
31public:
32 //! Vertex cache deformer data type
33 enum ECacheChannelType
34 {
35 ePositions, //!< This vertex cache deformer handles positions
36 eNormals, //!< This vertex cache deformer handles normals
37 eUVs, //!< This vertex cache deformer handles uvs
38 eTangents, //!< This vertex cache deformer handles tangents
39 eBinormals, //!< This vertex cache deformer handles binormals
40 eUserDefined //!< This vertex cache deformer handles user specified data (the cache channel string can provide a hint)
41 };
42
43 /** Assign a cache object to be used by this deformer.
44 * \param pCache The cache object. */
45 void SetCache(FbxCache* pCache);
46
47 /** Get the cache object used by this deformer.
48 * \return A pointer to the cache object used by this deformer, or \c NULL if no cache object is assigned. */
49 FbxCache* GetCache() const;
50
51 //! Indicate if the deformer is active or not.
52 FbxPropertyT<FbxBool> Active;
53
54 //! The channel name used in the cache file
55 FbxPropertyT<FbxString> Channel;
56
57 //! The cache set used by this vertex cache deformer
58 FbxPropertyT<FbxString> CacheSet;
59
60 //! The vertex cache deformer type
61 FbxPropertyT<ECacheChannelType> Type;
62
63/*****************************************************************************************************************************
64** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! **
65*****************************************************************************************************************************/
66#ifndef DOXYGEN_SHOULD_SKIP_THIS
67 virtual FbxObject& Copy(const FbxObject& pObject);
68 virtual EDeformerType GetDeformerType() const { return FbxDeformer::eVertexCache; }
69
70protected:
71 virtual void ConstructProperties(bool pForceSet);
72 virtual FbxStringList GetTypeFlags() const;
73#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/
74};
75
76inline EFbxType FbxTypeOf(const FbxVertexCacheDeformer::ECacheChannelType&){ return eFbxEnum; }
77
78#include <fbxsdk/fbxsdk_nsend.h>
79
80#endif /* _FBXSDK_SCENE_GEOMETRY_VERTEX_CACHE_DEFORMER_H_ */
81