public DustEffectBehaviour GetEffectByTag(Transform target, Vector2 uv) { if ((QualitySettings.GetQualityLevel() <= this.QualityForLowDust) || !target) { return(this.LowGraphicDust); } int num2 = 0; bool flag = this._effects.ContainsKey(target); while (true) { DustEffectBehaviour behaviour; if (!flag && (this.ParentDeep > num2)) { target = target.parent; if (target) { flag = this._effects.ContainsKey(target); continue; } } if (!flag) { return(this.DefaultDust); } int num3 = 0; TargetEffects effects = this._effects[target]; using (List <Texture2D> .Enumerator enumerator = effects.Textures.GetEnumerator()) { while (true) { if (enumerator.MoveNext()) { Texture2D current = enumerator.Current; if (!current) { behaviour = effects.DustEffects[num3]; } else { float grayscale = current.GetPixelBilinear(uv.x, uv.y).grayscale; Vector2 vector = effects.GrayscaleRanges[num3]; if ((grayscale < vector.x) || (grayscale > vector.y)) { num3++; continue; } behaviour = effects.DustEffects[num3]; } } else { break; } break; } } return(behaviour); } }
/// <summary> /// Removes an effect to the corresponding list for caster or target /// </summary> /// <param name="effect"></param> /// <param name="casterEffect"></param> public void RemoveEffect(Effect e, bool casterEffect) { if (casterEffect) { CasterEffects.Remove(e); } else { TargetEffects.Remove(e); } }
/// <summary> /// Adds an effect to the corresponding list for caster or target /// </summary> /// <param name="effect"></param> /// <param name="casterEffect"></param> public void AddEffect(Effect e, bool casterEffect) { if (casterEffect) { CasterEffects.Add(e); } else { TargetEffects.Add(e); } }
private void Start() { if (this.DefaultDust == null) { foreach (DustEffectBehaviour behaviour in FindObjectsOfType <DustEffectBehaviour>()) { if (behaviour.surface == DustEffectBehaviour.SurfaceType.Concrete) { this.DefaultDust = behaviour; break; } this.DefaultDust = behaviour; } } if (this.LowGraphicDust == null) { this.LowGraphicDust = this.DefaultDust; } this._effects.Clear(); foreach (MapDustEffect effect in this.Targets) { Transform target = effect.Target; if (target) { TargetEffects effects = new TargetEffects(); MaskToDustEffect[] dustEffects = effect.DustEffects; int index = 0; while (true) { if (index >= dustEffects.Length) { this._effects.Add(target, effects); break; } MaskToDustEffect effect2 = dustEffects[index]; effects.GrayscaleRanges.Add(effect2.GrayScaleRange); effects.Textures.Add(effect2.Mask); effects.DustEffects.Add(effect2.EffectBehaviour); index++; } } } }