private void AddModel3DContainerToViewport(Viewport3DElement viewport, Model3DElement model) { ModelVisual3DElement modelVisual3Delement = (ModelVisual3DElement)this.DesignerContext.ActiveSceneViewModel.CreateSceneNode(typeof(ModelVisual3D)); modelVisual3Delement.Name = model.Name + "Container"; modelVisual3Delement.Content = (SceneNode)model; viewport.Children.Add((Visual3DElement)modelVisual3Delement); }
private static ModelVisual3DElement CreateModelVisual3DContainer(Model3DElement model3DElement, SceneViewModel sceneViewModel) { ModelVisual3DElement modelVisual3Delement = (ModelVisual3DElement)sceneViewModel.CreateSceneNode(PlatformTypes.ModelVisual3D); modelVisual3Delement.Content = (SceneNode)model3DElement; modelVisual3Delement.Name = (model3DElement.Name ?? "") + "Container"; return(modelVisual3Delement); }
private static SceneElement PasteElement(SceneViewModel viewModel, SceneElement element, List <PasteCommand.DelayedElementTranslationInfo> elementsToTranslateLater, ISceneInsertionPoint insertionPoint) { SceneNodeIDHelper sceneNodeIdHelper = new SceneNodeIDHelper(viewModel, (SceneNode)insertionPoint.SceneNode.StoryboardContainer); SceneElement element1 = (SceneElement)null; using (viewModel.ForceBaseValue()) { PasteCommand.StripStoryboardsAndTriggers(element); PasteCommand.StripExtraNamespaces(element); BaseFrameworkElement frameworkElement = element as BaseFrameworkElement; if (frameworkElement != null || element is DataGridColumnNode) { if (!(insertionPoint.SceneElement is Viewport3DElement) && !(insertionPoint.SceneElement is Base3DElement)) { if (insertionPoint.CanInsert((ITypeId)element.Type)) { if (!PlatformTypes.FrameworkTemplate.IsAssignableFrom((ITypeId)insertionPoint.SceneElement.Type) && (!PlatformTypes.UserControl.Equals((object)insertionPoint.SceneElement.Type) || insertionPoint.SceneElement.DocumentNode.DocumentRoot.RootNode != insertionPoint.SceneElement.DocumentNode)) { if (element.Name != null) { string validCopiedElementId = sceneNodeIdHelper.GetValidCopiedElementID((SceneNode)element, element.Name); sceneNodeIdHelper.SetLocalName((SceneNode)element, validCopiedElementId); } sceneNodeIdHelper.FixNameConflicts((SceneNode)element); } if (viewModel.DesignerContext.PrototypingService != null) { viewModel.DesignerContext.PrototypingService.ProcessElementBeforeInsertion(insertionPoint, element); } insertionPoint.Insert((SceneNode)element); if (element.GetLocalValue(DesignTimeProperties.LayoutRectProperty) != null && frameworkElement != null) { elementsToTranslateLater.Add(new PasteCommand.DelayedElementTranslationInfo(frameworkElement)); } element1 = element; } } else if (element.TargetType == typeof(Image)) { GeometryModel3DElement geometryModel3Delement = GeometryCreationHelper3D.ConvertImageTo3D(viewModel, frameworkElement, element.Name); IChildContainer3D childContainer3D = insertionPoint.SceneElement as IChildContainer3D; if (childContainer3D != null) { childContainer3D.AddChild(viewModel, (Base3DElement)geometryModel3Delement); element1 = (SceneElement)geometryModel3Delement; } } } else { Base3DElement child; if ((child = element as Base3DElement) != null) { if (child.Name != null) { string validCopiedElementId = sceneNodeIdHelper.GetValidCopiedElementID((SceneNode)child, child.Name); sceneNodeIdHelper.SetLocalName((SceneNode)child, validCopiedElementId); } DependencyPropertyReferenceStep propertyReferenceStep = insertionPoint.Property as DependencyPropertyReferenceStep; if (propertyReferenceStep != null && propertyReferenceStep.DependencyProperty == ModelVisual3D.ContentProperty) { Model3DElement model3Delement = BaseElement3DCoercionHelper.CoerceToModel3D(viewModel, (SceneElement)child); if (model3Delement != null) { insertionPoint.Insert((SceneNode)model3Delement); element1 = (SceneElement)model3Delement; } } else { IChildContainer3D childContainer3D = insertionPoint.SceneElement as IChildContainer3D; if (childContainer3D != null) { element1 = childContainer3D.AddChild(viewModel, child); } } } } if (element1 != null) { if (!(viewModel.ActiveEditingContainer is FrameworkTemplateElement)) { PasteCommand.StripTemplateBindings(element1); } } } return(element1); }
internal static void InsertElement(SceneViewModel sceneViewModel, Base3DElement parent, SceneNode child, int?insertAt) { Model3DGroupElement model3DgroupElement = parent as Model3DGroupElement; ModelVisual3DElement modelVisual3Delement = parent as ModelVisual3DElement; Model3DElement model3Delement1 = child as Model3DElement; Visual3DElement visual3Delement = child as Visual3DElement; if (modelVisual3Delement != null) { if (visual3Delement != null) { if (insertAt.HasValue) { modelVisual3Delement.Children.Insert(insertAt.Value, visual3Delement); } else { modelVisual3Delement.Children.Add(visual3Delement); } } else { if (model3Delement1 == null) { return; } modelVisual3Delement.Content = (SceneNode)model3Delement1; } } else { if (model3DgroupElement == null) { return; } if (visual3Delement != null) { Model3DElement model3Delement2 = BaseElement3DCoercionHelper.CoerceToModel3D(sceneViewModel, (SceneElement)visual3Delement); if (insertAt.HasValue) { model3DgroupElement.Children.Insert(insertAt.Value, model3Delement2); } else { model3DgroupElement.Children.Add(model3Delement2); } } else { if (model3Delement1 == null) { return; } if (insertAt.HasValue) { model3DgroupElement.Children.Insert(insertAt.Value, model3Delement1); } else { model3DgroupElement.Children.Add(model3Delement1); } } } }