added SSCLI 1.0
[windows-sources.git] / sdk / samples / WPFSamples / 3DSolids / csharp / quadraticsurface / primitive3d.cs
blobab029259133e4a0cd783a2ffbc5a7495ed4fa306
1 using System;
2 using System.Windows;
3 using System.Windows.Media;
4 using System.Windows.Media.Media3D;
6 namespace Primitive3DSurfaces
8 public abstract class Primitive3D : ModelVisual3D
10 public Primitive3D()
12 Content = _content;
13 _content.Geometry = Tessellate();
16 public static DependencyProperty MaterialProperty =
17 DependencyProperty.Register(
18 "Material",
19 typeof(Material),
20 typeof(Primitive3D), new PropertyMetadata(
21 null, new PropertyChangedCallback(OnMaterialChanged)));
23 public Material Material
25 get { return (Material)GetValue(MaterialProperty); }
26 set { SetValue(MaterialProperty, value); }
29 internal static void OnMaterialChanged(Object sender, DependencyPropertyChangedEventArgs e)
31 Primitive3D p = ((Primitive3D)sender);
33 p._content.Material = p.Material;
36 internal static void OnGeometryChanged(DependencyObject d)
38 Primitive3D p = ((Primitive3D)d);
40 p._content.Geometry = p.Tessellate();
43 internal double DegToRad(double degrees)
45 return (degrees / 180.0) * Math.PI;
48 internal abstract Geometry3D Tessellate();
50 internal readonly GeometryModel3D _content = new GeometryModel3D();