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