BITKit/Packages/Runtime~/Unity/Common/Scripts/Provider/MultiplexOutput.cs

38 lines
1.1 KiB
C#
Raw Normal View History

2023-06-05 19:57:17 +08:00
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Cysharp.Threading.Tasks;
namespace BITKit
{
public class MultiplexOutput : Multiplex
{
public List<Provider> providers = new();
public string outputType = typeof(MultiplexOutput).Name;
public override async void Set<T>(T t)
{
if (active)
{
try
{
await UniTask.SwitchToTaskPool();
foreach (var genericProvider in providers)
{
if (genericProvider is IProvider<T> provider)
{
provider.Set(t);
}
else
{
genericProvider.Set(t);
}
}
}
catch (System.Exception e)
{
BIT4Log.LogException(e);
}
outputType = typeof(T).Name;
}
}
}
}