45 lines
1.4 KiB
C#
45 lines
1.4 KiB
C#
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using UnityEngine;
|
|
|
|
namespace Unity.VisualScripting
|
|
{
|
|
[UnitCategory("Graphs/Graph Nodes")]
|
|
public abstract class GetGraphs<TGraph, TGraphAsset, TMachine> : Unit
|
|
where TGraph : class, IGraph, new()
|
|
where TGraphAsset : Macro<TGraph>
|
|
where TMachine : Machine<TGraph, TGraphAsset>
|
|
{
|
|
/// <summary>
|
|
/// The GameObject to retrieve the graphs from.
|
|
/// </summary>
|
|
[DoNotSerialize]
|
|
[PortLabelHidden]
|
|
[NullMeansSelf]
|
|
public ValueInput gameObject { get; protected set; }
|
|
|
|
/// <summary>
|
|
/// The graph that is set on the GameObject.
|
|
/// </summary>
|
|
[DoNotSerialize]
|
|
[PortLabel("Graphs")]
|
|
[PortLabelHidden]
|
|
public ValueOutput graphList { get; protected set; }
|
|
|
|
protected override void Definition()
|
|
{
|
|
gameObject = ValueInput<GameObject>(nameof(gameObject), null).NullMeansSelf();
|
|
graphList = ValueOutput(nameof(graphList), Get);
|
|
}
|
|
|
|
List<TGraphAsset> Get(Flow flow)
|
|
{
|
|
var go = flow.GetValue<GameObject>(gameObject);
|
|
return go.GetComponents<TMachine>()
|
|
.Where(machine => go.GetComponent<TMachine>().nest.macro != null)
|
|
.Select(machine => machine.nest.macro)
|
|
.ToList();
|
|
}
|
|
}
|
|
}
|