説明なし
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

NesterState.cs 1.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. using System.Collections.Generic;
  2. using UnityObject = UnityEngine.Object;
  3. namespace Unity.VisualScripting
  4. {
  5. public abstract class NesterState<TGraph, TMacro> : State, INesterState
  6. where TGraph : class, IGraph, new()
  7. where TMacro : Macro<TGraph>
  8. {
  9. protected NesterState()
  10. {
  11. nest.nester = this;
  12. }
  13. protected NesterState(TMacro macro)
  14. {
  15. nest.nester = this;
  16. nest.macro = macro;
  17. nest.source = GraphSource.Macro;
  18. }
  19. [Serialize]
  20. public GraphNest<TGraph, TMacro> nest { get; private set; } = new GraphNest<TGraph, TMacro>();
  21. [DoNotSerialize]
  22. IGraphNest IGraphNester.nest => nest;
  23. [DoNotSerialize]
  24. IGraph IGraphParent.childGraph => nest.graph;
  25. [DoNotSerialize]
  26. bool IGraphParent.isSerializationRoot => nest.source == GraphSource.Macro;
  27. [DoNotSerialize]
  28. UnityObject IGraphParent.serializedObject => nest.macro;
  29. [DoNotSerialize]
  30. public override IEnumerable<ISerializationDependency> deserializationDependencies => nest.deserializationDependencies;
  31. protected void CopyFrom(NesterState<TGraph, TMacro> source)
  32. {
  33. base.CopyFrom(source);
  34. nest = source.nest;
  35. }
  36. public override IEnumerable<object> GetAotStubs(HashSet<object> visited)
  37. {
  38. return LinqUtility.Concat<object>(base.GetAotStubs(visited), nest.GetAotStubs(visited));
  39. }
  40. public abstract TGraph DefaultGraph();
  41. IGraph IGraphParent.DefaultGraph() => DefaultGraph();
  42. void IGraphNester.InstantiateNest() => InstantiateNest();
  43. void IGraphNester.UninstantiateNest() => UninstantiateNest();
  44. }
  45. }