internal void RemoveAurasWithEffectMechanics(AuraEffectType auraEffectType, SpellMechanics mechanics) { IReadOnlyList <AuraEffect> auraEffects = GetAuraEffects(auraEffectType); if (auraEffects == null) { return; } var auraEffectsToRemove = ListPoolContainer <AuraEffect> .Take(); for (int i = 0; i < auraEffects.Count; i++) { if (auraEffects[i].EffectInfo.Mechanics == mechanics) { auraEffectsToRemove.Add(auraEffects[i]); } } foreach (AuraEffect auraEffectToRemove in auraEffectsToRemove) { if (!auraEffectToRemove.Aura.IsRemoved) { auraEffectToRemove.Aura.Remove(AuraRemoveMode.Spell); } } ListPoolContainer <AuraEffect> .Return(auraEffectsToRemove); }
public void UpdateClientsideVisibility() { for (int i = unitRenderers.Count - 1; i >= 0; i--) { if (!IsVisibleForPlayer(unitRenderers[i].Unit)) { DetachRenderer(unitRenderers[i].Unit); } } List <Unit> newVisibleUnits = ListPoolContainer <Unit> .Take(); foreach (Unit detachedUnit in detachedUnits) { if (IsVisibleForPlayer(detachedUnit)) { newVisibleUnits.Add(detachedUnit); } } foreach (Unit newVisibleUnit in newVisibleUnits) { AttachRenderer(newVisibleUnit); } ListPoolContainer <Unit> .Return(newVisibleUnits); }
internal void RemoveAurasWithEffect(AuraEffectType auraEffectType, AuraEffect exceptEffect = null, Aura exceptAura = null, Unit onlyWithCaster = null) { IReadOnlyList <AuraEffect> auraEffects = GetAuraEffects(auraEffectType); if (auraEffects == null) { return; } var auraEffectsToRemove = ListPoolContainer <AuraEffect> .Take(); for (int i = 0; i < auraEffects.Count; i++) { if (onlyWithCaster != null && auraEffects[i].Aura.Caster != onlyWithCaster) { continue; } if (exceptEffect == auraEffects[i]) { continue; } if (exceptAura == auraEffects[i].Aura) { continue; } auraEffectsToRemove.Add(auraEffects[i]); } foreach (AuraEffect auraEffectToRemove in auraEffectsToRemove) { if (!auraEffectToRemove.Aura.IsRemoved) { auraEffectToRemove.Aura.Remove(AuraRemoveMode.Spell); } } ListPoolContainer <AuraEffect> .Return(auraEffectsToRemove); }
internal void RemoveAurasWithEffect(AuraEffectType auraEffectType, AuraEffect except = null) { IReadOnlyList <AuraEffect> auraEffects = GetAuraEffects(auraEffectType); if (auraEffects == null) { return; } var auraEffectsToRemove = ListPoolContainer <AuraEffect> .Take(); auraEffectsToRemove.AddRange(auraEffects); auraEffectsToRemove.Remove(except); foreach (AuraEffect auraEffectToRemove in auraEffectsToRemove) { if (!auraEffectToRemove.Aura.IsRemoved) { auraEffectToRemove.Aura.Remove(AuraRemoveMode.Spell); } } ListPoolContainer <AuraEffect> .Return(auraEffectsToRemove); }