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); }
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(); } } }