public static void ComputeLocalToWorld(OpsFrame root, Matrix ParentWorld) { root.LocalToWorld = root.TransformationMatrix * ParentWorld; for (OpsMeshContainer mc = root.MeshContainer as OpsMeshContainer; mc != null; mc = mc.NextContainer as OpsMeshContainer) { mc.LocalToWorld = root.LocalToWorld; } for (OpsFrame f = root.FrameFirstChild as OpsFrame; f != null; f = f.FrameSibling as OpsFrame) { ComputeLocalToWorld(f, root.LocalToWorld); } }
//AllocateHierarchy public override MeshContainer CreateMeshContainer( string name, MeshData meshData, ExtendedMaterial[] materials, EffectInstance[] effectInstances, GraphicsStream adjacency, SkinInformation skinInfo) { if (meshData.Mesh == null) { throw new OpsException("Expecting Microsoft.DirectX.Direct3D.Mesh not Microsoft.DirectX.Direct3D.ProgressiveMesh or Microsoft.DirectX.Direct3D.PatchMesh."); } OpsMeshContainer mc = new OpsMeshContainer(); mc.Name = name; mc.MeshData = meshData; mc.SetMaterials(materials); mc.SetEffectInstances(effectInstances); mc.SetAdjacency(adjacency); mc.SkinInformation = skinInfo; return(mc); }
//AllocateHierarchy public override MeshContainer CreateMeshContainer( string name, MeshData meshData, ExtendedMaterial[] materials, EffectInstance[] effectInstances, GraphicsStream adjacency, SkinInformation skinInfo) { if(meshData.Mesh == null ) throw new OpsException("Expecting Microsoft.DirectX.Direct3D.Mesh not Microsoft.DirectX.Direct3D.ProgressiveMesh or Microsoft.DirectX.Direct3D.PatchMesh."); OpsMeshContainer mc= new OpsMeshContainer(); mc.Name= name; mc.MeshData= meshData; mc.SetMaterials(materials); mc.SetEffectInstances(effectInstances); mc.SetAdjacency(adjacency); mc.SkinInformation = skinInfo; return mc; }