def __init__(self, uid: str, width, height, world_width: int, world_height: int, start_pos): super().__init__(uid, width, height) keyl = runners.KeyListener() # adding pause button keyl.add_key(key=32, func=func.toggle_pause) # restart on F10 keyl.add_key(key=299, func=func.restart) self.add_runner(keyl) # self.keyl.addKey(key=264, func = checkWarp) main = Entity(tag='main') #main.camera = camera.OrthoCamera(world_width=world_width * vars.tile_size, # world_height=world_height * vars.tile_size, # cam_width=width, cam_height=height, viewport=[0, 0, width, height], # tag='maincam') main.camera = camera.PerspectiveCamera(viewport=[0, 0, width, height], tag='maincam') main.camera.pos = (0, 1, 0) self.main = main self.add(main) # create the collision engine ce = runners.CollisionEngine(85, 85) self.add_runner(ce) self.add_runner(runners.Scheduler()) self.dw = runners.DynamicWorld(256, 256, 'maincam') self.add_runner(self.dw) diag = Entity(tag='diag') diag.camera = camera.OrthoCamera(world_width=width, world_height=height, cam_width=width, cam_height=height, viewport=[0, 0, width, height], tag='diagcam') fps_count = Text('main', 8, '0', [255, 255, 255, 255], align=TextAlignment.top_left, tag='fps', pos=(0, 256, 2)) fps_count.add_component(comp.FPSCounter()) diag.add(fps_count) self.add(diag) e = Entity() e.add_component(Road()) e.add_component(comp.KeyInput()) main.add(e)
def create_observer(self): """Create and configure the special "observer" object (which is just a camera). Needed for deictic relations as well as several other aspects requiring the POV concept, e.g., taking screenshots. """ lamp = bpy.data.lights.new(name="Lamp", type='POINT') lamp.energy = 30 if bpy.data.objects.get("Lamp") is not None: lamp_obj = bpy.data.objects["Lamp"] else: lamp_obj = bpy.data.objects.new("Lamp", lamp) bpy.context.collection.objects.link(lamp_obj) cam = bpy.data.cameras.new("Camera") if bpy.data.objects.get("Camera") is not None: cam_ob = bpy.data.objects["Camera"] else: cam_ob = bpy.data.objects.new("Camera", cam) bpy.context.collection.objects.link(cam_ob) #lamp_obj.location = (-20, 0, 10) #cam_ob.location = (-15.5, 0, 7) lamp_obj.location = (0, -20, 10) cam_ob.location = (0, -9, 3) cam_ob.rotation_mode = 'XYZ' cam_ob.rotation_euler = (1.1, 0, -1.57) bpy.data.cameras['Camera'].lens = 20 bpy.context.scene.camera = self.scene.objects["Camera"] if bpy.data.objects.get("Observer") is None: mesh = bpy.data.meshes.new("Observer") bm = bmesh.new() bm.verts.new(cam_ob.location) bm.to_mesh(mesh) observer = bpy.data.objects.new("Observer", mesh) bpy.context.collection.objects.link(observer) #self.scene.objects.link(observer) bm.free() #self.scene.update() else: observer = bpy.data.objects["Observer"] dg = bpy.context.evaluated_depsgraph_get() dg.update() observer_entity = Entity(observer) observer_entity.camera = cam_ob observer_entity.location = np.array(cam_ob.location) observer_entity.up = np.array([0, 1, 3]) observer_entity.right = np.array([1, 0, 0]) observer_entity.set_frontal(observer_entity.location) return observer_entity
def get_observer(): lamp = bpy.data.lamps.new("Lamp", type = 'POINT') lamp.energy = 30 cam = bpy.data.cameras.new("Camera") if bpy.data.objects.get("Lamp") is not None: lamp_obj = bpy.data.objects["Lamp"] else: lamp_obj = bpy.data.objects.new("Lamp", lamp) scene.objects.link(lamp_obj) if bpy.data.objects.get("Camera") is not None: cam_ob = bpy.data.objects["Camera"] else: cam_ob = bpy.data.objects.new("Camera", cam) scene.objects.link(cam_ob) lamp_obj.location = (-20, 0, 10) cam_ob.location = (-15.5, 0, 7) cam_ob.rotation_mode = 'XYZ' cam_ob.rotation_euler = (1.1, 0, -1.57) bpy.data.cameras['Camera'].lens = 20 bpy.context.scene.camera = scene.objects["Camera"] if bpy.data.objects.get("Observer") is None: mesh = bpy.data.meshes.new("Observer") bm = bmesh.new() bm.verts.new(cam_ob.location) bm.to_mesh(mesh) observer = bpy.data.objects.new("Observer", mesh) scene.objects.link(observer) bm.free() scene.update() else: observer = bpy.data.objects["Observer"] observer_entity = Entity(observer) observer_entity.camera = cam_ob return observer_entity
def __init__(self, uid: str, width, height, world_width: int, world_height: int, start_pos): super().__init__(uid, width, height) keyl = runners.KeyListener() # adding pause button keyl.add_key(key=32, func=func.toggle_pause) # restart on F10 keyl.add_key(key=299, func=func.restart) self.add_runner(keyl) # self.keyl.addKey(key=264, func = checkWarp) main = Entity(tag='main') main.camera = camera.OrthoCamera( world_width=world_width * vars.tile_size, world_height=world_height * vars.tile_size, cam_width=width, cam_height=height, viewport=[0, 0, width, height], tag='maincam') self.main = main self.add(main) # create the collision engine ce = runners.CollisionEngine(80, 80) ce.add_response( vars.tags.player, vars.tags.brick_sensor, runners.CollisionResponse(on_enter=func.brick_response)) ce.add_response( vars.tags.player, vars.tags.bonus_brick_sensor, runners.CollisionResponse(on_enter=func.bonus_brick_response)) ce.add_response( vars.tags.player, vars.tags.mushroom, runners.CollisionResponse(on_enter=func.mushroom_response)) ce.add_response( vars.tags.player, vars.tags.warp, runners.CollisionResponse(on_enter=func.on_warp_enter, on_leave=func.on_warp_exit)) ce.add_response( vars.tags.player, vars.tags.hotspot, runners.CollisionResponse(on_enter=func.on_hotspot_enter)) ce.add_response(vars.tags.player, vars.tags.coin, runners.CollisionResponse(on_enter=func.coin_response)) ce.add_response( vars.tags.player, vars.tags.goomba, runners.CollisionResponse(on_enter=func.goomba_response)) ce.add_response( vars.tags.player, vars.tags.koopa, runners.CollisionResponse(on_enter=func.koopa_response)) ce.add_response( vars.tags.player, vars.tags.plant, runners.CollisionResponse(on_enter=func.plant_response)) ce.add_response(vars.tags.player, vars.tags.spawn, runners.CollisionResponse(on_enter=func.on_spawn)) ce.add_response( vars.tags.player, vars.tags.key, runners.CollisionResponse(on_enter=func.on_collect_item)) ce.add_response( vars.tags.player, vars.tags.generic_hotspot, runners.CollisionResponse(on_enter=func.on_enter_hotspot, on_leave=func.on_leave_hotspot)) ce.add_response(vars.tags.goomba, vars.tags.player_fire, runners.CollisionResponse(on_enter=func.fire_hits_foe)) self.add_runner(ce) self.add_runner(runners.Scheduler()) self.dw = runners.DynamicWorld(256, 256, 'maincam') self.add_runner(self.dw) diag = Entity(tag='diag') diag.camera = camera.OrthoCamera(world_width=width, world_height=height, cam_width=width, cam_height=height, viewport=[0, 0, width, height], tag='diagcam') diag.add( Text('main', 8, monkey.engine.read('$mario'), [255, 255, 255, 255], TextAlignment.top_left, pos=(24, 248, 2))) diag.add( Text('main', 8, '{:06d}'.format(vars.score), [255, 255, 255, 255], TextAlignment.top_left, tag='score_label', pos=(24, 240, 2))) diag.add( Text('main', 8, monkey.engine.read('$world'), [255, 255, 255, 255], TextAlignment.top_left, pos=(144, 248, 2))) diag.add( Text('main', 8, uid, [255, 255, 255, 255], TextAlignment.top, pos=(164, 240, 2))) diag.add( Text('main', 8, monkey.engine.read('$time'), [255, 255, 255, 255], TextAlignment.top_right, pos=(232, 248, 2))) diag.add( Text('main', 8, str(vars.time), [255, 255, 255, 255], TextAlignment.top_right, tag='score_label', pos=(232, 240, 2))) diag.add(Sprite(model='sprites/01/coin_counter', pos=(96, 232, 2))) diag.add(Text('main', 8, 'x', [255, 255, 255, 255], pos=(108, 240, 2))) diag.add( Text('main', 8, '{:02d}'.format(vars.coins), [255, 255, 255, 255], TextAlignment.top_left, tag='coin_label', pos=(116, 240, 2))) fps_count = Text('main', 8, '0', [255, 255, 255, 255], align=TextAlignment.top_left, tag='fps', pos=(0, 256, 2)) fps_count.add_component(comp.FPSCounter()) diag.add(fps_count) self.add(diag) # add player mario = monkey.engine.get_item_factory('player')()(start_pos[0], start_pos[1], 0) #mario = build.makePlayer(vars.stateInfo[vars.state], startPos[0], startPos[1]) main.add(mario)
def __init__(self, uid: str, world_bounds): super().__init__(uid, 384, 224) #width = #height = 240 device_width = monkey.engine.device_size[0] device_height = monkey.engine.device_size[1] keyl = runners.KeyListener() # adding pause button #keyl.add_key(key=32, func=func.toggle_pause) # restart on F10 keyl.add_key(key=299, func=func.restart) self.add_runner(keyl) main = Entity(tag='main') cam = camera.Camera25(5216, 736, device_width, device_height, [0, 0, device_width, device_height]) #cam = camera.PerspectiveCamera(viewport=[0, 0, 320, 240]) cam.tag = 'maincam' cam.pos = (5, 0, 1) #cam.bounds = world_bounds #cam.boundsz = [-100, 22] main.camera = cam self.main = main self.add(main) ce = runners.CollisionEngine3D(80, 80, 80) # this will be a 3d engine ce.add_response( vars.tags.player, vars.tags.ladder, runners.CollisionResponse(on_enter=func.on_enter_ladder_area, on_leave=func.on_leave_ladder_area)) ce.add_response(vars.tags.player, vars.tags.spawn, runners.CollisionResponse(on_enter=func.spawn)) #ce.add_response(vars.tags.foe_attack, vars.tags.player, runners.CollisionResponse(on_enter=func.foe_hits_player)) ce.add_response( vars.tags.player_attack, vars.tags.foe, runners.CollisionResponse(on_enter=func.player_hits_foe)) ce.add_response( vars.tags.foe_attack, vars.tags.player, runners.CollisionResponse(on_enter=func.foe_hits_player)) # ce.add_response(vars.tags.player, vars.tags.foe, runners.CollisionResponse(on_enter=func.stomp_enemy)) # ce.add_response(vars.tags.player, vars.tags.bonus, runners.CollisionResponse(on_enter=func.collect_bonus)) # ce.add_response(vars.tags.player_attack, vars.tags.foe, runners.CollisionResponse(on_enter=func.player_hits_foe)) # ce.add_response(vars.tags.player_attack, vars.tags.platform_destructible, runners.CollisionResponse(on_enter=func.player_hits_block)) # ce.add_response(vars.tags.gib, vars.tags.platform, runners.CollisionResponse(on_enter=func.gib_lands)) # ce.add_response(vars.tags.gib, vars.tags.platform_destructible, runners.CollisionResponse(on_enter=func.gib_lands)) # # ce.add_response(vars.tags.fire, vars.tags.foe, runners.CollisionResponse(on_enter=func.fire_hits_foe)) # ce.add_response(vars.tags.crusher, vars.tags.player, runners.CollisionResponse(on_enter=func.on_crusher_hit)) self.add_runner(ce) self.add_runner(runners.Scheduler()) diag = Entity(tag='diag') fsize = 8 pad = 3 * fsize w = 320 h = 240 diag.camera = camera.OrthoCamera(world_width=w, world_height=h, cam_width=w, cam_height=h, viewport=[0, 0, w, h], tag='diagcam') #diag.add(Text('main', fsize, monkey.engine.read('$energy'), [255, 255, 255, 255], TextAlignment.top_left, pos=(pad, h-fsize, 2))) #diag.add(Text('main', fsize, str(vars.energy), [255, 255, 255, 255], TextAlignment.top_left, tag='energy_label', pos=(pad, h-fsize*2, 2))) # diag.add(Text('main', fsize, monkey.engine.read('$world'), [255, 255, 255, 255], TextAlignment.top_left, pos=(fsize*10, height-fsize, 2))) # diag.add(Text('main', fsize, uid, [255, 255, 255, 255], TextAlignment.top_left, pos=(fsize*10, height-2*fsize, 2))) #diag.add(Text('main', fsize, monkey.engine.read('$height'), [255, 255, 255, 255], TextAlignment.top_right, pos=(width-pad, height-fsize, 2))) #diag.add(Text('main', fsize, str(vars.height), [255, 255, 255, 255], TextAlignment.top_right, tag='height_label', pos=(width-pad, height-fsize*2, 2))) # fps_count = Text('main', fsize, '0', [255, 255, 255, 255], align=TextAlignment.top_left, tag='fps', pos=(0, height, 2)) # fps_count.add_component(comp.FPSCounter()) # diag.add(fps_count) self.add(diag)