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 NesterState<TGraph, TMacro> : State, INesterState 7 where TGraph : class, IGraph, new() 8 where TMacro : Macro<TGraph> 9 { 10 protected NesterState() 11 { 12 nest.nester = this; 13 } 14 15 protected NesterState(TMacro macro) 16 { 17 nest.nester = this; 18 nest.macro = macro; 19 nest.source = GraphSource.Macro; 20 } 21 22 [Serialize] 23 public GraphNest<TGraph, TMacro> nest { get; private set; } = new GraphNest<TGraph, TMacro>(); 24 25 [DoNotSerialize] 26 IGraphNest IGraphNester.nest => nest; 27 28 [DoNotSerialize] 29 IGraph IGraphParent.childGraph => nest.graph; 30 31 [DoNotSerialize] 32 bool IGraphParent.isSerializationRoot => nest.source == GraphSource.Macro; 33 34 [DoNotSerialize] 35 UnityObject IGraphParent.serializedObject => nest.macro; 36 37 [DoNotSerialize] 38 public override IEnumerable<ISerializationDependency> deserializationDependencies => nest.deserializationDependencies; 39 40 protected void CopyFrom(NesterState<TGraph, TMacro> source) 41 { 42 base.CopyFrom(source); 43 44 nest = source.nest; 45 } 46 47 public override IEnumerable<object> GetAotStubs(HashSet<object> visited) 48 { 49 return LinqUtility.Concat<object>(base.GetAotStubs(visited), nest.GetAotStubs(visited)); 50 } 51 52 public abstract TGraph DefaultGraph(); 53 54 IGraph IGraphParent.DefaultGraph() => DefaultGraph(); 55 56 void IGraphNester.InstantiateNest() => InstantiateNest(); 57 58 void IGraphNester.UninstantiateNest() => UninstantiateNest(); 59 } 60}