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 fbxlimitsutilities.h
13#ifndef _FBXSDK_SCENE_GEOMETRY_LIMIT_UTILS_H_
14#define _FBXSDK_SCENE_GEOMETRY_LIMIT_UTILS_H_
15
16#include <fbxsdk/fbxsdk_def.h>
17
18#include <fbxsdk/core/math/fbxvector4.h>
19#include <fbxsdk/core/math/fbxtransforms.h>
20#include <fbxsdk/scene/geometry/fbxnode.h>
21
22#include <fbxsdk/fbxsdk_nsbegin.h>
23
24/** \brief This class represent a utility of limits for transforms.
25* \nosubgrouping
26*/
27class FBXSDK_DLL FbxLimitsUtilities
28{
29public:
30 /** \enum EType Limit Type.
31 * - \e eTranslation Translation type
32 * - \e eRotation Rotation type
33 * - \e eScaling Scale type
34 */
35 enum EType
36 {
37 eTranslation,
38 eRotation,
39 eScaling
40 };
41
42 /** \enum ERotationType Rotation type.
43 * - \e eQuaternion Quaternion rotation type
44 * - \e eEuler Euler rotation type
45 */
46 enum ERotationType
47 {
48 eQuaternion,
49 eEuler
50 };
51
52 /** \enum ERotationClampType Rotation clamp type.
53 * - \e eRectangular Rectangular clamp type
54 * - \e eEllipsoid Ellipsoid clamp type
55 */
56 enum ERotationClampType
57 {
58 eRectangular,
59 eEllipsoid
60 };
61
62
63 FbxLimitsUtilities(FbxNode* pNode);
64
65 /**
66 * \name Getter/Setter functions
67 */
68 //@{
69 void SetAuto(EType pType, bool pAuto);
70 bool GetAuto(EType pType) const;
71
72 void SetEnable(EType pType, bool pEnable);
73 bool GetEnable(EType pType) const;
74
75 void SetDefault(EType pType, FbxVector4 pDefault);
76 FbxVector4 GetDefault(EType pType) const;
77
78 void SetMin(EType pType, FbxVector4 pMin);
79 FbxVector4 GetMin(EType pType) const;
80
81 void SetMax(EType pType, FbxVector4 pMax);
82 FbxVector4 GetMax(EType pType) const;
83
84 void SetRotationType(ERotationType pType);
85 ERotationType GetRotationType() const;
86
87 ERotationClampType GetRotationClampType() const;
88
89 void SetRotationAxis(FbxVector4 pRotationAxis);
90 FbxVector4 GetRotationAxis() const;
91
92 void SetAxisLength(double pLength);
93 double GetAxisLength() const;
94
95 void UpdateAutomatic(FbxNode* pNode);
96 FbxVector4 GetEndPointTranslation(FbxNode* pNode) const;
97 FbxVector4 GetEndSite(FbxNode* pNode) const;
98 //@}
99
100 FbxNode* mNode;
101 double mAxisLength;
102};
103
104#include <fbxsdk/fbxsdk_nsend.h>
105
106#endif /* _FBXSDK_SCENE_GEOMETRY_LIMIT_UTILS_H_ */
107