Open Reality Reference Guide
 
Loading...
Searching...
No Matches
fbproperties.h
Go to the documentation of this file.
1#ifndef __FBPROPERTIES_H__
2#define __FBPROPERTIES_H__
3/**************************************************************************
4Copyright (c) 1994 - 2009 Autodesk, Inc. and/or its licensors.
5All Rights Reserved.
6
7The coded instructions, statements, computer programs, and/or related
8material (collectively the "Data") in these files contain unpublished
9information proprietary to Autodesk, Inc. and/or its licensors, which is
10protected by Canada and United States of America federal copyright law
11and by international treaties.
12
13The Data may not be disclosed or distributed to third parties, in whole
14or in part, without the prior written consent of Autodesk, Inc.
15("Autodesk").
16
17THE DATA IS PROVIDED "AS IS" AND WITHOUT WARRANTY.
18ALL WARRANTIES ARE EXPRESSLY EXCLUDED AND DISCLAIMED. AUTODESK MAKES NO
19WARRANTY OF ANY KIND WITH RESPECT TO THE DATA, EXPRESS, IMPLIED OR
20ARISING BY CUSTOM OR TRADE USAGE, AND DISCLAIMS ANY IMPLIED WARRANTIES
21OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR
22PURPOSE OR USE. WITHOUT LIMITING THE FOREGOING, AUTODESK DOES NOT
23WARRANT THAT THE OPERATION OF THE DATA WILL BE UNINTERRUPTED OR ERROR
24FREE.
25
26IN NO EVENT SHALL AUTODESK, ITS AFFILIATES, PARENT COMPANIES, LICENSORS
27OR SUPPLIERS ("AUTODESK GROUP") BE LIABLE FOR ANY LOSSES, DAMAGES OR
28EXPENSES OF ANY KIND (INCLUDING WITHOUT LIMITATION PUNITIVE OR MULTIPLE
29DAMAGES OR OTHER SPECIAL, DIRECT, INDIRECT, EXEMPLARY, INCIDENTAL, LOSS
30OF PROFITS, REVENUE OR DATA, COST OF COVER OR CONSEQUENTIAL LOSSES OR
31DAMAGES OF ANY KIND), HOWEVER CAUSED, AND REGARDLESS OF THE THEORY OF
32LIABILITY, WHETHER DERIVED FROM CONTRACT, TORT (INCLUDING, BUT NOT
33LIMITED TO, NEGLIGENCE), OR OTHERWISE, ARISING OUT OF OR RELATING TO THE
34DATA OR ITS USE OR ANY OTHER PERFORMANCE, WHETHER OR NOT AUTODESK HAS
35BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSS OR DAMAGE.
36
37**************************************************************************/
38
45#include <kaydaradef.h>
46
47#ifndef FBSDK_DLL
51#define FBSDK_DLL K_DLLIMPORT
52#endif
53
54#include <assert.h>
55#include <stdio.h>
56#include <stdlib.h>
57
58#include <fbsdk/fbplug.h>
59#include <fbsdk/fbarray.h>
60#include <fbsdk/fbstring.h>
61#include <fbsdk/fbtime.h>
62#include <fbsdk/fbevaluateinfo.h>
63
64K_FORWARD( KEventBase );
65K_FORWARD( KObject );
66K_FORWARD( KProperty );
67K_FORWARD( KEvaluationProperty );
68K_FORWARD( KDataType );
69K_FORWARD( IFBObject );
70K_FORWARD( IRegister );
71
72#ifdef FBSDKUseNamespace
73namespace FBSDKNamespace {
74#endif
75
77
80 {
104 };
105
107
110 {
113 };
114
119 {
120 kFBPropertyFlagNotSet = 0,
122 kFBPropertyFlagForceStaticProperty = (1 << 1),
123 kFBPropertyFlagDisableProperty = (1 << 2),
126 kFBPropertyFlagAnimated = (1 << 4),
128 kFBPropertyFlagReadOnly = (1 << 6),
129 kFBPropertyFlagNotUserDeletable = (1 << 7),
130 kFBValueAllocated = (1 << 8),
131 kFBDynamicHidden = (1 << 9),
132 kFBDrivenSetByMain = (1 << 10),
133 /*K_DEPRECATED_2022*/ kFBSlaveSetByMaster = kFBDrivenSetByMain,
134 kFBLoadedUserProperty = (1 << 11)
135 };
136
141#define FB_DEFINE_COMPONENT( DllTag, Type ) \
142 class FB##Type; \
143 typedef class DllTag FBPropertyBase< FB##Type*,kFBPT_object > FBPropertyBase##Type; \
144 typedef class DllTag FBPropertyBaseComponent< FB##Type* > FBProperty##Type
145
150#define FB_DEFINE_ENUM( DllTag, Type ) \
151 typedef class DllTag FBPropertyBaseEnum< enum FB##Type > FBProperty##Type;
152
156#define FB_DEFINE_CLASS_ENUM( EnumName ) \
157 typedef class FBPropertyBaseEnum< enum __FBClassType::e##EnumName > Property##EnumName;
158
163#define FB_DEFINE_LIST( DllTag, Type ) \
164 typedef class DllTag FBPropertyBaseList< FB##Type* > FBPropertyBaseList##Type;
165
167 typedef void (*fbGetSetHandler)(void);
169 typedef void (*fbExternalGetSetHandler)(HIObject pObject);
170
173
195 {
197
198 protected:
202 void* mParent;
203
204 public:
207
208#ifndef DOXYGEN_SHOULD_SKIP_THIS
210 IObject_Declare(override);
211
213 FBProperty* InitInternal( KProperty* pProperty );
214
216 KProperty* GetInternal() const;
217
219 void* GetValuePtr() const;
220
222 FBProperty* CreateInternal( FBComponent* pParent, const char* pName, fbExternalGetSetHandler pGet = NULL, fbExternalGetSetHandler pSet = NULL);
223
225 FBProperty* CreateTextureConnectable( FBComponent* pParent, const char* pName );
226
228 void SetInternal( KProperty* pInternal );
229#endif
230
232 void SetEnable( bool pValue );
233
237 const char* GetName();
238
242 void SetName(const char *pName);
243
248
252 const char* GetPropertyTypeName();
253
257 virtual KDataType* GetDataType();
258
260
263 virtual void SetData( void* pData );
265
267
272 virtual void GetData( void* pData, int pSize, FBEvaluateInfo *pEvalInfo = NULL ) const;
274
278 int AsInt();
279
284 bool SetInt(int pInt);
285
290 virtual const char* AsString( FBDataAsStringFlag pFlag = kFBDataAsStringUI );
291
296 virtual bool SetString( const char* pString );
297
301 const char* OriValueAsString();
302
304 bool IsAnimated() const;
305
308 bool OriIsAnimated() const;
309
311
314 virtual bool IsList();
315 virtual bool IsAnimatable();
316 bool IsInternal() const;
317 bool IsUserProperty();
318 bool IsTextureConnectableProperty();
319 bool IsReferenceProperty();
321
325 bool IsMinClamp();
326
331
337
342 bool AcceptTemporaryProperty(const char* pEnumList[] = NULL, fbExternalGetSetHandler pGet=NULL, fbExternalGetSetHandler pSet=NULL);
343
348
352 virtual bool IsReadOnly();
353
358 virtual const char* EnumList( int pIndex );
359
364 FBStringList* GetEnumStringList(bool pCreateIt = false);
365
369
375 void ModifyPropertyFlag(FBPropertyFlag pFlag, bool pValue);
376
381
388
395 void SetMinMax( double pMin, double pMax, bool pForceMinClamp = false, bool pForceMaxClamp = false );
396
401 void SetMin( double pMin, bool pForceMinClamp = false );
402
407 void SetMax( double pMax, bool pForceMaxClamp = false );
408
412 double GetMin();
413
417 double GetMax();
418
422 inline void* GetParent() { return mParent; }
423
433
437 int GetSubMemberCount() const;
438
442 bool AllowsLocking() const;
443
447 bool HasSomethingLocked() const;
448
452 bool IsLocked() const;
453
458 bool IsMemberLocked( int pIndex ) const;
459
463 void SetLocked( bool pLocked );
464
469 void SetMemberLocked( int pIndex , bool pLocked );
470
472
477
478 private:
479 // FBProperty(FBProperty&); // Make sure no copy constructor is use
480 };
481
487 template<class T> inline T* FBCast(FBProperty* pProperty, bool pAutoCreate = false)
488 {
489 HIObject lProperty = pProperty ? FBGetFBObject(pProperty->GetHIObject(), pAutoCreate) : NULL;
490 // Should also validate type but not available for now
491 return (T*)lProperty;
492 }
493
495 FB_FORWARD( FBBox );
498
500 // PropertyEvent
503
515 {
516 protected:
517#ifndef DOXYGEN_SHOULD_SKIP_THIS
519 HIRegister mParentRegister;
521 int mType;
523 int mSubType;
524#endif
525 public:
528
537 FBPropertyEvent *Init( FBComponent* pComponent, HIRegister pParent,const char *pName, int pType, int pSubType=K_INT_MAX );
538
544 FBPropertyEvent *InitGlobal( const char* pName, const char* pGlobalEventName );
545
548
550
554 virtual void Add ( HICallback pOwner, kICallbackHandler pHandler );
555 virtual void Remove ( HICallback pOwner, kICallbackHandler pHandler );
557
559 virtual void InvalidateParent();
560
564 virtual FBPropertyType GetPropertyType() override { return kFBPT_event; }
565
566 private:
567
568 DataFBPropertyEvent* mLocalPtr;
569 };
570
573 {
574 public:
575 virtual void Add ( HICallback pOwner, kICallbackHandler pHandler );
576 virtual void Remove ( HICallback pOwner, kICallbackHandler pHandler );
577 };
578
581 {
582 public:
583 virtual void Add ( HICallback pOwner, kICallbackHandler pHandler );
584 virtual void Remove ( HICallback pOwner, kICallbackHandler pHandler );
585 };
586
589 {
590 public:
591 virtual void Add ( HICallback pOwner, kICallbackHandler pHandler );
592 virtual void Remove ( HICallback pOwner, kICallbackHandler pHandler );
593 };
594
597 {
598 public:
599 virtual void Add ( HICallback pOwner, kICallbackHandler pHandler );
600 virtual void Remove ( HICallback pOwner, kICallbackHandler pHandler );
601 };
602
605 {
606 public:
607 virtual void Add ( HICallback pOwner, kICallbackHandler pHandler );
608 virtual void Remove ( HICallback pOwner, kICallbackHandler pHandler );
609 };
610
613 {
614 public:
615 virtual void Add ( HICallback pOwner, kICallbackHandler pHandler );
616 virtual void Remove ( HICallback pOwner, kICallbackHandler pHandler );
617 };
618
622 template <class tType, FBPropertyType pPT> class FBPropertyBase : public FBProperty
623 {
624 protected:
625#ifndef DOXYGEN_SHOULD_SKIP_THIS
626 void (* Set)(void *, tType);
627 tType (* Get)(void *);
628#endif
629 public:
630
632 typedef tType ValueType;
633
635 inline FBPropertyBase() { Set = NULL; Get = NULL; }
636
640 inline FBPropertyBase(const FBPropertyBase<tType,pPT> &pValue) { operator=((tType)pValue ); }
641
644 {
645 }
646
654 inline FBPropertyBase *Init( void* pParent, const char *pName,tType (* pGet)(void *)=NULL,void (* pSet)(void *,tType)=NULL )
655 {
656 mParent = pParent;
657 mName = pName ;
658 Get = pGet;
659 Set = pSet;
660 return this;
661 }
662
664
668 inline void operator=(tType pValue) { SetData( &pValue ); }
670
672
676 inline void operator=(const FBPropertyBase<tType,pPT> &pProperty) { operator=((tType)pProperty ); }
678
683 inline operator tType() const { tType Value; GetData( &Value,sizeof(Value) ); return Value; }
684
688 virtual FBPropertyType GetPropertyType( ) override { return pPT; }
689
693 inline virtual void SetPropertyValue( tType pValue )
694 {
695 if(IsInternal() && GetValuePtr())
696 {
697 *(tType*)GetValuePtr() = pValue;
698 }
699 }
700
704 inline tType GetPropertyValue( )
705 {
706 if(IsInternal() && GetValuePtr())
707 {
708 return *(tType*)GetValuePtr();
709 } else
710 {
711 return (tType)0;
712 }
713 }
714
719 inline virtual bool IsReadOnly() override { return IsInternal() ? (FBProperty::IsReadOnly()) : (Set == NULL); }
720
724 inline virtual void GetData(void* pData, int pSize, FBEvaluateInfo *pEvalInfo = NULL) const override
725 {
726 if(Get)
727 {
728 *((tType*)pData) = (*Get)(mParent);
729 }
730 else if (IsInternal())
731 {
732 FBProperty::GetData( pData, pSize, pEvalInfo );
733 }
734 else
735 {
736 assert(Get != NULL || IsInternal());
737 *((tType*)pData) = (tType)0;
738 }
739 }
743 inline virtual void SetData(void* pData) override
744 {
745 if(Set)
746 {
747 (*Set)( mParent,*(tType*)pData );
748 }
749 else if (IsInternal())
750 {
751 FBProperty::SetData( pData );
752 }
753 else
754 {
755 assert( Set != NULL || IsInternal() );
756 }
757 }
758 };
759
764 template <class tType> class FBPropertyBaseEnum : public FBPropertyBase<tType,kFBPT_enum>
765 {
766 public:
767#ifndef DOXYGEN_SHOULD_SKIP_THIS
769 static const char *mStrings[];
770#endif
773
775 inline ~FBPropertyBaseEnum()=default;
776
781 FBPropertyBase<tType,kFBPT_enum>(pValue)
782 { operator=((tType)pValue ); }
783
785
789 inline void operator=(tType pValue) { this->SetData( &pValue ); }
791
796 inline operator tType() const { tType Value; this->GetData( &Value,sizeof(Value) ); return Value; }
797
798 virtual const char* EnumList( int pIndex ) override
799 {
800 if( FBPropertyBaseEnum::IsInternal() )
801 {
802 return FBProperty::EnumList( pIndex );
803 }
804 // NOTE:
805 // --> replacing test for if(mStrings) by if(mStrings[0])
806 // This is safe to do as we should always have at least 1 item
807 // in the list based on our base class implementation. And
808 // the compiler should throw a linker error if mStrings is not found.
809 // mStrings[0] == NULL for enum kDefaultEnum but mStrings can never be NULL
810 else if(mStrings[0])
811 {
812 return mStrings[pIndex];
813 }
814 else
815 {
816 assert(mStrings[0] || FBPropertyBaseEnum::IsInternal());
817 return NULL;
818 }
819 }
820
825 virtual const char* AsString( FBDataAsStringFlag pFlag = kFBDataAsStringUI ) override { return EnumList( FBPropertyBaseEnum::AsInt() );}
826
831 virtual bool SetString( const char *pString ) override
832 {
833 int count=0;
834 const char * tmpstr;
835 while ((tmpstr=EnumList( count ))!=NULL) {
836 if (strcmp(tmpstr,pString)==0) {
838 return true;
839 }
840 count++;
841 }
842 return false;
843 }
844
845 };
846
847
852 {
853 public:
861 FBPropertyBasicList( HIObject pParent, const char *pName );
866 FBProperty* Init( void* pParent, const char *pName );
867
869 void RemoveAll();
870
875 virtual int GetCount()=0;
876
881 virtual void RemoveAt( int pIndex )=0;
882
886 virtual bool IsList();
887 };
888
892 template <class tType> class FBPropertyBaseList : public FBPropertyBasicList
893 {
894 public:
897
900 {
901
902 }
907 FBPropertyBaseList( HIObject pParent, const char *pName ):FBPropertyBasicList( pParent, pName ) {}
908
909 public:
910 //***
911 //--- These functions require overloads in derived classes.
912 //***
913
919 virtual int Add( tType pItem )=0;
920
926 virtual tType operator[]( int pIndex )=0;
927
928 public:
929 //***
930 //--- These functions can be optionally overloaded in derived classes.
931 //***
932
937 inline virtual int Find( tType pItem )
938 {
939 int Index;
940 for(Index=0; Index<GetCount(); Index++ )
941 {
942 if( operator[](Index)==pItem )
943 {
944 return Index;
945 }
946 }
947 return -1;
948 }
949
954 inline virtual int Remove( tType pItem )
955 {
956 int Index = Find( pItem );
957 if (Index!=-1)
958 {
959 RemoveAt( Index );
960 }
961 return Index;
962 }
963
968 inline virtual tType GetAt(int pIndex)
969 {
970 return operator[](pIndex);
971 }
972 };
973
977 };
978
979
986
989 {
990 public:
993
996
1002 FBPropertyStringList* Init( FBComponent* pComponent, const char *pName );
1003
1004 public:
1009 kReference GetReferenceAt( int pIndex );
1014 void SetReferenceAt( int pIndex,kReference pRef );
1015
1020 int Find( kReference pRef );
1021
1026 int Find( const char *S );
1027
1032 virtual const char *GetAt( int pIndex );
1033
1039 const char *operator[](int pIndex);
1040
1042 void Sort( );
1043
1048
1053 int Remove( const char *S );
1054
1055 public: // Needs to be overriden for special behaviors
1061 virtual int Add( const char *S,kReference pRef = 0 );
1062
1064 virtual void Clear();
1065
1069 virtual void RemoveAt( int pIndex );
1070
1075 virtual int IndexOf(const char *S);
1076
1082 virtual void InsertAt( int pIndex, const char *S,kReference pRef = 0 );
1083
1089 virtual bool SetAt( int pIndex,const char *pString );
1090
1094 virtual bool IsList() override;
1095
1100 virtual const char* AsString( FBDataAsStringFlag pFlag = kFBDataAsStringUI ) override;
1101
1106 virtual bool SetString( const char *pString ) override;
1107
1111 virtual FBPropertyType GetPropertyType() override { return kFBPT_stringlist; }
1112 };
1113
1115 // FBPropertyManager
1118
1125 {
1126 public:
1129
1132
1137 int Add( FBProperty* Property );
1138
1145
1150
1157 FBProperty* Find( const char *pPropertyName, bool pMultilangLookup=true );
1158
1165 void FindPropertiesByName( const char* pPropertyNamePattern, FBArrayTemplate<FBProperty*>& pPropList, bool pMultilangLookup=true );
1166
1171 int Remove( FBProperty* pProperty );
1172
1177 void AddToCache( FBProperty* pProperty );
1178
1183 void RemoveFromCache( KProperty* pProperty );
1184
1190 FBProperty* FindInCache( KProperty* pProperty );
1191
1192 private:
1196 void ClearCache();
1197
1202 void SetParent( HIObject pParent );
1203
1204#ifndef DOXYGEN_SHOULD_SKIP_THIS
1205 KObject* mObject;
1206 FBArrayTemplate< FBProperty* > mPropertyCache;
1207 FBArrayTemplate< FBProperty* > mPropertyLocal;
1208#endif
1209 friend class FBComponent;
1210 friend class FBVisualComponent;
1211 };
1212
1216 template <class tType> class FBPropertyBaseComponent : public FBPropertyBase< tType, kFBPT_object >
1217 {
1218 public:
1221 public:
1224
1229 FBPropertyBase< tType, kFBPT_object >(pValue)
1231
1234 {
1235 }
1236
1238
1241 inline void operator=(tType pValue) { FBPropertyBase< tType,kFBPT_object >::operator=(pValue); }
1243
1247 inline tType operator -> () { return FBPropertyBase< tType,kFBPT_object >::operator tType(); }
1248
1252 inline operator tType() const { return FBPropertyBase< tType,kFBPT_object >::operator tType(); }
1253 };
1254
1259#define FBImplementPropertyComponent( DllTag, Type ) \
1260 template class DllTag FBSDKNamespaceFunc(FBPropertyBase)< FB##Type*,kFBPT_object >; \
1261 template class DllTag FBSDKNamespaceFunc(FBPropertyBaseComponent)< FB##Type* >;
1262
1267#define FBImplementPropertyEnum( DllTag, Type ) \
1268 template class DllTag FBSDKNamespaceFunc(FBPropertyBaseEnum)< enum FB##Type >
1269#define FBImplementClassPropertyEnum( DllTag, Class, EnumName ) \
1270 template class DllTag FBSDKNamespaceFunc(FBPropertyBaseEnum)< enum Class::E##EnumName >
1271
1276#define FBImplementPropertyList( DllTag, Type ) \
1277 template class DllTag FBSDKNamespaceFunc(FBPropertyBaseList) < FB##Type* >
1278
1280 class FBSDK_DLL FBPropertyString : public FBPropertyBase< const char *, kFBPT_charptr >
1281 {
1282 public:
1283
1285
1289 inline void operator=(const char* pValue) { SetData( &pValue ); }
1291
1296 inline operator const char* () const { char* Value; GetData( &Value,sizeof(Value) ); return Value; }
1297
1298 inline bool operator==(const char* pValue) const { char* Value; GetData( &Value,sizeof(Value) ); return (Value == pValue) || (strcmp(Value, pValue) == 0); }
1299 inline bool operator!=(const char* pValue) const { return ! operator==(pValue); }
1300
1304 virtual void SetPropertyValue( const char* pValue ) override;
1305 };
1306
1309
1313 class FBSDK_DLL FBPropertyAction : public FBPropertyBase< bool, kFBPT_Action >
1314 {
1315 public:
1318
1321 {
1322 }
1323
1327 bool operator ()();
1328 };
1329
1332
1335
1337 typedef class FBSDK_DLL FBPropertyBase< unsigned long long,kFBPT_uint64 > FBPropertyUInt64;
1338
1341
1344
1347
1350
1353
1356
1367
1375#define FBPropertyInit( Param,Type,PropName,Get,Set ) \
1376 { \
1377 PropertyAdd(PropName.Init( (void*)Param,#PropName,(Type (*)(void *))Get,(void (*)(void *,Type))Set )); \
1378 }
1379
1384#define FBPropertyInitList( Param,PropName ) \
1385 { \
1386 PropertyAdd(PropName.Init( Param,#PropName )); \
1387 }
1388
1393#define FBPropertyInitStringList( Param,PropName ) \
1394 { \
1395 PropertyAdd(PropName.Init( Param, #PropName )); \
1396 }
1397
1404#define FBPropertyInitEvent( Param,Type,SubType,PropName ) \
1405 { \
1406 PropertyAdd(PropName.Init( this, IQ(Param,IRegister),#PropName,Type,SubType )); \
1407 }
1408
1413#define FBPropertyInitEventGlobal( GlobalEventName,PropName ) \
1414 { \
1415 PropertyAdd(PropName.InitGlobal( #PropName,GlobalEventName )); \
1416 }
1417
1419#define FBPropertyInitInternal( Parent, PropName, MBProperty ) \
1420 {\
1421 PropertyAdd(PropName.InitInternal( MBProperty ));\
1422 }
1423
1425#define FBPropertyInitInternalEnum( Param,Type,PropName,MBProperty,Get,Set ) \
1426 {\
1427 PropName.InitInternal( MBProperty ); \
1428 PropertyAdd(PropName.Init( (void*)Param,#PropName,(Type (*)(void *))Get,(void (*)(void *,Type))Set )); \
1429 }
1430
1438#define FBPropertyPublish( Parent,Prop,PropName,Get,Set ) \
1439 { \
1440 PropertyAdd(Prop.CreateInternal( Parent,PropName,(fbExternalGetSetHandler)Get,(fbExternalGetSetHandler)Set )); \
1441 }
1442
1449#define FBPropertyInitTextureConnectable( Parent,Prop,PropName ) \
1450 { \
1451 PropertyAdd(Prop.CreateTextureConnectable( Parent,PropName )); \
1452 }
1453
1482 {
1483 public:
1487
1491
1492 public:
1493#ifndef DOXYGEN_SHOULD_SKIP_THIS
1495 FBPropertyAnimatable* InitInternal( KEvaluationProperty* pProperty );
1496#endif
1504 FBPropertyAnimatable* Init( FBBox* pOwner, const char* pName, const char* pType, double* pInit );
1505
1509 void Destroy();
1510
1514 virtual KDataType* GetDataType() override;
1515
1519 const char* GetDataTypeName();
1520
1525
1529 void SetFocus( bool pState );
1530
1533 void Key();
1534
1538 void KeyAt( FBTime pTime );
1539
1543 void KeyRemoveAt( FBTime pTime );
1544
1548 int GetDataSize() const;
1549
1551
1554 virtual bool IsAnimatable() override { return true; }
1555
1561
1566 void SetAnimated( bool pState, bool pCheckLocked = false );
1567
1573
1578
1582 virtual void SetData( void* pData ) override;
1583
1587 virtual void GetData( void* pData, int pSize, FBEvaluateInfo* pEvalInfo = NULL ) const override;
1588
1594 void SetCandidate( void* pData, int pSize, FBEvaluateInfo* pEvalInfo = NULL );
1595
1601 void SetGlobalCandidate( void* pData, int pSize, FBEvaluateInfo* pEvalInfo = NULL );
1602
1603
1612
1616 bool AllowsMuting() const;
1617
1621 bool HasSomethingMuted() const;
1622
1626 bool IsMuted() const;
1627
1632 bool IsMemberMuted( int pIndex ) const;
1633
1637 void SetMuted( bool pMuted );
1638
1643 void SetMemberMuted( int pIndex , bool pMuted );
1644
1650 bool SetColor(const FBColor& pColor, int pIndex);
1651
1656 FBColor GetColor(int pIndex);
1657
1662 bool ResetColor(int pIndex);
1663
1668 bool IsFocusedChild(int pIndex);
1669
1675 bool SetFocusChild(int pIndex, bool pState);
1676
1678
1679 };
1680
1684 template <class tType, FBPropertyType pPT> class FBSDK_DLL FBPropertyBaseAnimatable : public FBPropertyAnimatable
1685 {
1686 public:
1687
1689 typedef tType ValueType;
1690
1694 {
1696 }
1697
1700
1702
1705 void operator=(tType pValue)
1706 {
1708 }
1710
1714 operator tType() const
1715 {
1716 tType val;
1717 FBPropertyAnimatable::GetData(&val,sizeof(val));
1718 return val;
1719 }
1720
1724 virtual FBPropertyType GetPropertyType( ) override { return pPT; }
1725 };
1726
1727
1789 template <class tType> class FBPropertyBaseAnimatableEnum : public FBPropertyBaseAnimatable<int,kFBPT_enum>
1790 {
1791 public:
1792#ifndef DOXYGEN_SHOULD_SKIP_THIS
1794 static const char *mStrings[];
1795#endif
1796
1799
1802 {
1803 }
1804
1808 inline FBPropertyBaseAnimatableEnum(const FBPropertyBaseAnimatableEnum<tType> &pValue) { operator=((tType)pValue ); }
1809
1811
1815 inline void operator=(tType pValue) { SetData( &pValue ); }
1817
1822 inline operator tType() const { tType Value; GetData( &Value,sizeof(Value) ); return Value; }
1823
1824 virtual const char* EnumList( int pIndex ) override
1825 {
1826 if( IsInternal() )
1827 {
1828 return FBProperty::EnumList( pIndex );
1829 }
1830 // NOTE:
1831 // --> replacing test for if(mStrings) by if(mStrings[0])
1832 // This is safe to do as we should always have at least 1 item
1833 // in the list based on our base class implementation. And
1834 // the compiler should throw a linker error if mStrings is not found.
1835 // mStrings[0] == NULL for enum kDefaultEnum but mStrings can never be NULL
1836 else if(mStrings[0])
1837 {
1838 return mStrings[pIndex];
1839 }
1840 else
1841 {
1842 assert(mStrings[0] || IsInternal());
1843 return NULL;
1844 }
1845 }
1846
1851 virtual const char* AsString( FBDataAsStringFlag pFlag = kFBDataAsStringUI ) override { return EnumList( AsInt() );}
1852
1857 virtual bool SetString( const char *pString ) override
1858 {
1859 int Count=0;
1860 const char * tmpstr;
1861 while ((tmpstr=EnumList( Count ))!=NULL) {
1862 if (strcmp(tmpstr,pString)==0) {
1863 SetData( &Count );
1864 return true;
1865 }
1866 Count++;
1867 }
1868 return false;
1869 }
1870
1871
1872 };
1873
1875 // Global
1877#ifdef FBSDKUseNamespace
1878}
1879#endif
1880
1881#endif
Template class to contain an array of items.
Definition fbarray.h:78
A box is a fundamental building block in the application architecture.
Definition fbcore.h:218
Color and alpha vector.
Definition fbtypes.h:490
Color vector.
Definition fbtypes.h:448
MotionBuilder SDK base class.
AnimationNodeNotify evaluation information.
Connections Basic Open Reality SDK Element.
Definition fbplug.h:222
Property: Action Action property to trigger function.
FBPropertyAction()
Constructor.
~FBPropertyAction()
Destructor.
Animatable property base class.
bool IsFocused()
Is the property focused (keyable).
const char * GetDataTypeName()
Get the property datatype name.
FBPropertyAnimatable()
Constructor.
FBAnimationNode * GetAnimationNode(FBTake *pTake=NULL)
Get the animation node for the property.
void SetGlobalCandidate(void *pData, int pSize, FBEvaluateInfo *pEvalInfo=NULL)
Set the global candidate (useful for model TRS).
int GetDataSize() const
Get the data size (number of values) for the connector.
bool HasSomethingMuted() const
HasSomethingMuted.
void SetMemberMuted(int pIndex, bool pMuted)
SetMemberMuted.
bool SetFocusChild(int pIndex, bool pState)
Set the focus (keyable) state of child component.
virtual void SetData(void *pData) override
Set the value of the property, passing the type as an argument.
void SetCandidate(void *pData, int pSize, FBEvaluateInfo *pEvalInfo=NULL)
Set the candidate.
void Key()
Key the property.
bool SetColor(const FBColor &pColor, int pIndex)
Set the color of the FCurves for the property.
virtual ~FBPropertyAnimatable()
Destructor.
bool IsFocusedChild(int pIndex)
Get the focus (keyable) state of child component.
bool ResetColor(int pIndex)
Revert the FCurves to their default color.
virtual bool IsAnimatable() override
Certify that the property is animatable.
bool AllowsMuting() const
AllowsMuting.
void SetMuted(bool pMuted)
SetMuted.
bool IsMemberMuted(int pIndex) const
IsMemberMuted.
bool IsAnimated()
Is the property animated.
void SetFocus(bool pState)
Set the property's focus (keyable) state.
void KeyAt(FBTime pTime)
Key the property at time (t).
virtual void GetData(void *pData, int pSize, FBEvaluateInfo *pEvalInfo=NULL) const override
Get the value of a property.
FBColor GetColor(int pIndex)
Get the color of a particular FCurve of the property.
void KeyRemoveAt(FBTime pTime)
Remove the key at time (t).
void SetAnimated(bool pState, bool pCheckLocked=false)
Set the animation state of the property.
void Destroy()
Destruction function, for internal connectors.
virtual KDataType * GetDataType() override
Get the property datatype pointer.
FBBox * GetBox()
Get the owner box.
FBPropertyAnimatable * Init(FBBox *pOwner, const char *pName, const char *pType, double *pInit)
Initialization function (custom).
bool IsMuted() const
IsMuted.
~FBPropertyBaseAnimatableEnum()
Destructor.
FBPropertyBaseAnimatableEnum(const FBPropertyBaseAnimatableEnum< tType > &pValue)
FBPropertyBaseAnimatableEnum.
virtual const char * AsString(FBDataAsStringFlag pFlag=kFBDataAsStringUI) override
Get as string.
virtual bool SetString(const char *pString) override
Set string as enum value.
void operator=(tType pValue)
Overloaded = operator.
virtual const char * EnumList(int pIndex) override
Return the string of an enum value.
FBPropertyBaseAnimatableEnum()
Constructor.
tType ValueType
Property Value Type.
FBPropertyBaseAnimatable()
Constructors.
~FBPropertyBaseAnimatable()
Destructor.
void operator=(tType pValue)
Overloaded = operator.
virtual FBPropertyType GetPropertyType() override
Get the property's type.
FBPropertyBaseComponent()
Constructor.
void operator=(tType pValue)
Overloaded = operator.
FBPropertyBaseComponent(const FBPropertyBaseComponent< tType > &pValue)
Constructor.
~FBPropertyBaseComponent()
Destructor.
int * TypeInfo
< Type information.
virtual const char * AsString(FBDataAsStringFlag pFlag=kFBDataAsStringUI) override
Get as string.
virtual bool SetString(const char *pString) override
Set enum value by equivalent string.
void operator=(tType pValue)
Overloaded = operator.
virtual const char * EnumList(int pIndex) override
Return the string of an enum value.
FBPropertyBaseEnum(const FBPropertyBaseEnum< tType > &pValue)
FBPropertyBaseEnum.
~FBPropertyBaseEnum()=default
Destructor.
FBPropertyBaseEnum()=default
Constructor.
tType GetPropertyValue()
Get the value of the internal property.
tType ValueType
Property Value Type.
virtual void SetData(void *pData) override
Set value.
FBPropertyBase(const FBPropertyBase< tType, pPT > &pValue)
Constructor.
void operator=(const FBPropertyBase< tType, pPT > &pProperty)
Overloaded = operator.
FBPropertyBase()
Constructor.
void operator=(tType pValue)
Overloaded = operator.
virtual void SetPropertyValue(tType pValue)
Set the value of the internal property.
~FBPropertyBase()
Destructor.
virtual void GetData(void *pData, int pSize, FBEvaluateInfo *pEvalInfo=NULL) const override
Get value.
virtual bool IsReadOnly() override
Is this class read-only? If there is an existing set function, this class is read/write,...
virtual FBPropertyType GetPropertyType() override
Get the property's type.
FBPropertyBase * Init(void *pParent, const char *pName, tType(*pGet)(void *)=NULL, void(*pSet)(void *, tType)=NULL)
Initialization function.
virtual int Find(tType pItem)
Locate a property in the list.
~FBPropertyBaseList()
Destructor.
virtual tType operator[](int pIndex)=0
[] operator overload.
virtual int Remove(tType pItem)
Remove pItem from the list.
FBPropertyBaseList()
Constructor.
FBPropertyBaseList(HIObject pParent, const char *pName)
Constructor.
virtual int Add(tType pItem)=0
Add a property to the list.
virtual tType GetAt(int pIndex)
Get a property at pIndex.
virtual int GetCount()=0
Get the number of properties in the list.
FBProperty * Init(void *pParent, const char *pName)
Initialization function.
virtual bool IsList()
Is this a list?
void RemoveAll()
Remove all properties from the list.
FBPropertyBasicList()
Constructor.
virtual void RemoveAt(int pIndex)=0
Remove property at pIndex.
FBPropertyBasicList(HIObject pParent, const char *pName)
Constructor.
PropertyEvent: Global ConnectionDataNotify event.
virtual void Add(HICallback pOwner, kICallbackHandler pHandler)
Add/Remove a callback.
PropertyEvent: Global KeyingNotify event.
virtual void Add(HICallback pOwner, kICallbackHandler pHandler)
Add/Remove a callback.
PropertyEvent: Global ConnectionNotify event.
virtual void Add(HICallback pOwner, kICallbackHandler pHandler)
Add/Remove a callback.
PropertyEvent: Global ConnectionStateNotify event.
virtual void Add(HICallback pOwner, kICallbackHandler pHandler)
Add/Remove a callback.
PropertyEvent: Base event class.
virtual ~FBPropertyEvent()
Destructor.
virtual void Add(HICallback pOwner, kICallbackHandler pHandler)
Add/Remove a callback.
FBPropertyEvent * InitGlobal(const char *pName, const char *pGlobalEventName)
Property initialization function, for global events.
FBPropertyEvent()
Constructor.
virtual void InvalidateParent()
Invalidate parent, removing internal register parent.
virtual FBPropertyType GetPropertyType() override
Get the property's type.
FBPropertyEvent * Init(FBComponent *pComponent, HIRegister pParent, const char *pName, int pType, int pSubType=K_INT_MAX)
Property initialization function.
PropertyEvent: UI idle event.
virtual void Add(HICallback pOwner, kICallbackHandler pHandler)
Add/Remove a callback.
PropertyEvent: Video Frame Rendering Event
virtual void Add(HICallback pOwner, kICallbackHandler pHandler)
Add/Remove a callback.
Property: Base property class.
FBProperty * GetReferencedProperty()
Get the referenced property, in the case of this property is a reference property (see the IsReferenc...
const char * GetPropertyTypeName()
Get the property's type name.
virtual FBPropertyType GetPropertyType()
Get the property's type.
bool OriIsAnimated() const
Get the property original animated flag status (before any modification)
bool IsAnimated() const
Get the property animated flag status.
int GetSubMemberCount() const
GetSubMemberCount.
bool HasSomethingLocked() const
HasSomethingLocked.
FBStringList * GetEnumStringList(bool pCreateIt=false)
String list for enum properties.
bool AllowsLocking() const
AllowsLocking.
virtual const char * EnumList(int pIndex)
Return the string of an enum value.
bool IsTemporaryProperty()
Indicate if a property was created on retrieve because it didn't exist.
int AsInt()
Get the property as an integer.
virtual KDataType * GetDataType()
Get the property datatype pointer.
bool IsObjectList()
Indicate if is an instance of FBPropertyListObject.
void SetMin(double pMin, bool pForceMinClamp=false)
SetMin.
FBString mName
virtual bool SetString(const char *pString)
Set the property value from a string.
double GetMax()
GetMax.
virtual bool IsList()
Verify if property is of this type.
void SetName(const char *pName)
Set the property's name.
bool IsLocked() const
IsLocked.
bool GetPropertyFlag(FBPropertyFlag pFlag)
GetPropertyFlag.
void SetLocked(bool pLocked)
SetLocked.
void SetEnable(bool pValue)
Set property enable status.
void SetMinMax(double pMin, double pMax, bool pForceMinClamp=false, bool pForceMaxClamp=false)
SetMinMax.
bool AcceptTemporaryProperty(const char *pEnumList[]=NULL, fbExternalGetSetHandler pGet=NULL, fbExternalGetSetHandler pSet=NULL)
Accept a temporary property as a dynamic property.
virtual void GetData(void *pData, int pSize, FBEvaluateInfo *pEvalInfo=NULL) const
Get the value of a property.
const char * GetName()
Get the property's name.
double GetMin()
GetMin.
bool IsMaxClamp()
Indicate if maximum value clamping will be applied on user input value.
bool IsMinClamp()
Indicate if minimum value clamping will be applied on user input value.
virtual const char * AsString(FBDataAsStringFlag pFlag=kFBDataAsStringUI)
Get the property value as a string.
FBPropertyFlag GetPropertyFlags()
GetPropertyFlags.
void ModifyPropertyFlag(FBPropertyFlag pFlag, bool pValue)
ModifyPropertyFlag.
void * GetParent()
Get the parent of the object.
void NotifyEnumStringListChanged()
Notify system that the enum list was modified.
void * mParent
bool SetInt(int pInt)
Set the property from an integer.
virtual bool IsReadOnly()
Is property read-only?
bool IsMemberLocked(int pIndex) const
IsMemberLocked.
FBProperty()
Constructor.
void SetMax(double pMax, bool pForceMaxClamp=false)
SetMax.
void SetMemberLocked(int pIndex, bool pLocked)
SetMemberLocked.
virtual void SetData(void *pData)
Set the value of the property, passing the type as an argument.
const char * OriValueAsString()
Get the property original value (before any modification) as string.
Property Manager.
FBProperty * operator[](int pIndex)
Overloaded [] operator.
int Add(FBProperty *Property)
Add a property to the property manager.
FBPropertyManager()
Constructor.
void FindPropertiesByName(const char *pPropertyNamePattern, FBArrayTemplate< FBProperty * > &pPropList, bool pMultilangLookup=true)
This function will query the property list for properties fulfilling a particular name pattern.
FBProperty * Find(const char *pPropertyName, bool pMultilangLookup=true)
Find a property, based on its name.
int GetCount()
Get the number of properties stored in property manager.
int Remove(FBProperty *pProperty)
Remove a property.
~FBPropertyManager()
Destructor.
Property class: const char * (String).
virtual void SetPropertyValue(const char *pValue) override
Set the value of the internal property.
void operator=(const char *pValue)
Overloaded = operator.
Property: StringList
virtual void RemoveAt(int pIndex)
Remove an entry at pIndex.
FBPropertyStringList()
Constructor.
virtual void InsertAt(int pIndex, const char *S, kReference pRef=0)
Insert an entry at pIndex.
kReference GetReferenceAt(int pIndex)
Get the reference at pIndex.
virtual void Clear()
Clear the list (remove all the items).
virtual const char * AsString(FBDataAsStringFlag pFlag=kFBDataAsStringUI) override
Get as string.
int Find(const char *S)
Find the index of a string.
virtual bool SetString(const char *pString) override
Set string for list.
virtual bool IsList() override
Is this class a list?
virtual int IndexOf(const char *S)
Get the index of a string.
int Find(kReference pRef)
Find the index of a reference.
virtual ~FBPropertyStringList()
Destructor.
int GetCount()
Get the number of items in the list.
virtual const char * GetAt(int pIndex)
Get the string stored at pIndex.
virtual int Add(const char *S, kReference pRef=0)
Add a string to the list.
FBPropertyStringList * Init(FBComponent *pComponent, const char *pName)
Property initialization function.
void SetReferenceAt(int pIndex, kReference pRef)
Set reference at pIndex.
const char * operator[](int pIndex)
[] operator overload.
int Remove(const char *S)
Remove a string from the list.
virtual bool SetAt(int pIndex, const char *pString)
Set the string at pIndex.
virtual FBPropertyType GetPropertyType() override
Get the property's type.
void Sort()
Sort list ascending.
Basic string class.
Definition fbstring.h:67
String list.
Definition fbstring.h:208
A take is a container for animation in a scene.
Definition fbdata.h:1727
TimeCode data structure.
Definition fbtime.h:308
Time data structure.
Definition fbtime.h:88
TimeSpan class.
Definition fbtime.h:410
Visual Component base class.
Definition fbcontrols.h:312
A template class for arrays.
T * FBCast(FBObject *pObject, bool pAutoCreate=false)
Cast the SDK object using it's IObject interface into the proper class.
#define FBSDK_DLL
Be sure that FBSDK_DLL is defined only once...
#define FBClassDeclare(Name, Parent)
Class declaration.
Definition fbdefines.h:85
Definition of the class FBPlug and related enums and utility functions.
K_DLLIMPORT HIObject FBGetFBObject(HIObject pObject, bool pAutoCreate=false)
Get the SDK object from an Internal Object.
class K_DLLIMPORT FBPropertyBaseAnimatable< FBVector3d, kFBPT_Vector3D > FBPropertyAnimatableVector3d
FBPropertyAnimatableVector3D type definition.
FBPropertyFlag
Available flags for FBProperty objects.
@ kFBDrivenSetByMain
Driven property can be modified, valid only when the main property is modified.
@ kFBLoadedUserProperty
This property is loaded from file.
@ kFBPropertyFlagSlavedProperty
@ kFBDynamicHidden
This flag is used to show/hide the property in the propertiview. When turn on/ff DynamicHidden flag,...
@ kFBPropertyFlagDrivenProperty
This is property is connected and driven by other same type of main property, and it always ask value...
@ kFBPropertyFlagHideProperty
This flag is used to show/hide the property in the propertiview. However, when turn on/off HideProper...
@ kFBPropertyFlagNotSavable
Should not be saved to or loaded from an FBX file.
@ kFBValueAllocated
The value has been allocated and must be delete in destructor.
@ kFBSlaveSetByMaster
class K_DLLIMPORT FBPropertyBaseAnimatable< unsigned long long, kFBPT_uint64 > FBPropertyAnimatableUInt64
FBPropertyAnimatableUInt64 type definition.
class K_DLLIMPORT FBPropertyBase< kReference, kFBPT_kReference > FBPropertykReference
Property: kReference
class K_DLLIMPORT FBPropertyBase< int, kFBPT_int > FBPropertyInt
Property: int
class K_DLLIMPORT FBPropertyBase< FBProperty *, kFBPT_Reference > FBPropertyReference
Property: FBProperty *
class K_DLLIMPORT FBPropertyBaseAnimatable< bool, kFBPT_Action > FBPropertyAnimatableAction
FBPropertyAnimatableAction type definition.
class K_DLLIMPORT FBPropertyBaseAnimatable< FBColor, kFBPT_ColorRGB > FBPropertyAnimatableColor
FBPropertyAnimatableColor type definition.
class K_DLLIMPORT FBPropertyBase< FBColorAndAlpha, kFBPT_ColorRGBA > FBPropertyColorAndAlpha
FBPropertyColorAndAlpha type definition.
class K_DLLIMPORT FBPropertyBaseAnimatable< int, kFBPT_enum > FBPropertyAnimatableEnum
FBPropertyBaseAnimatableEnum type definition.
FBPropertyType
Property types.
@ kFBPT_Action
action.
@ kFBPT_object
object.
@ kFBPT_event
event.
@ kFBPT_ColorRGB
colorrgb.
@ kFBPT_uint64
unsigned int 64 bits.
@ kFBPT_enum
enum.
@ kFBPT_unknown
unknow.
@ kFBPT_Vector4D
vector4d.
@ kFBPT_ColorRGBA
colorrgba.
@ kFBPT_kReference
kReference.
@ kFBPT_bool
bool.
@ kFBPT_float
float.
@ kFBPT_Time
time.
@ kFBPT_charptr
charptr.
@ kFBPT_TimeCode
timecode.
@ kFBPT_stringlist
stringlist.
@ kFBPT_double
double.
@ kFBPT_Vector3D
vector3d.
@ kFBPT_Vector2D
vector2d.
@ kFBPT_Reference
reference.
@ kFBPT_int
int.
@ kFBPT_TimeSpan
timespan.
@ kFBPT_int64
int 64 bits.
class K_DLLIMPORT FBPropertyBaseAnimatable< int, kFBPT_int > FBPropertyAnimatableInt
FBPropertyAnimatableInt type definition.
class K_DLLIMPORT FBPropertyBaseAnimatable< double, kFBPT_double > FBPropertyAnimatableDouble
FBPropertyBaseAnimatableDouble type definition.
class K_DLLIMPORT FBPropertyBaseAnimatable< bool, kFBPT_bool > FBPropertyAnimatableBool
FBPropertyAnimatableBool type definition.
class K_DLLIMPORT FBPropertyBase< FBVector3d, kFBPT_Vector3D > FBPropertyVector3d
FBPropertyVector3d type definition.
class K_DLLIMPORT FBPropertyBase< FBPlug *, kFBPT_object > _FBPropertyBasePlug
Property: FBPropertyBase(FBPlug*)
class K_DLLIMPORT FBPropertyBaseComponent< FBComponent * > FBPropertyComponent
Property: FBPropertyBaseComponent(FBComponent*)
class K_DLLIMPORT FBPropertyBaseAnimatable< FBColorAndAlpha, kFBPT_ColorRGBA > FBPropertyAnimatableColorAndAlpha
FBPropertyAnimatableColorAndAlpha type definition.
class K_DLLIMPORT FBPropertyBaseAnimatable< FBTimeCode, kFBPT_TimeCode > FBPropertyAnimatableTimeCode
FBPropertyBaseAnimatableTimeCode type definition.
void(* fbGetSetHandler)(void)
function pointer
class K_DLLIMPORT FBPropertyBase< unsigned long long, kFBPT_uint64 > FBPropertyUInt64
Property: int
class K_DLLIMPORT FBPropertyBase< long long, kFBPT_int64 > FBPropertyInt64
Property: int
class K_DLLIMPORT FBPropertyBase< bool, kFBPT_bool > FBPropertyBool
Property: bool
class K_DLLIMPORT FBPropertyBase< FBVector4d, kFBPT_Vector4D > FBPropertyVector4d
FBPropertyVector4d type definition.
class K_DLLIMPORT FBPropertyBaseAnimatable< long long, kFBPT_int64 > FBPropertyAnimatableInt64
FBPropertyAnimatableInt64 type definition.
FBDataAsStringFlag
FBDataAsStringFlag.
@ kFBDataAsStringPersistence
Convert data to string type for storage.
@ kFBDataAsStringUI
Convert data to string type for UI display.
class K_DLLIMPORT FBPropertyBase< FBTimeCode, kFBPT_TimeCode > FBPropertyTimeCode
Property: FBTimeCode
class K_DLLIMPORT FBPropertyBase< float, kFBPT_float > FBPropertyFloat
Property: float
class K_DLLIMPORT FBPropertyBase< FBTime, kFBPT_Time > FBPropertyTime
Property: FBTime
class K_DLLIMPORT FBPropertyBase< FBVector2d, kFBPT_Vector2D > FBPropertyVector2d
FBPropertyVector2d type definition.
void(* fbExternalGetSetHandler)(HIObject pObject)
function pointer
class FBPropertyBaseComponent< FBPlug * > FBPropertyPlug
Property: FBPropertyBaseComponent(FBPlug*)
class K_DLLIMPORT FBPropertyBaseAnimatable< FBVector2d, kFBPT_Vector2D > FBPropertyAnimatableVector2d
FBPropertyAnimatableVector2D type definition.
class K_DLLIMPORT FBPropertyBaseAnimatable< FBVector4d, kFBPT_Vector4D > FBPropertyAnimatableVector4d
FBPropertyAnimatableVector4D type definition.
class K_DLLIMPORT FBPropertyBaseEnum< enum kDefaultEnum > FBPropertyEnum
A typedef Definition.
class K_DLLIMPORT FBPropertyBase< FBComponent *, kFBPT_object > _FBPropertyBaseComponent
Property: FBPropertyBase(FBComponent*)
class K_DLLIMPORT FBPropertyBaseAnimatable< FBTime, kFBPT_Time > FBPropertyAnimatableTime
FBPropertyBaseAnimatableTime type definition.
class K_DLLIMPORT FBPropertyBase< FBTimeSpan, kFBPT_TimeSpan > FBPropertyTimeSpan
Property: FBTimeSpan
kDefaultEnum
Patch to use the base enum for casting values .
@ kDefaultItemNone
None.
class K_DLLIMPORT FBPropertyBase< FBColor, kFBPT_ColorRGB > FBPropertyColor
FBPropertyColor type definition.
class K_DLLIMPORT FBPropertyBase< double, kFBPT_double > FBPropertyDouble
Property: double
String class.
Time classes.
class K_DLLIMPORT FBVector2< double > FBVector2d
2D vector.
Definition fbtypes.h:435
#define FB_FORWARD(ClassName)
Forwarding of class and typedef declaration.
Definition fbtypes.h:62
#define __FB_FORWARD(ClassName)
Forwarding of class and typedef declaration.
Definition fbtypes.h:68
class K_DLLIMPORT FBVector3< double > FBVector3d
3D vector.
Definition fbtypes.h:438
class K_DLLIMPORT FBVector4< double > FBVector4d
4D vector
Definition fbtypes.h:441