diff options
Diffstat (limited to 'modules/multiscript')
-rw-r--r-- | modules/multiscript/SCsub | 7 | ||||
-rw-r--r-- | modules/multiscript/config.py | 8 | ||||
-rw-r--r-- | modules/multiscript/multiscript.cpp | 750 | ||||
-rw-r--r-- | modules/multiscript/multiscript.h | 200 | ||||
-rw-r--r-- | modules/multiscript/register_types.cpp | 51 | ||||
-rw-r--r-- | modules/multiscript/register_types.h | 31 |
6 files changed, 0 insertions, 1047 deletions
diff --git a/modules/multiscript/SCsub b/modules/multiscript/SCsub deleted file mode 100644 index 0882406761..0000000000 --- a/modules/multiscript/SCsub +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env python - -Import('env') - -env.add_source_files(env.modules_sources, "*.cpp") - -Export('env') diff --git a/modules/multiscript/config.py b/modules/multiscript/config.py deleted file mode 100644 index 5698a37295..0000000000 --- a/modules/multiscript/config.py +++ /dev/null @@ -1,8 +0,0 @@ - - -def can_build(platform): - return True - - -def configure(env): - pass diff --git a/modules/multiscript/multiscript.cpp b/modules/multiscript/multiscript.cpp deleted file mode 100644 index b2633b7207..0000000000 --- a/modules/multiscript/multiscript.cpp +++ /dev/null @@ -1,750 +0,0 @@ -/*************************************************************************/ -/* multiscript.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#include "multiscript.h" - -bool MultiScriptInstance::set(const StringName &p_name, const Variant &p_value) { - - ScriptInstance **sarr = instances.ptr(); - int sc = instances.size(); - - for (int i = 0; i < sc; i++) { - - if (!sarr[i]) - continue; - - bool found = sarr[i]->set(p_name, p_value); - if (found) - return true; - } - - if (String(p_name).begins_with("script_")) { - bool valid; - owner->set(p_name, p_value, &valid); - return valid; - } - return false; -} - -bool MultiScriptInstance::get(const StringName &p_name, Variant &r_ret) const { - - ScriptInstance **sarr = instances.ptr(); - int sc = instances.size(); - - for (int i = 0; i < sc; i++) { - - if (!sarr[i]) - continue; - - bool found = sarr[i]->get(p_name, r_ret); - if (found) - return true; - } - if (String(p_name).begins_with("script_")) { - bool valid; - r_ret = owner->get(p_name, &valid); - return valid; - } - return false; -} -void MultiScriptInstance::get_property_list(List<PropertyInfo> *p_properties) const { - - ScriptInstance **sarr = instances.ptr(); - int sc = instances.size(); - - Set<String> existing; - - for (int i = 0; i < sc; i++) { - - if (!sarr[i]) - continue; - - List<PropertyInfo> pl; - sarr[i]->get_property_list(&pl); - - for (List<PropertyInfo>::Element *E = pl.front(); E; E = E->next()) { - - if (existing.has(E->get().name)) - continue; - - p_properties->push_back(E->get()); - existing.insert(E->get().name); - } - } - - p_properties->push_back(PropertyInfo(Variant::NIL, "Scripts", PROPERTY_HINT_NONE, String(), PROPERTY_USAGE_CATEGORY)); - - for (int i = 0; i < owner->scripts.size(); i++) { - - p_properties->push_back(PropertyInfo(Variant::OBJECT, "script_" + String::chr('a' + i), PROPERTY_HINT_RESOURCE_TYPE, "Script", PROPERTY_USAGE_EDITOR)); - } - - if (owner->scripts.size() < 25) { - - p_properties->push_back(PropertyInfo(Variant::OBJECT, "script_" + String::chr('a' + (owner->scripts.size())), PROPERTY_HINT_RESOURCE_TYPE, "Script", PROPERTY_USAGE_EDITOR)); - } -} - -void MultiScriptInstance::get_method_list(List<MethodInfo> *p_list) const { - - ScriptInstance **sarr = instances.ptr(); - int sc = instances.size(); - - Set<StringName> existing; - - for (int i = 0; i < sc; i++) { - - if (!sarr[i]) - continue; - - List<MethodInfo> ml; - sarr[i]->get_method_list(&ml); - - for (List<MethodInfo>::Element *E = ml.front(); E; E = E->next()) { - - if (existing.has(E->get().name)) - continue; - - p_list->push_back(E->get()); - existing.insert(E->get().name); - } - } -} -bool MultiScriptInstance::has_method(const StringName &p_method) const { - - ScriptInstance **sarr = instances.ptr(); - int sc = instances.size(); - - for (int i = 0; i < sc; i++) { - - if (!sarr[i]) - continue; - - if (sarr[i]->has_method(p_method)) - return true; - } - - return false; -} - -Variant MultiScriptInstance::call(const StringName &p_method, const Variant **p_args, int p_argcount, Variant::CallError &r_error) { - - ScriptInstance **sarr = instances.ptr(); - int sc = instances.size(); - - for (int i = 0; i < sc; i++) { - - if (!sarr[i]) - continue; - - Variant r = sarr[i]->call(p_method, p_args, p_argcount, r_error); - if (r_error.error == Variant::CallError::CALL_OK) - return r; - else if (r_error.error != Variant::CallError::CALL_ERROR_INVALID_METHOD) - return r; - } - - r_error.error = Variant::CallError::CALL_ERROR_INVALID_METHOD; - return Variant(); -} - -void MultiScriptInstance::call_multilevel(const StringName &p_method, const Variant **p_args, int p_argcount) { - - ScriptInstance **sarr = instances.ptr(); - int sc = instances.size(); - - for (int i = 0; i < sc; i++) { - - if (!sarr[i]) - continue; - - sarr[i]->call_multilevel(p_method, p_args, p_argcount); - } -} -void MultiScriptInstance::notification(int p_notification) { - - // ScriptInstance **sarr = instances.ptr(); - int sc = instances.size(); - - for (int i = 0; i < sc; i++) { - - ScriptInstance *instance = instances[i]; - - if (!instance) - continue; - - instance->notification(p_notification); - } -} - -Ref<Script> MultiScriptInstance::get_script() const { - - return owner; -} - -ScriptLanguage *MultiScriptInstance::get_language() { - - return MultiScriptLanguage::get_singleton(); -} - -MultiScriptInstance::~MultiScriptInstance() { - - owner->remove_instance(object); -} - -Variant::Type MultiScriptInstance::get_property_type(const StringName &p_name, bool *r_is_valid) const { - bool valid = false; - Variant::Type type; - - ScriptInstance **sarr = instances.ptr(); - int sc = instances.size(); - - for (int i = 0; i < sc; i++) { - - if (!sarr[i]) - continue; - - type = sarr[i]->get_property_type(p_name, &valid); - if (valid) { - *r_is_valid = valid; - return type; - } - } - *r_is_valid = false; - return Variant::NIL; -} - -ScriptInstance::RPCMode MultiScriptInstance::get_rpc_mode(const StringName &p_method) const { - ScriptInstance **sarr = instances.ptr(); - int sc = instances.size(); - - for (int i = 0; i < sc; i++) { - - if (!sarr[i]) - continue; - if (sarr[i]->has_method(p_method)) - return sarr[i]->get_rpc_mode(p_method); - } - return RPC_MODE_DISABLED; -} - -ScriptInstance::RPCMode MultiScriptInstance::get_rset_mode(const StringName &p_variable) const { - ScriptInstance **sarr = instances.ptr(); - int sc = instances.size(); - - for (int i = 0; i < sc; i++) { - - if (!sarr[i]) - continue; - - List<PropertyInfo> properties; - sarr[i]->get_property_list(&properties); - - for (List<PropertyInfo>::Element *P = properties.front(); P; P = P->next()) { - if (P->get().name == p_variable) { - return sarr[i]->get_rset_mode(p_variable); - } - } - } - return RPC_MODE_DISABLED; -} - -/////////////////// - -bool MultiScript::is_tool() const { - - for (int i = 0; i < scripts.size(); i++) { - - if (scripts[i]->is_tool()) - return true; - } - - return false; -} - -bool MultiScript::_set(const StringName &p_name, const Variant &p_value) { - - _THREAD_SAFE_METHOD_ - - String s = String(p_name); - if (s.begins_with("script_")) { - - int idx = s[7]; - if (idx == 0) - return false; - idx -= 'a'; - - ERR_FAIL_COND_V(idx < 0, false); - - Ref<Script> s = p_value; - - if (idx < scripts.size()) { - - if (s.is_null()) - remove_script(idx); - else - set_script(idx, s); - } else if (idx == scripts.size()) { - if (s.is_null()) - return false; - add_script(s); - } else - return false; - - return true; - } - - return false; -} - -bool MultiScript::_get(const StringName &p_name, Variant &r_ret) const { - - _THREAD_SAFE_METHOD_ - - String s = String(p_name); - if (s.begins_with("script_")) { - - int idx = s[7]; - if (idx == 0) - return false; - idx -= 'a'; - - ERR_FAIL_COND_V(idx < 0, false); - - if (idx < scripts.size()) { - - r_ret = get_script(idx); - return true; - } else if (idx == scripts.size()) { - r_ret = Ref<Script>(); - return true; - } - } - - return false; -} -void MultiScript::_get_property_list(List<PropertyInfo> *p_list) const { - - _THREAD_SAFE_METHOD_ - - for (int i = 0; i < scripts.size(); i++) { - - p_list->push_back(PropertyInfo(Variant::OBJECT, "script_" + String::chr('a' + i), PROPERTY_HINT_RESOURCE_TYPE, "Script")); - } - - if (scripts.size() < 25) { - - p_list->push_back(PropertyInfo(Variant::OBJECT, "script_" + String::chr('a' + (scripts.size())), PROPERTY_HINT_RESOURCE_TYPE, "Script")); - } -} - -void MultiScript::set_script(int p_idx, const Ref<Script> &p_script) { - - _THREAD_SAFE_METHOD_ - - ERR_FAIL_INDEX(p_idx, scripts.size()); - ERR_FAIL_COND(p_script.is_null()); - - scripts[p_idx] = p_script; - Ref<Script> s = p_script; - - for (Map<Object *, MultiScriptInstance *>::Element *E = instances.front(); E; E = E->next()) { - - MultiScriptInstance *msi = E->get(); - ScriptInstance *si = msi->instances[p_idx]; - if (si) { - msi->instances[p_idx] = NULL; - memdelete(si); - } - - if (p_script->can_instance()) - msi->instances[p_idx] = s->instance_create(msi->object); - } -} - -Ref<Script> MultiScript::get_script(int p_idx) const { - - _THREAD_SAFE_METHOD_ - - ERR_FAIL_INDEX_V(p_idx, scripts.size(), Ref<Script>()); - - return scripts[p_idx]; -} -void MultiScript::add_script(const Ref<Script> &p_script) { - - _THREAD_SAFE_METHOD_ - ERR_FAIL_COND(p_script.is_null()); - Multi *script_owner = memnew(Multi); - script_instances.push_back(script_owner); - scripts.push_back(p_script); - Ref<Script> s = p_script; - - for (Map<Object *, MultiScriptInstance *>::Element *E = instances.front(); E; E = E->next()) { - - MultiScriptInstance *msi = E->get(); - - if (p_script->can_instance()) { - script_owner->real_owner = msi->object; - msi->instances.push_back(s->instance_create(script_owner)); - } else { - msi->instances.push_back(NULL); - } - - msi->object->_change_notify(); - } - - _change_notify(); -} - -void MultiScript::remove_script(int p_idx) { - - _THREAD_SAFE_METHOD_ - - ERR_FAIL_INDEX(p_idx, scripts.size()); - - scripts.remove(p_idx); - script_instances.remove(p_idx); - - for (Map<Object *, MultiScriptInstance *>::Element *E = instances.front(); E; E = E->next()) { - - MultiScriptInstance *msi = E->get(); - ScriptInstance *si = msi->instances[p_idx]; - msi->instances.remove(p_idx); - if (si) { - memdelete(si); - } - - msi->object->_change_notify(); - } -} - -void MultiScript::remove_instance(Object *p_object) { - - _THREAD_SAFE_METHOD_ - instances.erase(p_object); -} - -bool MultiScript::can_instance() const { - - return true; -} - -StringName MultiScript::get_instance_base_type() const { - - return StringName(); -} -ScriptInstance *MultiScript::instance_create(Object *p_this) { - - _THREAD_SAFE_METHOD_ - MultiScriptInstance *msi = memnew(MultiScriptInstance); - msi->object = p_this; - msi->owner = this; - - for (int i = 0; i < scripts.size(); i++) { - - ScriptInstance *si; - - if (scripts[i]->can_instance()) { - script_instances[i]->real_owner = p_this; - si = scripts[i]->instance_create(script_instances[i]); - } else { - si = NULL; - } - - msi->instances.push_back(si); - } - - instances[p_this] = msi; - p_this->_change_notify(); - return msi; -} -bool MultiScript::instance_has(const Object *p_this) const { - - _THREAD_SAFE_METHOD_ - return instances.has((Object *)p_this); -} - -bool MultiScript::has_source_code() const { - - return false; -} -String MultiScript::get_source_code() const { - - return ""; -} -void MultiScript::set_source_code(const String &p_code) { -} -Error MultiScript::reload(bool p_keep_state) { - - for (int i = 0; i < scripts.size(); i++) - scripts[i]->reload(p_keep_state); - - return OK; -} - -String MultiScript::get_node_type() const { - - return ""; -} - -void MultiScript::_bind_methods() { -} - -ScriptLanguage *MultiScript::get_language() const { - - return MultiScriptLanguage::get_singleton(); -} - -/////////////// - -MultiScript::MultiScript() { -} - -MultiScript::~MultiScript() { - for (int i = 0; i < script_instances.size(); i++) { - memdelete(script_instances[i]); - } - - script_instances.resize(0); -} - -Ref<Script> MultiScript::get_base_script() const { - Ref<MultiScript> base_script; - return base_script; -} - -bool MultiScript::has_method(const StringName &p_method) const { - for (int i = 0; i < scripts.size(); i++) { - if (scripts[i]->has_method(p_method)) { - return true; - } - } - return false; -} - -MethodInfo MultiScript::get_method_info(const StringName &p_method) const { - for (int i = 0; i < scripts.size(); i++) { - if (scripts[i]->has_method(p_method)) { - return scripts[i]->get_method_info(p_method); - } - } - return MethodInfo(); -} - -bool MultiScript::has_script_signal(const StringName &p_signal) const { - for (int i = 0; i < scripts.size(); i++) { - if (scripts[i]->has_script_signal(p_signal)) { - return true; - } - } - return false; -} - -void MultiScript::get_script_signal_list(List<MethodInfo> *r_signals) const { - for (int i = 0; i < scripts.size(); i++) { - scripts[i]->get_script_signal_list(r_signals); - } -} - -bool MultiScript::get_property_default_value(const StringName &p_property, Variant &r_value) const { - for (int i = 0; i < scripts.size(); i++) { - - if (scripts[i]->get_property_default_value(p_property, r_value)) { - return true; - } - } - return false; -} - -void MultiScript::get_script_method_list(List<MethodInfo> *p_list) const { - for (int i = 0; i < scripts.size(); i++) { - scripts[i]->get_script_method_list(p_list); - } -} - -void MultiScript::get_script_property_list(List<PropertyInfo> *p_list) const { - for (int i = 0; i < scripts.size(); i++) { - scripts[i]->get_script_property_list(p_list); - } -} - -void MultiScript::update_exports() { - for (int i = 0; i < scripts.size(); i++) { - scripts[i]->update_exports(); - } -} - -MultiScriptLanguage *MultiScriptLanguage::singleton = NULL; - -MultiScriptLanguage *MultiScriptLanguage::get_singleton() { - return singleton; -} - -String MultiScriptLanguage::get_name() const { - return "MultiScript"; -} - -void MultiScriptLanguage::init() {} - -String MultiScriptLanguage::get_type() const { - return "MultiScript"; -} - -String MultiScriptLanguage::get_extension() const { - return ""; -} - -Error MultiScriptLanguage::execute_file(const String &p_path) { - return OK; -} - -void MultiScriptLanguage::finish() {} - -void MultiScriptLanguage::get_reserved_words(List<String> *p_words) const {} - -void MultiScriptLanguage::get_comment_delimiters(List<String> *p_delimiters) const {} - -void MultiScriptLanguage::get_string_delimiters(List<String> *p_delimiters) const {} - -Ref<Script> MultiScriptLanguage::get_template(const String &p_class_name, const String &p_base_class_name) const { - MultiScript *s = memnew(MultiScript); - s->base_class_name = p_base_class_name; - return Ref<MultiScript>(s); -} - -bool MultiScriptLanguage::validate(const String &p_script, int &r_line_error, int &r_col_error, String &r_test_error, const String &p_path, List<String> *r_fn) const { - return true; -} - -Script *MultiScriptLanguage::create_script() const { - return memnew(MultiScript); -} - -bool MultiScriptLanguage::has_named_classes() const { - return false; -} - -int MultiScriptLanguage::find_function(const String &p_function, const String &p_code) const { - return -1; -} - -String MultiScriptLanguage::make_function(const String &p_class, const String &p_name, const PoolStringArray &p_args) const { - return ""; -} - -String MultiScriptLanguage::debug_get_error() const { - return ""; -} - -int MultiScriptLanguage::debug_get_stack_level_count() const { - return 0; -} - -int MultiScriptLanguage::debug_get_stack_level_line(int p_level) const { - return 0; -} - -String MultiScriptLanguage::debug_get_stack_level_function(int p_level) const { - return ""; -} - -String MultiScriptLanguage::debug_get_stack_level_source(int p_level) const { - return ""; -} - -void MultiScriptLanguage::debug_get_stack_level_locals(int p_level, List<String> *p_locals, List<Variant> *p_values, int p_max_subitems, int p_max_depth) {} - -void MultiScriptLanguage::debug_get_stack_level_members(int p_level, List<String> *p_members, List<Variant> *p_values, int p_max_subitems, int p_max_depth) {} - -void MultiScriptLanguage::debug_get_globals(List<String> *p_locals, List<Variant> *p_values, int p_max_subitems, int p_max_depth) {} - -String MultiScriptLanguage::debug_parse_stack_level_expression(int p_level, const String &p_expression, int p_max_subitems, int p_max_depth) { - return ""; -} - -void MultiScriptLanguage::get_recognized_extensions(List<String> *p_extensions) const {} - -void MultiScriptLanguage::get_public_functions(List<MethodInfo> *p_functions) const {} - -MultiScriptLanguage::MultiScriptLanguage() { - singleton = this; -} - -MultiScriptLanguage::~MultiScriptLanguage() {} - -void MultiScriptLanguage::auto_indent_code(String &p_code, int p_from_line, int p_to_line) const { -} - -void MultiScriptLanguage::add_global_constant(const StringName &p_variable, const Variant &p_value) { -} - -void MultiScriptLanguage::reload_all_scripts() { -} - -void MultiScriptLanguage::reload_tool_script(const Ref<Script> &p_script, bool p_soft_reload) { -} - -void MultiScriptLanguage::get_public_constants(List<Pair<String, Variant> > *p_constants) const { -} - -void MultiScriptLanguage::profiling_start() { -} - -void MultiScriptLanguage::profiling_stop() { -} - -int MultiScriptLanguage::profiling_get_accumulated_data(ScriptLanguage::ProfilingInfo *p_info_arr, int p_info_max) { - return 0; -} - -int MultiScriptLanguage::profiling_get_frame_data(ScriptLanguage::ProfilingInfo *p_info_arr, int p_info_max) { - return 0; -} - -void Multi::_bind_methods() { - // ClassDB::bind_method("call", &Multi::call); - // ClassDB::bind_method("call_multilevel", &Multi::call_multilevel); - // ClassDB::bind_method("call_multilevel_reversed", &Multi::call_multilevel_reversed); -} - -Variant Multi::call(const StringName &p_method, const Variant **p_args, int p_argcount, Variant::CallError &r_error) { - if (real_owner) - return real_owner->call(p_method, p_args, p_argcount, r_error); - return Variant(); -} - -void Multi::call_multilevel(const StringName &p_method, const Variant **p_args, int p_argcount) { - if (real_owner) - real_owner->call_multilevel(p_method, p_args, p_argcount); -} - -void Multi::call_multilevel_reversed(const StringName &p_method, const Variant **p_args, int p_argcount) { - if (real_owner) - real_owner->call_multilevel_reversed(p_method, p_args, p_argcount); -} diff --git a/modules/multiscript/multiscript.h b/modules/multiscript/multiscript.h deleted file mode 100644 index 7ec1d5402f..0000000000 --- a/modules/multiscript/multiscript.h +++ /dev/null @@ -1,200 +0,0 @@ -/*************************************************************************/ -/* multiscript.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#ifndef MULTISCRIPT_H -#define MULTISCRIPT_H - -#include "os/thread_safe.h" -#include "script_language.h" - -class MultiScript; - -class Multi : public Object { - GDCLASS(Multi, Object) - - friend class MultiScript; - - Object *real_owner; - -public: - static void _bind_methods(); - - virtual Variant call(const StringName &p_method, const Variant **p_args, int p_argcount, Variant::CallError &r_error); - virtual void call_multilevel(const StringName &p_method, const Variant **p_args, int p_argcount); - virtual void call_multilevel_reversed(const StringName &p_method, const Variant **p_args, int p_argcount); -}; - -class MultiScriptInstance : public ScriptInstance { - friend class MultiScript; - mutable Vector<ScriptInstance *> instances; - Object *object; - mutable MultiScript *owner; - -public: - virtual bool set(const StringName &p_name, const Variant &p_value); - virtual bool get(const StringName &p_name, Variant &r_ret) const; - virtual void get_property_list(List<PropertyInfo> *p_properties) const; - - virtual void get_method_list(List<MethodInfo> *p_list) const; - virtual bool has_method(const StringName &p_method) const; - virtual Variant call(const StringName &p_method, const Variant **p_args, int p_argcount, Variant::CallError &r_error); - virtual void call_multilevel(const StringName &p_method, const Variant **p_args, int p_argcount); - virtual void notification(int p_notification); - - virtual Ref<Script> get_script() const; - - virtual ScriptLanguage *get_language(); - virtual ~MultiScriptInstance(); - - // ScriptInstance interface -public: - Variant::Type get_property_type(const StringName &p_name, bool *r_is_valid) const; - RPCMode get_rpc_mode(const StringName &p_method) const; - RPCMode get_rset_mode(const StringName &p_variable) const; -}; - -class MultiScript : public Script { - - _THREAD_SAFE_CLASS_ - friend class MultiScriptInstance; - friend class MultiScriptLanguage; - GDCLASS(MultiScript, Script) - - StringName base_class_name; - - Vector<Ref<Script> > scripts; - Vector<Multi *> script_instances; - - Map<Object *, MultiScriptInstance *> instances; - -protected: - bool _set(const StringName &p_name, const Variant &p_value); - bool _get(const StringName &p_name, Variant &r_ret) const; - void _get_property_list(List<PropertyInfo> *p_list) const; - - static void _bind_methods(); - -public: - void remove_instance(Object *p_object); - virtual bool can_instance() const; - - virtual StringName get_instance_base_type() const; - virtual ScriptInstance *instance_create(Object *p_this); - virtual bool instance_has(const Object *p_this) const; - - virtual bool has_source_code() const; - virtual String get_source_code() const; - virtual void set_source_code(const String &p_code); - virtual Error reload(bool p_keep_state = false); - - virtual bool is_tool() const; - - virtual String get_node_type() const; - - void set_script(int p_idx, const Ref<Script> &p_script); - Ref<Script> get_script(int p_idx) const; - void remove_script(int p_idx); - void add_script(const Ref<Script> &p_script); - - virtual ScriptLanguage *get_language() const; - - MultiScript(); - ~MultiScript(); - - virtual Ref<Script> get_base_script() const; - virtual bool has_method(const StringName &p_method) const; - virtual MethodInfo get_method_info(const StringName &p_method) const; - virtual bool has_script_signal(const StringName &p_signal) const; - virtual void get_script_signal_list(List<MethodInfo> *r_signals) const; - virtual bool get_property_default_value(const StringName &p_property, Variant &r_value) const; - virtual void get_script_method_list(List<MethodInfo> *p_list) const; - virtual void get_script_property_list(List<PropertyInfo> *p_list) const; - virtual void update_exports(); -}; - -class MultiScriptLanguage : public ScriptLanguage { - - static MultiScriptLanguage *singleton; - -public: - static _FORCE_INLINE_ MultiScriptLanguage *get_singleton(); - virtual String get_name() const; - - /* LANGUAGE FUNCTIONS */ - virtual void init(); - virtual String get_type() const; - virtual String get_extension() const; - virtual Error execute_file(const String &p_path); - virtual void finish(); - - /* EDITOR FUNCTIONS */ - virtual void get_reserved_words(List<String> *p_words) const; - virtual void get_comment_delimiters(List<String> *p_delimiters) const; - virtual void get_string_delimiters(List<String> *p_delimiters) const; - virtual Ref<Script> get_template(const String &p_class_name, const String &p_base_class_name) const; - virtual bool validate(const String &p_script, int &r_line_error, int &r_col_error, String &r_test_error, const String &p_path = "", List<String> *r_fn = NULL) const; - virtual Script *create_script() const; - virtual bool has_named_classes() const; - virtual int find_function(const String &p_function, const String &p_code) const; - virtual String make_function(const String &p_class, const String &p_name, const PoolStringArray &p_args) const; - - /* DEBUGGER FUNCTIONS */ - - virtual String debug_get_error() const; - virtual int debug_get_stack_level_count() const; - virtual int debug_get_stack_level_line(int p_level) const; - virtual String debug_get_stack_level_function(int p_level) const; - virtual String debug_get_stack_level_source(int p_level) const; - virtual void debug_get_stack_level_locals(int p_level, List<String> *p_locals, List<Variant> *p_values, int p_max_subitems = -1, int p_max_depth = -1); - virtual void debug_get_stack_level_members(int p_level, List<String> *p_members, List<Variant> *p_values, int p_max_subitems = -1, int p_max_depth = -1); - virtual void debug_get_globals(List<String> *p_locals, List<Variant> *p_values, int p_max_subitems = -1, int p_max_depth = -1); - virtual String debug_parse_stack_level_expression(int p_level, const String &p_expression, int p_max_subitems = -1, int p_max_depth = -1); - - /* LOADER FUNCTIONS */ - - virtual void get_recognized_extensions(List<String> *p_extensions) const; - virtual void get_public_functions(List<MethodInfo> *p_functions) const; - - MultiScriptLanguage(); - virtual ~MultiScriptLanguage(); - - // ScriptLanguage interface -public: - void auto_indent_code(String &p_code, int p_from_line, int p_to_line) const; - void add_global_constant(const StringName &p_variable, const Variant &p_value); - void reload_all_scripts(); - void reload_tool_script(const Ref<Script> &p_script, bool p_soft_reload); - void get_public_constants(List<Pair<String, Variant> > *p_constants) const; - void profiling_start(); - void profiling_stop(); - int profiling_get_accumulated_data(ProfilingInfo *p_info_arr, int p_info_max); - int profiling_get_frame_data(ProfilingInfo *p_info_arr, int p_info_max); -}; - -#endif // MULTISCRIPT_H diff --git a/modules/multiscript/register_types.cpp b/modules/multiscript/register_types.cpp deleted file mode 100644 index 8170a2d9c1..0000000000 --- a/modules/multiscript/register_types.cpp +++ /dev/null @@ -1,51 +0,0 @@ -/*************************************************************************/ -/* register_types.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#include "register_types.h" - -#include "multiscript.h" - -#include "core/script_language.h" - -static MultiScriptLanguage *script_multi_script = NULL; - -void register_multiscript_types() { - script_multi_script = memnew(MultiScriptLanguage); - ScriptServer::register_language(script_multi_script); - ClassDB::register_class<MultiScript>(); - - // ClassDB::register_class<Multi>(); -} - -void unregister_multiscript_types() { - if (script_multi_script) { - ScriptServer::unregister_language(script_multi_script); - memdelete(script_multi_script); - } -} diff --git a/modules/multiscript/register_types.h b/modules/multiscript/register_types.h deleted file mode 100644 index b18d1adff2..0000000000 --- a/modules/multiscript/register_types.h +++ /dev/null @@ -1,31 +0,0 @@ -/*************************************************************************/ -/* register_types.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -void register_multiscript_types(); -void unregister_multiscript_types(); |