132 lines
4.2 KiB
C#
132 lines
4.2 KiB
C#
using System;
|
|
|
|
namespace Microsoft.Xna.Framework.Graphics
|
|
{
|
|
public sealed class ModelMeshPart
|
|
{
|
|
// Summary:
|
|
// Gets or sets the material Effect for this mesh part. Reference page contains
|
|
// code sample.
|
|
private Effect _effect;
|
|
public Effect Effect
|
|
{
|
|
get
|
|
{
|
|
return _effect;
|
|
}
|
|
set
|
|
{
|
|
if (value == _effect)
|
|
return;
|
|
|
|
if (_effect != null)
|
|
{
|
|
// First check to see any other parts are also using this effect.
|
|
var removeEffect = true;
|
|
foreach (var part in parent.MeshParts)
|
|
{
|
|
if (part != this && part._effect == _effect)
|
|
{
|
|
removeEffect = false;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (removeEffect)
|
|
parent.Effects.Remove(_effect);
|
|
}
|
|
|
|
// Set the new effect.
|
|
_effect = value;
|
|
|
|
if (_effect != null && !parent.Effects.Contains(_effect))
|
|
parent.Effects.Add(_effect);
|
|
}
|
|
}
|
|
|
|
//
|
|
// Summary:
|
|
// Gets the index buffer for this mesh part.
|
|
public IndexBuffer IndexBuffer { get; set; }
|
|
|
|
//
|
|
// Summary:
|
|
// Gets the number of vertices used during a draw call.
|
|
public int NumVertices { get; set; }
|
|
|
|
//
|
|
// Summary:
|
|
// Gets the number of primitives to render.
|
|
public int PrimitiveCount { get; set; }
|
|
|
|
//
|
|
// Summary:
|
|
// Gets the location in the index array at which to start reading vertices.
|
|
public int StartIndex { get; set; }
|
|
|
|
//
|
|
// Summary:
|
|
// Gets or sets an object identifying this model mesh part.
|
|
public object Tag { get; set; }
|
|
|
|
//
|
|
// Summary:
|
|
// Gets the vertex buffer for this mesh part.
|
|
public VertexBuffer VertexBuffer { get; set; }
|
|
|
|
//
|
|
// Summary:
|
|
// Gets the offset (in vertices) from the top of vertex buffer.
|
|
public int VertexOffset { get; set; }
|
|
|
|
internal int VertexBufferIndex { get; set; }
|
|
|
|
internal int IndexBufferIndex { get; set; }
|
|
|
|
internal int EffectIndex { get; set; }
|
|
|
|
internal ModelMesh parent;
|
|
}
|
|
|
|
//// Summary:
|
|
//// Represents a batch of geometry information to submit to the graphics device
|
|
//// during rendering. Each ModelMeshPart is a subdivision of a ModelMesh object.
|
|
//// The ModelMesh class is split into multiple ModelMeshPart objects, typically
|
|
//// based on material information.
|
|
//public sealed class ModelMeshPart
|
|
//{
|
|
// // Summary:
|
|
// // Gets or sets the material Effect for this mesh part. Reference page contains
|
|
// // code sample.
|
|
// public Effect Effect { get { throw new NotImplementedException(); } set { throw new NotImplementedException(); } }
|
|
// //
|
|
// // Summary:
|
|
// // Gets the index buffer for this mesh part.
|
|
// public IndexBuffer IndexBuffer { get { throw new NotImplementedException(); } }
|
|
// //
|
|
// // Summary:
|
|
// // Gets the number of vertices used during a draw call.
|
|
// public int NumVertices { get { throw new NotImplementedException(); } }
|
|
// //
|
|
// // Summary:
|
|
// // Gets the number of primitives to render.
|
|
// public int PrimitiveCount { get { throw new NotImplementedException(); } }
|
|
// //
|
|
// // Summary:
|
|
// // Gets the location in the index array at which to start reading vertices.
|
|
// public int StartIndex { get { throw new NotImplementedException(); } }
|
|
// //
|
|
// // Summary:
|
|
// // Gets or sets an object identifying this model mesh part.
|
|
// public object Tag { get { throw new NotImplementedException(); } set { throw new NotImplementedException(); } }
|
|
// //
|
|
// // Summary:
|
|
// // Gets the vertex buffer for this mesh part.
|
|
// public VertexBuffer VertexBuffer { get { throw new NotImplementedException(); } }
|
|
// //
|
|
// // Summary:
|
|
// // Gets the offset (in vertices) from the top of vertex buffer.
|
|
// public int VertexOffset { get { throw new NotImplementedException(); } }
|
|
//}
|
|
}
|