|
@@ -1861,6 +1861,28 @@ Variant::Type CSharpInstance::get_property_type(const StringName &p_name, bool *
|
|
|
return Variant::NIL;
|
|
|
}
|
|
|
|
|
|
+void CSharpInstance::get_method_list(List<MethodInfo> *p_list) const {
|
|
|
+ if (!script->is_valid() || !script->script_class)
|
|
|
+ return;
|
|
|
+
|
|
|
+ GD_MONO_SCOPE_THREAD_ATTACH;
|
|
|
+
|
|
|
+ // TODO: We're filtering out constructors but there may be other methods unsuitable for explicit calls.
|
|
|
+ GDMonoClass *top = script->script_class;
|
|
|
+
|
|
|
+ while (top && top != script->native) {
|
|
|
+ const Vector<GDMonoMethod *> &methods = top->get_all_methods();
|
|
|
+ for (int i = 0; i < methods.size(); ++i) {
|
|
|
+ MethodInfo minfo = methods[i]->get_method_info();
|
|
|
+ if (minfo.name != CACHED_STRING_NAME(dotctor)) {
|
|
|
+ p_list->push_back(minfo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ top = top->get_parent_class();
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
bool CSharpInstance::has_method(const StringName &p_method) const {
|
|
|
if (!script.is_valid()) {
|
|
|
return false;
|
|
@@ -3280,10 +3302,19 @@ void CSharpScript::get_script_method_list(List<MethodInfo> *p_list) const {
|
|
|
|
|
|
GD_MONO_SCOPE_THREAD_ATTACH;
|
|
|
|
|
|
- // TODO: Filter out things unsuitable for explicit calls, like constructors.
|
|
|
- const Vector<GDMonoMethod *> &methods = script_class->get_all_methods();
|
|
|
- for (int i = 0; i < methods.size(); ++i) {
|
|
|
- p_list->push_back(methods[i]->get_method_info());
|
|
|
+ // TODO: We're filtering out constructors but there may be other methods unsuitable for explicit calls.
|
|
|
+ GDMonoClass *top = script_class;
|
|
|
+
|
|
|
+ while (top && top != native) {
|
|
|
+ const Vector<GDMonoMethod *> &methods = top->get_all_methods();
|
|
|
+ for (int i = 0; i < methods.size(); ++i) {
|
|
|
+ MethodInfo minfo = methods[i]->get_method_info();
|
|
|
+ if (minfo.name != CACHED_STRING_NAME(dotctor)) {
|
|
|
+ p_list->push_back(methods[i]->get_method_info());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ top = top->get_parent_class();
|
|
|
}
|
|
|
}
|
|
|
|