mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-04 10:54:24 -04:00
added nand, nor, xnor
This commit is contained in:
parent
c8b423bfcc
commit
530ce8256f
@ -6,6 +6,34 @@ import DirectNotifyGlobal
|
|||||||
import Entity
|
import Entity
|
||||||
|
|
||||||
|
|
||||||
|
# Logic Gates:
|
||||||
|
#
|
||||||
|
# and: 0 0 = 0 or: 0 0 = 0 xor: 0 0 = 0
|
||||||
|
# 0 1 = 0 0 1 = 1 0 1 = 1
|
||||||
|
# 1 0 = 0 1 0 = 1 1 0 = 1
|
||||||
|
# 1 1 = 1 1 1 = 1 1 1 = 0
|
||||||
|
#
|
||||||
|
# nand: 0 0 = 1 nor: 0 0 = 1 xnor: 0 0 = 1
|
||||||
|
# 0 1 = 1 0 1 = 0 0 1 = 0
|
||||||
|
# 1 0 = 1 1 0 = 0 1 0 = 0
|
||||||
|
# 1 1 = 0 1 1 = 0 1 1 = 1
|
||||||
|
#
|
||||||
|
# In the following:
|
||||||
|
# 1: send a true message
|
||||||
|
# 0: send a false message
|
||||||
|
# -: don't send a message
|
||||||
|
#
|
||||||
|
# a b and or xor nand nor xnor
|
||||||
|
# (0 0) (0) (0) (0) (1) (1) (1) <--- initial state
|
||||||
|
# 1 0 - 1 1 - 0 0
|
||||||
|
# 0 0 - 0 0 - 1 1
|
||||||
|
# 1 0 - 1 1 - 0 0
|
||||||
|
# 1 1 1 - 0 0 - 1
|
||||||
|
# 0 1 0 - 1 1 - 0
|
||||||
|
# 1 1 1 - 0 0 - 1
|
||||||
|
# 0 1 0 - 1 1 - 0
|
||||||
|
# 0 0 - 0 0 - 1 1
|
||||||
|
|
||||||
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:
|
||||||
@ -21,6 +49,21 @@ 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.getName(), [(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)])
|
||||||
|
|
||||||
|
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)])
|
||||||
|
# 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))])
|
||||||
|
|
||||||
|
|
||||||
class LogicGateAI(Entity.Entity, PandaObject.PandaObject):
|
class LogicGateAI(Entity.Entity, PandaObject.PandaObject):
|
||||||
if __debug__:
|
if __debug__:
|
||||||
@ -30,6 +73,9 @@ class LogicGateAI(Entity.Entity, PandaObject.PandaObject):
|
|||||||
"and": andTest,
|
"and": andTest,
|
||||||
"or": orTest,
|
"or": orTest,
|
||||||
"xor": xorTest,
|
"xor": xorTest,
|
||||||
|
"nand": nandTest,
|
||||||
|
"nor": norTest,
|
||||||
|
"xnor": xnorTest,
|
||||||
}
|
}
|
||||||
|
|
||||||
def __init__(self, air, levelDoId, entId, zoneId=None):
|
def __init__(self, air, levelDoId, entId, zoneId=None):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user