@@ -127,6 +127,15 @@ def generate_version(argcount, const=False, returns=False, required=False, compa
127127 callsiargs = f"Variant vargs[{ argcount } ] = {{ "
128128 callsiargptrs = f"\t \t \t const Variant *vargptrs[{ argcount } ] = {{ "
129129 callptrargsptr = f"\t \t \t GDExtensionConstTypePtr argptrs[{ argcount } ] = {{ "
130+
131+ if method_info :
132+ method_info += "\\ \n \t \t "
133+ method_info += (
134+ "_gdvirtual_set_method_info_args<"
135+ + ", " .join (f"m_type{ i + 1 } " for i in range (argcount ))
136+ + ">(method_info);"
137+ )
138+
130139 callptrargs = ""
131140 for i in range (argcount ):
132141 if i > 0 :
@@ -144,10 +153,6 @@ def generate_version(argcount, const=False, returns=False, required=False, compa
144153 f"PtrToArg<m_type{ i + 1 } >::EncodeT argval{ i + 1 } = (PtrToArg<m_type{ i + 1 } >::EncodeT)arg{ i + 1 } ;\\ \n "
145154 )
146155 callptrargsptr += f"&argval{ i + 1 } "
147- if method_info :
148- method_info += "\\ \n \t \t "
149- method_info += f"method_info.arguments.push_back(GetTypeInfo<m_type{ i + 1 } >::get_class_info());\\ \n "
150- method_info += f"\t \t method_info.arguments_metadata.push_back(GetTypeInfo<m_type{ i + 1 } >::METADATA);"
151156
152157 if argcount :
153158 callsiargs += " };\\ \n "
@@ -197,6 +202,12 @@ def run(target, source, env):
197202
198203inline constexpr uintptr_t _INVALID_GDVIRTUAL_FUNC_ADDR = static_cast<uintptr_t>(-1);
199204
205+ template <typename... Args>
206+ void _gdvirtual_set_method_info_args(MethodInfo &p_method_info) {
207+ p_method_info.arguments = { GetTypeInfo<Args>::get_class_info()... };
208+ p_method_info.arguments_metadata = { GetTypeInfo<Args>::METADATA... };
209+ }
210+
200211"""
201212
202213 for i in range (max_versions + 1 ):
0 commit comments