1- using NodeDev . Core . Types ;
1+ using NodeDev . Core . Nodes ;
2+ using NodeDev . Core . Nodes . Flow ;
3+ using NodeDev . Core . Types ;
24using System ;
35using System . Collections . Generic ;
46using System . Linq ;
810
911namespace NodeDev . Core . Class
1012{
11- public class NodeClassMethod : IMethodInfo
12- {
13+ public class NodeClassMethod : IMethodInfo
14+ {
1315
1416 public class RealMethodInfo : IMethodInfo
1517 {
@@ -67,15 +69,15 @@ public NodeClassMethod(NodeClass ownerClass, string name, TypeBase returnType, G
6769 }
6870
6971
70- public NodeClass Class { get ; }
72+ public NodeClass Class { get ; }
7173
72- public string Name { get ; private set ; }
74+ public string Name { get ; private set ; }
7375
74- public TypeBase ReturnType { get ; }
76+ public TypeBase ReturnType { get ; }
7577
76- public List < NodeClassMethodParameter > Parameters { get ; } = new ( ) ;
78+ public List < NodeClassMethodParameter > Parameters { get ; } = new ( ) ;
7779
78- public Graph Graph { get ; }
80+ public Graph Graph { get ; }
7981
8082 public bool IsStatic => false ;
8183
@@ -84,14 +86,36 @@ public NodeClassMethod(NodeClass ownerClass, string name, TypeBase returnType, G
8486
8587 public void Rename ( string newName )
8688 {
87- if ( string . IsNullOrWhiteSpace ( newName ) )
89+ if ( string . IsNullOrWhiteSpace ( newName ) )
8890 return ;
8991
9092 Name = newName ;
9193
9294 Class . Project . GraphChangedSubject . OnNext ( Graph ) ;
9395 }
9496
97+ public void AddDefaultParameter ( )
98+ {
99+ var newParameter = new NodeClassMethodParameter ( "NewParameter" , Class . TypeFactory . Get < int > ( ) , this ) ;
100+ Parameters . Add ( newParameter ) ;
101+
102+ foreach ( var methodCall in Class . Project . GetNodes < MethodCall > ( ) )
103+ {
104+ if ( methodCall . TargetMethod == this )
105+ {
106+ methodCall . OnNewMethodParameter ( newParameter ) ;
107+ Class . Project . GraphChangedSubject . OnNext ( methodCall . Graph ) ;
108+ }
109+ }
110+
111+ var entry = Graph . Nodes . Values . OfType < EntryNode > ( ) . FirstOrDefault ( ) ;
112+ if ( entry != null )
113+ {
114+ entry . AddNewParameter ( newParameter ) ;
115+ Class . Project . GraphChangedSubject . OnNext ( Graph ) ;
116+ }
117+ }
118+
95119 public IEnumerable < IMethodParameterInfo > GetParameters ( )
96120 {
97121 return Parameters ;
@@ -101,21 +125,21 @@ public IEnumerable<IMethodParameterInfo> GetParameters()
101125
102126 private SerializedNodeClassMethod ? SavedDataDuringDeserializationStep1 { get ; set ; }
103127 public static NodeClassMethod Deserialize ( NodeClass owner , string serialized )
104- {
105- var serializedNodeClassMethod = System . Text . Json . JsonSerializer . Deserialize < SerializedNodeClassMethod > ( serialized ) ?? throw new Exception ( "Unable to deserialize node class method" ) ;
128+ {
129+ var serializedNodeClassMethod = System . Text . Json . JsonSerializer . Deserialize < SerializedNodeClassMethod > ( serialized ) ?? throw new Exception ( "Unable to deserialize node class method" ) ;
106130
107- var returnType = TypeBase . Deserialize ( owner . Project . TypeFactory , serializedNodeClassMethod . ReturnTypeFullName , serializedNodeClassMethod . ReturnType ) ;
131+ var returnType = TypeBase . Deserialize ( owner . Project . TypeFactory , serializedNodeClassMethod . ReturnTypeFullName , serializedNodeClassMethod . ReturnType ) ;
108132 var graph = new Graph ( ) ;
109133 var nodeClassMethod = new NodeClassMethod ( owner , serializedNodeClassMethod . Name , returnType , graph ) ;
110134 graph . SelfMethod = nodeClassMethod ; // a bit / really ugly
111135
112136 foreach ( var parameter in serializedNodeClassMethod . Parameters )
113- nodeClassMethod . Parameters . Add ( NodeClassMethodParameter . Deserialize ( owner . Project . TypeFactory , parameter ) ) ;
137+ nodeClassMethod . Parameters . Add ( NodeClassMethodParameter . Deserialize ( owner . Project . TypeFactory , parameter , nodeClassMethod ) ) ;
114138
115139 nodeClassMethod . SavedDataDuringDeserializationStep1 = serializedNodeClassMethod ;
116140
117141 return nodeClassMethod ;
118- }
142+ }
119143
120144 public void Deserialize_Step3 ( )
121145 {
@@ -128,7 +152,7 @@ public void Deserialize_Step3()
128152 }
129153
130154 public string Serialize ( )
131- {
155+ {
132156 var serializedNodeClassMethod = new SerializedNodeClassMethod ( Name , ReturnType . GetType ( ) . FullName ! , ReturnType . FullName , Parameters . Select ( x => x . Serialize ( ) ) . ToList ( ) , Graph . Serialize ( ) ) ;
133157 return System . Text . Json . JsonSerializer . Serialize ( serializedNodeClassMethod ) ;
134158 }
0 commit comments