implemented proper disposal
This commit is contained in:
parent
2a2a7cba49
commit
30c96f1fff
@ -2,16 +2,17 @@
|
||||
using Microsoft.Xna.Framework.Graphics;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace RecrownedAthenaeum.DataTypes
|
||||
{
|
||||
/// <summary>
|
||||
/// Holds information about an image file that contains various textures in various regions in the file.
|
||||
/// </summary>
|
||||
public class TextureAtlas
|
||||
public class TextureAtlas : IDisposable
|
||||
{
|
||||
private Texture2D texture;
|
||||
|
||||
private bool disposed;
|
||||
private Dictionary<string, TextureAtlasRegion> dictionaryOfRegions = new Dictionary<string, TextureAtlasRegion>();
|
||||
|
||||
/// <summary>
|
||||
@ -71,6 +72,40 @@ namespace RecrownedAthenaeum.DataTypes
|
||||
return dictionaryOfRegions[name].AsTexture2D(graphicsDevice);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Disposes unmanaged resources for the texture atlas.
|
||||
/// </summary>
|
||||
public void Dispose()
|
||||
{
|
||||
Dispose(true);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overridable disposal method.
|
||||
/// </summary>
|
||||
/// <param name="disposing">Only true if user calls <see cref="Dispose()"/></param>
|
||||
public virtual void Dispose(bool disposing)
|
||||
{
|
||||
disposed = true;
|
||||
if (!disposed && disposing)
|
||||
{
|
||||
texture.Dispose();
|
||||
for (int i = 0; i < dictionaryOfRegions.Count; i++)
|
||||
{
|
||||
dictionaryOfRegions.ElementAt(i).Value.Dispose();
|
||||
}
|
||||
dictionaryOfRegions.Clear();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Destructor.
|
||||
/// </summary>
|
||||
~TextureAtlas()
|
||||
{
|
||||
Dispose(false);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// A region of a <see cref="TextureAtlas"/>.
|
||||
/// </summary>
|
||||
@ -80,6 +115,7 @@ namespace RecrownedAthenaeum.DataTypes
|
||||
/// The name of the region. Mostly used to be refered to within the context of a <see cref="TextureAtlas"/>.
|
||||
/// </summary>
|
||||
public readonly string name;
|
||||
|
||||
/// <summary>
|
||||
/// The location and dimensions of where the original texture resides on the texture representing the atlas.
|
||||
/// </summary>
|
||||
|
Loading…
Reference in New Issue
Block a user