Renamed gamepad sample script to gamepad.py

Renamed gamepad sample script
Changed axis usage to the newly created functions and exposed classes
This commit is contained in:
fireclawthefox 2016-08-04 22:54:19 +02:00
parent e1661111c2
commit 2565f4b423

View File

@ -56,6 +56,16 @@ class App(ShowBase):
# movements by ourself
self.disableMouse()
# set the center position of the control sticks
# NOTE: here we assume, that the wheel is centered when the application get started.
# In real world applications, you should notice the user and give him enough time
# to center the wheel until you store the center position of the controler!
gamepads = base.devices.getDevices(InputDevice.DC_gamepad)
self.lxcenter = gamepads[0].findControl(InputDevice.C_left_x).state
self.lycenter = gamepads[0].findControl(InputDevice.C_left_y).state
self.rxcenter = gamepads[0].findControl(InputDevice.C_right_x).state
self.rycenter = gamepads[0].findControl(InputDevice.C_right_y).state
self.taskMgr.add(self.moveTask, "movement update task")
def connect(self, device):
@ -95,16 +105,14 @@ class App(ShowBase):
return task.cont
# we will use the first found gamepad
for i in range(gamepads[0].getNumControls()):
if gamepads[0].getControlMap(i) == InputDevice.C_left_x:
movementVec.setX(gamepads[0].getControlState(i))
elif gamepads[0].getControlMap(i) == InputDevice.C_left_y:
movementVec.setY(gamepads[0].getControlState(i))
if gamepads[0].getControlMap(i) == InputDevice.C_right_x:
base.camera.setH(base.camera, 100 * dt * (gamepads[0].getControlState(i)))
elif gamepads[0].getControlMap(i) == InputDevice.C_right_y:
base.camera.setP(base.camera, 100 * dt * (gamepads[0].getControlState(i)))
# Move the camera left/right
movementVec.setX(gamepads[0].findControl(InputDevice.C_left_x).state - self.lxcenter)
# Move the camera forward/backward
movementVec.setY(gamepads[0].findControl(InputDevice.C_left_y).state - self.lycenter)
# Control the cameras heading
base.camera.setH(base.camera, 100 * dt * (gamepads[0].findControl(InputDevice.C_right_x).state - self.rxcenter))
# Control the cameras pitch
base.camera.setP(base.camera, 100 * dt * (gamepads[0].findControl(InputDevice.C_right_y).state - self.rycenter))
# calculate movement
base.camera.setX(base.camera, 100 * dt * movementVec.getX())