def __init__(self, event_handler, world, screen, mouse, spinner, keyboard): self.event_handler = event_handler self.world = world self.screen = screen self.mouse = mouse self.spinner = spinner self.keyboard = keyboard self.steering_entities = [] self.entity_list = [ self.world.add_entity((100, 100), (100, 0)) for i in xrange(1) ] [ self.screen.add_entity(entity, trace=False, shape='s', color='b', size=5) for entity in self.entity_list ] [ self.world.apply_relative_force(entity, pi / 2, 100) for entity in self.entity_list ] from Controller.Cameras import FollowCamera self.camera = FollowCamera(screen, world) self.camera.set_target(self.entity_list[0]) # Seek entites are green self.AddSteeringEntity(SteerForPursuit, 'g') arrive_id = self.AddSteeringEntity(SteerForArrive, color=[0, 255, 150]) self.steering_entities[arrive_id].set_slowing_distance(100.0) #Evade entities are red evade_id = self.AddSteeringEntity(SteerForEvasion, 'r') self.steering_entities[evade_id].set_safe_distance(5.0) flee_id = self.AddSteeringEntity(SteerForFlee, 'r') self.steering_entities[flee_id].set_safe_distance(10.0) #Track entites are Yellow yellow = (255, 255, 1) track_id = self.AddSteeringEntity(SteerForTrack, yellow) offset_id = self.AddSteeringEntity(SteerForOffset, yellow) self.steering_entities[offset_id].set_offset(100.0) #Left click ends app event_handler.bind(self.on_mouse_left_up, mouse.MOUSE_BTN3_UP) # Debug information event_handler.bind(self.on_toggle_id, keyboard.register_event_type('i', 'UP')) for listener_obj in [ self.mouse, self.world, self.screen, self.keyboard, self.camera ]: event_handler.bind(listener_obj.on_update, self.spinner.TICK)
def __init__(self, event_handler, world, screen, mouse, spinner, keyboard): self.event_handler = event_handler self.world = world self.screen = screen self.mouse = mouse self.spinner = spinner self.keyboard = keyboard self.steering_entities = [] self.entity_list = [] # Add circling entity v = (50.0, 0) self.entity_list.append(self.world.add_entity((300, 300), v)) self.screen.add_entity(self.entity_list[0], trace=False, shape='s', color='b', size=5) f = 20.0 w = f / 50.0 self.world.apply_relative_force(self.entity_list[0], pi / 2, f) self.world.set_angspeed(self.entity_list[0], w) # Seek entity mc_entity = self.AddSteeringEntity(SteerForMC, 'g', (-10, 0)) self.steering_entities[mc_entity].set_gain(160) # Not working # mch_entity = self.AddSteeringEntity(SteerForMCHeading,'r',(-10,0)) # self.steering_entities[mch_entity].set_gain(160) # Camera from Controller.Cameras import FollowCamera self.camera = FollowCamera(screen, world) self.camera.set_target(self.entity_list[0]) # self.camera.set_target(self.steering_entities[1].entity_id) #Left click ends app event_handler.bind(self.on_mouse_left_up, mouse.MOUSE_BTN3_UP) # Space pauses event_handler.bind(self.on_pause, keyboard.register_event_type('Space', 'UP')) # Debug information event_handler.bind(self.on_toggle_id, keyboard.register_event_type('i', 'UP')) # Drag and Drop self.grabbed = None event_handler.bind(self.on_mouse_down, mouse.MOUSE_BTN1_DOWN) event_handler.bind(self.on_mouse_up, mouse.MOUSE_BTN1_UP) event_handler.bind(self.on_mouse_move, mouse.MOUSE_MOVE) for listener_obj in \ [self.mouse, self.world, self.screen, self.keyboard, self.camera]: event_handler.bind(listener_obj.on_update, self.spinner.TICK)
def __init__(self, event_handler, world, screen, mouse, spinner, keyboard): self.event_handler=event_handler self.world=world self.screen=screen self.mouse=mouse self.spinner=spinner self.keyboard=keyboard self.steering_entities=set() self.entities=list() #self.add_in_square(SteerForFlock) self.AddSteeringEntity(SteerForFlock,number=10,color='g') self.AddSteeringEntity(SteerForFlock,number=6,color='r') PJ=self.entities[0] #Creates camera from Controller.Cameras import FollowCamera self.camera=FollowCamera(screen, world) self.camera.set_target(PJ) #Shows target from Controller.Labelers import ConstantLabel label=ConstantLabel(world, screen, PJ, color=(255,0,0)) label.set_text("Target") self.label=label #Left click ends app event_handler.bind(self.on_mouse_left_up, mouse.MOUSE_BTN3_UP) for listener_obj in [self.mouse, self.keyboard, self.world, label, self.screen,self.camera]: event_handler.bind(listener_obj.on_update, self.spinner.TICK) self.text_entity_id=screen.add_text_entity("Flocking app (with follow cam!)", (0,0), size=20, color=(200,200,200))
def __init__(self, event_handler, world, screen, mouse, spinner, keyboard): self.event_handler=event_handler self.world=world self.screen=screen self.mouse=mouse self.spinner=spinner self.keyboard=keyboard self.steering_entities=[] self.entity_list=[] # Add circling entity v=(50.0,0) self.entity_list.append(self.world.add_entity((300,300),v)) self.screen.add_entity(self.entity_list[0], trace=False,shape='s',color='b',size=5) f=20.0 w=f/50.0 self.world.apply_relative_force(self.entity_list[0], pi/2, f) self.world.set_angspeed(self.entity_list[0], w) # Seek entity mc_entity = self.AddSteeringEntity(SteerForMC,'g',(-10,0)) self.steering_entities[mc_entity].set_gain(160) # Not working # mch_entity = self.AddSteeringEntity(SteerForMCHeading,'r',(-10,0)) # self.steering_entities[mch_entity].set_gain(160) # Camera from Controller.Cameras import FollowCamera self.camera = FollowCamera(screen, world) self.camera.set_target(self.entity_list[0]) # self.camera.set_target(self.steering_entities[1].entity_id) #Left click ends app event_handler.bind(self.on_mouse_left_up, mouse.MOUSE_BTN3_UP) # Space pauses event_handler.bind(self.on_pause, keyboard.register_event_type('Space', 'UP')) # Debug information event_handler.bind(self.on_toggle_id, keyboard.register_event_type('i', 'UP')) # Drag and Drop self.grabbed=None event_handler.bind(self.on_mouse_down, mouse.MOUSE_BTN1_DOWN) event_handler.bind(self.on_mouse_up, mouse.MOUSE_BTN1_UP) event_handler.bind(self.on_mouse_move, mouse.MOUSE_MOVE) for listener_obj in \ [self.mouse, self.world, self.screen, self.keyboard, self.camera]: event_handler.bind(listener_obj.on_update, self.spinner.TICK)
def __init__(self, event_handler, world, screen, mouse, spinner, keyboard): self.event_handler = event_handler self.world = world self.screen = screen self.mouse = mouse self.spinner = spinner self.keyboard = keyboard self.steering_entities = set() self.entities = list() #self.add_in_square(SteerForFlock) self.AddSteeringEntity(SteerForFlock, number=10, color='g') self.AddSteeringEntity(SteerForFlock, number=6, color='r') PJ = self.entities[0] #Creates camera from Controller.Cameras import FollowCamera self.camera = FollowCamera(screen, world) self.camera.set_target(PJ) #Shows target from Controller.Labelers import ConstantLabel label = ConstantLabel(world, screen, PJ, color=(255, 0, 0)) label.set_text("Target") self.label = label #Left click ends app event_handler.bind(self.on_mouse_left_up, mouse.MOUSE_BTN3_UP) for listener_obj in [ self.mouse, self.keyboard, self.world, label, self.screen, self.camera ]: event_handler.bind(listener_obj.on_update, self.spinner.TICK) self.text_entity_id = screen.add_text_entity( "Flocking app (with follow cam!)", (0, 0), size=20, color=(200, 200, 200))
def __init__(self, event_handler, world, screen, mouse, spinner, keyboard): self.event_handler=event_handler self.world=world self.screen=screen self.mouse=mouse self.spinner=spinner self.keyboard=keyboard self.steering_entities=[] self.entity_list=[self.world.add_entity((100,100),(100, 0)) for i in xrange(1)] [self.screen.add_entity(entity, trace=False,shape='s',color='b',size=5) for entity in self.entity_list] [self.world.apply_relative_force(entity, pi/2, 100) for entity in self.entity_list] from Controller.Cameras import FollowCamera self.camera = FollowCamera(screen, world) self.camera.set_target(self.entity_list[0]) # Seek entites are green self.AddSteeringEntity(SteerForPursuit,'g') arrive_id = self.AddSteeringEntity(SteerForArrive,color=[0,255,150]) self.steering_entities[arrive_id].set_slowing_distance(100.0) #Evade entities are red evade_id = self.AddSteeringEntity(SteerForEvasion,'r') self.steering_entities[evade_id].set_safe_distance(5.0) flee_id = self.AddSteeringEntity(SteerForFlee,'r') self.steering_entities[flee_id].set_safe_distance(10.0) #Track entites are Yellow yellow=(255,255,1) track_id=self.AddSteeringEntity(SteerForTrack,yellow) offset_id = self.AddSteeringEntity(SteerForOffset,yellow) self.steering_entities[offset_id].set_offset(100.0) #Left click ends app event_handler.bind(self.on_mouse_left_up, mouse.MOUSE_BTN3_UP) # Debug information event_handler.bind(self.on_toggle_id, keyboard.register_event_type('i', 'UP')) for listener_obj in [self.mouse, self.world, self.screen, self.keyboard, self.camera]: event_handler.bind(listener_obj.on_update, self.spinner.TICK)
class FlockTestApp(): def __init__(self, event_handler, world, screen, mouse, spinner, keyboard): self.event_handler=event_handler self.world=world self.screen=screen self.mouse=mouse self.spinner=spinner self.keyboard=keyboard self.steering_entities=set() self.entities=list() #self.add_in_square(SteerForFlock) self.AddSteeringEntity(SteerForFlock,number=10,color='g') self.AddSteeringEntity(SteerForFlock,number=6,color='r') PJ=self.entities[0] #Creates camera from Controller.Cameras import FollowCamera self.camera=FollowCamera(screen, world) self.camera.set_target(PJ) #Shows target from Controller.Labelers import ConstantLabel label=ConstantLabel(world, screen, PJ, color=(255,0,0)) label.set_text("Target") self.label=label #Left click ends app event_handler.bind(self.on_mouse_left_up, mouse.MOUSE_BTN3_UP) for listener_obj in [self.mouse, self.keyboard, self.world, label, self.screen,self.camera]: event_handler.bind(listener_obj.on_update, self.spinner.TICK) self.text_entity_id=screen.add_text_entity("Flocking app (with follow cam!)", (0,0), size=20, color=(200,200,200)) def AddSteeringEntity(self, Behavior,number=1,color='r'): #Create and apply Seeking Behavior controller to entity for i in xrange(1,number,1): pos=round((rnd.uniform(0,640),rnd.uniform(0,480))) vel=round((rnd.uniform(-100,100),rnd.uniform(-0,0))) seeking_entity=self.world.add_entity(pos,vel) self.world.set_neighbour_sensor(seeking_entity, 500,pi) self.screen.add_entity(seeking_entity, trace=False,size=5,color=color, shape='s') flock=Behavior(self.world, seeking_entity) self.steering_entities.add(flock) self.event_handler.bind(flock.update, self.spinner.TICK) self.entities.append(seeking_entity) def add_in_square(self, Behavior, color='r', shape='s'): side=50.0 for pos in [(side,side),(2*side,side),(side,2*side),(2*side,2*side)]: seeking_entity=self.world.add_entity(pos,(100.0,100.0)) self.world.set_neighbour_sensor(seeking_entity,500,pi) self.screen.add_entity(seeking_entity, trace=False,size=8,color=color, shape=shape) flock=Behavior(self.world, seeking_entity) self.steering_entities.add(flock) self.event_handler.bind(flock.update, self.spinner.TICK) def run(self): self.spinner.run() def on_mouse_left_up(self, event): self.spinner.stop()
class PursuitTestApp(): def __init__(self, event_handler, world, screen, mouse, spinner, keyboard): self.event_handler=event_handler self.world=world self.screen=screen self.mouse=mouse self.spinner=spinner self.keyboard=keyboard self.steering_entities=[] self.entity_list=[self.world.add_entity((100,100),(100, 0)) for i in xrange(1)] [self.screen.add_entity(entity, trace=False,shape='s',color='b',size=5) for entity in self.entity_list] [self.world.apply_relative_force(entity, pi/2, 100) for entity in self.entity_list] from Controller.Cameras import FollowCamera self.camera = FollowCamera(screen, world) self.camera.set_target(self.entity_list[0]) # Seek entites are green self.AddSteeringEntity(SteerForPursuit,'g') arrive_id = self.AddSteeringEntity(SteerForArrive,color=[0,255,150]) self.steering_entities[arrive_id].set_slowing_distance(100.0) #Evade entities are red evade_id = self.AddSteeringEntity(SteerForEvasion,'r') self.steering_entities[evade_id].set_safe_distance(5.0) flee_id = self.AddSteeringEntity(SteerForFlee,'r') self.steering_entities[flee_id].set_safe_distance(10.0) #Track entites are Yellow yellow=(255,255,1) track_id=self.AddSteeringEntity(SteerForTrack,yellow) offset_id = self.AddSteeringEntity(SteerForOffset,yellow) self.steering_entities[offset_id].set_offset(100.0) #Left click ends app event_handler.bind(self.on_mouse_left_up, mouse.MOUSE_BTN3_UP) # Debug information event_handler.bind(self.on_toggle_id, keyboard.register_event_type('i', 'UP')) for listener_obj in [self.mouse, self.world, self.screen, self.keyboard, self.camera]: event_handler.bind(listener_obj.on_update, self.spinner.TICK) def AddSteeringEntity(self, Behavior,color='r',vel=(0.0,0.0,)): spinner=self.spinner #Create and apply Seeking Behavior controller to entity seeking_entity=self.world.add_entity((200,200),vel) self.screen.add_entity(seeking_entity, trace=False,size=3,color=color) seek=Behavior(self.world, seeking_entity) seek.target_entity(self.entity_list[0]) self.steering_entities.append(seek) self.event_handler.bind(seek.update, spinner.TICK) return len(self.steering_entities)-1 def run(self): self.spinner.run() def on_mouse_left_up(self, event): self.spinner.stop() def on_toggle_id(self, event): try: showing_id=self.showing_id=not self.showing_id except AttributeError: showing_id=self.showing_id=True if showing_id: from Controller.Labelers import DynamicLabel self.labels=set() def pretty_rep(entity_id): return str(self.world.get_entity(entity_id).total_force) for entity in self.steering_entities: ent_id=entity.get_slave_id() label=DynamicLabel(self.world,self.screen,ent_id, color=(255,255,255)) label.set_getter_callback(pretty_rep) self.labels.add(label) label.set_text(str(ent_id)) self.event_handler.bind(label.update, self.spinner.TICK) else: del self.labels
class FlockTestApp(): def __init__(self, event_handler, world, screen, mouse, spinner, keyboard): self.event_handler = event_handler self.world = world self.screen = screen self.mouse = mouse self.spinner = spinner self.keyboard = keyboard self.steering_entities = set() self.entities = list() #self.add_in_square(SteerForFlock) self.AddSteeringEntity(SteerForFlock, number=10, color='g') self.AddSteeringEntity(SteerForFlock, number=6, color='r') PJ = self.entities[0] #Creates camera from Controller.Cameras import FollowCamera self.camera = FollowCamera(screen, world) self.camera.set_target(PJ) #Shows target from Controller.Labelers import ConstantLabel label = ConstantLabel(world, screen, PJ, color=(255, 0, 0)) label.set_text("Target") self.label = label #Left click ends app event_handler.bind(self.on_mouse_left_up, mouse.MOUSE_BTN3_UP) for listener_obj in [ self.mouse, self.keyboard, self.world, label, self.screen, self.camera ]: event_handler.bind(listener_obj.on_update, self.spinner.TICK) self.text_entity_id = screen.add_text_entity( "Flocking app (with follow cam!)", (0, 0), size=20, color=(200, 200, 200)) def AddSteeringEntity(self, Behavior, number=1, color='r'): #Create and apply Seeking Behavior controller to entity for i in xrange(1, number, 1): pos = round((rnd.uniform(0, 640), rnd.uniform(0, 480))) vel = round((rnd.uniform(-100, 100), rnd.uniform(-0, 0))) seeking_entity = self.world.add_entity(pos, vel) self.world.set_neighbour_sensor(seeking_entity, 500, pi) self.screen.add_entity(seeking_entity, trace=False, size=5, color=color, shape='s') flock = Behavior(self.world, seeking_entity) self.steering_entities.add(flock) self.event_handler.bind(flock.update, self.spinner.TICK) self.entities.append(seeking_entity) def add_in_square(self, Behavior, color='r', shape='s'): side = 50.0 for pos in [(side, side), (2 * side, side), (side, 2 * side), (2 * side, 2 * side)]: seeking_entity = self.world.add_entity(pos, (100.0, 100.0)) self.world.set_neighbour_sensor(seeking_entity, 500, pi) self.screen.add_entity(seeking_entity, trace=False, size=8, color=color, shape=shape) flock = Behavior(self.world, seeking_entity) self.steering_entities.add(flock) self.event_handler.bind(flock.update, self.spinner.TICK) def run(self): self.spinner.run() def on_mouse_left_up(self, event): self.spinner.stop()
class PursuitTestApp(): def __init__(self, event_handler, world, screen, mouse, spinner, keyboard): self.event_handler = event_handler self.world = world self.screen = screen self.mouse = mouse self.spinner = spinner self.keyboard = keyboard self.steering_entities = [] self.entity_list = [ self.world.add_entity((100, 100), (100, 0)) for i in xrange(1) ] [ self.screen.add_entity(entity, trace=False, shape='s', color='b', size=5) for entity in self.entity_list ] [ self.world.apply_relative_force(entity, pi / 2, 100) for entity in self.entity_list ] from Controller.Cameras import FollowCamera self.camera = FollowCamera(screen, world) self.camera.set_target(self.entity_list[0]) # Seek entites are green self.AddSteeringEntity(SteerForPursuit, 'g') arrive_id = self.AddSteeringEntity(SteerForArrive, color=[0, 255, 150]) self.steering_entities[arrive_id].set_slowing_distance(100.0) #Evade entities are red evade_id = self.AddSteeringEntity(SteerForEvasion, 'r') self.steering_entities[evade_id].set_safe_distance(5.0) flee_id = self.AddSteeringEntity(SteerForFlee, 'r') self.steering_entities[flee_id].set_safe_distance(10.0) #Track entites are Yellow yellow = (255, 255, 1) track_id = self.AddSteeringEntity(SteerForTrack, yellow) offset_id = self.AddSteeringEntity(SteerForOffset, yellow) self.steering_entities[offset_id].set_offset(100.0) #Left click ends app event_handler.bind(self.on_mouse_left_up, mouse.MOUSE_BTN3_UP) # Debug information event_handler.bind(self.on_toggle_id, keyboard.register_event_type('i', 'UP')) for listener_obj in [ self.mouse, self.world, self.screen, self.keyboard, self.camera ]: event_handler.bind(listener_obj.on_update, self.spinner.TICK) def AddSteeringEntity(self, Behavior, color='r', vel=( 0.0, 0.0, )): spinner = self.spinner #Create and apply Seeking Behavior controller to entity seeking_entity = self.world.add_entity((200, 200), vel) self.screen.add_entity(seeking_entity, trace=False, size=3, color=color) seek = Behavior(self.world, seeking_entity) seek.target_entity(self.entity_list[0]) self.steering_entities.append(seek) self.event_handler.bind(seek.update, spinner.TICK) return len(self.steering_entities) - 1 def run(self): self.spinner.run() def on_mouse_left_up(self, event): self.spinner.stop() def on_toggle_id(self, event): try: showing_id = self.showing_id = not self.showing_id except AttributeError: showing_id = self.showing_id = True if showing_id: from Controller.Labelers import DynamicLabel self.labels = set() def pretty_rep(entity_id): return str(self.world.get_entity(entity_id).total_force) for entity in self.steering_entities: ent_id = entity.get_slave_id() label = DynamicLabel(self.world, self.screen, ent_id, color=(255, 255, 255)) label.set_getter_callback(pretty_rep) self.labels.add(label) label.set_text(str(ent_id)) self.event_handler.bind(label.update, self.spinner.TICK) else: del self.labels
class MCTestApp(): def __init__(self, event_handler, world, screen, mouse, spinner, keyboard): self.event_handler = event_handler self.world = world self.screen = screen self.mouse = mouse self.spinner = spinner self.keyboard = keyboard self.steering_entities = [] self.entity_list = [] # Add circling entity v = (50.0, 0) self.entity_list.append(self.world.add_entity((300, 300), v)) self.screen.add_entity(self.entity_list[0], trace=False, shape='s', color='b', size=5) f = 20.0 w = f / 50.0 self.world.apply_relative_force(self.entity_list[0], pi / 2, f) self.world.set_angspeed(self.entity_list[0], w) # Seek entity mc_entity = self.AddSteeringEntity(SteerForMC, 'g', (-10, 0)) self.steering_entities[mc_entity].set_gain(160) # Not working # mch_entity = self.AddSteeringEntity(SteerForMCHeading,'r',(-10,0)) # self.steering_entities[mch_entity].set_gain(160) # Camera from Controller.Cameras import FollowCamera self.camera = FollowCamera(screen, world) self.camera.set_target(self.entity_list[0]) # self.camera.set_target(self.steering_entities[1].entity_id) #Left click ends app event_handler.bind(self.on_mouse_left_up, mouse.MOUSE_BTN3_UP) # Space pauses event_handler.bind(self.on_pause, keyboard.register_event_type('Space', 'UP')) # Debug information event_handler.bind(self.on_toggle_id, keyboard.register_event_type('i', 'UP')) # Drag and Drop self.grabbed = None event_handler.bind(self.on_mouse_down, mouse.MOUSE_BTN1_DOWN) event_handler.bind(self.on_mouse_up, mouse.MOUSE_BTN1_UP) event_handler.bind(self.on_mouse_move, mouse.MOUSE_MOVE) for listener_obj in \ [self.mouse, self.world, self.screen, self.keyboard, self.camera]: event_handler.bind(listener_obj.on_update, self.spinner.TICK) ########## # Seeking Entities Methods def AddSteeringEntity(self, Behavior, color='r', vel=( 0.0, 0.0, )): spinner = self.spinner #Create and apply Seeking Behavior controller to entity seeking_entity = self.world.add_entity((0, 0), vel) self.screen.add_entity(seeking_entity, trace=False, size=3, color=color) seek = Behavior(self.world, seeking_entity) seek.target_entity(self.entity_list[0]) self.steering_entities.append(seek) self.event_handler.bind(seek.update, spinner.TICK) return len(self.steering_entities) - 1 ############# # User events methods # Drag and Drop def on_mouse_down(self, event): entity = self.screen.get_entity_at(event['Pos']) if entity != None: self.grabbed = entity.id self.world.grab_entity(entity.id) def on_mouse_up(self, event): if self.grabbed != None: self.world.drop_entity(self.grabbed) self.grabbed = None def on_mouse_move(self, event): if self.grabbed != None: self.world.move_entity( self.grabbed, self.screen.get_world_position(event['Pos'])) def on_pause(self, event): self.spinner.pause() def on_mouse_left_up(self, event): self.spinner.stop() def on_toggle_id(self, event): try: showing_id = self.showing_id = not self.showing_id except AttributeError: showing_id = self.showing_id = True if showing_id: from Controller.Labelers import DynamicLabel self.labels = set() def pretty_rep(entity_id): return str(self.world.get_entity(entity_id).total_force) for entity in self.steering_entities: ent_id = entity.get_slave_id() label = DynamicLabel(self.world, self.screen, ent_id, color=(255, 255, 255)) label.set_getter_callback(pretty_rep) self.labels.add(label) label.set_text(str(ent_id)) self.event_handler.bind(label.update, self.spinner.TICK) else: del self.labels ######### def run(self): self.spinner.run()
class MCTestApp(): def __init__(self, event_handler, world, screen, mouse, spinner, keyboard): self.event_handler=event_handler self.world=world self.screen=screen self.mouse=mouse self.spinner=spinner self.keyboard=keyboard self.steering_entities=[] self.entity_list=[] # Add circling entity v=(50.0,0) self.entity_list.append(self.world.add_entity((300,300),v)) self.screen.add_entity(self.entity_list[0], trace=False,shape='s',color='b',size=5) f=20.0 w=f/50.0 self.world.apply_relative_force(self.entity_list[0], pi/2, f) self.world.set_angspeed(self.entity_list[0], w) # Seek entity mc_entity = self.AddSteeringEntity(SteerForMC,'g',(-10,0)) self.steering_entities[mc_entity].set_gain(160) # Not working # mch_entity = self.AddSteeringEntity(SteerForMCHeading,'r',(-10,0)) # self.steering_entities[mch_entity].set_gain(160) # Camera from Controller.Cameras import FollowCamera self.camera = FollowCamera(screen, world) self.camera.set_target(self.entity_list[0]) # self.camera.set_target(self.steering_entities[1].entity_id) #Left click ends app event_handler.bind(self.on_mouse_left_up, mouse.MOUSE_BTN3_UP) # Space pauses event_handler.bind(self.on_pause, keyboard.register_event_type('Space', 'UP')) # Debug information event_handler.bind(self.on_toggle_id, keyboard.register_event_type('i', 'UP')) # Drag and Drop self.grabbed=None event_handler.bind(self.on_mouse_down, mouse.MOUSE_BTN1_DOWN) event_handler.bind(self.on_mouse_up, mouse.MOUSE_BTN1_UP) event_handler.bind(self.on_mouse_move, mouse.MOUSE_MOVE) for listener_obj in \ [self.mouse, self.world, self.screen, self.keyboard, self.camera]: event_handler.bind(listener_obj.on_update, self.spinner.TICK) ########## # Seeking Entities Methods def AddSteeringEntity(self, Behavior,color='r',vel=(0.0,0.0,)): spinner=self.spinner #Create and apply Seeking Behavior controller to entity seeking_entity=self.world.add_entity((0,0),vel) self.screen.add_entity(seeking_entity, trace=False,size=3,color=color) seek=Behavior(self.world, seeking_entity) seek.target_entity(self.entity_list[0]) self.steering_entities.append(seek) self.event_handler.bind(seek.update, spinner.TICK) return len(self.steering_entities)-1 ############# # User events methods # Drag and Drop def on_mouse_down(self, event): entity=self.screen.get_entity_at(event['Pos']) if entity!=None: self.grabbed=entity.id self.world.grab_entity(entity.id) def on_mouse_up(self, event): if self.grabbed!=None: self.world.drop_entity(self.grabbed) self.grabbed=None def on_mouse_move(self, event): if self.grabbed!=None: self.world.move_entity(self.grabbed, self.screen.get_world_position(event['Pos'])) def on_pause(self, event): self.spinner.pause() def on_mouse_left_up(self, event): self.spinner.stop() def on_toggle_id(self, event): try: showing_id=self.showing_id=not self.showing_id except AttributeError: showing_id=self.showing_id=True if showing_id: from Controller.Labelers import DynamicLabel self.labels=set() def pretty_rep(entity_id): return str(self.world.get_entity(entity_id).total_force) for entity in self.steering_entities: ent_id=entity.get_slave_id() label=DynamicLabel(self.world,self.screen,ent_id, color=(255,255,255)) label.set_getter_callback(pretty_rep) self.labels.add(label) label.set_text(str(ent_id)) self.event_handler.bind(label.update, self.spinner.TICK) else: del self.labels ######### def run(self): self.spinner.run()