diff --git a/direct/src/extensions/Datagram-extensions.py b/direct/src/extensions/Datagram-extensions.py index 6cabc7e84e..68d9d0fa22 100644 --- a/direct/src/extensions/Datagram-extensions.py +++ b/direct/src/extensions/Datagram-extensions.py @@ -22,6 +22,24 @@ self.addFloat64(arg) elif subatomicType == STString: self.addString(arg) + elif subatomicType == STBlob: + self.addString(arg) + elif subatomicType == STInt16array: + self.addUint16(len(arg) << 1) + for i in arg: + self.addInt16(int(i*divisor)) + elif subatomicType == STInt32array: + self.addUint16(len(arg) << 2) + for i in arg: + self.addInt32(int(i*divisor)) + elif subatomicType == STUint16array: + self.addUint16(len(arg) << 1) + for i in arg: + self.addUint16(int(i*divisor)) + elif subatomicType == STUint32array: + self.addUint16(len(arg) << 2) + for i in arg: + self.addUint32(int(i*divisor)) else: raise Exception("Error: No such type as: " + subatomicType) return None diff --git a/direct/src/extensions/DatagramIterator-extensions.py b/direct/src/extensions/DatagramIterator-extensions.py index 6d998e8ae7..932f148f5e 100644 --- a/direct/src/extensions/DatagramIterator-extensions.py +++ b/direct/src/extensions/DatagramIterator-extensions.py @@ -24,6 +24,28 @@ retVal = self.getFloat64() elif subatomicType == STString: retVal = self.getString() + elif subatomicType == STBlob: + retVal = self.getString() + elif subatomicType == STInt16array: + len = self.getUint16() >> 1 + retVal = [] + for i in range(len): + retVal.append(self.getInt16()) + elif subatomicType == STInt32array: + len = self.getUint16() >> 2 + retVal = [] + for i in range(len): + retVal.append(self.getInt32()) + elif subatomicType == STUint16array: + len = self.getUint16() >> 1 + retVal = [] + for i in range(len): + retVal.append(self.getUint16()) + elif subatomicType == STUint32array: + len = self.getUint16() >> 2 + retVal = [] + for i in range(len): + retVal.append(self.getUint32()) else: raise Exception("Error: No such type as: " + str(subAtomicType)) else: @@ -48,11 +70,33 @@ retVal = self.getFloat64() elif subatomicType == STString: retVal = self.getString() + elif subatomicType == STBlob: + retVal = self.getString() + elif subatomicType == STInt16array: + len = self.getUint16() >> 1 + retVal = [] + for i in range(len): + retVal.append(self.getInt16()/float(divisor)) + elif subatomicType == STInt32array: + len = self.getUint16() >> 2 + retVal = [] + for i in range(len): + retVal.append(self.getInt32()/float(divisor)) + elif subatomicType == STUint16array: + len = self.getUint16() >> 1 + retVal = [] + for i in range(len): + retVal.append(self.getUint16()/float(divisor)) + elif subatomicType == STUint32array: + len = self.getUint16() >> 2 + retVal = [] + for i in range(len): + retVal.append(self.getUint32()/float(divisor)) else: raise Exception("Error: No such type as: " + str(subAtomicType)) - + return retVal - +