// Copyright (c) Pixel Crushers. All rights reserved.
using UnityEngine;
using System.Collections.Generic;
namespace PixelCrushers.DialogueSystem
{
///
/// This class manages a list of asset bundles. It's used by DialogueSystemController.
/// It allows you to register asset bundles and then load assets from asset bundles
/// or Resources without having to specify which asset bundle (or Resources) contains
/// the asset.
///
public class AssetBundleManager
{
private HashSet m_bundles = new HashSet();
public void RegisterAssetBundle(AssetBundle bundle)
{
if (bundle == null) return;
m_bundles.Add(bundle);
}
public void UnregisterAssetBundle(AssetBundle bundle)
{
if (bundle == null) return;
m_bundles.Remove(bundle);
}
public UnityEngine.Object Load(string name)
{
foreach (var bundle in m_bundles)
{
if (bundle.Contains(name))
{
return LoadFromBundle(bundle, name);
}
}
return Resources.Load(name);
}
public UnityEngine.Object Load(string name, System.Type type)
{
foreach (var bundle in m_bundles)
{
if (bundle.Contains(name))
{
return LoadFromBundle(bundle, name, type);
}
}
return Resources.Load(name, type);
}
private UnityEngine.Object LoadFromBundle(AssetBundle bundle, string name)
{
return bundle.LoadAsset(name);
}
private UnityEngine.Object LoadFromBundle(AssetBundle bundle, string name, System.Type type)
{
return bundle.LoadAsset(name, type);
}
}
}