protected SearchDockPaneViewModel() { var module = AddInModule.Instance; MessageBus = module.MessageBus; MessageBus.Subscribe <BuildSearchMessage>(async m => m.Query.Viewport = await GetCurrentViewport()); MessageBus.Subscribe <EndSearchMessage>(m => { _lastSearchResults = m.Results.ReturnOptions.HasFlag(ReturnOptions.Values) ? m.Results : null; if (_lastSearchResults != null) { var pane = FrameworkApplication.DockPaneManager.Find(SearchResultsDockPaneViewModel.DockPaneId); pane?.Activate(); } }); ConnectionViewModel = module.GetMainViewModel <SearchConnectionViewModel>(); QueryViewModel = module.GetMainViewModel <SearchQueryViewModel>(); FacetsViewModel = module.GetMainViewModel <SearchFacetsViewModel>(); OptionsViewModel = module.GetMainViewModel <SearchOptionsViewModel>(); SymbologyViewModel = module.GetMainViewModel <SymbologyOptionsViewModel>(); OverlayManager = new MapOverlayManager(MessageBus); FeatureManager = new MapFeatureManager(MessageBus); ConnectionViewModel.ConnectionProfiles.CollectionChanged += (o, e) => ResolveSearchModelState(); ConnectionViewModel.PropertyChanged += (o, e) => { if (e.PropertyName == nameof(ConnectionViewModel.Connected)) { ResolveSearchModelState(); } }; ActiveMapViewChangedEvent.Subscribe(e => ResolveSearchModelState()); MapViewCameraChangedEvent.Subscribe(e => { if (e.MapView == MapView.Active && ConnectionViewModel.HasSelectedServiceModel && !QueryViewModel.IsSearching) { QueryViewModel.Search.Execute(null); } }); ResolveSearchModelState(); }
// Manage the changes in the scene. void ProcessUpdate() { startTime = Time.time; JSONNode updates = dataQueue.Dequeue(); // Players updates. JSONNode players = updates["players"]; foreach (JSONNode player in players["create"].AsArray) { playerManager.CreatePlayer(player["id"].AsInt, new PlayerData(player)); } foreach (JSONNode player in players["delete"].AsArray) { playerManager.DeletePlayer(player["id"].AsInt); } foreach (JSONNode player in players["update"].AsArray) { playerManager.UpdatePlayer(player["id"].AsInt, new PlayerData(player)); } // Map features updates. JSONNode mapFeatures = updates["map_features"]; foreach (string mapFeatureName in mapFeatureNames) { MapFeatureManager mapFeatureManager = mapFeatureManagers[mapFeatureName]; JSONNode mapFeatureJSON = mapFeatures[mapFeatureName]; // Create. foreach (JSONNode mapFeature in mapFeatureJSON["create"].AsArray) { mapFeatureManager.Create(mapFeature["id"], new MapFeatureData(mapFeature)); } // Delete. foreach (JSONNode mapFeature in mapFeatureJSON["delete"].AsArray) { mapFeatureManager.Delete(mapFeature["id"]); } } }