瀏覽代碼

should round numbers before truncating to integer

David Rose 23 年之前
父節點
當前提交
fb284b821f
共有 1 個文件被更改,包括 16 次插入16 次删除
  1. 16 16
      direct/src/extensions/Datagram-extensions.py

+ 16 - 16
direct/src/extensions/Datagram-extensions.py

@@ -3,21 +3,21 @@
         # Import the type numbers
         import DCSubatomicType
         if subatomicType == DCSubatomicType.STInt8:
-            self.addInt8(int(arg*divisor))
+            self.addInt8(int(arg*divisor+0.5))
         elif subatomicType == DCSubatomicType.STInt16:
-            self.addInt16(int(arg*divisor))
+            self.addInt16(int(arg*divisor+0.5))
         elif subatomicType == DCSubatomicType.STInt32:
-            self.addInt32(int(arg*divisor))
+            self.addInt32(int(arg*divisor+0.5))
         elif subatomicType == DCSubatomicType.STInt64:
-            self.addInt64(int(arg*divisor))
+            self.addInt64(int(arg*divisor+0.5))
         elif subatomicType == DCSubatomicType.STUint8:
-            self.addUint8(int(arg*divisor))
+            self.addUint8(int(arg*divisor+0.5))
         elif subatomicType == DCSubatomicType.STUint16:
-            self.addUint16(int(arg*divisor))
+            self.addUint16(int(arg*divisor+0.5))
         elif subatomicType == DCSubatomicType.STUint32:
-            self.addUint32(int(arg*divisor))
+            self.addUint32(int(arg*divisor+0.5))
         elif subatomicType == DCSubatomicType.STUint64:
-            self.addUint64(int(arg*divisor))
+            self.addUint64(int(arg*divisor+0.5))
         elif subatomicType == DCSubatomicType.STFloat64:
             self.addFloat64(arg)
         elif subatomicType == DCSubatomicType.STString:
@@ -27,32 +27,32 @@
         elif subatomicType == DCSubatomicType.STInt8array:
             self.addUint16(len(arg))
             for i in arg:
-                self.addInt8(int(i*divisor))
+                self.addInt8(int(i*divisor+0.5))
         elif subatomicType == DCSubatomicType.STInt16array:
             self.addUint16(len(arg) << 1)
             for i in arg:
-                self.addInt16(int(i*divisor))
+                self.addInt16(int(i*divisor+0.5))
         elif subatomicType == DCSubatomicType.STInt32array:
             self.addUint16(len(arg) << 2)
             for i in arg:
-                self.addInt32(int(i*divisor))
+                self.addInt32(int(i*divisor+0.5))
         elif subatomicType == DCSubatomicType.STUint8array:
             self.addUint16(len(arg))
             for i in arg:
-                self.addUint8(int(i*divisor))
+                self.addUint8(int(i*divisor+0.5))
         elif subatomicType == DCSubatomicType.STUint16array:
             self.addUint16(len(arg) << 1)
             for i in arg:
-                self.addUint16(int(i*divisor))
+                self.addUint16(int(i*divisor+0.5))
         elif subatomicType == DCSubatomicType.STUint32array:
             self.addUint16(len(arg) << 2)
             for i in arg:
-                self.addUint32(int(i*divisor))
+                self.addUint32(int(i*divisor+0.5))
         elif subatomicType == DCSubatomicType.STUint32uint8array:
             self.addUint16(len(arg) * 5)
             for i in arg:
-                self.addUint32(int(i[0]*divisor))
-                self.addUint8(int(i[1]*divisor))
+                self.addUint32(int(i[0]*divisor+0.5))
+                self.addUint8(int(i[1]*divisor+0.5))
         else:
             raise Exception("Error: No such type as: " + str(subatomicType))
         return None