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
|
||||
|
||||
|
||||
# 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):
|
||||
assert(self.debugPrint("andTest(a=%s, b=%s)"%(a, b)))
|
||||
if b:
|
||||
@ -21,6 +49,21 @@ 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)])
|
||||
|
||||
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):
|
||||
if __debug__:
|
||||
@ -30,6 +73,9 @@ class LogicGateAI(Entity.Entity, PandaObject.PandaObject):
|
||||
"and": andTest,
|
||||
"or": orTest,
|
||||
"xor": xorTest,
|
||||
"nand": nandTest,
|
||||
"nor": norTest,
|
||||
"xnor": xnorTest,
|
||||
}
|
||||
|
||||
def __init__(self, air, levelDoId, entId, zoneId=None):
|
||||
|
Loading…
x
Reference in New Issue
Block a user