Files
modular-vr/Assets/Engine/Runtime/Requirements/Requirement.cs
2022-11-20 12:52:22 +01:00

27 lines
876 B
C#

using System.Collections.Generic;
using EscapeRoomEngine.Engine.Runtime.Modules;
using UnityEngine;
namespace EscapeRoomEngine.Engine.Runtime.Requirements
{
public abstract class Requirement<T> : ScriptableObject
{
protected abstract IEnumerable<T> GenerateCandidates(Module module, Space space);
public void Restrict(HashSet<T> candidates, Module module, Space space) =>
candidates.IntersectWith(GenerateCandidates(module, space));
public static HashSet<T> Candidates(
HashSet<T> initialCandidates,
IEnumerable<Requirement<T>> requirements,
Module module, Space space)
{
foreach (var requirement in requirements)
{
requirement.Restrict(initialCandidates, module, space);
}
return initialCandidates;
}
}
}