File size: 1,197 Bytes
18a519f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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;
        }
    }
}