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; }
83 mEnumList.Reset(FbxNew< FbxStringList >());
85 if( mEnumList->FindIndex( pStringValue ) == -1 )
86 return mEnumList->Add((
char*)pStringValue);
96 mEnumList.Reset(FbxNew< FbxStringList >());
98 mEnumList->InsertAt(pIndex,(
char*)pStringValue);
104 return mEnumList ? mEnumList->GetCount() : 0;
112 mEnumList.Reset(FbxNew< FbxStringList >());
114 mEnumList->SetStringAt(pIndex,(
char*)pStringValue);
123 mEnumList.Reset(FbxNew< FbxStringList >());
125 mEnumList->RemoveAt(pIndex);
133 lValue = mEnumList ? mEnumList->GetStringAt(pIndex) : 0;
144 return mMinMaxValue[pId] !=
NULL;
149 if (mMinMaxValue[pId]) {
150 return FbxTypeCopy(pValue, pValueType, mMinMaxValue[pId], GetType());
157 if (!mMinMaxValue[pId]) {
160 mMinMaxValue[pId] = FbxMalloc(lSize);
163 if (mMinMaxValue[pId]) {
164 return FbxTypeCopy(mMinMaxValue[pId], GetType(), pValue, pValueType);
174 , mTypeInfo(pTypeInfo)
179 for (
int i=0; i<eValueCount; i++) {
188 , mTypeInfo(pTypeInfo)
193 for (
int i=0; i<eValueCount; i++) {
207 for (
int i=0; i<eValueCount; i++) {
213 for (
int i=eValueMin; i<eValueCount; i++) {
214 FbxFree(mMinMaxValue[i]);
224 void* mMinMaxValue[eValueCount];
230 #if defined(FBXSDK_COMPILER_MSC)
231 #pragma warning (push)
232 #pragma warning (disable: 4355)
243 return FbxNew< FbxPropertyConnect >(pPage,mId);
258 mConnectionPoint.SubConnectRemoveAll();
264 mConnectionPoint.WipeConnectionList();
282 return mConnectionPoint.GetSrcCount(pFilter);
303 return mConnectionPoint.GetDstCount(pFilter);
319 mConnectionPoint(this),
325 ~
FbxPropertyConnect(){
if( FbxObject::GetWipeMode() ) mConnectionPoint.WipeConnectionList(); }
328 #if defined(FBXSDK_COMPILER_MSC)
329 #pragma warning (pop)
340 inline bool IsEmpty(){
return (mInfo || mValue || mConnect || mFlags.GetMask() != 0) ?
false :
true; }
347 if( pInfo ) pInfo->
IncRef();
349 if( lInfo ) lInfo->
DecRef();
357 if( pValue ) pValue->
IncRef();
359 if( lValue ) lValue->
DecRef();
367 if( pConnect ) pConnect->
IncRef();
369 if( lConnect ) lConnect->
DecRef();
381 mParentId(pParentId),
384 if( mInfo ) mInfo->IncRef();
385 if( mValue ) mValue->IncRef();
386 if( mConnect ) mConnect->IncRef();
391 if( mInfo ) mInfo->DecRef();
392 if( mValue ) mValue->DecRef();
393 if( mConnect ) mConnect->DecRef();
434 FbxPropertyEntry* lReferenceEntry = GetPropertyEntry(pIndex,&lReferencePage);
435 if (pFoundIn) *pFoundIn = 0;
436 if (lReferenceEntry) {
439 if (pFoundIn) *pFoundIn = lReferencePage;
442 return lReferencePage->mInstanceOf ? lReferencePage->mInstanceOf->
GetPropertyItem(pItemType,pIndex,pFoundIn) : 0 ;
451 T* lItem = GetPropertyItem(pItemType, pIndex, &lReferencePage);
454 if( lReferencePage ==
this )
461 lEntry->
Set(lItem->Clone(
this));
468 bool lOwnEntry = !mInstanceOf || (mInstanceOf->GetPropertyItem(pItemType, pIndex) ==
NULL);
471 if( lItem && (lReferencePage ==
this) )
488 GetPropertyItem(
FBX_TYPE(T), pId, &lReferencePage);
489 if( lReferencePage && lReferencePage->mInstanceOf )
492 return lReferencePage2 ? lReferencePage2 : lReferencePage;
494 return lReferencePage;
500 return lPropertyInfo ? ((
const char*)lPropertyInfo->
GetName()) :
"";
506 return lPropertyInfo ? ((
const char*)lPropertyInfo->
GetLabel()) :
"";
524 return lPropertyInfo ? lPropertyInfo->
GetUserData() : 0;
542 return lPropertyInfo ? lPropertyInfo->
GetUserTag() : 0;
572 return lPropertyInfo ? lPropertyInfo->
GetTypeInfo() : 0;
602 return GetParent(pId)==pParentId;
609 FbxInt lParentId = GetParent(pId);
611 if (lParentId==pAncestorId) {
614 lParentId = GetParent(lParentId);
631 #ifdef PROPERTY_PAGE_SANITY_CHECK
634 FbxInt lId = GetMinimumPropertyId(pParentId);
635 FbxInt lParentId = GetParent(lId);
636 const FbxInt lLastId = GetPropertyEntryCount();
638 while (lId<lLastId && lParentId!=pParentId) lParentId=GetParent(++lId);
651 lId = GetMinimumPropertyIdAndEntry(lId, &lEntry);
655 #ifdef PROPERTY_PAGE_SANITY_CHECK
656 FBX_ASSERT(ret0==ret1);
667 #ifdef PROPERTY_PAGE_SANITY_CHECK
671 FbxInt lReferenceParentId = GetParent(pId);
672 FbxInt lParentId = GetParent(++pId);
673 const FbxInt lLastId = GetPropertyEntryCount();
676 lParentId=GetParent(++pId);
686 FbxInt lReferenceParentId = GetParent(pId);
693 pId = GetMinimumPropertyIdAndEntry(pId, &lEntry);
700 #ifdef PROPERTY_PAGE_SANITY_CHECK
701 FBX_ASSERT(ret0==ret1);
712 #ifdef PROPERTY_PAGE_SANITY_CHECK
715 FbxInt lId = GetMinimumPropertyId(pAnscestorId);
716 FbxInt lParentId = GetParent(lId);
717 const FbxInt lLastId = GetPropertyEntryCount();
719 while (lId<lLastId) {
725 lParentId = GetParent(++lId);
730 FbxInt lId = pAnscestorId;
736 lId = GetMinimumPropertyIdAndEntry(lId, &lEntry);
747 #ifdef PROPERTY_PAGE_SANITY_CHECK
748 FBX_ASSERT(ret0==ret1);
760 #ifdef PROPERTY_PAGE_SANITY_CHECK
764 FbxInt lParentId = GetParent(++pId);
765 const FbxInt lLastId = GetPropertyEntryCount();
767 while (pId<lLastId) {
776 lParentId = GetParent(++pId);
788 pId = GetMinimumPropertyIdAndEntry(pId, &lEntry);
799 #ifdef PROPERTY_PAGE_SANITY_CHECK
800 FBX_ASSERT(ret0==ret1);
810 bool lSlowQuery =
true;
811 if( mNameMap.mSecond.GetSize() > 0 )
822 lId = lIterator->GetValue();
834 if ( lTypeInfo2 && lTypeInfo2->
Is(pTypeInfo) )
852 if ( (!pTypeInfo || lPropertyInfo->
GetTypeInfo()->
Is(pTypeInfo)) &&
853 ((!pCaseSensitive && FBXSDK_stricmp(lPropertyInfo->
GetName(),pName)==0) ||
854 (pCaseSensitive && lPropertyInfo->
GetName() == lSearchSymbol)) ) {
857 lId = GetSibling(lId);
865 if (pChildrenSeparators)
868 size_t lFoundIndex = strcspn(pName,pChildrenSeparators);
871 if (lFoundIndex<strlen(pName))
874 pRootName.
Append(pName,lFoundIndex);
875 lId = FastFind(pId,pRootName.
Buffer(),
NULL,pCaseSensitive);
876 return lId !=
FBXSDK_PROPERTY_ID_NULL ? Find(lId,pName+lFoundIndex+1,pTypeInfo,pCaseSensitive,pChildrenSeparators) : lId;
878 return FastFind(pId,pName,pTypeInfo,pCaseSensitive);
881 return FastFind(pId,pName,pTypeInfo,pCaseSensitive);
890 return lPropertyInfo ? lPropertyInfo->
AddEnumValue(pStringValue) : - 1;
897 if (lPropertyInfo) lPropertyInfo->
InsertEnumValue(pIndex,pStringValue);
904 return lPropertyInfo ? lPropertyInfo->
GetEnumCount() : 0;
911 if (lPropertyInfo) lPropertyInfo->
SetEnumValue(pIndex,pStringValue);
924 return lPropertyInfo ? lPropertyInfo->
GetEnumValue(pIndex) : (
char*)
"";
936 if (lPropertyConnect) {
946 if (lPropertyConnect) {
961 lDstEntry->
Set( lDstConnect );
965 lSrcEntry->
Set( lSrcConnect );
969 return lDstConnect->
ConnectSrc(lSrcConnect,pType);
981 if (lDstConnect && lSrcConnect && lDstReferencePage==
this && lSrcReferencePage==pSrcPage) {
996 if (lDstConnect && lSrcConnect && lDstReferencePage==
this && lSrcReferencePage==pSrcPage) {
1010 return (lPropertyConnect && lReferencePage==
this) ? lPropertyConnect->
GetSrcCount(pFilter) : 0;
1020 if (lPropertyConnect && lReferencePage==
this)
1025 if (pSrcPage) *pSrcPage = lSrc->
GetPage();
1035 return pDstPage->
ConnectSrc(pDstId,
this,pSrcId,pType);
1055 return (lPropertyConnect && lReferencePage==
this) ? lPropertyConnect->
GetDstCount(pFilter) : 0;
1065 if (lPropertyConnect && lReferencePage==
this)
1070 if (pDstPage) *pDstPage = lDst->
GetPage();
1086 return lPropertyInfo ? lPropertyInfo->
HasMinMax(pValueId) :
false;
1093 return lPropertyInfo ? lPropertyInfo->
GetMinMax(pValueId,pValue,pValueType) :
false;
1100 return lPropertyInfo ? lPropertyInfo->
SetMinMax(pValueId,pValue,pValueType) :
false;
1108 return lPropertyValue ? lPropertyValue->
Get(pValue,pValueType) : 0;
1113 if( pCheckValueEquality )
1118 bool lValuesEqual =
false;
1119 bool lValueChanged =
false;
1120 if( lReferencePage && lReferencePage !=
this )
1123 if( lPropertyValue )
1125 lPropertyValue->
Get( lCurrentValue, pValueType );
1126 lValuesEqual =
FbxTypeCompare( pValue, lCurrentValue, pValueType );
1133 if( lReferencePage2 && lPropertyValue2 )
1136 lPropertyValue2->
Get( lCurrentValue, pValueType );
1137 lValuesEqual =
FbxTypeCompare( pValue, lCurrentValue, pValueType );
1142 lValueChanged =
true;
1150 lCurrentValue =
NULL;
1153 return lValueChanged;
1157 return lPropertyValue ? lPropertyValue->
Set(pValue,pValueType) :
false;
1166 if( !pCheckInstanceOf )
1195 return GetValueInherit(pId,
false) == pType;
1203 return lPropertyValue ? lPropertyValue->
Get( pValue, pValueType ) :
false;
1209 template <
class T>
inline T
Get(
FbxInt pId,
const T* pFBX_TYPE) { T lValue;
Get( pId,&lValue,
FbxTypeOf(lValue) );
return lValue; }
1220 const int lCount = GetPropertyEntryCount();
1223 for(
int i = 0; i < lCount; ++i )
1231 mInstanceOf->mEntryMap.Insert( i, lParentEntry );
1237 FBX_ASSERT( lParentEntry );
1286 if( lPropertyFlags )
1289 lFlags = lPropertyFlags->
GetFlags();
1292 lFlags = mInstanceOf->GetFlags(pId);
1301 if( pCheckFlagEquality )
1308 if( lFoundIn ==
this )
1315 if( lInheritedFlags && lInheritedFlags->
Equal( *lFlag, pFlags ) )
1329 if( lFlag->
Equal( lNewValues, pFlags ) )
1336 return lPropertyFlags ? lPropertyFlags->
ModifyFlags( pFlags, pValue ) :
false;
1344 if( !pCheckInstanceOf )
1353 bool lFoundOverride =
false;
1358 if( !lPropertyFlags )
1363 if(
this == lRefPage || lFoundOverride )
1366 lFoundOverride =
true;
1368 lRefPage = lRefPage->mInstanceOf;
1386 if( lParentFlags && lPropertyFlags )
1389 lPropertyFlags->
SetFlags( pFlags, lParentValues );
1390 return lPropertyFlags->
SetMask( pFlags );
1398 if( !lPropertyFlags )
return false;
1399 if( lFoundIn !=
this )
return true;
1401 if( lPropertyFlags->
GetMask() == 0 )
1411 if( 0 == mNameMap.mFirst )
1413 mNameMap.mSecond.Reserve(20);
1426 lFoundId = GetMinimumPropertyIdAndEntry(lFoundId, &lEntry);
1434 if( mNameMap.mFirst > 0 )
1436 if( --(mNameMap.mFirst) == 0 )
1437 mNameMap.mSecond.Clear();
1447 mEntryMap.Reserve(32);
1448 mNameMap.mFirst = 0;
1453 mPropNextId = FbxNew< FbxPropertyIdGenerator >();
1454 mPropNextId->IncRef();
1462 mInstanceOf = pInstanceOf;
1464 mInstanceOf->mInstances.Add(
this);
1466 mPropNextId = mInstanceOf->mPropNextId;
1467 mPropNextId->IncRef();
1475 mEntryMap.Reserve(32);
1476 mNameMap.mFirst = 0;
1478 mPropNextId = FbxNew< FbxPropertyIdGenerator >();
1479 mPropNextId->IncRef();
1489 mEntryMap.Reserve(32);
1490 mNameMap.mFirst = 0;
1492 mPropNextId = FbxNew< FbxPropertyIdGenerator >();
1493 mPropNextId->IncRef();
1502 for( i = 0; i < mInstances.GetCount(); ++i )
1504 for( j = 0; j < GetPropertyEntryCount(); ++j )
1519 mInstances[i]->mInstanceOf =
NULL;
1525 int lIndex = mInstanceOf->mInstances.Find(
this);
1526 mInstanceOf->mInstances.SetAt(lIndex, mInstanceOf->mInstances[mInstanceOf->mInstances.GetCount()-1]);
1527 mInstanceOf->mInstances.RemoveAt(mInstanceOf->mInstances.GetCount()-1);
1532 mPropNextId->DecRef();
1553 FbxInt GetMinimumPropertyId(
FbxInt pId,
bool pIncrementIfNone =
true)
const
1559 const EntryMap::RecordType* lElement = mEntryMap.UpperBound(pId);
1560 if (
NULL != lElement)
1562 lMin = lElement->GetKey();
1571 else if( lMinNull ) lMin = lParentMin;
1572 else if( !lParentNull ) lMin = lMin < lParentMin ? lMin : lParentMin;
1589 const EntryMap::RecordType* lElement = mEntryMap.UpperBound(pId);
1590 if (
NULL != lElement)
1592 lFoundId = lElement->GetKey();
1593 lFoundEntry = lElement->GetValue();
1602 if( lMinNull && !lParentNull )
1604 lFoundId = lParentMin;
1605 lFoundEntry = lParentEntry;
1607 else if( !lMinNull && !lParentNull )
1609 lFoundId = lFoundId < lParentMin ? lFoundId : lParentMin;
1610 lFoundEntry = lFoundId < lParentMin ? lFoundEntry : lParentEntry;
1614 *pEntry = lFoundEntry;
1618 int GetPropertyEntryCount()
const
1621 const EntryMap::RecordType* lElement = mEntryMap.Maximum();
1623 if (
NULL != lElement)
1625 lCount = lElement->GetKey() + 1;
1628 int lParentCount = mInstanceOf ? mInstanceOf->GetPropertyEntryCount() : 0;
1629 return lParentCount > lCount ? lParentCount : lCount;
1634 const EntryMap::RecordType* lElement = mEntryMap.Find(pIndex);
1635 if (
NULL != lElement)
1641 return lElement->GetValue();
1649 return mInstanceOf ? mInstanceOf->GetPropertyEntry(pIndex,pFoundIn) : 0;
1655 FbxPropertyEntry* lReferenceEntry = GetPropertyEntry(pIndex,&lReferencePage);
1658 if (lReferencePage==
this) {
1659 return lReferenceEntry;
1660 }
else if (lReferenceEntry) {
1663 mEntryMap.Insert( pIndex, lEntry );
1668 if (lReferenceEntry && (lReferencePage==
this)) {
1669 mEntryMap.Remove(pIndex);
1678 FbxInt lId = mPropNextId->GetNextIdAndInc();
1686 mEntryMap.Insert( lId, lEntry );
1690 if( mNameMap.mSecond.GetSize() > 0 )
1705 Add ( lId, lPropertyInfo ? lPropertyInfo->
Clone(
this) : 0 , lPropertyValue ? lPropertyValue->
Clone(
this) : 0,
1706 lPropertyConnect ? lPropertyConnect->
Clone(
this) : 0 );
1727 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
FbxPropertyInfo * Get(const FbxPropertyInfo *)
EFlags
Property flags that affect their behaviors.
FbxStringSymbol GetName() const
bool HasMinMax(EValueIndex pId) const
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()
FBXSDK_DLL bool FbxTypeDeallocate(const EFbxType pType, void *pData)
Destroys an fbx primitive type.
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)
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)
FbxInt GetChild(FbxInt pParentId=FBXSDK_PROPERTY_ID_ROOT) const
Retrieves the first child property id of a specified property id.
void Set(FbxPropertyInfo *pInfo)
bool SetFlagsInheritType(FbxPropertyFlags::EInheritType pInheritType, FbxPropertyFlags::EFlags pFlags, FbxInt pId=FBXSDK_PROPERTY_ID_ROOT)
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)
bool ModifyFlags(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT, FbxPropertyFlags::EFlags pFlags=FbxPropertyFlags::eNone, bool pValue=true, bool pCheckFlagEquality=true)
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...
bool GetMinMax(EValueIndex pId, void *pValue, EFbxType pValueType) const
EFbxType
Type identifier constants.
FbxInt GetParent(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT) const
bool IsConnectedSrc(FbxPropertyConnect *pSrc)
bool SetUserData(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT, const void *pUserData=0)
FbxPropertyFlags::EInheritType GetFlagsInheritType(FbxPropertyFlags::EFlags pFlags) const
void EndCreateOrFindProperty()
FbxPropertyFlags::EFlags GetMergedFlags(FbxPropertyFlags::EFlags pFlags) const
bool SetFlags(FbxPropertyFlags::EFlags pMask, FbxPropertyFlags::EFlags pFlags)
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
FbxInt GetFirstDescendent(FbxInt pAnscestorId=FBXSDK_PROPERTY_ID_ROOT) const
Retrieves the first descendent property id of a specified property id.
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)
const char * GetName(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT)
bool IsConnectedDst(FbxInt pSrcId, FbxPropertyPage *pDstPage, FbxInt pDstId)
void Set(FbxPropertyValue *pValue)
EFbxType FbxTypeOf(const FbxChar &)
FBXSDK_DLL const size_t FbxTypeSizeOf(const EFbxType pType)
Retrieve a type enumeration memory footprint size.
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 char * GetLabel(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT)
const FbxString & Append(const char *pString, size_t pLength)
Append as "C" strncat().
FbxArray< FbxPropertyPage * > & GetInstances()
FbxPropertyPage * GetTypeInfo(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT)
#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...
bool SetUserTag(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT, int pUserTag=0)
void RemoveEnumValue(FbxInt pId, int pIndex)
Second mSecond
The second object in the pair.
void ClearConnectCache(FbxInt pId)
FBXSDK_DLL bool FbxTypeCompare(const void *pA, const void *pB, const EFbxType pType)
Compare two values of the same type.
FbxPropertyConnect * GetDst(FbxConnectionPointFilter *pFilter, int pIndex)
bool FbxTypeCopy(T1 &, const T2 &)
FbxPropertyPage(FbxPropertyPage *pInstanceOf=0)
FbxInt FastFind(FbxInt pId, const char *pName, FbxPropertyPage *pTypeInfo, bool pCaseSensitive)
void * GetUserData(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT)
FbxPropertyFlags::EFlags GetFlags(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT) const
bool HasMinMax(FbxInt pId, FbxPropertyInfo::EValueIndex pValueId) const
int GetUserTag(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT)
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)
bool DisconnectSrc(FbxPropertyConnect *pSrc)
FBXSDK_DLL void * FbxTypeAllocate(const EFbxType pType)
Creates a fbx primitive type and initializes its memory.
void * GetUserData() const
void SetDataPtr(void *pDataPtr)
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)
FbxPropertyFlags::EInheritType GetFlagsInheritType(FbxPropertyFlags::EFlags pFlags, bool pCheckInstanceOf, FbxInt pId=FBXSDK_PROPERTY_ID_ROOT) const
bool SetLabel(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT, const char *pLabel="")
char * GetEnumValue(int pIndex)
bool GetDefaultValue(FbxInt pId, void *pValue, EFbxType pValueType) const
bool ConnectSrc(FbxPropertyConnect *pSrc, FbxConnection::EType pType)
bool Equal(const FbxPropertyFlags &pOther, FbxPropertyFlags::EFlags pFlags) const
void WipeAllConnections(FbxInt pId)
EFbxType GetType(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT) const
bool GetSrc(FbxInt pId, int pIndex, FbxConnectionPointFilter *pFilter, FbxPropertyPage **pSrcPage, FbxInt *pSrcId)
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)