Net.Like.Xue.Tokyo/Assets/BITKit/Unity/Scripts/Sensor/MixSensor.cs

19 lines
643 B
C#

using System.Collections;
using System.Collections.Generic;
using System.Linq;
using Cysharp.Threading.Tasks;
using UnityEngine;
namespace BITKit.Sensors
{
public class MixSensor : Sensor
{
[SerializeReference, SubclassSelector] private ISensor[] sensors;
public override IEnumerable<Transform> Get()=>sensors.SelectMany(x => x.Get());
public override bool IsValid(Collider _collider) => sensors.Any(x => x.IsValid(_collider) is false) is false;
public override float GetDistance() => sensors.Min(x => x.GetDistance());
public override UniTask Execute(float delta) => UniTask.WhenAll(sensors.Select(x => x.Execute(delta)));
}
}