diff options
Diffstat (limited to 'core/script_language.cpp')
| -rw-r--r-- | core/script_language.cpp | 59 |
1 files changed, 50 insertions, 9 deletions
diff --git a/core/script_language.cpp b/core/script_language.cpp index 150341826..52ae181c3 100644 --- a/core/script_language.cpp +++ b/core/script_language.cpp @@ -5,7 +5,7 @@ /* GODOT ENGINE */ /* http://www.godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -32,7 +32,8 @@ ScriptLanguage *ScriptServer::_languages[MAX_LANGUAGES]; int ScriptServer::_language_count=0; bool ScriptServer::scripting_enabled=true; - +bool ScriptServer::reload_scripts_on_save=false; +ScriptEditRequestFunction ScriptServer::edit_request_func=NULL; void Script::_notification( int p_what) { @@ -45,13 +46,13 @@ void Script::_notification( int p_what) { void Script::_bind_methods() { - ObjectTypeDB::bind_method(_MD("can_instance"),&Script::can_instance); - //ObjectTypeDB::bind_method(_MD("instance_create","base_object"),&Script::instance_create); - ObjectTypeDB::bind_method(_MD("instance_has","base_object"),&Script::instance_has); - ObjectTypeDB::bind_method(_MD("has_source_code"),&Script::has_source_code); - ObjectTypeDB::bind_method(_MD("get_source_code"),&Script::get_source_code); - ObjectTypeDB::bind_method(_MD("set_source_code","source"),&Script::set_source_code); - ObjectTypeDB::bind_method(_MD("reload"),&Script::reload); + ClassDB::bind_method(_MD("can_instance"),&Script::can_instance); + //ClassDB::bind_method(_MD("instance_create","base_object"),&Script::instance_create); + ClassDB::bind_method(_MD("instance_has","base_object"),&Script::instance_has); + ClassDB::bind_method(_MD("has_source_code"),&Script::has_source_code); + ClassDB::bind_method(_MD("get_source_code"),&Script::get_source_code); + ClassDB::bind_method(_MD("set_source_code","source"),&Script::set_source_code); + ClassDB::bind_method(_MD("reload","keep_state"),&Script::reload,DEFVAL(false)); } @@ -85,6 +86,20 @@ void ScriptServer::register_language(ScriptLanguage *p_language) { _languages[_language_count++]=p_language; } +void ScriptServer::unregister_language(ScriptLanguage *p_language) { + + + for(int i=0;i<_language_count;i++) { + if (_languages[i]==p_language) { + _language_count--; + if (i<_language_count) { + SWAP(_languages[i],_languages[_language_count]); + } + return; + } + } +} + void ScriptServer::init_languages() { for(int i=0;i<_language_count;i++) { @@ -92,6 +107,32 @@ void ScriptServer::init_languages() { } } +void ScriptServer::set_reload_scripts_on_save(bool p_enable) { + + reload_scripts_on_save=p_enable; +} + +bool ScriptServer::is_reload_scripts_on_save_enabled() { + + return reload_scripts_on_save; +} + +void ScriptServer::thread_enter() { + + for(int i=0;i<_language_count;i++) { + _languages[i]->thread_enter(); + } +} + +void ScriptServer::thread_exit() { + + for(int i=0;i<_language_count;i++) { + _languages[i]->thread_exit(); + } + +} + + void ScriptInstance::get_property_state(List<Pair<StringName, Variant> > &state) { List<PropertyInfo> pinfo; |
