/// <summary> /// Adds visible object to itself /// </summary> /// <param name="p">The visible object for adding</param> public virtual void AddVisible(IPosition p) { if (p == null) { return; } if (visible.Contains(p)) { return; } object o = p.Parameters; if (!(o is IVisibleCollection)) { visible.Add(p); } else { IVisibleCollection vc = o as IVisibleCollection; int count = vc.Count; for (int i = 0; i < count; i++) { visible.Add(vc[i]); } } }
/// <summary> /// Removes visible object /// </summary> /// <param name="p">The visible object for removing</param> public virtual void RemoveVisible(IPosition p) { if (p == null) { return; } object obj = p.Parameters; if (obj is IVisibleCollection) { IVisibleCollection vc = obj as IVisibleCollection; int n = vc.Count; for (int i = 0; i < n; i++) { IPosition pp = vc[i]; if (visible.Contains(pp)) { visible.Remove(pp); object par = pp.Parameters; if (par is ICameraConsumer) { (par as ICameraConsumer).Remove(this); } } } } if (!visible.Contains(p)) { return; } visible.Remove(p); if (obj is ICameraConsumer) { ICameraConsumer cc = obj as ICameraConsumer; cc.Remove(this); } }
/// <summary> /// Default constructor /// </summary> protected WpfVisibleCollection() { collection = this; }