internal void RecursiveSetViewportImage(ViewportImage viewportImage) { if (viewportImage == null) { this.DisposeDisposables(); this.viewportImage = null; this.graphicsDevice = null; this.layer2D = null; Children.viewportImage = null; } else { this.graphicsDevice = viewportImage.GraphicsDevice; this.layer2D = viewportImage.Layer2D; OnViewportImageChanged(viewportImage); BindToViewportImage(); Children.viewportImage = viewportImage; this.RecreateDisposables(); } foreach (Model3D model in this.Children) { model.RecursiveSetViewportImage(viewportImage); } // TODO Set target on all children, checking for maximum depth or // circular dependencies }
public ViewportImage() : base() { layer2D = null; CreateDevice(SurfaceType.DirectX9); FOV = 0.75f; this.Scale = 1; }
//public Model3D(Device graphicsDevice) //{ // SetValue(ChildrenProperty, new Model3DCollection(this)); // Initialize(); //} internal virtual void OnViewportImageChanged(ViewportImage newViewportImage) { RemoveBindToViewportImage(); viewportImage = newViewportImage; this.graphicsDevice = (viewportImage == null) ? null : viewportImage.GraphicsDevice; this.layer2D = (viewportImage == null) ? null : viewportImage.Layer2D; BindToViewportImage(); Children.viewportImage = (viewportImage == null) ? null : viewportImage; geometryChanged = false; }
public void SetLayer2D(Canvas canvas, MatrixTransform3D modelToWorld) { layer2D = new SharpDXLayer2D(canvas, this, modelToWorld); }