Show More
Commit Description:
Various UI improvements.
Commit Description:
Various UI improvements.
References:
File last commit:
Show/Diff file:
Action:
FNA/src/Graphics/ModelMeshPart.cs
146 lines | 2.4 KiB | text/x-csharp | CSharpLexer
146 lines | 2.4 KiB | text/x-csharp | CSharpLexer
r0 | #region License | |||
/* FNA - XNA4 Reimplementation for Desktop Platforms | ||||
* Copyright 2009-2020 Ethan Lee and the MonoGame Team | ||||
* | ||||
* Released under the Microsoft Public License. | ||||
* See LICENSE for details. | ||||
*/ | ||||
#endregion | ||||
namespace Microsoft.Xna.Framework.Graphics | ||||
{ | ||||
public sealed class ModelMeshPart | ||||
{ | ||||
#region Public Properties | ||||
/// <summary> | ||||
/// Gets or sets the material Effect for this mesh part. | ||||
/// </summary> | ||||
public Effect Effect | ||||
{ | ||||
get | ||||
{ | ||||
return INTERNAL_effect; | ||||
} | ||||
set | ||||
{ | ||||
if (value == INTERNAL_effect) | ||||
{ | ||||
return; | ||||
} | ||||
if (INTERNAL_effect != null) | ||||
{ | ||||
// First check to see any other parts are also using this effect. | ||||
bool removeEffect = true; | ||||
foreach (ModelMeshPart part in parent.MeshParts) | ||||
{ | ||||
if (part != this && part.INTERNAL_effect == INTERNAL_effect) | ||||
{ | ||||
removeEffect = false; | ||||
break; | ||||
} | ||||
} | ||||
if (removeEffect) | ||||
{ | ||||
parent.Effects.Remove(INTERNAL_effect); | ||||
} | ||||
} | ||||
// Set the new effect. | ||||
INTERNAL_effect = value; | ||||
if (INTERNAL_effect != null && !parent.Effects.Contains(INTERNAL_effect)) | ||||
{ | ||||
parent.Effects.Add(value); | ||||
} | ||||
} | ||||
} | ||||
/// <summary> | ||||
/// Gets the index buffer for this mesh part. | ||||
/// </summary> | ||||
public IndexBuffer IndexBuffer | ||||
{ | ||||
get; | ||||
internal set; | ||||
} | ||||
/// <summary> | ||||
/// Gets the number of vertices used during a draw call. | ||||
/// </summary> | ||||
public int NumVertices | ||||
{ | ||||
get; | ||||
internal set; | ||||
} | ||||
/// <summary> | ||||
/// Gets the number of primitives to render. | ||||
/// </summary> | ||||
public int PrimitiveCount | ||||
{ | ||||
get; | ||||
internal set; | ||||
} | ||||
/// <summary> | ||||
/// Gets the location in the index array at which to start reading vertices. | ||||
/// </summary> | ||||
public int StartIndex | ||||
{ | ||||
get; | ||||
internal set; | ||||
} | ||||
/// <summary> | ||||
/// Gets or sets an object identifying this model mesh part. | ||||
/// </summary> | ||||
public object Tag | ||||
{ | ||||
get; | ||||
set; | ||||
} | ||||
/// <summary> | ||||
/// Gets the vertex buffer for this mesh part. | ||||
/// </summary> | ||||
public VertexBuffer VertexBuffer | ||||
{ | ||||
get; | ||||
internal set; | ||||
} | ||||
/// <summary> | ||||
/// Gets the offset (in vertices) from the top of vertex buffer. | ||||
/// </summary> | ||||
public int VertexOffset | ||||
{ | ||||
get; | ||||
internal set; | ||||
} | ||||
#endregion | ||||
#region Internal Variables | ||||
internal ModelMesh parent; | ||||
#endregion | ||||
#region Private Variables | ||||
private Effect INTERNAL_effect; | ||||
#endregion | ||||
#region Internal Constructor | ||||
internal ModelMeshPart() | ||||
{ | ||||
} | ||||
#endregion | ||||
} | ||||
} | ||||