/**************************************************************************************** Copyright (C) 2015 Autodesk, Inc. All rights reserved. Use of this software is subject to the terms of the Autodesk license agreement provided at the time of installation or download, or which otherwise accompanies this software in either electronic or hard copy form. ****************************************************************************************/ //! \file fbxanimlayer.h #ifndef _FBXSDK_SCENE_ANIMATION_LAYER_H_ #define _FBXSDK_SCENE_ANIMATION_LAYER_H_ #include #include #include class FbxAnimCurveNode; /** The animation layer is a collection of animation curve nodes. Its purpose is to store * a variable number of FbxAnimCurveNode. The class provides different states flags (bool properties), * an animatable weight, and the blending mode flag to indicate how the data on this layer is interacting * with the data of the other layers during the evaluation. * \nosubgrouping */ class FBXSDK_DLL FbxAnimLayer : public FbxCollection { FBXSDK_OBJECT_DECLARE(FbxAnimLayer, FbxCollection); public: ////////////////////////////////////////////////////////////////////////// // // Properties // ////////////////////////////////////////////////////////////////////////// /** This property stores the weight factor. * The weight factor is the percentage of influence this layer has during * the evaluation. * * Default value is \c 100.0 */ FbxPropertyT Weight; /** This property stores the mute state. * The mute state indicates that this layer should be excluded from the evaluation. * * Default value is \c false */ FbxPropertyT Mute; /** This property stores the solo state. * The solo state indicates that this layer is the only one that should be * processed during the evaluation. * * Default value is \c false */ FbxPropertyT Solo; /** This property stores the lock state. * The lock state indicates that this layer has been "locked" from editing operations * and should no longer receive keyframes. * * Default value is \c false */ FbxPropertyT Lock; /** This property stores the display color. * This color can be used by applications if they display a graphical representation * of the layer. The FBX SDK does not use it but guarantees that the value is saved to the FBX * file and retrieved from it. * * Default value is \c (0.8, 0.8, 0.8) */ FbxPropertyT Color; /** This property stores the blend mode. * The blend mode is used to specify how this layer influences the animation evaluation. See the * BlendMode enumeration for the description of the modes. * * Default value is \c eModeAdditive */ FbxPropertyT BlendMode; /** This property stores the rotation accumulation mode. * This option indicates how the rotation curves on this layer combine with any preceding layers * that share the same attributes. See the RotationAccumulationMode enumeration for the description * of the modes. * * Default value is \c eRotationByLayer */ FbxPropertyT RotationAccumulationMode; /** This property stores the scale accumulation mode. * This option indicates how the scale curves on this layer combine with any preceding layers * that share the same attributes. See the ScaleAccumulationMode enumeration for the description * of the modes. * * Default value is \c eScaleMultiply */ FbxPropertyT ScaleAccumulationMode; //! Reset this object properties to their default value. void Reset(); /** * \name BlendMode bypass functions * This section provides methods to bypass the current layer blend mode by data type. * When the state is \c true, the evaluators that are processing the layer will * need to consider that, for the given data type, the blend mode is forced to be Overwrite. * If the state is left to its default \c false value, then the layer blend mode applies. * \remarks This section only supports the basic types defined in the fbxtypes.h header file. */ //@{ /** Set the bypass flag for the given data type. * \param pType The fbxType identifier. * \param pState The new state of the bypass flag. * \remarks If pType is eFbxTypeCount, then pState is applied to all the data types. */ void SetBlendModeBypass(EFbxType pType, bool pState); /** Get the current state of the bypass flag for the given data type. * \param pType The fbxType identifier. * \return The current state of the flag for a valid pType value and \c false in any other case. */ bool GetBlendModeBypass(EFbxType pType); //@} /** Blend mode type between animation layers. */ enum EBlendMode { eBlendAdditive, //! The layer "adds" its animation to layers that precede it in the stack and affect the same attributes. eBlendOverride, //! The layer "overrides" the animation of any layer that shares the same attributes and precedes it in the stack. eBlendOverridePassthrough /*! mBlendModeBypass; #endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ }; #include #endif /* _FBXSDK_SCENE_ANIMATION_LAYER_H_ */