Show More
Commit Description:
Various UI improvements.
Commit Description:
Various UI improvements.
File last commit:
Show/Diff file:
Action:
FNA/src/Graphics/ModelEffectCollection.cs
129 lines | 2.6 KiB | text/x-csharp | CSharpLexer
#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
#region Using Statements
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
#endregion
namespace Microsoft.Xna.Framework.Graphics
{
/// <summary>
/// Represents a collection of effects associated with a model.
/// </summary>
public sealed class ModelEffectCollection : ReadOnlyCollection<Effect>
{
#region Internal Constructors
internal ModelEffectCollection(IList<Effect> list) : base(list)
{
}
internal ModelEffectCollection() : base(new List<Effect>())
{
}
#endregion
#region Public Methods
/// <summary>
/// Returns a ModelEffectCollection.Enumerator that can iterate through a ModelEffectCollection.
/// </summary>
public new ModelEffectCollection.Enumerator GetEnumerator()
{
return new ModelEffectCollection.Enumerator((List<Effect>) Items);
}
#endregion
#region Internal Methods
// ModelMeshPart needs to be able to add to ModelMesh's effects list
internal void Add(Effect item)
{
Items.Add(item);
}
internal void Remove(Effect item)
{
Items.Remove(item);
}
#endregion
#region Public Enumerator struct
/// <summary>
/// Provides the ability to iterate through the bones in an ModelEffectCollection.
/// </summary>
public struct Enumerator : IEnumerator<Effect>, IDisposable, IEnumerator
{
/// <summary>
/// Gets the current element in the ModelEffectCollection.
/// </summary>
public Effect Current
{
get
{
return enumerator.Current;
}
}
List<Effect>.Enumerator enumerator;
bool disposed;
internal Enumerator(List<Effect> list)
{
enumerator = list.GetEnumerator();
disposed = false;
}
/// <summary>
/// Immediately releases the unmanaged resources used by this object.
/// </summary>
public void Dispose()
{
if (!disposed)
{
enumerator.Dispose();
disposed = true;
}
}
/// <summary>
/// Advances the enumerator to the next element of the ModelEffectCollection.
/// </summary>
public bool MoveNext()
{
return enumerator.MoveNext();
}
object IEnumerator.Current
{
get
{
return Current;
}
}
void IEnumerator.Reset()
{
IEnumerator resetEnumerator = enumerator;
resetEnumerator.Reset();
enumerator = (List<Effect>.Enumerator) resetEnumerator;
}
}
#endregion
}
}