mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-02 09:52:27 -04:00
*** empty log message ***
This commit is contained in:
parent
b5441ee6de
commit
eb199b3f47
@ -1,85 +1,78 @@
|
||||
"""ClientDistUpdate module: contains the ClientDistUpdate class"""
|
||||
|
||||
import DirectNotifyGlobal
|
||||
import Datagram
|
||||
from MsgTypes import *
|
||||
|
||||
class ClientDistUpdate:
|
||||
notify = DirectNotifyGlobal.directNotify.newCategory("ClientDistUpdate")
|
||||
|
||||
def __init__(self, cdc, dcField):
|
||||
self.cdc = cdc
|
||||
self.field = dcField
|
||||
self.number = dcField.getNumber()
|
||||
self.name = dcField.getName()
|
||||
self.types = []
|
||||
self.divisors = []
|
||||
self.deriveTypesFromParticle(dcField)
|
||||
# Figure out our function pointer
|
||||
exec("import " + cdc.name)
|
||||
try:
|
||||
self.func = eval(cdc.name + "." + cdc.name + "." + self.name)
|
||||
except:
|
||||
ClientDistUpdate.notify.warning(cdc.name + "." + self.name +
|
||||
" does not exist")
|
||||
self.func = None
|
||||
return None
|
||||
|
||||
def deriveTypesFromParticle(self, dcField):
|
||||
dcFieldAtomic = dcField.asAtomicField()
|
||||
dcFieldMolecular = dcField.asMolecularField()
|
||||
if dcFieldAtomic:
|
||||
for i in range(0, dcFieldAtomic.getNumElements()):
|
||||
self.types.append(dcFieldAtomic.getElementType(i))
|
||||
self.divisors.append(dcFieldAtomic.getElementDivisor(i))
|
||||
elif dcFieldMolecular:
|
||||
for i in range(0, dcFieldMolecular.getNumAtomics()):
|
||||
componentField = dcFieldMolecular.getAtomic(i)
|
||||
for j in range(0, componentField.getNumElements()):
|
||||
self.types.append(componentField.getElementType(j))
|
||||
self.divisors.append(componentField.getElementDivisor(j))
|
||||
else:
|
||||
ClientDistUpdate.notify.error("field is neither atom nor molecule")
|
||||
return None
|
||||
|
||||
def updateField(self, cdc, do, di):
|
||||
|
||||
#func = eval(cdc.name + "." + cdc.name + "." + self.name)
|
||||
#print("Calling: " + cdc.name + "." + cdc.name + "." + self.name +
|
||||
# " for do " + str(do.getDoId()))
|
||||
|
||||
# Get the arguments into a list
|
||||
args = self.extractArgs(di)
|
||||
|
||||
# Apply the function to the object with the arguments
|
||||
apply(self.func, [do] + args)
|
||||
|
||||
return None
|
||||
|
||||
def extractArgs(self, di):
|
||||
args = []
|
||||
assert(len(self.types) == len(self.divisors))
|
||||
numTypes = len(self.types)
|
||||
for i in range(numTypes):
|
||||
args.append(di.getArg(self.types[i], self.divisors[i]))
|
||||
return args
|
||||
|
||||
def addArgs(self, datagram, args):
|
||||
# Add the args to the datagram
|
||||
numElems = len(args)
|
||||
assert (numElems == len(self.types) == len(self.divisors))
|
||||
for i in range(0, numElems):
|
||||
datagram.putArg(args[i], self.types[i], self.divisors[i])
|
||||
|
||||
def sendUpdate(self, cr, do, args):
|
||||
datagram = Datagram.Datagram()
|
||||
# Add message type
|
||||
datagram.addUint16(CLIENT_OBJECT_UPDATE_FIELD)
|
||||
# Add the DO id
|
||||
datagram.addUint32(do.doId)
|
||||
# Add the field id
|
||||
datagram.addUint16(self.number)
|
||||
# Add the arguments
|
||||
self.addArgs(datagram, args)
|
||||
# send the datagram
|
||||
cr.send(datagram)
|
||||
"""ClientDistUpdate module: contains the ClientDistUpdate class"""
|
||||
|
||||
import DirectNotifyGlobal
|
||||
import Datagram
|
||||
from MsgTypes import *
|
||||
|
||||
class ClientDistUpdate:
|
||||
notify = DirectNotifyGlobal.directNotify.newCategory("ClientDistUpdate")
|
||||
|
||||
def __init__(self, cdc, dcField):
|
||||
self.cdc = cdc
|
||||
self.field = dcField
|
||||
self.number = dcField.getNumber()
|
||||
self.name = dcField.getName()
|
||||
self.types = []
|
||||
self.divisors = []
|
||||
self.deriveTypesFromParticle(dcField)
|
||||
# Figure out our function pointer
|
||||
exec("import " + cdc.name)
|
||||
try:
|
||||
self.func = eval(cdc.name + "." + cdc.name + "." + self.name)
|
||||
except:
|
||||
ClientDistUpdate.notify.warning(cdc.name + "." + self.name +
|
||||
" does not exist")
|
||||
self.func = None
|
||||
return None
|
||||
|
||||
def deriveTypesFromParticle(self, dcField):
|
||||
dcFieldAtomic = dcField.asAtomicField()
|
||||
dcFieldMolecular = dcField.asMolecularField()
|
||||
if dcFieldAtomic:
|
||||
for i in range(0, dcFieldAtomic.getNumElements()):
|
||||
self.types.append(dcFieldAtomic.getElementType(i))
|
||||
self.divisors.append(dcFieldAtomic.getElementDivisor(i))
|
||||
elif dcFieldMolecular:
|
||||
for i in range(0, dcFieldMolecular.getNumAtomics()):
|
||||
componentField = dcFieldMolecular.getAtomic(i)
|
||||
for j in range(0, componentField.getNumElements()):
|
||||
self.types.append(componentField.getElementType(j))
|
||||
self.divisors.append(componentField.getElementDivisor(j))
|
||||
else:
|
||||
ClientDistUpdate.notify.error("field is neither atom nor molecule")
|
||||
return None
|
||||
|
||||
def updateField(self, cdc, do, di):
|
||||
# Get the arguments into a list
|
||||
args = self.extractArgs(di)
|
||||
# Apply the function to the object with the arguments
|
||||
apply(self.func, [do] + args)
|
||||
return None
|
||||
|
||||
def extractArgs(self, di):
|
||||
args = []
|
||||
assert(len(self.types) == len(self.divisors))
|
||||
numTypes = len(self.types)
|
||||
for i in range(numTypes):
|
||||
args.append(di.getArg(self.types[i], self.divisors[i]))
|
||||
return args
|
||||
|
||||
def addArgs(self, datagram, args):
|
||||
# Add the args to the datagram
|
||||
numElems = len(args)
|
||||
assert (numElems == len(self.types) == len(self.divisors))
|
||||
for i in range(0, numElems):
|
||||
datagram.putArg(args[i], self.types[i], self.divisors[i])
|
||||
|
||||
def sendUpdate(self, cr, do, args):
|
||||
datagram = Datagram.Datagram()
|
||||
# Add message type
|
||||
datagram.addUint16(CLIENT_OBJECT_UPDATE_FIELD)
|
||||
# Add the DO id
|
||||
datagram.addUint32(do.doId)
|
||||
# Add the field id
|
||||
datagram.addUint16(self.number)
|
||||
# Add the arguments
|
||||
self.addArgs(datagram, args)
|
||||
# send the datagram
|
||||
cr.send(datagram)
|
||||
|
Loading…
x
Reference in New Issue
Block a user