###############################################################################
# utility
###############################################################################
-def truncate_zero(src):
- """
- 0x00以降を捨てる
- """
- pos = src.find(b"\x00")
- assert(type(src)==bytes)
- if pos >= 0:
- return src[:pos]
- else:
+if sys.version_info[0]<3:
+ def truncate_zero(src):
+ """
+ 0x00以降を捨てる
+ """
+ assert(type(src)==bytes)
+ pos = src.find(b"\x00")
+ if pos >= 0:
+ return src[:pos]
+ else:
+ return src
+else:
+ def truncate_zero(src):
+ """
+ 0x00以降を捨てる
+ """
+ assert(type(src)==bytes)
+ pos = src.find(b"\x00")
+ if pos >= 0:
+ return src[:pos].decode('cp932')
+ else:
+ return src.decode('cp932')
+
+
+if sys.version_info[0]<3:
+ def to_str(src):
+ t=type(src)
+ if t==unicode:
+ return src.encode('cp932')
+ elif t==str:
+ return src
+ else:
+ raise "INVALID str: %s" % t
+
+ def from_str(src):
return src
+else:
+ def to_str(src):
+ t=type(src)
+ if t==str:
+ return src
+ elif t==bytes:
+ return src.decode('cp932')
+ else:
+ raise "INVALID str: %s" % t
+
+ def from_str(src):
+ return src.encode('cp932')
+
+
def radian_to_degree(x):
return x/math.pi * 180.0
def to_tuple(self):
return (self.x, self.y, self.z)
+ def __add__(l, r):
+ return Vector3(l.x+r.x, l.y+r.y, l.z+r.z)
+
+
class Quaternion(object):
__slots__=['x', 'y', 'z', 'w']
def __init__(self, x=0, y=0, z=0, w=1):