def track_entity(self, idx, enemy=True): read_game = self.env.read_game if not idx in self._tracked_ent: e = read_game.cod7_entity.arr[idx] te = EntityTracker(idx) te.startoflife = read_game.game_time te.set_values(e) te.enemy = enemy te.model_name = self.env.weapon_names.get_weapon_model(te.weapon_num) if e.type == ET_EXPLOSIVE: te.planter = self.find_nearest_player(te.pos) if e.type == ET_HELICOPTER or e.type == ET_PLANE: if DEBUG: print "Track HELI entity #%i type %i weapon_id=%i, pos=%.1f|%.1f|%.1f" % (idx, e.type, te.weapon_num, e.pos.x, e.pos.y, e.pos.z) #print dump_obj(e) if e.type == ET_VEHICLE: if DEBUG: print "Track VEHICLE entity #%i type %i weapon_id=%i, pos=%.1f|%.1f|%.1f, enemy=%i" % (idx, e.type, te.weapon_num, e.pos.x, e.pos.y, e.pos.z, enemy) #print dump_obj(e) # if e.type != ET_EXPLOSIVE: # print "Track new entity #%i type %i corr_weap=%i" % (idx, e.type, self.env.weapon_names.get_corrected_weapon_num(e.WeaponNum)) # else: # te.planter = self.find_nearest_player(te.pos) # if airdrop self._tracked_ent[idx] = te return te else: return None # no new object created