Open Reality Reference Guide
 
Loading...
Searching...
No Matches
fbevaluatemanager.h
Go to the documentation of this file.
1#ifndef __FBEVALUATEMANAGER_H__
2#define __FBEVALUATEMANAGER_H__
3/**************************************************************************
4Copyright (c) 1994 - 2013 Autodesk, Inc. and/or its licensors.
5All Rights Reserved.
6
7The coded instructions, statements, computer programs, and/or related
8material (collectively the "Data") in these files contain unpublished
9information proprietary to Autodesk, Inc. and/or its licensors, which is
10protected by Canada and United States of America federal copyright law
11and by international treaties.
12
13The Data may not be disclosed or distributed to third parties, in whole
14or in part, without the prior written consent of Autodesk, Inc.
15("Autodesk").
16
17THE DATA IS PROVIDED "AS IS" AND WITHOUT WARRANTY.
18ALL WARRANTIES ARE EXPRESSLY EXCLUDED AND DISCLAIMED. AUTODESK MAKES NO
19WARRANTY OF ANY KIND WITH RESPECT TO THE DATA, EXPRESS, IMPLIED OR
20ARISING BY CUSTOM OR TRADE USAGE, AND DISCLAIMS ANY IMPLIED WARRANTIES
21OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR
22PURPOSE OR USE. WITHOUT LIMITING THE FOREGOING, AUTODESK DOES NOT
23WARRANT THAT THE OPERATION OF THE DATA WILL BE UNINTERRUPTED OR ERROR
24FREE.
25
26IN NO EVENT SHALL AUTODESK, ITS AFFILIATES, PARENT COMPANIES, LICENSORS
27OR SUPPLIERS ("AUTODESK GROUP") BE LIABLE FOR ANY LOSSES, DAMAGES OR
28EXPENSES OF ANY KIND (INCLUDING WITHOUT LIMITATION PUNITIVE OR MULTIPLE
29DAMAGES OR OTHER SPECIAL, DIRECT, INDIRECT, EXEMPLARY, INCIDENTAL, LOSS
30OF PROFITS, REVENUE OR DATA, COST OF COVER OR CONSEQUENTIAL LOSSES OR
31DAMAGES OF ANY KIND), HOWEVER CAUSED, AND REGARDLESS OF THE THEORY OF
32LIABILITY, WHETHER DERIVED FROM CONTRACT, TORT (INCLUDING, BUT NOT
33LIMITED TO, NEGLIGENCE), OR OTHERWISE, ARISING OUT OF OR RELATING TO THE
34DATA OR ITS USE OR ANY OTHER PERFORMANCE, WHETHER OR NOT AUTODESK HAS
35BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSS OR DAMAGE.
36
37**************************************************************************/
38
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
55namespace FBSDKNamespace {;
56#endif
57
60{
64};
65
66FB_DEFINE_ENUM(FBSDK_DLL, ParallelScheduleType);
67
72{
81};
82
83typedef void (*kFBEvaluationGlobalFunctionCallback)(FBEvaluateInfo* pEvaluteInfo);
84
87{
88public:
92 FBEventEvalGlobalCallback( HKEventBase pEvent );
93
96
101};
102
105{
106public:
107 virtual void Add ( HICallback pOwner, kICallbackHandler pHandler );
108 virtual void Remove ( HICallback pOwner, kICallbackHandler pHandler );
109};
110
113{
114public:
115 virtual void Add ( HICallback pOwner, kICallbackHandler pHandler );
116 virtual void Remove ( HICallback pOwner, kICallbackHandler pHandler );
117};
118
121{
122public:
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
142public:
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.
AnimationNodeNotify evaluation information.
FBPropertyBool DualQuaternionSkinning
Read/Write Property: Using state of the Dual Quaternion for skinning (CPU Skinning or GPU Skinning).
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.
static FBEvaluateManager & TheOne()
Get the global object for this class.
FBPropertyInt NodeCount
Read only Property: Number of nodes to evaluate.
Event: Global Evaluation pipeline critical timing callback event.
FBGlobalEvalCallbackTiming GetTiming() const
Get Callback Timing.
FBEventEvalGlobalCallback(HKEventBase pEvent)
Constructor.
FBEvaluateInfo * GetEvaluateInfo() const
Returns the Evaluation Info object associated with this callback event.
Base Event class.
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.
Basic class definitions.
#define __FBClassDeclare(Name, Parent)
For internal use only.
#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.
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.
#define __FB_FORWARD(ClassName)
Forwarding of class and typedef declaration.
Definition fbtypes.h:68