mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 02:15:43 -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,)))
|
assert(self.debugPrint("setStartStop(event=%s)"%(event,)))
|
||||||
if self.startStopEvent:
|
if self.startStopEvent:
|
||||||
self.ignore(self.startStopEvent)
|
self.ignore(self.startStopEvent)
|
||||||
self.startStopEvent = "switch-%s"%(event,)
|
self.startStopEvent = self.getOutputEventName(event)
|
||||||
if self.startStopEvent:
|
if self.startStopEvent:
|
||||||
self.accept(self.startStopEvent, self.startOrStop)
|
self.accept(self.startStopEvent, self.startOrStop)
|
||||||
|
|
||||||
|
@ -49,6 +49,19 @@ class Entity(DirectObject):
|
|||||||
del self.level
|
del self.level
|
||||||
del self.entId
|
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):
|
def getZoneEntId(self):
|
||||||
"""returns entId of zone that contains this entity"""
|
"""returns entId of zone that contains this entity"""
|
||||||
return self.level.getEntityZoneEntId(self.entId)
|
return self.level.getEntityZoneEntId(self.entId)
|
||||||
|
@ -38,7 +38,9 @@ class Level:
|
|||||||
|
|
||||||
def initializeLevel(self, levelId, levelSpec, scenarioIndex):
|
def initializeLevel(self, levelId, levelSpec, scenarioIndex):
|
||||||
"""subclass should call this as soon as it has located
|
"""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.levelId = levelId
|
||||||
self.levelSpec = levelSpec
|
self.levelSpec = levelSpec
|
||||||
self.scenarioIndex = scenarioIndex
|
self.scenarioIndex = scenarioIndex
|
||||||
|
@ -38,32 +38,32 @@ import Entity
|
|||||||
def andTest(self, a, b):
|
def andTest(self, a, b):
|
||||||
assert(self.debugPrint("andTest(a=%s, b=%s)"%(a, b)))
|
assert(self.debugPrint("andTest(a=%s, b=%s)"%(a, b)))
|
||||||
if b:
|
if b:
|
||||||
messenger.send(self.getName(), [a])
|
messenger.send(self.getOutputEventName(), [a])
|
||||||
|
|
||||||
def orTest(self, a, b):
|
def orTest(self, a, b):
|
||||||
assert(self.debugPrint("orTest(a=%s, b=%s)"%(a, b)))
|
assert(self.debugPrint("orTest(a=%s, b=%s)"%(a, b)))
|
||||||
if not b:
|
if not b:
|
||||||
messenger.send(self.getName(), [a])
|
messenger.send(self.getOutputEventName(), [a])
|
||||||
# else: ...we already sent the messege when b was set.
|
# else: ...we already sent the messege when b was set.
|
||||||
|
|
||||||
def xorTest(self, a, b):
|
def xorTest(self, a, b):
|
||||||
assert(self.debugPrint("xorTest(a=%s, b=%s)"%(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):
|
def nandTest(self, a, b):
|
||||||
assert(self.debugPrint("nandTest(a=%s, b=%s)"%(a, b)))
|
assert(self.debugPrint("nandTest(a=%s, b=%s)"%(a, b)))
|
||||||
if b:
|
if b:
|
||||||
messenger.send(self.getName(), [not (a and b)])
|
messenger.send(self.getOutputEventName(), [not (a and b)])
|
||||||
|
|
||||||
def norTest(self, a, b):
|
def norTest(self, a, b):
|
||||||
assert(self.debugPrint("norTest(a=%s, b=%s)"%(a, b)))
|
assert(self.debugPrint("norTest(a=%s, b=%s)"%(a, b)))
|
||||||
if not 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.
|
# else: ...we already sent the messege when b was set.
|
||||||
|
|
||||||
def xnorTest(self, a, b):
|
def xnorTest(self, a, b):
|
||||||
assert(self.debugPrint("xnorTest(a=%s, b=%s)"%(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):
|
class LogicGate(Entity.Entity, PandaObject.PandaObject):
|
||||||
@ -126,7 +126,7 @@ class LogicGate(Entity.Entity, PandaObject.PandaObject):
|
|||||||
assert(self.debugPrint("setInput1Event(event=%s)"%(event,)))
|
assert(self.debugPrint("setInput1Event(event=%s)"%(event,)))
|
||||||
if self.input1Event:
|
if self.input1Event:
|
||||||
self.ignore(self.input1Event)
|
self.ignore(self.input1Event)
|
||||||
self.input1Event = "switch-%s"%(event,)
|
self.input1Event = self.getOutputEventName(event)
|
||||||
if self.input1Event:
|
if self.input1Event:
|
||||||
self.accept(self.input1Event, self.setIsInput1)
|
self.accept(self.input1Event, self.setIsInput1)
|
||||||
|
|
||||||
@ -134,7 +134,7 @@ class LogicGate(Entity.Entity, PandaObject.PandaObject):
|
|||||||
assert(self.debugPrint("setInput2Event(event=%s)"%(event,)))
|
assert(self.debugPrint("setInput2Event(event=%s)"%(event,)))
|
||||||
if self.input2Event:
|
if self.input2Event:
|
||||||
self.ignore(self.input2Event)
|
self.ignore(self.input2Event)
|
||||||
self.input2Event = "switch-%s"%(event,)
|
self.input2Event = self.getOutputEventName(event)
|
||||||
if self.input2Event:
|
if self.input2Event:
|
||||||
self.accept(self.input2Event, self.setIsInput2)
|
self.accept(self.input2Event, self.setIsInput2)
|
||||||
|
|
||||||
|
@ -10,10 +10,13 @@ class VisibilityExtender(Entity.Entity):
|
|||||||
def initVisExt(self):
|
def initVisExt(self):
|
||||||
self.extended = 0
|
self.extended = 0
|
||||||
self.zoneEntId = self.getZoneEntId()
|
self.zoneEntId = self.getZoneEntId()
|
||||||
self.eventName = 'switch-%s' % self.event
|
self.eventName = None
|
||||||
|
if self.event is not None:
|
||||||
|
self.eventName = self.getOutputEventName(self.event)
|
||||||
self.accept(self.eventName, self.handleEvent)
|
self.accept(self.eventName, self.handleEvent)
|
||||||
|
|
||||||
def destroyVisExt(self):
|
def destroyVisExt(self):
|
||||||
|
if self.eventName is not None:
|
||||||
self.ignore(self.eventName)
|
self.ignore(self.eventName)
|
||||||
if self.extended:
|
if self.extended:
|
||||||
self.retract()
|
self.retract()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user