deargui-vpl/ref/virtools/Samples/Behaviors/ControllersBehaviors/Channels.cpp

111 lines
4.1 KiB
C++

//
// Channels.cpp : Defines the initialization routines for the DLL.
//
#include "precomp.h"
#ifdef CK_LIB
#define RegisterBehaviorDeclarations Register_Controllers_BehaviorDeclarations
#define InitInstance _Controllers_InitInstance
#define ExitInstance _Controllers_ExitInstance
#define CKGetPluginInfoCount CKGet_Controllers_PluginInfoCount
#define CKGetPluginInfo CKGet_Controllers_PluginInfo
#define g_PluginInfo g_Controllers_PluginInfo
#else
#define RegisterBehaviorDeclarations RegisterBehaviorDeclarations
#define InitInstance InitInstance
#define ExitInstance ExitInstance
#define CKGetPluginInfoCount CKGetPluginInfoCount
#define CKGetPluginInfo CKGetPluginInfo
#define g_PluginInfo g_PluginInfo
#endif
#define CONTROLLER_BEHAVIOR CKGUID(0x344366e3,0x35f23b0a)
CKERROR InitInstance(CKContext* context);
CKERROR ExitInstance(CKContext* context);
PLUGIN_EXPORT void RegisterBehaviorDeclarations(XObjectDeclarationArray *reg);
CKPluginInfo g_PluginInfo;
PLUGIN_EXPORT int CKGetPluginInfoCount() { return 1; }
PLUGIN_EXPORT CKPluginInfo* CKGetPluginInfo(int Index)
{
g_PluginInfo.m_Author = "Virtools";
g_PluginInfo.m_Description = "Controller 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 = CONTROLLER_BEHAVIOR;
g_PluginInfo.m_Summary = "Controller Building Blocks";
return &g_PluginInfo;
}
/**********************************************************************************/
/**********************************************************************************/
void RegisterBehaviorDeclarations(XObjectDeclarationArray *reg)
{
// Controllers/Joystick
RegisterBehavior(reg, FillBehaviorJoystickControllerDecl);
RegisterBehavior(reg, FillBehaviorDigitalJoystickMapperDecl);
RegisterBehavior(reg, FillBehaviorJoystickWaiterDecl);
// Controllers/Keyboard
RegisterBehavior(reg, FillBehaviorKeyEventDecl);
RegisterBehavior(reg, FillBehaviorKeyWaiterDecl);
RegisterBehavior(reg, FillBehaviorKeyboardControllerDecl);
RegisterBehavior(reg, FillBehaviorKeyboardMapperDecl);
RegisterBehavior(reg, FillBehaviorSwitchOnKeyDecl);
RegisterBehavior(reg, FillBehaviorEditStringDecl);
// Controllers/Mouse
RegisterBehavior(reg, FillBehaviorGetMousePositionDecl);
RegisterBehavior(reg, FillBehaviorGetMouseRelativePositionDecl);
RegisterBehavior(reg, FillBehaviorMouseWaiterDecl);
}
#define CKPGUID_JOYAXIS CKGUID(0x1ed64a6a,0x5a24059a)
#define CKPGUID_MOUSEEVENT CKGUID(0x7abe0373,0x1c366a1b)
#define CKPGUID_KEYBOARDPART CKGUID(0x7a4347dd,0x59a82cce)
CKERROR InitInstance(CKContext* context)
{
CKParameterManager* pm = context->GetParameterManager();
// Evolution Flags
pm->RegisterNewFlags(CKPGUID_MOUSEEVENT,"Mouse Event","Move=1,Left Button Down=2,Left Button Up=4,Right Button Down=8,Right Button Up=16,Middle Button Down=32,Middle Button Up=64,Roll Received=128,Left Double Click=256,Right Double Click=512,Middle Double Click=1024");
//old enum without double click flags
//pm->RegisterNewFlags(CKPGUID_MOUSEEVENT,"Mouse Event","Move=1,Left Button Down=2,Left Button Up=4,Right Button Down=8,Right Button Up=16,Middle Button Down=32,Middle Button Up=64,Roll Received=128");
pm->RegisterNewFlags(CKPGUID_JOYAXIS,"Joy Axis","Axis X=1,Axis Y=2,Axis Z=4,Rotation X=8,Rotation Y=16,Rotation Z=32,Slider 1=64,Slider 2=128,Pov=256");
pm->RegisterNewFlags(CKPGUID_KEYBOARDPART,"Keyboard Section","NumPad=1,Arrows=2");
// We hide the parameters (structures and flags)
CKParameterTypeDesc* param_type;
param_type=pm->GetParameterTypeDescription(CKPGUID_MOUSEEVENT);
if (param_type) param_type->dwFlags|=CKPARAMETERTYPE_HIDDEN;
param_type=pm->GetParameterTypeDescription(CKPGUID_JOYAXIS);
if (param_type) param_type->dwFlags|=CKPARAMETERTYPE_HIDDEN;
return CK_OK;
}
CKERROR ExitInstance(CKContext* context)
{
CKParameterManager* pm = context->GetParameterManager();
pm->UnRegisterParameterType(CKPGUID_MOUSEEVENT);
pm->UnRegisterParameterType(CKPGUID_JOYAXIS);
return CK_OK;
}