def tick(self, time_elapsed): for obj in tuple(self.all_objects()): obj.tick(time_elapsed) if (xisinstance(obj, Asteroid)): if (obj.shot): # _info = { 'destructible' : False, 'destroys_player' : False, 'target' : False } vec_dir = (self.ship.shape.position - obj.shape.position).normalizing().scalar(50.) bullet_pos = obj.shape.position shape_bull = Shape(0.01, bullet_pos) shape_bull.velocity = vec_dir # #(self, model, shape, element, lvl, duration, damage) obj_sh = SimpleShootInvasor(self.models['InvasorSimpleGun'][0], shape_bull, _info, self, 20, 5) self.add_object(obj_sh) # obj.shot = False self.wrap_ship() self.update_mouse_spin(time_elapsed) self.camera.tick(time_elapsed) if (self.has_skybox): self.update_skybox(time_elapsed) self.check_collisions(time_elapsed) self.time -= time_elapsed
def single_shoot(self): d = self.pos.get_mod() ship_rot = self.ship.rotation bullet_pos = self.ship.shape.position + (ship_rot * self.pos).scalar(d) shape = Shape(0.01, bullet_pos) v_sz = self.shoot_velocity_sz + self.ship.shape.velocity.get_mod() shape.velocity = self.ship.ship_dir.normalizing().scalar(v_sz) obj = SimpleShoot(self.model, shape, SimpleGun._info, self.level, self.duration, self.damage) self.level.add_object(obj)
def single_shoot(self): d = self.pos.get_mod() ship_rot = self.ship.rotation bullet_pos = self.ship.shape.position + (ship_rot * self.pos).scalar(d) shape = Shape(0.01, bullet_pos) v_sz = self.shoot_velocity_sz + self.ship.shape.velocity.get_mod() shape.velocity = self.ship.ship_dir.normalizing().scalar(v_sz) obj = SimpleShoot(self.model, shape, SimpleGun._info, self.level, self.duration, self.damage ) self.level.add_object(obj)
def tick(self, time_elapsed): Object.tick(self, time_elapsed) self.elapsed += time_elapsed if (self.elapsed >= self.time_interval_shot): self.elapsed = 0. _info = { 'destructible' : False, 'destroys_player' : False, 'target' : False } vec_dir = (self.level.ship.shape.position - self.shape.position - self.gun_pos).normalizing().scalar(70.) bullet_pos = self.shape.position + self.gun_pos shape_bull = Shape(0.01, bullet_pos) shape_bull.velocity = vec_dir # #(self, model, shape, element, lvl, duration, damage) obj_sh = SimpleShootInvasor(self.level.models['InvasorSimpleGun'][0], shape_bull, _info, self.level, 20, 5) self.level.add_object(obj_sh) #
def tick(self, time_elapsed): Object.tick(self, time_elapsed) self.elapsed += time_elapsed if (self.elapsed >= self.time_interval_shot): self.elapsed = 0. _info = { 'destructible': False, 'destroys_player': False, 'target': False } vec_dir = (self.level.ship.shape.position - self.shape.position - self.gun_pos).normalizing().scalar(70.) bullet_pos = self.shape.position + self.gun_pos shape_bull = Shape(0.01, bullet_pos) shape_bull.velocity = vec_dir # #(self, model, shape, element, lvl, duration, damage) obj_sh = SimpleShootInvasor( self.level.models['InvasorSimpleGun'][0], shape_bull, _info, self.level, 20, 5) self.level.add_object(obj_sh)
def tick(self, time_elapsed): for obj in tuple(self.all_objects()): obj.tick(time_elapsed) if (xisinstance(obj, Asteroid)): if (obj.shot): # _info = { 'destructible': False, 'destroys_player': False, 'target': False } vec_dir = (self.ship.shape.position - obj.shape.position).normalizing().scalar(50.) bullet_pos = obj.shape.position shape_bull = Shape(0.01, bullet_pos) shape_bull.velocity = vec_dir # #(self, model, shape, element, lvl, duration, damage) obj_sh = SimpleShootInvasor( self.models['InvasorSimpleGun'][0], shape_bull, _info, self, 20, 5) self.add_object(obj_sh) # obj.shot = False self.wrap_ship() self.update_mouse_spin(time_elapsed) self.camera.tick(time_elapsed) if (self.has_skybox): self.update_skybox(time_elapsed) self.check_collisions(time_elapsed) self.time -= time_elapsed
def make_spaceship(self, lvl, models): pos = None for obj in self.portals: if (obj.type == 'start'): pos = obj.shape.position break shape = Shape(lvl['ship']['mass'], pos) model, element = self.models[lvl['ship']['model']] self.ship = SpaceShip(model, shape, element, self) self.camera = Camera(self.ship, lvl['ship']['camera-dist']) self.add_object(self.ship)
def single_shoot(self): if (self.num_rockets > 0): self.num_rockets -= 1 else: return d = self.pos.get_mod() ship_rot = self.ship.rotation ship_pos = self.ship.shape.position bullet_pos = ship_pos + (ship_rot * self.pos).scalar(d) shape = Shape(0.01, bullet_pos) v_sz = self.ship.shape.velocity.get_mod() + self.initial_velocity shape.velocity = self.ship.ship_dir.normalizing().scalar(v_sz) shape.velocity_angular_x = uniform(-280.,280.) shape.velocity_angular_y = uniform(-280.,280.) shape.velocity_angular_z = uniform(-280.,280.) target_obj = None min_dist = 1073741824 for obj in chain(self.level.planets, self.level.asteroids): if (not obj.target): continue pos = obj.shape.position d = dot_distance(ship_pos, pos) if (d < min_dist): min_dist = d target_obj = obj if (target_obj is None): self.num_rockets += 1 return obj = Missile(self.model, shape, SimpleMissile._info, self.level, self.damage, target_obj, self.attraction_vel ) self.level.add_object(obj) return obj
def load_file(self, level_name): lvl = yaml.load(open('resources/levels/' + level_name + '.lvl')) self.title = lvl['name'] self.dimensions = lvl['scene']['dimensions'] self.time = float(lvl['time']) * 60 #models = {} for element in lvl['elements']: file = open('resources/models/' + element['model']['file'], 'r') name = element['name'] subtitle = element['subtitle'] translate = element['model'].get('translate', (0., 0., 0.)) rotate = element['model'].get('rotate', (0., 0., 0.)) scale = element['model'].get('scale', 1.) rc = element['model'].get('radius_correction', 0.) gl_model = GLModel(file, translate, rotate, scale, rc) self.models[name] = (gl_model, element) file.close() self.dimensions = Vector3d(*lvl['scene']['dimensions']) type_class = { 'planet': Planet, 'asteroid': Asteroid, 'start_portal': Portal, 'end_portal': Portal, 'enemyship': EnemyShip } id_table = {} obj_set = set() for object in lvl['scene']['objects']: element_name = object['element'] shape = None model, element = self.models[element_name] mass = float(object['mass']) rvel = object['rotation_velocity'] movement = object['movement']['type'] if (movement == 'static'): pos = Vector3d(*object['pos']) shape = Shape(mass, pos) elif (movement == 'orbit'): center_id = object['movement']['center_planet_id'] center_obj = id_table[center_id] center_pos = Vector3d(*center_obj.shape.position) shape = Shape(mass, center_pos) shape.rotation_radius = object['movement']['radius'] shape.rot_vel_xy = object['movement']['rot_velocity_xy'] shape.rot_vel_z = object['movement']['rot_velocity_z'] shape.rot_xy = object['movement']['rot_xy'] shape.rot_z = object['movement']['rot_z'] elif (movement == 'dynamic'): pos = Vector3d(*object['pos']) shape = Shape(mass, pos) shape.velocity = Vector3d(*object['movement']['velocity']) shape.velocity_angular_x = rvel[0] shape.velocity_angular_y = rvel[1] shape.velocity_angular_z = rvel[2] type = element['type'] _object = type_class[type](model, shape, element) if (type == 'asteroid'): _object.asteroid_type = object['movement']['asteroid_type'] elif (type == 'enemyship'): _object.level = self _object.gun_pos = Vector3d(*object['gun_position']) obj_set.add(_object) if ('id' in object): id_table[object['id']] = _object for obj in obj_set: self.add_object(obj) Player.get_instance().beginning_level(self) self.make_spaceship(lvl, self.models) self.make_guns(self.models)
from physics.vector3d import Vector3d from physics.shape import Shape sh = Shape(10.0) sh.forces.append(Vector3d(1., 2., 3.)) #sh.forces_res.append(0.5) sh.calculate_aceleration() print sh.aceleration.x
def load_file(self, level_name): lvl = yaml.load(open('resources/levels/' + level_name + '.lvl')) self.title = lvl['name'] self.dimensions = lvl['scene']['dimensions'] self.time = float(lvl['time']) * 60 #models = {} for element in lvl['elements']: file = open('resources/models/'+element['model']['file'], 'r') name = element['name'] subtitle = element['subtitle'] translate = element['model'].get('translate', (0.,0.,0.)) rotate = element['model'].get('rotate', (0.,0.,0.)) scale = element['model'].get('scale', 1.) rc = element['model'].get('radius_correction', 0.) gl_model = GLModel(file, translate, rotate, scale, rc) self.models[name] = (gl_model, element) file.close() self.dimensions = Vector3d(*lvl['scene']['dimensions']) type_class = { 'planet' : Planet, 'asteroid' : Asteroid, 'start_portal' : Portal, 'end_portal' : Portal, 'enemyship' : EnemyShip } id_table = { } obj_set = set() for object in lvl['scene']['objects']: element_name = object['element'] shape = None model, element = self.models[element_name] mass = float(object['mass']) rvel = object['rotation_velocity'] movement = object['movement']['type'] if (movement == 'static'): pos = Vector3d(*object['pos']) shape = Shape(mass, pos) elif (movement == 'orbit'): center_id = object['movement']['center_planet_id'] center_obj = id_table[center_id] center_pos = Vector3d(*center_obj.shape.position) shape = Shape(mass, center_pos) shape.rotation_radius = object['movement']['radius'] shape.rot_vel_xy = object['movement']['rot_velocity_xy'] shape.rot_vel_z = object['movement']['rot_velocity_z'] shape.rot_xy = object['movement']['rot_xy'] shape.rot_z = object['movement']['rot_z'] elif (movement == 'dynamic'): pos = Vector3d(*object['pos']) shape = Shape(mass, pos) shape.velocity = Vector3d(*object['movement']['velocity']) shape.velocity_angular_x = rvel[0] shape.velocity_angular_y = rvel[1] shape.velocity_angular_z = rvel[2] type = element['type'] _object = type_class[type](model, shape, element) if ( type == 'asteroid' ): _object.asteroid_type = object['movement']['asteroid_type'] elif ( type == 'enemyship' ): _object.level = self _object.gun_pos = Vector3d(*object['gun_position']) obj_set.add(_object) if ('id' in object): id_table[object['id']] = _object for obj in obj_set: self.add_object(obj) Player.get_instance().beginning_level(self) self.make_spaceship(lvl, self.models) self.make_guns(self.models)