13 #ifndef _FBXSDK_CORE_PROPERTY_PAGE_H_
14 #define _FBXSDK_CORE_PROPERTY_PAGE_H_
51 return FbxNew< FbxPropertyInfo >(mName,mTypeInfo);
55 return FbxNew< FbxPropertyInfo >(mName,mType);
69 inline void SetLabel(
const char* pLabel) { mLabel=pLabel; }
70 inline const char*
GetLabel()
const {
return mLabel.IsEmpty() ?
"" : ((
const char*)mLabel); }
72 inline void SetUserTag(
int pUserTag) { mUserTag=pUserTag; }
75 inline void SetUserData(
const void* pUserData) { mUserData=(
void*)pUserData; }
85 mEnumList.Reset(FbxNew< FbxStringList >());
87 bool lCanAdd = (lType ==
eFbxEnumM || mEnumList->FindIndex( pStringValue ) == -1);
89 return mEnumList->Add((
char*)pStringValue);
100 mEnumList.Reset(FbxNew< FbxStringList >());
102 bool lCanAdd = (lType ==
eFbxEnumM || mEnumList->FindIndex( pStringValue ) == -1);
104 mEnumList->InsertAt(pIndex,(
char*)pStringValue);
110 return mEnumList ? mEnumList->GetCount() : 0;
119 mEnumList.Reset(FbxNew< FbxStringList >());
121 bool lCanAdd = (lType ==
eFbxEnumM || mEnumList->FindIndex( pStringValue ) == -1);
123 mEnumList->SetStringAt(pIndex,(
char*)pStringValue);
133 mEnumList.Reset(FbxNew< FbxStringList >());
135 mEnumList->RemoveAt(pIndex);
145 lValue = mEnumList ? mEnumList->GetStringAt(pIndex) : 0;
156 return mMinMaxValue[pId] !=
NULL;
161 if (mMinMaxValue[pId]) {
162 return FbxTypeCopy(pValue, pValueType, mMinMaxValue[pId], GetType());
169 if (!mMinMaxValue[pId]) {
172 mMinMaxValue[pId] = FbxMalloc(lSize);
175 if (mMinMaxValue[pId]) {
176 return FbxTypeCopy(mMinMaxValue[pId], GetType(), pValue, pValueType);
186 , mTypeInfo(pTypeInfo)
191 for (
int i=0; i<eValueCount; i++) {
200 , mTypeInfo(pTypeInfo)
205 for (
int i=0; i<eValueCount; i++) {
219 for (
int i=0; i<eValueCount; i++) {
225 for (
int i=eValueMin; i<eValueCount; i++) {
226 FbxFree(mMinMaxValue[i]);
236 void* mMinMaxValue[eValueCount];
242 #if defined(FBXSDK_COMPILER_MSC)
243 #pragma warning (push)
244 #pragma warning (disable: 4355)
255 return FbxNew< FbxPropertyConnect >(pPage,mId);
270 mConnectionPoint.SubConnectRemoveAll();
276 mConnectionPoint.WipeConnectionList();
294 return mConnectionPoint.GetSrcCount(pFilter);
315 return mConnectionPoint.GetDstCount(pFilter);
331 mConnectionPoint(this),
340 #if defined(FBXSDK_COMPILER_MSC)
341 #pragma warning (pop)
352 inline bool IsEmpty(){
return (mInfo || mValue || mConnect || mFlags.GetMask() != 0) ?
false :
true; }
359 if( pInfo ) pInfo->
IncRef();
361 if( lInfo ) lInfo->
DecRef();
369 if( pValue ) pValue->
IncRef();
371 if( lValue ) lValue->
DecRef();
379 if( pConnect ) pConnect->
IncRef();
381 if( lConnect ) lConnect->
DecRef();
393 mParentId(pParentId),
396 if( mInfo ) mInfo->IncRef();
397 if( mValue ) mValue->IncRef();
398 if( mConnect ) mConnect->IncRef();
403 if( mInfo ) mInfo->DecRef();
404 if( mValue ) mValue->DecRef();
405 if( mConnect ) mConnect->DecRef();
446 FbxPropertyEntry* lReferenceEntry = GetPropertyEntry(pIndex,&lReferencePage);
447 if (pFoundIn) *pFoundIn = 0;
448 if (lReferenceEntry) {
451 if (pFoundIn) *pFoundIn = lReferencePage;
454 return lReferencePage->mInstanceOf ? lReferencePage->mInstanceOf->
GetPropertyItem(pItemType,pIndex,pFoundIn) : 0 ;
463 T* lItem = GetPropertyItem(pItemType, pIndex, &lReferencePage);
466 if( lReferencePage ==
this )
473 lEntry->
Set(lItem->Clone(
this));
480 bool lOwnEntry = !mInstanceOf || (mInstanceOf->GetPropertyItem(pItemType, pIndex) ==
NULL);
483 if( lItem && (lReferencePage ==
this) )
500 GetPropertyItem(
FBX_TYPE(T), pId, &lReferencePage);
501 if( lReferencePage && lReferencePage->mInstanceOf )
504 return lReferencePage2 ? lReferencePage2 : lReferencePage;
506 return lReferencePage;
512 return lPropertyInfo ? ((
const char*)lPropertyInfo->
GetName()) :
"";
518 return lPropertyInfo ? ((
const char*)lPropertyInfo->
GetLabel()) :
"";
536 return lPropertyInfo ? lPropertyInfo->
GetUserData() : 0;
554 return lPropertyInfo ? lPropertyInfo->
GetUserTag() : 0;
584 return lPropertyInfo ? lPropertyInfo->
GetTypeInfo() : 0;
614 return GetParent(pId)==pParentId;
621 FbxInt lParentId = GetParent(pId);
623 if (lParentId==pAncestorId) {
626 lParentId = GetParent(lParentId);
643 #ifdef PROPERTY_PAGE_SANITY_CHECK
646 FbxInt lId = GetMinimumPropertyId(pParentId);
647 FbxInt lParentId = GetParent(lId);
648 const FbxInt lLastId = GetPropertyEntryCount();
650 while (lId<lLastId && lParentId!=pParentId) lParentId=GetParent(++lId);
663 lId = GetMinimumPropertyIdAndEntry(lId, &lEntry);
667 #ifdef PROPERTY_PAGE_SANITY_CHECK
668 FBX_ASSERT(ret0==ret1);
679 #ifdef PROPERTY_PAGE_SANITY_CHECK
683 FbxInt lReferenceParentId = GetParent(pId);
684 FbxInt lParentId = GetParent(++pId);
685 const FbxInt lLastId = GetPropertyEntryCount();
688 lParentId=GetParent(++pId);
698 FbxInt lReferenceParentId = GetParent(pId);
705 pId = GetMinimumPropertyIdAndEntry(pId, &lEntry);
712 #ifdef PROPERTY_PAGE_SANITY_CHECK
713 FBX_ASSERT(ret0==ret1);
724 #ifdef PROPERTY_PAGE_SANITY_CHECK
727 FbxInt lId = GetMinimumPropertyId(pAnscestorId);
728 FbxInt lParentId = GetParent(lId);
729 const FbxInt lLastId = GetPropertyEntryCount();
731 while (lId<lLastId) {
737 lParentId = GetParent(++lId);
742 FbxInt lId = pAnscestorId;
748 lId = GetMinimumPropertyIdAndEntry(lId, &lEntry);
759 #ifdef PROPERTY_PAGE_SANITY_CHECK
760 FBX_ASSERT(ret0==ret1);
772 #ifdef PROPERTY_PAGE_SANITY_CHECK
776 FbxInt lParentId = GetParent(++pId);
777 const FbxInt lLastId = GetPropertyEntryCount();
779 while (pId<lLastId) {
788 lParentId = GetParent(++pId);
800 pId = GetMinimumPropertyIdAndEntry(pId, &lEntry);
811 #ifdef PROPERTY_PAGE_SANITY_CHECK
812 FBX_ASSERT(ret0==ret1);
822 bool lSlowQuery =
true;
823 if( mNameMap.mSecond.GetSize() > 0 )
834 lId = lIterator->GetValue();
846 if ( lTypeInfo2 && lTypeInfo2->
Is(pTypeInfo) )
864 if ( (!pTypeInfo || lPropertyInfo->
GetTypeInfo()->
Is(pTypeInfo)) &&
865 ((!pCaseSensitive && FBXSDK_stricmp(lPropertyInfo->
GetName(),pName)==0) ||
866 (pCaseSensitive && lPropertyInfo->
GetName() == lSearchSymbol)) ) {
869 lId = GetSibling(lId);
877 if (pChildrenSeparators)
880 size_t lFoundIndex = strcspn(pName,pChildrenSeparators);
883 if (lFoundIndex<strlen(pName))
886 pRootName.
Append(pName,lFoundIndex);
887 lId = FastFind(pId,pRootName.
Buffer(),
NULL,pCaseSensitive);
888 return lId !=
FBXSDK_PROPERTY_ID_NULL ? Find(lId,pName+lFoundIndex+1,pTypeInfo,pCaseSensitive,pChildrenSeparators) : lId;
890 return FastFind(pId,pName,pTypeInfo,pCaseSensitive);
893 return FastFind(pId,pName,pTypeInfo,pCaseSensitive);
902 return lPropertyInfo ? lPropertyInfo->
AddEnumValue(pStringValue) : - 1;
909 if (lPropertyInfo) lPropertyInfo->
InsertEnumValue(pIndex,pStringValue);
916 return lPropertyInfo ? lPropertyInfo->
GetEnumCount() : 0;
923 if (lPropertyInfo) lPropertyInfo->
SetEnumValue(pIndex,pStringValue);
936 return lPropertyInfo ? lPropertyInfo->
GetEnumValue(pIndex) : (
char*)
"";
948 if (lPropertyConnect) {
958 if (lPropertyConnect) {
982 lDstEntry->
Set( lDstConnect );
988 lSrcEntry->
Set( lSrcConnect );
992 return (lDstConnect) ? lDstConnect->
ConnectSrc(lSrcConnect, pType) :
false;
1004 if (lDstConnect && lSrcConnect && lDstReferencePage==
this && lSrcReferencePage==pSrcPage) {
1019 if (lDstConnect && lSrcConnect && lDstReferencePage==
this && lSrcReferencePage==pSrcPage) {
1033 return (lPropertyConnect && lReferencePage==
this) ? lPropertyConnect->
GetSrcCount(pFilter) : 0;
1043 if (lPropertyConnect && lReferencePage==
this)
1048 if (pSrcPage) *pSrcPage = lSrc->
GetPage();
1058 return pDstPage->
ConnectSrc(pDstId,
this,pSrcId,pType);
1078 return (lPropertyConnect && lReferencePage==
this) ? lPropertyConnect->
GetDstCount(pFilter) : 0;
1088 if (lPropertyConnect && lReferencePage==
this)
1093 if (pDstPage) *pDstPage = lDst->
GetPage();
1109 return lPropertyInfo ? lPropertyInfo->
HasMinMax(pValueId) :
false;
1116 return lPropertyInfo ? lPropertyInfo->
GetMinMax(pValueId,pValue,pValueType) :
false;
1123 return lPropertyInfo ? lPropertyInfo->
SetMinMax(pValueId,pValue,pValueType) :
false;
1131 return lPropertyValue ? lPropertyValue->
Get(pValue,pValueType) : 0;
1136 if( pCheckValueEquality )
1141 void* lCurrentValue;
1145 bool lValuesEqual =
false;
1146 bool lValueChanged =
false;
1147 if( lReferencePage && lReferencePage !=
this )
1150 if( lPropertyValue )
1153 lPropertyValue->
Get( &lCurrentValue, pValueType );
1154 lValuesEqual =
FbxTypeCompare( pValue, &lCurrentValue, pValueType );
1162 if( lReferencePage2 && lPropertyValue2 )
1166 lPropertyValue2->
Get( &lCurrentValue, pValueType );
1167 lValuesEqual =
FbxTypeCompare( pValue, &lCurrentValue, pValueType );
1173 lValueChanged =
true;
1181 return lValueChanged;
1185 return lPropertyValue ? lPropertyValue->
Set(pValue,pValueType) :
false;
1194 if( !pCheckInstanceOf )
1223 return GetValueInherit(pId,
false) == pType;
1231 return lPropertyValue ? lPropertyValue->
Get( pValue, pValueType ) :
false;
1237 template <
class T>
inline T
Get(
FbxInt pId,
const T* pFBX_TYPE) { T lValue;
Get( pId,&lValue,
FbxTypeOf(lValue) );
return lValue; }
1248 const int lCount = GetPropertyEntryCount();
1251 for(
int i = 0; i < lCount; ++i )
1259 mInstanceOf->mEntryMap.Insert( i, lParentEntry );
1265 FBX_ASSERT( lParentEntry );
1312 if( lPropertyFlags )
1315 lFlags = lPropertyFlags->
GetFlags();
1318 lFlags = mInstanceOf->GetFlags(pId);
1327 if( pCheckFlagEquality )
1334 if( lFoundIn ==
this )
1341 if( lInheritedFlags && lInheritedFlags->
Equal( *lFlag, pFlags ) )
1355 if( lFlag->
Equal( lNewValues, pFlags ) )
1362 return lPropertyFlags ? lPropertyFlags->
ModifyFlags( pFlags, pValue ) :
false;
1370 if( !pCheckInstanceOf )
1379 bool lFoundOverride =
false;
1384 if( !lPropertyFlags )
1389 if(
this == lRefPage || lFoundOverride )
1392 lFoundOverride =
true;
1394 lRefPage = lRefPage->mInstanceOf;
1412 if( lParentFlags && lPropertyFlags )
1415 lPropertyFlags->
SetFlags( pFlags, lParentValues );
1416 return lPropertyFlags->
SetMask( pFlags );
1424 if( !lPropertyFlags )
return false;
1425 if( lFoundIn !=
this )
return true;
1427 if( lPropertyFlags->
GetMask() == 0 )
1437 if( 0 == mNameMap.mFirst )
1439 mNameMap.mSecond.Reserve(20);
1452 lFoundId = GetMinimumPropertyIdAndEntry(lFoundId, &lEntry);
1460 if( mNameMap.mFirst > 0 )
1462 if( --(mNameMap.mFirst) == 0 )
1463 mNameMap.mSecond.Clear();
1473 mEntryMap.Reserve(32);
1474 mNameMap.mFirst = 0;
1479 mPropNextId = FbxNew< FbxPropertyIdGenerator >();
1480 mPropNextId->IncRef();
1488 mInstanceOf = pInstanceOf;
1490 mInstanceOf->mInstances.Insert(
this);
1492 mPropNextId = mInstanceOf->mPropNextId;
1493 mPropNextId->IncRef();
1501 mEntryMap.Reserve(32);
1502 mNameMap.mFirst = 0;
1504 mPropNextId = FbxNew< FbxPropertyIdGenerator >();
1505 mPropNextId->IncRef();
1515 mEntryMap.Reserve(32);
1516 mNameMap.mFirst = 0;
1518 mPropNextId = FbxNew< FbxPropertyIdGenerator >();
1519 mPropNextId->IncRef();
1530 for (
int j = 0; j < GetPropertyEntryCount(); ++j)
1545 lPage->mInstanceOf =
NULL;
1552 mInstanceOf->mInstances.Remove(
this);
1555 mPropNextId->DecRef();
1576 FbxInt GetMinimumPropertyId(
FbxInt pId,
bool pIncrementIfNone =
true)
const
1582 const EntryMap::RecordType* lElement = mEntryMap.UpperBound(pId);
1583 if (
NULL != lElement)
1585 lMin = lElement->GetKey();
1594 else if( lMinNull ) lMin = lParentMin;
1595 else if( !lParentNull ) lMin = lMin < lParentMin ? lMin : lParentMin;
1612 const EntryMap::RecordType* lElement = mEntryMap.UpperBound(pId);
1613 if (
NULL != lElement)
1615 lFoundId = lElement->GetKey();
1616 lFoundEntry = lElement->GetValue();
1625 if( lMinNull && !lParentNull )
1627 lFoundId = lParentMin;
1628 lFoundEntry = lParentEntry;
1630 else if( !lMinNull && !lParentNull )
1632 lFoundId = lFoundId < lParentMin ? lFoundId : lParentMin;
1633 lFoundEntry = lFoundId < lParentMin ? lFoundEntry : lParentEntry;
1637 *pEntry = lFoundEntry;
1641 int GetPropertyEntryCount()
const
1644 const EntryMap::RecordType* lElement = mEntryMap.Maximum();
1646 if (
NULL != lElement)
1648 lCount = lElement->GetKey() + 1;
1651 int lParentCount = mInstanceOf ? mInstanceOf->GetPropertyEntryCount() : 0;
1652 return lParentCount > lCount ? lParentCount : lCount;
1657 const EntryMap::RecordType* lElement = mEntryMap.Find(pIndex);
1658 if (
NULL != lElement)
1664 return lElement->GetValue();
1672 return mInstanceOf ? mInstanceOf->GetPropertyEntry(pIndex,pFoundIn) : 0;
1678 FbxPropertyEntry* lReferenceEntry = GetPropertyEntry(pIndex,&lReferencePage);
1681 if (lReferencePage==
this) {
1682 return lReferenceEntry;
1683 }
else if (lReferenceEntry) {
1686 mEntryMap.Insert( pIndex, lEntry );
1691 if (lReferenceEntry && (lReferencePage==
this)) {
1692 mEntryMap.Remove(pIndex);
1701 FbxInt lId = mPropNextId->GetNextIdAndInc();
1709 mEntryMap.Insert( lId, lEntry );
1713 if( mNameMap.mSecond.GetSize() > 0 )
1728 Add ( lId, lPropertyInfo ? lPropertyInfo->
Clone(
this) : 0 , lPropertyValue ? lPropertyValue->
Clone(
this) : 0,
1729 lPropertyConnect ? lPropertyConnect->
Clone(
this) : 0 );
1750 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
Iterator Begin()
Retrieve the begin iterator of the set.
#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.
size_t FbxTypeSizeOf(const EFbxType pType)
Retrieve a type enumeration memory footprint size.
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)
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.
const FbxSet< FbxPropertyPage * > & GetInstances() const
Class to manage Connect Filter.
bool IsConnectedDst(FbxPropertyConnect *pSrc)
const FbxString & Append(const char *pString, size_t pLength)
Append as "C" strncat().
#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 &)
FbxVectorTemplate4< FbxDouble4 > FbxDouble4x4
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="")