A game about forced loneliness, made by TACStudios
1using System.Collections.Generic; 2using UnityObject = UnityEngine.Object; 3 4namespace Unity.VisualScripting 5{ 6 public abstract class NesterStateTransition<TGraph, TMacro> : StateTransition, INesterStateTransition 7 where TGraph : class, IGraph, new() 8 where TMacro : Macro<TGraph> 9 { 10 protected NesterStateTransition() 11 { 12 nest.nester = this; 13 } 14 15 protected NesterStateTransition(IState source, IState destination) : base(source, destination) 16 { 17 nest.nester = this; 18 } 19 20 [Serialize] 21 public GraphNest<TGraph, TMacro> nest { get; private set; } = new GraphNest<TGraph, TMacro>(); 22 23 [DoNotSerialize] 24 IGraphNest IGraphNester.nest => nest; 25 26 [DoNotSerialize] 27 IGraph IGraphParent.childGraph => nest.graph; 28 29 [DoNotSerialize] 30 bool IGraphParent.isSerializationRoot => nest.source == GraphSource.Macro; 31 32 [DoNotSerialize] 33 UnityObject IGraphParent.serializedObject => nest.macro; 34 35 [DoNotSerialize] 36 public override IEnumerable<ISerializationDependency> deserializationDependencies => nest.deserializationDependencies; 37 38 public override IEnumerable<object> GetAotStubs(HashSet<object> visited) 39 { 40 return LinqUtility.Concat<object>(base.GetAotStubs(visited), nest.GetAotStubs(visited)); 41 } 42 43 protected void CopyFrom(NesterStateTransition<TGraph, TMacro> source) 44 { 45 base.CopyFrom(source); 46 47 nest = source.nest; 48 } 49 50 public abstract TGraph DefaultGraph(); 51 52 IGraph IGraphParent.DefaultGraph() => DefaultGraph(); 53 54 void IGraphNester.InstantiateNest() => InstantiateNest(); 55 56 void IGraphNester.UninstantiateNest() => UninstantiateNest(); 57 } 58}