diff --git a/direct/src/directdevices/DirectDeviceManager.py b/direct/src/directdevices/DirectDeviceManager.py index 4e12b7282d..10f636a62b 100644 --- a/direct/src/directdevices/DirectDeviceManager.py +++ b/direct/src/directdevices/DirectDeviceManager.py @@ -55,7 +55,7 @@ class DirectButtons(ButtonNode, DirectObject): self.nodePath = myBase.dataRoot.attachNewNode(self) def __getitem__(self, index): - if (index < 0) or (index > self.getNumButtons()): + if (index < 0) or (index >= self.getNumButtons()): raise IndexError return self.getButtonState(index) @@ -93,7 +93,7 @@ class DirectAnalogs(AnalogNode, DirectObject): self.nodePath = myBase.dataRoot.attachNewNode(self) def __getitem__(self, index): - if (index < 0) or (index > self.getNumControls()): + if (index < 0) or (index >= self.getNumControls()): raise IndexError return self.getControlState(index) @@ -113,6 +113,7 @@ class DirectAnalogs(AnalogNode, DirectObject): else: sign = 1 # Zero out values in deadband + print ANALOG_DEADBAND val = sign * max(abs(val) - ANALOG_DEADBAND, 0.0) # Now clamp value between minVal and maxVal val = min( max( val, ANALOG_MIN ), ANALOG_MAX ) @@ -182,7 +183,7 @@ class DirectDials(DialNode, DirectObject): self.nodePath = myBase.dataRoot.attachNewNode(self) def __getitem__(self, index): - if (index < 0) or (index > self.getNumDials()): + if (index < 0) or (index >= self.getNumDials()): raise IndexError return self.readDial(index) diff --git a/direct/src/directdevices/DirectJoybox.py b/direct/src/directdevices/DirectJoybox.py index a0f4844334..3062587264 100644 --- a/direct/src/directdevices/DirectJoybox.py +++ b/direct/src/directdevices/DirectJoybox.py @@ -27,6 +27,10 @@ R_FWD_BACK = 5 R_TWIST = 6 R_SLIDE = 7 +JOYBOX_MIN = ANALOG_MIN + ANALOG_DEADBAND +JOYBOX_MAX = ANALOG_MAX - ANALOG_DEADBAND +JOYBOX_RANGE = JOYBOX_MAX - JOYBOX_MIN + class DirectJoybox(PandaObject): joyboxCount = 0 xyzMultiplier = 1.0 @@ -150,17 +154,17 @@ class DirectJoybox(PandaObject): # Update analogs for chan in range(len(self.analogs)): val = self.analogs.getControlState(chan) - # Scale up slider values + # Zero out values in deadband + if (val < 0): + val = min(val + ANALOG_DEADBAND, 0.0) + else: + val = max(val - ANALOG_DEADBAND, 0.0) + # Scale up rotating knob values if (chan == 2) or (chan == 6): val *= 3.0 - # Zero out values in deadband - if val < 0: - val = min(val + ANALOG_DEADBAND, 0.0) - else: - val = max(val - ANALOG_DEADBAND, 0.0) # Now clamp value between minVal and maxVal - val = CLAMP(val, ANALOG_MIN, ANALOG_MAX) - self.aList[chan] = (2.0 * ((val - ANALOG_MIN) / ANALOG_RANGE)) - 1 + val = CLAMP(val, JOYBOX_MIN, JOYBOX_MAX) + self.aList[chan] = 2.0*((val - JOYBOX_MIN)/JOYBOX_RANGE) - 1 # Update buttons for i in range(len(self.buttons)): try: