using System.Collections.Generic; using Microsoft.Xna.Framework.Content.Pipeline; namespace MonoGame.Extended.Content.Pipeline { public interface IExternalReferenceRepository { ExternalReference GetExternalReference(string source); } public class ContentItem : ContentItem, IExternalReferenceRepository { public ContentItem(T data) { Data = data; } public T Data { get; } private readonly Dictionary _externalReferences = new Dictionary(); public void BuildExternalReference(ContentProcessorContext context, string source, OpaqueDataDictionary parameters = null) { var sourceAsset = new ExternalReference(source); var externalReference = context.BuildAsset(sourceAsset, "", parameters, "", ""); _externalReferences.Add(source, externalReference); } public ExternalReference GetExternalReference(string source) { if (source is not null && _externalReferences.TryGetValue(source, out var contentItem)) return contentItem as ExternalReference; return null; } } }