1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- #include "monodevelop_instance.h"
- #include "../mono_gd/gd_mono.h"
- #include "../mono_gd/gd_mono_class.h"
- void MonoDevelopInstance::execute(const Vector<String> &p_files) {
- _GDMONO_SCOPE_DOMAIN_(TOOLS_DOMAIN)
- ERR_FAIL_NULL(execute_method);
- ERR_FAIL_COND(gc_handle.is_null());
- MonoException *exc = NULL;
- Variant files = p_files;
- const Variant *args[1] = { &files };
- execute_method->invoke(gc_handle->get_target(), args, &exc);
- if (exc) {
- GDMonoUtils::debug_print_unhandled_exception(exc);
- ERR_FAIL();
- }
- }
- void MonoDevelopInstance::execute(const String &p_file) {
- Vector<String> files;
- files.push_back(p_file);
- execute(files);
- }
- MonoDevelopInstance::MonoDevelopInstance(const String &p_solution, EditorId p_editor_id) {
- _GDMONO_SCOPE_DOMAIN_(TOOLS_DOMAIN)
- GDMonoClass *klass = GDMono::get_singleton()->get_editor_tools_assembly()->get_class("GodotSharpTools.Editor", "MonoDevelopInstance");
- MonoObject *obj = mono_object_new(TOOLS_DOMAIN, klass->get_mono_ptr());
- GDMonoMethod *ctor = klass->get_method(".ctor", 2);
- MonoException *exc = NULL;
- Variant solution = p_solution;
- Variant editor_id = p_editor_id;
- const Variant *args[2] = { &solution, &editor_id };
- ctor->invoke(obj, args, &exc);
- if (exc) {
- GDMonoUtils::debug_print_unhandled_exception(exc);
- ERR_FAIL();
- }
- gc_handle = MonoGCHandle::create_strong(obj);
- execute_method = klass->get_method("Execute", 1);
- }
|