summaryrefslogtreecommitdiff
path: root/modules/mono
diff options
context:
space:
mode:
authorBen Rog-Wilhelm <zorba-githubdesktop20180420@pavlovian.net>2018-12-08 00:54:12 -0800
committerBen Rog-Wilhelm <zorba-githubdesktop20180420@pavlovian.net>2018-12-08 00:54:12 -0800
commitb26487a2b46e6a15af2cbbed88755fd33d35e935 (patch)
tree18a32ab01c83814c10612b35d9217cf68c405d74 /modules/mono
parentf13f2d512f0439a29804182cee756dce62add857 (diff)
Tweaks after feedback
Diffstat (limited to 'modules/mono')
-rw-r--r--modules/mono/csharp_script.cpp1
-rw-r--r--modules/mono/mono_gd/gd_mono_class.cpp26
-rw-r--r--modules/mono/mono_gd/gd_mono_class.h2
3 files changed, 11 insertions, 18 deletions
diff --git a/modules/mono/csharp_script.cpp b/modules/mono/csharp_script.cpp
index ba31f12d37..943d95bfc9 100644
--- a/modules/mono/csharp_script.cpp
+++ b/modules/mono/csharp_script.cpp
@@ -2479,6 +2479,7 @@ void CSharpScript::get_script_method_list(List<MethodInfo> *p_list) const {
if (!script_class)
return;
+ // 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());
diff --git a/modules/mono/mono_gd/gd_mono_class.cpp b/modules/mono/mono_gd/gd_mono_class.cpp
index 400735bb20..c55f9160bd 100644
--- a/modules/mono/mono_gd/gd_mono_class.cpp
+++ b/modules/mono/mono_gd/gd_mono_class.cpp
@@ -139,20 +139,6 @@ void GDMonoClass::fetch_attributes() {
attrs_fetched = true;
}
-void GDMonoClass::fetch_method_list() {
-
- if (method_list_fetched)
- return;
-
- void *iter = NULL;
- MonoMethod *raw_method = NULL;
- while ((raw_method = mono_class_get_methods(get_mono_ptr(), &iter)) != NULL) {
- method_list.push_back(memnew(GDMonoMethod(mono_method_get_name(raw_method), raw_method)));
- }
-
- method_list_fetched = true;
-}
-
void GDMonoClass::fetch_methods_with_godot_api_checks(GDMonoClass *p_native_base) {
CRASH_COND(!CACHED_CLASS(GodotObject)->is_assignable_from(this));
@@ -465,8 +451,16 @@ const Vector<GDMonoClass *> &GDMonoClass::get_all_delegates() {
}
const Vector<GDMonoMethod *> &GDMonoClass::get_all_methods() {
- if (!method_list_fetched)
- fetch_method_list();
+
+ if (!method_list_fetched) {
+ void *iter = NULL;
+ MonoMethod *raw_method = NULL;
+ while ((raw_method = mono_class_get_methods(get_mono_ptr(), &iter)) != NULL) {
+ method_list.push_back(memnew(GDMonoMethod(mono_method_get_name(raw_method), raw_method)));
+ }
+
+ method_list_fetched = true;
+ }
return method_list;
}
diff --git a/modules/mono/mono_gd/gd_mono_class.h b/modules/mono/mono_gd/gd_mono_class.h
index 4199eb22c6..689001f494 100644
--- a/modules/mono/mono_gd/gd_mono_class.h
+++ b/modules/mono/mono_gd/gd_mono_class.h
@@ -102,8 +102,6 @@ class GDMonoClass {
friend class GDMonoAssembly;
GDMonoClass(const StringName &p_namespace, const StringName &p_name, MonoClass *p_class, GDMonoAssembly *p_assembly);
- void fetch_method_list();
-
public:
static String get_full_name(MonoClass *p_mono_class);
static MonoType *get_mono_type(MonoClass *p_mono_class);