public void AddObject(GeoObject obj) { if (!Objects.Contains(obj)) { Objects.Add(obj); if (ObjectIsInViewRegion(obj)) { ObjectsInView.Add(obj); } } }
private void ResetObjectsInView() { while (ObjectsInView.Count > 0) { ObjectsInView.RemoveAt(ObjectsInView.Count - 1); } foreach (var o in Objects.Where(ObjectIsInViewRegion)) { ObjectsInView.Add(o); } }
private void OnPositionChanged(GeoObject obj) { if (!ObjectFilter(obj)) { return; } // TODO optimize with indexing if (ObjectIsInViewRegion(obj)) { if (!ObjectsInView.Contains(obj)) { ObjectsInView.Add(obj); } } else { ObjectsInView.Remove(obj); } }