示例#1
0
        public static void CopyBehaviorNodes(SceneViewModel viewModel, IList <BehaviorBaseNode> behaviorNodes)
        {
            PastePackage pastePackage = new PastePackage(viewModel);

            using (viewModel.ForceBaseValue())
            {
                foreach (SceneNode childPropertyNode in (IEnumerable <BehaviorBaseNode>)behaviorNodes)
                {
                    if (ProjectNeutralTypes.Behavior.IsAssignableFrom((ITypeId)childPropertyNode.Type))
                    {
                        pastePackage.AddChildPropertyNode(childPropertyNode);
                    }
                    else
                    {
                        BehaviorTriggerActionNode triggerActionNode1      = (BehaviorTriggerActionNode)childPropertyNode;
                        BehaviorTriggerBaseNode   behaviorTriggerBaseNode = (BehaviorTriggerBaseNode)triggerActionNode1.Parent;
                        if (behaviorTriggerBaseNode.Actions.Count > 1)
                        {
                            DocumentNode node1 = triggerActionNode1.DocumentNode.Clone(viewModel.Document.DocumentContext);
                            BehaviorTriggerActionNode triggerActionNode2 = (BehaviorTriggerActionNode)viewModel.GetSceneNode(node1);
                            DocumentNode node2 = behaviorTriggerBaseNode.DocumentNode.Clone(viewModel.Document.DocumentContext);
                            behaviorTriggerBaseNode = (BehaviorTriggerBaseNode)viewModel.GetSceneNode(node2);
                            behaviorTriggerBaseNode.Actions.Clear();
                            behaviorTriggerBaseNode.Actions.Add((SceneNode)triggerActionNode2);
                        }
                        pastePackage.AddChildPropertyNode((SceneNode)behaviorTriggerBaseNode);
                    }
                }
            }
            pastePackage.SendToClipboard();
        }
示例#2
0
        public static void CopyPropertyNodes(SceneViewModel viewModel, IList <SceneNode> nodes)
        {
            if (nodes.Count == 0)
            {
                return;
            }
            PastePackage pastePackage = new PastePackage(viewModel);

            using (viewModel.ForceBaseValue())
                pastePackage.AddChildPropertyNodes(nodes);
            pastePackage.SendToClipboard();
        }
示例#3
0
        public static void CopyElements(SceneViewModel viewModel, List <SceneElement> elements)
        {
            if (elements.Count == 0 || !CopyCommand.ElementsHaveSameParent((ICollection <SceneElement>)elements))
            {
                return;
            }
            PerformanceUtility.StartPerformanceSequence(PerformanceEvent.CopyElements);
            SceneNode    parent       = elements[0].Parent;
            PastePackage pastePackage = new PastePackage(viewModel);

            using (viewModel.ForceBaseValue())
                pastePackage.AddElements(elements, true);
            pastePackage.SendToClipboard();
            PerformanceUtility.EndPerformanceSequence(PerformanceEvent.CopyElements);
        }
示例#4
0
 private bool CopyResourceCore()
 {
     if (this.resourceManager.SelectedResourceContainers.Count == 0 && this.resourceManager.SelectedResourceItems.Count == 1)
     {
         ResourceEntryItem resourceEntryItem = this.resourceManager.SelectedResourceItems[0] as ResourceEntryItem;
         if (resourceEntryItem != null)
         {
             SceneViewModel viewModel    = resourceEntryItem.Container.ViewModel;
             PastePackage   pastePackage = new PastePackage(viewModel);
             pastePackage.AddResource(viewModel.GetSceneNode((DocumentNode)resourceEntryItem.Resource.ResourceNode) as DictionaryEntryNode);
             pastePackage.SendToClipboard();
             return(true);
         }
     }
     return(false);
 }
示例#5
0
        public static void CopyKeyframes(SceneViewModel viewModel, SceneElement targetElement, ICollection <KeyFrameSceneNode> keyframes)
        {
            if (keyframes.Count == 0)
            {
                return;
            }
            List <KeyFrameSceneNode> list = new List <KeyFrameSceneNode>(keyframes.Count);

            foreach (KeyFrameSceneNode keyFrameSceneNode in (IEnumerable <KeyFrameSceneNode>)keyframes)
            {
                if (keyFrameSceneNode.KeyFrameAnimation.TargetElement == targetElement)
                {
                    list.Add(keyFrameSceneNode);
                }
            }
            PastePackage pastePackage = new PastePackage(viewModel);

            pastePackage.AddKeyframes((ICollection <KeyFrameSceneNode>)list);
            pastePackage.SendToClipboard();
        }