111 lines
4.1 KiB
C++
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;
|
|
}
|
|
|
|
|