holopy3/Assets/PlattarExporter/UnityGLTF/Scripts/Cache/AssetCache.cs

70 lines
1.9 KiB
C#
Raw Permalink Normal View History

2021-01-28 12:07:52 +00:00
using System;
using System.Collections.Generic;
using UnityEngine;
namespace UnityGLTF.Cache
{
/// <summary>
/// Caches data in order to construct a unity object
/// </summary>
public class AssetCache : IDisposable
{
/// <summary>
/// Raw loaded images
/// </summary>
public Texture2D[] ImageCache { get; private set; }
/// <summary>
/// Textures to be used for assets. Textures from image cache with samplers applied
/// </summary>
public Texture[] TextureCache { get; private set; }
/// <summary>
/// Cache for materials to be applied to the meshes
/// </summary>
public MaterialCacheData[] MaterialCache { get; private set; }
/// <summary>
/// Byte buffers that represent the binary contents that get parsed
/// </summary>
public Dictionary<int, byte[]> BufferCache { get; private set; }
/// <summary>
/// Cache of loaded meshes
/// </summary>
public List<MeshCacheData[]> MeshCache { get; private set; }
/// <summary>
/// Creates an asset cache which caches objects used in scene
/// </summary>
/// <param name="imageCacheSize"></param>
/// <param name="textureCacheSize"></param>
/// <param name="materialCacheSize"></param>
/// <param name="bufferCacheSize"></param>
/// <param name="meshCacheSize"></param>
public AssetCache(int imageCacheSize, int textureCacheSize, int materialCacheSize, int bufferCacheSize,
int meshCacheSize)
{
// todo: add optimization to set size to be the JSON size
ImageCache = new Texture2D[imageCacheSize];
TextureCache = new Texture[textureCacheSize];
MaterialCache = new MaterialCacheData[materialCacheSize];
BufferCache = new Dictionary<int, byte[]>(bufferCacheSize);
MeshCache = new List<MeshCacheData[]>(meshCacheSize);
for(int i = 0; i < meshCacheSize; ++i)
{
MeshCache.Add(null);
}
}
public void Dispose()
{
ImageCache = null;
TextureCache = null;
MaterialCache = null;
BufferCache.Clear();
MeshCache = null;
}
}
}