ya2 · news · projects · code · about

676f018e7804f051317f9608e57d4732d405debb
[pmachines.git] / ya2 / lib / p3d / joystick.py
1 # from panda3d.core import InputDevice
2
3
4 # class P3dJoystickMgr:
5
6 # def __init__(self):
7 # self.joysticks = []
8 # self.curr_vibration = {}
9 # self.__is_vibrating = [False, False, False, False]
10
11 # def init_joystick(self):
12 # for i, dev in enumerate(base.devices.getDevices(InputDevice.DeviceClass.gamepad)):
13 # base.attachInputDevice(dev, prefix='joypad%s' % i)
14 # taskMgr.add(self._update, 'update joysticks')
15 # # pygame.init()
16 # # joystick.init()
17 # # self.joysticks = [
18 # # joystick.Joystick(idx) for idx in range(joystick.get_count())]
19 # # list(map(lambda joystick: joystick.init(), self.joysticks))
20
21 # @property
22 # def num_joysticks(self):
23 # return len(base.devices.getDevices(InputDevice.DeviceClass.gamepad))
24
25 # @staticmethod
26 # def get_joystick(player_idx):
27 # devices = base.devices.getDevices(InputDevice.DeviceClass.gamepad)
28 # if player_idx > len(devices) - 1:
29 # return 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
30 # gamepad = devices[player_idx]
31 # face_a = gamepad.findButton('face_a')
32 # face_b = gamepad.findButton('face_b')
33 # face_x = gamepad.findButton('face_x')
34 # face_y = gamepad.findButton('face_y')
35 # dpad_l = gamepad.findButton('dpad_left')
36 # dpad_r = gamepad.findButton('dpad_right')
37 # dpad_u = gamepad.findButton('dpad_up')
38 # dpad_d = gamepad.findButton('dpad_down')
39 # trigger_l = gamepad.findButton('ltrigger')
40 # trigger_r = gamepad.findButton('rtrigger')
41 # shoulder_l = gamepad.findButton('lshoulder')
42 # shoulder_r = gamepad.findButton('rshoulder')
43 # stick_l = gamepad.findButton('lstick')
44 # stick_r = gamepad.findButton('rstick')
45 # left_x = gamepad.findAxis(InputDevice.Axis.left_x)
46 # left_y = gamepad.findAxis(InputDevice.Axis.left_y)
47 # trigger_l_axis = gamepad.findAxis(InputDevice.Axis.left_trigger)
48 # trigger_r_axis = gamepad.findAxis(InputDevice.Axis.right_trigger)
49 # trigger_l_known = trigger_l.known
50 # trigger_r_known = trigger_r.known
51 # return (left_x.value, -left_y.value, face_a.pressed, face_b.pressed,
52 # face_x.pressed, face_y.pressed,
53 # dpad_l.pressed, dpad_r.pressed, dpad_u.pressed, dpad_d.pressed,
54 # trigger_l.pressed or trigger_l_axis.value > .5,
55 # trigger_r.pressed or trigger_r_axis.value > .5,
56 # shoulder_l.pressed, shoulder_r.pressed, stick_l.pressed,
57 # stick_r.pressed, trigger_l_known, trigger_r_known)
58 # # for _ in pygame.event.get(): pass
59 # # if not self.joysticks: return 0, 0, 0, 0
60 # # jstick = self.joysticks[0]
61 # # axis, btn = jstick.get_axis, jstick.get_button
62 # # return axis(0), axis(1), btn(0), btn(1)
63
64 # def set_vibration(self, player_idx, code, time=-1):
65 # devices = base.devices.getDevices(InputDevice.DeviceClass.gamepad)
66 # if player_idx < 0 or player_idx > len(devices) - 1: return
67 # if player_idx in self.curr_vibration and \
68 # code in self.curr_vibration[player_idx]: return
69 # if player_idx not in self.curr_vibration:
70 # self.curr_vibration[player_idx] = {}
71 # self.curr_vibration[player_idx][code] = time
72
73 # def clear_vibration(self, player_idx, code=None):
74 # devices = base.devices.getDevices(InputDevice.DeviceClass.gamepad)
75 # if player_idx < 0 or player_idx > len(devices) - 1: return
76 # if player_idx not in self.curr_vibration or \
77 # code not in self.curr_vibration[player_idx]: return
78 # if code is None: del self.curr_vibration[player_idx]
79 # else: del self.curr_vibration[player_idx][code]
80
81 # def _update(self, task):
82 # devices = base.devices.getDevices(InputDevice.DeviceClass.gamepad)
83 # for player_idx in self.curr_vibration:
84 # for code in self.curr_vibration[player_idx]:
85 # if self.curr_vibration[player_idx][code] != -1:
86 # dt = globalClock.getDt()
87 # self.curr_vibration[player_idx][code] -= dt
88 # for player_idx in self.curr_vibration:
89 # for code in list(self.curr_vibration[player_idx])[:]:
90 # if self.curr_vibration[player_idx][code] != -1:
91 # if self.curr_vibration[player_idx][code] < 0:
92 # del self.curr_vibration[player_idx][code]
93 # for player_idx in list(self.curr_vibration)[:]:
94 # if not self.curr_vibration[player_idx]:
95 # del self.curr_vibration[player_idx]
96 # for player_idx, dev in enumerate(devices):
97 # gamepad = devices[player_idx]
98 # if player_idx in self.curr_vibration and \
99 # not self.__is_vibrating[player_idx]:
100 # gamepad.set_vibration(.2, .4)
101 # self.__is_vibrating[player_idx] = True
102 # elif player_idx not in self.curr_vibration:
103 # gamepad.set_vibration(0, 0)
104 # self.__is_vibrating[player_idx] = False
105 # return task.cont
106
107 # def destroy(self):
108 # pass
109 # # joystick.quit()
110 # # pygame.quit()
111 # # self.joysticks = []