Torque3D/Templates/Modules/inputTest/scripts/joystickSettings.cs

107 lines
4 KiB
C#

function JoystickSettingsDlg::onWake(%this)
{
%this.updateDevices();
}
function JoystickSettingsDlg::closeSettings(%this)
{
Canvas.popDialog(%this);
Canvas.pushDialog(InputMonitorDlg);
}
function JoystickSettingsDlg::updateDevices(%this)
{
%this-->deviceArray.deleteAllObjects();
%sdlDevices = 0;
if (isMethod("SDLInputManager", "numJoysticks"))
%sdlDevices = SDLInputManager::numJoysticks();
for (%i = 0; %i < %sdlDevices; %i++)
{
%guiCtrl = DevicePrototype.deepClone();
%this-->deviceArray.addGuiControl(%guiCtrl);
%guiCtrl.visible = true;
%guiCtrl.canSave = false;
%openState = SDLInputManager::getDeviceOpenState(%i);
if (%openState > 0)
{
%torqueInst = SDLInputManager::getTorqueInstFromDevice(%i);
%stateStr = "Opened as " @ %torqueInst;
}
else
%stateStr = "Closed";
%guiCtrl->DeviceOpen.setText(%stateStr);
if (%openState == 2)
%deviceName = SDLInputManager::ControllerNameForIndex(%i);
else
%deviceName = SDLInputManager::JoystickNameForIndex(%i);
%guiCtrl->DeviceName.setText(%deviceName);
%guidStr = SDLInputManager::JoystickGetGUID(%i);
%guiCtrl->DeviceGUID.setText("GUID: " @ %guidStr);
// Note: all of the device values could be retrieved individually with:
// SDLInputManager::JoystickNumAxes(%i), SDLInputManager::JoystickNumButtons(%i),
// SDLInputManager::JoystickNumHats(%i), SDLInputManager::JoystickNumBalls(%i),
// SDLInputManager::JoystickIsHaptic(%i), SDLInputManager::JoystickPowerLevel(%i)
//
%deviceSpecs = SDLInputManager::JoystickGetSpecs(%i);
%vendorId = SDLInputManager::GetVendor(%i);
%productId = SDLInputManager::GetProduct(%i);
%productVersion = SDLInputManager::GetProductVersion(%i);
%specStr = getField(%deviceSpecs,0) @ " Axes, " @ getField(%deviceSpecs, 1) @ " Buttons, ";
%specStr = %specStr @ getField(%deviceSpecs, 2) @ " POV Hats, " @ getField(%deviceSpecs, 3) @ " Trackballs, ";
if (getField(%deviceSpecs, 5))
%specStr = %specStr @ "Haptic, ";
%powerLevel = getField(%deviceSpecs, 6);
if (%powerLevel $= "Wired")
%specStr = %specStr @ "Wired";
else
%specStr = %specStr @ "Battery: " @ %powerLevel;
%guiCtrl->DeviceSpecs.setText(%specStr);
%isController = getField(%deviceSpecs, 4);
%deviceType = getField(%deviceSpecs, 7);
%details = "Type: " @ %deviceType @ ", Vendor ID: " @ %vendorId;
%details = %details @ ", Product ID: " @ %productId @ ", Version: " @ %productVersion;
%guiCtrl->DeviceDetails.setText(%details);
// Setup Buttons
if (%openState > 0)
{
%guiCtrl->button2.setText("Close Device");
%guiCtrl->button2.visible = true;
%guiCtrl->button2.command = "SDLInputManager::closeDevice(" @ %i @ ");";
if (%openState == 2)
{
%guiCtrl->button1.setText("Open as Joystick");
%guiCtrl->button1.visible = true;
%guiCtrl->button1.command = "SDLInputManager::openAsJoystick(" @ %i @ ");";
}
else
{
%guiCtrl->button1.setText("Open as Game Controller");
%guiCtrl->button1.visible = true;
%guiCtrl->button1.command = "SDLInputManager::openAsController(" @ %i @ ");";
}
}
else
{
%guiCtrl->button1.setText("Open as Joystick");
%guiCtrl->button1.visible = true;
%guiCtrl->button1.command = "SDLInputManager::openAsJoystick(" @ %i @ ");";
%guiCtrl->button2.setText("Open as Game Controller");
%guiCtrl->button2.visible = true;
%guiCtrl->button2.command = "SDLInputManager::openAsController(" @ %i @ ");";
}
// After the command executes, refresh this device list
%guiCtrl->button1.command = %guiCtrl->button1.command @ "JoystickSettingsDlg.updateDevices();";
%guiCtrl->button2.command = %guiCtrl->button2.command @ "JoystickSettingsDlg.updateDevices();";
}
}