Show More
Commit Description:
Various UI improvements.
Commit Description:
Various UI improvements.
References:
File last commit:
Show/Diff file:
Action:
FNA/src/Graphics/ModelEffectCollection.cs
129 lines | 2.6 KiB | text/x-csharp | CSharpLexer
129 lines | 2.6 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 | ||||
#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 | ||||
} | ||||
} | ||||