Files
LuaCsForBarotraumaEP/Libraries/MonoGame.Framework/Src/MonoGame.Framework/Graphics/ModelEffectCollection.cs
T
2019-06-25 16:00:44 +03:00

89 lines
2.3 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
namespace Microsoft.Xna.Framework.Graphics
{
// Summary:
// Represents a collection of effects associated with a model.
public sealed class ModelEffectCollection : ReadOnlyCollection<Effect>
{
internal ModelEffectCollection(IList<Effect> list)
: base(list)
{
}
internal ModelEffectCollection() : base(new List<Effect>())
{
}
//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);
}
// Summary:
// Returns a ModelEffectCollection.Enumerator that can iterate through a ModelEffectCollection.
public new ModelEffectCollection.Enumerator GetEnumerator()
{
return new ModelEffectCollection.Enumerator((List<Effect>)Items);
}
// Summary:
// Provides the ability to iterate through the bones in an ModelEffectCollection.
public struct Enumerator : IEnumerator<Effect>, IDisposable, IEnumerator
{
List<Effect>.Enumerator enumerator;
bool disposed;
internal Enumerator(List<Effect> list)
{
enumerator = list.GetEnumerator();
disposed = false;
}
// Summary:
// Gets the current element in the ModelEffectCollection.
public Effect Current { get { return enumerator.Current; } }
// Summary:
// Immediately releases the unmanaged resources used by this object.
public void Dispose()
{
if (!disposed)
{
enumerator.Dispose();
disposed = true;
}
}
//
// Summary:
// Advances the enumerator to the next element of the ModelEffectCollection.
public bool MoveNext() { return enumerator.MoveNext(); }
#region IEnumerator Members
object IEnumerator.Current
{
get { return Current; }
}
void IEnumerator.Reset()
{
IEnumerator resetEnumerator = enumerator;
resetEnumerator.Reset ();
enumerator = (List<Effect>.Enumerator)resetEnumerator;
}
#endregion
}
}
}