Open Reality Reference Guide
fbcore.h
Go to the documentation of this file.
1 #ifndef __FBCORE_H__
2 #define __FBCORE_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 
43 #include <kaydaradef.h>
44 #ifndef FBSDK_DLL
48 #define FBSDK_DLL K_DLLIMPORT
49 #endif
50 
51 #include <fbsdk/fbcomponent.h>
52 #include <fbsdk/fbfbx.h>
53 #include <fbsdk/fbtime.h>
54 #include <fbsdk/fbdata.h>
55 #include <fbsdk/fbevaluateinfo.h>
56 
57 
58 // somebody at SGI defined this in their include files
59 // until we find which one, we remove it
60 #undef Status
61 
62 #ifdef FBSDKUseNamespace
63 namespace FBSDKNamespace {
64 #endif
65 
66  FB_DEFINE_COMPONENT( FBSDK_DLL, ModelTemplate );
67  FB_DEFINE_COMPONENT( FBSDK_DLL, Device );
68  FB_DEFINE_COMPONENT( FBSDK_DLL, Path3D );
71  FB_DEFINE_COMPONENT( FBSDK_DLL, Device );
72 
73  // ==========================================================================================
74  // Global definition
75  // ==========================================================================================
81  typedef HIObject (* kFBObjectCreatorFnc)(HIObject pOwner,const char* pName,void *pData);
82 
83  // ==========================================================================================
84  // Declaration definition
85  // ==========================================================================================
90 #define FBBoxDeclare( ClassName, Parent ) \
91  FBClassDeclare( ClassName,Parent ); \
92 public: \
93  ClassName(const char* pName):Parent(pName) { FBClassInit; } \
94 private:
95 
99 #define FBBoxImplementation( ThisComponent ) \
100  FBClassImplementation( ThisComponent )
101 
106 #define FBDeviceDeclare( ClassName, Parent ) \
107  FBClassDeclare( ClassName,Parent ); \
108 public: \
109  ClassName(const char* pName):Parent(pName) { FBClassInit; } \
110 private:
111 
115 #define FBDeviceImplementation( ThisComponent ) \
116  FBClassImplementation( ThisComponent )
117 
118  // ==========================================================================================
119  // Register definition
120  // ==========================================================================================
129 #define FBRegisterBox( UniqueNameStr, ClassName, FolderName, Label, Description, IconFilename ) \
130  HIObject RegisterBox##ClassName##Create( HIObject /*pOwner*/,const char* pName,void * /*pData*/) \
131  { \
132  ClassName *Class = new ClassName(pName); \
133  Class->mAllocated = true; \
134  Class->UniqueName = UniqueNameStr; \
135  if (Class->FBCreate()) { \
136  return Class->GetHIObject(); \
137  } else { \
138  delete Class; \
139  return NULL; \
140  } \
141  } \
142  \
143  FBLibraryModule( ClassName ) \
144  {\
145  FBRegisterObject(ClassName##R1,"Boxes",UniqueNameStr,Description,RegisterBox##ClassName##Create,true, IconFilename );\
146  FBRegisterObject(ClassName##R2,"Boxes/Functions/" FolderName,Label,Description,RegisterBox##ClassName##Create,true, IconFilename );\
147  FBRegisterObject(ClassName##R3,"FbxStorable/Box",UniqueNameStr,Description,RegisterBox##ClassName##Create,true, IconFilename ); \
148  }
149 
157 #define FBRegisterDevice( UniqueNameStr, ClassName, Label, Description, IconFilename ) \
158  HIObject RegisterDevice##ClassName##Create( HIObject /*pOwner*/,const char* pName,void * /*pData*/) \
159  { \
160  ClassName *Class = new ClassName(pName); \
161  Class->mAllocated = true; \
162  Class->UniqueName = UniqueNameStr; \
163  if (Class->FBCreate()) { \
164  return Class->GetHIObject(); \
165  } else { \
166  delete Class; \
167  return NULL; \
168  } \
169  } \
170  \
171  FBLibraryModule( ClassName ) \
172  { \
173  FBRegisterObject(ClassName##R1,"Boxes/Devices",Label,Description,RegisterDevice##ClassName##Create,true, IconFilename );\
174  FBRegisterObject(ClassName##R2,"FbxStorable/Device",UniqueNameStr,Description,RegisterDevice##ClassName##Create,true, IconFilename ); \
175  }
176 
184 #define FBRegisterOnlineDevice( UniqueNameStr, ClassName, Label, Description, IconFilename ) \
185  HIObject RegisterDevice##ClassName##Create( HIObject /*pOwner*/,const char* pName,void * /*pData*/) \
186  { \
187  ClassName *Class = new ClassName(pName); \
188  Class->mAllocated = true; \
189  Class->UniqueName = UniqueNameStr; \
190  if (Class->FBCreate()) { \
191  return Class->GetHIObject(); \
192  } else { \
193  delete Class; \
194  return NULL; \
195  } \
196  } \
197  \
198  FBLibraryModule( ClassName ) \
199  { \
200  if( FBGetLicense() >= kFBLicenseOnline ) \
201  { \
202  FBRegisterObject(ClassName##R1,"Boxes/Devices",Label,Description,RegisterDevice##ClassName##Create, true, IconFilename );\
203  FBRegisterObject(ClassName##R2,"FbxStorable/Device",UniqueNameStr,Description,RegisterDevice##ClassName##Create, true, IconFilename ); \
204  } \
205  }
206 
207 
209  // FBBox
211  __FB_FORWARD( FBBox );
213 
218  class FBSDK_DLL FBBox : public FBComponent {
220  public:
225  FBBox(const char* pName, HIObject pObject=NULL);
226 
229  {
232  eCandidateInterceptAfterEvaluation
233  };
234 
236 
246  virtual FBAnimationNode* AnimationNodeInCreate (kReference pUserId,const char * pName ,const char * pDataType,bool pIsPublic=false,double *pMin=NULL,double *pMax=NULL,bool pUserData=false);
247  virtual FBAnimationNode* AnimationNodeOutCreate (kReference pUserId,const char * pName ,const char * pDataType,bool pIsPublic=false,double *pMin=NULL,double *pMax=NULL,bool pUserData=false);
249 
255  virtual bool EvaluateAnimationNodes( FBEvaluateInfo* pEvaluateInfo );
256 
263  virtual bool AnimationNodeNotify( FBAnimationNode* pAnimationNode, FBEvaluateInfo* pEvaluateInfo );
264 
270  virtual bool ResolveCandidate( FBAnimationNode* pAnimationNode, FBEvaluateInfo* pEvaluateInfo );
271 
277  virtual ECandidateAction SetGlobalCandidate( FBAnimationNode* pAnimationNode, double* pData, FBEvaluateInfo* pEvaluateInfo );
278 
284  virtual ECandidateAction SetStdCandidate( FBAnimationNode* pAnimationNode, double* pData, FBEvaluateInfo* pEvaluateInfo );
285 
287 
292  virtual bool FbxStore( FBFbxObject* pFbxObject, kFbxObjectStore pStoreWhat );
293  virtual bool FbxRetrieve(FBFbxObject* pFbxObject, kFbxObjectStore pStoreWhat );
295 
300  virtual bool AnimationNodeDestroy( FBAnimationNode* pAnimationNode );
301 
306  virtual bool AnimationNodeIsUserData( FBAnimationNode* pAnimationNode );
307 
312  virtual void AnimationNodesOutDisableIfNotWritten( FBEvaluateInfo* pEvaluateInfo );
313 
315 
319  virtual FBAnimationNode* AnimationNodeOutGet();
321 
322  const char* UniqueName;
323 
327  virtual const char* FbxGetObjectType();
328 
332  virtual const char* FbxGetObjectSubType();
333 
334  IObject_Declare(override); // Interface to IObject.
335 
339  virtual int GetOutConnectorCount() const;
340 
344  virtual int GetInConnectorCount() const;
345 
350  virtual FBAnimationNode* GetOutConnector( int pIndex ) const;
351 
356  virtual FBAnimationNode* GetInConnector( int pIndex ) const;
357 
361  };
362 
363 
364 #ifndef K_NO_UI
365 
367  // FBHandle
370 
374  class FBSDK_DLL FBHandle : public FBBox {
376 
377  public:
383  FBHandle( const char* pName, HIObject pObject=NULL );
384 
389  void Select();
390 
397 
398  private:
400 
404  FBHandle( const FBHandle& );
405  FBHandle& operator=( const FBHandle& );
407  };
408 
409 
411  // FBPropertyListHandle
413  FB_DEFINE_LIST( FBSDK_DLL, Handle );
415 
418  {
419  public:
425  FBHandle* operator[](int pIndex);
426  };
427 
428 #endif
429 
431  // FBPropertyListModelTemplate
435  FB_DEFINE_LIST ( FBSDK_DLL, ModelTemplate );
436 
439  {
440  public:
445  int Add ( FBModelTemplate* pItem );
449  virtual void RemoveAt( int pIndex );
458  virtual int GetCount();
459 #ifndef DOXYGEN_SHOULD_SKIP_THIS
460  inline virtual FBComponent* GetAt(int pIndex) { return (FBComponent*)operator[](pIndex); }
461  private:
462  inline virtual int Add ( FBComponent* pItem ) { return Add((FBModelTemplate*)pItem); }
463 #endif
464  };
465 
467  // FBPropertyListModelTemplateBinding
469  __FB_FORWARD( FBModelTemplateBinding );
473 
476  {
477  public:
482  virtual int Add( FBAnimationNode* pItem );
483 
487  virtual void RemoveAt( int pIndex );
493 
497  virtual int GetCount();
498 #ifndef DOXYGEN_SHOULD_SKIP_THIS
499  inline virtual FBComponent* GetAt(int pIndex) { return (FBComponent*)operator[](pIndex); }
500  private:
501  inline virtual int Add ( FBComponent* pItem ) { return Add((FBAnimationNode*)pItem); }
502 #endif
503  };
504 
506  // FBModelTemplate
509 
527  };
528 
537 
540  void Init();
541  public:
546  FBModelTemplate(HIObject pObject=NULL);
547 
553  FBModelTemplate(const char *pPrefix,const char *pName, FBModelTemplateStyle pStyle);
554 
557 
559  FBPropertyModel Model;
563 
564  friend class FBDevice;
565  };
566 
568  // FBPropertyListDevice
572 
575  {
576  public:
582  FBDevice* operator[](int pIndex);
583  };
584 
586  // FBDeviceNotifyInfo
589 
597  {
598  public:
603 
608 
614  void SetLocalTime( const FBTime & );
615 
620 
625  };
626 
628  // FBDeviceInstrument
634  {
636  public:
647  virtual bool InstrumentWriteData( FBEvaluateInfo* pEvaluateInfo );
652  virtual void InstrumentRecordFrame( FBTime pRecordTime, FBDeviceNotifyInfo& pNotifyInfo );
654 
659  virtual bool FbxStore( FBFbxObject* pFbxObject, kFbxObjectStore pStoreWhat );
660  virtual bool FbxRetrieve( FBFbxObject* pFbxObject, kFbxObjectStore pStoreWhat );
662 
663  FBPropertyDevice Device;
665  FBPropertyModelTemplate ModelTemplate;
666  };
667  FB_DEFINE_COMPONENT( FBSDK_DLL, DeviceInstrument );
668 
670  // FBPropertyListDeviceInstrument
673  FB_DEFINE_LIST( FBSDK_DLL, DeviceInstrument );
677  {
678  public:
683  virtual int Add ( FBDeviceInstrument* pItem );
687  virtual void RemoveAt( int pIndex );
696  virtual int GetCount();
697 #ifndef DOXYGEN_SHOULD_SKIP_THIS
698  inline virtual FBComponent* GetAt(int pIndex) { return (FBComponent*)operator[](pIndex); }
699  private:
700  inline virtual int Add ( FBComponent* pItem ) { return Add((FBDeviceInstrument*)pItem); }
701 #endif
702  };
703 
705  // FBSyncReference
711  {
713  public:
718  FBSyncReference(const char* pName, HIObject pObject=NULL);
719 
723  void Sync(int pSyncId);
724 
729 
734 
739 
742  };
743  FB_DEFINE_COMPONENT( FBSDK_DLL, SyncReference );
744 
745 
747  // FBDevice
749 
764  };
765  FB_DEFINE_ENUM( FBSDK_DLL, DeviceSamplingMode );
766 
771  enum FBCommType {
778  kFBCommTypeOther = 1<<5
779  };
780 
783 
805  class FBSDK_DLL FBDevice : public FBBox {
807  public:
817  kOpDone
818  };
819 
823  enum kDeviceIOs {
827  kIOPlayModeWrite
828  };
829 
840  kPlayReverse
841  };
842 
847  FBDevice(const char * pName,HIObject pObject=NULL);
848 
849  // See FBBox class
850  virtual bool FBCreate () override;
851  virtual void FBDestroy () override;
852 
853  // See FBBox class
854  virtual FBAnimationNode* AnimationNodeInCreate (kReference pUserId,const char * pName ,const char * pDataType,bool pIsPublic=true,double *pMin=NULL,double *pMax=NULL,bool pUserData=false) override;
855  virtual FBAnimationNode* AnimationNodeOutCreate(kReference pUserId,const char * pName ,const char * pDataType,bool pIsPublic=true,double *pMin=NULL,double *pMax=NULL,bool pUserData=false) override;
856 
862  virtual bool DeviceOperation( kDeviceOperations pOperation );
863 
870  virtual void DeviceTransportNotify( kTransportMode pMode, FBTime pTime, FBTime pSystem );
871 
878  virtual void DeviceIONotify( kDeviceIOs pAction, FBDeviceNotifyInfo& pDeviceNotifyInfo );
879 
885  virtual bool DeviceEvaluationNotify( kTransportMode pMode,FBEvaluateInfo* pEvaluateInfo );
886 
893  virtual bool ModelTemplateBindNotify( FBModel* pModel,int pIndex, FBModelTemplate* pModelTemplate );
894 
900  virtual bool ModelTemplateUnBindNotify( int pIndex, FBModelTemplate* pModelTemplate );
901 
906 
911 
918  virtual bool AnimationNodeNotify( FBAnimationNode* pAnimationNode, FBEvaluateInfo* pEvaluateInfo ) override;
919 
923  virtual const char* FbxGetObjectType() override;
924 
926 
931  virtual bool FbxStore ( FBFbxObject* pFbxObject, kFbxObjectStore pStoreWhat ) override;
932  virtual bool FbxRetrieve( FBFbxObject* pFbxObject, kFbxObjectStore pStoreWhat ) override;
934 
939  virtual void DeviceSendCommand( kDeviceOperations pOperation );
940 
941  IObject_Declare( override ); // Interface to IObject
942 
948 
950 
952  FBPropertyModel ModelBindingRoot;
953 
954  FBPropertyDeviceSamplingMode SamplingMode;
956 
958 
961 
964 
967 
970 
974  virtual void RecordingInitAnimation(FBAnimationNode* pAnimationNode);
975 
979  virtual void RecordingDoneAnimation(FBAnimationNode* pAnimationNode);
980 
981  friend class __FBDevice;
982  friend class DataFBDeviceOptical;
983  };
984 
985 #ifndef FBSDK_LEAN_AND_MEAN
986 
988 
992  public:
995  enum kHandModelPart { // Parents :
996 
997  kPartRoot, // No parent
998  kPartPalm, // kPartRoot
999 
1000  // Thumb
1001  kPartThumbA, // kPartPalm
1002  kPartThumbB, // kPartThumbA
1003  kPartThumbC, // kPartThumbB
1004  kPartThumbD, // kPartThumbC
1005 
1006  // Index
1007  kPartIndexA, // kPartPalm
1008  kPartIndexB, // kPartIndexA
1009  kPartIndexC, // kPartIndexB
1010  kPartIndexD, // kPartIndexC
1011 
1012  // Middle
1013  kPartMiddleA, // kPartPalm
1014  kPartMiddleB, // kPartMiddleA
1015  kPartMiddleC, // kPartMiddleB
1016  kPartMiddleD, // kPartMiddleC
1017 
1018  // Ring
1019  kPartRingA, // kPartPalm
1020  kPartRingB, // kPartRingA
1021  kPartRingC, // kPartRingB
1022  kPartRingD, // kPartRingC
1023 
1024  // Little
1025  kPartLittleA, // kPartPalm
1026  kPartLittleB, // kPartLittleA
1027  kPartLittleC, // kPartLittleB
1028  kPartLittleD, // kPartLittleC
1029 
1030  kPartMax
1031  };
1032 
1037  {
1038  public:
1043 
1046  virtual ~GloveChannel();
1047 
1052 
1056  void SetName ( FBString pName );
1057 
1058  protected:
1060 
1061  public:
1062  bool Enabled;
1064  };
1065 
1066 
1071  FBDeviceGlove( const char* pName, HIObject pObject=NULL );
1072 
1076  virtual void RecordingInitAnimation( FBAnimationNode* pAnimationNode ) override;
1077 
1081  virtual void RecordingDoneAnimation( FBAnimationNode* pAnimationNode ) override;
1082 
1083  protected:
1089 
1098  void VectorToModelPartAngle( kHandModelPart pPartIndex, FBVector3d& pVector );
1099 
1105 
1106  public:
1108 
1110  };
1111 
1112 #endif
1113 
1114 #ifdef FBSDKUseNamespace
1115 }
1116 #endif
1117 #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
virtual ECandidateAction SetStdCandidate(FBAnimationNode *pAnimationNode, double *pData, FBEvaluateInfo *pEvaluateInfo)
Function is call when a non-global candidate is set on an animation node.
virtual const char * FbxGetObjectType()
Returns the class type inherited by the class of an object, for example: 'Box', 'Constraint',...
FBPropertyBool Live
Read Write Property: Is live?
Definition: fbcore.h:359
virtual int GetInConnectorCount() const
Get the number of animation node inputs for this box.
virtual bool EvaluateAnimationNodes(FBEvaluateInfo *pEvaluateInfo)
Evaluation of non TRS nodes that needs to be evaluated.
virtual FBAnimationNode * GetOutConnector(int pIndex) const
Get the animation node output associated with the given index.
virtual int GetOutConnectorCount() const
Get the number of animation node outputs for this box.
virtual bool FbxStore(FBFbxObject *pFbxObject, kFbxObjectStore pStoreWhat)
Storage/Retrieval of information into the FBX file format.
virtual FBAnimationNode * GetInConnector(int pIndex) const
Get the animation node input associated with the given index.
FBBox(const char *pName, HIObject pObject=NULL)
Constructor.
FBPropertyBool RecordMode
Read Write Property: Is recording?
Definition: fbcore.h:360
ECandidateAction
Resolving action for candidates.
Definition: fbcore.h:229
@ eCandidateAccept
Let the standard system take care of the candidate.
Definition: fbcore.h:230
@ eCandidateIntercept
Intercept the candidate.
Definition: fbcore.h:231
virtual bool AnimationNodeDestroy(FBAnimationNode *pAnimationNode)
Destroy an animation node.
virtual ECandidateAction SetGlobalCandidate(FBAnimationNode *pAnimationNode, double *pData, FBEvaluateInfo *pEvaluateInfo)
Function is call when a global candidate is set on an animation node.
virtual bool AnimationNodeIsUserData(FBAnimationNode *pAnimationNode)
Is the animation node user data?
const char * UniqueName
internal Unique name.
Definition: fbcore.h:322
virtual FBAnimationNode * AnimationNodeInCreate(kReference pUserId, const char *pName, const char *pDataType, bool pIsPublic=false, double *pMin=NULL, double *pMax=NULL, bool pUserData=false)
Creation of IN/OUT Animation Nodes.
virtual bool AnimationNodeNotify(FBAnimationNode *pAnimationNode, FBEvaluateInfo *pEvaluateInfo)
Notification function for animation thread.
FBPropertyBool Animatable
Read Write Property: Is the box animatable.
Definition: fbcore.h:358
virtual const char * FbxGetObjectSubType()
Returns the class sub type inherited by the class of an object, for example: 'Relations',...
virtual FBAnimationNode * AnimationNodeInGet()
Get the (IN/OUT) animation node for this box.
virtual void AnimationNodesOutDisableIfNotWritten(FBEvaluateInfo *pEvaluateInfo)
This call will disable all out animation nodes from being pull by system (animation thread) for given...
virtual bool ResolveCandidate(FBAnimationNode *pAnimationNode, FBEvaluateInfo *pEvaluateInfo)
Function is call when candidate needs to be resolved (like global to local).
MotionBuilder SDK base class.
Definition: fbcomponent.h:651
Base GloveChannel.
Definition: fbcore.h:1037
void SetName(FBString pName)
Set the channel name.
bool Enabled
true if this channel is enabled.
Definition: fbcore.h:1062
virtual ~GloveChannel()
Destructor,.
GloveChannel(FBAnimationNode *pAnimNode)
Constructor.
FBString Name
Name of channel.
Definition: fbcore.h:1059
FBString GetName()
Get the channel name.
FBAnimationNode * AnimNode
Animation node.
Definition: fbcore.h:1063
Base Glove class.
Definition: fbcore.h:990
FBArrayTemplate< GloveChannel * > Channels
Glove channels.
Definition: fbcore.h:1107
FBDeviceGlove(const char *pName, HIObject pObject=NULL)
Constructor.
kHandModelPart
Hand model parts.
Definition: fbcore.h:995
virtual void RecordingDoneAnimation(FBAnimationNode *pAnimationNode) override
When recording, finish animation.
void InitializeModelGeometry()
Initialize the hand model geometry.
FBPropertyBool LeftHand
Read Write Property: Left or right hand glove.
Definition: fbcore.h:1109
FBAnimationNode * GetModelRotationNode(kHandModelPart pPartIndex)
Obtain the rotation animation node of a part of the hand model.
virtual void RecordingInitAnimation(FBAnimationNode *pAnimationNode) override
When recording, initialize animation.
void VectorToModelPartAngle(kHandModelPart pPartIndex, FBVector3d &pVector)
Bring the vector in parameter to a valid angle range of rotation for a given part of the hand model.
Base Device class.
Definition: fbcore.h:805
FBModelTemplate ModelTemplate
Component: Root of model template structure.
Definition: fbcore.h:951
virtual bool ModelTemplateUnBindNotify(int pIndex, FBModelTemplate *pModelTemplate)
Model Template unbinding notification callback.
virtual bool AnimationNodeNotify(FBAnimationNode *pAnimationNode, FBEvaluateInfo *pEvaluateInfo) override
Notification function for animation thread.
FBPropertyModel ModelBindingRoot
Component: Root of model currently binded model hierarchy.
Definition: fbcore.h:952
FBPropertyTime RecordingStartTime
Read Only Property: The time at which the recording started.
Definition: fbcore.h:959
virtual void RecordingInitAnimation(FBAnimationNode *pAnimationNode)
When recording, initialize animation.
kTransportMode
Transport control types for device.
Definition: fbcore.h:833
@ kPreparePlay
Preparing to play.
Definition: fbcore.h:834
@ kJog
Jog.
Definition: fbcore.h:839
@ kPlayStop
Stopping play.
Definition: fbcore.h:836
@ kPlay
Playing.
Definition: fbcore.h:838
@ kStop
Play stopped.
Definition: fbcore.h:837
@ kPlayReady
Ready to play.
Definition: fbcore.h:835
virtual void DeviceSendCommand(kDeviceOperations pOperation)
Send a command to the device.
virtual void FBDestroy() override
Open Reality destruction function.
FBPropertyListDeviceInstrument Instruments
List: List of instruments.
Definition: fbcore.h:957
void AckOneSampleSent()
Acknowlege that one sample was sent (for statistical purposes).
FBPropertyString HardwareVersionInfo
Read Write Property: Device information: hardware version.
Definition: fbcore.h:945
virtual const char * FbxGetObjectType() override
Returns the class type inherited by the class of an object, for example: 'Device'.
FBPropertyString Status
Read Write Property: Device information: status.
Definition: fbcore.h:943
FBPropertyInt CommType
Read Write Property: Type of communications.
Definition: fbcore.h:955
FBModel * ModelBindingCreate()
Create a new model binding.
virtual void DeviceIONotify(kDeviceIOs pAction, FBDeviceNotifyInfo &pDeviceNotifyInfo)
Real-Time engine thread: Device I/O.
FBPropertyEvent OnStatusChange
Event: Status of device changed.
Definition: fbcore.h:949
FBPropertyTime RecordingStopTime
Read Only Property: The time at which the recording stopped.
Definition: fbcore.h:960
virtual bool FbxStore(FBFbxObject *pFbxObject, kFbxObjectStore pStoreWhat) override
Storage/Retrieval of information into the FBX file format.
void AckOneBadSampleReceived()
Acknowlege that one bad sample was received (for statistical purposes).
virtual FBAnimationNode * AnimationNodeInCreate(kReference pUserId, const char *pName, const char *pDataType, bool pIsPublic=true, double *pMin=NULL, double *pMax=NULL, bool pUserData=false) override
Creation of IN/OUT Animation Nodes.
kDeviceIOs
Types of I/O for device.
Definition: fbcore.h:823
@ kIOStopModeRead
Read from device (Transport=stopped).
Definition: fbcore.h:824
@ kIOPlayModeRead
Read from device (Transport=playing).
Definition: fbcore.h:825
@ kIOStopModeWrite
Write to device (Transport=stopped).
Definition: fbcore.h:826
virtual void DeviceTransportNotify(kTransportMode pMode, FBTime pTime, FBTime pSystem)
Real-Time engine thread: Tranport notifications.
virtual bool ModelTemplateBindNotify(FBModel *pModel, int pIndex, FBModelTemplate *pModelTemplate)
Model Template binding notification callback.
void ModelBindingRootsList(FBModelList &pList)
Get the list of all the possible root models for binding.
virtual bool DeviceOperation(kDeviceOperations pOperation)
Operate device.
kDeviceOperations
Types of operations for device.
Definition: fbcore.h:811
@ kOpStart
Start device (online).
Definition: fbcore.h:813
@ kOpInit
Initalize device (creation).
Definition: fbcore.h:812
@ kOpAutoDetect
Autodetect (automatic).
Definition: fbcore.h:814
@ kOpReset
Reset device (stop->start).
Definition: fbcore.h:816
@ kOpStop
Stop device (offline).
Definition: fbcore.h:815
virtual bool FBCreate() override
Open Reality Creation function.
FBPropertyDeviceSamplingMode SamplingMode
Read Write Property: Mode to use to record device.
Definition: fbcore.h:954
virtual bool DeviceEvaluationNotify(kTransportMode pMode, FBEvaluateInfo *pEvaluateInfo)
Real-Time engine thread: Output device evaluation.
void AckOneSampleReceived()
Acknowlege that one sample was received (for statistical purposes).
FBPropertyBool Online
Read Write Property: Is online?
Definition: fbcore.h:947
FBDevice(const char *pName, HIObject pObject=NULL)
Constructor.
FBPropertyString Information
Read Write Property: Device information: information.
Definition: fbcore.h:944
FBPropertyTime SamplingPeriod
Read Write Property: Set this to how many times a device is to be evaluated in one second....
Definition: fbcore.h:946
virtual void RecordingDoneAnimation(FBAnimationNode *pAnimationNode)
When recording, finish animation.
Instrument abstraction layer.
Definition: fbcore.h:634
FBPropertyModelTemplate ModelTemplate
Read Write Property: Model template to build instruments' structure.
Definition: fbcore.h:665
virtual bool FbxStore(FBFbxObject *pFbxObject, kFbxObjectStore pStoreWhat)
Storage/Retrieval of information into the FBX file format.
FBDeviceInstrument(FBDevice *pDevice)
Constructor.
FBPropertyDevice Device
Read Write Property: Handle to owner device.
Definition: fbcore.h:663
virtual bool InstrumentWriteData(FBEvaluateInfo *pEvaluateInfo)
Write data to instrument's connectors.
virtual void InstrumentRecordFrame(FBTime pRecordTime, FBDeviceNotifyInfo &pNotifyInfo)
Record the data to the function curves for the instrument.
FBPropertyBool Active
Read Write Property: Is instrument active?
Definition: fbcore.h:664
Device Input and Output Notification information structure.
Definition: fbcore.h:597
void SetLocalTime(const FBTime &)
Set local time Allows the device to override the local time of the system.
FBTime & GetLocalTime()
Get local time.
FBEvaluateInfo & GetEvaluateInfo()
Return the evaluation info used to do device evaluation.
FBTime & GetSystemTime()
Get system time.
int GetSyncCount()
Return the wanted timer sync count (internal or external)
AnimationNodeNotify evaluation information.
FBX file interface.
Definition: fbfbx.h:80
FBHandle class exposes the Handle object of the application.
Definition: fbcore.h:374
FBPropertyListObject Follow
List: Object to be followed by the handle. Should have a cardinality of 1.
Definition: fbcore.h:391
FBPropertyListObject ManipulateScaling
List: Objects manipulated by the handle. Only their scaling is affected.
Definition: fbcore.h:395
FBHandle(const char *pName, HIObject pObject=NULL)
Public constructor.
FBPropertyListObject ManipulateTranslation
List: Objects manipulated by the handle. Only their translation is affected.
Definition: fbcore.h:393
FBPropertyListObject Image
List: Image to be used in the handle display. Only the image at position 0 is used.
Definition: fbcore.h:396
void Select()
Meta selection.
FBPropertyListObject Manipulate
List: Objects manipulated by the handle.
Definition: fbcore.h:392
FBPropertyListObject ManipulateRotation
List: Objects manipulated by the handle. Only their rotation is affected.
Definition: fbcore.h:394
Model class.
Definition: fbmodel.h:274
Model template class.
Definition: fbcore.h:535
FBPropertyListModelTemplate Children
List: Children for object hierarchy.
Definition: fbcore.h:555
FBModelTemplate(const char *pPrefix, const char *pName, FBModelTemplateStyle pStyle)
Constructor (no parent) from prefix, name, and style.
FBPropertyListModelTemplateBinding Bindings
List: Bindings for animation interface.
Definition: fbcore.h:556
FBPropertyModel Model
Read Write Property: Model being interfaced.
Definition: fbcore.h:559
FBPropertyVector3d DefaultRotation
Read Write Property: Default rotation.
Definition: fbcore.h:561
FBPropertyString Prefix
Read Write Property: Prefix of model template.
Definition: fbcore.h:558
FBModelTemplate(HIObject pObject=NULL)
Constructor from parent object.
FBPropertyVector3d DefaultScaling
Read Write Property: Default scaling.
Definition: fbcore.h:562
FBPropertyVector3d DefaultTranslation
Read Write Property: Default translation.
Definition: fbcore.h:560
PropertyEvent: Base event class.
Definition: fbproperties.h:515
PropertyList: Component.
Definition: fbcomponent.h:477
PropertyList: Concrete class for PropertyList of component
Definition: fbcomponent.h:536
PropertyList: Device
Definition: fbcore.h:575
FBDevice * operator[](int pIndex)
Get the device at pIndex.
List of instruments.
Definition: fbcore.h:677
virtual void RemoveAt(int pIndex)
Remove the instrument at pIndex.
virtual int Add(FBDeviceInstrument *pItem)
Add an instrument to the property list.
FBDeviceInstrument * operator[](int pIndex)
Get the model template at pIndex.
virtual int GetCount()
Get the number of instruments.
PropertyList: Handle.
Definition: fbcore.h:418
FBHandle * operator[](int pIndex)
Get the model template at pIndex.
PropertyList: ModelTemplateBinding.
Definition: fbcore.h:476
virtual void RemoveAt(int pIndex)
Remove the binding at pIndex.
FBAnimationNode * operator[](int pIndex)
Get the binding at pIndex.
virtual int Add(FBAnimationNode *pItem)
Add an animation node to the model template binding property list.
virtual int GetCount()
Get the number of bindings.
PropertyList: ModelTemplate.
Definition: fbcore.h:439
virtual void RemoveAt(int pIndex)
Remove the model template at pIndex.
FBModelTemplate * operator[](int pIndex)
Get the model template at pIndex.
int Add(FBModelTemplate *pItem)
Add a model template to the property list.
virtual int GetCount()
Get the number of model templates.
List of scene objects.
Definition: fbcomponent.h:556
Property class: const char * (String).
Basic string class.
Definition: fbstring.h:67
Application sync.
Definition: fbcore.h:711
FBTime GetTimeOfLastSync()
Last sync time.
void Sync(int pSyncId)
Notify sync.
FBSyncReference(const char *pName, HIObject pObject=NULL)
Constructor.
FBTime GetTimeOfNextSync()
Next sync time.
FBPropertyBool Active
Read Write Property: Activate sync.
Definition: fbcore.h:740
int GetSyncCount()
Return sync count.
FBPropertyTime SamplingPeriod
Read Write Property: Sampling period.
Definition: fbcore.h:741
Time data structure.
Definition: fbtime.h:88
class K_DLLIMPORT FBArrayTemplate< FBModel * > FBModelList
typedef class FBSDK_DLL FBArrayTemplate<FBModel*> FBModelList;
Definition: fbcharacter.h:597
Basic class definitions.
#define __FBClassDeclare(Name, Parent)
For internal use only.
Definition: fbcomponent.h:131
#define FBSDK_DLL
Be sure that FBSDK_DLL is defined only once...
Definition: fbcore.h:48
FBCommType
Communications type.
Definition: fbcore.h:771
@ kFBCommTypeNetworkUDP
Network (UDP) device.
Definition: fbcore.h:775
@ kFBCommTypeOther
Any other type of communications.
Definition: fbcore.h:778
@ kFBCommTypeNetworkTCP
Network (TCP) device.
Definition: fbcore.h:774
@ kFBCommTypeSerial
Serial communications.
Definition: fbcore.h:773
@ kFBCommTypeSimulator
Software simulator.
Definition: fbcore.h:777
@ kFBCommTypeNone
A non-communicating device.
Definition: fbcore.h:772
@ kFBCommTypeSharedMemory
Accessing shared memory.
Definition: fbcore.h:776
class K_DLLIMPORT FBPropertyBaseList< FBAnimationNode * > FBPropertyBaseListModelTemplateBinding
typedef class FBSDK_DLL FBPropertyBaseList< FBAnimationNode* > FBPropertyBaseListModelTemplateBinding
Definition: fbcore.h:472
FBDeviceSamplingMode
Recording types.
Definition: fbcore.h:759
@ kFBAutoFrequency
Device is running at unknown, fixed frequency.
Definition: fbcore.h:762
@ kFBSoftwareTimestamp
The software will timestamp packets as they arrive.
Definition: fbcore.h:763
@ kFBHardwareTimestamp
Device supplies timestamp.
Definition: fbcore.h:760
@ kFBHardwareFrequency
Device is running at known, fixed frequency.
Definition: fbcore.h:761
FBModelTemplateStyle
Model template styles When creating model templates, this parameter will affect the actual model crea...
Definition: fbcore.h:515
@ kFBModelTemplateLight
Light.
Definition: fbcore.h:525
@ kFBModelTemplateGeometry
Generic geometry.
Definition: fbcore.h:523
@ kFBModelTemplateSensor
Yellow magnetic sensor.
Definition: fbcore.h:520
@ kFBModelTemplateCamera
Camera.
Definition: fbcore.h:522
@ kFBModelTemplateSkeleton
Skeleton limb.
Definition: fbcore.h:521
@ kFBModelTemplateOptical
Optical model (not supported yet).
Definition: fbcore.h:526
@ kFBModelTemplateRoot
Root (3 axes).
Definition: fbcore.h:519
@ kFBModelTemplateNone
No style.
Definition: fbcore.h:516
@ kFBModelTemplateCameraInterest
Camera interest.
Definition: fbcore.h:524
@ kFBModelTemplateNull
Null.
Definition: fbcore.h:517
@ kFBModelTemplateMarker
Marker.
Definition: fbcore.h:518
HIObject(* kFBObjectCreatorFnc)(HIObject pOwner, const char *pName, void *pData)
Definition: fbcore.h:81
Animation data types.
FB_DEFINE_COMPONENT(K_DLLIMPORT, AnimationNode)
Animation node class.
FBX file format interface.
class K_DLLIMPORT FBPropertyBase< int, kFBPT_int > FBPropertyInt
Property: int
class K_DLLIMPORT FBPropertyBase< FBVector3d, kFBPT_Vector3D > FBPropertyVector3d
FBPropertyVector3d type definition.
class K_DLLIMPORT FBPropertyBase< bool, kFBPT_bool > FBPropertyBool
Property: bool
#define FB_DEFINE_LIST(DllTag, Type)
Define a component list.
Definition: fbproperties.h:163
class K_DLLIMPORT FBPropertyBase< FBTime, kFBPT_Time > FBPropertyTime
Property: FBTime
#define FB_DEFINE_ENUM(DllTag, Type)
Define an enum and give it the ability to be a property.
Definition: fbproperties.h:150
Time classes.
kFbxObjectStore
Description of the different store/retrieve passes of the FBX format.
Definition: fbtypes.h:74
#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