Root/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 | #region License /* FNA - XNA4 Reimplementation for Desktop Platforms * Copyright 2009-2016 Ethan Lee and the MonoGame Team * * Released under the Microsoft Public License. * See LICENSE for details. */ #endregion #region Using Statements using System.Collections.Generic; #endregion namespace Microsoft.Xna.Framework.Graphics { /// <summary> /// Represents a mesh that is part of a Model. /// </summary> public sealed class ModelMesh { #region Public Properties /// <summary> /// Gets the BoundingSphere that contains this mesh. /// </summary> public BoundingSphere BoundingSphere { get ; internal set ; } /// <summary> /// Gets a collection of effects associated with this mesh. /// </summary> public ModelEffectCollection Effects { get ; private set ; } /// <summary> /// Gets the ModelMeshPart objects that make up this mesh. Each part of a mesh /// is composed of a set of primitives that share the same material. /// </summary> public ModelMeshPartCollection MeshParts { get ; private set ; } /// <summary> /// Gets the name of this mesh. /// </summary> public string Name { get ; internal set ; } /// <summary> /// Gets the parent bone for this mesh. The parent bone of a mesh contains a /// transformation matrix that describes how the mesh is located relative to /// any parent meshes in a model. /// </summary> public ModelBone ParentBone { get ; internal set ; } /// <summary> /// Gets or sets an object identifying this mesh. /// </summary> public object Tag { get ; set ; } #endregion #region Private Variables private GraphicsDevice graphicsDevice; #endregion #region Public Constructors public ModelMesh(GraphicsDevice graphicsDevice, List<ModelMeshPart> parts) { // TODO: Complete member initialization this .graphicsDevice = graphicsDevice; MeshParts = new ModelMeshPartCollection(parts); foreach (ModelMeshPart part in parts) { part.parent = this ; } Effects = new ModelEffectCollection(); } #endregion #region Public Methods /// <summary> /// Draws all of the ModelMeshPart objects in this mesh, using their current /// Effect settings. /// </summary> public void Draw() { foreach (ModelMeshPart part in MeshParts) { Effect effect = part.Effect; if (part.PrimitiveCount > 0) { graphicsDevice.SetVertexBuffer(part.VertexBuffer); graphicsDevice.Indices = part.IndexBuffer; foreach (EffectPass pass in effect.CurrentTechnique.Passes) { pass.Apply(); graphicsDevice.DrawIndexedPrimitives( PrimitiveType.TriangleList, part.VertexOffset, 0, part.NumVertices, part.StartIndex, part.PrimitiveCount ); } } } } #endregion } } |