def render_stats(world): egi.text_color((1.0, 1.0, 1.0, 1)) depthy = -40 if not world.inputgroup == 0: if world.inputgroup == 1: egi.text_at_pos(10, depthy, '(Q/W) Game Scale = ' + str(Agent.floatScale)) egi.text_at_pos(10, depthy - 20, '(E/R) Max Speed = ' + str(Agent.max_speed)) egi.text_at_pos(10, depthy - 40, '(A/S) Max Force = ' + str(Agent.max_force)) egi.text_at_pos(10, depthy - 60, '(D/F) Mass = ' + str(Agent.mass)) egi.text_at_pos(10, depthy - 80, '(Z/X) Friction = ' + str(Agent.friction)) egi.text_at_pos(10, depthy - 100, '(C/V) Panic Distance = ' + str(Agent.panicDist)) elif world.inputgroup == 2: egi.text_at_pos( 10, depthy, '(Q/W) Waypoint Threshold = ' + str(Agent.waypoint_threshold)) egi.text_at_pos(10, depthy - 20, '(A) Waypoint Loop = ' + str(Agent.loop)) egi.text_at_pos(10, depthy - 40, '(S) Randomize Path') elif world.inputgroup == 3: egi.text_at_pos( 10, depthy, '(Q/W) Wander Distance = ' + str(Agent.wander_dist)) egi.text_at_pos( 10, depthy - 20, '(E/R) Wander radius = ' + str(Agent.wander_radius)) egi.text_at_pos( 10, depthy - 40, '(A/S) Wander jitter = ' + str(Agent.wander_jitter)) elif world.inputgroup == 4: egi.text_at_pos(10, depthy, '(Q/W) Cohesion Weight = ' + str(Agent.cohesive)) egi.text_at_pos( 10, depthy - 20, '(E/R) Seperation Weight = ' + str(Agent.seperated)) egi.text_at_pos(10, depthy - 40, '(A/S) Alightnment Weight = ' + str(Agent.aligned)) egi.text_at_pos(10, depthy - 60, '(D/F) Wander Weight = ' + str(Agent.GroupWander)) egi.text_at_pos( 10, depthy - 80, '(Z/X) Cohesive Range = ' + str(Agent.cohesiveRange)) egi.text_at_pos( 10, depthy - 100, '(C/V) Seperation Range = ' + str(Agent.seperationRange)) egi.text_at_pos( 10, depthy - 120, '(T/G) Alignment Range = ' + str(Agent.alignmentRange)) if not world.inputgroup == 5: egi.text_at_pos(10, depthy - 150, '(Y) Show agent info') egi.text_at_pos(10, depthy - 170, '(P) Pause') egi.text_at_pos(10, depthy - 190, '(O) Next frame (while paused)') egi.text_at_pos(10, depthy - 230, '(J) Add Agent') egi.text_at_pos(10, depthy - 250, '(K) Add 10 Agents') if not world.inputgroup == 5: egi.text_at_pos(10, depthy - 210, '(H) Flick through menu')
def __init__(self, filename, **kwargs): kwargs.update({ 'width': 500, 'height': 500, 'vsync':True, 'resizable':True, }) super(BoxWorldWindow, self).__init__(**kwargs) # create a pyglet window and set glOptions glEnable(GL_BLEND) glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) # needed so that graphs.egi knows where to draw egi.InitWithPyglet(self) egi.text_color(name='BLACK') glClearColor(0.9, 0.9, 0.9, 1.0) # Grey #create a world for graph searching #filename = kwargs['filename'] #"boxworld2.txt" #filename = 'map2.txt' self.world = BoxWorld.FromFile(filename, self.get_size()) self.world.reset_navgraph() if not self.world.items_and_points_done: self.world.items_and_points() # prep the fps display and some labels self.fps_display = None # clock.ClockDisplay() clBlack = (0,0,0, 255) self.labels = { 'mouse': Label('', x=5, y=self.height-20, color=clBlack), 'search': Label('', x=120, y=self.height-20, color=clBlack), 'status': Label('', x=300, y=self.height-20, color=clBlack), } self._update_label() # add the extra event handlers we need self.add_handers() # search limit self.limit = 0 # unlimited. self.agent = False
def __init__(self, filename, **kwargs): kwargs.update({ 'width': 500, 'height': 500, 'vsync':True, 'resizable':True, }) super(BoxWorldWindow, self).__init__(**kwargs) # create a pyglet window and set glOptions glEnable(GL_BLEND) glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) # needed so that graphs.egi knows where to draw egi.InitWithPyglet(self) egi.text_color(name='BLACK') glClearColor(0.9, 0.9, 0.9, 1.0) # Grey #create a world for graph searching #filename = kwargs['filename'] #"boxworld2.txt" #filename = 'map2.txt' self.world = BoxWorld.FromFile(filename, self.get_size()) self.world.reset_navgraph() # prep the fps display and some labels self.fps_display = None # clock.ClockDisplay() clBlack = (0,0,0, 255) self.labels = { 'mouse': Label('', x=5, y=self.height-20, color=clBlack), 'search': Label('', x=120, y=self.height-20, color=clBlack), 'status': Label('', x=300, y=self.height-20, color=clBlack), } self._update_label() # add the extra event handlers we need self.add_handers() # search limit self.limit = 0 # unlimited. clock.schedule_interval(self.world.update, 1.0/20.0)
def drawInfo(self): if not self.showInfo: return # Formatting lineHeight = 24 offset = (33, 30) # Loop through and draw each prop i = 0 for key, props in self.info.iteritems(): # draw the key egi.text_color(name='GREY') egi.text_at_pos(offset[0] + 0, (offset[1] + i * lineHeight), key) # draw the label egi.text_color(name='WHITE') if('enabled' in props and props['enabled']): egi.text_color(name='GREEN') egi.text_at_pos(offset[0] + 50, (offset[1] + i * lineHeight), props['label']) i += 1