/*************************************************************************/ /* File : VRBaseManager.h */ /* Author : Leïla AIT KACI */ /* */ /* Base Class for Virtools VRPack Managers */ /* Virtools SDK */ /* Copyright (c) Virtools 2004, All Rights Reserved. */ /*************************************************************************/ #ifndef VRBaseManager_H #define VRBaseManager_H "$Id:$" #include "VRTypes.h" class VRContext; /************************************************* Summary: Mask for VR Base Manager overridable functions. Remarks: + When implementing a VR manager the VRBaseManager::GetValidVRFunctionsMask must be overriden to return a combination of these flag to indicate which VR methods are implemented. See also: VRBaseManager::GetValidVRFunctionsMask *************************************************/ typedef enum VRMANAGER_FUNCTIONS { VRMANAGER_FUNC_OnParse = 0x00000001, // Called after common parsing and before view creation VRMANAGER_FUNC_OnViewCreate = 0x00000002, // Called when a view is created by the VRPlayer VRMANAGER_FUNC_OnViewDelete = 0x00000004, // Called when a view is deleted by the VRPlayer VRMANAGER_FUNC_OnViewWarp = 0x00000008, // Called when a warped view should be rendered } VRMANAGER_FUNCTIONS; /************************************************************************* Summary: Base Class for VR managers. Remarks: + This class inherits from CKBaseManager. + It provides additionnal virtual methods that can be overriden to add some processing at VR specific events. + The instances of managers may be retrieved through the global function CKContext::GetManagerByGuid() See also: CKBaseManager *************************************************************************/ class VRBaseManager : public CKBaseManager { public : VRBaseManager(CKContext *iCtx, CKGUID guid,CKSTRING Name); ~VRBaseManager(); public : /************************************************* Summary: Called when the player starts and reads the configuration files.In this method, you usually parse your own tokens with the parsing methods of the VRContext. Return Value: + CK_OK if successful + An error code otherwise Remarks: + You can override this function to parse your tokens. Note that the following tokens are already available in the VRContext: 'LogLevel', 'BaseDirectory', 'Hosts', 'VRResources', 'Resources', 'BitmapPath', 'DataPath' and 'SoundPath'. You can then use the CKPathManager to locate data, texture or sound path if needed. + You must override GetValidVRFunctionsMask and return a value including VRMANAGER_FUNC_OnParse for this function to get called. See Also: VRContext::GetToken, VRContext::GetHiddenToken, CKPathManager, VRBaseManager::GetValidVRFunctionsMask *************************************************/ virtual CKERROR OnParse() { return CK_OK; } /************************************************* Summary: Called each time the VRPlayer creates a new view. The information on this view is provided as an argument by the parsing of the View_X_X token (See the VR Pack’s Documentation’s Viewport Setting topic). With this method, you usually read the additional view subtoken with the subtoken parsing methods of the VRContext and make any initialization needed by your plugin. Return Value: + CK_OK if successful + An error code otherwise Remarks: + You can override this function to add specific processing at view creation. In particular, you can activate the warping on the view. You can also attach a user data to the view. + You must override GetValidVRFunctionsMask and return a value including VRMANAGER_FUNC_OnViewCreate for this function to get called. See Also: VRBaseManager::GetValidVRFunctionsMask, VRContext::ActivateWarp, VRContext::SetViewData, VRContext::GetSubToken *************************************************/ virtual CKERROR OnViewCreate(VRView* iView) { return CK_OK; } /************************************************* Summary: Called each time the VRPlayer deletes a view. Here, you should delete any data you attached to a view. Return Value: + CK_OK if successful + An error code otherwise Remarks: + You can override this function to add specific processing when a view is deleted. In particular, you should clear your user data if you added one to the current view. + You must override GetValidVRFunctionsMask and return a value including VRMANAGER_FUNC_OnViewDelete for this function to get called. See Also: VRContext::DeActivateWarp, VRContext::GetViewData, VRBaseManager::GetValidVRFunctionsMask *************************************************/ virtual CKERROR OnViewDelete(VRView* iView) { return CK_OK; } /************************************************* Summary: Called after each Virtools rendering for every warped view. Here, you should make your own custom rendering using either the warping texture or the information on the render context back buffer. Return Value: + CK_OK if successful + An error code otherwise Remarks: + You can override this function to implementing the view warping. Depending on the warping options, the Virtools rendering were done on the backbuffer or on a render texture. + You must override GetValidVRFunctionsMask and return a value including VRMANAGER_FUNC_OnViewWarp for this function to get called. See Also: VRContext::GetViewData, VRContext::GetWarpTexture, VRBaseManager::GetValidVRFunctionsMask *************************************************/ virtual CKERROR OnViewWarp(CKRenderContext* rc, VRView* iView) { return CK_OK; } /************************************************* Summary: Returns the priority of the specified VR manager function. Input Arguments: + Function: A VRMANAGER_FUNCTIONS to get the priority of. Return Value: An integer giving priority for the specified function. Remarks: + Override this function if you want to specify a priority for one or several functions of your manager. + The default implementation returns a priority of 0 for all functions. Example: // To ensure that your OnParse() function will be one of the first to be called among all managers: int MyManager::GetVRFunctionPriority(VRMANAGER_FUNCTIONS Function) { if (Function==VRMANAGER_FUNC_OnParse) return 10000; // High Priority return 0; } See Also: VRMANAGER_FUNCTIONS *************************************************/ virtual int GetVRFunctionPriority(VRMANAGER_FUNCTIONS Function) { return 0; } /************************************************* Summary: Returns list of VR functions implemented by the manager. Return Value: A combination of VRMANAGER_FUNCTIONS. Remarks: + You must override this function to indicate which functions your VR manager implements. Example: // The attribute manager implements two VRBaseManager functions : OnParse and OnViewWarp, // so its GetValidFunctionsMask looks like this: virtual CKDWORD GetValidVRFunctionsMask() { return VRMANAGER_FUNC_OnParse | VKMANAGER_FUNC_OnViewWarp ; } See Also: VRMANAGER_FUNCTIONS *************************************************/ virtual CKDWORD GetValidVRFunctionsMask() { return 0; } /************************************************* Summary: Called at the end of the creation of a CKContext. Return Value: + CK_OK if successful + An error code otherwise Remarks: + You can override this function if you need to add specific processing at initialization. If you do so, you *must* call the current implementation. + If your manager is registered after the context has been created and if it implements the OnCKInit() function, this function will be called upon registration. + The GetValidFunctionsMask implementation of the VRBaseManager return a valid mask for this method. See Also:Main Virtools Events, CKBaseManager::OnCKInit, VRBaseManager::GetValidFunctionsMask *************************************************/ virtual CKERROR OnCKInit(); /************************************************* Summary: Called at deletion of a CKContext Return Value: + CK_OK if successful + An error code otherwise Remarks: + You can override this function if you need to clean up things at the end of the session. If you do so, you *must* call the current implementation. + This method is called at the beginning of the deletion of the CKContext, the manager is also deleted a short time after. + The GetValidFunctionsMask implementation of the VRBaseManager return a valid mask for this method. See Also:Main Virtools Events, CKBaseManager::OnCKEnd, VRBaseManager::GetValidFunctionsMask *************************************************/ virtual CKERROR OnCKEnd(); /************************************************* Summary: Returns list of functions implemented by the manager. Return Value: A combination of CKMANAGER_FUNCTIONS. Remarks: + You can override this function to indicates the additional callback methods that are implemented by your manager from the CKBaseManager vitual methods. If you do so, you *must* call the current implementation as the VRBaseManager overrides OnCKInit and OnCKEnd. See Also: CKBaseManager::GetValidFunctionMask, CKMANAGER_FUNCTIONS *************************************************/ virtual CKDWORD GetValidFunctionsMask() { return CKMANAGER_FUNC_OnCKInit | CKMANAGER_FUNC_OnCKEnd; } public: VRContext* m_VRContext; // A pointer to the VRContext on which this manager is valid. }; #endif