public void UpdateAttackTarget() { if (_attackTgt == null) { return; } // get ON emitters List <MiroV1BulletEmitterBase> _onEmitters = GetONEmitters(); // remove emitters recorded in target blackdots foreach (MiroV1BulletEmitterBase em in _onEmitters) { // remove from black dot foreach (BlackDotSlot bds in _attackTgt._BlackDots) { bds._blackDot.RemoveAttacker(em); } } foreach (BlackDotSlot bds in _attackTgt._BlackDots) { bds._blackDot.UpdateAttackersInfo(); } // get target blackdots dictionary and sorted keys Dictionary <int, List <MiroV1BlackDotBase> > dicBkDots = new Dictionary <int, List <MiroV1BlackDotBase> >(); List <int> keys = new List <int> (); _attackTgt.GetBKDictionary(_onEmitters, ref dicBkDots, ref keys); // aim each emitter to nearest black dot foreach (MiroV1BulletEmitterBase em in _onEmitters) { // add to black dot _attackTgt.ConfigTargetBlackDotTFFor(em, keys, dicBkDots); } }