Exemple #1
0
        private void ApplyRelativeTransform_Execute()
        {
            if (!(this.ComponentType != (Type)null) || !this.IsRelativeTransform || this.ObjectSet.RepresentativeSceneNode == null)
            {
                return;
            }
            SelectionManagerPerformanceHelper.MeasurePerformanceUntilPipelinePostSceneUpdate(this.designerContext.SelectionManager, PerformanceEvent.EditSingleTransformProperty);
            using (SceneEditTransaction editTransaction = this.ObjectSet.ViewModel.CreateEditTransaction(StringTable.UndoUnitTransformPaneRelativeTransform))
            {
                LocalValueObjectSet localValueObjectSet = (LocalValueObjectSet)this.PropertyLookup.ActiveObjectSet;
                foreach (SceneNode sceneNode in this.ObjectSet.Objects)
                {
                    object currentTransform;
                    if (this.PropertyLookup.TransformType == TransformType.Transform2D)
                    {
                        if (this.PropertyLookup.IsCompositeSupported)
                        {
                            currentTransform = sceneNode.GetComputedValue(this.TransformProperty.Reference);
                            if (currentTransform != null && !PlatformTypes.CompositeTransform.IsAssignableFrom((ITypeId)this.ObjectSet.ProjectContext.GetType(currentTransform.GetType())))
                            {
                                currentTransform = (object)null;
                            }
                        }
                        else
                        {
                            currentTransform = sceneNode.GetComputedValueAsWpf(this.TransformProperty.Reference);
                        }
                    }
                    else
                    {
                        currentTransform = sceneNode.GetComputedValue(this.TransformProperty.Reference);
                    }
                    object valueToSet = this.ApplyRelativeTransform(localValueObjectSet.LocalValue, currentTransform);
                    if (sceneNode is Base2DElement && this.TransformProperty.Reference.LastStep.Equals((object)Base2DElement.RenderTransformProperty) && sceneNode.IsSet(Base2DElement.RenderTransformOriginProperty).Equals((object)PropertyState.Unset))
                    {
                        sceneNode.SetValueAsWpf(Base2DElement.RenderTransformOriginProperty, (object)new Point(0.5, 0.5));
                    }
                    switch (this.PropertyLookup.TransformType)
                    {
                    case TransformType.Transform2D:
                        if (this.PropertyLookup.IsCompositeSupported)
                        {
                            sceneNode.SetValue(this.TransformProperty.Reference, valueToSet);
                            break;
                        }
                        sceneNode.SetValueAsWpf(this.TransformProperty.Reference, (object)((ICanonicalTransform)valueToSet).TransformGroup);
                        break;

                    case TransformType.Transform3D:
                        sceneNode.SetValue(this.TransformProperty.Reference, (object)((CanonicalTransform3D)valueToSet).ToTransform());
                        break;

                    case TransformType.PlaneProjection:
                        sceneNode.SetValue(this.TransformProperty.Reference, valueToSet);
                        break;
                    }
                }
                editTransaction.Commit();
            }
        }
Exemple #2
0
 public TransformPropertyLookup(SceneNodeProperty transformProperty, TransformType transformType)
 {
     this.transformProperty  = transformProperty;
     this.transformType      = transformType;
     this.sceneNodeObjectSet = transformProperty.SceneNodeObjectSet;
     this.platformSupportsCompositeTransform = this.sceneNodeObjectSet.ProjectContext != null && this.sceneNodeObjectSet.ProjectContext.PlatformMetadata != null && this.sceneNodeObjectSet.ProjectContext.PlatformMetadata.IsCapabilitySet(PlatformCapability.SupportsCompositeTransform);
     this.designerContext             = this.sceneNodeObjectSet.DesignerContext;
     this.localTransformObjectSet     = new LocalValueObjectSet(this.CreateDefaultRelativeTransform(), this.sceneNodeObjectSet.DesignerContext, this.sceneNodeObjectSet.ProjectContext);
     this.localTransformPropertyCache = new Dictionary <string, PropertyReferenceProperty>();
     this.sceneNodePropertyCache      = new Dictionary <string, PropertyReferenceProperty>();
 }
Exemple #3
0
        protected void TransformEditor_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (this.IsRelativeTransform && !this.CurrentTabSupportsRelativeMode)
            {
                this.IsRelativeTransform = false;
            }
            if (!this.IsRelativeTransform)
            {
                return;
            }
            LocalValueObjectSet localValueObjectSet = this.PropertyLookup.ActiveObjectSet as LocalValueObjectSet;

            if (localValueObjectSet == null)
            {
                return;
            }
            localValueObjectSet.LocalValue = this.PropertyLookup.CreateDefaultRelativeTransform();
            this.PropertyLookup.RecacheProperties();
        }