Пример #1
0
        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();
        }
Пример #2
0
    // 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"]);
            }
        }
    }