mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-01 09:23:03 -04:00
better handling of watching events so ignore actually works
This commit is contained in:
parent
570a6faf71
commit
22374c375a
@ -43,7 +43,14 @@ class InputState(DirectObject.DirectObject):
|
||||
self.accept(eventOn, self.set, [name, 1])
|
||||
self.accept(eventOff, self.set, [name, 0])
|
||||
self.state[name] = default
|
||||
self.watching[name] = (eventOn, eventOff)
|
||||
# self.watching is a dict of the form:
|
||||
# {name : [(eventOn, eventOff), (eventOn, eventOff)...]}
|
||||
eventList = self.watching.get(name)
|
||||
if eventList:
|
||||
eventList.append((eventOn, eventOff))
|
||||
else:
|
||||
# Start a new list
|
||||
self.watching[name] = [(eventOn, eventOff)]
|
||||
|
||||
def force(self, name, value):
|
||||
"""
|
||||
@ -64,9 +71,10 @@ class InputState(DirectObject.DirectObject):
|
||||
The opposite of watch(name, ...)
|
||||
See Also: watch()
|
||||
"""
|
||||
eventOn, eventOff = self.watching[name]
|
||||
DirectObject.DirectObject.ignore(self, eventOn)
|
||||
DirectObject.DirectObject.ignore(self, eventOff)
|
||||
for event in self.watching[name]:
|
||||
eventOn, eventOff = event
|
||||
DirectObject.DirectObject.ignore(self, eventOn)
|
||||
DirectObject.DirectObject.ignore(self, eventOff)
|
||||
del self.watching[name]
|
||||
del self.state[name]
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user