manager 是除bb外的另外一种执行管理形式
他也在virtools框架循环之内:
->managers preProcess ->Behavioral Process->managers postProcess->Rendering->|
|____________________________________________________________________|
manager可以在程序执行前完成初始化工作,并在Behavioral Process执行前后完成必要的函数运算操作。
从CKBaseManager派生一个manager,重写必要的函数,通过GetValidFunctionsMask()返回这些函数的掩码。manager的GUID必须是唯一的,如果manager的GUID已经被注册,则你实际上提供了一个可替换的manager,它不会被调用,除非在同一个GUID里被选择为主manager。名称唯一不是必须的。
BB可以通过CKContext::GetManagerByGuid()得到想要得到的manager,进而得到需要的数据。
virtual CKDWORD CKBaseManager::GetValidFunctionsMask()
Returns list of functions implemented by the manager.
【返回管理器需要处理的函数列表】
enum CKMANAGER_FUNCTIONS {
CKMANAGER_FUNC_OnSequenceToBeDeleted = 0x00000001,
CKMANAGER_FUNC_OnSequenceDeleted = 0x00000002,
CKMANAGER_FUNC_PreProcess = 0x00000004,
CKMANAGER_FUNC_PostProcess = 0x00000008,
CKMANAGER_FUNC_PreClearAll = 0x00000010,
CKMANAGER_FUNC_PostClearAll = 0x00000020,
CKMANAGER_FUNC_OnCKInit = 0x00000040,
CKMANAGER_FUNC_OnCKEnd = 0x00000080,
CKMANAGER_FUNC_OnCKPlay = 0x00000100,
CKMANAGER_FUNC_OnCKPause = 0x00000200,
CKMANAGER_FUNC_PreLoad = 0x00000400,
CKMANAGER_FUNC_PreSave = 0x00000800,
CKMANAGER_FUNC_PreLaunchScene = 0x00001000,
CKMANAGER_FUNC_PostLaunchScene = 0x00002000,
CKMANAGER_FUNC_OnCKReset = 0x00004000,
CKMANAGER_FUNC_PostLoad = 0x00008000,
CKMANAGER_FUNC_PostSave = 0x00010000,
CKMANAGER_FUNC_OnCKPostReset = 0x00020000,
CKMANAGER_FUNC_OnSequenceAddedToScene = 0x00040000,
CKMANAGER_FUNC_OnSequenceRemovedFromScene = 0x00080000,
CKMANAGER_FUNC_OnPreCopy = 0x00100000,
CKMANAGER_FUNC_OnPostCopy = 0x00200000,
CKMANAGER_FUNC_OnPreRender = 0x00400000,
CKMANAGER_FUNC_OnPostRender = 0x00800000,
CKMANAGER_FUNC_OnPostSpriteRender = 0x01000000,
CKMANAGER_FUNC_OnPreBackToFront = 0x02000000,
CKMANAGER_FUNC_OnPostBackToFront = 0x04000000,
CKMANAGER_FUNC_OnPreFullScreen = 0x08000000,
CKMANAGER_FUNC_OnPostFullScreen = 0x10000000,
CKMANAGER_FUNC_OnRasterizerEvent = 0x20000000,
CKMANAGER_FUNC_OnPreSpriteRender = 0x40000000
}