13 #ifndef _FBXSDK_CORE_PROPERTY_PAGE_H_
14 #define _FBXSDK_CORE_PROPERTY_PAGE_H_
50 return FbxNew< FbxPropertyInfo >(mName,mTypeInfo);
54 return FbxNew< FbxPropertyInfo >(mName,mType);
68 inline void SetLabel(
const char* pLabel) { mLabel=pLabel; }
69 inline const char*
GetLabel()
const {
return mLabel.IsEmpty() ?
"" : ((
const char*)mLabel); }
71 inline void SetUserTag(
int pUserTag) { mUserTag=pUserTag; }
74 inline void SetUserData(
const void* pUserData) { mUserData=(
void*)pUserData; }
84 mEnumList.Reset(FbxNew< FbxStringList >());
86 bool lCanAdd = (lType ==
eFbxEnumM || mEnumList->FindIndex( pStringValue ) == -1);
88 return mEnumList->Add((
char*)pStringValue);
99 mEnumList.Reset(FbxNew< FbxStringList >());
101 bool lCanAdd = (lType ==
eFbxEnumM || mEnumList->FindIndex( pStringValue ) == -1);
103 mEnumList->InsertAt(pIndex,(
char*)pStringValue);
109 return mEnumList ? mEnumList->GetCount() : 0;
118 mEnumList.Reset(FbxNew< FbxStringList >());
120 bool lCanAdd = (lType ==
eFbxEnumM || mEnumList->FindIndex( pStringValue ) == -1);
122 mEnumList->SetStringAt(pIndex,(
char*)pStringValue);
132 mEnumList.Reset(FbxNew< FbxStringList >());
134 mEnumList->RemoveAt(pIndex);
144 lValue = mEnumList ? mEnumList->GetStringAt(pIndex) : 0;
155 return mMinMaxValue[pId] !=
NULL;
160 if (mMinMaxValue[pId]) {
161 return FbxTypeCopy(pValue, pValueType, mMinMaxValue[pId], GetType());
168 if (!mMinMaxValue[pId]) {
171 mMinMaxValue[pId] = FbxMalloc(lSize);
174 if (mMinMaxValue[pId]) {
175 return FbxTypeCopy(mMinMaxValue[pId], GetType(), pValue, pValueType);
185 , mTypeInfo(pTypeInfo)
190 for (
int i=0; i<eValueCount; i++) {
199 , mTypeInfo(pTypeInfo)
204 for (
int i=0; i<eValueCount; i++) {
218 for (
int i=0; i<eValueCount; i++) {
224 for (
int i=eValueMin; i<eValueCount; i++) {
225 FbxFree(mMinMaxValue[i]);
235 void* mMinMaxValue[eValueCount];
241 #if defined(FBXSDK_COMPILER_MSC)
242 #pragma warning (push)
243 #pragma warning (disable: 4355)
254 return FbxNew< FbxPropertyConnect >(pPage,mId);
269 mConnectionPoint.SubConnectRemoveAll();
275 mConnectionPoint.WipeConnectionList();
293 return mConnectionPoint.GetSrcCount(pFilter);
314 return mConnectionPoint.GetDstCount(pFilter);
330 mConnectionPoint(this),
339 #if defined(FBXSDK_COMPILER_MSC)
340 #pragma warning (pop)
351 inline bool IsEmpty(){
return (mInfo || mValue || mConnect || mFlags.GetMask() != 0) ?
false :
true; }
358 if( pInfo ) pInfo->
IncRef();
360 if( lInfo ) lInfo->
DecRef();
368 if( pValue ) pValue->
IncRef();
370 if( lValue ) lValue->
DecRef();
378 if( pConnect ) pConnect->
IncRef();
380 if( lConnect ) lConnect->
DecRef();
392 mParentId(pParentId),
395 if( mInfo ) mInfo->IncRef();
396 if( mValue ) mValue->IncRef();
397 if( mConnect ) mConnect->IncRef();
402 if( mInfo ) mInfo->DecRef();
403 if( mValue ) mValue->DecRef();
404 if( mConnect ) mConnect->DecRef();
445 FbxPropertyEntry* lReferenceEntry = GetPropertyEntry(pIndex,&lReferencePage);
446 if (pFoundIn) *pFoundIn = 0;
447 if (lReferenceEntry) {
450 if (pFoundIn) *pFoundIn = lReferencePage;
453 return lReferencePage->mInstanceOf ? lReferencePage->mInstanceOf->
GetPropertyItem(pItemType,pIndex,pFoundIn) : 0 ;
462 T* lItem = GetPropertyItem(pItemType, pIndex, &lReferencePage);
465 if( lReferencePage ==
this )
472 lEntry->
Set(lItem->Clone(
this));
479 bool lOwnEntry = !mInstanceOf || (mInstanceOf->GetPropertyItem(pItemType, pIndex) ==
NULL);
482 if( lItem && (lReferencePage ==
this) )
499 GetPropertyItem(
FBX_TYPE(T), pId, &lReferencePage);
500 if( lReferencePage && lReferencePage->mInstanceOf )
503 return lReferencePage2 ? lReferencePage2 : lReferencePage;
505 return lReferencePage;
511 return lPropertyInfo ? ((
const char*)lPropertyInfo->
GetName()) :
"";
517 return lPropertyInfo ? ((
const char*)lPropertyInfo->
GetLabel()) :
"";
535 return lPropertyInfo ? lPropertyInfo->
GetUserData() : 0;
553 return lPropertyInfo ? lPropertyInfo->
GetUserTag() : 0;
583 return lPropertyInfo ? lPropertyInfo->
GetTypeInfo() : 0;
613 return GetParent(pId)==pParentId;
620 FbxInt lParentId = GetParent(pId);
622 if (lParentId==pAncestorId) {
625 lParentId = GetParent(lParentId);
642 #ifdef PROPERTY_PAGE_SANITY_CHECK
645 FbxInt lId = GetMinimumPropertyId(pParentId);
646 FbxInt lParentId = GetParent(lId);
647 const FbxInt lLastId = GetPropertyEntryCount();
649 while (lId<lLastId && lParentId!=pParentId) lParentId=GetParent(++lId);
662 lId = GetMinimumPropertyIdAndEntry(lId, &lEntry);
666 #ifdef PROPERTY_PAGE_SANITY_CHECK
667 FBX_ASSERT(ret0==ret1);
678 #ifdef PROPERTY_PAGE_SANITY_CHECK
682 FbxInt lReferenceParentId = GetParent(pId);
683 FbxInt lParentId = GetParent(++pId);
684 const FbxInt lLastId = GetPropertyEntryCount();
687 lParentId=GetParent(++pId);
697 FbxInt lReferenceParentId = GetParent(pId);
704 pId = GetMinimumPropertyIdAndEntry(pId, &lEntry);
711 #ifdef PROPERTY_PAGE_SANITY_CHECK
712 FBX_ASSERT(ret0==ret1);
723 #ifdef PROPERTY_PAGE_SANITY_CHECK
726 FbxInt lId = GetMinimumPropertyId(pAnscestorId);
727 FbxInt lParentId = GetParent(lId);
728 const FbxInt lLastId = GetPropertyEntryCount();
730 while (lId<lLastId) {
736 lParentId = GetParent(++lId);
741 FbxInt lId = pAnscestorId;
747 lId = GetMinimumPropertyIdAndEntry(lId, &lEntry);
758 #ifdef PROPERTY_PAGE_SANITY_CHECK
759 FBX_ASSERT(ret0==ret1);
771 #ifdef PROPERTY_PAGE_SANITY_CHECK
775 FbxInt lParentId = GetParent(++pId);
776 const FbxInt lLastId = GetPropertyEntryCount();
778 while (pId<lLastId) {
787 lParentId = GetParent(++pId);
799 pId = GetMinimumPropertyIdAndEntry(pId, &lEntry);
810 #ifdef PROPERTY_PAGE_SANITY_CHECK
811 FBX_ASSERT(ret0==ret1);
821 bool lSlowQuery =
true;
822 if( mNameMap.mSecond.GetSize() > 0 )
833 lId = lIterator->GetValue();
845 if ( lTypeInfo2 && lTypeInfo2->
Is(pTypeInfo) )
863 if ( (!pTypeInfo || lPropertyInfo->
GetTypeInfo()->
Is(pTypeInfo)) &&
864 ((!pCaseSensitive && FBXSDK_stricmp(lPropertyInfo->
GetName(),pName)==0) ||
865 (pCaseSensitive && lPropertyInfo->
GetName() == lSearchSymbol)) ) {
868 lId = GetSibling(lId);
876 if (pChildrenSeparators)
879 size_t lFoundIndex = strcspn(pName,pChildrenSeparators);
882 if (lFoundIndex<strlen(pName))
885 pRootName.
Append(pName,lFoundIndex);
886 lId = FastFind(pId,pRootName.
Buffer(),
NULL,pCaseSensitive);
887 return lId !=
FBXSDK_PROPERTY_ID_NULL ? Find(lId,pName+lFoundIndex+1,pTypeInfo,pCaseSensitive,pChildrenSeparators) : lId;
889 return FastFind(pId,pName,pTypeInfo,pCaseSensitive);
892 return FastFind(pId,pName,pTypeInfo,pCaseSensitive);
901 return lPropertyInfo ? lPropertyInfo->
AddEnumValue(pStringValue) : - 1;
908 if (lPropertyInfo) lPropertyInfo->
InsertEnumValue(pIndex,pStringValue);
915 return lPropertyInfo ? lPropertyInfo->
GetEnumCount() : 0;
922 if (lPropertyInfo) lPropertyInfo->
SetEnumValue(pIndex,pStringValue);
935 return lPropertyInfo ? lPropertyInfo->
GetEnumValue(pIndex) : (
char*)
"";
947 if (lPropertyConnect) {
957 if (lPropertyConnect) {
972 lDstEntry->
Set( lDstConnect );
976 lSrcEntry->
Set( lSrcConnect );
980 return lDstConnect->
ConnectSrc(lSrcConnect,pType);
992 if (lDstConnect && lSrcConnect && lDstReferencePage==
this && lSrcReferencePage==pSrcPage) {
1007 if (lDstConnect && lSrcConnect && lDstReferencePage==
this && lSrcReferencePage==pSrcPage) {
1021 return (lPropertyConnect && lReferencePage==
this) ? lPropertyConnect->
GetSrcCount(pFilter) : 0;
1031 if (lPropertyConnect && lReferencePage==
this)
1036 if (pSrcPage) *pSrcPage = lSrc->
GetPage();
1046 return pDstPage->
ConnectSrc(pDstId,
this,pSrcId,pType);
1066 return (lPropertyConnect && lReferencePage==
this) ? lPropertyConnect->
GetDstCount(pFilter) : 0;
1076 if (lPropertyConnect && lReferencePage==
this)
1081 if (pDstPage) *pDstPage = lDst->
GetPage();
1097 return lPropertyInfo ? lPropertyInfo->
HasMinMax(pValueId) :
false;
1104 return lPropertyInfo ? lPropertyInfo->
GetMinMax(pValueId,pValue,pValueType) :
false;
1111 return lPropertyInfo ? lPropertyInfo->
SetMinMax(pValueId,pValue,pValueType) :
false;
1119 return lPropertyValue ? lPropertyValue->
Get(pValue,pValueType) : 0;
1124 if( pCheckValueEquality )
1129 bool lValuesEqual =
false;
1130 bool lValueChanged =
false;
1131 if( lReferencePage && lReferencePage !=
this )
1134 if( lPropertyValue )
1136 lPropertyValue->
Get( lCurrentValue, pValueType );
1137 lValuesEqual =
FbxTypeCompare( pValue, lCurrentValue, pValueType );
1144 if( lReferencePage2 && lPropertyValue2 )
1147 lPropertyValue2->
Get( lCurrentValue, pValueType );
1148 lValuesEqual =
FbxTypeCompare( pValue, lCurrentValue, pValueType );
1153 lValueChanged =
true;
1161 lCurrentValue =
NULL;
1164 return lValueChanged;
1168 return lPropertyValue ? lPropertyValue->
Set(pValue,pValueType) :
false;
1177 if( !pCheckInstanceOf )
1206 return GetValueInherit(pId,
false) == pType;
1214 return lPropertyValue ? lPropertyValue->
Get( pValue, pValueType ) :
false;
1220 template <
class T>
inline T
Get(
FbxInt pId,
const T* pFBX_TYPE) { T lValue;
Get( pId,&lValue,
FbxTypeOf(lValue) );
return lValue; }
1231 const int lCount = GetPropertyEntryCount();
1234 for(
int i = 0; i < lCount; ++i )
1242 mInstanceOf->mEntryMap.Insert( i, lParentEntry );
1248 FBX_ASSERT( lParentEntry );
1297 if( lPropertyFlags )
1300 lFlags = lPropertyFlags->
GetFlags();
1303 lFlags = mInstanceOf->GetFlags(pId);
1312 if( pCheckFlagEquality )
1319 if( lFoundIn ==
this )
1326 if( lInheritedFlags && lInheritedFlags->
Equal( *lFlag, pFlags ) )
1340 if( lFlag->
Equal( lNewValues, pFlags ) )
1347 return lPropertyFlags ? lPropertyFlags->
ModifyFlags( pFlags, pValue ) :
false;
1355 if( !pCheckInstanceOf )
1364 bool lFoundOverride =
false;
1369 if( !lPropertyFlags )
1374 if(
this == lRefPage || lFoundOverride )
1377 lFoundOverride =
true;
1379 lRefPage = lRefPage->mInstanceOf;
1397 if( lParentFlags && lPropertyFlags )
1400 lPropertyFlags->
SetFlags( pFlags, lParentValues );
1401 return lPropertyFlags->
SetMask( pFlags );
1409 if( !lPropertyFlags )
return false;
1410 if( lFoundIn !=
this )
return true;
1412 if( lPropertyFlags->
GetMask() == 0 )
1422 if( 0 == mNameMap.mFirst )
1424 mNameMap.mSecond.Reserve(20);
1437 lFoundId = GetMinimumPropertyIdAndEntry(lFoundId, &lEntry);
1445 if( mNameMap.mFirst > 0 )
1447 if( --(mNameMap.mFirst) == 0 )
1448 mNameMap.mSecond.Clear();
1458 mEntryMap.Reserve(32);
1459 mNameMap.mFirst = 0;
1464 mPropNextId = FbxNew< FbxPropertyIdGenerator >();
1465 mPropNextId->IncRef();
1473 mInstanceOf = pInstanceOf;
1475 mInstanceOf->mInstances.Add(
this);
1477 mPropNextId = mInstanceOf->mPropNextId;
1478 mPropNextId->IncRef();
1486 mEntryMap.Reserve(32);
1487 mNameMap.mFirst = 0;
1489 mPropNextId = FbxNew< FbxPropertyIdGenerator >();
1490 mPropNextId->IncRef();
1500 mEntryMap.Reserve(32);
1501 mNameMap.mFirst = 0;
1503 mPropNextId = FbxNew< FbxPropertyIdGenerator >();
1504 mPropNextId->IncRef();
1513 for( i = 0; i < mInstances.GetCount(); ++i )
1515 for( j = 0; j < GetPropertyEntryCount(); ++j )
1530 mInstances[i]->mInstanceOf =
NULL;
1536 int lIndex = mInstanceOf->mInstances.Find(
this);
1537 mInstanceOf->mInstances.SetAt(lIndex, mInstanceOf->mInstances[mInstanceOf->mInstances.GetCount()-1]);
1538 mInstanceOf->mInstances.RemoveAt(mInstanceOf->mInstances.GetCount()-1);
1543 mPropNextId->DecRef();
1564 FbxInt GetMinimumPropertyId(
FbxInt pId,
bool pIncrementIfNone =
true)
const
1570 const EntryMap::RecordType* lElement = mEntryMap.UpperBound(pId);
1571 if (
NULL != lElement)
1573 lMin = lElement->GetKey();
1582 else if( lMinNull ) lMin = lParentMin;
1583 else if( !lParentNull ) lMin = lMin < lParentMin ? lMin : lParentMin;
1600 const EntryMap::RecordType* lElement = mEntryMap.UpperBound(pId);
1601 if (
NULL != lElement)
1603 lFoundId = lElement->GetKey();
1604 lFoundEntry = lElement->GetValue();
1613 if( lMinNull && !lParentNull )
1615 lFoundId = lParentMin;
1616 lFoundEntry = lParentEntry;
1618 else if( !lMinNull && !lParentNull )
1620 lFoundId = lFoundId < lParentMin ? lFoundId : lParentMin;
1621 lFoundEntry = lFoundId < lParentMin ? lFoundEntry : lParentEntry;
1625 *pEntry = lFoundEntry;
1629 int GetPropertyEntryCount()
const
1632 const EntryMap::RecordType* lElement = mEntryMap.Maximum();
1634 if (
NULL != lElement)
1636 lCount = lElement->GetKey() + 1;
1639 int lParentCount = mInstanceOf ? mInstanceOf->GetPropertyEntryCount() : 0;
1640 return lParentCount > lCount ? lParentCount : lCount;
1645 const EntryMap::RecordType* lElement = mEntryMap.Find(pIndex);
1646 if (
NULL != lElement)
1652 return lElement->GetValue();
1660 return mInstanceOf ? mInstanceOf->GetPropertyEntry(pIndex,pFoundIn) : 0;
1666 FbxPropertyEntry* lReferenceEntry = GetPropertyEntry(pIndex,&lReferencePage);
1669 if (lReferencePage==
this) {
1670 return lReferenceEntry;
1671 }
else if (lReferenceEntry) {
1674 mEntryMap.Insert( pIndex, lEntry );
1679 if (lReferenceEntry && (lReferencePage==
this)) {
1680 mEntryMap.Remove(pIndex);
1689 FbxInt lId = mPropNextId->GetNextIdAndInc();
1697 mEntryMap.Insert( lId, lEntry );
1701 if( mNameMap.mSecond.GetSize() > 0 )
1716 Add ( lId, lPropertyInfo ? lPropertyInfo->
Clone(
this) : 0 , lPropertyValue ? lPropertyValue->
Clone(
this) : 0,
1717 lPropertyConnect ? lPropertyConnect->
Clone(
this) : 0 );
1738 NameLookupPair mNameMap;
FbxInt Add(FbxInt pParentId, const char *pName, EFbxType pType)
FbxConnectionPoint mConnectionPoint
void PushPropertiesToParentInstance()
bool ConnectDst(FbxPropertyConnect *pDst, FbxConnection::EType pType)
FbxPropertyPage * GetInstanceOf()
Class to manage property handle.
bool UnsetMask(FbxPropertyFlags::EFlags pFlags)
FBX SDK environment definition.
bool Get(FbxInt pId, void *pValue, EFbxType pValueType)
int GetSrcCount(FbxInt pId, FbxConnectionPointFilter *pFilter)
#define FBXSDK_PROPERTY_ID_NULL
#define FBXSDK_FRIEND_NEW()
void SetLabel(const char *pLabel)
FbxPropertyConnect * GetSrc(FbxConnectionPointFilter *pFilter, int pIndex)
FbxPropertyPage * GetTypeInfo() const
bool ConnectSrc(FbxInt pDstId, FbxPropertyPage *pSrcPage, FbxInt pSrcId, FbxConnection::EType pType)
void FbxMapDestroy(FbxMap< K, V, C, A > &pMap)
Call Destroy on each element of the map, and then clear it.
void SetUserTag(int pUserTag)
FbxPropertyFlags::EFlags GetFlags() const
FbxInt GetParent(FbxInt pId=0) const
FbxPropertyInfo * Get(const FbxPropertyInfo *)
FbxInt GetChild(FbxInt pParentId=0) const
Retrieves the first child property id of a specified property id.
const char * GetLabel(FbxInt pId=0)
EFlags
Property flags that affect their behaviors.
FbxStringSymbol GetName() const
bool HasMinMax(EValueIndex pId) const
FbxInt GetFirstDescendent(FbxInt pAnscestorId=0) const
Retrieves the first descendent property id of a specified property id.
bool Set(const void *pValue, EFbxType pValueType)
bool DisconnectSrc(FbxInt pDstId, FbxPropertyPage *pSrcPage, FbxInt pSrcId)
void InsertEnumValue(FbxInt pId, int pIndex, const char *pStringValue)
FbxPropertyPage * GetPage()
This class is to mark a string as symbol.
bool ModifyFlags(FbxPropertyFlags::EFlags pFlags, bool pValue)
Utility class to manipulate strings.
FbxConnectionPoint * GetSrc(int pIndex) const
FbxConnectionPoint * GetDst(int pIndex) const
FbxPropertyPage(const char *pName, EFbxType pType)
FbxPropertyFlags::EInheritType GetValueInherit(FbxInt pId, bool pCheckInstanceOf) const
void InsertEnumValue(int pIndex, const char *pStringValue)
bool SetUserData(FbxInt pId=0, const void *pUserData=0)
void WipeAllConnections()
Clear all connect without sending any notification (Internal use ONLY)
bool Set(FbxInt pId, const T &pValue)
T Get(FbxInt pId, const T *pFBX_TYPE)
char * GetEnumValue(FbxInt pId, int pIndex)
void Set(FbxPropertyInfo *pInfo)
void FbxDelete(T *p)
Deletion policy for pointer template classes that uses the FbxDelete() function.
FbxPropertyConnect * Get(const FbxPropertyConnect *)
bool SetMask(FbxPropertyFlags::EFlags pFlags)
FbxPropertyFlags * Get(const FbxPropertyFlags *)
FbxPair< FbxInt, const char * > FbxNameMapKey
FbxPropertyPage(const char *pName, FbxPropertyPage *pTypeInfo)
void SetEnumValue(FbxInt pId, int pIndex, const char *pStringValue)
This allocator only frees the allocated memory when it is deleted.
void Set(FbxPropertyConnect *pConnect)
int GetDstCount(FbxConnectionPointFilter *pFilter)
bool IsDescendentOf(FbxInt pId, FbxInt pAncestorId) const
bool IsConnectedSrc(FbxInt pDstId, FbxPropertyPage *pSrcPage, FbxInt pSrcId)
Property override this flag from its reference property.
static FbxPropertyConnect * Create(FbxPropertyPage *pPage, FbxInt pId)
static FbxPropertyEntry * Create(FbxInt pParentId, FbxPropertyInfo *pInfo, FbxPropertyValue *pValue, FbxPropertyConnect *pConnect)
int GetSrcCount(FbxConnectionPointFilter *pFilter)
bool Reparent(FbxInt, FbxInt)
Property inherit this flag from its reference property.
static FbxPropertyPage * Create(const char *pName, EFbxType pType=eFbxUndefined)
static FbxPropertyInfo * Create(const char *pName, FbxPropertyPage *pTypeInfo)
void Set(FbxPropertyFlags *pType)
void BeginCreateOrFindProperty()
bool GetMinMax(FbxInt pId, FbxPropertyInfo::EValueIndex pValueId, void *pValue, EFbxType pValueType)
const size_t FbxTypeSizeOf(const EFbxType pType)
Retrieve a type enumeration memory footprint size.
const FbxArray< FbxPropertyPage * > & GetInstances() const
bool ConnectDst(FbxInt pSrcId, FbxPropertyPage *pDstPage, FbxInt pDstId, FbxConnection::EType pType)
This class implements an efficient map based on key comparison, which stores key-value pairs...
EFbxType GetType(FbxInt pId=0) const
bool GetMinMax(EValueIndex pId, void *pValue, EFbxType pValueType) const
EFbxType
Type identifier constants.
bool IsConnectedSrc(FbxPropertyConnect *pSrc)
FbxPropertyFlags::EInheritType GetFlagsInheritType(FbxPropertyFlags::EFlags pFlags) const
const char * GetName(FbxInt pId=0)
void EndCreateOrFindProperty()
FbxPropertyFlags::EFlags GetMergedFlags(FbxPropertyFlags::EFlags pFlags) const
bool SetUserTag(FbxInt pId=0, int pUserTag=0)
bool SetFlags(FbxPropertyFlags::EFlags pMask, FbxPropertyFlags::EFlags pFlags)
bool SetFlagsInheritType(FbxPropertyFlags::EInheritType pInheritType, FbxPropertyFlags::EFlags pFlags, FbxInt pId=0)
bool IsChildOf(FbxInt pId, FbxInt pParentId) const
void SetUserData(const void *pUserData)
FbxInt GetSibling(FbxInt pId) const
Retrieves the next sibling property id of a specified property id.
static FbxPropertyInfo * Create(const char *pName, EFbxType pType=eFbxUndefined)
const FbxPropertyPage * GetInstanceOf() const
T * GetPropertyItem(const T *pItemType, FbxInt pIndex, FbxPropertyPage **pFoundIn=0) const
FbxPropertyInfo * Clone(FbxPropertyPage *)
This class template holds a pair of objects.
T * ChangePropertyItemState(const T *pItemType, FbxInt pIndex, FbxPropertyFlags::EInheritType pInheritType)
bool IsConnectedDst(FbxInt pSrcId, FbxPropertyPage *pDstPage, FbxInt pDstId)
bool FbxTypeCompare(const void *pA, const void *pB, const EFbxType pType)
Compare two values of the same type.
void Set(FbxPropertyValue *pValue)
EFbxType FbxTypeOf(const FbxChar &)
Enumeration allowing duplicated items.
void * GetDataPtr() const
FbxPropertyValue * Get(const FbxPropertyValue *)
FbxPropertyConnect * Clone(FbxPropertyPage *pPage)
bool Set(FbxInt pId, const void *pValue, EFbxType pValueType, bool pCheckValueEquality)
FbxPropertyValue * Clone(FbxPropertyPage *)
void Set(FbxPropertyFlags pType)
char * Buffer()
Non-const buffer access.
bool SetMinMax(EValueIndex pId, const void *pValue, EFbxType pValueType)
#define FBX_TYPE(class)
Convert the class type parameter into a C class parameter for other function inputs.
Class to manage Connect Filter.
bool IsConnectedDst(FbxPropertyConnect *pSrc)
const FbxString & Append(const char *pString, size_t pLength)
Append as "C" strncat().
FbxArray< FbxPropertyPage * > & GetInstances()
#define FBXSDK_PROPERTY_ID_ROOT
int operator()(const FbxNameMapKey &pKeyA, const FbxNameMapKey &pKeyB) const
FbxInt GetNextDescendent(FbxInt pAnscestorId, FbxInt pId) const
Retrieves the next descendent property id of a specified property id, with given a descendent propert...
void RemoveEnumValue(FbxInt pId, int pIndex)
Second mSecond
The second object in the pair.
bool FbxTypeDeallocate(const EFbxType pType, void *pData)
Destroys an fbx primitive type.
void ClearConnectCache(FbxInt pId)
FbxPropertyConnect * GetDst(FbxConnectionPointFilter *pFilter, int pIndex)
bool FbxTypeCopy(T1 &, const T2 &)
void * GetUserData(FbxInt pId=0)
FbxPropertyPage(FbxPropertyPage *pInstanceOf=0)
FbxInt FastFind(FbxInt pId, const char *pName, FbxPropertyPage *pTypeInfo, bool pCaseSensitive)
FbxPropertyPage * GetTypeInfo(FbxInt pId=0)
bool HasMinMax(FbxInt pId, FbxPropertyInfo::EValueIndex pValueId) const
FbxPropertyFlags::EFlags GetMask() const
bool GetDst(FbxInt pId, int pIndex, FbxConnectionPointFilter *pFilter, FbxPropertyPage **pDstPage, FbxInt *pDstId)
const char * GetLabel() const
bool SetValueInherit(FbxInt pId, FbxPropertyFlags::EInheritType pType)
bool DisconnectDst(FbxInt pSrcId, FbxPropertyPage *pDstPage, FbxInt pDstId)
void * FbxTypeAllocate(const EFbxType pType)
Creates a fbx primitive type and initializes its memory.
bool DisconnectSrc(FbxPropertyConnect *pSrc)
int GetUserTag(FbxInt pId=0)
void * GetUserData() const
bool ModifyFlags(FbxInt pId=0, FbxPropertyFlags::EFlags pFlags=FbxPropertyFlags::eNone, bool pValue=true, bool pCheckFlagEquality=true)
void SetDataPtr(void *pDataPtr)
FbxPropertyFlags::EFlags GetFlags(FbxInt pId=0) const
First mFirst
The first object in the pair.
static FbxPropertyValue * Create(void *pData, EFbxType pType)
static FbxPropertyPage * Create(FbxPropertyPage *pInstanceOf=0)
int AddEnumValue(const char *pStringValue)
int AddEnumValue(FbxInt pId, const char *pStringValue)
char * GetEnumValue(int pIndex)
bool GetDefaultValue(FbxInt pId, void *pValue, EFbxType pValueType) const
FbxPropertyFlags::EInheritType GetFlagsInheritType(FbxPropertyFlags::EFlags pFlags, bool pCheckInstanceOf, FbxInt pId=0) const
bool ConnectSrc(FbxPropertyConnect *pSrc, FbxConnection::EType pType)
bool Equal(const FbxPropertyFlags &pOther, FbxPropertyFlags::EFlags pFlags) const
void WipeAllConnections(FbxInt pId)
bool GetSrc(FbxInt pId, int pIndex, FbxConnectionPointFilter *pFilter, FbxPropertyPage **pSrcPage, FbxInt *pSrcId)
void WipeConnectionList()
Clear the ConnectList without any regards to what is connected.
FbxInt Add(FbxInt pParentId, const char *pName, FbxPropertyPage *pTypeInfo)
bool SetMinMax(FbxInt pId, FbxPropertyInfo::EValueIndex pValueId, const void *pValue, EFbxType pValueType)
FbxPropertyPage * GetFirstPropertyItem(FbxInt pId, const T *pItem) const
void RemoveEnumValue(int pIndex)
Property has been deleted, so inheritance is invalid.
void SetEnumValue(int pIndex, const char *pStringValue)
EInheritType
Property inherit types.
int GetEnumCount(FbxInt pId)
static FbxPropertyPage * Create(const char *pName, FbxPropertyPage *pTypeInfo)
bool Is(FbxPropertyPage *pPage)
FbxInt Find(FbxInt pId, const char *pName, FbxPropertyPage *pTypeInfo, bool pCaseSensitive, const char *pChildrenSeparators)
bool DisconnectDst(FbxPropertyConnect *pDst)
StorageType::RecordType RecordType
bool Get(void *pValue, EFbxType pValueType)
int GetDstCount(FbxInt pId, FbxConnectionPointFilter *pFilter)
bool SetLabel(FbxInt pId=0, const char *pLabel="")