#region Using Statements using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections.ObjectModel; #endregion // This file is part of the ANX.Framework created by the // "ANX.Framework developer group" and released under the Ms-PL license. // For details see: http://anxframework.codeplex.com/license namespace ANX.Framework.Content.Pipeline.Graphics { public sealed class MipmapChainCollection : Collection { private bool _fixedSize = false; public MipmapChainCollection(int levels, bool fixedSize) { for (int i = 0; i < levels; i++) { base.Add(new MipmapChain()); } //fixedSize is interesting for cube and 2D textures. //Mipmaps are still created by adding additional bitmap to the faces of the MipmapChain, but the number of faces is fixed. //For volumetric textures, the MipmapChain represents the depth of the texture. this._fixedSize = fixedSize; } protected override void ClearItems() { if (this._fixedSize) throw new NotSupportedException(string.Format("The {0} has a fixed size.", this.GetType())); base.ClearItems(); } protected override void InsertItem(int index, MipmapChain item) { if (this._fixedSize) throw new NotSupportedException(string.Format("The {0} has a fixed size.", this.GetType())); if (item == null) throw new ArgumentNullException("item"); base.InsertItem(index, item); } protected override void RemoveItem(int index) { if (this._fixedSize) throw new NotSupportedException(string.Format("The {0} has a fixed size.", this.GetType())); base.RemoveItem(index); } protected override void SetItem(int index, MipmapChain item) { if (item == null) throw new ArgumentNullException("item"); base.SetItem(index, item); } } }