deargui-vpl/ref/virtools/Samples/Behaviors/Cameras/Cameras.cpp

105 lines
3.3 KiB
C++

//
// Cameras.cpp : Defines the initialization routines for the DLL.
//
#include "CKAll.h"
#ifdef CK_LIB
#define RegisterBehaviorDeclarations Register_Cameras_BehaviorDeclarations
#define InitInstance _Cameras_InitInstance
#define ExitInstance _Cameras_ExitInstance
#define CKGetPluginInfoCount CKGet_Cameras_PluginInfoCount
#define CKGetPluginInfo CKGet_Cameras_PluginInfo
#define g_PluginInfo g_Cameras_PluginInfo
#else
#define RegisterBehaviorDeclarations RegisterBehaviorDeclarations
#define InitInstance InitInstance
#define ExitInstance ExitInstance
#define CKGetPluginInfoCount CKGetPluginInfoCount
#define CKGetPluginInfo CKGetPluginInfo
#define g_PluginInfo g_PluginInfo
#endif
CKERROR InitInstance(CKContext* context);
CKERROR ExitInstance(CKContext* context);
PLUGIN_EXPORT void RegisterBehaviorDeclarations(XObjectDeclarationArray *reg);
#define CAMERA_BEHAVIOR CKGUID(0x12d94eba,0x47057415)
#define CKPGUID_PROJECTIONTYPE CKDEFINEGUID(0x1ee22148, 0x602c1ca1)
CKPluginInfo g_PluginInfo;
PLUGIN_EXPORT int CKGetPluginInfoCount() { return 1; }
PLUGIN_EXPORT CKPluginInfo* CKGetPluginInfo(int Index)
{
g_PluginInfo.m_Author = "Virtools";
g_PluginInfo.m_Description = "Camera building blocks";
g_PluginInfo.m_Extension = "";
g_PluginInfo.m_Type = CKPLUGIN_BEHAVIOR_DLL;
g_PluginInfo.m_Version = 0x000001;
g_PluginInfo.m_InitInstanceFct = InitInstance;
g_PluginInfo.m_ExitInstanceFct = ExitInstance;
g_PluginInfo.m_GUID = CAMERA_BEHAVIOR;
g_PluginInfo.m_Summary = "Cameras";
return &g_PluginInfo;
}
/**********************************************************************************/
/**********************************************************************************/
CKERROR InitInstance(CKContext* context)
{
CKParameterManager* pm = context->GetParameterManager();
pm->RegisterNewEnum( CKPGUID_PROJECTIONTYPE,"Projection Mode","Perspective=1,Orthographic=2" );
// Mouse Camera Orbit
#define CKPGUID_MOUSEBUTTON CKGUID(0x1ff24d5a,0x122f2c1f)
pm->RegisterNewEnum(CKPGUID_MOUSEBUTTON,"Mouse Button","Left=0,Middle=2,Right=1" );
return CK_OK;
}
CKERROR ExitInstance(CKContext* context)
{
CKParameterManager* pm = context->GetParameterManager();
pm->UnRegisterParameterType(CKPGUID_PROJECTIONTYPE);
pm->UnRegisterParameterType(CKPGUID_MOUSEBUTTON);
return CK_OK;
}
void RegisterBehaviorDeclarations(XObjectDeclarationArray *reg)
{
// Cameras/Basic
RegisterBehavior(reg, FillBehaviorDollyDecl);
RegisterBehavior(reg, FillBehaviorSetOrthographicZoomDecl);
RegisterBehavior(reg, FillBehaviorSetCameraTargetDecl);
RegisterBehavior(reg, FillBehaviorSetClippingDecl);
RegisterBehavior(reg, FillBehaviorSetFOVDecl);
RegisterBehavior(reg, FillBehaviorSetProjectionDecl);
RegisterBehavior(reg, FillBehaviorSetZoomDecl);
// Cameras/FX
RegisterBehavior(reg, FillBehaviorCameraColorFilterDecl);
RegisterBehavior(reg, FillBehaviorVertigoDecl);
// Cameras/Montage
RegisterBehavior(reg, FillBehaviorGetCurrentCameraDecl);
RegisterBehavior(reg, FillBehaviorSetAsActiveCameraDecl);
// Cameras/Movement
RegisterBehavior(reg, FillBehaviorOrbitDecl);
RegisterBehavior(reg, FillBehaviorKeyboardCameraOrbitDecl);
RegisterBehavior(reg, FillBehaviorMouseCameraOrbitDecl);
RegisterBehavior(reg, FillBehaviorJoystickCameraOrbitDecl);
RegisterBehavior(reg, FillBehaviorGenericCameraOrbitDecl);
}