aboutsummaryrefslogtreecommitdiff
path: root/core/script_language.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'core/script_language.cpp')
-rw-r--r--core/script_language.cpp59
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;