Open Reality Reference Guide
fbevaluatemanager.h
Go to the documentation of this file.
1 #ifndef __FBEVALUATEMANAGER_H__
2 #define __FBEVALUATEMANAGER_H__
3 /**************************************************************************
4 Copyright (c) 1994 - 2013 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 // Essential includes
52 #include <fbsdk/fbcomponent.h>
53 
54 #ifdef FBSDKUseNamespace
55 namespace FBSDKNamespace {;
56 #endif
57 
60 {
64 };
65 
66 FB_DEFINE_ENUM(FBSDK_DLL, ParallelScheduleType);
67 
72 {
81 };
82 
83 typedef void (*kFBEvaluationGlobalFunctionCallback)(FBEvaluateInfo* pEvaluteInfo);
84 
87 {
88 public:
92  FBEventEvalGlobalCallback( HKEventBase pEvent );
93 
96 
101 };
102 
105 {
106 public:
107  virtual void Add ( HICallback pOwner, kICallbackHandler pHandler );
108  virtual void Remove ( HICallback pOwner, kICallbackHandler pHandler );
109 };
110 
113 {
114 public:
115  virtual void Add ( HICallback pOwner, kICallbackHandler pHandler );
116  virtual void Remove ( HICallback pOwner, kICallbackHandler pHandler );
117 };
118 
121 {
122 public:
123  virtual void Add ( HICallback pOwner, kICallbackHandler pHandler );
124  virtual void Remove ( HICallback pOwner, kICallbackHandler pHandler );
125 };
126 
133 {
135 
140  FBEvaluateManager(HIObject pObject=NULL);
141 
142 public:
147  FBPropertyParallelScheduleType ParallelScheduleType;
150 
153 
156 
160  bool IsInteractiveMode() const;
161 
172 
178  void RegisterEvaluationGlobalFunction (kFBEvaluationGlobalFunctionCallback pCallback, FBGlobalEvalCallbackTiming pTiming);
179 
184  void UnregisterEvaluationGlobalFunction(kFBEvaluationGlobalFunctionCallback pCallback, FBGlobalEvalCallbackTiming pTiming);
185 
193 
195 
200 };
201 
202 
208 
209 #ifdef FBSDKUseNamespace
210 } // namespace FBSDKNamespace
211 #endif
212 
213 #endif
MotionBuilder SDK base class.
Definition: fbcomponent.h:651
AnimationNodeNotify evaluation information.
FBPropertyBool DualQuaternionSkinning
Read/Write Property: Using state of the Dual Quaternion for skinning (CPU Skinning or GPU Skinning).
static FBEvaluateManager & TheOne()
Get the global object for this class.
FBPropertyBool ParallelPipeline
Read/Write Property: true if transformation is evaluated in parallel.
FBPropertyBool UseGPUDeformation
Read/Write Property: true if GPU deformation is used.
bool IsInteractiveMode() const
Check if the application main loop is in interactive or offline render mode.
FBPropertyEventCallbackRenderPipeline OnRenderingPipelineEvent
For callback events at rendering pipeline.
FBPropertyBool ParallelDeformation
Read/Write Property: true if deformation is evaluated in parallel.
FBPropertyEventCallbackEvalPipeline OnEvaluationPipelineEvent
For callback events at evaluation pipeline.
FBPropertyEventCallbackSynPoint OnSynchronizationEvent
For callback events at synchronization point.
void RegisterEvaluationGlobalFunction(kFBEvaluationGlobalFunctionCallback pCallback, FBGlobalEvalCallbackTiming pTiming)
Register free callback function to critical timings / stages in the pipeline.
FBPropertyBool FrameSkipOptimization
Read/Write Property: if true, apply frame skip optimization during playback. off-line rendering don't...
void UnregisterEvaluationGlobalFunction(kFBEvaluationGlobalFunctionCallback pCallback, FBGlobalEvalCallbackTiming pTiming)
Register free callback function to critical timings / stages in the pipeline.
void InvalidateDAG()
Invalidate the DAG and trigger parallel scheduling at the next frame.
FBPropertyParallelScheduleType ParallelScheduleType
DEPRICATED Read/Write Property: choose between serial and parallel DAG schedule algorithm....
FBPropertyBool ParallelEvaluation
Read/Write Property: true if parallel DAG schedule algorithm is being used. false when serial algorit...
FBPropertyInt DeviceCount
Read only Property: Number of devices to evaluate.
FBPropertyInt NodeCount
Read only Property: Number of nodes to evaluate.
Event: Global Evaluation pipeline critical timing callback event.
FBEvaluateInfo * GetEvaluateInfo() const
Returns the Evaluation Info object associated with this callback event.
FBGlobalEvalCallbackTiming GetTiming() const
Get Callback Timing.
FBEventEvalGlobalCallback(HKEventBase pEvent)
Constructor.
Base Event class.
Definition: fbcomponent.h:940
PropertyEvent: Callback at evaluation pipeline (for kFBGlobalEvalCallbackBeforeDAG,...
virtual void Add(HICallback pOwner, kICallbackHandler pHandler)
Add/Remove a callback.
PropertyEvent: Callback at evaluation pipeline (for kFBGlobalEvalCallbackBeforeRender,...
virtual void Add(HICallback pOwner, kICallbackHandler pHandler)
Add/Remove a callback.
PropertyEvent: Callback at synchronization point (for kFBGlobalEvalCallbackSyn)
virtual void Add(HICallback pOwner, kICallbackHandler pHandler)
Add/Remove a callback.
PropertyEvent: Base event class.
Definition: fbproperties.h:515
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...
K_DLLIMPORT void FBSchedulingDependencyOutput(bool pEnable)
Debug function for MT dependency debug.
FBGlobalEvalCallbackTiming
Global Evaluation callback timing.
@ kFBGlobalEvalCallbackBeforePlottingFrame
Invoked before plotting a frame.
@ kFBGlobalEvalCallbackBeforeRender
Invoked in rendering pipeline, before any rendering tasks start (immediately after clearing GL back b...
@ kFBGlobalEvalCallbackAfterPlottingFrame
Invoked after plotting a frame.
@ kFBGlobalEvalCallbackSyn
Invoked when both evaluation & rendering pipelines / threads are stopped. Useful for some complicated...
@ kFBGlobalEvalCallbackBeforeDAG
Invoked before any DAG (Transformation & Deformation) evaluation tasks started in evaluation pipeline...
@ kFBGlobalEvalCallbackAfterDeform
Invoked after all deformation tasks finished in evaluation pipeline / thread.
@ kFBGlobalEvalCallbackAfterRender
Invoked in rendering pipeline, after any rendering tasks finish (just before swapping GL back/front b...
@ kFBGlobalEvalCallbackAfterDAG
Invoked after all DAG (Transformation & Deformation) evaluation tasks finished in evaluation pipeline...
FBParallelScheduleType
DEPRICATED use ParallelEvaluation on FBEvaluateManager insteadAvailable DAG parallel schedule algorit...
@ kFBParallelScheduleAdvanced
Advanced parallel schedule, task dependency analyzation will be able to across ative constraint,...
@ kFBParallelScheduleSimple
Simple parallel schedule, mainly analyze the task dependency based on Motion Hierarchy (scene graph),...
@ kFBParallelScheduleSerial
No parallel schedule, use sequential evaluation order instead.
__FB_FORWARD(FBEvaluateManager)
Evaluate Manager.
class K_DLLIMPORT FBPropertyBase< int, kFBPT_int > FBPropertyInt
Property: int
class K_DLLIMPORT FBPropertyBase< bool, kFBPT_bool > FBPropertyBool
Property: bool
#define FB_DEFINE_ENUM(DllTag, Type)
Define an enum and give it the ability to be a property.
Definition: fbproperties.h:150