ContentItem.cs 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. using System.Collections.Generic;
  2. using Microsoft.Xna.Framework.Content.Pipeline;
  3. namespace MonoGame.Extended.Content.Pipeline
  4. {
  5. public interface IExternalReferenceRepository
  6. {
  7. ExternalReference<TInput> GetExternalReference<TInput>(string source);
  8. }
  9. public class ContentItem<T> : ContentItem, IExternalReferenceRepository
  10. {
  11. public ContentItem(T data)
  12. {
  13. Data = data;
  14. }
  15. public T Data { get; }
  16. private readonly Dictionary<string, ContentItem> _externalReferences = new Dictionary<string, ContentItem>();
  17. public void BuildExternalReference<TInput>(ContentProcessorContext context, string source, OpaqueDataDictionary parameters = null)
  18. {
  19. var sourceAsset = new ExternalReference<TInput>(source);
  20. var externalReference = context.BuildAsset<TInput, TInput>(sourceAsset, "", parameters, "", "");
  21. _externalReferences.Add(source, externalReference);
  22. }
  23. public ExternalReference<TInput> GetExternalReference<TInput>(string source)
  24. {
  25. if (source is not null && _externalReferences.TryGetValue(source, out var contentItem))
  26. return contentItem as ExternalReference<TInput>;
  27. return null;
  28. }
  29. }
  30. }