00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 using System;
00018 using System.Collections.Generic;
00019 using System.Text;
00020 using Microsoft.DirectX;
00021 using Microsoft.DirectX.Direct3D;
00022 using Microsoft.Samples.DirectX.UtilityToolkit;
00023
00024 namespace DXGfxLib
00025 {
00026 public class FrameworkMeshObject : MeshObjectWithLOD
00027 {
00032 protected FrameworkMesh frameworkMesh = null;
00033
00038 public void Attach(FrameworkMesh meshToAttach)
00039 {
00040 frameworkMesh = meshToAttach;
00041 base.Attach(meshToAttach.LocalMesh);
00042 }
00043
00052 public virtual void AttachWithLOD(Device d3ddevice, FrameworkMesh meshToAttach)
00053 {
00054 int[] generatedAdjacency = new int[3*meshToAttach.LocalMesh.NumberFaces];
00055 meshToAttach.LocalMesh.GenerateAdjacency(0.01f, generatedAdjacency);
00056
00057 ExtendedMaterial[] generatedMaterials = new ExtendedMaterial[meshToAttach.NumberMaterials];
00058 for (int i = 0; i < meshToAttach.NumberMaterials; i++)
00059 {
00060 generatedMaterials[i] = new ExtendedMaterial();
00061 Material mat = meshToAttach.GetMaterial(i);
00062
00063 generatedMaterials[i].Material3D = mat;
00064 }
00065 base.AttachWithLOD(d3ddevice, meshToAttach.LocalMesh, generatedAdjacency, generatedMaterials, null);
00066 }
00067
00073 public override void Draw(Device device)
00074 {
00075 device.SetTransform(TransformType.World, worldMat);
00076 frameworkMesh.Render(device);
00077 }
00078 }
00079 }