*** empty log message ***

This commit is contained in:
rlweaver 2001-12-06 23:42:38 +00:00
parent d05416a7cd
commit ddc3b433d4
6 changed files with 64 additions and 27 deletions

View File

@ -1,21 +1,28 @@
""" Class used to create and control vrpn devices """
from PandaObject import *
from DirectGeometry import CLAMP
from DirectObject import *
from PandaModules import *
ANALOG_MIN = -0.95
ANALOG_MAX = 0.95
ANALOG_RANGE = ANALOG_MAX - ANALOG_MIN
ANALOG_DEADBAND = 0.075
class DirectDeviceManager(VrpnClient, PandaObject):
try:
myBase = base
except:
myBase = simbase
class DirectDeviceManager(VrpnClient, DirectObject):
def __init__(self, server = None):
# Determine which server to use
if server != None:
# One give as constructor argument
self.server = server
else:
# Check config file, if that fails, use default
self.server = base.config.GetString('vrpn-server', 'spacedyne')
self.server = myBase.config.GetString('vrpn-server', 'spacedyne')
# Create a vrpn client
VrpnClient.__init__(self, self.server)
@ -35,7 +42,7 @@ class DirectDeviceManager(VrpnClient, PandaObject):
def createTimecodeReader(self, device):
return DirectTimecodeReader(self, device)
class DirectButtons(ButtonNode, PandaObject):
class DirectButtons(ButtonNode, DirectObject):
buttonCount = 0
def __init__(self, vrpnClient, device):
# Keep track of number of buttons created
@ -45,7 +52,7 @@ class DirectButtons(ButtonNode, PandaObject):
# Create a new button node for the given device
ButtonNode.__init__(self, vrpnClient, device)
# Attach node to data graph
self.nodePath = base.dataRoot.attachNewNode(self)
self.nodePath = myBase.dataRoot.attachNewNode(self)
def __getitem__(self, index):
if (index < 0) or (index > self.getNumButtons()):
@ -56,10 +63,10 @@ class DirectButtons(ButtonNode, PandaObject):
return self.getNumButtons()
def enable(self):
self.nodePath.reparentTo(base.dataRoot)
self.nodePath.reparentTo(myBase.dataRoot)
def disable(self):
self.nodePath.reparentTo(base.dataUnused)
self.nodePath.reparentTo(myBase.dataUnused)
def getName(self):
return self.name
@ -73,7 +80,7 @@ class DirectButtons(ButtonNode, PandaObject):
str = str + '%d' % val + ' '
return str
class DirectAnalogs(AnalogNode, PandaObject):
class DirectAnalogs(AnalogNode, DirectObject):
analogCount = 0
def __init__(self, vrpnClient, device):
# Keep track of number of analogs created
@ -83,7 +90,7 @@ class DirectAnalogs(AnalogNode, PandaObject):
# Create a new analog node for the given device
AnalogNode.__init__(self, vrpnClient, device)
# Attach node to data graph
self.nodePath = base.dataRoot.attachNewNode(self)
self.nodePath = myBase.dataRoot.attachNewNode(self)
def __getitem__(self, index):
if (index < 0) or (index > self.getNumControls()):
@ -94,10 +101,10 @@ class DirectAnalogs(AnalogNode, PandaObject):
return self.getNumControls()
def enable(self):
self.nodePath.reparentTo(base.dataRoot)
self.nodePath.reparentTo(myBase.dataRoot)
def disable(self):
self.nodePath.reparentTo(base.dataUnused)
self.nodePath.reparentTo(myBase.dataUnused)
def normalize(self, val, minVal = -1, maxVal = 1):
# First record sign
@ -108,7 +115,8 @@ class DirectAnalogs(AnalogNode, PandaObject):
# Zero out values in deadband
val = sign * max(abs(val) - ANALOG_DEADBAND, 0.0)
# Now clamp value between minVal and maxVal
val = CLAMP(val, ANALOG_MIN, ANALOG_MAX)
val = min( max( val, ANALOG_MIN ), ANALOG_MAX )
# val = CLAMP(val, ANALOG_MIN, ANALOG_MAX)
return (((maxVal - minVal) * ((val - ANALOG_MIN) / ANALOG_RANGE))
+ minVal)
@ -134,7 +142,7 @@ class DirectAnalogs(AnalogNode, PandaObject):
str = str + '%.3f' % val + ' '
return str
class DirectTracker(TrackerNode, PandaObject):
class DirectTracker(TrackerNode, DirectObject):
trackerCount = 0
def __init__(self, vrpnClient, device):
# Keep track of number of trackers created
@ -144,13 +152,13 @@ class DirectTracker(TrackerNode, PandaObject):
# Create a new tracker node for the given device
TrackerNode.__init__(self, vrpnClient, device)
# Attach node to data graph
self.nodePath = base.dataRoot.attachNewNode(self)
self.nodePath = myBase.dataRoot.attachNewNode(self)
def enable(self):
self.nodePath.reparentTo(base.dataRoot)
self.nodePath.reparentTo(myBase.dataRoot)
def disable(self):
self.nodePath.reparentTo(base.dataUnused)
self.nodePath.reparentTo(myBase.dataUnused)
def getName(self):
return self.name
@ -164,7 +172,7 @@ class DirectTracker(TrackerNode, PandaObject):
str = str + '%.3f' % val + ' '
return str
class DirectDials(DialNode, PandaObject):
class DirectDials(DialNode, DirectObject):
dialCount = 0
def __init__(self, vrpnClient, device):
# Keep track of number of dials created
@ -174,7 +182,7 @@ class DirectDials(DialNode, PandaObject):
# Create a new dial node for the given device
DialNode.__init__(self, vrpnClient, device)
# Attach node to data graph
self.nodePath = base.dataRoot.attachNewNode(self)
self.nodePath = myBase.dataRoot.attachNewNode(self)
def __getitem__(self, index):
if (index < 0) or (index > self.getNumDials()):
@ -185,10 +193,10 @@ class DirectDials(DialNode, PandaObject):
return self.getNumDials()
def enable(self):
self.nodePath.reparentTo(base.dataRoot)
self.nodePath.reparentTo(myBase.dataRoot)
def disable(self):
self.nodePath.reparentTo(base.dataUnused)
self.nodePath.reparentTo(myBase.dataUnused)
def getName(self):
return self.name
@ -202,7 +210,7 @@ class DirectDials(DialNode, PandaObject):
str = str + '%.3f' % val + ' '
return str
class DirectTimecodeReader(AnalogNode, PandaObject):
class DirectTimecodeReader(AnalogNode, DirectObject):
timecodeReaderCount = 0
def __init__(self, vrpnClient, device):
# Keep track of number of timecodeReader created
@ -218,13 +226,13 @@ class DirectTimecodeReader(AnalogNode, PandaObject):
# Create a new dial node for the given device
AnalogNode.__init__(self, vrpnClient, device)
# Attach node to data graph
self.nodePath = base.dataRoot.attachNewNode(self)
self.nodePath = myBase.dataRoot.attachNewNode(self)
def enable(self):
self.nodePath.reparentTo(base.dataRoot)
self.nodePath.reparentTo(myBase.dataRoot)
def disable(self):
self.nodePath.reparentTo(base.dataUnused)
self.nodePath.reparentTo(myBase.dataUnused)
def getName(self):
return self.name
@ -253,3 +261,18 @@ class DirectTimecodeReader(AnalogNode, PandaObject):
def __repr__(self):
str = ('%s: %d:%d:%d:%d' % ((self.name,) + self.getTime()[:-1]))
return str

