private bool CheckForCircularReference(IEnumerable <SceneElement> elementsToCopy, ITypeId newTypeId)
 {
     foreach (SceneElement rootElement in elementsToCopy)
     {
         foreach (SceneNode sceneNode in SceneElementHelper.GetLogicalTree(rootElement))
         {
             if (sceneNode.Type == newTypeId)
             {
                 return(true);
             }
         }
     }
     return(false);
 }
Ejemplo n.º 2
0
        public override void RefreshAllInstances(DocumentReference documentReference, IDocument document)
        {
            SceneDocument sceneDocument = document as SceneDocument;

            if (sceneDocument == null)
            {
                return;
            }
            SceneViewModel sceneViewModel = this.GetSceneViewModel(sceneDocument);

            if (sceneViewModel == null)
            {
                return;
            }
            bool         flag        = false;
            SceneElement rootElement = sceneViewModel.RootNode as SceneElement;

            if (rootElement == null)
            {
                return;
            }
            using (SceneEditTransaction editTransaction = sceneDocument.CreateEditTransaction(StringTable.AssetFileUpdatedUndo, true))
            {
                foreach (SceneElement element in SceneElementHelper.GetLogicalTree(rootElement))
                {
                    if (this.DoesNodeReferenceUrl(element.DocumentNode, documentReference.Path))
                    {
                        this.RefreshInstance(element, sceneDocument, documentReference.Path);
                        flag = true;
                    }
                }
                if (flag)
                {
                    editTransaction.Commit();
                }
                else
                {
                    editTransaction.Cancel();
                }
            }
        }