summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--SConstruct4
-rw-r--r--core/io/json.cpp4
-rw-r--r--core/translation.cpp1
-rw-r--r--drivers/gles3/rasterizer_scene_gles3.cpp47
-rw-r--r--drivers/gles3/rasterizer_scene_gles3.h4
-rw-r--r--drivers/gles3/rasterizer_storage_gles3.cpp1
-rw-r--r--drivers/gles3/shaders/scene.glsl131
-rw-r--r--main/main.cpp6
-rw-r--r--misc/dist/docker/Dockerfile (renamed from tools/dist/docker/Dockerfile)0
-rw-r--r--misc/dist/docker/README.md (renamed from tools/dist/docker/README.md)0
-rw-r--r--misc/dist/docker/scripts/install-android-tools (renamed from tools/dist/docker/scripts/install-android-tools)0
-rw-r--r--misc/dist/html_fs/godotfs.js (renamed from tools/dist/html_fs/godotfs.js)0
-rw-r--r--misc/dist/ios_xcode/godot_xcode/data.pck (renamed from tools/dist/ios_xcode/godot_xcode/data.pck)0
-rwxr-xr-xmisc/dist/ios_xcode/godot_xcode/godot_debug.iphone (renamed from tools/dist/ios_xcode/godot_xcode/godot_debug.iphone)0
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios.xcodeproj/project.pbxproj (renamed from tools/dist/ios_xcode/godot_xcode/godot_ios.xcodeproj/project.pbxproj)0
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios.xcodeproj/project.xcworkspace/contents.xcworkspacedata (renamed from tools/dist/ios_xcode/godot_xcode/godot_ios.xcodeproj/project.xcworkspace/contents.xcworkspacedata)0
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Default-568h@2x~iphone.png (renamed from tools/dist/ios_xcode/godot_xcode/godot_ios/Default-568h@2x~iphone.png)bin564 -> 564 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Default-667h.png (renamed from tools/dist/ios_xcode/godot_xcode/godot_ios/Default-667h.png)bin683 -> 683 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Default-667h@2x.png (renamed from tools/dist/ios_xcode/godot_xcode/godot_ios/Default-667h@2x.png)bin817 -> 817 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Default-736h.png (renamed from tools/dist/ios_xcode/godot_xcode/godot_ios/Default-736h.png)bin1676 -> 1676 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Default-736h@3x.png (renamed from tools/dist/ios_xcode/godot_xcode/godot_ios/Default-736h@3x.png)bin2582 -> 2582 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Default-Landscape-736h.png (renamed from tools/dist/ios_xcode/godot_xcode/godot_ios/Default-Landscape-736h.png)bin2582 -> 2582 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Default-Landscape@2x~ipad.png (renamed from tools/dist/ios_xcode/godot_xcode/godot_ios/Default-Landscape@2x~ipad.png)bin3131 -> 3131 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Default-Landscape~ipad.png (renamed from tools/dist/ios_xcode/godot_xcode/godot_ios/Default-Landscape~ipad.png)bin634 -> 634 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Default-Portrait@2x~ipad.png (renamed from tools/dist/ios_xcode/godot_xcode/godot_ios/Default-Portrait@2x~ipad.png)bin3070 -> 3070 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Default-Portrait~ipad.png (renamed from tools/dist/ios_xcode/godot_xcode/godot_ios/Default-Portrait~ipad.png)bin589 -> 589 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Default@2x~iphone.png (renamed from tools/dist/ios_xcode/godot_xcode/godot_ios/Default@2x~iphone.png)bin515 -> 515 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Default~iphone.png (renamed from tools/dist/ios_xcode/godot_xcode/godot_ios/Default~iphone.png)bin309 -> 309 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Contents.json (renamed from tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Contents.json)0
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-100.png (renamed from tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-100.png)bin250 -> 250 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-114.png (renamed from tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-114.png)bin253 -> 253 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-120.png (renamed from tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-120.png)bin253 -> 253 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-144.png (renamed from tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-144.png)bin259 -> 259 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-152.png (renamed from tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-152.png)bin260 -> 260 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-180.png (renamed from tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-180.png)bin265 -> 265 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-29.png (renamed from tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-29.png)bin242 -> 242 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-40.png (renamed from tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-40.png)bin240 -> 240 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-50.png (renamed from tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-50.png)bin243 -> 243 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-57.png (renamed from tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-57.png)bin243 -> 243 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-58.png (renamed from tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-58.png)bin243 -> 243 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-60.png (renamed from tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-60.png)bin244 -> 244 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-72.png (renamed from tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-72.png)bin244 -> 244 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-76.png (renamed from tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-76.png)bin246 -> 246 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-80.png (renamed from tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-80.png)bin245 -> 245 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/icon-167.png (renamed from tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/icon-167.png)bin262 -> 262 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/icon-87.png (renamed from tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/icon-87.png)bin247 -> 247 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/sizes (renamed from tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/sizes)0
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/en.lproj/InfoPlist.strings (renamed from tools/dist/ios_xcode/godot_xcode/godot_ios/en.lproj/InfoPlist.strings)0
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/godot_ios-Info.plist (renamed from tools/dist/ios_xcode/godot_xcode/godot_ios/godot_ios-Info.plist)0
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/main.m (renamed from tools/dist/ios_xcode/godot_xcode/godot_ios/main.m)0
-rwxr-xr-xmisc/dist/ios_xcode/godot_xcode/godot_opt.iphone (renamed from tools/dist/ios_xcode/godot_xcode/godot_opt.iphone)0
-rwxr-xr-xmisc/dist/osx_template.app/Contents/Info.plist (renamed from tools/dist/osx_template.app/Contents/Info.plist)0
-rw-r--r--misc/dist/osx_template.app/Contents/PkgInfo (renamed from tools/dist/osx_template.app/Contents/PkgInfo)0
-rw-r--r--misc/dist/osx_template.app/Contents/Resources/icon.icns (renamed from tools/dist/osx_template.app/Contents/Resources/icon.icns)bin120942 -> 120942 bytes
-rwxr-xr-xmisc/dist/osx_tools.app/Contents/Info.plist (renamed from tools/dist/osx_tools.app/Contents/Info.plist)0
-rw-r--r--misc/dist/osx_tools.app/Contents/PkgInfo (renamed from tools/dist/osx_tools.app/Contents/PkgInfo)0
-rw-r--r--misc/dist/osx_tools.app/Contents/Resources/Godot.icns (renamed from tools/dist/osx_tools.app/Contents/Resources/Godot.icns)bin120942 -> 120942 bytes
-rw-r--r--misc/dist/uwp_template/AppxManifest.xml (renamed from tools/dist/uwp_template/AppxManifest.xml)0
-rw-r--r--misc/dist/uwp_template/Assets/SplashScreen.scale-100.png (renamed from tools/dist/uwp_template/Assets/SplashScreen.scale-100.png)bin14919 -> 14919 bytes
-rw-r--r--misc/dist/uwp_template/Assets/Square150x150Logo.scale-100.png (renamed from tools/dist/uwp_template/Assets/Square150x150Logo.scale-100.png)bin7001 -> 7001 bytes
-rw-r--r--misc/dist/uwp_template/Assets/Square310x310Logo.scale-100.png (renamed from tools/dist/uwp_template/Assets/Square310x310Logo.scale-100.png)bin14490 -> 14490 bytes
-rw-r--r--misc/dist/uwp_template/Assets/Square44x44Logo.scale-100.png (renamed from tools/dist/uwp_template/Assets/Square44x44Logo.scale-100.png)bin2067 -> 2067 bytes
-rw-r--r--misc/dist/uwp_template/Assets/Square71x71Logo.scale-100.png (renamed from tools/dist/uwp_template/Assets/Square71x71Logo.scale-100.png)bin3369 -> 3369 bytes
-rw-r--r--misc/dist/uwp_template/Assets/StoreLogo.scale-100.png (renamed from tools/dist/uwp_template/Assets/StoreLogo.scale-100.png)bin2339 -> 2339 bytes
-rw-r--r--misc/dist/uwp_template/Assets/Wide310x150Logo.scale-100.png (renamed from tools/dist/uwp_template/Assets/Wide310x150Logo.scale-100.png)bin7390 -> 7390 bytes
-rw-r--r--misc/scripts/addheader.py (renamed from tools/scripts/addheader.py)0
-rwxr-xr-xmisc/scripts/file-hex-array.py (renamed from tools/scripts/file-hex-array.py)0
-rw-r--r--misc/scripts/make_bmfhdr.py (renamed from tools/scripts/make_bmfhdr.py)0
-rw-r--r--misc/scripts/make_glwrapper.py (renamed from tools/scripts/make_glwrapper.py)0
-rw-r--r--misc/scripts/make_icons.sh (renamed from tools/scripts/make_icons.sh)0
-rw-r--r--misc/scripts/makeargs.py (renamed from tools/scripts/makeargs.py)0
-rw-r--r--misc/scripts/memsort.py (renamed from tools/scripts/memsort.py)0
-rw-r--r--misc/scripts/sort-demos.sh (renamed from tools/scripts/sort-demos.sh)0
-rw-r--r--misc/scripts/svgs_2_pngs.py (renamed from tools/scripts/svgs_2_pngs.py)0
-rw-r--r--modules/gdscript/gd_parser.cpp7
-rw-r--r--scene/2d/screen_button.cpp209
-rw-r--r--scene/2d/screen_button.h15
-rw-r--r--scene/3d/light.cpp3
-rw-r--r--scene/3d/light.h1
-rw-r--r--scene/gui/text_edit.cpp39
-rw-r--r--servers/physics/joints/generic_6dof_joint_sw.cpp2
-rw-r--r--servers/visual_server.h1
-rw-r--r--thirdparty/README.md14
-rw-r--r--thirdparty/certs/ca-certificates.crt (renamed from tools/certs/ca-certificates.crt)0
-rw-r--r--thirdparty/fonts/DroidSans.ttf (renamed from tools/editor_fonts/DroidSans.ttf)bin190044 -> 190044 bytes
-rw-r--r--thirdparty/fonts/DroidSansArabic.ttf (renamed from tools/editor_fonts/DroidSansArabic.ttf)bin35908 -> 35908 bytes
-rw-r--r--thirdparty/fonts/DroidSansFallback.ttf (renamed from tools/editor_fonts/DroidSansFallback.ttf)bin3640264 -> 3640264 bytes
-rw-r--r--thirdparty/fonts/DroidSansHebrew.ttf (renamed from tools/editor_fonts/DroidSansHebrew.ttf)bin23076 -> 23076 bytes
-rw-r--r--thirdparty/fonts/DroidSansJapanese.ttf (renamed from tools/editor_fonts/DroidSansJapanese.ttf)bin1173140 -> 1173140 bytes
-rw-r--r--thirdparty/fonts/DroidSansThai.ttf (renamed from tools/editor_fonts/DroidSansThai.ttf)bin36028 -> 36028 bytes
-rw-r--r--thirdparty/fonts/LICENSE.DroidSans.txt (renamed from tools/editor_fonts/LICENSE.DroidSans.txt)0
-rw-r--r--thirdparty/fonts/LICENSE.SourceCodePro.txt (renamed from tools/editor_fonts/LICENSE.SourceCodePro.txt)0
-rw-r--r--thirdparty/fonts/source_code_pro.otf (renamed from tools/editor_fonts/source_code_pro.otf)bin140088 -> 140088 bytes
-rw-r--r--tools/SCsub121
-rw-r--r--tools/editor/SCsub147
-rw-r--r--tools/editor/collada/SCsub (renamed from tools/doc/SCsub)2
-rw-r--r--tools/editor/collada/collada.cpp (renamed from tools/collada/collada.cpp)0
-rw-r--r--tools/editor/collada/collada.h (renamed from tools/collada/collada.h)0
-rw-r--r--tools/editor/doc/SCsub (renamed from tools/collada/SCsub)2
-rw-r--r--tools/editor/doc/doc_data.cpp (renamed from tools/doc/doc_data.cpp)0
-rw-r--r--tools/editor/doc/doc_data.h (renamed from tools/doc/doc_data.h)0
-rw-r--r--tools/editor/doc/doc_dump.cpp (renamed from tools/doc/doc_dump.cpp)0
-rw-r--r--tools/editor/doc/doc_dump.h (renamed from tools/doc/doc_dump.h)0
-rw-r--r--tools/editor/editor_help.h2
-rw-r--r--tools/editor/editor_node.cpp8
-rw-r--r--tools/editor/editor_settings.cpp1
-rw-r--r--tools/editor/fileserver/SCsub2
-rw-r--r--tools/editor/icons/SCsub2
-rw-r--r--tools/editor/import/SCsub2
-rw-r--r--tools/editor/import/editor_import_collada.cpp2
-rw-r--r--tools/editor/io_plugins/SCsub2
-rw-r--r--tools/editor/plugins/SCsub2
-rw-r--r--tools/editor/plugins/script_editor_plugin.cpp43
-rw-r--r--tools/editor/plugins/script_editor_plugin.h11
-rw-r--r--tools/editor/translations/Makefile (renamed from tools/translations/Makefile)0
-rw-r--r--tools/editor/translations/README.md (renamed from tools/translations/README.md)0
-rw-r--r--tools/editor/translations/ar.po (renamed from tools/translations/ar.po)0
-rw-r--r--tools/editor/translations/bg.po (renamed from tools/translations/bg.po)0
-rw-r--r--tools/editor/translations/bn.po (renamed from tools/translations/bn.po)0
-rw-r--r--tools/editor/translations/ca.po (renamed from tools/translations/ca.po)0
-rw-r--r--tools/editor/translations/cs.po (renamed from tools/translations/cs.po)0
-rw-r--r--tools/editor/translations/da.po (renamed from tools/translations/da.po)0
-rw-r--r--tools/editor/translations/de.po (renamed from tools/translations/de.po)0
-rw-r--r--tools/editor/translations/de_CH.po (renamed from tools/translations/de_CH.po)0
-rw-r--r--tools/editor/translations/es.po (renamed from tools/translations/es.po)0
-rw-r--r--tools/editor/translations/es_AR.po (renamed from tools/translations/es_AR.po)0
-rwxr-xr-xtools/editor/translations/extract.py (renamed from tools/translations/extract.py)0
-rw-r--r--tools/editor/translations/fa.po (renamed from tools/translations/fa.po)0
-rw-r--r--tools/editor/translations/fr.po (renamed from tools/translations/fr.po)0
-rw-r--r--tools/editor/translations/hu.po (renamed from tools/translations/hu.po)0
-rw-r--r--tools/editor/translations/id.po (renamed from tools/translations/id.po)0
-rw-r--r--tools/editor/translations/it.po (renamed from tools/translations/it.po)0
-rw-r--r--tools/editor/translations/ja.po (renamed from tools/translations/ja.po)0
-rw-r--r--tools/editor/translations/ko.po (renamed from tools/translations/ko.po)0
-rw-r--r--tools/editor/translations/nb.po (renamed from tools/translations/nb.po)0
-rw-r--r--tools/editor/translations/pl.po (renamed from tools/translations/pl.po)0
-rw-r--r--tools/editor/translations/pr.po (renamed from tools/translations/pr.po)0
-rw-r--r--tools/editor/translations/pt_BR.po (renamed from tools/translations/pt_BR.po)0
-rw-r--r--tools/editor/translations/pt_PT.po (renamed from tools/translations/pt_PT.po)0
-rw-r--r--tools/editor/translations/ru.po (renamed from tools/translations/ru.po)0
-rw-r--r--tools/editor/translations/sk.po (renamed from tools/translations/sk.po)0
-rw-r--r--tools/editor/translations/sl.po (renamed from tools/translations/sl.po)0
-rw-r--r--tools/editor/translations/tools.pot (renamed from tools/translations/tools.pot)0
-rw-r--r--tools/editor/translations/tr.po (renamed from tools/translations/tr.po)0
-rw-r--r--tools/editor/translations/ur_PK.po (renamed from tools/translations/ur_PK.po)0
-rw-r--r--tools/editor/translations/zh_CN.po (renamed from tools/translations/zh_CN.po)0
-rw-r--r--tools/editor/translations/zh_HK.po (renamed from tools/translations/zh_HK.po)0
-rw-r--r--tools/editor/translations/zh_TW.po (renamed from tools/translations/zh_TW.po)0
148 files changed, 533 insertions, 305 deletions
diff --git a/SConstruct b/SConstruct
index 2ecfea92e3..4c79304ef2 100644
--- a/SConstruct
+++ b/SConstruct
@@ -358,7 +358,7 @@ if selected_platform in platform_list:
SConscript("core/SCsub")
SConscript("servers/SCsub")
SConscript("scene/SCsub")
- SConscript("tools/SCsub")
+ SConscript("tools/editor/SCsub")
SConscript("drivers/SCsub")
SConscript("modules/SCsub")
@@ -374,7 +374,7 @@ if selected_platform in platform_list:
AddToVSProject(env.modules_sources)
AddToVSProject(env.scene_sources)
AddToVSProject(env.servers_sources)
- AddToVSProject(env.tool_sources)
+ AddToVSProject(env.editor_sources)
# this env flag won't work, it needs to be set in env_base=Environment(MSVC_VERSION='9.0')
# Even then, SCons still seems to ignore it and builds with the latest MSVC...
diff --git a/core/io/json.cpp b/core/io/json.cpp
index ac5b8f1e5f..5ade25aab4 100644
--- a/core/io/json.cpp
+++ b/core/io/json.cpp
@@ -374,7 +374,7 @@ Error JSON::_parse_array(Array &array,const CharType *p_str,int &index, int p_le
}
- return OK;
+ return ERR_PARSE_ERROR;
}
@@ -446,7 +446,7 @@ Error JSON::_parse_object(Dictionary &object,const CharType *p_str,int &index, i
}
}
- return OK;
+ return ERR_PARSE_ERROR;
}
diff --git a/core/translation.cpp b/core/translation.cpp
index 8835cb133c..2fee0e6550 100644
--- a/core/translation.cpp
+++ b/core/translation.cpp
@@ -670,6 +670,7 @@ static const char* locale_names[]={
"Sanskrit (India)",
"Santali (India)",
"Sardinian (Italy)",
+"Scots (Scotland)",
"Sindhi (India)",
"Northern Sami (Norway)",
"Samogitian (Lithuania)",
diff --git a/drivers/gles3/rasterizer_scene_gles3.cpp b/drivers/gles3/rasterizer_scene_gles3.cpp
index 88a73d31cb..b504ef819f 100644
--- a/drivers/gles3/rasterizer_scene_gles3.cpp
+++ b/drivers/gles3/rasterizer_scene_gles3.cpp
@@ -2321,10 +2321,10 @@ void RasterizerSceneGLES3::_setup_directional_light(int p_index,const Transform&
ubo_data.light_params[3]=0;
Color shadow_color = li->light_ptr->shadow_color.to_linear();
- ubo_data.light_shadow_color[0]=shadow_color.r;
- ubo_data.light_shadow_color[1]=shadow_color.g;
- ubo_data.light_shadow_color[2]=shadow_color.b;
- ubo_data.light_shadow_color[3]=1.0;
+ ubo_data.light_shadow_color_contact[0]=shadow_color.r;
+ ubo_data.light_shadow_color_contact[1]=shadow_color.g;
+ ubo_data.light_shadow_color_contact[2]=shadow_color.b;
+ ubo_data.light_shadow_color_contact[3]=li->light_ptr->param[VS::LIGHT_PARAM_CONTACT_SHADOW_SIZE];
if (p_use_shadows && li->light_ptr->shadow) {
@@ -2480,10 +2480,10 @@ void RasterizerSceneGLES3::_setup_lights(RID *p_light_cull_result,int p_light_cu
ubo_data.light_params[3]=0;
Color shadow_color = li->light_ptr->shadow_color.to_linear();
- ubo_data.light_shadow_color[0]=shadow_color.r;
- ubo_data.light_shadow_color[1]=shadow_color.g;
- ubo_data.light_shadow_color[2]=shadow_color.b;
- ubo_data.light_shadow_color[3]=1.0;
+ ubo_data.light_shadow_color_contact[0]=shadow_color.r;
+ ubo_data.light_shadow_color_contact[1]=shadow_color.g;
+ ubo_data.light_shadow_color_contact[2]=shadow_color.b;
+ ubo_data.light_shadow_color_contact[3]=li->light_ptr->param[VS::LIGHT_PARAM_CONTACT_SHADOW_SIZE];
if (li->light_ptr->shadow && shadow_atlas && shadow_atlas->shadow_owners.has(li->self)) {
// fill in the shadow information
@@ -2573,10 +2573,10 @@ void RasterizerSceneGLES3::_setup_lights(RID *p_light_cull_result,int p_light_cu
ubo_data.light_params[3]=0;
Color shadow_color = li->light_ptr->shadow_color.to_linear();
- ubo_data.light_shadow_color[0]=shadow_color.r;
- ubo_data.light_shadow_color[1]=shadow_color.g;
- ubo_data.light_shadow_color[2]=shadow_color.b;
- ubo_data.light_shadow_color[3]=1.0;
+ ubo_data.light_shadow_color_contact[0]=shadow_color.r;
+ ubo_data.light_shadow_color_contact[1]=shadow_color.g;
+ ubo_data.light_shadow_color_contact[2]=shadow_color.b;
+ ubo_data.light_shadow_color_contact[3]=li->light_ptr->param[VS::LIGHT_PARAM_CONTACT_SHADOW_SIZE];
if (li->light_ptr->shadow && shadow_atlas && shadow_atlas->shadow_owners.has(li->self)) {
// fill in the shadow information
@@ -3760,14 +3760,20 @@ void RasterizerSceneGLES3::render_scene(const Transform& p_cam_transform,const C
state.ubo_data.shadow_dual_paraboloid_render_side=0;
state.ubo_data.shadow_dual_paraboloid_render_zfar=0;
+ if (storage->frame.current_rt) {
+ state.ubo_data.screen_pixel_size[0]=1.0/storage->frame.current_rt->width;
+ state.ubo_data.screen_pixel_size[1]=1.0/storage->frame.current_rt->height;
+ }
+
_setup_environment(env,p_cam_projection,p_cam_transform);
bool fb_cleared=false;
glDepthFunc(GL_LEQUAL);
+ state.used_contact_shadows=true;
- if (storage->frame.current_rt && true) {
+ if (storage->frame.current_rt && true) { //detect with state.used_contact_shadows too
//pre z pass
@@ -3794,6 +3800,19 @@ void RasterizerSceneGLES3::render_scene(const Transform& p_cam_transform,const C
glColorMask(1,1,1,1);
+ if (state.used_contact_shadows) {
+
+ glBindFramebuffer(GL_READ_FRAMEBUFFER, storage->frame.current_rt->buffers.fbo);
+ glReadBuffer(GL_COLOR_ATTACHMENT0);
+ glBindFramebuffer(GL_DRAW_FRAMEBUFFER, storage->frame.current_rt->fbo);
+ glBlitFramebuffer(0, 0, storage->frame.current_rt->width, storage->frame.current_rt->height, 0, 0, storage->frame.current_rt->width, storage->frame.current_rt->height, GL_DEPTH_BUFFER_BIT, GL_NEAREST);
+ glBindFramebuffer(GL_READ_FRAMEBUFFER, 0);
+ glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
+ //bind depth for read
+ glActiveTexture(GL_TEXTURE0+storage->config.max_texture_image_units-8);
+ glBindTexture(GL_TEXTURE_2D,storage->frame.current_rt->depth);
+ }
+
fb_cleared=true;
render_pass++;
}
@@ -4458,7 +4477,7 @@ void RasterizerSceneGLES3::render_shadow(RID p_light,RID p_shadow_atlas,int p_pa
state.scene_shader.set_conditional(SceneShaderGLES3::RENDER_DEPTH,true);
- _render_list(render_list.elements,render_list.element_count,light_transform,light_projection,0,!flip_facing,false,true,false,false);
+ _render_list(render_list.elements,render_list.element_count,light_transform,light_projection,0,flip_facing,false,true,false,false);
state.scene_shader.set_conditional(SceneShaderGLES3::RENDER_DEPTH,false);
state.scene_shader.set_conditional(SceneShaderGLES3::RENDER_DEPTH_DUAL_PARABOLOID,false);
diff --git a/drivers/gles3/rasterizer_scene_gles3.h b/drivers/gles3/rasterizer_scene_gles3.h
index 8304b3742f..81dfa1bf46 100644
--- a/drivers/gles3/rasterizer_scene_gles3.h
+++ b/drivers/gles3/rasterizer_scene_gles3.h
@@ -91,6 +91,7 @@ public:
float shadow_slope_scale;
float shadow_dual_paraboloid_render_zfar;
float shadow_dual_paraboloid_render_side;
+ float screen_pixel_size[2];
float shadow_atlas_pixel_size[2];
float shadow_directional_pixel_size[2];
float reflection_multiplier;
@@ -136,6 +137,7 @@ public:
int max_ubo_reflections;
int max_skeleton_bones;
+ bool used_contact_shadows;
int spot_light_count;
@@ -467,7 +469,7 @@ public:
float light_color_energy[4];
float light_params[4]; //spot attenuation, spot angle, specular, shadow enabled
float light_clamp[4];
- float light_shadow_color[4];
+ float light_shadow_color_contact[4];
float shadow_matrix1[16]; //up to here for spot and omni, rest is for directional
float shadow_matrix2[16];
float shadow_matrix3[16];
diff --git a/drivers/gles3/rasterizer_storage_gles3.cpp b/drivers/gles3/rasterizer_storage_gles3.cpp
index 7b43d1a115..06daebbf82 100644
--- a/drivers/gles3/rasterizer_storage_gles3.cpp
+++ b/drivers/gles3/rasterizer_storage_gles3.cpp
@@ -4290,6 +4290,7 @@ RID RasterizerStorageGLES3::light_create(VS::LightType p_type){
light->param[VS::LIGHT_PARAM_SPECULAR]=0.5;
light->param[VS::LIGHT_PARAM_RANGE]=1.0;
light->param[VS::LIGHT_PARAM_SPOT_ANGLE]=45;
+ light->param[VS::LIGHT_PARAM_CONTACT_SHADOW_SIZE]=45;
light->param[VS::LIGHT_PARAM_SHADOW_MAX_DISTANCE]=0;
light->param[VS::LIGHT_PARAM_SHADOW_SPLIT_1_OFFSET]=0.1;
light->param[VS::LIGHT_PARAM_SHADOW_SPLIT_2_OFFSET]=0.3;
diff --git a/drivers/gles3/shaders/scene.glsl b/drivers/gles3/shaders/scene.glsl
index 66123193e6..200c0c0cac 100644
--- a/drivers/gles3/shaders/scene.glsl
+++ b/drivers/gles3/shaders/scene.glsl
@@ -71,6 +71,7 @@ layout(std140) uniform SceneData { //ubo:0
float shadow_dual_paraboloid_render_zfar;
float shadow_dual_paraboloid_render_side;
+ highp vec2 screen_pixel_size;
vec2 shadow_atlas_pixel_size;
vec2 directional_shadow_pixel_size;
@@ -91,7 +92,7 @@ layout(std140) uniform DirectionalLightData { //ubo:3
mediump vec4 light_color_energy;
mediump vec4 light_params; //cone attenuation, angle, specular, shadow enabled,
mediump vec4 light_clamp;
- mediump vec4 shadow_color;
+ mediump vec4 shadow_color_contact;
highp mat4 shadow_matrix1;
highp mat4 shadow_matrix2;
highp mat4 shadow_matrix3;
@@ -126,13 +127,6 @@ out vec3 binormal_interp;
#endif
-#if !defined(USE_DEPTH_SHADOWS) && defined(USE_SHADOW_PASS)
-
-varying vec4 position_interp;
-
-#endif
-
-
VERTEX_SHADER_GLOBALS
@@ -161,6 +155,8 @@ layout(std140) uniform SkeletonData { //ubo:7
#endif
+out highp vec4 position_interp;
+
void main() {
highp vec4 vertex = vertex_attrib; // vec4(vertex_attrib.xyz * data_attrib.x,1.0);
@@ -293,7 +289,7 @@ VERTEX_SHADER_CODE
gl_Position = vertex;
#endif
-
+ position_interp=gl_Position;
}
@@ -375,6 +371,8 @@ layout(std140) uniform SceneData {
highp vec4 ambient_light_color;
highp vec4 bg_color;
+
+
float ambient_energy;
float bg_energy;
@@ -383,6 +381,7 @@ layout(std140) uniform SceneData {
float shadow_dual_paraboloid_render_zfar;
float shadow_dual_paraboloid_render_side;
+ highp vec2 screen_pixel_size;
vec2 shadow_atlas_pixel_size;
vec2 directional_shadow_pixel_size;
@@ -403,7 +402,7 @@ layout(std140) uniform DirectionalLightData {
mediump vec4 light_color_energy;
mediump vec4 light_params; //cone attenuation, angle, specular, shadow enabled,
mediump vec4 light_clamp;
- mediump vec4 shadow_color;
+ mediump vec4 shadow_color_contact;
highp mat4 shadow_matrix1;
highp mat4 shadow_matrix2;
highp mat4 shadow_matrix3;
@@ -425,7 +424,7 @@ struct LightData {
mediump vec4 light_color_energy;
mediump vec4 light_params; //cone attenuation, angle, specular, shadow enabled,
mediump vec4 light_clamp;
- mediump vec4 shadow_color;
+ mediump vec4 shadow_color_contact;
highp mat4 shadow_matrix;
};
@@ -493,6 +492,69 @@ layout(location=0) out vec4 frag_color;
#endif
+in highp vec4 position_interp;
+uniform highp sampler2D depth_buffer; //texunit:-8
+
+float contact_shadow_compute(vec3 pos, vec3 dir, float max_distance) {
+
+ if (abs(dir.z)>0.99)
+ return 1.0;
+
+ vec3 endpoint = pos+dir*max_distance;
+ vec4 source = position_interp;
+ vec4 dest = projection_matrix * vec4(endpoint, 1.0);
+
+ vec2 from_screen = (source.xy / source.w) * 0.5 + 0.5;
+ vec2 to_screen = (dest.xy / dest.w) * 0.5 + 0.5;
+
+ vec2 screen_rel = to_screen - from_screen;
+
+ /*float pixel_size; //approximate pixel size
+
+ if (screen_rel.x > screen_rel.y) {
+
+ pixel_size = abs((pos.x-endpoint.x)/(screen_rel.x/screen_pixel_size.x));
+ } else {
+ pixel_size = abs((pos.y-endpoint.y)/(screen_rel.y/screen_pixel_size.y));
+
+ }*/
+ vec4 bias = projection_matrix * vec4(pos+vec3(0.0,0.0,0.04), 1.0); //todo un-harcode the 0.04
+
+
+
+ vec2 pixel_incr = normalize(screen_rel)*screen_pixel_size;
+
+ float steps = length(screen_rel) / length(pixel_incr);
+
+ //steps=10.0;
+
+ vec4 incr = (dest - source)/steps;
+ float ratio=0.0;
+ float ratio_incr = 1.0/steps;
+
+ do {
+ source += incr*2;
+ bias+=incr*2;
+
+ vec3 uv_depth = (source.xyz / source.w) * 0.5 + 0.5;
+ float depth = texture(depth_buffer,uv_depth.xy).r;
+
+ if (depth < uv_depth.z) {
+ if (depth > (bias.z/bias.w) * 0.5 + 0.5) {
+ return min(pow(ratio,4.0),1.0);
+ } else {
+ return 1.0;
+ }
+ }
+
+
+ ratio+=ratio_incr;
+ steps-=1.0;
+ } while (steps>0.0);
+
+ return 1.0;
+}
+
// GGX Specular
// Source: http://www.filmicworlds.com/images/ggx-opt/optimized-ggx.hlsl
@@ -517,6 +579,8 @@ float GTR1(float NdotH, float a)
return (a2-1.0) / (M_PI*log(a2)*t);
}
+
+
void light_compute(vec3 N, vec3 L,vec3 V,vec3 B, vec3 T,vec3 light_color,vec3 diffuse_color, vec3 specular_color, float specular_blob_intensity, float roughness, float rim,float rim_tint, float clearcoat, float clearcoat_gloss,float anisotropy,inout vec3 diffuse, inout vec3 specular) {
float dotNL = max(dot(N,L), 0.0 );
@@ -660,7 +724,8 @@ vec3 light_transmittance(float translucency,vec3 light_vec, vec3 normal, vec3 po
void light_process_omni(int idx, vec3 vertex, vec3 eye_vec,vec3 normal,vec3 binormal, vec3 tangent, vec3 albedo, vec3 specular, float roughness, float rim, float rim_tint, float clearcoat, float clearcoat_gloss,float anisotropy,inout vec3 diffuse_light, inout vec3 specular_light) {
vec3 light_rel_vec = omni_lights[idx].light_pos_inv_radius.xyz-vertex;
- float normalized_distance = length( light_rel_vec )*omni_lights[idx].light_pos_inv_radius.w;
+ float light_length = length( light_rel_vec );
+ float normalized_distance = light_length*omni_lights[idx].light_pos_inv_radius.w;
vec3 light_attenuation = vec3(pow( max(1.0 - normalized_distance, 0.0), omni_lights[idx].light_direction_attenuation.w ));
if (omni_lights[idx].light_params.w>0.5) {
@@ -696,8 +761,15 @@ void light_process_omni(int idx, vec3 vertex, vec3 eye_vec,vec3 normal,vec3 bino
splane.z = shadow_len * omni_lights[idx].light_pos_inv_radius.w;
splane.xy = clamp_rect.xy+splane.xy*clamp_rect.zw;
+ float shadow = sample_shadow(shadow_atlas,shadow_atlas_pixel_size,splane.xy,splane.z,clamp_rect);
+ if (shadow>0.01 && omni_lights[idx].shadow_color_contact.a>0.0) {
+
+ float contact_shadow = contact_shadow_compute(vertex,normalize(light_rel_vec),min(light_length,omni_lights[idx].shadow_color_contact.a));
+ shadow=min(shadow,contact_shadow);
- light_attenuation*=mix(omni_lights[idx].shadow_color.rgb,vec3(1.0),sample_shadow(shadow_atlas,shadow_atlas_pixel_size,splane.xy,splane.z,clamp_rect));
+
+ }
+ light_attenuation*=mix(omni_lights[idx].shadow_color_contact.rgb,vec3(1.0),shadow);
}
light_compute(normal,normalize(light_rel_vec),eye_vec,binormal,tangent,omni_lights[idx].light_color_energy.rgb*light_attenuation,albedo,specular,omni_lights[idx].light_params.z,roughness,rim,rim_tint,clearcoat,clearcoat_gloss,anisotropy,diffuse_light,specular_light);
@@ -707,7 +779,8 @@ void light_process_omni(int idx, vec3 vertex, vec3 eye_vec,vec3 normal,vec3 bino
void light_process_spot(int idx, vec3 vertex, vec3 eye_vec, vec3 normal, vec3 binormal, vec3 tangent,vec3 albedo, vec3 specular, float roughness, float rim,float rim_tint, float clearcoat, float clearcoat_gloss,float anisotropy, inout vec3 diffuse_light, inout vec3 specular_light) {
vec3 light_rel_vec = spot_lights[idx].light_pos_inv_radius.xyz-vertex;
- float normalized_distance = length( light_rel_vec )*spot_lights[idx].light_pos_inv_radius.w;
+ float light_length = length( light_rel_vec );
+ float normalized_distance = light_length*spot_lights[idx].light_pos_inv_radius.w;
vec3 light_attenuation = vec3(pow( max(1.0 - normalized_distance, 0.0), spot_lights[idx].light_direction_attenuation.w ));
vec3 spot_dir = spot_lights[idx].light_direction_attenuation.xyz;
float spot_cutoff=spot_lights[idx].light_params.y;
@@ -719,7 +792,17 @@ void light_process_spot(int idx, vec3 vertex, vec3 eye_vec, vec3 normal, vec3 bi
//there is a shadowmap
highp vec4 splane=(spot_lights[idx].shadow_matrix * vec4(vertex,1.0));
splane.xyz/=splane.w;
- light_attenuation*=mix(spot_lights[idx].shadow_color.rgb,vec3(1.0),sample_shadow(shadow_atlas,shadow_atlas_pixel_size,splane.xy,splane.z,spot_lights[idx].light_clamp));
+
+ float shadow = sample_shadow(shadow_atlas,shadow_atlas_pixel_size,splane.xy,splane.z,spot_lights[idx].light_clamp);
+
+ if (shadow>0.01 && spot_lights[idx].shadow_color_contact.a>0.0) {
+
+ float contact_shadow = contact_shadow_compute(vertex,normalize(light_rel_vec),min(light_length,spot_lights[idx].shadow_color_contact.a));
+ shadow=min(shadow,contact_shadow);
+
+ }
+
+ light_attenuation*=mix(spot_lights[idx].shadow_color_contact.rgb,vec3(1.0),shadow);
}
light_compute(normal,normalize(light_rel_vec),eye_vec,binormal,tangent,spot_lights[idx].light_color_energy.rgb*light_attenuation,albedo,specular,spot_lights[idx].light_params.z,roughness,rim,rim_tint,clearcoat,clearcoat_gloss,anisotropy,diffuse_light,specular_light);
@@ -1268,6 +1351,8 @@ FRAGMENT_SHADER_CODE
}
}
+
+
#endif //LIGHT_USE_PSSM4
#ifdef LIGHT_USE_PSSM2
@@ -1306,16 +1391,26 @@ FRAGMENT_SHADER_CODE
//one one sample
- light_attenuation=mix(shadow_color.rgb,vec3(1.0),sample_shadow(directional_shadow,directional_shadow_pixel_size,pssm_coord.xy,pssm_coord.z,light_clamp));
+ float shadow = sample_shadow(directional_shadow,directional_shadow_pixel_size,pssm_coord.xy,pssm_coord.z,light_clamp);
#if defined(LIGHT_USE_PSSM_BLEND)
+
if (use_blend) {
- vec3 light_attenuation2=mix(shadow_color.rgb,vec3(1.0),sample_shadow(directional_shadow,directional_shadow_pixel_size,pssm_coord2.xy,pssm_coord2.z,light_clamp));
- light_attenuation=mix(light_attenuation,light_attenuation2,pssm_blend);
+ shadow=mix(shadow, sample_shadow(directional_shadow,directional_shadow_pixel_size,pssm_coord2.xy,pssm_coord2.z,light_clamp));
}
#endif
+ if (shadow>0.01 && shadow_color_contact.a>0.0) {
+
+ float contact_shadow = contact_shadow_compute(vertex,-light_direction_attenuation.xyz,shadow_color_contact.a);
+ shadow=min(shadow,contact_shadow);
+
+ }
+
+ light_attenuation=mix(shadow_color_contact.rgb,vec3(1.0),shadow);
+
+
}
#endif //LIGHT_DIRECTIONAL_SHADOW
diff --git a/main/main.cpp b/main/main.cpp
index 3707c93fc5..21a839a25f 100644
--- a/main/main.cpp
+++ b/main/main.cpp
@@ -54,18 +54,14 @@
#include "scene/main/viewport.h"
#ifdef TOOLS_ENABLED
+#include "tools/editor/doc/doc_data.h"
#include "tools/editor/editor_node.h"
#include "tools/editor/project_manager.h"
-
#endif
#include "io/file_access_network.h"
-#include "tools/doc/doc_data.h"
-
-
#include "servers/physics_2d_server.h"
-
#include "core/io/stream_peer_tcp.h"
#include "core/os/thread.h"
#include "core/io/file_access_pack.h"
diff --git a/tools/dist/docker/Dockerfile b/misc/dist/docker/Dockerfile
index 428de9d1a7..428de9d1a7 100644
--- a/tools/dist/docker/Dockerfile
+++ b/misc/dist/docker/Dockerfile
diff --git a/tools/dist/docker/README.md b/misc/dist/docker/README.md
index 7f10b46ad8..7f10b46ad8 100644
--- a/tools/dist/docker/README.md
+++ b/misc/dist/docker/README.md
diff --git a/tools/dist/docker/scripts/install-android-tools b/misc/dist/docker/scripts/install-android-tools
index 8a617d9942..8a617d9942 100644
--- a/tools/dist/docker/scripts/install-android-tools
+++ b/misc/dist/docker/scripts/install-android-tools
diff --git a/tools/dist/html_fs/godotfs.js b/misc/dist/html_fs/godotfs.js
index 2c59344cf5..2c59344cf5 100644
--- a/tools/dist/html_fs/godotfs.js
+++ b/misc/dist/html_fs/godotfs.js
diff --git a/tools/dist/ios_xcode/godot_xcode/data.pck b/misc/dist/ios_xcode/godot_xcode/data.pck
index e69de29bb2..e69de29bb2 100644
--- a/tools/dist/ios_xcode/godot_xcode/data.pck
+++ b/misc/dist/ios_xcode/godot_xcode/data.pck
diff --git a/tools/dist/ios_xcode/godot_xcode/godot_debug.iphone b/misc/dist/ios_xcode/godot_xcode/godot_debug.iphone
index e69de29bb2..e69de29bb2 100755
--- a/tools/dist/ios_xcode/godot_xcode/godot_debug.iphone
+++ b/misc/dist/ios_xcode/godot_xcode/godot_debug.iphone
diff --git a/tools/dist/ios_xcode/godot_xcode/godot_ios.xcodeproj/project.pbxproj b/misc/dist/ios_xcode/godot_xcode/godot_ios.xcodeproj/project.pbxproj
index bdba8488c8..bdba8488c8 100644
--- a/tools/dist/ios_xcode/godot_xcode/godot_ios.xcodeproj/project.pbxproj
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios.xcodeproj/project.pbxproj
diff --git a/tools/dist/ios_xcode/godot_xcode/godot_ios.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/misc/dist/ios_xcode/godot_xcode/godot_ios.xcodeproj/project.xcworkspace/contents.xcworkspacedata
index 3c9ba38bbe..3c9ba38bbe 100644
--- a/tools/dist/ios_xcode/godot_xcode/godot_ios.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios.xcodeproj/project.xcworkspace/contents.xcworkspacedata
diff --git a/tools/dist/ios_xcode/godot_xcode/godot_ios/Default-568h@2x~iphone.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-568h@2x~iphone.png
index 1d5e472665..1d5e472665 100644
--- a/tools/dist/ios_xcode/godot_xcode/godot_ios/Default-568h@2x~iphone.png
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-568h@2x~iphone.png
Binary files differ
diff --git a/tools/dist/ios_xcode/godot_xcode/godot_ios/Default-667h.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-667h.png
index b13a399c83..b13a399c83 100644
--- a/tools/dist/ios_xcode/godot_xcode/godot_ios/Default-667h.png
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-667h.png
Binary files differ
diff --git a/tools/dist/ios_xcode/godot_xcode/godot_ios/Default-667h@2x.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-667h@2x.png
index b51598fed0..b51598fed0 100644
--- a/tools/dist/ios_xcode/godot_xcode/godot_ios/Default-667h@2x.png
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-667h@2x.png
Binary files differ
diff --git a/tools/dist/ios_xcode/godot_xcode/godot_ios/Default-736h.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-736h.png
index 8c44edbccd..8c44edbccd 100644
--- a/tools/dist/ios_xcode/godot_xcode/godot_ios/Default-736h.png
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-736h.png
Binary files differ
diff --git a/tools/dist/ios_xcode/godot_xcode/godot_ios/Default-736h@3x.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-736h@3x.png
index 33847ac136..33847ac136 100644
--- a/tools/dist/ios_xcode/godot_xcode/godot_ios/Default-736h@3x.png
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-736h@3x.png
Binary files differ
diff --git a/tools/dist/ios_xcode/godot_xcode/godot_ios/Default-Landscape-736h.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-Landscape-736h.png
index 2a025b745b..2a025b745b 100644
--- a/tools/dist/ios_xcode/godot_xcode/godot_ios/Default-Landscape-736h.png
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-Landscape-736h.png
Binary files differ
diff --git a/tools/dist/ios_xcode/godot_xcode/godot_ios/Default-Landscape@2x~ipad.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-Landscape@2x~ipad.png
index 7099f3e18d..7099f3e18d 100644
--- a/tools/dist/ios_xcode/godot_xcode/godot_ios/Default-Landscape@2x~ipad.png
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-Landscape@2x~ipad.png
Binary files differ
diff --git a/tools/dist/ios_xcode/godot_xcode/godot_ios/Default-Landscape~ipad.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-Landscape~ipad.png
index 4a761c339a..4a761c339a 100644
--- a/tools/dist/ios_xcode/godot_xcode/godot_ios/Default-Landscape~ipad.png
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-Landscape~ipad.png
Binary files differ
diff --git a/tools/dist/ios_xcode/godot_xcode/godot_ios/Default-Portrait@2x~ipad.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-Portrait@2x~ipad.png
index b09cf21186..b09cf21186 100644
--- a/tools/dist/ios_xcode/godot_xcode/godot_ios/Default-Portrait@2x~ipad.png
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-Portrait@2x~ipad.png
Binary files differ
diff --git a/tools/dist/ios_xcode/godot_xcode/godot_ios/Default-Portrait~ipad.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-Portrait~ipad.png
index fa698eb70c..fa698eb70c 100644
--- a/tools/dist/ios_xcode/godot_xcode/godot_ios/Default-Portrait~ipad.png
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-Portrait~ipad.png
Binary files differ
diff --git a/tools/dist/ios_xcode/godot_xcode/godot_ios/Default@2x~iphone.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Default@2x~iphone.png
index ddf2861f4d..ddf2861f4d 100644
--- a/tools/dist/ios_xcode/godot_xcode/godot_ios/Default@2x~iphone.png
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Default@2x~iphone.png
Binary files differ
diff --git a/tools/dist/ios_xcode/godot_xcode/godot_ios/Default~iphone.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Default~iphone.png
index c485a33b03..c485a33b03 100644
--- a/tools/dist/ios_xcode/godot_xcode/godot_ios/Default~iphone.png
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Default~iphone.png
Binary files differ
diff --git a/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Contents.json b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Contents.json
index a458b67873..a458b67873 100644
--- a/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Contents.json
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Contents.json
diff --git a/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-100.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-100.png
index 165f4423b3..165f4423b3 100644
--- a/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-100.png
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-100.png
Binary files differ
diff --git a/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-114.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-114.png
index 2e205e920c..2e205e920c 100644
--- a/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-114.png
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-114.png
Binary files differ
diff --git a/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-120.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-120.png
index 6245f83f48..6245f83f48 100644
--- a/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-120.png
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-120.png
Binary files differ
diff --git a/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-144.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-144.png
index 7b24e01bc6..7b24e01bc6 100644
--- a/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-144.png
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-144.png
Binary files differ
diff --git a/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-152.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-152.png
index 344b470fa3..344b470fa3 100644
--- a/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-152.png
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-152.png
Binary files differ
diff --git a/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-180.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-180.png
index 0dcebbc3f2..0dcebbc3f2 100644
--- a/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-180.png
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-180.png
Binary files differ
diff --git a/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-29.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-29.png
index 9ae94e9aaf..9ae94e9aaf 100644
--- a/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-29.png
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-29.png
Binary files differ
diff --git a/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-40.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-40.png
index 569f24df91..569f24df91 100644
--- a/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-40.png
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-40.png
Binary files differ
diff --git a/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-50.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-50.png
index 9e69ed3121..9e69ed3121 100644
--- a/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-50.png
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-50.png
Binary files differ
diff --git a/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-57.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-57.png
index b970fa3067..b970fa3067 100644
--- a/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-57.png
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-57.png
Binary files differ
diff --git a/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-58.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-58.png
index 6097a6c73b..6097a6c73b 100644
--- a/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-58.png
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-58.png
Binary files differ
diff --git a/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-60.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-60.png
index 21b9622eb6..21b9622eb6 100644
--- a/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-60.png
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-60.png
Binary files differ
diff --git a/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-72.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-72.png
index 34dea8e6ad..34dea8e6ad 100644
--- a/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-72.png
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-72.png
Binary files differ
diff --git a/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-76.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-76.png
index f72eb0b345..f72eb0b345 100644
--- a/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-76.png
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-76.png
Binary files differ
diff --git a/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-80.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-80.png
index 793c9b1f5f..793c9b1f5f 100644
--- a/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-80.png
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-80.png
Binary files differ
diff --git a/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/icon-167.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/icon-167.png
index 7cd0e054ab..7cd0e054ab 100644
--- a/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/icon-167.png
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/icon-167.png
Binary files differ
diff --git a/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/icon-87.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/icon-87.png
index e9b2429754..e9b2429754 100644
--- a/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/icon-87.png
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/icon-87.png
Binary files differ
diff --git a/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/sizes b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/sizes
index e328a62cb6..e328a62cb6 100644
--- a/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/sizes
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/sizes
diff --git a/tools/dist/ios_xcode/godot_xcode/godot_ios/en.lproj/InfoPlist.strings b/misc/dist/ios_xcode/godot_xcode/godot_ios/en.lproj/InfoPlist.strings
index 477b28ff8f..477b28ff8f 100644
--- a/tools/dist/ios_xcode/godot_xcode/godot_ios/en.lproj/InfoPlist.strings
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/en.lproj/InfoPlist.strings
diff --git a/tools/dist/ios_xcode/godot_xcode/godot_ios/godot_ios-Info.plist b/misc/dist/ios_xcode/godot_xcode/godot_ios/godot_ios-Info.plist
index f97b0fca36..f97b0fca36 100644
--- a/tools/dist/ios_xcode/godot_xcode/godot_ios/godot_ios-Info.plist
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/godot_ios-Info.plist
diff --git a/tools/dist/ios_xcode/godot_xcode/godot_ios/main.m b/misc/dist/ios_xcode/godot_xcode/godot_ios/main.m
index 88b8e60670..88b8e60670 100644
--- a/tools/dist/ios_xcode/godot_xcode/godot_ios/main.m
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/main.m
diff --git a/tools/dist/ios_xcode/godot_xcode/godot_opt.iphone b/misc/dist/ios_xcode/godot_xcode/godot_opt.iphone
index e69de29bb2..e69de29bb2 100755
--- a/tools/dist/ios_xcode/godot_xcode/godot_opt.iphone
+++ b/misc/dist/ios_xcode/godot_xcode/godot_opt.iphone
diff --git a/tools/dist/osx_template.app/Contents/Info.plist b/misc/dist/osx_template.app/Contents/Info.plist
index eee787bdaf..eee787bdaf 100755
--- a/tools/dist/osx_template.app/Contents/Info.plist
+++ b/misc/dist/osx_template.app/Contents/Info.plist
diff --git a/tools/dist/osx_template.app/Contents/PkgInfo b/misc/dist/osx_template.app/Contents/PkgInfo
index 6f749b0f37..6f749b0f37 100644
--- a/tools/dist/osx_template.app/Contents/PkgInfo
+++ b/misc/dist/osx_template.app/Contents/PkgInfo
diff --git a/tools/dist/osx_template.app/Contents/Resources/icon.icns b/misc/dist/osx_template.app/Contents/Resources/icon.icns
index 375f61437d..375f61437d 100644
--- a/tools/dist/osx_template.app/Contents/Resources/icon.icns
+++ b/misc/dist/osx_template.app/Contents/Resources/icon.icns
Binary files differ
diff --git a/tools/dist/osx_tools.app/Contents/Info.plist b/misc/dist/osx_tools.app/Contents/Info.plist
index 4d88e97503..4d88e97503 100755
--- a/tools/dist/osx_tools.app/Contents/Info.plist
+++ b/misc/dist/osx_tools.app/Contents/Info.plist
diff --git a/tools/dist/osx_tools.app/Contents/PkgInfo b/misc/dist/osx_tools.app/Contents/PkgInfo
index 6f749b0f37..6f749b0f37 100644
--- a/tools/dist/osx_tools.app/Contents/PkgInfo
+++ b/misc/dist/osx_tools.app/Contents/PkgInfo
diff --git a/tools/dist/osx_tools.app/Contents/Resources/Godot.icns b/misc/dist/osx_tools.app/Contents/Resources/Godot.icns
index 375f61437d..375f61437d 100644
--- a/tools/dist/osx_tools.app/Contents/Resources/Godot.icns
+++ b/misc/dist/osx_tools.app/Contents/Resources/Godot.icns
Binary files differ
diff --git a/tools/dist/uwp_template/AppxManifest.xml b/misc/dist/uwp_template/AppxManifest.xml
index d5e653708c..d5e653708c 100644
--- a/tools/dist/uwp_template/AppxManifest.xml
+++ b/misc/dist/uwp_template/AppxManifest.xml
diff --git a/tools/dist/uwp_template/Assets/SplashScreen.scale-100.png b/misc/dist/uwp_template/Assets/SplashScreen.scale-100.png
index 540bfb1c01..540bfb1c01 100644
--- a/tools/dist/uwp_template/Assets/SplashScreen.scale-100.png
+++ b/misc/dist/uwp_template/Assets/SplashScreen.scale-100.png
Binary files differ
diff --git a/tools/dist/uwp_template/Assets/Square150x150Logo.scale-100.png b/misc/dist/uwp_template/Assets/Square150x150Logo.scale-100.png
index 6cff663eb5..6cff663eb5 100644
--- a/tools/dist/uwp_template/Assets/Square150x150Logo.scale-100.png
+++ b/misc/dist/uwp_template/Assets/Square150x150Logo.scale-100.png
Binary files differ
diff --git a/tools/dist/uwp_template/Assets/Square310x310Logo.scale-100.png b/misc/dist/uwp_template/Assets/Square310x310Logo.scale-100.png
index 12ec232c87..12ec232c87 100644
--- a/tools/dist/uwp_template/Assets/Square310x310Logo.scale-100.png
+++ b/misc/dist/uwp_template/Assets/Square310x310Logo.scale-100.png
Binary files differ
diff --git a/tools/dist/uwp_template/Assets/Square44x44Logo.scale-100.png b/misc/dist/uwp_template/Assets/Square44x44Logo.scale-100.png
index ad059994ed..ad059994ed 100644
--- a/tools/dist/uwp_template/Assets/Square44x44Logo.scale-100.png
+++ b/misc/dist/uwp_template/Assets/Square44x44Logo.scale-100.png
Binary files differ
diff --git a/tools/dist/uwp_template/Assets/Square71x71Logo.scale-100.png b/misc/dist/uwp_template/Assets/Square71x71Logo.scale-100.png
index b1bf331365..b1bf331365 100644
--- a/tools/dist/uwp_template/Assets/Square71x71Logo.scale-100.png
+++ b/misc/dist/uwp_template/Assets/Square71x71Logo.scale-100.png
Binary files differ
diff --git a/tools/dist/uwp_template/Assets/StoreLogo.scale-100.png b/misc/dist/uwp_template/Assets/StoreLogo.scale-100.png
index 8d7a625c82..8d7a625c82 100644
--- a/tools/dist/uwp_template/Assets/StoreLogo.scale-100.png
+++ b/misc/dist/uwp_template/Assets/StoreLogo.scale-100.png
Binary files differ
diff --git a/tools/dist/uwp_template/Assets/Wide310x150Logo.scale-100.png b/misc/dist/uwp_template/Assets/Wide310x150Logo.scale-100.png
index b06f1ad50f..b06f1ad50f 100644
--- a/tools/dist/uwp_template/Assets/Wide310x150Logo.scale-100.png
+++ b/misc/dist/uwp_template/Assets/Wide310x150Logo.scale-100.png
Binary files differ
diff --git a/tools/scripts/addheader.py b/misc/scripts/addheader.py
index 056e807c81..056e807c81 100644
--- a/tools/scripts/addheader.py
+++ b/misc/scripts/addheader.py
diff --git a/tools/scripts/file-hex-array.py b/misc/scripts/file-hex-array.py
index a6cdfe541f..a6cdfe541f 100755
--- a/tools/scripts/file-hex-array.py
+++ b/misc/scripts/file-hex-array.py
diff --git a/tools/scripts/make_bmfhdr.py b/misc/scripts/make_bmfhdr.py
index 1d3c40f9c6..1d3c40f9c6 100644
--- a/tools/scripts/make_bmfhdr.py
+++ b/misc/scripts/make_bmfhdr.py
diff --git a/tools/scripts/make_glwrapper.py b/misc/scripts/make_glwrapper.py
index 5694d2327e..5694d2327e 100644
--- a/tools/scripts/make_glwrapper.py
+++ b/misc/scripts/make_glwrapper.py
diff --git a/tools/scripts/make_icons.sh b/misc/scripts/make_icons.sh
index 71037cd1c3..71037cd1c3 100644
--- a/tools/scripts/make_icons.sh
+++ b/misc/scripts/make_icons.sh
diff --git a/tools/scripts/makeargs.py b/misc/scripts/makeargs.py
index 2cd47ae087..2cd47ae087 100644
--- a/tools/scripts/makeargs.py
+++ b/misc/scripts/makeargs.py
diff --git a/tools/scripts/memsort.py b/misc/scripts/memsort.py
index fb636b0f78..fb636b0f78 100644
--- a/tools/scripts/memsort.py
+++ b/misc/scripts/memsort.py
diff --git a/tools/scripts/sort-demos.sh b/misc/scripts/sort-demos.sh
index 2121d78c15..2121d78c15 100644
--- a/tools/scripts/sort-demos.sh
+++ b/misc/scripts/sort-demos.sh
diff --git a/tools/scripts/svgs_2_pngs.py b/misc/scripts/svgs_2_pngs.py
index b24324dcd7..b24324dcd7 100644
--- a/tools/scripts/svgs_2_pngs.py
+++ b/misc/scripts/svgs_2_pngs.py
diff --git a/modules/gdscript/gd_parser.cpp b/modules/gdscript/gd_parser.cpp
index 34c39c8024..c1c1f5d5a9 100644
--- a/modules/gdscript/gd_parser.cpp
+++ b/modules/gdscript/gd_parser.cpp
@@ -2577,7 +2577,7 @@ void GDParser::_parse_block(BlockNode *p_block,bool p_static) {
Vector<Node*> args;
Vector<double> constants;
- bool constant=true;
+ bool constant=false;
for(int i=1;i<op->arguments.size();i++) {
args.push_back(op->arguments[i]);
@@ -2585,13 +2585,12 @@ void GDParser::_parse_block(BlockNode *p_block,bool p_static) {
ConstantNode *c = static_cast<ConstantNode*>(op->arguments[i]);
if (c->value.get_type()==Variant::REAL || c->value.get_type()==Variant::INT) {
constants.push_back(c->value);
- } else {
- constant=false;
+ constant=true;
}
}
}
- if (args.size()>0 || args.size()<4) {
+ if (args.size()>0 && args.size()<4) {
if (constant) {
diff --git a/scene/2d/screen_button.cpp b/scene/2d/screen_button.cpp
index 20db63b66f..94678e5e94 100644
--- a/scene/2d/screen_button.cpp
+++ b/scene/2d/screen_button.cpp
@@ -63,6 +63,38 @@ Ref<BitMap> TouchScreenButton::get_bitmask() const{
return bitmask;
}
+void TouchScreenButton::set_shape(const Ref<Shape2D>& p_shape){
+
+ shape=p_shape;
+
+ if (!is_inside_tree())
+ return;
+ if (!get_tree()->is_editor_hint() && !get_tree()->is_debugging_collisions_hint())
+ return;
+ update();
+}
+
+Ref<Shape2D> TouchScreenButton::get_shape() const{
+
+ return shape;
+}
+
+void TouchScreenButton::set_shape_centered(bool p_shape_centered) {
+
+ shape_centered=p_shape_centered;
+
+ if (!is_inside_tree())
+ return;
+ if (!get_tree()->is_editor_hint() && !get_tree()->is_debugging_collisions_hint())
+ return;
+ update();
+}
+
+bool TouchScreenButton::is_shape_centered() const {
+
+ return shape_centered;
+}
+
void TouchScreenButton::_notification(int p_what) {
switch(p_what) {
@@ -86,6 +118,15 @@ void TouchScreenButton::_notification(int p_what) {
draw_texture(texture,Point2());
}
+ if (!get_tree()->is_editor_hint() && !get_tree()->is_debugging_collisions_hint())
+ return;
+ if (shape.is_valid()) {
+ Color draw_col=get_tree()->get_debug_collisions_color();
+ Vector2 pos=shape_centered ? get_item_rect().size*0.5f : Vector2();
+ draw_set_transform_matrix(get_canvas_transform().translated(pos));
+ shape->draw(get_canvas_item(),draw_col);
+ }
+
} break;
case NOTIFICATION_ENTER_TREE: {
@@ -104,8 +145,12 @@ void TouchScreenButton::_notification(int p_what) {
} break;
case NOTIFICATION_EXIT_TREE: {
if (is_pressed())
- Input::get_singleton()->action_release(action);
+ _release(true);
} break;
+ case NOTIFICATION_PAUSED: {
+ // So the button can be pressed again even though the release gets unhandled because of coming during pause
+ allow_repress=true;
+ }
}
}
@@ -143,22 +188,7 @@ void TouchScreenButton::_input(const InputEvent& p_event) {
if (p_event.type==InputEvent::SCREEN_TOUCH && !p_event.screen_touch.pressed && finger_pressed==p_event.screen_touch.index) {
- emit_signal("released");
-
- if (action_id!=-1) {
-
- Input::get_singleton()->action_release(action);
- InputEvent ie;
- ie.type=InputEvent::ACTION;
- ie.ID=0;
- ie.action.action=action_id;
- ie.action.pressed=false;
- get_tree()->input_event(ie);
- }
- finger_pressed=-1;
-
- update();
-
+ _release();
}
if ((p_event.type==InputEvent::SCREEN_TOUCH && p_event.screen_touch.pressed)|| p_event.type==InputEvent::SCREEN_DRAG) {
@@ -184,44 +214,12 @@ void TouchScreenButton::_input(const InputEvent& p_event) {
if (touched) {
-
if (finger_pressed==-1) {
- finger_pressed=p_event.screen_touch.index;
- //emit change stuff
- emit_signal("pressed");
- if (action_id!=-1) {
-
- Input::get_singleton()->action_press(action);
- InputEvent ie;
- ie.type=InputEvent::ACTION;
- ie.ID=0;
- ie.action.action=action_id;
- ie.action.pressed=true;
- get_tree()->input_event(ie);
- }
-
- update();
+ _press(p_event.screen_touch.index);
}
-
} else {
-
if (finger_pressed!=-1) {
-
- emit_signal("released");
-
- if (action_id!=-1) {
-
- Input::get_singleton()->action_release(action);
- InputEvent ie;
- ie.type=InputEvent::ACTION;
- ie.ID=0;
- ie.action.action=action_id;
- ie.action.pressed=false;
- get_tree()->input_event(ie);
- }
- finger_pressed=-1;
-
- update();
+ _release();
}
}
@@ -239,67 +237,88 @@ void TouchScreenButton::_input(const InputEvent& p_event) {
if (!is_visible_in_tree())
return;
- if (finger_pressed!=-1)
+ const bool can_press=finger_pressed==-1 || allow_repress;
+ if (!can_press)
return; //already fingering
Point2 coord = (get_global_transform_with_canvas()).affine_inverse().xform(Point2(p_event.screen_touch.x,p_event.screen_touch.y));
+ Rect2 item_rect = get_item_rect();
bool touched=false;
+ bool check_rect=true;
+ if (shape.is_valid()) {
+
+ check_rect=false;
+ Transform2D xform=shape_centered ? Transform2D().translated(get_item_rect().size*0.5f) : Transform2D();
+ touched=shape->collide(xform, unit_rect, Transform2D(0, coord + Vector2(0.5,0.5)));
+ }
+
if (bitmask.is_valid()) {
- if (Rect2(Point2(),bitmask->get_size()).has_point(coord)) {
+ check_rect=false;
+ if (!touched && Rect2(Point2(),bitmask->get_size()).has_point(coord)) {
if (bitmask->get_bit(coord))
touched=true;
}
- } else {
- if (!texture.is_null())
- touched=Rect2(Point2(),texture->get_size()).has_point(coord);
}
+ if (!touched && check_rect) {
+ if (!texture.is_null())
+ touched=item_rect.has_point(coord);
+ }
if (touched) {
-
- finger_pressed=p_event.screen_touch.index;
- //emit change stuff
- emit_signal("pressed");
- if (action_id!=-1) {
-
- Input::get_singleton()->action_press(action);
- InputEvent ie;
- ie.type=InputEvent::ACTION;
- ie.ID=0;
- ie.action.action=action_id;
- ie.action.pressed=true;
- get_tree()->input_event(ie);
- }
- update();
-
+ _press(p_event.screen_touch.index);
}
} else {
+ if (p_event.screen_touch.index==finger_pressed) {
+ _release();
+ }
+ }
+ }
+ }
+}
+void TouchScreenButton::_press(int p_finger_pressed) {
- if (p_event.screen_touch.index==finger_pressed) {
- //untouch
+ finger_pressed=p_finger_pressed;
+ allow_repress=false;
- emit_signal("released");
+ if (action_id!=-1) {
- if (action_id!=-1) {
+ Input::get_singleton()->action_press(action);
+ InputEvent ie;
+ ie.type=InputEvent::ACTION;
+ ie.ID=0;
+ ie.action.action=action_id;
+ ie.action.pressed=true;
+ get_tree()->input_event(ie);
+ }
- Input::get_singleton()->action_release(action);
- InputEvent ie;
- ie.type=InputEvent::ACTION;
- ie.ID=0;
- ie.action.action=action_id;
- ie.action.pressed=false;
- get_tree()->input_event(ie);
- }
- finger_pressed=-1;
- update();
- }
- }
- }
+ emit_signal("pressed");
+ update();
+}
+
+void TouchScreenButton::_release(bool p_exiting_tree) {
+
+ finger_pressed=-1;
+
+ if (action_id!=-1) {
+
+ Input::get_singleton()->action_release(action);
+ InputEvent ie;
+ ie.type=InputEvent::ACTION;
+ ie.ID=0;
+ ie.action.action=action_id;
+ ie.action.pressed=false;
+ get_tree()->input_event(ie);
+ }
+
+ if (!p_exiting_tree) {
+ emit_signal("released");
+ update();
}
}
@@ -349,6 +368,12 @@ void TouchScreenButton::_bind_methods() {
ClassDB::bind_method(_MD("set_bitmask","bitmask"),&TouchScreenButton::set_bitmask);
ClassDB::bind_method(_MD("get_bitmask"),&TouchScreenButton::get_bitmask);
+ ClassDB::bind_method(_MD("set_shape","shape"),&TouchScreenButton::set_shape);
+ ClassDB::bind_method(_MD("get_shape"),&TouchScreenButton::get_shape);
+
+ ClassDB::bind_method(_MD("set_shape_centered","bool"),&TouchScreenButton::set_shape_centered);
+ ClassDB::bind_method(_MD("is_shape_centered"),&TouchScreenButton::is_shape_centered);
+
ClassDB::bind_method(_MD("set_action","action"),&TouchScreenButton::set_action);
ClassDB::bind_method(_MD("get_action"),&TouchScreenButton::get_action);
@@ -365,6 +390,8 @@ void TouchScreenButton::_bind_methods() {
ADD_PROPERTY( PropertyInfo(Variant::OBJECT,"normal",PROPERTY_HINT_RESOURCE_TYPE,"Texture"),_SCS("set_texture"),_SCS("get_texture"));
ADD_PROPERTY( PropertyInfo(Variant::OBJECT,"pressed",PROPERTY_HINT_RESOURCE_TYPE,"Texture"),_SCS("set_texture_pressed"),_SCS("get_texture_pressed"));
ADD_PROPERTY( PropertyInfo(Variant::OBJECT,"bitmask",PROPERTY_HINT_RESOURCE_TYPE,"BitMap"),_SCS("set_bitmask"),_SCS("get_bitmask"));
+ ADD_PROPERTY( PropertyInfo(Variant::OBJECT,"shape",PROPERTY_HINT_RESOURCE_TYPE,"Shape2D"),_SCS("set_shape"),_SCS("get_shape"));
+ ADD_PROPERTY( PropertyInfo(Variant::BOOL,"shape_centered"),_SCS("set_shape_centered"),_SCS("is_shape_centered"));
ADD_PROPERTY( PropertyInfo(Variant::BOOL,"passby_press"),_SCS("set_passby_press"),_SCS("is_passby_press_enabled"));
ADD_PROPERTY( PropertyInfo(Variant::STRING,"action"),_SCS("set_action"),_SCS("get_action"));
ADD_PROPERTY( PropertyInfo(Variant::INT,"visibility_mode",PROPERTY_HINT_ENUM,"Always,TouchScreen Only"),_SCS("set_visibility_mode"),_SCS("get_visibility_mode"));
@@ -379,7 +406,11 @@ void TouchScreenButton::_bind_methods() {
TouchScreenButton::TouchScreenButton() {
finger_pressed=-1;
+ allow_repress=false;
action_id=-1;
passby_press=false;
visibility=VISIBILITY_ALWAYS;
+ shape_centered=true;
+ unit_rect=Ref<RectangleShape2D>(memnew(RectangleShape2D));
+ unit_rect->set_extents(Vector2(0.5,0.5));
}
diff --git a/scene/2d/screen_button.h b/scene/2d/screen_button.h
index 34e02d644b..8ce378c660 100644
--- a/scene/2d/screen_button.h
+++ b/scene/2d/screen_button.h
@@ -32,6 +32,7 @@
#include "scene/2d/node_2d.h"
#include "scene/resources/texture.h"
#include "scene/resources/bit_mask.h"
+#include "scene/resources/rectangle_shape_2d.h"
class TouchScreenButton : public Node2D {
@@ -47,16 +48,24 @@ private:
Ref<Texture> texture;
Ref<Texture> texture_pressed;
Ref<BitMap> bitmask;
+ Ref<Shape2D> shape;
+ bool shape_centered;
+
+ Ref<RectangleShape2D> unit_rect;
StringName action;
bool passby_press;
int finger_pressed;
+ bool allow_repress;
int action_id;
VisibilityMode visibility;
void _input(const InputEvent& p_Event);
+ void _press(int p_finger_pressed);
+ void _release(bool p_exiting_tree=false);
+
protected:
void _notification(int p_what);
@@ -73,6 +82,12 @@ public:
void set_bitmask(const Ref<BitMap>& p_bitmask);
Ref<BitMap> get_bitmask() const;
+ void set_shape(const Ref<Shape2D>& p_shape);
+ Ref<Shape2D> get_shape() const;
+
+ void set_shape_centered(bool p_shape_centered);
+ bool is_shape_centered() const;
+
void set_action(const String& p_action);
String get_action() const;
diff --git a/scene/3d/light.cpp b/scene/3d/light.cpp
index 0c6c113dd2..799c00d266 100644
--- a/scene/3d/light.cpp
+++ b/scene/3d/light.cpp
@@ -253,6 +253,7 @@ void Light::_bind_methods() {
ADD_PROPERTY( PropertyInfo( Variant::BOOL, "shadow_enabled"), _SCS("set_shadow"), _SCS("has_shadow"));
ADD_PROPERTY( PropertyInfo( Variant::COLOR, "shadow_color",PROPERTY_HINT_COLOR_NO_ALPHA), _SCS("set_shadow_color"), _SCS("get_shadow_color"));
ADD_PROPERTYI( PropertyInfo( Variant::REAL, "shadow_bias",PROPERTY_HINT_RANGE,"-16,16,0.01"), _SCS("set_param"), _SCS("get_param"), PARAM_SHADOW_BIAS);
+ ADD_PROPERTYI( PropertyInfo( Variant::REAL, "shadow_contact",PROPERTY_HINT_RANGE,"0,16,0.01"), _SCS("set_param"), _SCS("get_param"), PARAM_CONTACT_SHADOW_SIZE);
ADD_PROPERTYI( PropertyInfo( Variant::REAL, "shadow_max_distance",PROPERTY_HINT_RANGE,"0,65536,0.1"), _SCS("set_param"), _SCS("get_param"), PARAM_SHADOW_MAX_DISTANCE);
ADD_GROUP("Editor","");
ADD_PROPERTY( PropertyInfo( Variant::BOOL, "editor_only"), _SCS("set_editor_only"), _SCS("is_editor_only"));
@@ -264,6 +265,7 @@ void Light::_bind_methods() {
BIND_CONSTANT( PARAM_ATTENUATION );
BIND_CONSTANT( PARAM_SPOT_ANGLE );
BIND_CONSTANT( PARAM_SPOT_ATTENUATION );
+ BIND_CONSTANT( PARAM_CONTACT_SHADOW_SIZE );
BIND_CONSTANT( PARAM_SHADOW_MAX_DISTANCE );
BIND_CONSTANT( PARAM_SHADOW_SPLIT_1_OFFSET );
BIND_CONSTANT( PARAM_SHADOW_SPLIT_2_OFFSET );
@@ -297,6 +299,7 @@ Light::Light(VisualServer::LightType p_type) {
set_param(PARAM_ATTENUATION,1);
set_param(PARAM_SPOT_ANGLE,45);
set_param(PARAM_SPOT_ATTENUATION,1);
+ set_param(PARAM_CONTACT_SHADOW_SIZE,0);
set_param(PARAM_SHADOW_MAX_DISTANCE,0);
set_param(PARAM_SHADOW_SPLIT_1_OFFSET,0.1);
set_param(PARAM_SHADOW_SPLIT_2_OFFSET,0.2);
diff --git a/scene/3d/light.h b/scene/3d/light.h
index d27b9fed12..4cf0156d5c 100644
--- a/scene/3d/light.h
+++ b/scene/3d/light.h
@@ -55,6 +55,7 @@ public:
PARAM_ATTENUATION = VS::LIGHT_PARAM_ATTENUATION,
PARAM_SPOT_ANGLE = VS::LIGHT_PARAM_SPOT_ANGLE,
PARAM_SPOT_ATTENUATION = VS::LIGHT_PARAM_SPOT_ATTENUATION,
+ PARAM_CONTACT_SHADOW_SIZE= VS::LIGHT_PARAM_CONTACT_SHADOW_SIZE,
PARAM_SHADOW_MAX_DISTANCE = VS::LIGHT_PARAM_SHADOW_MAX_DISTANCE,
PARAM_SHADOW_SPLIT_1_OFFSET = VS::LIGHT_PARAM_SHADOW_SPLIT_1_OFFSET,
PARAM_SHADOW_SPLIT_2_OFFSET = VS::LIGHT_PARAM_SHADOW_SPLIT_2_OFFSET,
diff --git a/scene/gui/text_edit.cpp b/scene/gui/text_edit.cpp
index 6036b3f9df..4ca95294ca 100644
--- a/scene/gui/text_edit.cpp
+++ b/scene/gui/text_edit.cpp
@@ -2431,6 +2431,8 @@ void TextEdit::_gui_input(const InputEvent& p_gui_input) {
if (k.mod.shift)
_post_shift_selection();
+ else if(k.mod.command || k.mod.control)
+ deselect();
} break;
#else
@@ -2440,25 +2442,30 @@ void TextEdit::_gui_input(const InputEvent& p_gui_input) {
if (k.mod.shift)
_pre_shift_selection();
- // compute whitespace symbols seq length
- int current_line_whitespace_len = 0;
- while(current_line_whitespace_len < text[cursor.line].length()) {
- CharType c = text[cursor.line][current_line_whitespace_len];
- if(c != '\t' && c != ' ')
- break;
- current_line_whitespace_len++;
- }
-
- if(cursor_get_column() == current_line_whitespace_len)
+ if (k.mod.command) {
+ cursor_set_line(0);
cursor_set_column(0);
- else
- cursor_set_column(current_line_whitespace_len);
+ }
+ else {
+ // compute whitespace symbols seq length
+ int current_line_whitespace_len = 0;
+ while( current_line_whitespace_len < text[cursor.line].length() ) {
+ CharType c = text[cursor.line][current_line_whitespace_len];
+ if( c != '\t' && c != ' ' )
+ break;
+ current_line_whitespace_len++;
+ }
- if (k.mod.command)
- cursor_set_line(0);
+ if( cursor_get_column() == current_line_whitespace_len )
+ cursor_set_column(0);
+ else
+ cursor_set_column(current_line_whitespace_len);
+ }
if (k.mod.shift)
_post_shift_selection();
+ else if(k.mod.command || k.mod.control)
+ deselect();
_cancel_completion();
completion_hint="";
@@ -2481,6 +2488,8 @@ void TextEdit::_gui_input(const InputEvent& p_gui_input) {
if (k.mod.shift)
_post_shift_selection();
+ else if(k.mod.command || k.mod.control)
+ deselect();
} break;
#else
@@ -2495,6 +2504,8 @@ void TextEdit::_gui_input(const InputEvent& p_gui_input) {
if (k.mod.shift)
_post_shift_selection();
+ else if(k.mod.command || k.mod.control)
+ deselect();
_cancel_completion();
completion_hint="";
diff --git a/servers/physics/joints/generic_6dof_joint_sw.cpp b/servers/physics/joints/generic_6dof_joint_sw.cpp
index 48f70d9077..8d3fc4721a 100644
--- a/servers/physics/joints/generic_6dof_joint_sw.cpp
+++ b/servers/physics/joints/generic_6dof_joint_sw.cpp
@@ -676,7 +676,7 @@ float Generic6DOFJointSW::get_param(Vector3::Axis p_axis,PhysicsServer::G6DOFJoi
} break;
case PhysicsServer::G6DOF_JOINT_ANGULAR_MOTOR_FORCE_LIMIT: {
- return m_angularLimits[p_axis].m_maxLimitForce;
+ return m_angularLimits[p_axis].m_maxMotorForce;
} break;
}
diff --git a/servers/visual_server.h b/servers/visual_server.h
index cda7721653..5c835c2287 100644
--- a/servers/visual_server.h
+++ b/servers/visual_server.h
@@ -365,6 +365,7 @@ public:
LIGHT_PARAM_ATTENUATION,
LIGHT_PARAM_SPOT_ANGLE,
LIGHT_PARAM_SPOT_ATTENUATION,
+ LIGHT_PARAM_CONTACT_SHADOW_SIZE,
LIGHT_PARAM_SHADOW_MAX_DISTANCE,
LIGHT_PARAM_SHADOW_SPLIT_1_OFFSET,
LIGHT_PARAM_SHADOW_SPLIT_2_OFFSET,
diff --git a/thirdparty/README.md b/thirdparty/README.md
index d0e8c05183..54930c1ebe 100644
--- a/thirdparty/README.md
+++ b/thirdparty/README.md
@@ -1,6 +1,13 @@
# Third party libraries
+## certs
+
+- Upstream: ?
+
+TODO.
+
+
## enet
- Upstream: http://enet.bespin.org
@@ -18,6 +25,13 @@ for all platforms (especially UWP). Check the diff with the 1.3.13 tarball
before the next update.
+## fonts
+
+- Upstream: ?
+
+TODO.
+
+
## freetype
- Upstream: https://www.freetype.org
diff --git a/tools/certs/ca-certificates.crt b/thirdparty/certs/ca-certificates.crt
index 862096d85a..862096d85a 100644
--- a/tools/certs/ca-certificates.crt
+++ b/thirdparty/certs/ca-certificates.crt
diff --git a/tools/editor_fonts/DroidSans.ttf b/thirdparty/fonts/DroidSans.ttf
index 767c63ad00..767c63ad00 100644
--- a/tools/editor_fonts/DroidSans.ttf
+++ b/thirdparty/fonts/DroidSans.ttf
Binary files differ
diff --git a/tools/editor_fonts/DroidSansArabic.ttf b/thirdparty/fonts/DroidSansArabic.ttf
index 660e2a9916..660e2a9916 100644
--- a/tools/editor_fonts/DroidSansArabic.ttf
+++ b/thirdparty/fonts/DroidSansArabic.ttf
Binary files differ
diff --git a/tools/editor_fonts/DroidSansFallback.ttf b/thirdparty/fonts/DroidSansFallback.ttf
index 206621fc6c..206621fc6c 100644
--- a/tools/editor_fonts/DroidSansFallback.ttf
+++ b/thirdparty/fonts/DroidSansFallback.ttf
Binary files differ
diff --git a/tools/editor_fonts/DroidSansHebrew.ttf b/thirdparty/fonts/DroidSansHebrew.ttf
index 8d77e3e4cf..8d77e3e4cf 100644
--- a/tools/editor_fonts/DroidSansHebrew.ttf
+++ b/thirdparty/fonts/DroidSansHebrew.ttf
Binary files differ
diff --git a/tools/editor_fonts/DroidSansJapanese.ttf b/thirdparty/fonts/DroidSansJapanese.ttf
index 412fa3de05..412fa3de05 100644
--- a/tools/editor_fonts/DroidSansJapanese.ttf
+++ b/thirdparty/fonts/DroidSansJapanese.ttf
Binary files differ
diff --git a/tools/editor_fonts/DroidSansThai.ttf b/thirdparty/fonts/DroidSansThai.ttf
index f849baeff9..f849baeff9 100644
--- a/tools/editor_fonts/DroidSansThai.ttf
+++ b/thirdparty/fonts/DroidSansThai.ttf
Binary files differ
diff --git a/tools/editor_fonts/LICENSE.DroidSans.txt b/thirdparty/fonts/LICENSE.DroidSans.txt
index 636f1e2975..636f1e2975 100644
--- a/tools/editor_fonts/LICENSE.DroidSans.txt
+++ b/thirdparty/fonts/LICENSE.DroidSans.txt
diff --git a/tools/editor_fonts/LICENSE.SourceCodePro.txt b/thirdparty/fonts/LICENSE.SourceCodePro.txt
index f430ee5dbe..f430ee5dbe 100644
--- a/tools/editor_fonts/LICENSE.SourceCodePro.txt
+++ b/thirdparty/fonts/LICENSE.SourceCodePro.txt
diff --git a/tools/editor_fonts/source_code_pro.otf b/thirdparty/fonts/source_code_pro.otf
index 4e3b9d0bcd..4e3b9d0bcd 100644
--- a/tools/editor_fonts/source_code_pro.otf
+++ b/thirdparty/fonts/source_code_pro.otf
Binary files differ
diff --git a/tools/SCsub b/tools/SCsub
deleted file mode 100644
index 43cad794d4..0000000000
--- a/tools/SCsub
+++ /dev/null
@@ -1,121 +0,0 @@
-#!/usr/bin/env python
-
-Import('env')
-
-env.tool_sources = []
-env.add_source_files(env.tool_sources, "*.cpp")
-
-Export('env')
-
-
-def make_translations_header(target, source, env):
-
- dst = target[0].srcnode().abspath
-
- g = open(dst, "wb")
-
- """"
- """
-
- g.write("/* THIS FILE IS GENERATED DO NOT EDIT */\n")
- g.write("#ifndef _EDITOR_TRANSLATIONS_H\n")
- g.write("#define _EDITOR_TRANSLATIONS_H\n")
-
- import zlib
- import os.path
-
- paths = [node.srcnode().abspath for node in source]
- sorted_paths = sorted(paths, key=lambda path: os.path.splitext(os.path.basename(path))[0])
-
- xl_names = []
- for i in range(len(sorted_paths)):
- print("Appending translation: " + sorted_paths[i])
- f = open(sorted_paths[i], "rb")
- buf = f.read()
- decomp_size = len(buf)
- buf = zlib.compress(buf)
- name = os.path.splitext(os.path.basename(sorted_paths[i]))[0]
-
- #g.write("static const int _translation_"+name+"_compressed_size="+str(len(buf))+";\n")
- #g.write("static const int _translation_"+name+"_uncompressed_size="+str(decomp_size)+";\n")
- g.write("static const unsigned char _translation_" + name + "_compressed[]={\n")
- for i in range(len(buf)):
- g.write(str(ord(buf[i])) + ",\n")
-
- g.write("};\n")
-
- xl_names.append([name, len(buf), str(decomp_size)])
-
- g.write("struct EditorTranslationList {\n")
- g.write("\tconst char* lang;\n")
- g.write("\tint comp_size;\n")
- g.write("\tint uncomp_size;\n")
- g.write("\tconst unsigned char* data;\n")
- g.write("};\n\n")
- g.write("static EditorTranslationList _editor_translations[]={\n")
- for x in xl_names:
- g.write("\t{ \"" + x[0] + "\", " + str(x[1]) + ", " + str(x[2]) + ",_translation_" + x[0] + "_compressed},\n")
- g.write("\t{NULL,0,0,NULL}\n")
- g.write("};\n")
-
- g.write("#endif")
-
-
-def make_fonts_header(target, source, env):
-
- dst = target[0].srcnode().abspath
-
- g = open(dst, "wb")
-
- """"
- """
-
- g.write("/* THIS FILE IS GENERATED DO NOT EDIT */\n")
- g.write("#ifndef _EDITOR_FONTS_H\n")
- g.write("#define _EDITOR_FONTS_H\n")
-
- # saving uncompressed, since freetype will reference from memory pointer
- xl_names = []
- for i in range(len(source)):
- print("Appending font: " + source[i].srcnode().abspath)
- f = open(source[i].srcnode().abspath, "rb")
- buf = f.read()
- import os.path
-
- name = os.path.splitext(os.path.basename(source[i].srcnode().abspath))[0]
-
- g.write("static const int _font_" + name + "_size=" + str(len(buf)) + ";\n")
- g.write("static const unsigned char _font_" + name + "[]={\n")
- for i in range(len(buf)):
- g.write(str(ord(buf[i])) + ",\n")
-
- g.write("};\n")
-
- g.write("#endif")
-
-
-if (env["tools"] != "no"):
-
- import glob
-
- dir = env.Dir('.').abspath
- tlist = glob.glob(dir + "/translations/*.po")
-
- print("translations: ", tlist)
- env.Depends('#tools/editor/translations.h', tlist)
- env.Command('#tools/editor/translations.h', tlist, make_translations_header)
-
- flist = glob.glob(dir + "/editor_fonts/*.ttf")
- flist.append(glob.glob(dir + "/editor_fonts/*.otf"))
-
- print("fonts: ", flist)
- env.Depends('#tools/editor/builtin_fonts.h', flist)
- env.Command('#tools/editor/builtin_fonts.h', flist, make_fonts_header)
-
- SConscript('editor/SCsub')
- SConscript('collada/SCsub')
- SConscript('doc/SCsub')
-
- lib = env.Library("tool", env.tool_sources)
-
- env.Prepend(LIBS=[lib])
diff --git a/tools/editor/SCsub b/tools/editor/SCsub
index a0e6802348..710dac3ea7 100644
--- a/tools/editor/SCsub
+++ b/tools/editor/SCsub
@@ -1,9 +1,10 @@
#!/usr/bin/env python
Import('env')
+env.editor_sources = []
-def make_doc_header(target, source, env):
+def make_certs_header(target, source, env):
src = source[0].srcnode().abspath
dst = target[0].srcnode().abspath
@@ -15,18 +16,18 @@ def make_doc_header(target, source, env):
buf = zlib.compress(buf)
g.write("/* THIS FILE IS GENERATED DO NOT EDIT */\n")
- g.write("#ifndef _DOC_DATA_RAW_H\n")
- g.write("#define _DOC_DATA_RAW_H\n")
- g.write("static const int _doc_data_compressed_size=" + str(len(buf)) + ";\n")
- g.write("static const int _doc_data_uncompressed_size=" + str(decomp_size) + ";\n")
- g.write("static const unsigned char _doc_data_compressed[]={\n")
+ g.write("#ifndef _CERTS_RAW_H\n")
+ g.write("#define _CERTS_RAW_H\n")
+ g.write("static const int _certs_compressed_size=" + str(len(buf)) + ";\n")
+ g.write("static const int _certs_uncompressed_size=" + str(decomp_size) + ";\n")
+ g.write("static const unsigned char _certs_compressed[]={\n")
for i in range(len(buf)):
g.write(str(ord(buf[i])) + ",\n")
g.write("};\n")
g.write("#endif")
-def make_certs_header(target, source, env):
+def make_doc_header(target, source, env):
src = source[0].srcnode().abspath
dst = target[0].srcnode().abspath
@@ -38,23 +39,104 @@ def make_certs_header(target, source, env):
buf = zlib.compress(buf)
g.write("/* THIS FILE IS GENERATED DO NOT EDIT */\n")
- g.write("#ifndef _CERTS_RAW_H\n")
- g.write("#define _CERTS_RAW_H\n")
- g.write("static const int _certs_compressed_size=" + str(len(buf)) + ";\n")
- g.write("static const int _certs_uncompressed_size=" + str(decomp_size) + ";\n")
- g.write("static const unsigned char _certs_compressed[]={\n")
+ g.write("#ifndef _DOC_DATA_RAW_H\n")
+ g.write("#define _DOC_DATA_RAW_H\n")
+ g.write("static const int _doc_data_compressed_size=" + str(len(buf)) + ";\n")
+ g.write("static const int _doc_data_uncompressed_size=" + str(decomp_size) + ";\n")
+ g.write("static const unsigned char _doc_data_compressed[]={\n")
for i in range(len(buf)):
g.write(str(ord(buf[i])) + ",\n")
g.write("};\n")
g.write("#endif")
+def make_fonts_header(target, source, env):
+
+ dst = target[0].srcnode().abspath
+
+ g = open(dst, "wb")
+
+ g.write("/* THIS FILE IS GENERATED DO NOT EDIT */\n")
+ g.write("#ifndef _EDITOR_FONTS_H\n")
+ g.write("#define _EDITOR_FONTS_H\n")
+
+ # saving uncompressed, since freetype will reference from memory pointer
+ xl_names = []
+ for i in range(len(source)):
+ print("Appending font: " + source[i].srcnode().abspath)
+ f = open(source[i].srcnode().abspath, "rb")
+ buf = f.read()
+ import os.path
+
+ name = os.path.splitext(os.path.basename(source[i].srcnode().abspath))[0]
+
+ g.write("static const int _font_" + name + "_size=" + str(len(buf)) + ";\n")
+ g.write("static const unsigned char _font_" + name + "[]={\n")
+ for i in range(len(buf)):
+ g.write(str(ord(buf[i])) + ",\n")
+
+ g.write("};\n")
+
+ g.write("#endif")
+
+
+def make_translations_header(target, source, env):
+
+ dst = target[0].srcnode().abspath
+
+ g = open(dst, "wb")
+
+ g.write("/* THIS FILE IS GENERATED DO NOT EDIT */\n")
+ g.write("#ifndef _EDITOR_TRANSLATIONS_H\n")
+ g.write("#define _EDITOR_TRANSLATIONS_H\n")
+
+ import zlib
+ import os.path
+
+ paths = [node.srcnode().abspath for node in source]
+ sorted_paths = sorted(paths, key=lambda path: os.path.splitext(os.path.basename(path))[0])
+
+ xl_names = []
+ for i in range(len(sorted_paths)):
+ print("Appending translation: " + sorted_paths[i])
+ f = open(sorted_paths[i], "rb")
+ buf = f.read()
+ decomp_size = len(buf)
+ buf = zlib.compress(buf)
+ name = os.path.splitext(os.path.basename(sorted_paths[i]))[0]
+
+ #g.write("static const int _translation_"+name+"_compressed_size="+str(len(buf))+";\n")
+ #g.write("static const int _translation_"+name+"_uncompressed_size="+str(decomp_size)+";\n")
+ g.write("static const unsigned char _translation_" + name + "_compressed[]={\n")
+ for i in range(len(buf)):
+ g.write(str(ord(buf[i])) + ",\n")
+
+ g.write("};\n")
+
+ xl_names.append([name, len(buf), str(decomp_size)])
+
+ g.write("struct EditorTranslationList {\n")
+ g.write("\tconst char* lang;\n")
+ g.write("\tint comp_size;\n")
+ g.write("\tint uncomp_size;\n")
+ g.write("\tconst unsigned char* data;\n")
+ g.write("};\n\n")
+ g.write("static EditorTranslationList _editor_translations[]={\n")
+ for x in xl_names:
+ g.write("\t{ \"" + x[0] + "\", " + str(x[1]) + ", " + str(x[2]) + ",_translation_" + x[0] + "_compressed},\n")
+ g.write("\t{NULL,0,0,NULL}\n")
+ g.write("};\n")
+
+ g.write("#endif")
+
+
if (env["tools"] == "yes"):
+ # Register exporters
reg_exporters_inc = '#include "register_exporters.h"\n'
reg_exporters = 'void register_exporters() {\n'
for e in env.platform_exporters:
- env.tool_sources.append("#platform/" + e + "/export/export.cpp")
+ env.editor_sources.append("#platform/" + e + "/export/export.cpp")
reg_exporters += '\t//register_' + e + '_exporter();\n'
reg_exporters_inc += '#include "platform/' + e + '/export/export.h"\n'
reg_exporters += '}\n'
@@ -63,19 +145,42 @@ if (env["tools"] == "yes"):
f.write(reg_exporters)
f.close()
+ # API documentation
env.Depends("#tools/editor/doc_data_compressed.h", "#doc/base/classes.xml")
env.Command("#tools/editor/doc_data_compressed.h", "#doc/base/classes.xml", make_doc_header)
- env.Depends("#tools/editor/certs_compressed.h", "#tools/certs/ca-certificates.crt")
- env.Command("#tools/editor/certs_compressed.h", "#tools/certs/ca-certificates.crt", make_certs_header)
+ # Certificates
+ env.Depends("#tools/editor/certs_compressed.h", "#thirdparty/certs/ca-certificates.crt")
+ env.Command("#tools/editor/certs_compressed.h", "#thirdparty/certs/ca-certificates.crt", make_certs_header)
- # make_doc_header(env.File("#tools/editor/doc_data_raw.h").srcnode().abspath,env.File("#doc/base/classes.xml").srcnode().abspath,env)
+ import glob
+ path = env.Dir('.').abspath
- env.add_source_files(env.tool_sources, "*.cpp")
+ # Translations
+ tlist = glob.glob(path + "/translations/*.po")
+ print("translations: ", tlist)
+ env.Depends('#tools/editor/translations.h', tlist)
+ env.Command('#tools/editor/translations.h', tlist, make_translations_header)
- Export('env')
- SConscript('icons/SCsub')
- SConscript('plugins/SCsub')
+ # Fonts
+ flist = glob.glob(path + "/../../thirdparty/fonts/*.ttf")
+ flist.append(glob.glob(path + "/../../thirdparty/fonts/*.otf"))
+ print("fonts: ", flist)
+ env.Depends('#tools/editor/builtin_fonts.h', flist)
+ env.Command('#tools/editor/builtin_fonts.h', flist, make_fonts_header)
+
+
+ env.add_source_files(env.editor_sources, "*.cpp")
+
+ SConscript('collada/SCsub')
+ SConscript('doc/SCsub')
SConscript('fileserver/SCsub')
- SConscript('io_plugins/SCsub')
+ SConscript('icons/SCsub')
SConscript('import/SCsub')
+ SConscript('io_plugins/SCsub')
+ SConscript('plugins/SCsub')
+
+ lib = env.Library("editor", env.editor_sources)
+ env.Prepend(LIBS=[lib])
+
+ Export('env')
diff --git a/tools/doc/SCsub b/tools/editor/collada/SCsub
index 4bc64ffdc2..04c9a827ef 100644
--- a/tools/doc/SCsub
+++ b/tools/editor/collada/SCsub
@@ -2,6 +2,6 @@
Import('env')
-env.add_source_files(env.tool_sources, "*.cpp")
+env.add_source_files(env.editor_sources, "*.cpp")
Export('env')
diff --git a/tools/collada/collada.cpp b/tools/editor/collada/collada.cpp
index a23fd84aa0..a23fd84aa0 100644
--- a/tools/collada/collada.cpp
+++ b/tools/editor/collada/collada.cpp
diff --git a/tools/collada/collada.h b/tools/editor/collada/collada.h
index fd7ad4920d..fd7ad4920d 100644
--- a/tools/collada/collada.h
+++ b/tools/editor/collada/collada.h
diff --git a/tools/collada/SCsub b/tools/editor/doc/SCsub
index 4bc64ffdc2..04c9a827ef 100644
--- a/tools/collada/SCsub
+++ b/tools/editor/doc/SCsub
@@ -2,6 +2,6 @@
Import('env')
-env.add_source_files(env.tool_sources, "*.cpp")
+env.add_source_files(env.editor_sources, "*.cpp")
Export('env')
diff --git a/tools/doc/doc_data.cpp b/tools/editor/doc/doc_data.cpp
index d51dc886b2..d51dc886b2 100644
--- a/tools/doc/doc_data.cpp
+++ b/tools/editor/doc/doc_data.cpp
diff --git a/tools/doc/doc_data.h b/tools/editor/doc/doc_data.h
index fead1da510..fead1da510 100644
--- a/tools/doc/doc_data.h
+++ b/tools/editor/doc/doc_data.h
diff --git a/tools/doc/doc_dump.cpp b/tools/editor/doc/doc_dump.cpp
index 5ebba596e9..5ebba596e9 100644
--- a/tools/doc/doc_dump.cpp
+++ b/tools/editor/doc/doc_dump.cpp
diff --git a/tools/doc/doc_dump.h b/tools/editor/doc/doc_dump.h
index 84629b89c8..84629b89c8 100644
--- a/tools/doc/doc_dump.h
+++ b/tools/editor/doc/doc_dump.h
diff --git a/tools/editor/editor_help.h b/tools/editor/editor_help.h
index 85bac27705..3c4ba1f43e 100644
--- a/tools/editor/editor_help.h
+++ b/tools/editor/editor_help.h
@@ -40,7 +40,7 @@
#include "scene/main/timer.h"
#include "tools/editor/code_editor.h"
-#include "tools/doc/doc_data.h"
+#include "tools/editor/doc/doc_data.h"
class EditorNode;
diff --git a/tools/editor/editor_node.cpp b/tools/editor/editor_node.cpp
index 352b0818b4..c70fbf05a0 100644
--- a/tools/editor/editor_node.cpp
+++ b/tools/editor/editor_node.cpp
@@ -2603,6 +2603,14 @@ void EditorNode::_menu_option_confirm(int p_option,bool p_confirmed) {
play_custom_scene_button->set_pressed(false);
play_custom_scene_button->set_icon(gui_base->get_icon("PlayCustom","EditorIcons"));
//pause_button->set_pressed(false);
+ if (bool(EDITOR_DEF("run/output/always_close_output_on_stop", true))) {
+ for(int i=0;i<bottom_panel_items.size();i++) {
+ if (bottom_panel_items[i].control==log) {
+ _bottom_panel_switch(false,i);
+ break;
+ }
+ }
+ }
emit_signal("stop_pressed");
} break;
diff --git a/tools/editor/editor_settings.cpp b/tools/editor/editor_settings.cpp
index 1cdc426541..ebac77699a 100644
--- a/tools/editor/editor_settings.cpp
+++ b/tools/editor/editor_settings.cpp
@@ -655,6 +655,7 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
set("run/auto_save/save_before_running",true);
set("run/output/always_clear_output_on_play",true);
set("run/output/always_open_output_on_play",true);
+ set("run/output/always_close_output_on_stop",false);
set("filesystem/resources/save_compressed_resources",true);
set("filesystem/resources/auto_reload_modified_images",true);
diff --git a/tools/editor/fileserver/SCsub b/tools/editor/fileserver/SCsub
index 4bf55189cc..f1fa50148f 100644
--- a/tools/editor/fileserver/SCsub
+++ b/tools/editor/fileserver/SCsub
@@ -2,4 +2,4 @@
Import('env')
Export('env')
-env.add_source_files(env.tool_sources, "*.cpp")
+env.add_source_files(env.editor_sources, "*.cpp")
diff --git a/tools/editor/icons/SCsub b/tools/editor/icons/SCsub
index f86ae2b10d..4af481d1f6 100644
--- a/tools/editor/icons/SCsub
+++ b/tools/editor/icons/SCsub
@@ -92,5 +92,5 @@ make_editor_icons_builder = Builder(action=make_editor_icons_action,
env['BUILDERS']['MakeEditorIconsBuilder'] = make_editor_icons_builder
env.Alias('editor_icons', [env.MakeEditorIconsBuilder('#tools/editor/editor_icons.cpp', Glob("*.png"))])
-env.tool_sources.append("#tools/editor/editor_icons.cpp")
+env.editor_sources.append("#tools/editor/editor_icons.cpp")
Export('env')
diff --git a/tools/editor/import/SCsub b/tools/editor/import/SCsub
index 4bf55189cc..f1fa50148f 100644
--- a/tools/editor/import/SCsub
+++ b/tools/editor/import/SCsub
@@ -2,4 +2,4 @@
Import('env')
Export('env')
-env.add_source_files(env.tool_sources, "*.cpp")
+env.add_source_files(env.editor_sources, "*.cpp")
diff --git a/tools/editor/import/editor_import_collada.cpp b/tools/editor/import/editor_import_collada.cpp
index 4d99389f9b..a901de1faf 100644
--- a/tools/editor/import/editor_import_collada.cpp
+++ b/tools/editor/import/editor_import_collada.cpp
@@ -29,7 +29,6 @@
#include "editor_import_collada.h"
-#include "collada/collada.h"
#include "scene/3d/spatial.h"
#include "scene/3d/skeleton.h"
#include "scene/3d/path.h"
@@ -40,6 +39,7 @@
#include "scene/resources/animation.h"
#include "scene/resources/packed_scene.h"
#include "os/os.h"
+#include "tools/editor/collada/collada.h"
#include "tools/editor/editor_node.h"
#include <iostream>
diff --git a/tools/editor/io_plugins/SCsub b/tools/editor/io_plugins/SCsub
index 4bf55189cc..f1fa50148f 100644
--- a/tools/editor/io_plugins/SCsub
+++ b/tools/editor/io_plugins/SCsub
@@ -2,4 +2,4 @@
Import('env')
Export('env')
-env.add_source_files(env.tool_sources, "*.cpp")
+env.add_source_files(env.editor_sources, "*.cpp")
diff --git a/tools/editor/plugins/SCsub b/tools/editor/plugins/SCsub
index 4bf55189cc..f1fa50148f 100644
--- a/tools/editor/plugins/SCsub
+++ b/tools/editor/plugins/SCsub
@@ -2,4 +2,4 @@
Import('env')
Export('env')
-env.add_source_files(env.tool_sources, "*.cpp")
+env.add_source_files(env.editor_sources, "*.cpp")
diff --git a/tools/editor/plugins/script_editor_plugin.cpp b/tools/editor/plugins/script_editor_plugin.cpp
index 4738b348f4..5f97fce4e7 100644
--- a/tools/editor/plugins/script_editor_plugin.cpp
+++ b/tools/editor/plugins/script_editor_plugin.cpp
@@ -1334,6 +1334,7 @@ void ScriptEditor::_find_scripts(Node* p_base, Node* p_current, Set<Ref<Script>
struct _ScriptEditorItemData {
String name;
+ String sort_key;
Ref<Texture> icon;
int index;
String tooltip;
@@ -1343,7 +1344,7 @@ struct _ScriptEditorItemData {
bool operator<(const _ScriptEditorItemData& id) const {
- return category==id.category?name.nocasecmp_to(id.name)<0:category<id.category;
+ return category==id.category?sort_key<id.sort_key:category<id.category;
}
};
@@ -1404,6 +1405,8 @@ void ScriptEditor::_update_script_names() {
script_list->clear();
bool split_script_help = EditorSettings::get_singleton()->get("text_editor/open_scripts/group_help_pages");
+ ScriptSortBy sort_by = (ScriptSortBy) (int) EditorSettings::get_singleton()->get("text_editor/open_scripts/sort_scripts_by");
+ ScriptListName display_as = (ScriptListName) (int) EditorSettings::get_singleton()->get("text_editor/open_scripts/list_script_names_as");
Vector<_ScriptEditorItemData> sedata;
@@ -1415,15 +1418,41 @@ void ScriptEditor::_update_script_names() {
String name = se->get_name();
Ref<Texture> icon = se->get_icon();
- String tooltip = se->get_edited_script()->get_path();
+ String path = se->get_edited_script()->get_path();
_ScriptEditorItemData sd;
sd.icon=icon;
sd.name=name;
- sd.tooltip=tooltip;
+ sd.tooltip=path;
sd.index=i;
sd.used=used.has(se->get_edited_script());
sd.category=0;
+
+ switch (sort_by) {
+ case SORT_BY_NAME: {
+ sd.sort_key=name.to_lower();
+ } break;
+ case SORT_BY_PATH: {
+ sd.sort_key=path;
+ } break;
+ }
+
+ switch (display_as) {
+ case DISPLAY_NAME: {
+ sd.name=name;
+ } break;
+ case DISPLAY_DIR_AND_NAME: {
+ if (!path.get_base_dir().get_file().empty()) {
+ sd.name=path.get_base_dir().get_file() + "/" + name;
+ } else {
+ sd.name=name;
+ }
+ } break;
+ case DISPLAY_FULL_PATH: {
+ sd.name=path;
+ } break;
+ }
+
sedata.push_back(sd);
}
@@ -1438,6 +1467,7 @@ void ScriptEditor::_update_script_names() {
_ScriptEditorItemData sd;
sd.icon=icon;
sd.name=name;
+ sd.sort_key=name;
sd.tooltip=tooltip;
sd.index=i;
sd.used=false;
@@ -1727,6 +1757,7 @@ void ScriptEditor::_editor_settings_changed() {
se->update_settings();
}
_update_script_colors();
+ _update_script_names();
ScriptServer::set_reload_scripts_on_save(EDITOR_DEF("text_editor/files/auto_reload_and_parse_scripts_on_save",true));
@@ -2440,9 +2471,13 @@ ScriptEditorPlugin::ScriptEditorPlugin(EditorNode *p_node) {
EDITOR_DEF("text_editor/open_scripts/script_temperature_cold_color",Color(0,0,1,0.3));
EDITOR_DEF("text_editor/open_scripts/current_script_background_color",Color(0.81,0.81,0.14,0.63));
EDITOR_DEF("text_editor/open_scripts/group_help_pages",true);
+ EditorSettings::get_singleton()->add_property_hint(PropertyInfo(Variant::INT,"text_editor/open_scripts/sort_scripts_by",PROPERTY_HINT_ENUM,"Name,Path"));
+ EDITOR_DEF("text_editor/open_scripts/sort_scripts_by",0);
+ EditorSettings::get_singleton()->add_property_hint(PropertyInfo(Variant::INT,"text_editor/open_scripts/list_script_names_as",PROPERTY_HINT_ENUM,"Name,Parent Directory And Name,Full Path"));
+ EDITOR_DEF("text_editor/open_scripts/list_script_names_as",0);
EditorSettings::get_singleton()->add_property_hint(PropertyInfo(Variant::STRING,"text_editor/external/exec_path",PROPERTY_HINT_GLOBAL_FILE));
EDITOR_DEF("text_editor/external/exec_flags","");
-
+
}
diff --git a/tools/editor/plugins/script_editor_plugin.h b/tools/editor/plugins/script_editor_plugin.h
index 887c2f7d68..75099fc5ec 100644
--- a/tools/editor/plugins/script_editor_plugin.h
+++ b/tools/editor/plugins/script_editor_plugin.h
@@ -154,6 +154,17 @@ class ScriptEditor : public VBoxContainer {
WINDOW_PREV,
WINDOW_SELECT_BASE=100
};
+
+ enum ScriptSortBy {
+ SORT_BY_NAME,
+ SORT_BY_PATH,
+ };
+
+ enum ScriptListName {
+ DISPLAY_NAME,
+ DISPLAY_DIR_AND_NAME,
+ DISPLAY_FULL_PATH,
+ };
HBoxContainer *menu_hb;
MenuButton *file_menu;
diff --git a/tools/translations/Makefile b/tools/editor/translations/Makefile
index bea20e877d..bea20e877d 100644
--- a/tools/translations/Makefile
+++ b/tools/editor/translations/Makefile
diff --git a/tools/translations/README.md b/tools/editor/translations/README.md
index 351bc9e2d1..351bc9e2d1 100644
--- a/tools/translations/README.md
+++ b/tools/editor/translations/README.md
diff --git a/tools/translations/ar.po b/tools/editor/translations/ar.po
index 539b94ab62..539b94ab62 100644
--- a/tools/translations/ar.po
+++ b/tools/editor/translations/ar.po
diff --git a/tools/translations/bg.po b/tools/editor/translations/bg.po
index fe711e1b30..fe711e1b30 100644
--- a/tools/translations/bg.po
+++ b/tools/editor/translations/bg.po
diff --git a/tools/translations/bn.po b/tools/editor/translations/bn.po
index 0b1993caa0..0b1993caa0 100644
--- a/tools/translations/bn.po
+++ b/tools/editor/translations/bn.po
diff --git a/tools/translations/ca.po b/tools/editor/translations/ca.po
index c45cad964b..c45cad964b 100644
--- a/tools/translations/ca.po
+++ b/tools/editor/translations/ca.po
diff --git a/tools/translations/cs.po b/tools/editor/translations/cs.po
index 3dc52fa536..3dc52fa536 100644
--- a/tools/translations/cs.po
+++ b/tools/editor/translations/cs.po
diff --git a/tools/translations/da.po b/tools/editor/translations/da.po
index 6148d0b82d..6148d0b82d 100644
--- a/tools/translations/da.po
+++ b/tools/editor/translations/da.po
diff --git a/tools/translations/de.po b/tools/editor/translations/de.po
index 0545ea2f21..0545ea2f21 100644
--- a/tools/translations/de.po
+++ b/tools/editor/translations/de.po
diff --git a/tools/translations/de_CH.po b/tools/editor/translations/de_CH.po
index 0420d3fc97..0420d3fc97 100644
--- a/tools/translations/de_CH.po
+++ b/tools/editor/translations/de_CH.po
diff --git a/tools/translations/es.po b/tools/editor/translations/es.po
index a1108822fa..a1108822fa 100644
--- a/tools/translations/es.po
+++ b/tools/editor/translations/es.po
diff --git a/tools/translations/es_AR.po b/tools/editor/translations/es_AR.po
index d921254859..d921254859 100644
--- a/tools/translations/es_AR.po
+++ b/tools/editor/translations/es_AR.po
diff --git a/tools/translations/extract.py b/tools/editor/translations/extract.py
index 1192c19011..1192c19011 100755
--- a/tools/translations/extract.py
+++ b/tools/editor/translations/extract.py
diff --git a/tools/translations/fa.po b/tools/editor/translations/fa.po
index 41a686ba52..41a686ba52 100644
--- a/tools/translations/fa.po
+++ b/tools/editor/translations/fa.po
diff --git a/tools/translations/fr.po b/tools/editor/translations/fr.po
index 2c4f7144fe..2c4f7144fe 100644
--- a/tools/translations/fr.po
+++ b/tools/editor/translations/fr.po
diff --git a/tools/translations/hu.po b/tools/editor/translations/hu.po
index 335ab25c6a..335ab25c6a 100644
--- a/tools/translations/hu.po
+++ b/tools/editor/translations/hu.po
diff --git a/tools/translations/id.po b/tools/editor/translations/id.po
index 30bd357a21..30bd357a21 100644
--- a/tools/translations/id.po
+++ b/tools/editor/translations/id.po
diff --git a/tools/translations/it.po b/tools/editor/translations/it.po
index 8fefe67677..8fefe67677 100644
--- a/tools/translations/it.po
+++ b/tools/editor/translations/it.po
diff --git a/tools/translations/ja.po b/tools/editor/translations/ja.po
index ea314db101..ea314db101 100644
--- a/tools/translations/ja.po
+++ b/tools/editor/translations/ja.po
diff --git a/tools/translations/ko.po b/tools/editor/translations/ko.po
index a0ecb70bf5..a0ecb70bf5 100644
--- a/tools/translations/ko.po
+++ b/tools/editor/translations/ko.po
diff --git a/tools/translations/nb.po b/tools/editor/translations/nb.po
index cbd2a09951..cbd2a09951 100644
--- a/tools/translations/nb.po
+++ b/tools/editor/translations/nb.po
diff --git a/tools/translations/pl.po b/tools/editor/translations/pl.po
index 50afecad1b..50afecad1b 100644
--- a/tools/translations/pl.po
+++ b/tools/editor/translations/pl.po
diff --git a/tools/translations/pr.po b/tools/editor/translations/pr.po
index 8ea2967a22..8ea2967a22 100644
--- a/tools/translations/pr.po
+++ b/tools/editor/translations/pr.po
diff --git a/tools/translations/pt_BR.po b/tools/editor/translations/pt_BR.po
index 9ab81786b1..9ab81786b1 100644
--- a/tools/translations/pt_BR.po
+++ b/tools/editor/translations/pt_BR.po
diff --git a/tools/translations/pt_PT.po b/tools/editor/translations/pt_PT.po
index da9d971347..da9d971347 100644
--- a/tools/translations/pt_PT.po
+++ b/tools/editor/translations/pt_PT.po
diff --git a/tools/translations/ru.po b/tools/editor/translations/ru.po
index 0595a675b3..0595a675b3 100644
--- a/tools/translations/ru.po
+++ b/tools/editor/translations/ru.po
diff --git a/tools/translations/sk.po b/tools/editor/translations/sk.po
index 6aa2e16664..6aa2e16664 100644
--- a/tools/translations/sk.po
+++ b/tools/editor/translations/sk.po
diff --git a/tools/translations/sl.po b/tools/editor/translations/sl.po
index 4934be97d7..4934be97d7 100644
--- a/tools/translations/sl.po
+++ b/tools/editor/translations/sl.po
diff --git a/tools/translations/tools.pot b/tools/editor/translations/tools.pot
index 8e54d88989..8e54d88989 100644
--- a/tools/translations/tools.pot
+++ b/tools/editor/translations/tools.pot
diff --git a/tools/translations/tr.po b/tools/editor/translations/tr.po
index 5c0b6ebca8..5c0b6ebca8 100644
--- a/tools/translations/tr.po
+++ b/tools/editor/translations/tr.po
diff --git a/tools/translations/ur_PK.po b/tools/editor/translations/ur_PK.po
index b898301d0c..b898301d0c 100644
--- a/tools/translations/ur_PK.po
+++ b/tools/editor/translations/ur_PK.po
diff --git a/tools/translations/zh_CN.po b/tools/editor/translations/zh_CN.po
index 47c77f6170..47c77f6170 100644
--- a/tools/translations/zh_CN.po
+++ b/tools/editor/translations/zh_CN.po
diff --git a/tools/translations/zh_HK.po b/tools/editor/translations/zh_HK.po
index b0bb11d527..b0bb11d527 100644
--- a/tools/translations/zh_HK.po
+++ b/tools/editor/translations/zh_HK.po
diff --git a/tools/translations/zh_TW.po b/tools/editor/translations/zh_TW.po
index 3e9b61ec0f..3e9b61ec0f 100644
--- a/tools/translations/zh_TW.po
+++ b/tools/editor/translations/zh_TW.po