1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- 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();
- }
- }
- }
|