WorldViz User Forum

WorldViz User Forum (https://forum.worldviz.com/index.php)
-   Vizard (https://forum.worldviz.com/forumdisplay.php?f=17)
-   -   Joystick and XBox Controller in DirectInput? (https://forum.worldviz.com/showthread.php?t=5310)

shivanangel 03-16-2015 10:31 AM

Joystick and XBox Controller in DirectInput?
 
I am using your example in the Joystick basics to connect to an XBox controller through the new directInput module.

When I call addJoystick(), I get an JoystickSensor, which does not let me call the .getControllerID() method.

Do I typecast this to some type? Do I need to use a different method to get access to the actual Xbox methods?

There is nothing in the documentation, so could you please add it in the future? I already printed out the information on the device and it returns true for the isXboxController.

Also, could you please consider changing .getControllerID to getControllerId to follow capitalization convention better?

Thanks,
George

shivanangel 03-16-2015 11:20 AM

Also, the button codes appear to be wrong.
I get different codes from the sensor down than what the documentation states:

dinput.XBOX_BUTTON_START reads as a 4, while the left shoulder button reads as a 4 and the start button reads as a 7.

farshizzo 03-16-2015 11:34 AM

Yeah, the documentation is not very clear. You actually need to use the .getXboxControllerList() to get a list of Xbox controller objects that provide the additional methods. They are different than the standard joystick objects created through .addJoystick().

Here is a sample script that gets all the detected Xbox controllers and displays a config window for them:
Code:

import viz
import vizconfig
viz.go()

dinput = viz.add('DirectInput.dle')

for sensor in dinput.getXboxControllerList():
        vizconfig.register(sensor)

vizconfig.getConfigWindow().setWindowVisible(True)


shivanangel 03-16-2015 12:04 PM

Great, that also fixed the button mapping problem.

~George

shivanangel 03-16-2015 01:58 PM

What about the analog sticks for the callbacks?
Has that been phased out and now I just use a timer to read the values?

Before there was a move and a twist method.

shivanangel 03-17-2015 09:58 AM

Also, what about the dead zone?
Doesn't seem to have an effect when set on the XBox controller.
If I poll the device using the getLeftStick() I still get a value less than the dead zone.

Do I have to manually test for this?

Jeff 03-18-2015 06:53 AM

You could register a callback function with vizact.onupdate to poll the analog values.

Make sure to calibrate your joystick using the Game Controllers dialog in the Windows Control Panel.

Xombie 04-17-2015 02:31 PM

Is my 'DirectInput.dle' out of date? Why do I get this error?

AttributeError: 'DirectInputExtension' object has no attribute 'getXboxControllerList'

Jeff 04-17-2015 03:25 PM

This command is available in Vizard 5.1. If you're using Vizard 5 you can go to 'Help > Check for Updates' to get the latest installer.


All times are GMT -7. The time now is 10:42 AM.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2021, vBulletin Solutions, Inc.
Copyright 2002-2018 WorldViz LLC