View File

@ -42,7 +42,7 @@ class DirectJoybox(PandaObject):
self.analogs = direct.deviceManager.createAnalogs(self.device)
self.buttons = direct.deviceManager.createButtons(self.device)
self.aList = [0,0,0,0,0,0,0,0]
self.bList = [0,0,0,0,0,0,0,0]
self.bList = [0,0,0,0,0,0,0,0,0,0,0,0]
# For joybox fly mode
# Default is joe mode
self.mapping = [R_LEFT_RIGHT, R_FWD_BACK, L_FWD_BACK,

View File

@ -960,3 +960,9 @@ __builtin__.direct = base.direct = DirectSession()

View File

@ -13,6 +13,12 @@ shift
firstarg="$1"
fi
if [ "$firstarg" = "-v" ]; then
extra_genPyCode_libs="libvrpn"
shift
firstarg="$1"
fi
shift
extra_genPyCode_libs="$extra_genPyCode_libs $*"

View File

@ -64,6 +64,7 @@ class DirectFrame(DirectGuiWidget):
if text == None:
return
else:
from OnscreenText import OnscreenText
self.createcomponent(
component, (), 'text',
OnscreenText,

View File

@ -39,7 +39,7 @@ class SoundInterval(Interval):
#duration += 1.5
# DCR - hack for Miles bug - adding 1.5 seconds caused
# problems for MG_neg_buzzer.wav
duration += min(duration * 0.4, 1.5)
duration += min(duration * 2.4, 1.5)
else:
# This will screw up any intervals that base their
# time on the duration of this sound interval
@ -86,3 +86,4 @@ class SoundInterval(Interval):