Exemple #1
0
 public void Update(SceneElement sceneElement, AdornerLayer adornerLayer, AdornerLayer.ElementInfoUpdateSource source)
 {
     foreach (AdornerElementSet adornerElementSet in (IEnumerable <AdornerElementSet>)adornerLayer.GetAdornerElementSetsContainingElement(sceneElement))
     {
         this.Update(adornerElementSet, adornerLayer, source);
     }
 }
Exemple #2
0
 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();
     }
 }
Exemple #3
0
        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);
            }
        }
Exemple #4
0
            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);
            }