class Asteroids(PointExtractionMixin): def __init__(self, *args,**kwargs): self.ps = PointStream() self.ships = {} super(Asteroids, self).__init__(*args,**kwargs) def post_extract_points(self, frame): if self.points: print self.points for key, point in self.points.iteritems(): s = self.ships[key] s.x = point[0] s.y = point[1] def new_point(self, key, pt): s = Particle(pt[0], pt[1], r=CMAX/2, g=CMAX/4, b=CMAX/4) s.theta = 0.5 self.ships[key] = s self.ps.objects.append(s) def lost_point(self, key): s = self.ships[key] del self.ships[key] s.destroy = True def read(self, n): return [self.safe_pt(x,y) + (r,g,b) for x,y,r,g,b in self.ps.read(n)]
def __init__(self, *args,**kwargs): super(WaveStream, self).__init__(*args,**kwargs) self.ps = PointStream() self.wave = Wave(0,0, r=CMAX, g=CMAX, b=CMAX) self.wave.anchored = True self.wave.x_wave_scale = 200 #self.wave.step = 5000 self.ps.objects.append(self.wave) self.brightness_by_z = False self.wave_height_centered_by_z = False self.wave_height_by_z = True
# debug numButtons = joystick.get_numbuttons() print joystick.get_name() print joystick.get_numaxes() print numButtons def __str__(self): return self.js.get_name() """ THREADS """ ps = PointStream() DRAW = ps simulator = sim.SIM() def dac_thread(load_sim): global PLAYERS, DRAW while True: try: if load_sim == 0: d = dac.DAC(dac.find_first_dac()) d.play_stream(ps) else: simulator.play_stream(ps)
class WaveStream(PointExtractionMixin): def __init__(self, *args,**kwargs): super(WaveStream, self).__init__(*args,**kwargs) self.ps = PointStream() self.wave = Wave(0,0, r=CMAX, g=CMAX, b=CMAX) self.wave.anchored = True self.wave.x_wave_scale = 200 #self.wave.step = 5000 self.ps.objects.append(self.wave) self.brightness_by_z = False self.wave_height_centered_by_z = False self.wave_height_by_z = True def post_extract_points(self, frame): # if self.points: # print self.points # for key, point in self.points.iteritems(): # s = self.ships[key] # s.x = point[0] # s.y = point[1] self.wave.key_points = self.points.values() n_points = len(self.points_3d) if n_points: z_avg = sum([p[2] for p in self.points_3d.values()])/n_points z_avg_abs = abs(z_avg) z_avg_scaled = z_avg_abs / 150 # Distance form origin scale factor! if z_avg_scaled > 1.0: z_avg_scaled = 1.0 z_avg_scaled_centered = 1.0 - z_avg_scaled if self.brightness_by_z: _z_avg = CMAX * z_avg_scaled_centered #print z_avg self.wave.r = _z_avg self.wave.g = _z_avg self.wave.b = _z_avg if self.wave_height_centered_by_z: _z_avg1 = 2500 * z_avg_scaled_centered _z_avg1 += 300 #self.wave.y_wave_scale = int self.wave.x_wave_scale = int(_z_avg1) if self.wave_height_by_z: myz = z_avg + 200 if myz < 0: myz = 0 myz /= 400 myz *= 1000 myz + 100 self.wave.x_wave_scale = int(myz) self.wave.y_wave_scale = int(myz*4) def new_point(self, key, pt): pass def lost_point(self, key): pass def read(self, n): return [self.safe_pt(x,y) + (r,g,b) for x,y,r,g,b in self.ps.read(n)]
def __init__(self, *args,**kwargs): self.ps = PointStream() self.ships = {} super(Asteroids, self).__init__(*args,**kwargs)