32 lines
934 B
C#
32 lines
934 B
C#
using System.Collections.Generic;
|
|
using Cysharp.Threading.Tasks;
|
|
|
|
namespace Code.Infrastructure.Volume
|
|
{
|
|
public interface IVolumeService
|
|
{
|
|
UniTask LoadVolume(VolumeId volumeId);
|
|
void RemoveVolume(VolumeId volumeId);
|
|
}
|
|
|
|
public class VolumeService : IVolumeService
|
|
{
|
|
private readonly Dictionary<VolumeId, UnityEngine.Rendering.Volume> _loadedVolumes = new();
|
|
private readonly IVolumeFactory _factory;
|
|
|
|
public VolumeService(IVolumeFactory factory)
|
|
{
|
|
_factory = factory;
|
|
}
|
|
public async UniTask LoadVolume(VolumeId volumeId)
|
|
{
|
|
var volume = await _factory.LoadVolume(volumeId);
|
|
_loadedVolumes.Add(volumeId, volume);
|
|
}
|
|
public void RemoveVolume(VolumeId volumeId)
|
|
{
|
|
_factory.ReleaseVolume(_loadedVolumes[volumeId]);
|
|
_loadedVolumes.Remove(volumeId);
|
|
}
|
|
}
|
|
} |