#! /usr/bin/env python import sys, math class arginfo: def __init__(self): self.min_distance_for_angle = 1.0 self.min_distance = 12.0 self.decal_info = "32 1 @bc_dark32x32.png" args = arginfo() def convert(src, dst): n = 0 while True: s = src.readline() if s == "": return None if s[0] != "[": n = 0 continue s = s.replace("[", "") s = s.replace("]", "") v = s.split() x = float(v[0]) z = float(v[2]) speed = float(v[3]) if n == 0: n = 1 lx = x lz = z td = 0.0 continue dx = lx - x dz = lz - z d = math.sqrt(dx * dx + dz * dz) td = td + d if d < args.min_distance_for_angle: continue a = math.atan2(dx, dz) if n == 1 and speed >= 0: dst.write("[%f %f] %f %s\n" % (lx, lz, a, args.decal_info)) n = n + 1 lx = x lz = z if td < args.min_distance: continue td = 0.0 if speed >= 0: dst.write("[%f %f] %f %s\n" % (x, z, a, args.decal_info)) def parseargs(a): while len(a) > 0: s = a.pop(0) if s == "--distance": args.min_distance = float(a.pop(0)) elif s == "--angle-distance": args.min_distance_for_angle = float(a.pop(0)) elif s == "--decal": args.decal_info = a.pop(0) else: return "Invalid parameter" errormsg = parseargs(sys.argv[1:]) if errormsg: sys.stderr.write(errormsg + "\n") sys.exit(1) convert(sys.stdin, sys.stdout)