Open Reality Reference Guide
fbproperties.h
Go to the documentation of this file.
1 #ifndef __FBPROPERTIES_H__
2 #define __FBPROPERTIES_H__
3 /**************************************************************************
4 Copyright (c) 1994 - 2009 Autodesk, Inc. and/or its licensors.
5 All Rights Reserved.
6 
7 The coded instructions, statements, computer programs, and/or related
8 material (collectively the "Data") in these files contain unpublished
9 information proprietary to Autodesk, Inc. and/or its licensors, which is
10 protected by Canada and United States of America federal copyright law
11 and by international treaties.
12 
13 The Data may not be disclosed or distributed to third parties, in whole
14 or in part, without the prior written consent of Autodesk, Inc.
15 ("Autodesk").
16 
17 THE DATA IS PROVIDED "AS IS" AND WITHOUT WARRANTY.
18 ALL WARRANTIES ARE EXPRESSLY EXCLUDED AND DISCLAIMED. AUTODESK MAKES NO
19 WARRANTY OF ANY KIND WITH RESPECT TO THE DATA, EXPRESS, IMPLIED OR
20 ARISING BY CUSTOM OR TRADE USAGE, AND DISCLAIMS ANY IMPLIED WARRANTIES
21 OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR
22 PURPOSE OR USE. WITHOUT LIMITING THE FOREGOING, AUTODESK DOES NOT
23 WARRANT THAT THE OPERATION OF THE DATA WILL BE UNINTERRUPTED OR ERROR
24 FREE.
25 
26 IN NO EVENT SHALL AUTODESK, ITS AFFILIATES, PARENT COMPANIES, LICENSORS
27 OR SUPPLIERS ("AUTODESK GROUP") BE LIABLE FOR ANY LOSSES, DAMAGES OR
28 EXPENSES OF ANY KIND (INCLUDING WITHOUT LIMITATION PUNITIVE OR MULTIPLE
29 DAMAGES OR OTHER SPECIAL, DIRECT, INDIRECT, EXEMPLARY, INCIDENTAL, LOSS
30 OF PROFITS, REVENUE OR DATA, COST OF COVER OR CONSEQUENTIAL LOSSES OR
31 DAMAGES OF ANY KIND), HOWEVER CAUSED, AND REGARDLESS OF THE THEORY OF
32 LIABILITY, WHETHER DERIVED FROM CONTRACT, TORT (INCLUDING, BUT NOT
33 LIMITED TO, NEGLIGENCE), OR OTHERWISE, ARISING OUT OF OR RELATING TO THE
34 DATA OR ITS USE OR ANY OTHER PERFORMANCE, WHETHER OR NOT AUTODESK HAS
35 BEEN 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 
64 K_FORWARD( KEventBase );
65 K_FORWARD( KObject );
66 K_FORWARD( KProperty );
67 K_FORWARD( KEvaluationProperty );
68 K_FORWARD( KDataType );
69 K_FORWARD( IFBObject );
70 K_FORWARD( IRegister );
71 
72 #ifdef FBSDKUseNamespace
73 namespace 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 
194  class FBSDK_DLL FBProperty : public FBPlug
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 
330  bool IsMaxClamp();
331 
337 
342  bool AcceptTemporaryProperty(const char* pEnumList[] = NULL, fbExternalGetSetHandler pGet=NULL, fbExternalGetSetHandler pSet=NULL);
343 
347  bool IsObjectList();
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 );
497  FB_FORWARD( FBTake );
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 
547  virtual ~FBPropertyEvent();
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) {
837  FBPropertyBaseEnum::SetData( &count );
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 
975  enum kDefaultEnum {
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 
1047  int GetCount();
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 
1144  FBProperty* operator[](int pIndex);
1145 
1149  int GetCount();
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:
1220  int *TypeInfo;
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 
1308  typedef class FBSDK_DLL FBPropertyBase< bool,kFBPT_bool > FBPropertyBool;
1309 
1313  class FBSDK_DLL FBPropertyAction : public FBPropertyBase< bool, kFBPT_Action >
1314  {
1315  public:
1317  inline FBPropertyAction() {}
1318 
1321  {
1322  }
1323 
1327  bool operator ()();
1328  };
1329 
1331  typedef class FBSDK_DLL FBPropertyBase< int,kFBPT_int > FBPropertyInt;
1332 
1334  typedef class FBSDK_DLL FBPropertyBase< long long,kFBPT_int64 > FBPropertyInt64;
1335 
1337  typedef class FBSDK_DLL FBPropertyBase< unsigned long long,kFBPT_uint64 > FBPropertyUInt64;
1338 
1340  typedef class FBSDK_DLL FBPropertyBase< double,kFBPT_double > FBPropertyDouble;
1341 
1343  typedef class FBSDK_DLL FBPropertyBase< float,kFBPT_float > FBPropertyFloat;
1344 
1347 
1350 
1353 
1355  typedef class FBSDK_DLL FBPropertyBase< kReference,kFBPT_kReference > FBPropertykReference;
1356 
1366  typedef class FBPropertyBaseComponent< FBPlug* > FBPropertyPlug;
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 
1524  bool IsFocused();
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 
1560  bool IsAnimated();
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 
1744  typedef class FBSDK_DLL FBPropertyBaseAnimatable< unsigned long long,kFBPT_uint64 > FBPropertyAnimatableUInt64;
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.
Definition: fbcomponent.h:651
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).
FBPropertyAnimatable()
Constructor.
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.
const char * GetDataTypeName()
Get the property datatype name.
FBAnimationNode * GetAnimationNode(FBTake *pTake=NULL)
Get the animation node for the property.
virtual KDataType * GetDataType() override
Get the property datatype pointer.
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.
FBBox * GetBox()
Get the owner box.
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.
FBPropertyAnimatable * Init(FBBox *pOwner, const char *pName, const char *pType, double *pInit)
Initialization function (custom).
bool IsMuted() const
IsMuted.
virtual const char * EnumList(int pIndex) override
Return the string of an enum value.
~FBPropertyBaseAnimatableEnum()
Destructor.
FBPropertyBaseAnimatableEnum(const FBPropertyBaseAnimatableEnum< tType > &pValue)
FBPropertyBaseAnimatableEnum.
virtual bool SetString(const char *pString) override
Set string as enum value.
virtual const char * AsString(FBDataAsStringFlag pFlag=kFBDataAsStringUI) override
Get as string.
void operator=(tType pValue)
Overloaded = operator.
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 * EnumList(int pIndex) override
Return the string of an enum value.
Definition: fbproperties.h:798
virtual bool SetString(const char *pString) override
Set enum value by equivalent string.
Definition: fbproperties.h:831
virtual const char * AsString(FBDataAsStringFlag pFlag=kFBDataAsStringUI) override
Get as string.
Definition: fbproperties.h:825
void operator=(tType pValue)
Overloaded = operator.
Definition: fbproperties.h:789
FBPropertyBaseEnum(const FBPropertyBaseEnum< tType > &pValue)
FBPropertyBaseEnum.
Definition: fbproperties.h:780
~FBPropertyBaseEnum()=default
Destructor.
FBPropertyBaseEnum()=default
Constructor.
tType GetPropertyValue()
Get the value of the internal property.
Definition: fbproperties.h:704
FBPropertyBase * Init(void *pParent, const char *pName, tType(*pGet)(void *)=NULL, void(*pSet)(void *, tType)=NULL)
Initialization function.
Definition: fbproperties.h:654
tType ValueType
Property Value Type.
Definition: fbproperties.h:632
virtual void SetData(void *pData) override
Set value.
Definition: fbproperties.h:743
FBPropertyBase(const FBPropertyBase< tType, pPT > &pValue)
Constructor.
Definition: fbproperties.h:640
void operator=(const FBPropertyBase< tType, pPT > &pProperty)
Overloaded = operator.
Definition: fbproperties.h:676
FBPropertyBase()
Constructor.
Definition: fbproperties.h:635
void operator=(tType pValue)
Overloaded = operator.
Definition: fbproperties.h:668
virtual void SetPropertyValue(tType pValue)
Set the value of the internal property.
Definition: fbproperties.h:693
~FBPropertyBase()
Destructor.
Definition: fbproperties.h:643
virtual void GetData(void *pData, int pSize, FBEvaluateInfo *pEvalInfo=NULL) const override
Get value.
Definition: fbproperties.h:724
virtual bool IsReadOnly() override
Is this class read-only? If there is an existing set function, this class is read/write,...
Definition: fbproperties.h:719
virtual FBPropertyType GetPropertyType() override
Get the property's type.
Definition: fbproperties.h:688
virtual int Find(tType pItem)
Locate a property in the list.
Definition: fbproperties.h:937
~FBPropertyBaseList()
Destructor.
Definition: fbproperties.h:899
virtual tType operator[](int pIndex)=0
[] operator overload.
virtual int Remove(tType pItem)
Remove pItem from the list.
Definition: fbproperties.h:954
FBPropertyBaseList()
Constructor.
Definition: fbproperties.h:896
FBPropertyBaseList(HIObject pParent, const char *pName)
Constructor.
Definition: fbproperties.h:907
virtual int Add(tType pItem)=0
Add a property to the list.
virtual tType GetAt(int pIndex)
Get a property at pIndex.
Definition: fbproperties.h:968
virtual int GetCount()=0
Get the number of properties in the list.
virtual bool IsList()
Is this a list?
FBProperty * Init(void *pParent, const char *pName)
Initialization function.
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.
Definition: fbproperties.h:597
virtual void Add(HICallback pOwner, kICallbackHandler pHandler)
Add/Remove a callback.
PropertyEvent: Global KeyingNotify event.
Definition: fbproperties.h:613
virtual void Add(HICallback pOwner, kICallbackHandler pHandler)
Add/Remove a callback.
PropertyEvent: Global ConnectionNotify event.
Definition: fbproperties.h:589
virtual void Add(HICallback pOwner, kICallbackHandler pHandler)
Add/Remove a callback.
PropertyEvent: Global ConnectionStateNotify event.
Definition: fbproperties.h:605
virtual void Add(HICallback pOwner, kICallbackHandler pHandler)
Add/Remove a callback.
PropertyEvent: Base event class.
Definition: fbproperties.h:515
FBPropertyEvent * InitGlobal(const char *pName, const char *pGlobalEventName)
Property initialization function, for global events.
virtual ~FBPropertyEvent()
Destructor.
virtual void Add(HICallback pOwner, kICallbackHandler pHandler)
Add/Remove a callback.
FBPropertyEvent * Init(FBComponent *pComponent, HIRegister pParent, const char *pName, int pType, int pSubType=K_INT_MAX)
Property initialization function.
FBPropertyEvent()
Constructor.
virtual void InvalidateParent()
Invalidate parent, removing internal register parent.
virtual FBPropertyType GetPropertyType() override
Get the property's type.
Definition: fbproperties.h:564
PropertyEvent: UI idle event.
Definition: fbproperties.h:573
virtual void Add(HICallback pOwner, kICallbackHandler pHandler)
Add/Remove a callback.
PropertyEvent: Video Frame Rendering Event
Definition: fbproperties.h:581
virtual void Add(HICallback pOwner, kICallbackHandler pHandler)
Add/Remove a callback.
Property: Base property class.
Definition: fbproperties.h:195
virtual const char * AsString(FBDataAsStringFlag pFlag=kFBDataAsStringUI)
Get the property value as a string.
FBProperty * GetReferencedProperty()
Get the referenced property, in the case of this property is a reference property (see the IsReferenc...
const char * GetName()
Get the property's 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.
virtual const char * EnumList(int pIndex)
Return the string of an enum value.
bool AllowsLocking() const
AllowsLocking.
FBStringList * GetEnumStringList(bool pCreateIt=false)
String list for enum properties.
bool IsTemporaryProperty()
Indicate if a property was created on retrieve because it didn't exist.
int AsInt()
Get the property as an integer.
const char * OriValueAsString()
Get the property original value (before any modification) as string.
bool IsObjectList()
Indicate if is an instance of FBPropertyListObject.
void SetMin(double pMin, bool pForceMinClamp=false)
SetMin.
FBString mName
Definition: fbproperties.h:200
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.
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.
FBPropertyFlag GetPropertyFlags()
GetPropertyFlags.
void ModifyPropertyFlag(FBPropertyFlag pFlag, bool pValue)
ModifyPropertyFlag.
void NotifyEnumStringListChanged()
Notify system that the enum list was modified.
virtual KDataType * GetDataType()
Get the property datatype pointer.
void * mParent
Definition: fbproperties.h:202
void * GetParent()
Get the parent of the object.
Definition: fbproperties.h:422
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.
const char * GetPropertyTypeName()
Get the property's type name.
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.
Property Manager.
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.
FBProperty * operator[](int pIndex)
Overloaded [] operator.
~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
Definition: fbproperties.h:989
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).
int Find(const char *S)
Find the index of a string.
virtual bool SetString(const char *pString) override
Set string for list.
virtual const char * GetAt(int pIndex)
Get the string stored at pIndex.
virtual bool IsList() override
Is this class a list?
virtual const char * AsString(FBDataAsStringFlag pFlag=kFBDataAsStringUI) override
Get as string.
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 int Add(const char *S, kReference pRef=0)
Add a string to the list.
const char * operator[](int pIndex)
[] operator overload.
void SetReferenceAt(int pIndex, kReference pRef)
Set reference at pIndex.
int Remove(const char *S)
Remove a string from the list.
FBPropertyStringList * Init(FBComponent *pComponent, const char *pName)
Property initialization function.
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:282
Time data structure.
Definition: fbtime.h:88
TimeSpan class.
Definition: fbtime.h:384
Visual Component base class.
Definition: fbcontrols.h:312
A template class for arrays.
#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.
#define FBSDK_DLL
Be sure that FBSDK_DLL is defined only once...
Definition: fbproperties.h:51
FBPropertyFlag
Available flags for FBProperty objects.
Definition: fbproperties.h:119
@ kFBDrivenSetByMain
Driven property can be modified, valid only when the main property is modified.
Definition: fbproperties.h:132
@ kFBLoadedUserProperty
This property is loaded from file.
Definition: fbproperties.h:134
@ kFBPropertyFlagSlavedProperty
Definition: fbproperties.h:125
@ kFBDynamicHidden
This flag is used to show/hide the property in the propertiview. When turn on/ff DynamicHidden flag,...
Definition: fbproperties.h:131
@ kFBPropertyFlagDrivenProperty
This is property is connected and driven by other same type of main property, and it always ask value...
Definition: fbproperties.h:124
@ kFBPropertyFlagHideProperty
This flag is used to show/hide the property in the propertiview. However, when turn on/off HideProper...
Definition: fbproperties.h:121
@ kFBPropertyFlagNotSavable
Should not be saved to or loaded from an FBX file.
Definition: fbproperties.h:127
@ kFBValueAllocated
The value has been allocated and must be delete in destructor.
Definition: fbproperties.h:130
@ kFBSlaveSetByMaster
Definition: fbproperties.h:133
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.
Definition: fbproperties.h:80
@ kFBPT_Action
action.
Definition: fbproperties.h:99
@ kFBPT_object
object.
Definition: fbproperties.h:92
@ kFBPT_event
event.
Definition: fbproperties.h:93
@ kFBPT_ColorRGB
colorrgb.
Definition: fbproperties.h:97
@ kFBPT_uint64
unsigned int 64 bits.
Definition: fbproperties.h:84
@ kFBPT_enum
enum.
Definition: fbproperties.h:89
@ kFBPT_unknown
unknow.
Definition: fbproperties.h:81
@ kFBPT_Vector4D
vector4d.
Definition: fbproperties.h:95
@ kFBPT_ColorRGBA
colorrgba.
Definition: fbproperties.h:98
@ kFBPT_kReference
kReference.
Definition: fbproperties.h:102
@ kFBPT_bool
bool.
Definition: fbproperties.h:85
@ kFBPT_float
float.
Definition: fbproperties.h:86
@ kFBPT_Time
time.
Definition: fbproperties.h:90
@ kFBPT_charptr
charptr.
Definition: fbproperties.h:88
@ kFBPT_TimeCode
timecode.
Definition: fbproperties.h:91
@ kFBPT_stringlist
stringlist.
Definition: fbproperties.h:94
@ kFBPT_double
double.
Definition: fbproperties.h:87
@ kFBPT_Vector3D
vector3d.
Definition: fbproperties.h:96
@ kFBPT_Vector2D
vector2d.
Definition: fbproperties.h:103
@ kFBPT_Reference
reference.
Definition: fbproperties.h:100
@ kFBPT_int
int.
Definition: fbproperties.h:82
@ kFBPT_TimeSpan
timespan.
Definition: fbproperties.h:101
@ kFBPT_int64
int 64 bits.
Definition: fbproperties.h:83
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
Definition: fbproperties.h:167
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.
Definition: fbproperties.h:110
@ kFBDataAsStringPersistence
Convert data to string type for storage.
Definition: fbproperties.h:112
@ kFBDataAsStringUI
Convert data to string type for UI display.
Definition: fbproperties.h:111
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
Definition: fbproperties.h:169
class FBPropertyBaseComponent< FBPlug * > FBPropertyPlug
Property: FBPropertyBaseComponent(FBPlug*)
T * FBCast(FBProperty *pProperty, bool pAutoCreate=false)
Cast property using it's IObject interface into the proper type.
Definition: fbproperties.h:487
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.
Definition: fbproperties.h:980
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 .
Definition: fbproperties.h:975
@ kDefaultItemNone
None.
Definition: fbproperties.h:976
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