40 lines
1.2 KiB
C#
40 lines
1.2 KiB
C#
using UnityEngine;
|
|
|
|
namespace Unity.VisualScripting
|
|
{
|
|
[UnitCategory("Graphs/Graph Nodes")]
|
|
public abstract class GetGraph<TGraph, TGraphAsset, TMachine> : Unit
|
|
where TGraph : class, IGraph, new()
|
|
where TGraphAsset : Macro<TGraph>
|
|
where TMachine : Machine<TGraph, TGraphAsset>
|
|
{
|
|
/// <summary>
|
|
/// The GameObject to retrieve the graph from.
|
|
/// </summary>
|
|
[DoNotSerialize]
|
|
[PortLabelHidden]
|
|
[NullMeansSelf]
|
|
public ValueInput gameObject { get; protected set; }
|
|
|
|
/// <summary>
|
|
/// The graph that is set on the GameObject.
|
|
/// </summary>
|
|
[DoNotSerialize]
|
|
[PortLabel("Graph")]
|
|
[PortLabelHidden]
|
|
public ValueOutput graphOutput { get; protected set; }
|
|
|
|
protected override void Definition()
|
|
{
|
|
gameObject = ValueInput<GameObject>(nameof(gameObject), null).NullMeansSelf();
|
|
graphOutput = ValueOutput(nameof(graphOutput), Get);
|
|
}
|
|
|
|
TGraphAsset Get(Flow flow)
|
|
{
|
|
var go = flow.GetValue<GameObject>(gameObject);
|
|
return go.GetComponent<TMachine>().nest.macro;
|
|
}
|
|
}
|
|
}
|