fbsdk/fbevaluatemanager.h Source File

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
45 
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:
93 
95  FBGlobalEvalCallbackTiming GetTiming() const;
96 
100  FBEvaluateInfo* GetEvaluateInfo() const;
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 
141 
142 public:
150 
153 
155  void InvalidateDAG();
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 
199  static FBEvaluateManager& TheOne();
200 };
201 
202 
207 FBSDK_DLL void FBSchedulingDependencyOutput( bool pEnable );
208 
209 #ifdef FBSDKUseNamespace
210 } // namespace FBSDKNamespace
211 #endif
212 
213 #endif
class FBPropertyBaseEnum< enum FBParallelScheduleType > FBPropertyParallelScheduleType
Invoked in rendering pipeline, after any rendering tasks finish (just before swapping GL back/front b...
#define __FBClassDeclare(Name, Parent)
For internal use only.
Definition: fbcomponent.h:132
FBPropertyBool ParallelEvaluation
Read/Write Property: true if parallel DAG schedule algorithm is being used.
#define FBSDK_DLL
Be sure that FBSDK_DLL is defined only once...
Invoked after all DAG (Transformation & Deformation) evaluation tasks finished in evaluation pipeline...
FBGlobalEvalCallbackTiming
Global Evaluation callback timing.
void(* kFBEvaluationGlobalFunctionCallback)(FBEvaluateInfo *pEvaluteInfo)
FBPropertyBool UseGPUDeformation
Read/Write Property: true if GPU deformation is used.
#define NULL
Definition: kaydara.h:169
AnimationNodeNotify evaluation information.
PropertyEvent: Callback at synchronization point (for kFBGlobalEvalCallbackSyn)
Base Event class.
Definition: fbcomponent.h:959
Invoked after all deformation tasks finished in evaluation pipeline / thread.
#define FB_DEFINE_ENUM(DllTag, Type)
Define an enum and give it the ability to be a property.
Definition: fbproperties.h:148
MotionBuilder SDK base class.
Definition: fbcomponent.h:668
FBPropertyBool FrameSkipOptimization
Read/Write Property: if true, apply frame skip optimization during playback.
FBPropertyEventCallbackSynPoint OnSynchronizationEvent
For callback events at synchronization point.
class FBPropertyBase< bool, kFBPT_bool > FBPropertyBool
Property: bool
Invoked before any DAG (Transformation & Deformation) evaluation tasks started in evaluation pipeline...
FBPropertyInt DeviceCount
Read only Property: Number of devices to evaluate.
Definition: Python-ast.h:18
FBPropertyParallelScheduleType ParallelScheduleType
DEPRICATED Read/Write Property: choose between serial and parallel DAG schedule algorithm.
#define __FB_FORWARD(ClassName)
Forwarding of class and typedef declaration.
Definition: fbtypes.h:68
Invoked in rendering pipeline, before any rendering tasks start (immediately after clearing GL back b...
#define FBSDKNamespace
FBSDKNamespace define.
Definition: fbversion.h:64
No parallel schedule, use sequential evaluation order instead.
Basic class definitions.
PropertyEvent: Base event class.
Definition: fbproperties.h:507
Advanced parallel schedule, task dependency analyzation will be able to across ative constraint...
FBPropertyBool ParallelPipeline
Read/Write Property: true if transformation is evaluated in parallel.
KEventBase * HKEventBase
Definition: fbcomponent.h:75
void FBSchedulingDependencyOutput(bool pEnable)
Debug function for MT dependency debug.
FBPropertyBool ParallelDeformation
Read/Write Property: true if deformation is evaluated in parallel.
Event: Global Evaluation pipeline critical timing callback event.
Simple parallel schedule, mainly analyze the task dependency based on Motion Hierarchy (scene graph)...
Invoked when both evaluation & rendering pipelines / threads are stopped.
FBPropertyEventCallbackEvalPipeline OnEvaluationPipelineEvent
For callback events at evaluation pipeline.
FBParallelScheduleType
DEPRICATED use ParallelEvaluation on FBEvaluateManager insteadAvailable DAG parallel schedule algori...
class FBPropertyBase< int, kFBPT_int > FBPropertyInt
Property: int
PropertyEvent: Callback at evaluation pipeline (for kFBGlobalEvalCallbackBeforeDAG, kFBGlobalEvalCallbackAfterDAG, kFBGlobalEvalCallbackAfterDeform, kFBGlobalEvalCallbackBeforePlottingFrame and kFBGlobalEvalCallbackAfterPlottingFrame)
PropertyEvent: Callback at evaluation pipeline (for kFBGlobalEvalCallbackBeforeRender, kFBGlobalEvalCallbackAfterRender)
FBPropertyEventCallbackRenderPipeline OnRenderingPipelineEvent
For callback events at rendering pipeline.
FBPropertyInt NodeCount
Read only Property: Number of nodes to evaluate.
void(ICallback::* kICallbackHandler)(HIRegister pCaller, HKEventBase pEvent)
Definition: icallback.h:50
FBPropertyBool DualQuaternionSkinning
Read/Write Property: Using state of the Dual Quaternion for skinning (CPU Skinning or GPU Skinning)...