mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-02 09:52:27 -04:00
fixed factory crosstalk problem
This commit is contained in:
parent
5425755442
commit
6a87e89a43
@ -183,7 +183,7 @@ class CutScene(BasicEntities.NodePathEntity, DirectObject.DirectObject):
|
||||
assert(self.debugPrint("setStartStop(event=%s)"%(event,)))
|
||||
if self.startStopEvent:
|
||||
self.ignore(self.startStopEvent)
|
||||
self.startStopEvent = "switch-%s"%(event,)
|
||||
self.startStopEvent = self.getOutputEventName(event)
|
||||
if self.startStopEvent:
|
||||
self.accept(self.startStopEvent, self.startOrStop)
|
||||
|
||||
|
@ -49,6 +49,19 @@ class Entity(DirectObject):
|
||||
del self.level
|
||||
del self.entId
|
||||
|
||||
def getUniqueName(self, name, entId=None):
|
||||
"""returns a name that is unique for a particular entity;
|
||||
defaults to this entity"""
|
||||
if entId is None:
|
||||
entId = self.entId
|
||||
return '%s-%s-%s' % (name, self.level.levelId, entId)
|
||||
|
||||
def getOutputEventName(self, entId=None):
|
||||
"""returns the event generated by an entity; defaults to this entity"""
|
||||
if entId is None:
|
||||
entId = self.entId
|
||||
return self.getUniqueName('entityOutput', entId)
|
||||
|
||||
def getZoneEntId(self):
|
||||
"""returns entId of zone that contains this entity"""
|
||||
return self.level.getEntityZoneEntId(self.entId)
|
||||
|
@ -38,7 +38,9 @@ class Level:
|
||||
|
||||
def initializeLevel(self, levelId, levelSpec, scenarioIndex):
|
||||
"""subclass should call this as soon as it has located
|
||||
its spec data"""
|
||||
its spec data. levelId should be a unique integer (a doId works
|
||||
just fine) that differentiates this level from all other levels
|
||||
that may exist concurrently."""
|
||||
self.levelId = levelId
|
||||
self.levelSpec = levelSpec
|
||||
self.scenarioIndex = scenarioIndex
|
||||
|
@ -38,32 +38,32 @@ import Entity
|
||||
def andTest(self, a, b):
|
||||
assert(self.debugPrint("andTest(a=%s, b=%s)"%(a, b)))
|
||||
if b:
|
||||
messenger.send(self.getName(), [a])
|
||||
messenger.send(self.getOutputEventName(), [a])
|
||||
|
||||
def orTest(self, a, b):
|
||||
assert(self.debugPrint("orTest(a=%s, b=%s)"%(a, b)))
|
||||
if not b:
|
||||
messenger.send(self.getName(), [a])
|
||||
messenger.send(self.getOutputEventName(), [a])
|
||||
# else: ...we already sent the messege when b was set.
|
||||
|
||||
def xorTest(self, a, b):
|
||||
assert(self.debugPrint("xorTest(a=%s, b=%s)"%(a, b)))
|
||||
messenger.send(self.getName(), [(not (a and b)) and (a or b)])
|
||||
messenger.send(self.getOutputEventName(), [(not (a and b)) and (a or b)])
|
||||
|
||||
def nandTest(self, a, b):
|
||||
assert(self.debugPrint("nandTest(a=%s, b=%s)"%(a, b)))
|
||||
if b:
|
||||
messenger.send(self.getName(), [not (a and b)])
|
||||
messenger.send(self.getOutputEventName(), [not (a and b)])
|
||||
|
||||
def norTest(self, a, b):
|
||||
assert(self.debugPrint("norTest(a=%s, b=%s)"%(a, b)))
|
||||
if not b:
|
||||
messenger.send(self.getName(), [not (a or b)])
|
||||
messenger.send(self.getOutputEventName(), [not (a or b)])
|
||||
# else: ...we already sent the messege when b was set.
|
||||
|
||||
def xnorTest(self, a, b):
|
||||
assert(self.debugPrint("xnorTest(a=%s, b=%s)"%(a, b)))
|
||||
messenger.send(self.getName(), [(a and b) or (not (a or b))])
|
||||
messenger.send(self.getOutputEventName(), [(a and b) or (not (a or b))])
|
||||
|
||||
|
||||
class LogicGate(Entity.Entity, PandaObject.PandaObject):
|
||||
@ -126,7 +126,7 @@ class LogicGate(Entity.Entity, PandaObject.PandaObject):
|
||||
assert(self.debugPrint("setInput1Event(event=%s)"%(event,)))
|
||||
if self.input1Event:
|
||||
self.ignore(self.input1Event)
|
||||
self.input1Event = "switch-%s"%(event,)
|
||||
self.input1Event = self.getOutputEventName(event)
|
||||
if self.input1Event:
|
||||
self.accept(self.input1Event, self.setIsInput1)
|
||||
|
||||
@ -134,7 +134,7 @@ class LogicGate(Entity.Entity, PandaObject.PandaObject):
|
||||
assert(self.debugPrint("setInput2Event(event=%s)"%(event,)))
|
||||
if self.input2Event:
|
||||
self.ignore(self.input2Event)
|
||||
self.input2Event = "switch-%s"%(event,)
|
||||
self.input2Event = self.getOutputEventName(event)
|
||||
if self.input2Event:
|
||||
self.accept(self.input2Event, self.setIsInput2)
|
||||
|
||||
|
@ -10,11 +10,14 @@ class VisibilityExtender(Entity.Entity):
|
||||
def initVisExt(self):
|
||||
self.extended = 0
|
||||
self.zoneEntId = self.getZoneEntId()
|
||||
self.eventName = 'switch-%s' % self.event
|
||||
self.accept(self.eventName, self.handleEvent)
|
||||
self.eventName = None
|
||||
if self.event is not None:
|
||||
self.eventName = self.getOutputEventName(self.event)
|
||||
self.accept(self.eventName, self.handleEvent)
|
||||
|
||||
def destroyVisExt(self):
|
||||
self.ignore(self.eventName)
|
||||
if self.eventName is not None:
|
||||
self.ignore(self.eventName)
|
||||
if self.extended:
|
||||
self.retract()
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user