public void Update(SceneElement sceneElement, AdornerLayer adornerLayer, AdornerLayer.ElementInfoUpdateSource source) { foreach (AdornerElementSet adornerElementSet in (IEnumerable <AdornerElementSet>)adornerLayer.GetAdornerElementSetsContainingElement(sceneElement)) { this.Update(adornerElementSet, adornerLayer, source); } }
private void UpdateAdorners(AdornerLayer.ElementInfoUpdateSource source) { if (this.Visibility != Visibility.Visible) { return; } this.UpdateElementInfo((SceneElement)null, source); foreach (AdornerLayer.ElementInfo elementInfo in this.elementMap.Values) { elementInfo.Update2D(); elementInfo.Update3D(); } }
private void UpdateElementInfo(SceneElement sceneElement, AdornerLayer.ElementInfoUpdateSource source) { if (this.elementMap.Count == 0) { return; } List <AdornerElementSet> list = new List <AdornerElementSet>(1); if (sceneElement != null) { IList <AdornerElementSet> containingElement = this.GetAdornerElementSetsContainingElement(sceneElement); if (!sceneElement.IsAttached) { foreach (AdornerElementSet adornerElementSet in (IEnumerable <AdornerElementSet>)containingElement) { list.Add(adornerElementSet); } } else { foreach (AdornerElementSet adornerElementSet in (IEnumerable <AdornerElementSet>)containingElement) { this.GetElementInfo(adornerElementSet).Update(adornerElementSet, this, source); } } } else { foreach (KeyValuePair <AdornerElementSet, AdornerLayer.ElementInfo> keyValuePair in this.elementMap) { AdornerElementSet key = keyValuePair.Key; if (!key.IsAttached) { list.Add(key); } else { keyValuePair.Value.Update(key, this, source); } } } foreach (AdornerElementSet adornerElementSet in list) { this.RemoveAllAdornerSets(adornerElementSet); } }
public void Update(AdornerElementSet adornerElementSet, AdornerLayer adornerLayer, AdornerLayer.ElementInfoUpdateSource source) { SceneElement primaryElement = adornerElementSet.PrimaryElement; bool flag = false; if (!adornerLayer.SceneView.IsInArtboard(primaryElement)) { return; } Size size2 = primaryElement.Visual != null?adornerLayer.SceneView.GetRenderSize(primaryElement.Visual) : Size.Empty; Transform transform = (Transform) new MatrixTransform(adornerElementSet.CalculatePrimaryElementTransformMatrixToAdornerLayer()); Matrix matrix = transform == null ? Matrix.Identity : transform.Value; Point renderTransformOrigin = adornerElementSet.RenderTransformOrigin; if (!AdornerLayer.ElementInfo.AreClose(renderTransformOrigin, this.sharedCenter) || !AdornerLayer.ElementInfo.AreClose(this.lastRenderSize, size2) || (this.primaryElementMatrix != matrix || adornerElementSet.IsPrimaryTransformNonAffine)) { flag = true; this.sharedCenter = renderTransformOrigin; this.lastRenderSize = size2; this.primaryElementMatrix = matrix; } ISceneInsertionPoint sceneInsertionPoint = adornerElementSet.PrimaryElement.ViewModel.ActiveSceneInsertionPoint; if (flag || source == AdornerLayer.ElementInfoUpdateSource.LayoutUpdated && adornerElementSet.NeedsUpdate) { adornerElementSet.Update(); this.matrix = adornerElementSet.GetTransformMatrixToAdornerLayer(); foreach (AdornerSet adornerSet in this.adornerSets) { this.UpdateMatrix(adornerSet, adornerLayer); } if (this.adornerSet3DContainer != null) { this.adornerSet3DContainer.SetMatrix(this.matrix); } if (sceneInsertionPoint != null && primaryElement.ParentElement is GridElement && (primaryElement.ParentElement == sceneInsertionPoint.SceneElement && primaryElement.ViewModel.IsInGridDesignMode)) { adornerLayer.InvalidateAdornerVisuals(primaryElement.ParentElement); } } if (!(primaryElement is Base3DElement) || sceneInsertionPoint == null) { return; } Base3DElement base3Delement = sceneInsertionPoint.SceneElement as Base3DElement; if (base3Delement == null) { return; } adornerLayer.InvalidateAdornerVisuals((SceneElement)base3Delement); }