Ejemplo n.º 1
0
 private void EnsureAsyncUpdate(SelectedElementsResourceObserver.UpdateState updateState)
 {
     if (this.updateState >= updateState)
     {
         return;
     }
     if (this.updateState == SelectedElementsResourceObserver.UpdateState.None)
     {
         UIThreadDispatcher.Instance.BeginInvoke(DispatcherPriority.Send, new Action(this.UpdateAsync));
     }
     this.updateState = updateState;
 }
Ejemplo n.º 2
0
        private void UpdateAsync()
        {
            SelectedElementsResourceObserver.UpdateState updateState = this.updateState;
            this.updateState = SelectedElementsResourceObserver.UpdateState.None;
            List <DocumentNode> list1 = this.oldNodesAsync;
            List <DocumentNode> list2 = this.newNodesAsync;

            this.oldNodesAsync = new List <DocumentNode>();
            this.newNodesAsync = new List <DocumentNode>();
            if (updateState == SelectedElementsResourceObserver.UpdateState.Catastrophic)
            {
                this.Update(this.ViewModel, SceneViewModel.ViewStateBits.EntireScene);
            }
            foreach (DocumentNode documentNode in list2)
            {
                foreach (ResourceContainer resourceContainer in this.ResourceManager.ActiveSceneViewModel == null || documentNode.DocumentRoot != this.ResourceManager.ActiveSceneViewModel.DocumentRoot ? (IEnumerable)this.ResourceManager.DocumentResourceContainers : (IEnumerable)this.ResourceManager.LocalResourceContainers)
                {
                    if (resourceContainer.DocumentNode != null && ResourceNodeHelper.GetResourcesCollection(resourceContainer.DocumentNode).Resources == documentNode.Parent)
                    {
                        foreach (ResourceItem resourceItem in (Collection <ResourceItem>)resourceContainer.ResourceItems)
                        {
                            if (resourceItem.DocumentNode == documentNode)
                            {
                                this.AddRefItem(resourceItem);
                                break;
                            }
                        }
                    }
                }
            }
            foreach (DocumentNode documentNode in list1)
            {
                foreach (ResourceItem resourceItem in (Collection <ResourceItem>) this.ResourceItems)
                {
                    if (resourceItem.DocumentNode == documentNode)
                    {
                        this.RemoveItem(resourceItem);
                        break;
                    }
                }
            }
        }