From db3e6216e51d37f59de78e256b92987366220d06 Mon Sep 17 00:00:00 2001 From: David Rose Date: Mon, 14 Apr 2003 18:27:26 +0000 Subject: [PATCH] don't convert to floating-point unless necessary --- direct/src/extensions/Datagram-extensions.py | 153 ++++++++++++------- 1 file changed, 101 insertions(+), 52 deletions(-) diff --git a/direct/src/extensions/Datagram-extensions.py b/direct/src/extensions/Datagram-extensions.py index 7ab7d9c1d3..24c9a63d62 100644 --- a/direct/src/extensions/Datagram-extensions.py +++ b/direct/src/extensions/Datagram-extensions.py @@ -2,59 +2,108 @@ def putArg(self, arg, subatomicType, divisor=1): # Import the type numbers import DCSubatomicType - if subatomicType == DCSubatomicType.STInt8: - self.addInt8(int(round(arg*divisor))) - elif subatomicType == DCSubatomicType.STInt16: - self.addInt16(int(round(arg*divisor))) - elif subatomicType == DCSubatomicType.STInt32: - self.addInt32(int(round(arg*divisor))) - elif subatomicType == DCSubatomicType.STInt64: - self.addInt64(int(round(arg*divisor))) - elif subatomicType == DCSubatomicType.STUint8: - self.addUint8(int(round(arg*divisor))) - elif subatomicType == DCSubatomicType.STUint16: - self.addUint16(int(round(arg*divisor))) - elif subatomicType == DCSubatomicType.STUint32: - self.addUint32(int(round(arg*divisor))) - elif subatomicType == DCSubatomicType.STUint64: - self.addUint64(int(round(arg*divisor))) - elif subatomicType == DCSubatomicType.STFloat64: - self.addFloat64(arg) - elif subatomicType == DCSubatomicType.STString: - self.addString(arg) - elif subatomicType == DCSubatomicType.STBlob: - self.addString(arg) - elif subatomicType == DCSubatomicType.STInt8array: - self.addUint16(len(arg)) - for i in arg: - self.addInt8(int(round(i*divisor))) - elif subatomicType == DCSubatomicType.STInt16array: - self.addUint16(len(arg) << 1) - for i in arg: - self.addInt16(int(round(i*divisor))) - elif subatomicType == DCSubatomicType.STInt32array: - self.addUint16(len(arg) << 2) - for i in arg: - self.addInt32(int(round(i*divisor))) - elif subatomicType == DCSubatomicType.STUint8array: - self.addUint16(len(arg)) - for i in arg: - self.addUint8(int(round(i*divisor))) - elif subatomicType == DCSubatomicType.STUint16array: - self.addUint16(len(arg) << 1) - for i in arg: - self.addUint16(int(round(i*divisor))) - elif subatomicType == DCSubatomicType.STUint32array: - self.addUint16(len(arg) << 2) - for i in arg: - self.addUint32(int(round(i*divisor))) - elif subatomicType == DCSubatomicType.STUint32uint8array: - self.addUint16(len(arg) * 5) - for i in arg: - self.addUint32(int(round(i[0]*divisor))) - self.addUint8(int(round(i[1]*divisor))) + if (divisor == 1): + if subatomicType == DCSubatomicType.STInt8: + self.addInt8(arg) + elif subatomicType == DCSubatomicType.STInt16: + self.addInt16(arg) + elif subatomicType == DCSubatomicType.STInt32: + self.addInt32(arg) + elif subatomicType == DCSubatomicType.STInt64: + self.addInt64(arg) + elif subatomicType == DCSubatomicType.STUint8: + self.addUint8(arg) + elif subatomicType == DCSubatomicType.STUint16: + self.addUint16(arg) + elif subatomicType == DCSubatomicType.STUint32: + self.addUint32(arg) + elif subatomicType == DCSubatomicType.STUint64: + self.addUint64(arg) + elif subatomicType == DCSubatomicType.STFloat64: + self.addFloat64(arg) + elif subatomicType == DCSubatomicType.STString: + self.addString(arg) + elif subatomicType == DCSubatomicType.STBlob: + self.addString(arg) + elif subatomicType == DCSubatomicType.STInt8array: + self.addUint16(len(arg)) + for i in arg: + self.addInt8(i) + elif subatomicType == DCSubatomicType.STInt16array: + self.addUint16(len(arg) << 1) + for i in arg: + self.addInt16(i) + elif subatomicType == DCSubatomicType.STInt32array: + self.addUint16(len(arg) << 2) + for i in arg: + self.addInt32(i) + elif subatomicType == DCSubatomicType.STUint8array: + self.addUint16(len(arg)) + for i in arg: + self.addUint8(i) + elif subatomicType == DCSubatomicType.STUint16array: + self.addUint16(len(arg) << 1) + for i in arg: + self.addUint16(i) + elif subatomicType == DCSubatomicType.STUint32array: + self.addUint16(len(arg) << 2) + for i in arg: + self.addUint32(i) + elif subatomicType == DCSubatomicType.STUint32uint8array: + self.addUint16(len(arg) * 5) + for i in arg: + self.addUint32(i[0]) + self.addUint8(i[1]) + else: + raise Exception("Error: No such type as: " + str(subatomicType)) else: - raise Exception("Error: No such type as: " + str(subatomicType)) + if subatomicType == DCSubatomicType.STInt8: + self.addInt8(int(round(arg*divisor))) + elif subatomicType == DCSubatomicType.STInt16: + self.addInt16(int(round(arg*divisor))) + elif subatomicType == DCSubatomicType.STInt32: + self.addInt32(int(round(arg*divisor))) + elif subatomicType == DCSubatomicType.STInt64: + self.addInt64(int(round(arg*divisor))) + elif subatomicType == DCSubatomicType.STUint8: + self.addUint8(int(round(arg*divisor))) + elif subatomicType == DCSubatomicType.STUint16: + self.addUint16(int(round(arg*divisor))) + elif subatomicType == DCSubatomicType.STUint32: + self.addUint32(int(round(arg*divisor))) + elif subatomicType == DCSubatomicType.STUint64: + self.addUint64(int(round(arg*divisor))) + elif subatomicType == DCSubatomicType.STInt8array: + self.addUint16(len(arg)) + for i in arg: + self.addInt8(int(round(i*divisor))) + elif subatomicType == DCSubatomicType.STInt16array: + self.addUint16(len(arg) << 1) + for i in arg: + self.addInt16(int(round(i*divisor))) + elif subatomicType == DCSubatomicType.STInt32array: + self.addUint16(len(arg) << 2) + for i in arg: + self.addInt32(int(round(i*divisor))) + elif subatomicType == DCSubatomicType.STUint8array: + self.addUint16(len(arg)) + for i in arg: + self.addUint8(int(round(i*divisor))) + elif subatomicType == DCSubatomicType.STUint16array: + self.addUint16(len(arg) << 1) + for i in arg: + self.addUint16(int(round(i*divisor))) + elif subatomicType == DCSubatomicType.STUint32array: + self.addUint16(len(arg) << 2) + for i in arg: + self.addUint32(int(round(i*divisor))) + elif subatomicType == DCSubatomicType.STUint32uint8array: + self.addUint16(len(arg) * 5) + for i in arg: + self.addUint32(int(round(i[0]*divisor))) + self.addUint8(int(round(i[1]*divisor))) + else: + raise Exception("Error: type does not accept divisor: " + str(subatomicType)) return None