FBX C++ API Reference
fbxproperty.h
Go to the documentation of this file.
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 
13 #ifndef _FBXSDK_CORE_PROPERTY_H_
14 #define _FBXSDK_CORE_PROPERTY_H_
15 
16 #include <fbxsdk/fbxsdk_def.h>
17 
18 #include <fbxsdk/core/fbxquery.h>
24 
25 #include <fbxsdk/fbxsdk_nsbegin.h>
26 
27 class FbxObject;
28 class FbxAnimStack;
29 class FbxAnimLayer;
30 class FbxAnimCurveNode;
31 class FbxAnimCurve;
32 class FbxAnimEvaluator;
33 
34 template <class T> inline T EvaluatePropertyValue(FbxProperty& pProperty, const FbxTime& pTime, bool pForceEval = false);
35 
40 {
41 public:
54  static FbxProperty Create(const FbxProperty& pCompoundProperty, const FbxDataType& pDataType, const char* pName, const char* pLabel="", bool pCheckForDup=true, bool* pWasFound=NULL);
55 
64  static FbxProperty Create(FbxObject* pObject, const FbxDataType& pDataType, const char* pName, const char* pLabel="", bool pCheckForDup=true, bool* pWasFound=NULL);
65 
72  static FbxProperty CreateFrom(const FbxProperty& pCompoundProperty, FbxProperty& pFromProperty, bool pCheckForDup=true);
73 
80  static FbxProperty CreateFrom(FbxObject* pObject, FbxProperty& pFromProperty, bool pCheckForDup=true);
81 
84  void Destroy();
85 
89  void DestroyRecursively();
90 
94  void DestroyChildren();
95 
98  FbxProperty();
99 
103  FbxProperty(const FbxProperty& pProperty);
104 
108  FbxProperty(const FbxPropertyHandle& pPropertyHandle);
109 
112  ~FbxProperty();
114 
122  FbxDataType GetPropertyDataType() const;
123 
127  FbxString GetName() const;
128 
132  const char* GetNameAsCStr() const;
133 
137  FbxString GetHierarchicalName() const;
138 
148  FbxString GetLabel(bool pReturnNameIfEmpty=true) const;
149 
150 
154  void SetLabel(const FbxString& pLabel);
155 
159  FbxObject* GetFbxObject() const;
161 
169  void SetUserTag(int pTag);
170 
172  int GetUserTag();
173 
177  void SetUserDataPtr(void* pUserData);
178 
182  void* GetUserDataPtr();
184 
193  void ModifyFlag(FbxPropertyFlags::EFlags pFlag, bool pValue);
194 
199  bool GetFlag(FbxPropertyFlags::EFlags pFlag) const;
200 
204  FbxPropertyFlags::EFlags GetFlags() const;
205 
210  FbxPropertyFlags::EInheritType GetFlagInheritType( FbxPropertyFlags::EFlags pFlag ) const;
211 
217  bool SetFlagInheritType( FbxPropertyFlags::EFlags pFlag, FbxPropertyFlags::EInheritType pType );
218 
223  bool ModifiedFlag( FbxPropertyFlags::EFlags pFlag ) const;
225 
234  FbxProperty& operator= (const FbxProperty& pProperty);
235 
240  bool operator== (const FbxProperty& pProperty) const;
241 
246  bool operator!= (const FbxProperty& pProperty) const;
247 
251  bool operator< (const FbxProperty& pProperty) const;
252 
256  bool operator> (const FbxProperty& pProperty) const;
257 
262  inline bool operator== (int pValue) const { return (pValue == 0) ? !IsValid() : IsValid(); }
263 
268  inline bool operator!= (int pValue) const { return (pValue != 0) ? !IsValid() : IsValid(); }
269 
274  bool CompareValue(const FbxProperty& pProperty) const;
276 
281  bool CopyValue(const FbxProperty& pProperty);
282 
291  template <class T> inline T Get() const { T lValue; Get(&lValue, FbxTypeOf(lValue)); return lValue; }
292 
297  template <class T> inline bool Set(const T& pValue){ return Set(&pValue, FbxTypeOf(pValue)); }
298 
302  bool IsValid() const;
303 
312  static bool HasDefaultValue(FbxProperty& pProperty);
313 
319  FbxPropertyFlags::EInheritType GetValueInheritType() const;
320 
331  bool SetValueInheritType( FbxPropertyFlags::EInheritType pType );
332 
340  bool Modified() const;
342 
363  bool SupportSetLimitAsDouble() const;
364 
369  bool SetMinLimit(double pMin);
370 
375  bool HasMinLimit() const;
376 
380  double GetMinLimit() const;
381 
386  bool HasMaxLimit() const;
387 
392  bool SetMaxLimit(double pMax);
393 
397  double GetMaxLimit() const;
398 
404  bool SetLimits(double pMin, double pMax);
406 
419  int AddEnumValue(const char* pStringValue);
420 
430  void InsertEnumValue(int pIndex, const char* pStringValue);
431 
436  int GetEnumCount() const;
437 
448  void SetEnumValue(int pIndex, const char* pStringValue);
449 
454  void RemoveEnumValue(int pIndex);
455 
460  const char* GetEnumValue(int pIndex) const;
462 
470  inline bool IsRoot() const { return mPropertyHandle.IsRoot(); }
471 
476  inline bool IsChildOf(const FbxProperty& pParent) const { return mPropertyHandle.IsChildOf(pParent.mPropertyHandle); }
477 
482  inline bool IsDescendentOf(const FbxProperty& pAncestor) const { return mPropertyHandle.IsDescendentOf(pAncestor.mPropertyHandle); }
483 
487  inline FbxProperty GetParent() const { return FbxProperty(mPropertyHandle.GetParent()); }
488 
492  inline FbxProperty GetChild() const { return FbxProperty(mPropertyHandle.GetChild()); }
493 
497  inline FbxProperty GetSibling() const { return FbxProperty(mPropertyHandle.GetSibling()); }
498 
502  inline FbxProperty GetFirstDescendent() const { return FbxProperty(mPropertyHandle.GetFirstDescendent()); }
503 
508  inline FbxProperty GetNextDescendent(const FbxProperty& pProperty) const { return FbxProperty(mPropertyHandle.GetNextDescendent(pProperty.mPropertyHandle)); }
509 
516  inline FbxProperty Find (const char* pName, bool pCaseSensitive = true) const { return FbxProperty(mPropertyHandle.Find(pName,pCaseSensitive)); }
517 
525  inline FbxProperty Find (const char* pName, const FbxDataType& pDataType, bool pCaseSensitive = true) const { return FbxProperty(mPropertyHandle.Find(pName,pDataType.GetTypeInfoHandle(),pCaseSensitive)); }
526 
533  inline FbxProperty FindHierarchical (const char* pName, bool pCaseSensitive = true) const { return FbxProperty(mPropertyHandle.Find(pName,sHierarchicalSeparator,pCaseSensitive)); }
534 
542  inline FbxProperty FindHierarchical (const char* pName, const FbxDataType& pDataType, bool pCaseSensitive = true) const { return FbxProperty(mPropertyHandle.Find(pName,sHierarchicalSeparator,pDataType.GetTypeInfoHandle(),pCaseSensitive)); }
544 
549  inline void BeginCreateOrFindProperty(){ mPropertyHandle.BeginCreateOrFindProperty(); }
551 
553  inline void EndCreateOrFindProperty(){ mPropertyHandle.EndCreateOrFindProperty(); }
554 
557  {
558  public:
562  FbxPropertyNameCache(const FbxProperty& prop) : mProp(const_cast<FbxProperty&>(prop)){ mProp.BeginCreateOrFindProperty(); }
563 
565  ~FbxPropertyNameCache(){ mProp.EndCreateOrFindProperty(); }
566 
567  private:
568  FbxProperty& mProp;
569  FbxPropertyNameCache& operator=(const FbxPropertyNameCache& pOther){ mProp = pOther.mProp; mProp.BeginCreateOrFindProperty(); return *this; }
570  };
572 
579  FbxAnimEvaluator* GetAnimationEvaluator() const;
580 
584  bool IsAnimated(FbxAnimLayer* pAnimLayer=NULL) const;
585 
591  template <class T> T EvaluateValue(const FbxTime& pTime=FBXSDK_TIME_INFINITE, bool pForceEval=false);
592 
597  FbxPropertyValue& EvaluateValue(const FbxTime& pTime=FBXSDK_TIME_INFINITE, bool pForceEval=false);
598 
606  FbxAnimCurveNode* CreateCurveNode(FbxAnimLayer* pAnimLayer);
607 
612  FbxAnimCurveNode* GetCurveNode(bool pCreate=false);
613 
620  FbxAnimCurveNode* GetCurveNode(FbxAnimStack* pAnimStack, bool pCreate=false);
621 
627  FbxAnimCurveNode* GetCurveNode(FbxAnimLayer* pAnimLayer, bool pCreate=false);
628 
638  inline FbxAnimCurve* GetCurve(FbxAnimLayer* pAnimLayer, bool pCreate=false)
639  {
640  return GetCurve(pAnimLayer, GetName(), NULL, pCreate);
641  }
642 
653  inline FbxAnimCurve* GetCurve(FbxAnimLayer* pAnimLayer, const char* pChannel, bool pCreate=false)
654  {
655  return GetCurve(pAnimLayer, GetName(), pChannel, pCreate);
656  }
657 
671  FbxAnimCurve* GetCurve(FbxAnimLayer* pAnimLayer, const char* pName, const char* pChannel, bool pCreate);
673 
683  bool ConnectSrcObject(FbxObject* pObject, FbxConnection::EType pType=FbxConnection::eNone);
684 
689  bool IsConnectedSrcObject(const FbxObject* pObject) const;
690 
695  bool DisconnectSrcObject(FbxObject* pObject);
696 
700  bool DisconnectAllSrcObject();
701 
706  bool DisconnectAllSrcObject(const FbxCriteria& pCriteria);
707 
711  int GetSrcObjectCount() const;
712 
717  int GetSrcObjectCount(const FbxCriteria& pCriteria) const;
718 
723  FbxObject* GetSrcObject(const int pIndex=0) const;
724 
730  FbxObject* GetSrcObject(const FbxCriteria& pCriteria, const int pIndex=0) const;
731 
737  FbxObject* FindSrcObject(const char* pName, const int pStartIndex=0) const;
738 
745  FbxObject* FindSrcObject(const FbxCriteria& pCriteria, const char* pName, const int pStartIndex=0) const;
746 
751  template <class T> inline bool DisconnectAllSrcObject(){ return DisconnectAllSrcObject(FbxCriteria::ObjectType(T::ClassId)); }
752 
758  template <class T> inline bool DisconnectAllSrcObject(const FbxCriteria& pCriteria){ return DisconnectAllSrcObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria); }
759 
764  template <class T> inline int GetSrcObjectCount() const { return GetSrcObjectCount(FbxCriteria::ObjectType(T::ClassId)); }
765 
771  template <class T> inline int GetSrcObjectCount(const FbxCriteria& pCriteria) const { return GetSrcObjectCount(FbxCriteria::ObjectType(T::ClassId) && pCriteria); }
772 
778  template <class T> inline T* GetSrcObject(const int pIndex=0) const { return (T*)GetSrcObject(FbxCriteria::ObjectType(T::ClassId), pIndex); }
779 
786  template <class T> inline T* GetSrcObject(const FbxCriteria& pCriteria, const int pIndex=0) const { return (T*)GetSrcObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria, pIndex); }
787 
794  template <class T> inline T* FindSrcObject(const char* pName, const int pStartIndex=0) const { return (T*)FindSrcObject(FbxCriteria::ObjectType(T::ClassId), pName, pStartIndex); }
795 
803  template <class T> inline T* FindSrcObject(const FbxCriteria& pCriteria, const char* pName, const int pStartIndex=0) const { return (T*)FindSrcObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria, pName, pStartIndex); }
804 
810  bool ConnectDstObject(FbxObject* pObject, FbxConnection::EType pType=FbxConnection::eNone);
811 
816  bool IsConnectedDstObject(const FbxObject* pObject) const;
817 
822  bool DisconnectDstObject(FbxObject* pObject);
823 
827  bool DisconnectAllDstObject();
828 
833  bool DisconnectAllDstObject(const FbxCriteria& pCriteria);
834 
838  int GetDstObjectCount() const;
839 
844  int GetDstObjectCount(const FbxCriteria& pCriteria) const;
845 
850  FbxObject* GetDstObject(const int pIndex=0) const;
851 
857  FbxObject* GetDstObject(const FbxCriteria& pCriteria, const int pIndex=0) const;
858 
864  FbxObject* FindDstObject(const char* pName, const int pStartIndex=0) const;
865 
872  FbxObject* FindDstObject(const FbxCriteria& pCriteria, const char* pName, const int pStartIndex=0) const;
873 
878  template <class T> inline bool DisconnectAllDstObject(){ return DisconnectAllDstObject(FbxCriteria::ObjectType(T::ClassId)); }
879 
885  template <class T> inline bool DisconnectAllDstObject(const FbxCriteria& pCriteria){ return DisconnectAllDstObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria); }
886 
891  template <class T> inline int GetDstObjectCount() const { return GetDstObjectCount(FbxCriteria::ObjectType(T::ClassId)); }
892 
898  template <class T> inline int GetDstObjectCount(const FbxCriteria& pCriteria) const { return GetDstObjectCount(FbxCriteria::ObjectType(T::ClassId) && pCriteria); }
899 
905  template <class T> inline T* GetDstObject(const int pIndex=0) const { return (T*)GetDstObject(FbxCriteria::ObjectType(T::ClassId), pIndex); }
906 
913  template <class T> inline T* GetDstObject(const FbxCriteria& pCriteria, const int pIndex=0) const { return (T*)GetDstObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria, pIndex); }
914 
921  template <class T> inline T* FindDstObject(const char* pName, const int pStartIndex=0) const { return (T*)FindDstObject(FbxCriteria::ObjectType(T::ClassId), pName, pStartIndex); }
922 
930  template <class T> inline T* FindDstObject(const FbxCriteria& pCriteria, const char* pName, const int pStartIndex=0) const { return (T*)FindDstObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria, pName, pStartIndex); }
932 
937  // Properties
942  bool ConnectSrcProperty(const FbxProperty& pProperty);
943 
948  bool IsConnectedSrcProperty(const FbxProperty& pProperty);
949 
954  bool DisconnectSrcProperty(const FbxProperty& pProperty);
955 
959  int GetSrcPropertyCount() const;
960 
965  bool ConnectDstProperty(const FbxProperty& pProperty);
966 
971  bool IsConnectedDstProperty(const FbxProperty& pProperty);
972 
977  bool DisconnectDstProperty(const FbxProperty& pProperty);
978 
982  int GetDstPropertyCount() const;
983 
985  void ClearConnectCache();
986 
991  FbxProperty GetSrcProperty(const int pIndex=0) const;
992 
998  FbxProperty FindSrcProperty(const char* pName, const int pStartIndex=0) const;
999 
1004  FbxProperty GetDstProperty(const int pIndex=0) const;
1005 
1011  FbxProperty FindDstProperty(const char* pName, const int pStartIndex=0) const;
1013 
1015  static const char* sHierarchicalSeparator;
1016 
1017 /*****************************************************************************************************************************
1018 ** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! **
1019 *****************************************************************************************************************************/
1020 #ifndef DOXYGEN_SHOULD_SKIP_THIS
1021 protected:
1022  FbxProperty(FbxObject* pObject, const char* pName, const FbxDataType& pDataType=FbxDataType(), const char* pLabel="");
1023  FbxProperty(const FbxProperty& pParent, const char* pName, const FbxDataType& pDataType, const char* pLabel);
1024 
1025  bool Set(const void* pValue, const EFbxType& pValueType, bool pCheckForValueEquality=true);
1026  bool Get(void* pValue, const EFbxType& pValueType) const;
1027 
1028  bool NotifySetRequest();
1029  bool NotifySet();
1030  bool NotifyGet() const;
1031 
1032 private:
1033  inline void* Get() const { FBX_ASSERT_NOW("Cannot get property value as void!"); return NULL; }
1034  inline bool Set(const void* &){ FBX_ASSERT_NOW("Cannot set property value as void!"); return false; }
1035 
1036  bool ConnectSrc(const FbxProperty& pProperty, FbxConnection::EType pType=FbxConnection::eNone);
1037  bool DisconnectSrc(const FbxProperty& pProperty);
1038  bool DisconnectAllSrc();
1039  bool DisconnectAllSrc(const FbxCriteria& pCriteria);
1040  bool IsConnectedSrc(const FbxProperty& pProperty) const;
1041  int GetSrcCount() const;
1042  int GetSrcCount(const FbxCriteria& pCriteria) const;
1043  FbxProperty GetSrc(int pIndex=0) const;
1044  FbxProperty GetSrc(const FbxCriteria& pCriteria, int pIndex=0) const;
1045  FbxProperty FindSrc(const FbxCriteria& pCriteria, const char* pName, int pStartIndex=0) const;
1046 
1047  bool ConnectDst(const FbxProperty& pProperty, FbxConnection::EType pType=FbxConnection::eNone);
1048  bool DisconnectDst(const FbxProperty& pProperty);
1049  bool DisconnectAllDst();
1050  bool DisconnectAllDst(const FbxCriteria& pCriteria);
1051  bool IsConnectedDst(const FbxProperty& pProperty) const;
1052  int GetDstCount() const;
1053  int GetDstCount(const FbxCriteria& pCriteria) const;
1054  FbxProperty GetDst(int pIndex=0) const;
1055  FbxProperty GetDst(const FbxCriteria& pCriteria, int pIndex=0) const;
1056  FbxProperty FindDst(const FbxCriteria& pCriteria, const char* pName, int pStartIndex=0) const;
1057 
1058  mutable FbxPropertyHandle mPropertyHandle;
1059 
1060  friend class FbxObject;
1061  friend class FbxIOSettings;
1062  friend class FbxBindingOperator;
1063  friend class FbxAnimEvalClassic;
1064  friend void FbxMarkObject(FbxObject* pObject, FbxMap<FbxObject*, int>& pObjectDstDisconnectCount, FbxSet<FbxObject*>& pObjectsToDeleted, FbxArray<FbxObject*>& pObjectToDeletedInSequence);
1065  friend void FbxCleanUpConnectionsAtDestructionBoundary(FbxScene* pObject, FbxArray<FbxObject*>& pObjectToDeletedInSequence);
1066 #endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/
1067 };
1068 
1072 template <class T> class FbxPropertyT : public FbxProperty
1073 {
1074 public:
1076  typedef T ValueType;
1077 
1089  FbxProperty& StaticInit(FbxObject* pObject, const char* pName, const T& pValue, bool pForceSet, FbxPropertyFlags::EFlags pFlags=FbxPropertyFlags::eNone)
1090  {
1091  return StaticInit(pObject, pName, FbxGetDataTypeFromEnum(FbxTypeOf(pValue)), pValue, pForceSet, pFlags);
1092  }
1093 
1102  FbxProperty& StaticInit(FbxObject* pObject, const char* pName, const FbxDataType& pDataType, const T& pValue, bool pForceSet, FbxPropertyFlags::EFlags pFlags=FbxPropertyFlags::eNone)
1103  {
1104  bool lWasFound = false;
1105  *this = Create(pObject, pDataType, pName, "", true, &lWasFound);
1106  if( pForceSet || !lWasFound )
1107  {
1108  ModifyFlag(pFlags, true); // modify the flags before we set the value
1109  FbxProperty::Set(&pValue, FbxTypeOf(pValue), false);
1110  }
1112  return *this;
1113  }
1114 
1123  FbxProperty& StaticInit(FbxProperty pCompound, const char* pName, const FbxDataType& pDataType, const T& pValue, bool pForceSet=true, FbxPropertyFlags::EFlags pFlags=FbxPropertyFlags::eNone)
1124  {
1125  bool lWasFound = false;
1126  *this = Create(pCompound, pDataType, pName, "", true, &lWasFound);
1127  if( pForceSet || !lWasFound )
1128  {
1129  ModifyFlag(pFlags, true); // modify the flags before we set the value
1130  FbxProperty::Set(&pValue, FbxTypeOf(pValue), false);
1131  }
1133  return *this;
1134  }
1136 
1142  FbxPropertyT& Set(const T& pValue){ FbxProperty::Set(&pValue, FbxTypeOf(pValue)); return *this; }
1143 
1146  T Get() const { T lValue; FbxProperty::Get(&lValue, FbxTypeOf(lValue)); return lValue; }
1147 
1151  FbxPropertyT& operator=(const T& pValue){ return Set(pValue); }
1152 
1155  operator T() const { return Get(); }
1157 
1164  T EvaluateValue(const FbxTime& pTime=FBXSDK_TIME_INFINITE, bool pForceEval=false)
1165  {
1166  return EvaluatePropertyValue<T>(*this, pTime, pForceEval);
1167  }
1169 
1170 /*****************************************************************************************************************************
1171 ** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! **
1172 *****************************************************************************************************************************/
1173 #ifndef DOXYGEN_SHOULD_SKIP_THIS
1174  FbxPropertyT() : FbxProperty(){}
1175  FbxPropertyT(const FbxProperty& pProperty) : FbxProperty(pProperty){}
1176  ~FbxPropertyT(){}
1177 #endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/
1178 };
1179 
1180 /*****************************************************************************************************************************
1181 ** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! **
1182 *****************************************************************************************************************************/
1183 #ifndef DOXYGEN_SHOULD_SKIP_THIS
1184 template <> class FbxPropertyT<FbxReference> : public FbxProperty
1185 {
1186 public:
1187  FbxPropertyT() : FbxProperty(){}
1188  FbxPropertyT(const FbxProperty& pProperty) : FbxProperty(pProperty){}
1189  ~FbxPropertyT(){}
1190 
1191  const FbxProperty& StaticInit(FbxObject* pObject, const char* pName, const FbxReference& pValue, bool pForceSet, FbxPropertyFlags::EFlags pFlags=FbxPropertyFlags::eNone)
1192  {
1193  return StaticInit(pObject, pName, FbxGetDataTypeFromEnum(eFbxReference), pValue, pForceSet, pFlags);
1194  }
1195 
1196  const FbxProperty& StaticInit(FbxObject* pObject, const char* pName, const FbxDataType& pDataType, const FbxReference& pValue, bool pForceSet, FbxPropertyFlags::EFlags pFlags=FbxPropertyFlags::eNone)
1197  {
1198  bool lWasFound = false;
1199  *this = Create(pObject, pDataType, pName, "", true, &lWasFound);
1200  if( pForceSet || !lWasFound )
1201  {
1202  ModifyFlag(pFlags, true); // modify the flags before we set the value
1203  Set(pValue); // since we will trigger callbacks in there!
1204  }
1206  return *this;
1207  }
1208 
1209  FbxReference Get() const
1210  {
1211  FbxProperty::NotifyGet();
1212  return GetSrcObject();
1213  }
1214 
1215  FbxPropertyT& Set(const FbxReference& pValue)
1216  {
1217  if( FbxProperty::NotifySetRequest() )
1218  {
1220  if( ConnectSrcObject(pValue) )
1221  {
1223  FbxProperty::NotifySet();
1224  }
1225  }
1226  return *this;
1227  }
1228 
1229  operator FbxReference() const
1230  {
1231  return Get();
1232  }
1233 
1234  FbxPropertyT& operator=(const FbxReference& pValue)
1235  {
1236  return Set(pValue);
1237  }
1238 };
1239 #endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/
1240 
1241 #include <fbxsdk/fbxsdk_nsend.h>
1242 
1243 #endif /* _FBXSDK_CORE_PROPERTY_H_ */
T * GetDstObject(const int pIndex=0) const
Returns the destination object of the specified class type at the specified index with which this pro...
Definition: fbxproperty.h:905
The animation layer is a collection of animation curve nodes.
Definition: fbxanimlayer.h:30
FbxAnimCurve * GetCurve(FbxAnimLayer *pAnimLayer, bool pCreate=false)
Get the FbxAnimCurve from the specified animation layer.
Definition: fbxproperty.h:638
An evaluator implementation that behaves like the original FBX SDK (2010 and previous) evaluation sys...
Class to manage property handle.
T Get() const
Gets the value of the property.
Definition: fbxproperty.h:291
int GetSrcObjectCount(const FbxCriteria &pCriteria) const
Returns the number of source objects which are of the specified class type and satisfy the given crit...
Definition: fbxproperty.h:771
FBX SDK environment definition.
FbxProperty GetNextDescendent(const FbxProperty &pProperty) const
Returns the property that follows pProperty that is a descendant of this property.
Definition: fbxproperty.h:508
bool DisconnectAllDstObject(const FbxCriteria &pCriteria)
Disconnects this property from all the destination objects which are of the specified class type and ...
Definition: fbxproperty.h:885
FbxPropertyT & Set(const T &pValue)
Assignment function.
Definition: fbxproperty.h:1142
FbxPropertyT & operator=(const T &pValue)
Assignment operator.
Definition: fbxproperty.h:1151
The Animation stack is a collection of animation layers.
Definition: fbxanimstack.h:37
This class is an composite of animation curves and is called as animation curve node.
T Get() const
Retrieve function.
Definition: fbxproperty.h:1146
EFlags
Property flags that affect their behaviors.
T * GetSrcObject(const int pIndex=0) const
Returns the source object of the specified class type at the specified index.
Definition: fbxproperty.h:778
T EvaluateValue(const FbxTime &pTime=FbxTime((0x7fffffffffffffffLL)), bool pForceEval=false)
Evaluate the value of a property if it has animation and return the result.
Definition: fbxproperty.h:1164
FbxObject * FbxReference
Definition: fbxtypes.h:55
int GetSrcObjectCount() const
Returns the number of source objects of a specific class type with which this property connects...
Definition: fbxproperty.h:764
void ModifyFlag(FbxPropertyFlags::EFlags pFlag, bool pValue)
Changes the property attribute.
#define NULL
Definition: fbxarch.h:213
FbxAnimCurve * GetCurve(FbxAnimLayer *pAnimLayer, const char *pChannel, bool pCreate=false)
Get the FbxAnimCurve from the specified animation layer.
Definition: fbxproperty.h:653
bool DisconnectAllSrcObject()
Disconnects this property from all the source objects.
Utility class to manipulate strings.
Definition: fbxstring.h:66
FbxObject * GetSrcObject(const int pIndex=0) const
Returns the source object at the specified index with which this property connects.
FbxProperty & StaticInit(FbxObject *pObject, const char *pName, const FbxDataType &pDataType, const T &pValue, bool pForceSet, FbxPropertyFlags::EFlags pFlags=FbxPropertyFlags::eNone)
Creates a property and initializes it using a specific value and flag.
Definition: fbxproperty.h:1102
FBX SDK data type class.
Definition: fbxdatatypes.h:26
bool IsChildOf(const FbxProperty &pParent) const
Judges whether this property is a child of the specified property.
Definition: fbxproperty.h:476
static const char * sHierarchicalSeparator
Hierarchical separator of properties.
Definition: fbxproperty.h:1015
int GetDstObjectCount(const FbxCriteria &pCriteria) const
Returns the number of destination objects which are of the specified class type and satisfy the given...
Definition: fbxproperty.h:898
FbxProperty GetChild() const
Returns the first child of this property.
Definition: fbxproperty.h:492
T * GetDstObject(const FbxCriteria &pCriteria, const int pIndex=0) const
Returns the destination object which is of the specified class type and satisfies the given criteria ...
Definition: fbxproperty.h:913
const FbxDataType & FbxGetDataTypeFromEnum(const EFbxType pType)
Retrieve data type from type enumeration index.
FbxIOSettings is a collection of properties, arranged as a tree, that can be used by FBX file readers...
void BeginCreateOrFindProperty()
Internal function for building a property name map.
Definition: fbxproperty.h:550
static FbxProperty Create(const FbxProperty &pCompoundProperty, const FbxDataType &pDataType, const char *pName, const char *pLabel="", bool pCheckForDup=true, bool *pWasFound=((void *) 0))
Creates a runtime property on the specified property.
T * GetSrcObject(const FbxCriteria &pCriteria, const int pIndex=0) const
Returns the source object which is of the specified class type and satisfies the given criteria at th...
Definition: fbxproperty.h:786
FbxProperty FindHierarchical(const char *pName, const FbxDataType &pDataType, bool pCaseSensitive=true) const
Searches a property using its full name and data type.
Definition: fbxproperty.h:542
Property override this flag from its reference property.
This is an internal class that you can use to build and clear the name map of properties. You can use the name map to speed up searching for property names.
Definition: fbxproperty.h:556
bool DisconnectAllSrcObject()
Disconnects this property from all source objects of the specified class type.
Definition: fbxproperty.h:751
#define FBXSDK_TIME_INFINITE
Definition: fbxtime.h:23
FbxProperty GetFirstDescendent() const
Returns the first property that is a descendant of this property.
Definition: fbxproperty.h:502
T * FindDstObject(const FbxCriteria &pCriteria, const char *pName, const int pStartIndex=0) const
Searches the destination object with the specified name which is of the specified class type and sati...
Definition: fbxproperty.h:930
This class implements an efficient map based on key comparison, which stores key-value pairs...
Definition: fbxmap.h:68
T * FindSrcObject(const char *pName, const int pStartIndex=0) const
Searches the source object with the specified name which is of the specified class type...
Definition: fbxproperty.h:794
const FbxPropertyHandle & GetTypeInfoHandle() const
Retrieve the information handle of this data type.
Definition: fbxdatatypes.h:103
static FbxCriteria ObjectType(const FbxClassId &pClassId)
Creates a new query criteria that only selects objects which have a specific class ID or derive from ...
bool ConnectSrcObject(FbxObject *pObject, FbxConnection::EType pType=FbxConnection::eNone)
Connects this property to one source object.
bool SetValueInheritType(FbxPropertyFlags::EInheritType pType)
Sets the inheritance type of the property.
EFbxType
Type identifier constants.
Class to encapsulate time units.
Definition: fbxtime.h:44
T * FindDstObject(const char *pName, const int pStartIndex=0) const
Searches the destination object with the specified name which is of the specified class type...
Definition: fbxproperty.h:921
The base class of most FBX objects.
Definition: fbxobject.h:157
FbxProperty & StaticInit(FbxObject *pObject, const char *pName, const T &pValue, bool pForceSet, FbxPropertyFlags::EFlags pFlags=FbxPropertyFlags::eNone)
Creates a property and initializes it using a specific value and flag.
Definition: fbxproperty.h:1089
bool DisconnectAllSrcObject(const FbxCriteria &pCriteria)
Disconnects this property from all source objects which are of the specified class type and satisfy t...
Definition: fbxproperty.h:758
This class contains the description of a 3D scene.
Definition: fbxscene.h:61
EFbxType FbxTypeOf(const FbxChar &)
FbxPropertyNameCache(const FbxProperty &prop)
Constructor, the name map is created in the constructor.
Definition: fbxproperty.h:562
This class implements an efficient set based on value comparison, which stores values.
Definition: fbxset.h:25
bool IsDescendentOf(const FbxProperty &pAncestor) const
Judges whether this property is a descendant of the specified property.
Definition: fbxproperty.h:482
bool IsRoot() const
Judges if this property is the root property.
Definition: fbxproperty.h:470
FbxProperty GetSibling() const
Returns the sibling of this property.
Definition: fbxproperty.h:497
FbxProperty & StaticInit(FbxProperty pCompound, const char *pName, const FbxDataType &pDataType, const T &pValue, bool pForceSet=true, FbxPropertyFlags::EFlags pFlags=FbxPropertyFlags::eNone)
Creates a property and initializes it using a specific value and flag.
Definition: fbxproperty.h:1123
Defines a filtering criteria for a query of objects, connections and properties, so that only those s...
Definition: fbxquery.h:104
The principal interface for animation evaluators.
FbxProperty Find(const char *pName, bool pCaseSensitive=true) const
Searches a property using its name.
Definition: fbxproperty.h:516
FbxProperty Find(const char *pName, const FbxDataType &pDataType, bool pCaseSensitive=true) const
Searches a property using its name and data type.
Definition: fbxproperty.h:525
Class to hold user properties.
Definition: fbxproperty.h:39
bool Set(const T &pValue)
Sets the value of the property.
Definition: fbxproperty.h:297
An animation curve, defined by a collection of keys (FbxAnimCurveKey), and indicating how a value cha...
Definition: fbxanimcurve.h:779
T * FindSrcObject(const FbxCriteria &pCriteria, const char *pName, const int pStartIndex=0) const
Searches the source object with the specified name which is of the specified class type and satisfies...
Definition: fbxproperty.h:803
Reference to object or property.
This object represents a binding operation on a FbxObject or FbxProperty.
bool DisconnectAllDstObject()
Disconnects this property from all the destination objects of the specified class type...
Definition: fbxproperty.h:878
#define FBXSDK_DLL
Definition: fbxarch.h:176
T ValueType
Provides access to the property's underlying type.
Definition: fbxproperty.h:1076
void EndCreateOrFindProperty()
Internal function for clearing the property name map.
Definition: fbxproperty.h:553
FbxProperty GetParent() const
Returns the parent property of this property.
Definition: fbxproperty.h:487
int GetDstObjectCount() const
Returns the number of destination objects of the specified class type with which this property connec...
Definition: fbxproperty.h:891
~FbxPropertyNameCache()
Destructor, the name map is destroyed in destructor.
Definition: fbxproperty.h:565
EInheritType
Property inherit types.
This template class is used to contain user properties of specific data types.
Definition: fbxproperty.h:1072
Property is defined in the class declaration, so it wasn't created dynamically.
FbxProperty FindHierarchical(const char *pName, bool pCaseSensitive=true) const
Searches a property using its full name.
Definition: fbxproperty.h:533
T EvaluatePropertyValue(FbxProperty &pProperty, const FbxTime &pTime, bool pForceEval=false)
Evaluate the property at the specified time using the template type provided.