summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CODEOWNERS87
-rw-r--r--core/bind/core_bind.cpp6
-rw-r--r--core/bind/core_bind.h6
-rw-r--r--core/image.cpp3
-rw-r--r--core/image.h6
-rw-r--r--core/io/file_access_pack.h1
-rw-r--r--core/io/resource_format_binary.cpp2
-rw-r--r--core/io/resource_loader.cpp126
-rw-r--r--core/io/resource_loader.h12
-rw-r--r--core/math/a_star.cpp4
-rw-r--r--core/os/dir_access.h2
-rw-r--r--core/os/os.cpp8
-rw-r--r--core/os/os.h8
-rw-r--r--core/register_core_types.cpp3
-rw-r--r--core/variant.cpp8
-rw-r--r--doc/classes/AnimatedTexture.xml22
-rw-r--r--doc/classes/CollisionObject2D.xml18
-rw-r--r--doc/classes/CollisionPolygon2D.xml2
-rw-r--r--doc/classes/CollisionShape2D.xml2
-rw-r--r--doc/classes/EditorProperty.xml14
-rw-r--r--doc/classes/EditorSpatialGizmo.xml27
-rw-r--r--doc/classes/EditorSpatialGizmoPlugin.xml21
-rw-r--r--doc/classes/Expression.xml2
-rw-r--r--doc/classes/File.xml1
-rw-r--r--doc/classes/Image.xml8
-rw-r--r--doc/classes/InputEventMIDI.xml33
-rw-r--r--doc/classes/Physics2DServer.xml2
-rw-r--r--doc/classes/StyleBox.xml6
-rw-r--r--doc/classes/SurfaceTool.xml8
-rw-r--r--doc/classes/Theme.xml8
-rw-r--r--doc/classes/TileSet.xml22
-rw-r--r--drivers/dummy/rasterizer_dummy.h1
-rw-r--r--drivers/gles2/rasterizer_canvas_gles2.cpp7
-rw-r--r--drivers/gles2/rasterizer_scene_gles2.cpp22
-rw-r--r--drivers/gles2/rasterizer_storage_gles2.cpp19
-rw-r--r--drivers/gles2/rasterizer_storage_gles2.h1
-rw-r--r--drivers/gles2/shader_compiler_gles2.cpp36
-rw-r--r--drivers/gles2/shader_gles2.cpp27
-rw-r--r--drivers/gles2/shader_gles2.h1
-rw-r--r--drivers/gles2/shaders/scene.glsl6
-rw-r--r--drivers/gles3/rasterizer_canvas_gles3.cpp8
-rw-r--r--drivers/gles3/rasterizer_scene_gles3.cpp14
-rw-r--r--drivers/gles3/rasterizer_storage_gles3.cpp22
-rw-r--r--drivers/gles3/rasterizer_storage_gles3.h3
-rw-r--r--drivers/gles3/shader_compiler_gles3.cpp6
-rw-r--r--drivers/gles3/shader_gles3.cpp25
-rw-r--r--drivers/gles3/shader_gles3.h1
-rw-r--r--drivers/unix/dir_access_unix.h1
-rw-r--r--drivers/unix/thread_posix.cpp17
-rw-r--r--drivers/windows/dir_access_windows.cpp40
-rw-r--r--drivers/windows/dir_access_windows.h1
-rw-r--r--editor/create_dialog.cpp6
-rw-r--r--editor/editor_audio_buses.cpp7
-rw-r--r--editor/editor_file_system.cpp4
-rw-r--r--editor/editor_inspector.cpp22
-rw-r--r--editor/editor_inspector.h6
-rw-r--r--editor/editor_node.cpp19
-rw-r--r--editor/editor_node.h3
-rw-r--r--editor/editor_profiler.cpp2
-rw-r--r--editor/editor_properties.cpp16
-rw-r--r--editor/editor_resource_preview.cpp1
-rw-r--r--editor/import/editor_import_collada.cpp2
-rw-r--r--editor/import/editor_scene_importer_gltf.cpp33
-rw-r--r--editor/import_dock.cpp73
-rw-r--r--editor/import_dock.h5
-rw-r--r--editor/plugins/asset_library_editor_plugin.cpp1
-rw-r--r--editor/plugins/canvas_item_editor_plugin.cpp24
-rw-r--r--editor/plugins/editor_preview_plugins.cpp10
-rw-r--r--editor/plugins/spatial_editor_plugin.cpp13
-rw-r--r--editor/plugins/spatial_editor_plugin.h4
-rw-r--r--editor/project_manager.cpp57
-rw-r--r--editor/project_settings_editor.cpp3
-rw-r--r--editor/scene_tree_editor.cpp5
-rw-r--r--editor/script_editor_debugger.cpp4
-rw-r--r--editor/settings_config_dialog.cpp3
-rw-r--r--editor/spatial_editor_gizmos.cpp44
-rw-r--r--editor/spatial_editor_gizmos.h2
-rw-r--r--editor/translations/af.po49
-rw-r--r--editor/translations/ar.po49
-rw-r--r--editor/translations/bg.po49
-rw-r--r--editor/translations/bn.po49
-rw-r--r--editor/translations/ca.po50
-rw-r--r--editor/translations/cs.po50
-rw-r--r--editor/translations/da.po49
-rw-r--r--editor/translations/de.po118
-rw-r--r--editor/translations/de_CH.po49
-rw-r--r--editor/translations/editor.pot49
-rw-r--r--editor/translations/el.po50
-rw-r--r--editor/translations/es.po75
-rw-r--r--editor/translations/es_AR.po116
-rw-r--r--editor/translations/et.po49
-rw-r--r--editor/translations/fa.po49
-rw-r--r--editor/translations/fi.po133
-rw-r--r--editor/translations/fr.po140
-rw-r--r--editor/translations/he.po49
-rw-r--r--editor/translations/hi.po49
-rw-r--r--editor/translations/hr.po49
-rw-r--r--editor/translations/hu.po49
-rw-r--r--editor/translations/id.po50
-rw-r--r--editor/translations/is.po49
-rw-r--r--editor/translations/it.po194
-rw-r--r--editor/translations/ja.po50
-rw-r--r--editor/translations/ka.po49
-rw-r--r--editor/translations/ko.po120
-rw-r--r--editor/translations/lt.po49
-rw-r--r--editor/translations/lv.po49
-rw-r--r--editor/translations/ml.po49
-rw-r--r--editor/translations/ms.po49
-rw-r--r--editor/translations/nb.po49
-rw-r--r--editor/translations/nl.po503
-rw-r--r--editor/translations/pl.po50
-rw-r--r--editor/translations/pr.po49
-rw-r--r--editor/translations/pt_BR.po78
-rw-r--r--editor/translations/pt_PT.po164
-rw-r--r--editor/translations/ro.po50
-rw-r--r--editor/translations/ru.po287
-rw-r--r--editor/translations/si.po49
-rw-r--r--editor/translations/sk.po49
-rw-r--r--editor/translations/sl.po49
-rw-r--r--editor/translations/sq.po49
-rw-r--r--editor/translations/sr_Cyrl.po49
-rw-r--r--editor/translations/sr_Latn.po49
-rw-r--r--editor/translations/sv.po49
-rw-r--r--editor/translations/ta.po49
-rw-r--r--editor/translations/te.po49
-rw-r--r--editor/translations/th.po49
-rw-r--r--editor/translations/tr.po49
-rw-r--r--editor/translations/uk.po134
-rw-r--r--editor/translations/ur_PK.po49
-rw-r--r--editor/translations/vi.po49
-rw-r--r--editor/translations/zh_CN.po92
-rw-r--r--editor/translations/zh_HK.po49
-rw-r--r--editor/translations/zh_TW.po49
-rw-r--r--modules/bullet/SCsub2
-rw-r--r--modules/bullet/rigid_body_bullet.cpp6
-rw-r--r--modules/csg/csg_shape.cpp14
-rw-r--r--modules/csg/csg_shape.h2
-rw-r--r--modules/gdnative/gdnative/variant.cpp14
-rw-r--r--modules/gdscript/gdscript.cpp21
-rw-r--r--modules/hdr/image_loader_hdr.cpp2
-rw-r--r--modules/mono/utils/path_utils.cpp2
-rw-r--r--modules/pvr/texture_loader_pvr.cpp9
-rw-r--r--modules/svg/image_loader_svg.cpp5
-rw-r--r--modules/websocket/doc_classes/WebSocketClient.xml3
-rw-r--r--modules/websocket/doc_classes/WebSocketServer.xml3
-rw-r--r--modules/websocket/websocket_multiplayer.cpp7
-rw-r--r--platform/android/dir_access_jandroid.cpp1
-rw-r--r--platform/android/thread_jandroid.cpp17
-rw-r--r--platform/javascript/os_javascript.cpp20
-rw-r--r--platform/osx/detect.py2
-rw-r--r--platform/osx/os_osx.h9
-rw-r--r--platform/osx/os_osx.mm64
-rw-r--r--platform/windows/joypad.cpp7
-rw-r--r--platform/x11/SCsub1
-rw-r--r--platform/x11/detect_prime.cpp233
-rw-r--r--platform/x11/detect_prime.h37
-rw-r--r--platform/x11/os_x11.cpp31
-rw-r--r--scene/2d/animated_sprite.cpp2
-rw-r--r--scene/2d/light_2d.cpp2
-rw-r--r--scene/3d/camera.cpp1
-rw-r--r--scene/animation/animation_blend_tree.cpp24
-rw-r--r--scene/animation/animation_blend_tree.h1
-rw-r--r--scene/animation/animation_node_state_machine.cpp2
-rw-r--r--scene/animation/animation_tree.cpp7
-rw-r--r--scene/gui/color_picker.cpp103
-rw-r--r--scene/main/scene_tree.cpp40
-rw-r--r--scene/main/scene_tree.h1
-rw-r--r--scene/main/viewport.cpp27
-rw-r--r--scene/main/viewport.h3
-rw-r--r--scene/resources/font.cpp1
-rw-r--r--scene/resources/texture.cpp27
-rw-r--r--scene/resources/texture.h5
-rw-r--r--scene/resources/theme.cpp29
-rw-r--r--scene/resources/theme.h1
-rw-r--r--scene/resources/visual_shader.cpp46
-rw-r--r--servers/physics_2d_server.cpp2
-rw-r--r--servers/register_server_types.cpp5
-rw-r--r--servers/visual/rasterizer.h1
-rw-r--r--servers/visual/visual_server_scene.cpp18
-rw-r--r--servers/visual/visual_server_viewport.cpp2
-rw-r--r--servers/visual_server.cpp2
181 files changed, 5026 insertions, 1211 deletions
diff --git a/CODEOWNERS b/CODEOWNERS
index 27315f2c9d..3a973a100a 100644
--- a/CODEOWNERS
+++ b/CODEOWNERS
@@ -2,36 +2,57 @@
# Each line is a file pattern followed by one or more owners.
# Owners can be @users, @org/teams or emails
-core/* @reduz
-
-doc/* @godotengine/documentation
-
-drivers/gles2/* @karroffel
-drivers/gles3/* @reduz
-
-editor/icons/* @djrm
-
-main/* @reduz
-
-misc/* @akien-mga
-
-modules/bullet/* @AndreaCatania
-modules/enet/* @godotengine/network
-modules/gdnative/* @karroffel
-modules/gdscript/* @reduz @vnen @bojidar-bg
-modules/mbedtls/* @godotengine/network
-modules/mobile_vr/* @BastiaanOlij
-modules/mono/* @neikeq
-modules/regex/* @LeeZH
-modules/upnp/* @godotengine/network
-modules/websocket/* @godotengine/network
-
-platform/javascript/* @eska014
-platform/uwp/* @vnen
-
-scene/main/* @reduz
-
-server/physics* @reduz @AndreaCatania
-server/visual* @reduz @karroffel
-
-thirdparty/* @akien-mga
+/core/ @reduz
+
+/doc/ @godotengine/documentation
+doc_classes/* @godotengine/documentation
+
+# Rendering
+/drivers/gl_context/ @reduz
+/drivers/gles2/ @reduz
+/drivers/gles3/ @reduz
+
+# Audio
+/drivers/alsa/ @marcelofg55
+/drivers/alsamidi/ @marcelofg55
+/drivers/coreaudio/ @marcelofg55
+/drivers/coremidi/ @marcelofg55
+/drivers/pulseaudio/ @marcelofg55
+/drivers/rtaudio/ @marcelofg55
+/drivers/wasapi/ @marcelofg55
+/drivers/winmidi/ @marcelofg55
+/drivers/xaudio2/ @marcelofg55
+
+# Porting
+/drivers/unix/ @reduz @hpvb
+/drivers/windows/ @reduz @hpvb
+
+/editor/icons/ @djrm
+
+/main/ @reduz
+
+/misc/ @akien-mga
+
+/modules/bullet/ @AndreaCatania
+/modules/csg/ @reduz @BastiaanOlij
+/modules/enet/ @godotengine/network
+/modules/gdnative/ @karroffel
+/modules/gdnative/*arvr/ @BastiaanOlij
+/modules/gdscript/ @reduz @vnen @bojidar-bg
+/modules/mbedtls/ @godotengine/network
+/modules/mobile_vr/ @BastiaanOlij
+/modules/mono/ @neikeq
+/modules/opensimplex/ @JFonS
+/modules/regex/ @LeeZH
+/modules/upnp/ @godotengine/network
+/modules/websocket/ @godotengine/network
+
+/platform/javascript/ @eska014
+/platform/uwp/ @vnen
+
+/scene/main/ @reduz
+
+/server/physics*/ @reduz @AndreaCatania
+/server/visual*/ @reduz @karroffel
+
+/thirdparty/ @akien-mga
diff --git a/core/bind/core_bind.cpp b/core/bind/core_bind.cpp
index e81468e888..f17d7372e2 100644
--- a/core/bind/core_bind.cpp
+++ b/core/bind/core_bind.cpp
@@ -592,17 +592,17 @@ struct Time {
};
*/
-int _OS::get_static_memory_usage() const {
+uint64_t _OS::get_static_memory_usage() const {
return OS::get_singleton()->get_static_memory_usage();
}
-int _OS::get_static_memory_peak_usage() const {
+uint64_t _OS::get_static_memory_peak_usage() const {
return OS::get_singleton()->get_static_memory_peak_usage();
}
-int _OS::get_dynamic_memory_usage() const {
+uint64_t _OS::get_dynamic_memory_usage() const {
return OS::get_singleton()->get_dynamic_memory_usage();
}
diff --git a/core/bind/core_bind.h b/core/bind/core_bind.h
index a4b4629037..1c8b985d73 100644
--- a/core/bind/core_bind.h
+++ b/core/bind/core_bind.h
@@ -283,9 +283,9 @@ public:
uint64_t get_system_time_secs() const;
uint64_t get_system_time_msecs() const;
- int get_static_memory_usage() const;
- int get_static_memory_peak_usage() const;
- int get_dynamic_memory_usage() const;
+ uint64_t get_static_memory_usage() const;
+ uint64_t get_static_memory_peak_usage() const;
+ uint64_t get_dynamic_memory_usage() const;
void delay_usec(uint32_t p_usec) const;
void delay_msec(uint32_t p_msec) const;
diff --git a/core/image.cpp b/core/image.cpp
index 4fc3b4becb..91c3d05a29 100644
--- a/core/image.cpp
+++ b/core/image.cpp
@@ -2632,6 +2632,9 @@ void Image::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::DICTIONARY, "data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_STORAGE), "_set_data", "_get_data");
+ BIND_CONSTANT(MAX_WIDTH);
+ BIND_CONSTANT(MAX_HEIGHT);
+
BIND_ENUM_CONSTANT(FORMAT_L8); //luminance
BIND_ENUM_CONSTANT(FORMAT_LA8); //luminance-alpha
BIND_ENUM_CONSTANT(FORMAT_R8);
diff --git a/core/image.h b/core/image.h
index 3604580e98..b23f8cac46 100644
--- a/core/image.h
+++ b/core/image.h
@@ -52,14 +52,14 @@ typedef Ref<Image> (*ImageMemLoadFunc)(const uint8_t *p_png, int p_size);
class Image : public Resource {
GDCLASS(Image, Resource);
+public:
+ static SavePNGFunc save_png_func;
+
enum {
MAX_WIDTH = 16384, // force a limit somehow
MAX_HEIGHT = 16384 // force a limit somehow
};
-public:
- static SavePNGFunc save_png_func;
-
enum Format {
FORMAT_L8, //luminance
diff --git a/core/io/file_access_pack.h b/core/io/file_access_pack.h
index ae5e83d405..a90672ce26 100644
--- a/core/io/file_access_pack.h
+++ b/core/io/file_access_pack.h
@@ -223,7 +223,6 @@ public:
virtual String get_filesystem_type() const;
-
DirAccessPack();
~DirAccessPack();
};
diff --git a/core/io/resource_format_binary.cpp b/core/io/resource_format_binary.cpp
index e27dea37d6..4d4134b745 100644
--- a/core/io/resource_format_binary.cpp
+++ b/core/io/resource_format_binary.cpp
@@ -342,7 +342,7 @@ Error ResourceInteractiveLoaderBinary::parse_variant(Variant &r_v) {
int erindex = f->get_32();
if (erindex < 0 || erindex >= external_resources.size()) {
- WARN_PRINT("Broken external resource! (index out of size");
+ WARN_PRINT("Broken external resource! (index out of size)");
r_v = Variant();
} else {
diff --git a/core/io/resource_loader.cpp b/core/io/resource_loader.cpp
index b8bc24c1de..02e4d8dc7a 100644
--- a/core/io/resource_loader.cpp
+++ b/core/io/resource_loader.cpp
@@ -53,6 +53,12 @@ Error ResourceInteractiveLoader::wait() {
return err;
}
+ResourceInteractiveLoader::~ResourceInteractiveLoader() {
+ if (path_loading != String()) {
+ ResourceLoader::_remove_from_loading_map(path_loading);
+ }
+}
+
bool ResourceFormatLoader::recognize_path(const String &p_path, const String &p_for_type) const {
String extension = p_path.get_extension();
@@ -280,6 +286,39 @@ RES ResourceLoader::_load(const String &p_path, const String &p_original_path, c
return RES();
}
+bool ResourceLoader::_add_to_loading_map(const String &p_path) {
+
+ bool success;
+ if (loading_map_mutex) {
+ loading_map_mutex->lock();
+ }
+
+ if (loading_map.has(p_path)) {
+ success = false;
+ } else {
+ loading_map[p_path] = true;
+ success = true;
+ }
+
+ if (loading_map_mutex) {
+ loading_map_mutex->unlock();
+ }
+
+ return success;
+}
+
+void ResourceLoader::_remove_from_loading_map(const String &p_path) {
+ if (loading_map_mutex) {
+ loading_map_mutex->lock();
+ }
+
+ loading_map.erase(p_path);
+
+ if (loading_map_mutex) {
+ loading_map_mutex->unlock();
+ }
+}
+
RES ResourceLoader::load(const String &p_path, const String &p_type_hint, bool p_no_cache, Error *r_error) {
if (r_error)
@@ -292,6 +331,15 @@ RES ResourceLoader::load(const String &p_path, const String &p_type_hint, bool p
local_path = ProjectSettings::get_singleton()->localize_path(p_path);
if (!p_no_cache) {
+
+ {
+ bool success = _add_to_loading_map(local_path);
+ if (!success) {
+ ERR_EXPLAIN("Resource: '" + local_path + "' is already being loaded. Cyclic reference?");
+ ERR_FAIL_V(RES());
+ }
+ }
+
//lock first if possible
if (ResourceCache::lock) {
ResourceCache::lock->read_lock();
@@ -310,7 +358,7 @@ RES ResourceLoader::load(const String &p_path, const String &p_type_hint, bool p
if (ResourceCache::lock) {
ResourceCache::lock->read_unlock();
}
- print_verbose("Loading resource: " + local_path + " (cached)");
+ _remove_from_loading_map(local_path);
return res;
}
}
@@ -322,12 +370,21 @@ RES ResourceLoader::load(const String &p_path, const String &p_type_hint, bool p
bool xl_remapped = false;
String path = _path_remap(local_path, &xl_remapped);
- ERR_FAIL_COND_V(path == "", RES());
+ if (path == "") {
+ if (!p_no_cache) {
+ _remove_from_loading_map(local_path);
+ }
+ ERR_EXPLAIN("Remapping '" + local_path + "'failed.");
+ ERR_FAIL_V(RES());
+ }
print_verbose("Loading resource: " + path);
RES res = _load(path, local_path, p_type_hint, p_no_cache, r_error);
if (res.is_null()) {
+ if (!p_no_cache) {
+ _remove_from_loading_map(local_path);
+ }
return RES();
}
if (!p_no_cache)
@@ -346,6 +403,10 @@ RES ResourceLoader::load(const String &p_path, const String &p_type_hint, bool p
}
#endif
+ if (!p_no_cache) {
+ _remove_from_loading_map(local_path);
+ }
+
if (_loaded_callback) {
_loaded_callback(res, p_path);
}
@@ -394,19 +455,36 @@ Ref<ResourceInteractiveLoader> ResourceLoader::load_interactive(const String &p_
else
local_path = ProjectSettings::get_singleton()->localize_path(p_path);
- if (!p_no_cache && ResourceCache::has(local_path)) {
+ if (!p_no_cache) {
- print_verbose("Loading resource: " + local_path + " (cached)");
- Ref<Resource> res_cached = ResourceCache::get(local_path);
- Ref<ResourceInteractiveLoaderDefault> ril = Ref<ResourceInteractiveLoaderDefault>(memnew(ResourceInteractiveLoaderDefault));
+ bool success = _add_to_loading_map(local_path);
+ if (!success) {
+ ERR_EXPLAIN("Resource: '" + local_path + "' is already being loaded. Cyclic reference?");
+ ERR_FAIL_V(RES());
+ }
- ril->resource = res_cached;
- return ril;
+ if (ResourceCache::has(local_path)) {
+
+ print_verbose("Loading resource: " + local_path + " (cached)");
+ Ref<Resource> res_cached = ResourceCache::get(local_path);
+ Ref<ResourceInteractiveLoaderDefault> ril = Ref<ResourceInteractiveLoaderDefault>(memnew(ResourceInteractiveLoaderDefault));
+
+ ril->resource = res_cached;
+ ril->path_loading = local_path;
+ return ril;
+ }
}
bool xl_remapped = false;
String path = _path_remap(local_path, &xl_remapped);
- ERR_FAIL_COND_V(path == "", Ref<ResourceInteractiveLoader>());
+ if (path == "") {
+ if (!p_no_cache) {
+ _remove_from_loading_map(local_path);
+ }
+ ERR_EXPLAIN("Remapping '" + local_path + "'failed.");
+ ERR_FAIL_V(RES());
+ }
+
print_verbose("Loading resource: " + path);
bool found = false;
@@ -418,14 +496,21 @@ Ref<ResourceInteractiveLoader> ResourceLoader::load_interactive(const String &p_
Ref<ResourceInteractiveLoader> ril = loader[i]->load_interactive(path, local_path, r_error);
if (ril.is_null())
continue;
- if (!p_no_cache)
+ if (!p_no_cache) {
ril->set_local_path(local_path);
+ ril->path_loading = local_path;
+ }
+
if (xl_remapped)
ril->set_translation_remapped(true);
return ril;
}
+ if (!p_no_cache) {
+ _remove_from_loading_map(local_path);
+ }
+
if (found) {
ERR_EXPLAIN("Failed loading resource: " + path);
} else {
@@ -833,6 +918,27 @@ void ResourceLoader::remove_custom_loaders() {
}
}
+Mutex *ResourceLoader::loading_map_mutex = NULL;
+HashMap<String, int> ResourceLoader::loading_map;
+
+void ResourceLoader::initialize() {
+#ifndef NO_THREADS
+ loading_map_mutex = Mutex::create();
+#endif
+}
+
+void ResourceLoader::finalize() {
+#ifndef NO_THREADS
+ const String *K = NULL;
+ while ((K = loading_map.next(K))) {
+ ERR_PRINTS("Exited while resource is being loaded: " + *K);
+ }
+ loading_map.clear();
+ memdelete(loading_map_mutex);
+ loading_map_mutex = NULL;
+#endif
+}
+
ResourceLoadErrorNotify ResourceLoader::err_notify = NULL;
void *ResourceLoader::err_notify_ud = NULL;
diff --git a/core/io/resource_loader.h b/core/io/resource_loader.h
index 6c0e9d5554..622b74a998 100644
--- a/core/io/resource_loader.h
+++ b/core/io/resource_loader.h
@@ -40,6 +40,8 @@
class ResourceInteractiveLoader : public Reference {
GDCLASS(ResourceInteractiveLoader, Reference);
+ friend class ResourceLoader;
+ String path_loading;
protected:
static void _bind_methods();
@@ -54,6 +56,7 @@ public:
virtual Error wait();
ResourceInteractiveLoader() {}
+ ~ResourceInteractiveLoader();
};
class ResourceFormatLoader : public Reference {
@@ -110,12 +113,18 @@ class ResourceLoader {
static SelfList<Resource>::List remapped_list;
friend class ResourceFormatImporter;
+ friend class ResourceInteractiveLoader;
//internal load function
static RES _load(const String &p_path, const String &p_original_path, const String &p_type_hint, bool p_no_cache, Error *r_error);
static ResourceLoadedCallback _loaded_callback;
static Ref<ResourceFormatLoader> _find_custom_resource_format_loader(String path);
+ static Mutex *loading_map_mutex;
+ static HashMap<String, int> loading_map;
+
+ static bool _add_to_loading_map(const String &p_path);
+ static void _remove_from_loading_map(const String &p_path);
public:
static Ref<ResourceInteractiveLoader> load_interactive(const String &p_path, const String &p_type_hint = "", bool p_no_cache = false, Error *r_error = NULL);
@@ -170,6 +179,9 @@ public:
static void remove_custom_resource_format_loader(String script_path);
static void add_custom_loaders();
static void remove_custom_loaders();
+
+ static void initialize();
+ static void finalize();
};
#endif
diff --git a/core/math/a_star.cpp b/core/math/a_star.cpp
index a0556ae839..b885a06834 100644
--- a/core/math/a_star.cpp
+++ b/core/math/a_star.cpp
@@ -260,8 +260,8 @@ bool AStar::_solve(Point *begin_point, Point *end_point) {
}
// Check open list
- SelfList<Point> *least_cost_point = NULL;
- real_t least_cost = 1e30;
+ SelfList<Point> *least_cost_point = open_list.first();
+ real_t least_cost = Math_INF;
// TODO: Cache previous results
for (SelfList<Point> *E = open_list.first(); E; E = E->next()) {
diff --git a/core/os/dir_access.h b/core/os/dir_access.h
index 36ccbc9b4d..bde19bd5ae 100644
--- a/core/os/dir_access.h
+++ b/core/os/dir_access.h
@@ -98,7 +98,7 @@ public:
virtual Error rename(String p_from, String p_to) = 0;
virtual Error remove(String p_name) = 0;
- virtual String get_filesystem_type() const=0 ;
+ virtual String get_filesystem_type() const = 0;
static String get_full_path(const String &p_path, AccessType p_access);
static DirAccess *create_for_path(const String &p_path);
diff --git a/core/os/os.cpp b/core/os/os.cpp
index 1f967030e7..d2d39d253a 100644
--- a/core/os/os.cpp
+++ b/core/os/os.cpp
@@ -393,16 +393,16 @@ Error OS::dialog_input_text(String p_title, String p_description, String p_parti
return OK;
};
-int OS::get_static_memory_usage() const {
+uint64_t OS::get_static_memory_usage() const {
return Memory::get_mem_usage();
}
-int OS::get_dynamic_memory_usage() const {
+uint64_t OS::get_dynamic_memory_usage() const {
return MemoryPool::total_memory;
}
-int OS::get_static_memory_peak_usage() const {
+uint64_t OS::get_static_memory_peak_usage() const {
return Memory::get_mem_max_usage();
}
@@ -418,7 +418,7 @@ bool OS::has_touchscreen_ui_hint() const {
return Input::get_singleton() && Input::get_singleton()->is_emulating_touch_from_mouse();
}
-int OS::get_free_static_memory() const {
+uint64_t OS::get_free_static_memory() const {
return Memory::get_mem_available();
}
diff --git a/core/os/os.h b/core/os/os.h
index 36d4e5a8c1..a08bdcb608 100644
--- a/core/os/os.h
+++ b/core/os/os.h
@@ -382,10 +382,10 @@ public:
virtual void print_resources_in_use(bool p_short = false);
virtual void print_all_resources(String p_to_file = "");
- virtual int get_static_memory_usage() const;
- virtual int get_static_memory_peak_usage() const;
- virtual int get_dynamic_memory_usage() const;
- virtual int get_free_static_memory() const;
+ virtual uint64_t get_static_memory_usage() const;
+ virtual uint64_t get_static_memory_peak_usage() const;
+ virtual uint64_t get_dynamic_memory_usage() const;
+ virtual uint64_t get_free_static_memory() const;
RenderThreadMode get_render_thread_mode() const { return _render_thread_mode; }
diff --git a/core/register_core_types.cpp b/core/register_core_types.cpp
index a31aa9cb01..60c2778603 100644
--- a/core/register_core_types.cpp
+++ b/core/register_core_types.cpp
@@ -99,6 +99,7 @@ void register_core_types() {
_global_mutex = Mutex::create();
StringName::setup();
+ ResourceLoader::initialize();
register_global_constants();
register_variant_methods();
@@ -269,6 +270,8 @@ void unregister_core_types() {
if (ip)
memdelete(ip);
+ ResourceLoader::finalize();
+
ObjectDB::cleanup();
unregister_variant_methods();
diff --git a/core/variant.cpp b/core/variant.cpp
index 8b2051add7..56b272cccf 100644
--- a/core/variant.cpp
+++ b/core/variant.cpp
@@ -1731,6 +1731,14 @@ Variant::operator RID() const {
else if (type == OBJECT && !_get_obj().ref.is_null()) {
return _get_obj().ref.get_rid();
} else if (type == OBJECT && _get_obj().obj) {
+#ifdef DEBUG_ENABLED
+ if (ScriptDebugger::get_singleton()) {
+ if (!ObjectDB::instance_validate(_get_obj().obj)) {
+ ERR_EXPLAIN("Invalid pointer (object was deleted)");
+ ERR_FAIL_V(RID());
+ };
+ };
+#endif
Variant::CallError ce;
Variant ret = _get_obj().obj->call(CoreStringNames::get_singleton()->get_rid, NULL, 0, ce);
if (ce.error == Variant::CallError::CALL_OK && ret.get_type() == Variant::_RID) {
diff --git a/doc/classes/AnimatedTexture.xml b/doc/classes/AnimatedTexture.xml
index 9dc58ed195..08cd79e78f 100644
--- a/doc/classes/AnimatedTexture.xml
+++ b/doc/classes/AnimatedTexture.xml
@@ -1,8 +1,12 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="AnimatedTexture" inherits="Texture" category="Core" version="3.1">
<brief_description>
+ Proxy texture for simple frame-based animations.
</brief_description>
<description>
+ [code]AnimatedTexture[/code] is a resource format for simple frame-based animations, where multiple frames textures can be chained automatically with a predefined delay for each frame. It's not a [Node], contrarily to [AnimationPlayer] or [AnimatedSprite], but has the advantage of being usable at any place where a [Texture] resource can be used, e.g. in a [TileSet].
+ The playback of the animation is controlled by the [member fps] property as well as each frame's optional delay (see [method set_frame_delay]). The animation loops, i.e. it will restart at frame 0 automatically after playing the last frame.
+ [code]AnimatedTexture[/code] currently requires all frame textures to have the same size, otherwise the bigger ones will be cropped to match the smallest one.
</description>
<tutorials>
</tutorials>
@@ -15,6 +19,7 @@
<argument index="0" name="frame" type="int">
</argument>
<description>
+ Retrieves the delayed assigned to the given [code]frame[/code] ID.
</description>
</method>
<method name="get_frame_texture" qualifiers="const">
@@ -23,6 +28,7 @@
<argument index="0" name="frame" type="int">
</argument>
<description>
+ Retrieves the [Texture] assigned to the given [code]frame[/code] ID.
</description>
</method>
<method name="set_frame_delay">
@@ -33,6 +39,14 @@
<argument index="1" name="delay" type="float">
</argument>
<description>
+ Defines an additional delay (in seconds) between this frame and the next one, that will be added to the time interval defined by [member fps]. By default, frames have no delay defined. If a delay value is defined, the final time interval between this frame and the next will be [code]1.0 / fps + delay[/code].
+ For example, for an animation with 3 frames, 2 FPS and a frame delay on the second frame of 1.2, the resulting playback will be:
+ [codeblock]
+ Frame 0: 0.5 s (1 / fps)
+ Frame 1: 1.7 s (1 / fps + 1.2)
+ Frame 2: 0.5 s (1 / fps)
+ Total duration: 2.7 s
+ [/codeblock]
</description>
</method>
<method name="set_frame_texture">
@@ -43,15 +57,23 @@
<argument index="1" name="texture" type="Texture">
</argument>
<description>
+ Assigns a [Texture] to the given [code]frame[/code] ID. IDs start at 0 (so the first frame has ID 0, and the last frame of the animation has ID [member frames] - 1).
+ You can define any frame texture up to [constant MAX_FRAMES], but keep in mind that only frames from 0 to [member frames] - 1 will be part of the animation.
</description>
</method>
</methods>
<members>
<member name="fps" type="float" setter="set_fps" getter="get_fps">
+ Number of frames per second. This value defines the default time interval between two frames of the animation, and thus the overall duration of the animation loop based on the [member frames] property. A value of 0 means no predefined number of frames per second, the animation will play according to each frame's frame delay (see [method set_frame_delay]). Default value: 4.
+ For example, an animation with 8 frames, no frame delay and a [code]fps[/code] value of 2 will run over 4 seconds, with one frame each 0.5 seconds.
</member>
<member name="frames" type="int" setter="set_frames" getter="get_frames">
+ Number of frames to use in the animation. While you can create the frames independently with [method set_frame_texture], you need to set this value for the animation to take new frames into account. The maximum number of frames is [constant MAX_FRAMES]. Default value: 1.
</member>
</members>
<constants>
+ <constant name="MAX_FRAMES" value="256">
+ The maximum number of frames supported by [code]AnimatedTexture[/code]. If you need more frames in your animation, use [AnimationPlayer] or [AnimatedSprite].
+ </constant>
</constants>
</class>
diff --git a/doc/classes/CollisionObject2D.xml b/doc/classes/CollisionObject2D.xml
index 48a198b248..91f283a2b7 100644
--- a/doc/classes/CollisionObject2D.xml
+++ b/doc/classes/CollisionObject2D.xml
@@ -40,6 +40,14 @@
Returns the object's [RID].
</description>
</method>
+ <method name="get_shape_owner_one_way_collision_margin" qualifiers="const">
+ <return type="float">
+ </return>
+ <argument index="0" name="owner_id" type="int">
+ </argument>
+ <description>
+ </description>
+ </method>
<method name="get_shape_owners">
<return type="Array">
</return>
@@ -185,6 +193,16 @@
If [code]enable[/code] is [code]true[/code], collisions for the shape owner originating from this [code]CollisionObject2D[/code] will not be reported to collided with [code]CollisionObject2D[/code]s.
</description>
</method>
+ <method name="shape_owner_set_one_way_collision_margin">
+ <return type="void">
+ </return>
+ <argument index="0" name="owner_id" type="int">
+ </argument>
+ <argument index="1" name="margin" type="float">
+ </argument>
+ <description>
+ </description>
+ </method>
<method name="shape_owner_set_transform">
<return type="void">
</return>
diff --git a/doc/classes/CollisionPolygon2D.xml b/doc/classes/CollisionPolygon2D.xml
index f63adbf71a..3dd87a4120 100644
--- a/doc/classes/CollisionPolygon2D.xml
+++ b/doc/classes/CollisionPolygon2D.xml
@@ -22,6 +22,8 @@
<member name="one_way_collision" type="bool" setter="set_one_way_collision" getter="is_one_way_collision_enabled">
If [code]true[/code], only edges that face up, relative to CollisionPolygon2D's rotation, will collide with other objects.
</member>
+ <member name="one_way_collision_margin" type="float" setter="set_one_way_collision_margin" getter="get_one_way_collision_margin">
+ </member>
<member name="polygon" type="PoolVector2Array" setter="set_polygon" getter="get_polygon">
The polygon's list of vertices. The final point will be connected to the first.
</member>
diff --git a/doc/classes/CollisionShape2D.xml b/doc/classes/CollisionShape2D.xml
index d3c616ee3d..07dbde1c21 100644
--- a/doc/classes/CollisionShape2D.xml
+++ b/doc/classes/CollisionShape2D.xml
@@ -20,6 +20,8 @@
<member name="one_way_collision" type="bool" setter="set_one_way_collision" getter="is_one_way_collision_enabled">
Sets whether this collision shape should only detect collision on one side (top or bottom).
</member>
+ <member name="one_way_collision_margin" type="float" setter="set_one_way_collision_margin" getter="get_one_way_collision_margin">
+ </member>
<member name="shape" type="Shape2D" setter="set_shape" getter="get_shape">
The actual shape owned by this collision shape.
</member>
diff --git a/doc/classes/EditorProperty.xml b/doc/classes/EditorProperty.xml
index 7d09554330..b3fc036edb 100644
--- a/doc/classes/EditorProperty.xml
+++ b/doc/classes/EditorProperty.xml
@@ -9,6 +9,20 @@
<demos>
</demos>
<methods>
+ <method name="emit_changed">
+ <return type="void">
+ </return>
+ <argument index="0" name="property" type="String">
+ </argument>
+ <argument index="1" name="value" type="Variant">
+ </argument>
+ <argument index="2" name="field" type="String" default="&quot;&quot;">
+ </argument>
+ <argument index="3" name="changing" type="bool" default="false">
+ </argument>
+ <description>
+ </description>
+ </method>
<method name="get_edited_object">
<return type="Object">
</return>
diff --git a/doc/classes/EditorSpatialGizmo.xml b/doc/classes/EditorSpatialGizmo.xml
index c3ecd3c3b7..45b92276f1 100644
--- a/doc/classes/EditorSpatialGizmo.xml
+++ b/doc/classes/EditorSpatialGizmo.xml
@@ -4,7 +4,7 @@
Custom gizmo for editing Spatial objects.
</brief_description>
<description>
- Custom gizmo that is used for providing custom visualization and editing (handles) for 3D Spatial objects. These are created by [method EditorSpatialGizmoPlugin.create_gizmo].
+ Custom gizmo that is used for providing custom visualization and editing (handles) for 3D Spatial objects. See [EditorSpatialGizmoPlugin] for more information.
</description>
<tutorials>
</tutorials>
@@ -116,7 +116,30 @@
<argument index="0" name="index" type="int">
</argument>
<description>
- Get actual value of a handle. This value can be anything and used for eventually undoing the motion when calling [method commit_handle]
+ Get actual value of a handle. This value can be anything and used for eventually undoing the motion when calling [method commit_handle].
+ </description>
+ </method>
+ <method name="get_plugin" qualifiers="const">
+ <return type="EditorSpatialGizmoPlugin">
+ </return>
+ <description>
+ Return the [EditorSpatialGizmoPlugin] that owns this gizmo. It's useful to retrieve materials using [method EditorSpatialGizmoPlugin.get_material].
+ </description>
+ </method>
+ <method name="get_spatial_node" qualifiers="const">
+ <return type="Spatial">
+ </return>
+ <description>
+ Returns the Spatial node associated with this gizmo.
+ </description>
+ </method>
+ <method name="is_handle_highlighted" qualifiers="virtual">
+ <return type="bool">
+ </return>
+ <argument index="0" name="index" type="int">
+ </argument>
+ <description>
+ Get whether a handle is highlighted or not.
</description>
</method>
<method name="redraw" qualifiers="virtual">
diff --git a/doc/classes/EditorSpatialGizmoPlugin.xml b/doc/classes/EditorSpatialGizmoPlugin.xml
index 521ec748b3..a62b23ead8 100644
--- a/doc/classes/EditorSpatialGizmoPlugin.xml
+++ b/doc/classes/EditorSpatialGizmoPlugin.xml
@@ -1,10 +1,13 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="EditorSpatialGizmoPlugin" inherits="Resource" category="Core" version="3.1">
<brief_description>
+ Used by the editor to define Spatial gizmo types.
</brief_description>
<description>
+ EditorSpatialGizmoPlugin allows you to define a new type of Gizmo. There are two main ways to do so: extending [EditorSpatialGizmoPlugin] for the simpler gizmos, or creating a new [EditorSpatialGizmo] type. See the tutorial in the documentation for more info.
</description>
<tutorials>
+ <link>https://docs.godotengine.org/en/latest/tutorials/plugins/editor/spatial_gizmos.html</link>
</tutorials>
<demos>
</demos>
@@ -17,12 +20,14 @@
<argument index="1" name="material" type="SpatialMaterial">
</argument>
<description>
+ Adds a new material to the internal material list for the plugin. It can then be accessed with [method get_material]. Should not be overridden.
</description>
</method>
<method name="can_be_hidden" qualifiers="virtual">
<return type="bool">
</return>
<description>
+ Override this method to define whether the gizmo can be hidden or not. Defaults to true.
</description>
</method>
<method name="commit_handle" qualifiers="virtual">
@@ -37,6 +42,7 @@
<argument index="3" name="cancel" type="bool" default="false">
</argument>
<description>
+ Override this method to commit gizmo handles. Called for this plugin's active gizmos.
</description>
</method>
<method name="create_gizmo" qualifiers="virtual">
@@ -45,6 +51,7 @@
<argument index="0" name="spatial" type="Spatial">
</argument>
<description>
+ Override this method to return a custom [EditorSpatialGizmo] for the spatial nodes of your choice, return [code]null[/code] for the rest of nodes. (See also [method has_gizmo])
</description>
</method>
<method name="create_handle_material">
@@ -55,6 +62,7 @@
<argument index="1" name="billboard" type="bool" default="false">
</argument>
<description>
+ Creates a handle material with its variants (selected and/or editable) and adds them to the internal material list. They can then be accessed with [method get_material] and used in [method EditorSpatialGizmo.add_handles]. Should not be overridden.
</description>
</method>
<method name="create_icon_material">
@@ -69,6 +77,7 @@
<argument index="3" name="color" type="Color" default="Color( 1, 1, 1, 1 )">
</argument>
<description>
+ Creates an icon material with its variants (selected and/or editable) and adds them to the internal material list. They can then be accessed with [method get_material] and used in [method EditorSpatialGizmo.add_unscaled_billboard]. Should not be overridden.
</description>
</method>
<method name="create_material">
@@ -85,6 +94,7 @@
<argument index="4" name="use_vertex_color" type="bool" default="false">
</argument>
<description>
+ Creates an unshaded material with its variants (selected and/or editable) and adds them to the internal material list. They can then be accessed with [method get_material] and used in [method EditorSpatialGizmo.add_mesh] and [method EditorSpatialGizmo.add_lines]. Should not be overridden.
</description>
</method>
<method name="get_handle_name" qualifiers="virtual">
@@ -95,6 +105,7 @@
<argument index="1" name="index" type="int">
</argument>
<description>
+ Override this method to provide gizmo's handle names. Called for this plugin's active gizmos.
</description>
</method>
<method name="get_handle_value" qualifiers="virtual">
@@ -105,6 +116,7 @@
<argument index="1" name="index" type="int">
</argument>
<description>
+ Get actual value of a handle from gizmo. Called for this plugin's active gizmos.
</description>
</method>
<method name="get_material">
@@ -115,12 +127,14 @@
<argument index="1" name="gizmo" type="EditorSpatialGizmo">
</argument>
<description>
+ Get material from the internal list of materials. If an [EditorSpatialGizmo] is provided it will try to get the corresponding variant (selected and/or editable).
</description>
</method>
<method name="get_name" qualifiers="virtual">
<return type="String">
</return>
<description>
+ Override this method to provide the name that will appear in teh gizmo visibility menu.
</description>
</method>
<method name="has_gizmo" qualifiers="virtual">
@@ -129,9 +143,10 @@
<argument index="0" name="spatial" type="Spatial">
</argument>
<description>
+ Override this method to define which Spatial nodes have a gizmo from this plugin. Whenever a [Spatial] node is added to a scene this method is called, if it returns [code]true[/code] the node gets a generic [EditorSpatialGizmo] assigned and is added to this plugin's list of active gizmos.
</description>
</method>
- <method name="is_gizmo_handle_highlighted" qualifiers="virtual">
+ <method name="is_handle_highlighted" qualifiers="virtual">
<return type="bool">
</return>
<argument index="0" name="gizmo" type="EditorSpatialGizmo">
@@ -139,12 +154,14 @@
<argument index="1" name="index" type="int">
</argument>
<description>
+ Get whether a handle is highlighted or not. Called for this plugin's active gizmos.
</description>
</method>
<method name="is_selectable_when_hidden" qualifiers="virtual">
<return type="bool">
</return>
<description>
+ Override this method to define whether Spatial with this gizmo should be selecteble even when the gizmo is hidden.
</description>
</method>
<method name="redraw" qualifiers="virtual">
@@ -153,6 +170,7 @@
<argument index="0" name="gizmo" type="EditorSpatialGizmo">
</argument>
<description>
+ Callback to redraw the provided gizmo. Called for this plugin's active gizmos.
</description>
</method>
<method name="set_handle" qualifiers="virtual">
@@ -167,6 +185,7 @@
<argument index="3" name="point" type="Vector2">
</argument>
<description>
+ Update the value of a handle after it has been updated. Called for this plugin's active gizmos.
</description>
</method>
</methods>
diff --git a/doc/classes/Expression.xml b/doc/classes/Expression.xml
index c5f71fe55e..b0a21d7f82 100644
--- a/doc/classes/Expression.xml
+++ b/doc/classes/Expression.xml
@@ -16,7 +16,7 @@
func _on_text_entered(command):
var error = expression.parse(command, [])
if error != OK:
- print(get_error_text())
+ print(expression.get_error_text())
return
var result = expression.execute([], null, true)
if not expression.has_execute_failed():
diff --git a/doc/classes/File.xml b/doc/classes/File.xml
index 1967349546..6462176c73 100644
--- a/doc/classes/File.xml
+++ b/doc/classes/File.xml
@@ -48,6 +48,7 @@
</argument>
<description>
Returns [code]true[/code] if the file exists in the given path.
+ Note that many resources types are imported (e.g. textures or sound files), and that their source asset will not be included in the exported game, as only the imported version is used (in the [code]res://.import[/code] folder). To check for the existence of such resources while taking into account the remapping to their imported location, use [method ResourceLoader.exists]. Typically, using [code]File.file_exists[/code] on an imported resource would work while you are developing in the editor (the source asset is present in [code]res://[/code], but fail when exported).
</description>
</method>
<method name="get_16" qualifiers="const">
diff --git a/doc/classes/Image.xml b/doc/classes/Image.xml
index 56accdcd9e..8868dd778d 100644
--- a/doc/classes/Image.xml
+++ b/doc/classes/Image.xml
@@ -4,7 +4,7 @@
Image datatype.
</brief_description>
<description>
- Native image datatype. Contains image data, which can be converted to a [Texture], and several functions to interact with it. The maximum width and height for an [code]Image[/code] is 16384 pixels.
+ Native image datatype. Contains image data, which can be converted to a [Texture], and several functions to interact with it. The maximum width and height for an [code]Image[/code] are [constant MAX_WIDTH] and [constant MAX_HEIGHT].
</description>
<tutorials>
</tutorials>
@@ -476,6 +476,12 @@
</member>
</members>
<constants>
+ <constant name="MAX_WIDTH" value="16384">
+ The maximal width allowed for [code]Image[/code] resources.
+ </constant>
+ <constant name="MAX_HEIGHT" value="16384">
+ The maximal height allowed for [code]Image[/code] resources.
+ </constant>
<constant name="FORMAT_L8" value="0" enum="Format">
</constant>
<constant name="FORMAT_LA8" value="1" enum="Format">
diff --git a/doc/classes/InputEventMIDI.xml b/doc/classes/InputEventMIDI.xml
new file mode 100644
index 0000000000..2cdd70e42c
--- /dev/null
+++ b/doc/classes/InputEventMIDI.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="InputEventMIDI" inherits="InputEvent" category="Core" version="3.1">
+ <brief_description>
+ </brief_description>
+ <description>
+ </description>
+ <tutorials>
+ </tutorials>
+ <demos>
+ </demos>
+ <methods>
+ </methods>
+ <members>
+ <member name="channel" type="int" setter="set_channel" getter="get_channel">
+ </member>
+ <member name="controller_number" type="int" setter="set_controller_number" getter="get_controller_number">
+ </member>
+ <member name="controller_value" type="int" setter="set_controller_value" getter="get_controller_value">
+ </member>
+ <member name="instrument" type="int" setter="set_instrument" getter="get_instrument">
+ </member>
+ <member name="message" type="int" setter="set_message" getter="get_message">
+ </member>
+ <member name="pitch" type="int" setter="set_pitch" getter="get_pitch">
+ </member>
+ <member name="pressure" type="int" setter="set_pressure" getter="get_pressure">
+ </member>
+ <member name="velocity" type="int" setter="set_velocity" getter="get_velocity">
+ </member>
+ </members>
+ <constants>
+ </constants>
+</class>
diff --git a/doc/classes/Physics2DServer.xml b/doc/classes/Physics2DServer.xml
index cd887ff950..fe1465260f 100644
--- a/doc/classes/Physics2DServer.xml
+++ b/doc/classes/Physics2DServer.xml
@@ -735,6 +735,8 @@
</argument>
<argument index="2" name="enable" type="bool">
</argument>
+ <argument index="3" name="margin" type="float">
+ </argument>
<description>
Enables one way collision on body if [code]enable[/code] is [code]true[/code].
</description>
diff --git a/doc/classes/StyleBox.xml b/doc/classes/StyleBox.xml
index dee3e6db49..be21abe275 100644
--- a/doc/classes/StyleBox.xml
+++ b/doc/classes/StyleBox.xml
@@ -27,6 +27,12 @@
<description>
</description>
</method>
+ <method name="get_current_item_drawn" qualifiers="const">
+ <return type="CanvasItem">
+ </return>
+ <description>
+ </description>
+ </method>
<method name="get_margin" qualifiers="const">
<return type="float">
</return>
diff --git a/doc/classes/SurfaceTool.xml b/doc/classes/SurfaceTool.xml
index 2e5d5d81c9..fd158587e5 100644
--- a/doc/classes/SurfaceTool.xml
+++ b/doc/classes/SurfaceTool.xml
@@ -75,14 +75,6 @@
Specify a Tangent for the next Vertex to use.
</description>
</method>
- <method name="add_to_format">
- <return type="void">
- </return>
- <argument index="0" name="flags" type="int">
- </argument>
- <description>
- </description>
- </method>
<method name="add_triangle_fan">
<return type="void">
</return>
diff --git a/doc/classes/Theme.xml b/doc/classes/Theme.xml
index 8c6acd2c51..bffd8ea6d9 100644
--- a/doc/classes/Theme.xml
+++ b/doc/classes/Theme.xml
@@ -80,6 +80,14 @@
Sets theme values to a copy of the default theme values.
</description>
</method>
+ <method name="copy_theme">
+ <return type="void">
+ </return>
+ <argument index="0" name="other" type="Theme">
+ </argument>
+ <description>
+ </description>
+ </method>
<method name="get_color" qualifiers="const">
<return type="Color">
</return>
diff --git a/doc/classes/TileSet.xml b/doc/classes/TileSet.xml
index 9e31f7e1b1..4abe94f119 100644
--- a/doc/classes/TileSet.xml
+++ b/doc/classes/TileSet.xml
@@ -439,6 +439,16 @@
Returns the one-way collision value of a tile's shape.
</description>
</method>
+ <method name="tile_get_shape_one_way_margin" qualifiers="const">
+ <return type="float">
+ </return>
+ <argument index="0" name="id" type="int">
+ </argument>
+ <argument index="1" name="shape_id" type="int">
+ </argument>
+ <description>
+ </description>
+ </method>
<method name="tile_get_shape_transform" qualifiers="const">
<return type="Transform2D">
</return>
@@ -633,6 +643,18 @@
Enables one-way collision on a tile's shape.
</description>
</method>
+ <method name="tile_set_shape_one_way_margin">
+ <return type="void">
+ </return>
+ <argument index="0" name="id" type="int">
+ </argument>
+ <argument index="1" name="shape_id" type="int">
+ </argument>
+ <argument index="2" name="one_way" type="float">
+ </argument>
+ <description>
+ </description>
+ </method>
<method name="tile_set_shape_transform">
<return type="void">
</return>
diff --git a/drivers/dummy/rasterizer_dummy.h b/drivers/dummy/rasterizer_dummy.h
index ddc0dd5fa9..214da82819 100644
--- a/drivers/dummy/rasterizer_dummy.h
+++ b/drivers/dummy/rasterizer_dummy.h
@@ -241,6 +241,7 @@ public:
void textures_keep_original(bool p_enable) {}
void texture_set_proxy(RID p_proxy, RID p_base) {}
+ virtual Size2 texture_size_with_proxy(RID p_texture) const { return Size2(); }
void texture_set_force_redraw_if_visible(RID p_texture, bool p_enable) {}
/* SKY API */
diff --git a/drivers/gles2/rasterizer_canvas_gles2.cpp b/drivers/gles2/rasterizer_canvas_gles2.cpp
index 6f686690bf..64e4dbdab4 100644
--- a/drivers/gles2/rasterizer_canvas_gles2.cpp
+++ b/drivers/gles2/rasterizer_canvas_gles2.cpp
@@ -112,9 +112,11 @@ void RasterizerCanvasGLES2::_set_uniforms() {
void RasterizerCanvasGLES2::canvas_begin() {
state.canvas_shader.bind();
+ bool transparent = false;
if (storage->frame.current_rt) {
glBindFramebuffer(GL_FRAMEBUFFER, storage->frame.current_rt->fbo);
glColorMask(1, 1, 1, 1);
+ transparent = storage->frame.current_rt->flags[RasterizerStorage::RENDER_TARGET_TRANSPARENT];
}
if (storage->frame.clear_request) {
@@ -122,11 +124,13 @@ void RasterizerCanvasGLES2::canvas_begin() {
glClearColor(storage->frame.clear_request_color.r,
storage->frame.clear_request_color.g,
storage->frame.clear_request_color.b,
- storage->frame.clear_request_color.a);
+ transparent ? storage->frame.clear_request_color.a : 1.0);
glClear(GL_COLOR_BUFFER_BIT);
storage->frame.clear_request = false;
}
+ glColorMask(1, 1, 1, transparent ? 1 : 0);
+
/*
if (storage->frame.current_rt) {
glBindFramebuffer(GL_FRAMEBUFFER, storage->frame.current_rt->fbo);
@@ -182,6 +186,7 @@ void RasterizerCanvasGLES2::canvas_end() {
state.using_texture_rect = false;
state.using_skeleton = false;
state.using_ninepatch = false;
+ glColorMask(1, 1, 1, 1);
}
RasterizerStorageGLES2::Texture *RasterizerCanvasGLES2::_bind_canvas_texture(const RID &p_texture, const RID &p_normal_map) {
diff --git a/drivers/gles2/rasterizer_scene_gles2.cpp b/drivers/gles2/rasterizer_scene_gles2.cpp
index 47a4f8bc27..2c52895bda 100644
--- a/drivers/gles2/rasterizer_scene_gles2.cpp
+++ b/drivers/gles2/rasterizer_scene_gles2.cpp
@@ -994,6 +994,13 @@ void RasterizerSceneGLES2::_add_geometry_with_material(RasterizerStorageGLES2::G
e->depth_layer = e->instance->depth_layer;
e->priority = p_material->render_priority;
+ if (has_alpha && p_material->shader->spatial.depth_draw_mode == RasterizerStorageGLES2::Shader::Spatial::DEPTH_DRAW_ALPHA_PREPASS) {
+ //add element to opaque
+ RenderList::Element *eo = render_list.add_element();
+ *eo = *e;
+ eo->use_accum_ptr = &eo->use_accum;
+ }
+
int rpsize = e->instance->reflection_probe_instances.size();
if (rpsize > 0) {
bool first = true;
@@ -2060,6 +2067,7 @@ void RasterizerSceneGLES2::_render_render_list(RenderList::Element **p_elements,
bool prev_unshaded = false;
bool prev_instancing = false;
+ bool prev_depth_prepass = false;
state.scene_shader.set_conditional(SceneShaderGLES2::SHADELESS, false);
RasterizerStorageGLES2::Material *prev_material = NULL;
RasterizerStorageGLES2::Geometry *prev_geometry = NULL;
@@ -2135,6 +2143,19 @@ void RasterizerSceneGLES2::_render_render_list(RenderList::Element **p_elements,
prev_unshaded = unshaded;
}
+ bool depth_prepass = false;
+
+ if (!p_alpha_pass && material->shader && material->shader->spatial.depth_draw_mode == RasterizerStorageGLES2::Shader::Spatial::DEPTH_DRAW_ALPHA_PREPASS) {
+ depth_prepass = true;
+ }
+
+ if (depth_prepass != prev_depth_prepass) {
+
+ state.scene_shader.set_conditional(SceneShaderGLES2::USE_DEPTH_PREPASS, depth_prepass);
+ prev_depth_prepass = depth_prepass;
+ rebind = true;
+ }
+
bool base_pass = !accum_pass && !unshaded; //conditions for a base pass
if (base_pass != prev_base_pass) {
@@ -2426,6 +2447,7 @@ void RasterizerSceneGLES2::_render_render_list(RenderList::Element **p_elements,
state.scene_shader.set_conditional(SceneShaderGLES2::USE_LIGHTMAP_CAPTURE, false);
state.scene_shader.set_conditional(SceneShaderGLES2::FOG_DEPTH_ENABLED, false);
state.scene_shader.set_conditional(SceneShaderGLES2::FOG_HEIGHT_ENABLED, false);
+ state.scene_shader.set_conditional(SceneShaderGLES2::USE_RADIANCE_MAP, false);
}
void RasterizerSceneGLES2::_draw_sky(RasterizerStorageGLES2::Sky *p_sky, const CameraMatrix &p_projection, const Transform &p_transform, bool p_vflip, float p_custom_fov, float p_energy, const Basis &p_sky_orientation) {
diff --git a/drivers/gles2/rasterizer_storage_gles2.cpp b/drivers/gles2/rasterizer_storage_gles2.cpp
index f0deff4791..d00d572ccf 100644
--- a/drivers/gles2/rasterizer_storage_gles2.cpp
+++ b/drivers/gles2/rasterizer_storage_gles2.cpp
@@ -195,11 +195,11 @@ Ref<Image> RasterizerStorageGLES2::_get_gl_image_and_format(const Ref<Image> &p_
} break;
case Image::FORMAT_DXT1: {
- r_compressed = true;
if (config.s3tc_supported) {
r_gl_internal_format = _EXT_COMPRESSED_RGBA_S3TC_DXT1_EXT;
r_gl_format = GL_RGBA;
r_gl_type = GL_UNSIGNED_BYTE;
+ r_compressed = true;
} else {
need_decompress = true;
}
@@ -846,6 +846,17 @@ void RasterizerStorageGLES2::textures_keep_original(bool p_enable) {
config.keep_original_textures = p_enable;
}
+Size2 RasterizerStorageGLES2::texture_size_with_proxy(RID p_texture) const {
+
+ const Texture *texture = texture_owner.getornull(p_texture);
+ ERR_FAIL_COND_V(!texture, Size2());
+ if (texture->proxy) {
+ return Size2(texture->proxy->width, texture->proxy->height);
+ } else {
+ return Size2(texture->width, texture->height);
+ }
+}
+
void RasterizerStorageGLES2::texture_set_proxy(RID p_texture, RID p_proxy) {
Texture *texture = texture_owner.getornull(p_texture);
ERR_FAIL_COND(!texture);
@@ -4631,7 +4642,7 @@ bool RasterizerStorageGLES2::free(RID p_rid) {
Shader *shader = shader_owner.get(p_rid);
- if (shader->shader) {
+ if (shader->shader && shader->custom_code_id) {
shader->shader->free_custom_shader(shader->custom_code_id);
}
@@ -4868,8 +4879,8 @@ void RasterizerStorageGLES2::initialize() {
config.etc1_supported = false;
#else
config.float_texture_supported = config.extensions.has("GL_ARB_texture_float") || config.extensions.has("GL_OES_texture_float");
- config.s3tc_supported = config.extensions.has("GL_EXT_texture_compression_s3tc");
- config.etc1_supported = config.extensions.has("GL_OES_compressed_ETC1_RGB8_texture");
+ config.s3tc_supported = config.extensions.has("GL_EXT_texture_compression_s3tc") || config.extensions.has("WEBGL_compressed_texture_s3tc");
+ config.etc1_supported = config.extensions.has("GL_OES_compressed_ETC1_RGB8_texture") || config.extensions.has("WEBGL_compressed_texture_etc1");
#endif
#ifdef GLES_OVER_GL
config.use_rgba_2d_shadows = false;
diff --git a/drivers/gles2/rasterizer_storage_gles2.h b/drivers/gles2/rasterizer_storage_gles2.h
index ed21238db6..ba48ddd185 100644
--- a/drivers/gles2/rasterizer_storage_gles2.h
+++ b/drivers/gles2/rasterizer_storage_gles2.h
@@ -342,6 +342,7 @@ public:
virtual void textures_keep_original(bool p_enable);
virtual void texture_set_proxy(RID p_texture, RID p_proxy);
+ virtual Size2 texture_size_with_proxy(RID p_texture) const;
virtual void texture_set_detect_3d_callback(RID p_texture, VisualServer::TextureDetectCallback p_callback, void *p_userdata);
virtual void texture_set_detect_srgb_callback(RID p_texture, VisualServer::TextureDetectCallback p_callback, void *p_userdata);
diff --git a/drivers/gles2/shader_compiler_gles2.cpp b/drivers/gles2/shader_compiler_gles2.cpp
index bff031b93a..fa1242ceed 100644
--- a/drivers/gles2/shader_compiler_gles2.cpp
+++ b/drivers/gles2/shader_compiler_gles2.cpp
@@ -806,9 +806,7 @@ ShaderCompilerGLES2::ShaderCompilerGLES2() {
actions[VS::SHADER_CANVAS_ITEM].usage_defines["SCREEN_PIXEL_SIZE"] = "@SCREEN_UV";
actions[VS::SHADER_CANVAS_ITEM].usage_defines["NORMAL"] = "#define NORMAL_USED\n";
actions[VS::SHADER_CANVAS_ITEM].usage_defines["NORMALMAP"] = "#define NORMALMAP_USED\n";
- actions[VS::SHADER_CANVAS_ITEM].usage_defines["SHADOW_COLOR"] = "#define SHADOW_COLOR_USED\n";
actions[VS::SHADER_CANVAS_ITEM].usage_defines["LIGHT"] = "#define USE_LIGHT_SHADER_CODE\n";
-
actions[VS::SHADER_CANVAS_ITEM].render_mode_defines["skip_vertex_transform"] = "#define SKIP_TRANSFORM_USED\n";
/** SPATIAL SHADER **/
@@ -831,7 +829,6 @@ ShaderCompilerGLES2::ShaderCompilerGLES2() {
actions[VS::SHADER_SPATIAL].renames["POINT_SIZE"] = "gl_PointSize";
// gl_InstanceID is not available in OpenGL ES 2.0
actions[VS::SHADER_SPATIAL].renames["INSTANCE_ID"] = "0";
- actions[VS::SHADER_SPATIAL].renames["OUTPUT_IS_SRGB"] = "SHADER_IS_SRGB";
//builtins
@@ -863,12 +860,15 @@ ShaderCompilerGLES2::ShaderCompilerGLES2() {
actions[VS::SHADER_SPATIAL].renames["SCREEN_UV"] = "screen_uv";
actions[VS::SHADER_SPATIAL].renames["SCREEN_TEXTURE"] = "screen_texture";
actions[VS::SHADER_SPATIAL].renames["DEPTH_TEXTURE"] = "depth_buffer";
- actions[VS::SHADER_SPATIAL].renames["SIDE"] = "side";
+ // Defined in GLES3, but not available in GLES2
+ //actions[VS::SHADER_SPATIAL].renames["DEPTH"] = "gl_FragDepth";
actions[VS::SHADER_SPATIAL].renames["ALPHA_SCISSOR"] = "alpha_scissor";
+ actions[VS::SHADER_SPATIAL].renames["OUTPUT_IS_SRGB"] = "SHADER_IS_SRGB";
//for light
actions[VS::SHADER_SPATIAL].renames["VIEW"] = "view";
actions[VS::SHADER_SPATIAL].renames["LIGHT_COLOR"] = "light_color";
+ actions[VS::SHADER_SPATIAL].renames["LIGHT"] = "light";
actions[VS::SHADER_SPATIAL].renames["ATTENUATION"] = "attenuation";
actions[VS::SHADER_SPATIAL].renames["DIFFUSE_LIGHT"] = "diffuse_light";
actions[VS::SHADER_SPATIAL].renames["SPECULAR_LIGHT"] = "specular_light";
@@ -903,6 +903,12 @@ ShaderCompilerGLES2::ShaderCompilerGLES2() {
actions[VS::SHADER_SPATIAL].render_mode_defines["skip_vertex_transform"] = "#define SKIP_TRANSFORM_USED\n";
actions[VS::SHADER_SPATIAL].render_mode_defines["world_vertex_coords"] = "#define VERTEX_WORLD_COORDS_USED\n";
+ // Defined in GLES3, could be implemented in GLES2 too if there's a need for it
+ //actions[VS::SHADER_SPATIAL].render_mode_defines["ensure_correct_normals"] = "#define ENSURE_CORRECT_NORMALS\n";
+ // Defined in GLES3, might not be possible in GLES2 as gl_FrontFacing is not available
+ //actions[VS::SHADER_SPATIAL].render_mode_defines["cull_front"] = "#define DO_SIDE_CHECK\n";
+ //actions[VS::SHADER_SPATIAL].render_mode_defines["cull_disabled"] = "#define DO_SIDE_CHECK\n";
+
bool force_lambert = GLOBAL_GET("rendering/quality/shading/force_lambert_over_burley");
if (!force_lambert) {
@@ -928,27 +934,7 @@ ShaderCompilerGLES2::ShaderCompilerGLES2() {
actions[VS::SHADER_SPATIAL].render_mode_defines["shadows_disabled"] = "#define SHADOWS_DISABLED\n";
actions[VS::SHADER_SPATIAL].render_mode_defines["ambient_light_disabled"] = "#define AMBIENT_LIGHT_DISABLED\n";
- /* PARTICLES SHADER */
-
- actions[VS::SHADER_PARTICLES].renames["COLOR"] = "out_color";
- actions[VS::SHADER_PARTICLES].renames["VELOCITY"] = "out_velocity_active.xyz";
- actions[VS::SHADER_PARTICLES].renames["MASS"] = "mass";
- actions[VS::SHADER_PARTICLES].renames["ACTIVE"] = "shader_active";
- actions[VS::SHADER_PARTICLES].renames["RESTART"] = "restart";
- actions[VS::SHADER_PARTICLES].renames["CUSTOM"] = "out_custom";
- actions[VS::SHADER_PARTICLES].renames["TRANSFORM"] = "xform";
- actions[VS::SHADER_PARTICLES].renames["TIME"] = "time";
- actions[VS::SHADER_PARTICLES].renames["LIFETIME"] = "lifetime";
- actions[VS::SHADER_PARTICLES].renames["DELTA"] = "local_delta";
- actions[VS::SHADER_PARTICLES].renames["NUMBER"] = "particle_number";
- actions[VS::SHADER_PARTICLES].renames["INDEX"] = "index";
- actions[VS::SHADER_PARTICLES].renames["GRAVITY"] = "current_gravity";
- actions[VS::SHADER_PARTICLES].renames["EMISSION_TRANSFORM"] = "emission_transform";
- actions[VS::SHADER_PARTICLES].renames["RANDOM_SEED"] = "random_seed";
-
- actions[VS::SHADER_PARTICLES].render_mode_defines["disable_force"] = "#define DISABLE_FORCE\n";
- actions[VS::SHADER_PARTICLES].render_mode_defines["disable_velocity"] = "#define DISABLE_VELOCITY\n";
- actions[VS::SHADER_PARTICLES].render_mode_defines["keep_data"] = "#define ENABLE_KEEP_DATA\n";
+ // No defines for particle shaders in GLES2, there are no GPU particles
vertex_name = "vertex";
fragment_name = "fragment";
diff --git a/drivers/gles2/shader_gles2.cpp b/drivers/gles2/shader_gles2.cpp
index b50da3e9fe..5e259a01f0 100644
--- a/drivers/gles2/shader_gles2.cpp
+++ b/drivers/gles2/shader_gles2.cpp
@@ -519,6 +519,10 @@ ShaderGLES2::Version *ShaderGLES2::get_current_version() {
glUseProgram(0);
v.ok = true;
+ if (cc) {
+ cc->versions.insert(conditional_version.version);
+ }
+
return &v;
}
@@ -683,9 +687,28 @@ void ShaderGLES2::set_custom_shader(uint32_t p_code_id) {
}
void ShaderGLES2::free_custom_shader(uint32_t p_code_id) {
+
ERR_FAIL_COND(!custom_code_map.has(p_code_id));
- if (conditional_version.code_version == p_code_id)
- conditional_version.code_version = 0;
+ if (conditional_version.code_version == p_code_id) {
+ conditional_version.code_version = 0; //do not keep using a version that is going away
+ unbind();
+ }
+
+ VersionKey key;
+ key.code_version = p_code_id;
+ for (Set<uint32_t>::Element *E = custom_code_map[p_code_id].versions.front(); E; E = E->next()) {
+ key.version = E->get();
+ ERR_CONTINUE(!version_map.has(key));
+ Version &v = version_map[key];
+
+ glDeleteShader(v.vert_id);
+ glDeleteShader(v.frag_id);
+ glDeleteProgram(v.id);
+ memdelete_arr(v.uniform_location);
+ v.id = 0;
+
+ version_map.erase(key);
+ }
custom_code_map.erase(p_code_id);
}
diff --git a/drivers/gles2/shader_gles2.h b/drivers/gles2/shader_gles2.h
index 5805432d09..d493880d0b 100644
--- a/drivers/gles2/shader_gles2.h
+++ b/drivers/gles2/shader_gles2.h
@@ -104,6 +104,7 @@ private:
Vector<StringName> texture_uniforms;
Vector<StringName> custom_uniforms;
Vector<CharString> custom_defines;
+ Set<uint32_t> versions;
};
struct Version {
diff --git a/drivers/gles2/shaders/scene.glsl b/drivers/gles2/shaders/scene.glsl
index c7f5c97133..6c3d3baccd 100644
--- a/drivers/gles2/shaders/scene.glsl
+++ b/drivers/gles2/shaders/scene.glsl
@@ -1498,6 +1498,12 @@ FRAGMENT_SHADER_CODE
}
#endif
+#ifdef USE_DEPTH_PREPASS
+ if (alpha < 0.99) {
+ discard;
+ }
+#endif
+
#ifdef BASE_PASS
//none
#ifdef USE_RADIANCE_MAP
diff --git a/drivers/gles3/rasterizer_canvas_gles3.cpp b/drivers/gles3/rasterizer_canvas_gles3.cpp
index 79fec63db0..b8f0965af8 100644
--- a/drivers/gles3/rasterizer_canvas_gles3.cpp
+++ b/drivers/gles3/rasterizer_canvas_gles3.cpp
@@ -146,10 +146,15 @@ void RasterizerCanvasGLES3::canvas_begin() {
if (storage->frame.current_rt && storage->frame.clear_request) {
// a clear request may be pending, so do it
+ bool transparent = storage->frame.current_rt->flags[RasterizerStorage::RENDER_TARGET_TRANSPARENT];
- glClearColor(storage->frame.clear_request_color.r, storage->frame.clear_request_color.g, storage->frame.clear_request_color.b, storage->frame.clear_request_color.a);
+ glClearColor(storage->frame.clear_request_color.r,
+ storage->frame.clear_request_color.g,
+ storage->frame.clear_request_color.b,
+ transparent ? storage->frame.clear_request_color.a : 1.0);
glClear(GL_COLOR_BUFFER_BIT);
storage->frame.clear_request = false;
+ glColorMask(1, 1, 1, transparent ? 1 : 0);
}
reset_canvas();
@@ -193,6 +198,7 @@ void RasterizerCanvasGLES3::canvas_end() {
glBindVertexArray(0);
glBindBufferBase(GL_UNIFORM_BUFFER, 0, 0);
+ glColorMask(1, 1, 1, 1);
state.using_texture_rect = false;
state.using_ninepatch = false;
diff --git a/drivers/gles3/rasterizer_scene_gles3.cpp b/drivers/gles3/rasterizer_scene_gles3.cpp
index 02dbe096c5..966466d9bc 100644
--- a/drivers/gles3/rasterizer_scene_gles3.cpp
+++ b/drivers/gles3/rasterizer_scene_gles3.cpp
@@ -4132,9 +4132,19 @@ void RasterizerSceneGLES3::render_scene(const Transform &p_cam_transform, const
glDepthFunc(GL_LEQUAL);
- state.used_contact_shadows = true;
+ state.used_contact_shadows = false;
- if (!storage->config.no_depth_prepass && storage->frame.current_rt && state.debug_draw != VS::VIEWPORT_DEBUG_DRAW_OVERDRAW) { //detect with state.used_contact_shadows too
+ for (int i = 0; i < p_light_cull_count; i++) {
+
+ ERR_BREAK(i >= RenderList::MAX_LIGHTS);
+
+ LightInstance *li = light_instance_owner.getptr(p_light_cull_result[i]);
+ if (li->light_ptr->param[VS::LIGHT_PARAM_CONTACT_SHADOW_SIZE] > CMP_EPSILON) {
+ state.used_contact_shadows = true;
+ }
+ }
+
+ if (!storage->config.no_depth_prepass && storage->frame.current_rt && state.debug_draw != VS::VIEWPORT_DEBUG_DRAW_OVERDRAW && !storage->frame.current_rt->flags[RasterizerStorage::RENDER_TARGET_NO_3D_EFFECTS]) { //detect with state.used_contact_shadows too
//pre z pass
glDisable(GL_BLEND);
diff --git a/drivers/gles3/rasterizer_storage_gles3.cpp b/drivers/gles3/rasterizer_storage_gles3.cpp
index 8b3f1a1b77..4ef7db8ea9 100644
--- a/drivers/gles3/rasterizer_storage_gles3.cpp
+++ b/drivers/gles3/rasterizer_storage_gles3.cpp
@@ -112,15 +112,6 @@ void glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid
}, target, offset, data, size);
/* clang-format on */
}
-
-void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data) {
-
- /* clang-format off */
- EM_ASM({
- GLctx.bufferSubData($0, $1, HEAPU8, $2, $3);
- }, target, offset, data, size);
- /* clang-format on */
-}
#endif
void glTexStorage2DCustom(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type) {
@@ -1687,6 +1678,17 @@ RID RasterizerStorageGLES3::texture_create_radiance_cubemap(RID p_source, int p_
return texture_owner.make_rid(ctex);
}
+Size2 RasterizerStorageGLES3::texture_size_with_proxy(RID p_texture) const {
+
+ const Texture *texture = texture_owner.getornull(p_texture);
+ ERR_FAIL_COND_V(!texture, Size2());
+ if (texture->proxy) {
+ return Size2(texture->proxy->width, texture->proxy->height);
+ } else {
+ return Size2(texture->width, texture->height);
+ }
+}
+
void RasterizerStorageGLES3::texture_set_proxy(RID p_texture, RID p_proxy) {
Texture *texture = texture_owner.get(p_texture);
@@ -7486,7 +7488,7 @@ bool RasterizerStorageGLES3::free(RID p_rid) {
// delete the texture
Shader *shader = shader_owner.get(p_rid);
- if (shader->shader)
+ if (shader->shader && shader->custom_code_id)
shader->shader->free_custom_shader(shader->custom_code_id);
if (shader->dirty_list.in_list())
diff --git a/drivers/gles3/rasterizer_storage_gles3.h b/drivers/gles3/rasterizer_storage_gles3.h
index 811f9c8d80..88897e1e07 100644
--- a/drivers/gles3/rasterizer_storage_gles3.h
+++ b/drivers/gles3/rasterizer_storage_gles3.h
@@ -46,7 +46,6 @@
// WebGL 2.0 has no MapBufferRange/UnmapBuffer, but offers a non-ES style BufferSubData API instead.
#ifdef __EMSCRIPTEN__
void glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data);
-void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data);
#endif
class RasterizerCanvasGLES3;
@@ -375,6 +374,8 @@ public:
virtual void texture_set_detect_normal_callback(RID p_texture, VisualServer::TextureDetectCallback p_callback, void *p_userdata);
virtual void texture_set_proxy(RID p_texture, RID p_proxy);
+ virtual Size2 texture_size_with_proxy(RID p_texture) const;
+
virtual void texture_set_force_redraw_if_visible(RID p_texture, bool p_enable);
/* SKY API */
diff --git a/drivers/gles3/shader_compiler_gles3.cpp b/drivers/gles3/shader_compiler_gles3.cpp
index cda6dac506..4d6f37e093 100644
--- a/drivers/gles3/shader_compiler_gles3.cpp
+++ b/drivers/gles3/shader_compiler_gles3.cpp
@@ -963,9 +963,9 @@ ShaderCompilerGLES3::ShaderCompilerGLES3() {
actions[VS::SHADER_PARTICLES].renames["EMISSION_TRANSFORM"] = "emission_transform";
actions[VS::SHADER_PARTICLES].renames["RANDOM_SEED"] = "random_seed";
- actions[VS::SHADER_SPATIAL].render_mode_defines["disable_force"] = "#define DISABLE_FORCE\n";
- actions[VS::SHADER_SPATIAL].render_mode_defines["disable_velocity"] = "#define DISABLE_VELOCITY\n";
- actions[VS::SHADER_SPATIAL].render_mode_defines["keep_data"] = "#define ENABLE_KEEP_DATA\n";
+ actions[VS::SHADER_PARTICLES].render_mode_defines["disable_force"] = "#define DISABLE_FORCE\n";
+ actions[VS::SHADER_PARTICLES].render_mode_defines["disable_velocity"] = "#define DISABLE_VELOCITY\n";
+ actions[VS::SHADER_PARTICLES].render_mode_defines["keep_data"] = "#define ENABLE_KEEP_DATA\n";
vertex_name = "vertex";
fragment_name = "fragment";
diff --git a/drivers/gles3/shader_gles3.cpp b/drivers/gles3/shader_gles3.cpp
index edc2a6c054..2db0223edd 100644
--- a/drivers/gles3/shader_gles3.cpp
+++ b/drivers/gles3/shader_gles3.cpp
@@ -559,6 +559,9 @@ ShaderGLES3::Version *ShaderGLES3::get_current_version() {
glUseProgram(0);
v.ok = true;
+ if (cc) {
+ cc->versions.insert(conditional_version.version);
+ }
return &v;
}
@@ -741,8 +744,26 @@ void ShaderGLES3::set_custom_shader(uint32_t p_code_id) {
void ShaderGLES3::free_custom_shader(uint32_t p_code_id) {
ERR_FAIL_COND(!custom_code_map.has(p_code_id));
- if (conditional_version.code_version == p_code_id)
- conditional_version.code_version = 0; //bye
+ if (conditional_version.code_version == p_code_id) {
+ conditional_version.code_version = 0; //do not keep using a version that is going away
+ unbind();
+ }
+
+ VersionKey key;
+ key.code_version = p_code_id;
+ for (Set<uint32_t>::Element *E = custom_code_map[p_code_id].versions.front(); E; E = E->next()) {
+ key.version = E->get();
+ ERR_CONTINUE(!version_map.has(key));
+ Version &v = version_map[key];
+
+ glDeleteShader(v.vert_id);
+ glDeleteShader(v.frag_id);
+ glDeleteProgram(v.id);
+ memdelete_arr(v.uniform_location);
+ v.id = 0;
+
+ version_map.erase(key);
+ }
custom_code_map.erase(p_code_id);
}
diff --git a/drivers/gles3/shader_gles3.h b/drivers/gles3/shader_gles3.h
index 1f98f4883d..1ed30986bf 100644
--- a/drivers/gles3/shader_gles3.h
+++ b/drivers/gles3/shader_gles3.h
@@ -117,6 +117,7 @@ private:
uint32_t version;
Vector<StringName> texture_uniforms;
Vector<CharString> custom_defines;
+ Set<uint32_t> versions;
};
struct Version {
diff --git a/drivers/unix/dir_access_unix.h b/drivers/unix/dir_access_unix.h
index b85ae719ff..579cb0e798 100644
--- a/drivers/unix/dir_access_unix.h
+++ b/drivers/unix/dir_access_unix.h
@@ -84,7 +84,6 @@ public:
virtual String get_filesystem_type() const;
-
DirAccessUnix();
~DirAccessUnix();
};
diff --git a/drivers/unix/thread_posix.cpp b/drivers/unix/thread_posix.cpp
index a81292d4a2..ef3f5fb49c 100644
--- a/drivers/unix/thread_posix.cpp
+++ b/drivers/unix/thread_posix.cpp
@@ -40,9 +40,13 @@
#include "core/os/memory.h"
#include "core/safe_refcount.h"
+static void _thread_id_key_destr_callback(void *p_value) {
+ memdelete(static_cast<Thread::ID *>(p_value));
+}
+
static pthread_key_t _create_thread_id_key() {
pthread_key_t key;
- pthread_key_create(&key, NULL);
+ pthread_key_create(&key, &_thread_id_key_destr_callback);
return key;
}
@@ -63,7 +67,7 @@ void *ThreadPosix::thread_callback(void *userdata) {
ThreadPosix *t = reinterpret_cast<ThreadPosix *>(userdata);
t->id = atomic_increment(&next_thread_id);
- pthread_setspecific(thread_id_key, (void *)t->id);
+ pthread_setspecific(thread_id_key, (void *)memnew(ID(t->id)));
ScriptServer::thread_enter(); //scripts may need to attach a stack
@@ -89,7 +93,14 @@ Thread *ThreadPosix::create_func_posix(ThreadCreateCallback p_callback, void *p_
}
Thread::ID ThreadPosix::get_thread_id_func_posix() {
- return (ID)pthread_getspecific(thread_id_key);
+ void *value = pthread_getspecific(thread_id_key);
+
+ if (value)
+ return *static_cast<ID *>(value);
+
+ ID new_id = atomic_increment(&next_thread_id);
+ pthread_setspecific(thread_id_key, (void *)memnew(ID(new_id)));
+ return new_id;
}
void ThreadPosix::wait_to_finish_func_posix(Thread *p_thread) {
diff --git a/drivers/windows/dir_access_windows.cpp b/drivers/windows/dir_access_windows.cpp
index c32e063736..499bb4f34b 100644
--- a/drivers/windows/dir_access_windows.cpp
+++ b/drivers/windows/dir_access_windows.cpp
@@ -347,27 +347,27 @@ size_t DirAccessWindows::get_space_left() {
}
String DirAccessWindows::get_filesystem_type() const {
- String path = fix_path(const_cast<DirAccessWindows*>(this)->get_current_dir());
- print_line("fixed path: "+path);
+ String path = fix_path(const_cast<DirAccessWindows *>(this)->get_current_dir());
+ print_line("fixed path: " + path);
int unit_end = path.find(":");
- ERR_FAIL_COND_V(unit_end==-1,String());
- String unit = path.substr(0,unit_end+1) + "\\";
- print_line("unit: "+unit);
-
- TCHAR szVolumeName[100] = "";
- TCHAR szFileSystemName[10] = "";
- DWORD dwSerialNumber = 0;
- DWORD dwMaxFileNameLength = 0;
- DWORD dwFileSystemFlags = 0;
-
- if(::GetVolumeInformation(unit.utf8().get_data(),
- szVolumeName,
- sizeof(szVolumeName),
- &dwSerialNumber,
- &dwMaxFileNameLength,
- &dwFileSystemFlags,
- szFileSystemName,
- sizeof(szFileSystemName)) == TRUE) {
+ ERR_FAIL_COND_V(unit_end == -1, String());
+ String unit = path.substr(0, unit_end + 1) + "\\";
+ print_line("unit: " + unit);
+
+ WCHAR szVolumeName[100];
+ WCHAR szFileSystemName[10];
+ DWORD dwSerialNumber = 0;
+ DWORD dwMaxFileNameLength = 0;
+ DWORD dwFileSystemFlags = 0;
+
+ if (::GetVolumeInformationW(unit.c_str(),
+ szVolumeName,
+ sizeof(szVolumeName),
+ &dwSerialNumber,
+ &dwMaxFileNameLength,
+ &dwFileSystemFlags,
+ szFileSystemName,
+ sizeof(szFileSystemName)) == TRUE) {
return String(szFileSystemName);
}
diff --git a/drivers/windows/dir_access_windows.h b/drivers/windows/dir_access_windows.h
index b8599d5c26..10eee07f0c 100644
--- a/drivers/windows/dir_access_windows.h
+++ b/drivers/windows/dir_access_windows.h
@@ -84,7 +84,6 @@ public:
virtual String get_filesystem_type() const;
-
DirAccessWindows();
~DirAccessWindows();
};
diff --git a/editor/create_dialog.cpp b/editor/create_dialog.cpp
index 205bdc63b9..3c2bfdc04d 100644
--- a/editor/create_dialog.cpp
+++ b/editor/create_dialog.cpp
@@ -208,7 +208,7 @@ void CreateDialog::add_type(const String &p_type, HashMap<String, TreeItem *> &p
if (!can_instance) {
item->set_custom_color(0, get_color("disabled_font_color", "Editor"));
item->set_selectable(0, false);
- } else {
+ } else if (!(*to_select && (*to_select)->get_text(0) == search_box->get_text())) {
bool is_search_subsequence = search_box->get_text().is_subsequence_ofi(p_type);
String to_select_type = *to_select ? (*to_select)->get_text(0) : "";
to_select_type = to_select_type.split(" ")[0];
@@ -221,11 +221,11 @@ void CreateDialog::add_type(const String &p_type, HashMap<String, TreeItem *> &p
} else {
current_item_is_preferred = ed.script_class_is_parent(p_type, preferred_search_result_type) && !ed.script_class_is_parent(to_select_type, preferred_search_result_type) && search_box->get_text() != to_select_type;
}
- if (*to_select && p_type.length() < (*to_select)->get_text(0).length()) {
+ if (search_box->get_text() == p_type || (*to_select && p_type.length() < (*to_select)->get_text(0).length())) {
current_item_is_preferred = true;
}
- if (((!*to_select || current_item_is_preferred) && is_search_subsequence) || search_box->get_text() == p_type) {
+ if (((!*to_select || current_item_is_preferred) && is_search_subsequence)) {
*to_select = item;
}
}
diff --git a/editor/editor_audio_buses.cpp b/editor/editor_audio_buses.cpp
index 5d0abef4b8..6593eb8f03 100644
--- a/editor/editor_audio_buses.cpp
+++ b/editor/editor_audio_buses.cpp
@@ -75,9 +75,16 @@ void EditorAudioBus::_notification(int p_what) {
disabled_vu = get_icon("BusVuFrozen", "EditorIcons");
+ Color solo_color = Color::html(EditorSettings::get_singleton()->is_dark_theme() ? "#ffe337" : "#ffeb70");
+ Color mute_color = Color::html(EditorSettings::get_singleton()->is_dark_theme() ? "#ff2929" : "#ff7070");
+ Color bypass_color = Color::html(EditorSettings::get_singleton()->is_dark_theme() ? "#22ccff" : "#70deff");
+
solo->set_icon(get_icon("AudioBusSolo", "EditorIcons"));
+ solo->add_color_override("icon_color_pressed", solo_color);
mute->set_icon(get_icon("AudioBusMute", "EditorIcons"));
+ mute->add_color_override("icon_color_pressed", mute_color);
bypass->set_icon(get_icon("AudioBusBypass", "EditorIcons"));
+ bypass->add_color_override("icon_color_pressed", bypass_color);
bus_options->set_icon(get_icon("GuiMiniTabMenu", "EditorIcons"));
diff --git a/editor/editor_file_system.cpp b/editor/editor_file_system.cpp
index d958ecebf6..fe8d57d1a1 100644
--- a/editor/editor_file_system.cpp
+++ b/editor/editor_file_system.cpp
@@ -1810,13 +1810,11 @@ EditorFileSystem::EditorFileSystem() {
da->make_dir("res://.import");
}
//this should probably also work on Unix and use the string it returns for FAT32
- using_fat_32 = da->get_filesystem_type()=="FAT32";
+ using_fat_32 = da->get_filesystem_type() == "FAT32";
memdelete(da);
scan_total = 0;
update_script_classes_queued = false;
-
-
}
EditorFileSystem::~EditorFileSystem() {
diff --git a/editor/editor_inspector.cpp b/editor/editor_inspector.cpp
index e660bb2daf..1078fabc2e 100644
--- a/editor/editor_inspector.cpp
+++ b/editor/editor_inspector.cpp
@@ -1899,13 +1899,13 @@ int EditorInspector::get_scroll_offset() const {
return get_v_scroll();
}
-void EditorInspector::set_use_sub_inspector_bg(bool p_enable) {
+void EditorInspector::set_sub_inspector(bool p_enable) {
- use_sub_inspector_bg = p_enable;
+ sub_inspector = p_enable;
if (!is_inside_tree())
return;
- if (use_sub_inspector_bg) {
+ if (sub_inspector) {
add_style_override("bg", get_stylebox("sub_inspector_bg", "Editor"));
} else {
add_style_override("bg", get_stylebox("bg", "Tree"));
@@ -2010,7 +2010,7 @@ void EditorInspector::_property_changed(const String &p_path, const Variant &p_v
}
}
-void EditorInspector::_property_changed_update_all(const String &p_path, const Variant &p_value) {
+void EditorInspector::_property_changed_update_all(const String &p_path, const Variant &p_value, const String &p_name, bool p_changing) {
update_tree();
}
@@ -2126,16 +2126,18 @@ void EditorInspector::_notification(int p_what) {
if (p_what == NOTIFICATION_ENTER_TREE) {
- get_tree()->connect("node_removed", this, "_node_removed");
- if (use_sub_inspector_bg) {
+ if (sub_inspector) {
add_style_override("bg", get_stylebox("sub_inspector_bg", "Editor"));
- } else if (is_inside_tree()) {
+ } else {
add_style_override("bg", get_stylebox("bg", "Tree"));
+ get_tree()->connect("node_removed", this, "_node_removed");
}
}
if (p_what == NOTIFICATION_EXIT_TREE) {
- get_tree()->disconnect("node_removed", this, "_node_removed");
+ if (!sub_inspector) {
+ get_tree()->disconnect("node_removed", this, "_node_removed");
+ }
edit(NULL);
}
@@ -2184,7 +2186,7 @@ void EditorInspector::_notification(int p_what) {
if (p_what == EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED) {
- if (use_sub_inspector_bg) {
+ if (sub_inspector) {
add_style_override("bg", get_stylebox("sub_inspector_bg", "Editor"));
} else if (is_inside_tree()) {
add_style_override("bg", get_stylebox("bg", "Tree"));
@@ -2280,7 +2282,7 @@ EditorInspector::EditorInspector() {
_prop_edited = "property_edited";
set_process(true);
property_focusable = -1;
- use_sub_inspector_bg = false;
+ sub_inspector = false;
get_v_scrollbar()->connect("value_changed", this, "_vscroll_changed");
update_scroll_request = -1;
diff --git a/editor/editor_inspector.h b/editor/editor_inspector.h
index d64a78be57..3d22cdb9a3 100644
--- a/editor/editor_inspector.h
+++ b/editor/editor_inspector.h
@@ -281,7 +281,7 @@ class EditorInspector : public ScrollContainer {
bool update_all_pending;
bool read_only;
bool keying;
- bool use_sub_inspector_bg;
+ bool sub_inspector;
float refresh_countdown;
bool update_tree_pending;
@@ -302,7 +302,7 @@ class EditorInspector : public ScrollContainer {
void _edit_set(const String &p_name, const Variant &p_value, bool p_refresh_all, const String &p_changed_field);
void _property_changed(const String &p_path, const Variant &p_value, const String &p_name = "", bool changing = false);
- void _property_changed_update_all(const String &p_path, const Variant &p_value);
+ void _property_changed_update_all(const String &p_path, const Variant &p_value, const String &p_name = "", bool p_changing = false);
void _multiple_properties_changed(Vector<String> p_paths, Array p_values);
void _property_keyed(const String &p_path, bool p_advance);
void _property_keyed_with_value(const String &p_path, const Variant &p_value, bool p_advance);
@@ -375,7 +375,7 @@ public:
void set_object_class(const String &p_class);
String get_object_class() const;
- void set_use_sub_inspector_bg(bool p_enable);
+ void set_sub_inspector(bool p_enable);
EditorInspector();
};
diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp
index 719130621e..c8e00b0586 100644
--- a/editor/editor_node.cpp
+++ b/editor/editor_node.cpp
@@ -952,6 +952,9 @@ void EditorNode::_save_scene_with_preview(String p_file, int p_idx) {
}
if (img.is_valid()) {
+
+ img = img->duplicate();
+
save.step(TTR("Creating Thumbnail"), 2);
save.step(TTR("Creating Thumbnail"), 3);
@@ -1108,12 +1111,15 @@ void EditorNode::_save_scene(String p_file, int idx) {
}
}
-void EditorNode::save_all_scenes_and_restart() {
+void EditorNode::save_all_scenes() {
_menu_option_confirm(RUN_STOP, true);
- exiting = true;
-
_save_all_scenes();
+}
+
+void EditorNode::restart_editor() {
+
+ exiting = true;
String to_reopen;
if (get_tree()->get_edited_scene_root()) {
@@ -2305,7 +2311,8 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
ProjectSettings::get_singleton()->set("rendering/quality/driver/driver_name", video_driver_request);
ProjectSettings::get_singleton()->save();
- save_all_scenes_and_restart();
+ save_all_scenes();
+ restart_editor();
} break;
default: {
if (p_option >= IMPORT_PLUGIN_BASE) {
@@ -4760,6 +4767,8 @@ EditorNode::EditorNode() {
ResourceLoader::clear_translation_remaps(); //no remaps using during editor
ResourceLoader::clear_path_remaps();
+ ImageTexture::set_keep_images_cached(true);
+
InputDefault *id = Object::cast_to<InputDefault>(Input::get_singleton());
if (id) {
@@ -5629,7 +5638,7 @@ EditorNode::EditorNode() {
bottom_panel->add_child(bottom_panel_vb);
bottom_panel_hb = memnew(HBoxContainer);
- bottom_panel_hb->set_custom_minimum_size(Size2(0, 24)); // Adjust for the height of the "Expand Bottom Dock" icon.
+ bottom_panel_hb->set_custom_minimum_size(Size2(0, 24 * EDSCALE)); // Adjust for the height of the "Expand Bottom Dock" icon.
bottom_panel_vb->add_child(bottom_panel_hb);
bottom_panel_hb_editors = memnew(HBoxContainer);
diff --git a/editor/editor_node.h b/editor/editor_node.h
index 13bebea5f0..a45ea54186 100644
--- a/editor/editor_node.h
+++ b/editor/editor_node.h
@@ -782,7 +782,8 @@ public:
void add_tool_submenu_item(const String &p_name, PopupMenu *p_submenu);
void remove_tool_menu_item(const String &p_name);
- void save_all_scenes_and_restart();
+ void save_all_scenes();
+ void restart_editor();
void dim_editor(bool p_dimming);
diff --git a/editor/editor_profiler.cpp b/editor/editor_profiler.cpp
index e0baca9299..dee589ad3f 100644
--- a/editor/editor_profiler.cpp
+++ b/editor/editor_profiler.cpp
@@ -392,7 +392,7 @@ void EditorProfiler::_update_frame() {
category->set_custom_color(0, _get_color_from_signature(m.categories[i].signature));
}
- for (int j = 0; j < m.categories[i].items.size(); j++) {
+ for (int j = m.categories[i].items.size() - 1; j >= 0; j--) {
const Metric::Category::Item &it = m.categories[i].items[j];
TreeItem *item = variables->create_item(category);
diff --git a/editor/editor_properties.cpp b/editor/editor_properties.cpp
index c5d0f13c60..56bab440c9 100644
--- a/editor/editor_properties.cpp
+++ b/editor/editor_properties.cpp
@@ -2187,7 +2187,19 @@ void EditorPropertyResource::_menu_option(int p_which) {
return;
}
- Object *obj = ClassDB::instance(intype);
+ Object *obj = NULL;
+
+ if (ScriptServer::is_global_class(intype)) {
+ obj = ClassDB::instance(ScriptServer::get_global_class_base(intype));
+ if (obj) {
+ Ref<Script> script = ResourceLoader::load(ScriptServer::get_global_class_path(intype));
+ if (script.is_valid()) {
+ obj->set_script(Variant(script));
+ }
+ }
+ } else {
+ obj = ClassDB::instance(intype);
+ }
if (!obj) {
obj = EditorNode::get_editor_data().instance_custom_type(intype, "Resource");
@@ -2448,7 +2460,7 @@ void EditorPropertyResource::update_property() {
sub_inspector->set_enable_v_scroll(false);
sub_inspector->set_use_doc_hints(true);
- sub_inspector->set_use_sub_inspector_bg(true);
+ sub_inspector->set_sub_inspector(true);
sub_inspector->set_enable_capitalize_paths(true);
sub_inspector->connect("property_keyed", this, "_sub_inspector_property_keyed");
diff --git a/editor/editor_resource_preview.cpp b/editor/editor_resource_preview.cpp
index 368efbc48f..f77f31db80 100644
--- a/editor/editor_resource_preview.cpp
+++ b/editor/editor_resource_preview.cpp
@@ -159,6 +159,7 @@ void EditorResourcePreview::_generate_preview(Ref<ImageTexture> &r_texture, Ref<
small_thumbnail_size *= EDSCALE;
Ref<Image> small_image = r_texture->get_data();
+ small_image = small_image->duplicate();
small_image->resize(small_thumbnail_size, small_thumbnail_size, Image::INTERPOLATE_CUBIC);
r_small_texture.instance();
r_small_texture->create_from_image(small_image);
diff --git a/editor/import/editor_import_collada.cpp b/editor/import/editor_import_collada.cpp
index cd5df14f1b..dbf63102cf 100644
--- a/editor/import/editor_import_collada.cpp
+++ b/editor/import/editor_import_collada.cpp
@@ -44,8 +44,6 @@
#include "scene/resources/packed_scene.h"
#include "scene/resources/surface_tool.h"
-#include <iostream>
-
struct ColladaImport {
Collada collada;
diff --git a/editor/import/editor_scene_importer_gltf.cpp b/editor/import/editor_scene_importer_gltf.cpp
index 654dfc62e0..c29e9281fa 100644
--- a/editor/import/editor_scene_importer_gltf.cpp
+++ b/editor/import/editor_scene_importer_gltf.cpp
@@ -1030,11 +1030,19 @@ Error EditorSceneImporterGLTF::_parse_meshes(GLTFState &state) {
int size = src_varr.size();
ERR_FAIL_COND_V(size == 0, ERR_PARSE_ERROR);
{
+
+ int max_idx = varr.size();
+ varr.resize(size);
+
PoolVector<Vector3>::Write w_varr = varr.write();
PoolVector<Vector3>::Read r_varr = varr.read();
PoolVector<Vector3>::Read r_src_varr = src_varr.read();
for (int l = 0; l < size; l++) {
- w_varr[l] = r_varr[l] + r_src_varr[l];
+ if (l < max_idx) {
+ w_varr[l] = r_varr[l] + r_src_varr[l];
+ } else {
+ w_varr[l] = r_src_varr[l];
+ }
}
}
array_copy[Mesh::ARRAY_VERTEX] = varr;
@@ -1045,11 +1053,18 @@ Error EditorSceneImporterGLTF::_parse_meshes(GLTFState &state) {
int size = src_narr.size();
ERR_FAIL_COND_V(size == 0, ERR_PARSE_ERROR);
{
+ int max_idx = narr.size();
+ narr.resize(size);
+
PoolVector<Vector3>::Write w_narr = narr.write();
PoolVector<Vector3>::Read r_narr = narr.read();
PoolVector<Vector3>::Read r_src_narr = src_narr.read();
for (int l = 0; l < size; l++) {
- w_narr[l] = r_narr[l] + r_src_narr[l];
+ if (l < max_idx) {
+ w_narr[l] = r_narr[l] + r_src_narr[l];
+ } else {
+ w_narr[l] = r_src_narr[l];
+ }
}
}
array_copy[Mesh::ARRAY_NORMAL] = narr;
@@ -1062,6 +1077,8 @@ Error EditorSceneImporterGLTF::_parse_meshes(GLTFState &state) {
{
+ int max_idx = tangents_v3.size();
+
int size4 = src_tangents.size();
tangents_v4.resize(size4);
PoolVector<float>::Write w4 = tangents_v4.write();
@@ -1071,9 +1088,15 @@ Error EditorSceneImporterGLTF::_parse_meshes(GLTFState &state) {
for (int l = 0; l < size4 / 4; l++) {
- w4[l * 4 + 0] = r3[l].x + r4[l * 4 + 0];
- w4[l * 4 + 1] = r3[l].y + r4[l * 4 + 1];
- w4[l * 4 + 2] = r3[l].z + r4[l * 4 + 2];
+ if (l < max_idx) {
+ w4[l * 4 + 0] = r3[l].x + r4[l * 4 + 0];
+ w4[l * 4 + 1] = r3[l].y + r4[l * 4 + 1];
+ w4[l * 4 + 2] = r3[l].z + r4[l * 4 + 2];
+ } else {
+ w4[l * 4 + 0] = r4[l * 4 + 0];
+ w4[l * 4 + 1] = r4[l * 4 + 1];
+ w4[l * 4 + 2] = r4[l * 4 + 2];
+ }
w4[l * 4 + 3] = r4[l * 4 + 3]; //copy flip value
}
}
diff --git a/editor/import_dock.cpp b/editor/import_dock.cpp
index e59df7c932..40cf02ac9d 100644
--- a/editor/import_dock.cpp
+++ b/editor/import_dock.cpp
@@ -372,6 +372,63 @@ void ImportDock::clear() {
preset->get_popup()->clear();
}
+static bool _find_owners(EditorFileSystemDirectory *efsd, const String &p_path) {
+
+ if (!efsd)
+ return false;
+
+ for (int i = 0; i < efsd->get_subdir_count(); i++) {
+
+ if (_find_owners(efsd->get_subdir(i), p_path)) {
+ return true;
+ }
+ }
+
+ for (int i = 0; i < efsd->get_file_count(); i++) {
+
+ Vector<String> deps = efsd->get_file_deps(i);
+ if (deps.find(p_path) != -1)
+ return true;
+ }
+
+ return false;
+}
+void ImportDock::_reimport_attempt() {
+
+ bool need_restart = false;
+ bool used_in_resources = false;
+ for (int i = 0; i < params->paths.size(); i++) {
+ Ref<ConfigFile> config;
+ config.instance();
+ Error err = config->load(params->paths[i] + ".import");
+ ERR_CONTINUE(err != OK);
+
+ String imported_with = config->get_value("remap", "importer");
+ if (imported_with != params->importer->get_importer_name()) {
+ need_restart = true;
+ if (_find_owners(EditorFileSystem::get_singleton()->get_filesystem(), params->paths[i])) {
+ used_in_resources = true;
+ }
+ }
+ }
+
+ if (need_restart) {
+ label_warning->set_visible(used_in_resources);
+ reimport_confirm->popup_centered_minsize();
+ return;
+ }
+
+ _reimport();
+}
+
+void ImportDock::_reimport_and_restart() {
+
+ EditorNode::get_singleton()->save_all_scenes();
+ EditorResourcePreview::get_singleton()->stop(); //dont try to re-create previews after import
+ _reimport();
+ EditorNode::get_singleton()->restart_editor();
+}
+
void ImportDock::_reimport() {
for (int i = 0; i < params->paths.size(); i++) {
@@ -416,6 +473,7 @@ void ImportDock::_notification(int p_what) {
case NOTIFICATION_ENTER_TREE: {
import_opts->edit(params);
+ label_warning->add_color_override("font_color", get_color("warning_color", "Editor"));
} break;
}
}
@@ -433,6 +491,8 @@ void ImportDock::_bind_methods() {
ClassDB::bind_method(D_METHOD("_preset_selected"), &ImportDock::_preset_selected);
ClassDB::bind_method(D_METHOD("_importer_selected"), &ImportDock::_importer_selected);
ClassDB::bind_method(D_METHOD("_property_toggled"), &ImportDock::_property_toggled);
+ ClassDB::bind_method(D_METHOD("_reimport_and_restart"), &ImportDock::_reimport_and_restart);
+ ClassDB::bind_method(D_METHOD("_reimport_attempt"), &ImportDock::_reimport_attempt);
}
void ImportDock::initialize_import_options() const {
@@ -469,11 +529,22 @@ ImportDock::ImportDock() {
add_child(hb);
import = memnew(Button);
import->set_text(TTR("Reimport"));
- import->connect("pressed", this, "_reimport");
+ import->connect("pressed", this, "_reimport_attempt");
hb->add_spacer();
hb->add_child(import);
hb->add_spacer();
+ reimport_confirm = memnew(ConfirmationDialog);
+ reimport_confirm->get_ok()->set_text(TTR("Save scenes, re-import and restart"));
+ add_child(reimport_confirm);
+ reimport_confirm->connect("confirmed", this, "_reimport_and_restart");
+
+ VBoxContainer *vbc_confirm = memnew(VBoxContainer());
+ vbc_confirm->add_child(memnew(Label(TTR("Changing the type of an imported file requires editor restart."))));
+ label_warning = memnew(Label(TTR("WARNING: Assets exist that use this resource, they may stop loading properly.")));
+ vbc_confirm->add_child(label_warning);
+ reimport_confirm->add_child(vbc_confirm);
+
params = memnew(ImportDockParameters);
}
diff --git a/editor/import_dock.h b/editor/import_dock.h
index bc992b2f7e..1d43e00b63 100644
--- a/editor/import_dock.h
+++ b/editor/import_dock.h
@@ -36,6 +36,7 @@
#include "editor/editor_file_system.h"
#include "editor/editor_inspector.h"
#include "scene/gui/box_container.h"
+#include "scene/gui/dialogs.h"
#include "scene/gui/menu_button.h"
#include "scene/gui/option_button.h"
#include "scene/gui/popup_menu.h"
@@ -52,6 +53,8 @@ class ImportDock : public VBoxContainer {
List<PropertyInfo> properties;
Map<StringName, Variant> property_values;
+ ConfirmationDialog *reimport_confirm;
+ Label *label_warning;
Button *import;
ImportDockParameters *params;
@@ -61,6 +64,8 @@ class ImportDock : public VBoxContainer {
void _update_options(const Ref<ConfigFile> &p_config = Ref<ConfigFile>());
void _property_toggled(const StringName &p_prop, bool p_checked);
+ void _reimport_attempt();
+ void _reimport_and_restart();
void _reimport();
enum {
diff --git a/editor/plugins/asset_library_editor_plugin.cpp b/editor/plugins/asset_library_editor_plugin.cpp
index a42765df6b..c68023ee9b 100644
--- a/editor/plugins/asset_library_editor_plugin.cpp
+++ b/editor/plugins/asset_library_editor_plugin.cpp
@@ -174,6 +174,7 @@ void EditorAssetLibraryItemDescription::set_image(int p_type, int p_index, const
if (preview_images[i].is_video) {
Ref<Image> overlay = get_icon("PlayOverlay", "EditorIcons")->get_data();
Ref<Image> thumbnail = p_image->get_data();
+ thumbnail = thumbnail->duplicate();
Point2 overlay_pos = Point2((thumbnail->get_width() - overlay->get_width()) / 2, (thumbnail->get_height() - overlay->get_height()) / 2);
thumbnail->lock();
diff --git a/editor/plugins/canvas_item_editor_plugin.cpp b/editor/plugins/canvas_item_editor_plugin.cpp
index 2913c4ce56..b2d2704f07 100644
--- a/editor/plugins/canvas_item_editor_plugin.cpp
+++ b/editor/plugins/canvas_item_editor_plugin.cpp
@@ -2741,10 +2741,11 @@ void CanvasItemEditor::_draw_selection() {
if (canvas_item->_edit_use_pivot()) {
// Draw the node's pivot
- Transform2D unscaled_transform = (xform * canvas_item->get_transform().affine_inverse() * Transform2D(canvas_item->_edit_get_rotation(), canvas_item->_edit_get_position())).orthonormalized();
+ Transform2D unscaled_transform = (xform * canvas_item->get_transform().affine_inverse() * Transform2D(canvas_item->_edit_get_rotation(), canvas_item->_edit_get_position() + canvas_item->_edit_get_pivot())).orthonormalized();
Transform2D simple_xform = viewport->get_transform() * unscaled_transform;
+
viewport->draw_set_transform_matrix(simple_xform);
- viewport->draw_texture(pivot_icon, canvas_item->_edit_get_pivot() - (pivot_icon->get_size() / 2).floor());
+ viewport->draw_texture(pivot_icon, -(pivot_icon->get_size() / 2).floor());
viewport->draw_set_transform_matrix(viewport->get_transform());
}
@@ -3277,7 +3278,24 @@ void CanvasItemEditor::_notification(int p_what) {
pivot_button->set_disabled(nb_having_pivot == 0);
// Show / Hide the layout button
- presets_menu->set_visible(nb_control > 0 && nb_control == selection.size());
+ if (nb_control > 0 && nb_control == selection.size()) {
+ presets_menu->set_visible(true);
+ presets_menu->set_tooltip(TTR("Presets for the anchors and margins values of a Control node."));
+
+ // Disable if the selected node is child of a container
+ presets_menu->set_disabled(false);
+ for (List<CanvasItem *>::Element *E = selection.front(); E; E = E->next()) {
+ Control *control = Object::cast_to<Control>(E->get());
+ if (!control || Object::cast_to<Container>(control->get_parent())) {
+ presets_menu->set_disabled(true);
+ presets_menu->set_tooltip(TTR("A child of a container gets its anchors and margins values overriden by its parent."));
+ break;
+ }
+ }
+
+ } else {
+ presets_menu->set_visible(false);
+ }
// Update the viewport if bones changes
for (Map<BoneKey, BoneList>::Element *E = bone_list.front(); E; E = E->next()) {
diff --git a/editor/plugins/editor_preview_plugins.cpp b/editor/plugins/editor_preview_plugins.cpp
index 8464dfd0aa..0c0cc9d635 100644
--- a/editor/plugins/editor_preview_plugins.cpp
+++ b/editor/plugins/editor_preview_plugins.cpp
@@ -99,12 +99,14 @@ Ref<Texture> EditorTexturePreviewPlugin::generate(const RES &p_from, const Size2
} else {
Ref<Texture> tex = p_from;
img = tex->get_data();
+ if (img.is_valid()) {
+ img = img->duplicate();
+ }
}
if (img.is_null() || img->empty())
return Ref<Texture>();
- img = img->duplicate();
img->clear_mipmaps();
if (img->is_compressed()) {
@@ -332,7 +334,7 @@ Ref<Texture> EditorMaterialPreviewPlugin::generate(const RES &p_from, const Size
OS::get_singleton()->delay_usec(10);
}
- Ref<Image> img = VS::get_singleton()->VS::get_singleton()->texture_get_data(viewport_texture);
+ Ref<Image> img = VS::get_singleton()->texture_get_data(viewport_texture);
VS::get_singleton()->mesh_surface_set_material(sphere, 0, RID());
ERR_FAIL_COND_V(!img.is_valid(), Ref<ImageTexture>());
@@ -732,7 +734,7 @@ Ref<Texture> EditorMeshPreviewPlugin::generate(const RES &p_from, const Size2 p_
OS::get_singleton()->delay_usec(10);
}
- Ref<Image> img = VS::get_singleton()->VS::get_singleton()->texture_get_data(viewport_texture);
+ Ref<Image> img = VS::get_singleton()->texture_get_data(viewport_texture);
ERR_FAIL_COND_V(img.is_null(), Ref<ImageTexture>());
VS::get_singleton()->instance_set_base(mesh_instance, RID());
@@ -852,7 +854,7 @@ Ref<Texture> EditorFontPreviewPlugin::generate_from_path(const String &p_path, c
OS::get_singleton()->delay_usec(10);
}
- Ref<Image> img = VS::get_singleton()->VS::get_singleton()->texture_get_data(viewport_texture);
+ Ref<Image> img = VS::get_singleton()->texture_get_data(viewport_texture);
ERR_FAIL_COND_V(img.is_null(), Ref<ImageTexture>());
img->convert(Image::FORMAT_RGBA8);
diff --git a/editor/plugins/spatial_editor_plugin.cpp b/editor/plugins/spatial_editor_plugin.cpp
index a2bde96093..9ece812c49 100644
--- a/editor/plugins/spatial_editor_plugin.cpp
+++ b/editor/plugins/spatial_editor_plugin.cpp
@@ -5744,6 +5744,7 @@ void SpatialEditorPlugin::snap_cursor_to_plane(const Plane &p_plane) {
}
void SpatialEditor::add_gizmo_plugin(Ref<EditorSpatialGizmoPlugin> p_plugin) {
+ ERR_FAIL_NULL(p_plugin.ptr());
gizmo_plugins.push_back(p_plugin);
_update_gizmos_menu();
SpatialEditor::get_singleton()->update_all_gizmos();
@@ -5881,7 +5882,7 @@ Ref<SpatialMaterial> EditorSpatialGizmoPlugin::get_material(const String &p_name
ERR_FAIL_COND_V(!materials.has(p_name), Ref<SpatialMaterial>());
ERR_FAIL_COND_V(materials[p_name].size() == 0, Ref<SpatialMaterial>());
- if (p_gizmo.is_null()) return materials[p_name][0];
+ if (p_gizmo.is_null() || materials[p_name].size() == 1) return materials[p_name][0];
int index = (p_gizmo->is_selected() ? 1 : 0) + (p_gizmo->is_editable() ? 2 : 0);
@@ -5900,7 +5901,7 @@ String EditorSpatialGizmoPlugin::get_name() const {
if (get_script_instance() && get_script_instance()->has_method("get_name")) {
return get_script_instance()->call("get_name");
}
- return TTR("Name-less gizmo");
+ return TTR("Nameless gizmo");
}
Ref<EditorSpatialGizmo> EditorSpatialGizmoPlugin::get_gizmo(Spatial *p_spatial) {
@@ -5950,7 +5951,7 @@ void EditorSpatialGizmoPlugin::_bind_methods() {
cm.default_arguments.push_back(false);
BIND_VMETHOD(cm);
- BIND_VMETHOD(MethodInfo(Variant::BOOL, "is_gizmo_handle_highlighted", GIZMO_REF, PropertyInfo(Variant::INT, "index")));
+ BIND_VMETHOD(MethodInfo(Variant::BOOL, "is_handle_highlighted", GIZMO_REF, PropertyInfo(Variant::INT, "index")));
#undef GIZMO_REF
}
@@ -6020,9 +6021,9 @@ void EditorSpatialGizmoPlugin::commit_handle(EditorSpatialGizmo *p_gizmo, int p_
}
}
-bool EditorSpatialGizmoPlugin::is_gizmo_handle_highlighted(const EditorSpatialGizmo *p_gizmo, int p_idx) const {
- if (get_script_instance() && get_script_instance()->has_method("is_gizmo_handle_highlighted")) {
- return get_script_instance()->call("is_gizmo_handle_highlighted", p_gizmo, p_idx);
+bool EditorSpatialGizmoPlugin::is_handle_highlighted(const EditorSpatialGizmo *p_gizmo, int p_idx) const {
+ if (get_script_instance() && get_script_instance()->has_method("is_handle_highlighted")) {
+ return get_script_instance()->call("is_handle_highlighted", p_gizmo, p_idx);
}
return false;
}
diff --git a/editor/plugins/spatial_editor_plugin.h b/editor/plugins/spatial_editor_plugin.h
index 87cd089428..2dc627cb27 100644
--- a/editor/plugins/spatial_editor_plugin.h
+++ b/editor/plugins/spatial_editor_plugin.h
@@ -110,6 +110,7 @@ public:
void add_handles(const Vector<Vector3> &p_handles, const Ref<Material> &p_material, bool p_billboard = false, bool p_secondary = false);
void add_solid_box(Ref<Material> &p_material, Vector3 p_size, Vector3 p_position = Vector3());
+ virtual bool is_handle_highlighted(int p_idx) const;
virtual String get_handle_name(int p_idx) const;
virtual Variant get_handle_value(int p_idx);
virtual void set_handle(int p_idx, Camera *p_camera, const Point2 &p_point);
@@ -117,6 +118,7 @@ public:
void set_spatial_node(Spatial *p_node);
Spatial *get_spatial_node() const { return spatial_node; }
+ EditorSpatialGizmoPlugin *get_plugin() const { return gizmo_plugin; }
Vector3 get_handle_pos(int p_idx) const;
bool intersect_frustum(const Camera *p_camera, const Vector<Plane> &p_frustum);
bool intersect_ray(Camera *p_camera, const Point2 &p_point, Vector3 &r_pos, Vector3 &r_normal, int *r_gizmo_handle = NULL, bool p_sec_first = false);
@@ -786,7 +788,7 @@ public:
virtual Variant get_handle_value(EditorSpatialGizmo *p_gizmo, int p_idx) const;
virtual void set_handle(EditorSpatialGizmo *p_gizmo, int p_idx, Camera *p_camera, const Point2 &p_point);
virtual void commit_handle(EditorSpatialGizmo *p_gizmo, int p_idx, const Variant &p_restore, bool p_cancel = false);
- virtual bool is_gizmo_handle_highlighted(const EditorSpatialGizmo *p_gizmo, int p_idx) const;
+ virtual bool is_handle_highlighted(const EditorSpatialGizmo *p_gizmo, int p_idx) const;
Ref<EditorSpatialGizmo> get_gizmo(Spatial *p_spatial);
void set_state(int p_state);
diff --git a/editor/project_manager.cpp b/editor/project_manager.cpp
index b8fb9d4ab0..7ce4029476 100644
--- a/editor/project_manager.cpp
+++ b/editor/project_manager.cpp
@@ -83,6 +83,8 @@ private:
Container *name_container;
Container *path_container;
Container *install_path_container;
+ Container *rasterizer_container;
+ Ref<ButtonGroup> rasterizer_button_group;
Label *msg;
LineEdit *project_path;
LineEdit *project_name;
@@ -471,6 +473,13 @@ private:
if (mode == MODE_NEW) {
ProjectSettings::CustomMap initial_settings;
+ if (rasterizer_button_group->get_pressed_button()->get_meta("driver_name") == "GLES3") {
+ initial_settings["rendering/quality/driver/driver_name"] = "GLES3";
+ } else {
+ initial_settings["rendering/quality/driver/driver_name"] = "GLES2";
+ initial_settings["rendering/vram_compression/import_etc2"] = false;
+ initial_settings["rendering/vram_compression/import_etc"] = true;
+ }
initial_settings["application/config/name"] = project_name->get_text();
initial_settings["application/config/icon"] = "res://icon.png";
initial_settings["rendering/environment/default_environment"] = "res://default_env.tres";
@@ -687,6 +696,7 @@ public:
msg->hide();
install_path_container->hide();
install_status_rect->hide();
+ rasterizer_container->hide();
get_ok()->set_disabled(false);
ProjectSettings *current = memnew(ProjectSettings);
@@ -738,6 +748,7 @@ public:
get_ok()->set_text(TTR("Import & Edit"));
name_container->hide();
install_path_container->hide();
+ rasterizer_container->hide();
project_path->grab_focus();
} else if (mode == MODE_NEW) {
@@ -746,6 +757,7 @@ public:
get_ok()->set_text(TTR("Create & Edit"));
name_container->show();
install_path_container->hide();
+ rasterizer_container->show();
project_name->call_deferred("grab_focus");
project_name->call_deferred("select_all");
@@ -755,13 +767,14 @@ public:
get_ok()->set_text(TTR("Install & Edit"));
name_container->hide();
install_path_container->hide();
+ rasterizer_container->hide();
project_path->grab_focus();
}
_test_path();
}
- popup_centered(Size2(500, 0) * EDSCALE);
+ popup_centered_minsize(Size2(500, 0) * EDSCALE);
}
ProjectDialog() {
@@ -840,6 +853,48 @@ public:
msg->set_align(Label::ALIGN_CENTER);
vb->add_child(msg);
+ // rasterizer selection
+ rasterizer_container = memnew(VBoxContainer);
+ vb->add_child(rasterizer_container);
+ l = memnew(Label);
+ l->set_text(TTR("Renderer:"));
+ rasterizer_container->add_child(l);
+ Container *rshb = memnew(HBoxContainer);
+ rasterizer_container->add_child(rshb);
+ rasterizer_button_group.instance();
+
+ Container *rvb = memnew(VBoxContainer);
+ rvb->set_h_size_flags(SIZE_EXPAND_FILL);
+ rshb->add_child(rvb);
+ Button *rs_button = memnew(CheckBox);
+ rs_button->set_button_group(rasterizer_button_group);
+ rs_button->set_text(TTR("OpenGL ES 3.0"));
+ rs_button->set_meta("driver_name", "GLES3");
+ rs_button->set_pressed(true);
+ rvb->add_child(rs_button);
+ l = memnew(Label);
+ l->set_text(TTR("Higher visual quality\nAll features available\nIncompatible with older hardware\nNot recommended for web games"));
+ rvb->add_child(l);
+
+ rshb->add_child(memnew(VSeparator));
+
+ rvb = memnew(VBoxContainer);
+ rvb->set_h_size_flags(SIZE_EXPAND_FILL);
+ rshb->add_child(rvb);
+ rs_button = memnew(CheckBox);
+ rs_button->set_button_group(rasterizer_button_group);
+ rs_button->set_text(TTR("OpenGL ES 2.0"));
+ rs_button->set_meta("driver_name", "GLES2");
+ rvb->add_child(rs_button);
+ l = memnew(Label);
+ l->set_text(TTR("Lower visual quality\nSome features not available\nWorks on most hardware\nRecommended for web games"));
+ rvb->add_child(l);
+
+ l = memnew(Label);
+ l->set_text(TTR("Renderer can be changed later, but scenes may need to be adjusted."));
+ l->set_align(Label::ALIGN_CENTER);
+ rasterizer_container->add_child(l);
+
fdialog = memnew(FileDialog);
fdialog->set_access(FileDialog::ACCESS_FILESYSTEM);
fdialog_install = memnew(FileDialog);
diff --git a/editor/project_settings_editor.cpp b/editor/project_settings_editor.cpp
index dd31853e73..cc33550ac9 100644
--- a/editor/project_settings_editor.cpp
+++ b/editor/project_settings_editor.cpp
@@ -1606,7 +1606,8 @@ TabContainer *ProjectSettingsEditor::get_tabs() {
}
void ProjectSettingsEditor::_editor_restart() {
- EditorNode::get_singleton()->save_all_scenes_and_restart();
+ EditorNode::get_singleton()->save_all_scenes();
+ EditorNode::get_singleton()->restart_editor();
}
void ProjectSettingsEditor::_editor_restart_request() {
diff --git a/editor/scene_tree_editor.cpp b/editor/scene_tree_editor.cpp
index 7e4baa1533..6602d2974f 100644
--- a/editor/scene_tree_editor.cpp
+++ b/editor/scene_tree_editor.cpp
@@ -678,6 +678,11 @@ void SceneTreeEditor::_renamed() {
error->set_text(TTR("Invalid node name, the following characters are not allowed:") + "\n" + Node::invalid_character);
error->popup_centered_minsize();
+ if (new_name.empty()) {
+ which->set_text(0, n->get_name());
+ return;
+ }
+
which->set_text(0, new_name);
}
diff --git a/editor/script_editor_debugger.cpp b/editor/script_editor_debugger.cpp
index acc735d571..5f6459045a 100644
--- a/editor/script_editor_debugger.cpp
+++ b/editor/script_editor_debugger.cpp
@@ -898,6 +898,10 @@ void ScriptEditorDebugger::_parse_message(const String &p_msg, const Array &p_da
item.name = strings[2];
item.script = strings[0];
item.line = strings[1].to_int();
+ } else if (strings.size() == 4) { //Built-in scripts have an :: in their name
+ item.name = strings[3];
+ item.script = strings[0] + "::" + strings[1];
+ item.line = strings[2].to_int();
}
} else {
diff --git a/editor/settings_config_dialog.cpp b/editor/settings_config_dialog.cpp
index e4d5573a9a..ecd35cb930 100644
--- a/editor/settings_config_dialog.cpp
+++ b/editor/settings_config_dialog.cpp
@@ -375,7 +375,8 @@ void EditorSettingsDialog::_focus_current_search_box() {
}
void EditorSettingsDialog::_editor_restart() {
- EditorNode::get_singleton()->save_all_scenes_and_restart();
+ EditorNode::get_singleton()->save_all_scenes();
+ EditorNode::get_singleton()->restart_editor();
}
void EditorSettingsDialog::_editor_restart_request() {
diff --git a/editor/spatial_editor_gizmos.cpp b/editor/spatial_editor_gizmos.cpp
index 63dd21f6f0..4f1928d20c 100644
--- a/editor/spatial_editor_gizmos.cpp
+++ b/editor/spatial_editor_gizmos.cpp
@@ -99,26 +99,63 @@ void EditorSpatialGizmo::clear() {
void EditorSpatialGizmo::redraw() {
+ if (get_script_instance() && get_script_instance()->has_method("redraw")) {
+ get_script_instance()->call("redraw");
+ return;
+ }
+
ERR_FAIL_COND(!gizmo_plugin);
gizmo_plugin->redraw(this);
}
String EditorSpatialGizmo::get_handle_name(int p_idx) const {
+
+ if (get_script_instance() && get_script_instance()->has_method("get_handle_name")) {
+ return get_script_instance()->call("get_handle_name", p_idx);
+ }
+
ERR_FAIL_COND_V(!gizmo_plugin, "");
return gizmo_plugin->get_handle_name(this, p_idx);
}
+bool EditorSpatialGizmo::is_handle_highlighted(int p_idx) const {
+
+ if (get_script_instance() && get_script_instance()->has_method("is_handle_highlighted")) {
+ return get_script_instance()->call("is_handle_highlighted", p_idx);
+ }
+
+ ERR_FAIL_COND_V(!gizmo_plugin, false);
+ return gizmo_plugin->is_handle_highlighted(this, p_idx);
+}
+
Variant EditorSpatialGizmo::get_handle_value(int p_idx) {
+
+ if (get_script_instance() && get_script_instance()->has_method("get_handle_value")) {
+ return get_script_instance()->call("get_handle_value", p_idx);
+ }
+
ERR_FAIL_COND_V(!gizmo_plugin, Variant());
return gizmo_plugin->get_handle_value(this, p_idx);
}
void EditorSpatialGizmo::set_handle(int p_idx, Camera *p_camera, const Point2 &p_point) {
+
+ if (get_script_instance() && get_script_instance()->has_method("set_handle")) {
+ get_script_instance()->call("set_handle", p_idx, p_camera, p_point);
+ return;
+ }
+
ERR_FAIL_COND(!gizmo_plugin);
return gizmo_plugin->set_handle(this, p_idx, p_camera, p_point);
}
void EditorSpatialGizmo::commit_handle(int p_idx, const Variant &p_restore, bool p_cancel) {
+
+ if (get_script_instance() && get_script_instance()->has_method("commit_handle")) {
+ get_script_instance()->call("commit_handle", p_idx, p_restore, p_cancel);
+ return;
+ }
+
ERR_FAIL_COND(!gizmo_plugin);
return gizmo_plugin->commit_handle(this, p_idx, p_restore, p_cancel);
}
@@ -298,7 +335,7 @@ void EditorSpatialGizmo::add_handles(const Vector<Vector3> &p_handles, const Ref
for (int i = 0; i < p_handles.size(); i++) {
Color col(1, 1, 1, 1);
- if (gizmo_plugin->is_gizmo_handle_highlighted(this, i))
+ if (is_handle_highlighted(i))
col = Color(0, 0, 1, 0.9);
if (SpatialEditor::get_singleton()->get_over_gizmo_handle() != i)
@@ -695,11 +732,14 @@ void EditorSpatialGizmo::_bind_methods() {
ClassDB::bind_method(D_METHOD("add_unscaled_billboard", "material", "default_scale"), &EditorSpatialGizmo::add_unscaled_billboard, DEFVAL(1));
ClassDB::bind_method(D_METHOD("add_handles", "handles", "material", "billboard", "secondary"), &EditorSpatialGizmo::add_handles, DEFVAL(false), DEFVAL(false));
ClassDB::bind_method(D_METHOD("set_spatial_node", "node"), &EditorSpatialGizmo::_set_spatial_node);
+ ClassDB::bind_method(D_METHOD("get_spatial_node"), &EditorSpatialGizmo::get_spatial_node);
+ ClassDB::bind_method(D_METHOD("get_plugin"), &EditorSpatialGizmo::get_plugin);
ClassDB::bind_method(D_METHOD("clear"), &EditorSpatialGizmo::clear);
ClassDB::bind_method(D_METHOD("set_hidden", "hidden"), &EditorSpatialGizmo::set_hidden);
BIND_VMETHOD(MethodInfo("redraw"));
BIND_VMETHOD(MethodInfo(Variant::STRING, "get_handle_name", PropertyInfo(Variant::INT, "index")));
+ BIND_VMETHOD(MethodInfo(Variant::BOOL, "is_handle_highlighted", PropertyInfo(Variant::INT, "index")));
MethodInfo hvget(Variant::NIL, "get_handle_value", PropertyInfo(Variant::INT, "index"));
hvget.return_val.usage |= PROPERTY_USAGE_NIL_IS_VARIANT;
@@ -2122,7 +2162,7 @@ void SoftBodySpatialGizmoPlugin::commit_handle(EditorSpatialGizmo *p_gizmo, int
soft_body->pin_point_toggle(p_idx);
}
-bool SoftBodySpatialGizmoPlugin::is_gizmo_handle_highlighted(const EditorSpatialGizmo *p_gizmo, int idx) const {
+bool SoftBodySpatialGizmoPlugin::is_handle_highlighted(const EditorSpatialGizmo *p_gizmo, int idx) const {
SoftBody *soft_body = Object::cast_to<SoftBody>(p_gizmo->get_spatial_node());
return soft_body->is_point_pinned(idx);
}
diff --git a/editor/spatial_editor_gizmos.h b/editor/spatial_editor_gizmos.h
index 40e137cded..0d89fb0f03 100644
--- a/editor/spatial_editor_gizmos.h
+++ b/editor/spatial_editor_gizmos.h
@@ -214,7 +214,7 @@ public:
String get_handle_name(const EditorSpatialGizmo *p_gizmo, int p_idx) const;
Variant get_handle_value(EditorSpatialGizmo *p_gizmo, int p_idx) const;
void commit_handle(EditorSpatialGizmo *p_gizmo, int p_idx, const Variant &p_restore, bool p_cancel);
- bool is_gizmo_handle_highlighted(const EditorSpatialGizmo *p_gizmo, int idx) const;
+ bool is_handle_highlighted(const EditorSpatialGizmo *p_gizmo, int idx) const;
SoftBodySpatialGizmoPlugin();
};
diff --git a/editor/translations/af.po b/editor/translations/af.po
index fc3fc6617e..58d83b6c78 100644
--- a/editor/translations/af.po
+++ b/editor/translations/af.po
@@ -3303,6 +3303,19 @@ msgstr ""
msgid "Reimport"
msgstr ""
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Changing the type of an imported file requires editor restart."
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr ""
@@ -7126,6 +7139,38 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -7825,6 +7870,10 @@ msgid "Duplicate Node(s)"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Node must belong to the edited scene to become root."
msgstr ""
diff --git a/editor/translations/ar.po b/editor/translations/ar.po
index 036f0408eb..83a9c0b676 100644
--- a/editor/translations/ar.po
+++ b/editor/translations/ar.po
@@ -3380,6 +3380,19 @@ msgstr "إعداد Ù…ÙØ³Ø¨Ù‚..."
msgid "Reimport"
msgstr "إعادة إستيراد"
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Changing the type of an imported file requires editor restart."
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr "ÙØ´Ù„ تحميل المورد."
@@ -7287,6 +7300,38 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -7989,6 +8034,10 @@ msgid "Duplicate Node(s)"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Node must belong to the edited scene to become root."
msgstr ""
diff --git a/editor/translations/bg.po b/editor/translations/bg.po
index 8a6757d07c..02907898dd 100644
--- a/editor/translations/bg.po
+++ b/editor/translations/bg.po
@@ -3303,6 +3303,19 @@ msgstr ""
msgid "Reimport"
msgstr "Повторно внаÑÑне"
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Changing the type of an imported file requires editor restart."
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
#, fuzzy
msgid "Failed to load resource."
@@ -7174,6 +7187,38 @@ msgid "Browse"
msgstr "Разглеждане"
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -7881,6 +7926,10 @@ msgid "Duplicate Node(s)"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Node must belong to the edited scene to become root."
msgstr ""
diff --git a/editor/translations/bn.po b/editor/translations/bn.po
index d5d49bc214..fb4979b319 100644
--- a/editor/translations/bn.po
+++ b/editor/translations/bn.po
@@ -3522,6 +3522,19 @@ msgstr "পà§à¦°à¦¿à¦¸à§‡à¦Ÿ..."
msgid "Reimport"
msgstr "পà§à¦¨-ইমà§à¦ªà§‹à¦°à§à¦Ÿ"
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Changing the type of an imported file requires editor restart."
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr "রিসোরà§à¦¸ লোড বà§à¦¯à¦°à§à¦¥ হয়েছে।"
@@ -7586,6 +7599,38 @@ msgid "Browse"
msgstr "বà§à¦°à¦¾à¦‰à¦¸"
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr "নামহীন পà§à¦°à¦•লà§à¦ª"
@@ -8328,6 +8373,10 @@ msgid "Duplicate Node(s)"
msgstr "নোড(সমূহ) পà§à¦°à¦¤à¦¿à¦²à¦¿à¦ªà¦¿ করà§à¦¨"
#: editor/scene_tree_dock.cpp
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Node must belong to the edited scene to become root."
msgstr ""
diff --git a/editor/translations/ca.po b/editor/translations/ca.po
index 22205a0720..156368509a 100644
--- a/editor/translations/ca.po
+++ b/editor/translations/ca.po
@@ -3352,6 +3352,20 @@ msgstr "Configuració..."
msgid "Reimport"
msgstr "ReImportar"
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+#, fuzzy
+msgid "Changing the type of an imported file requires editor restart."
+msgstr "Canviar el controlador de vídeo requereix reiniciar l'editor."
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr "No s'ha pogut carregar el recurs."
@@ -7290,6 +7304,38 @@ msgid "Browse"
msgstr "Navega"
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr "Projecte sense nom"
@@ -8019,6 +8065,10 @@ msgid "Duplicate Node(s)"
msgstr "Duplica els Nodes"
#: editor/scene_tree_dock.cpp
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Node must belong to the edited scene to become root."
msgstr ""
diff --git a/editor/translations/cs.po b/editor/translations/cs.po
index ce373b74a1..aa82d935de 100644
--- a/editor/translations/cs.po
+++ b/editor/translations/cs.po
@@ -3308,6 +3308,20 @@ msgstr "Předvolba..."
msgid "Reimport"
msgstr "Znovu importovat"
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+#, fuzzy
+msgid "Changing the type of an imported file requires editor restart."
+msgstr "ZmÄ›na grafického ovladaÄe vyžaduje restart editoru."
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr "Selhalo nahrání zdroje."
@@ -7146,6 +7160,38 @@ msgid "Browse"
msgstr "Procházet"
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr "Nepojmenovaný projekt"
@@ -7858,6 +7904,10 @@ msgid "Duplicate Node(s)"
msgstr "Duplikovat uzel/uzly"
#: editor/scene_tree_dock.cpp
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Node must belong to the edited scene to become root."
msgstr ""
diff --git a/editor/translations/da.po b/editor/translations/da.po
index 323cf0ba75..6c6f3152db 100644
--- a/editor/translations/da.po
+++ b/editor/translations/da.po
@@ -3338,6 +3338,19 @@ msgstr "Forudindstillet..."
msgid "Reimport"
msgstr "Genimporter"
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Changing the type of an imported file requires editor restart."
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr "Fejler med at indlæse ressource."
@@ -7224,6 +7237,38 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -7933,6 +7978,10 @@ msgid "Duplicate Node(s)"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Node must belong to the edited scene to become root."
msgstr ""
diff --git a/editor/translations/de.po b/editor/translations/de.po
index 80f14e7d0b..38f480d548 100644
--- a/editor/translations/de.po
+++ b/editor/translations/de.po
@@ -40,7 +40,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2019-01-16 20:20+0000\n"
+"PO-Revision-Date: 2019-01-26 21:22+0000\n"
"Last-Translator: So Wieso <sowieso@dukun.de>\n"
"Language-Team: German <https://hosted.weblate.org/projects/godot-engine/"
"godot/de/>\n"
@@ -49,7 +49,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 3.4-dev\n"
+"X-Generator: Weblate 3.5-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -1324,12 +1324,8 @@ msgid "Storing File:"
msgstr "Speichere Datei:"
#: editor/editor_export.cpp
-#, fuzzy
msgid "No export template found at the expected path:"
-msgstr ""
-"Keine Exportvorlagen gefunden.\n"
-"Laden Sie Exportvorlagen ggf. von der offiziellen Webseite herunter und "
-"installieren Sie diese."
+msgstr "Keine Exportvorlagen am erwarteten Pfad gefunden:"
#: editor/editor_export.cpp
msgid "Packing"
@@ -1338,16 +1334,14 @@ msgstr "Packe"
#: editor/editor_export.cpp platform/android/export/export.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#, fuzzy
msgid "Custom debug template not found."
-msgstr "Selbst konfiguriertes Debug-Paket nicht gefunden."
+msgstr "Selbst konfigurierte Debug-Exportvorlage nicht gefunden."
#: editor/editor_export.cpp platform/android/export/export.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#, fuzzy
msgid "Custom release template not found."
-msgstr "Selbst konfiguriertes Release-Paket nicht gefunden."
+msgstr "Selbst konfigurierte Release-Exportvorlage nicht gefunden."
#: editor/editor_export.cpp platform/javascript/export/export.cpp
msgid "Template file not found:"
@@ -3372,6 +3366,20 @@ msgstr "Voreinstellungen..."
msgid "Reimport"
msgstr "Neuimport"
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+#, fuzzy
+msgid "Changing the type of an imported file requires editor restart."
+msgstr "Das Ändern des Video-Treibers erfordert einen Neustart des Editors."
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr "Laden der Ressource gescheitert."
@@ -7183,6 +7191,38 @@ msgid "Browse"
msgstr "Durchstöbern"
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr "Unbenanntes Projekt"
@@ -7911,12 +7951,16 @@ msgid "Duplicate Node(s)"
msgstr "Dupliziere Node(s)"
#: editor/scene_tree_dock.cpp
-msgid "Node must belong to the edited scene to become root."
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Node must belong to the edited scene to become root."
+msgstr "Node muss zur bearbeiteten Szene gehören um ihre Wurzel zu werden."
+
+#: editor/scene_tree_dock.cpp
msgid "Instantiated scenes can't become root"
-msgstr ""
+msgstr "Instantiierte Szenen können keine Wurzel werden"
#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)?"
@@ -9136,87 +9180,91 @@ msgstr "%s setzen"
#: platform/android/export/export.cpp
msgid "Package name is missing."
-msgstr ""
+msgstr "Paketname fehlt."
#: platform/android/export/export.cpp
msgid "Package segments must be of non-zero length."
-msgstr ""
+msgstr "Paketsegmente dürfen keine Länge gleich Null haben."
#: platform/android/export/export.cpp
msgid "The character '%s' is not allowed in Android application package names."
-msgstr ""
+msgstr "Das Zeichen ‚%s‘ ist in Android-Anwendungs-Paketnamen nicht gestattet."
#: platform/android/export/export.cpp
msgid "A digit cannot be the first character in a package segment."
-msgstr ""
+msgstr "Eine Ziffer kann nicht das erste Zeichen eines Paketsegments sein."
#: platform/android/export/export.cpp
msgid "The character '%s' cannot be the first character in a package segment."
msgstr ""
+"Das Zeichen ‚%s‘ kann nicht das erste Zeichen in einem Paketsegment sein."
#: platform/android/export/export.cpp
msgid "The package must have at least one '.' separator."
-msgstr ""
+msgstr "Das Paket muss mindestens einen Punkt-Unterteiler ‚.‘ haben."
#: platform/android/export/export.cpp
msgid "ADB executable not configured in the Editor Settings."
-msgstr ""
+msgstr "Das ADB-Programm wurde nicht in den Editoreinstellungen konfiguriert."
#: platform/android/export/export.cpp
msgid "OpenJDK jarsigner not configured in the Editor Settings."
-msgstr ""
+msgstr "OpenJDK-Jarsigner wurde nicht in den Editoreinstellungen konfiguriert."
#: platform/android/export/export.cpp
msgid "Debug keystore not configured in the Editor Settings nor in the preset."
msgstr ""
+"Debug-Keystore wurde weder in den Editoreinstellungen noch in der Vorlage "
+"konfiguriert."
#: platform/android/export/export.cpp
msgid "Invalid public key for APK expansion."
-msgstr ""
+msgstr "Ungültiger öffentlicher Schlüssel für APK-Erweiterung."
#: platform/android/export/export.cpp
-#, fuzzy
msgid "Invalid package name:"
-msgstr "Ungültiger Klassenname"
+msgstr "Ungültiger Paketname:"
#: platform/iphone/export/export.cpp
msgid "Identifier is missing."
-msgstr ""
+msgstr "Bezeichner fehlt."
#: platform/iphone/export/export.cpp
msgid "Identifier segments must be of non-zero length."
-msgstr ""
+msgstr "Bezeichnersegmente dürfen keine Länge gleich Null haben."
#: platform/iphone/export/export.cpp
-#, fuzzy
msgid "The character '%s' is not allowed in Identifier."
-msgstr "Name ist kein gültiger Bezeichner:"
+msgstr "Das Zeichen ‚%s‘ ist in Bezeichnern nicht gestattet."
#: platform/iphone/export/export.cpp
msgid "A digit cannot be the first character in a Identifier segment."
msgstr ""
+"Eine Ziffer kann nicht das erste Zeichen eines Bezeichnersegments sein."
#: platform/iphone/export/export.cpp
msgid ""
"The character '%s' cannot be the first character in a Identifier segment."
msgstr ""
+"Das Zeichen ‚%s‘ kann nicht das erste Zeichen in einem Bezeichnersegment "
+"sein."
#: platform/iphone/export/export.cpp
msgid "The Identifier must have at least one '.' separator."
-msgstr ""
+msgstr "Der Bezeichner muss mindestens einen Punkt-Unterteiler ‚.‘ haben."
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
+"App-Store-Team-ID nicht festgelegt – Projekt kann nicht konfiguriert werden."
#: platform/iphone/export/export.cpp
-#, fuzzy
msgid "Invalid Identifier:"
-msgstr "Name ist kein gültiger Bezeichner:"
+msgstr "Ungültiger Bezeichner:"
#: platform/iphone/export/export.cpp
msgid "Required icon is not specified in the preset."
-msgstr ""
+msgstr "Benötigtes Icon wurde nicht in der Vorlage festgelegt."
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
@@ -9251,9 +9299,8 @@ msgid "Using default boot splash image."
msgstr "Verwende Standard-Startbildschirm-Bilddatei."
#: platform/uwp/export/export.cpp
-#, fuzzy
msgid "Invalid package unique name."
-msgstr "Ungültiger einzigartiger Name."
+msgstr "Ungültiger paket-einzigartiger Name."
#: platform/uwp/export/export.cpp
msgid "Invalid product GUID."
@@ -9624,13 +9671,12 @@ msgstr ""
"gesetzt wird."
#: scene/3d/path.cpp
-#, fuzzy
msgid ""
"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent "
"Path's Curve resource."
msgstr ""
-"OrientedPathFollow erfordert die Aktivierung von \"Up Vector\" in der Curve-"
-"Ressource des übergeordneten Pfades."
+"PathFollow ROTATION_ORIENTED erfordert die Aktivierung von „Up Vector“ in "
+"der Curve-Ressource des übergeordneten Pfades."
#: scene/3d/physics_body.cpp
msgid ""
diff --git a/editor/translations/de_CH.po b/editor/translations/de_CH.po
index 7d1592d041..1c7fce5965 100644
--- a/editor/translations/de_CH.po
+++ b/editor/translations/de_CH.po
@@ -3292,6 +3292,19 @@ msgstr ""
msgid "Reimport"
msgstr ""
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Changing the type of an imported file requires editor restart."
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr ""
@@ -7176,6 +7189,38 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -7884,6 +7929,10 @@ msgid "Duplicate Node(s)"
msgstr "Node(s) duplizieren"
#: editor/scene_tree_dock.cpp
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Node must belong to the edited scene to become root."
msgstr ""
diff --git a/editor/translations/editor.pot b/editor/translations/editor.pot
index 25cf0cdccc..0b271f2739 100644
--- a/editor/translations/editor.pot
+++ b/editor/translations/editor.pot
@@ -3187,6 +3187,19 @@ msgstr ""
msgid "Reimport"
msgstr ""
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Changing the type of an imported file requires editor restart."
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr ""
@@ -6918,6 +6931,38 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -7609,6 +7654,10 @@ msgid "Duplicate Node(s)"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Node must belong to the edited scene to become root."
msgstr ""
diff --git a/editor/translations/el.po b/editor/translations/el.po
index d256798554..28fc945310 100644
--- a/editor/translations/el.po
+++ b/editor/translations/el.po
@@ -3370,6 +3370,20 @@ msgstr "ΔιαμόÏφωση..."
msgid "Reimport"
msgstr "Επανεισαγωγή"
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+#, fuzzy
+msgid "Changing the type of an imported file requires editor restart."
+msgstr "Η αλλαγή του Î¿Î´Î·Î³Î¿Ï Î²Î¯Î½Ï„ÎµÎ¿ απαιτεί επανεκκίνηση του επεξεÏγαστή."
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr "Απέτυχε η φόÏτωση πόÏου."
@@ -7297,6 +7311,38 @@ msgid "Browse"
msgstr "ΠεÏιήγηση"
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr "Ανώνυμο έÏγο"
@@ -8030,6 +8076,10 @@ msgid "Duplicate Node(s)"
msgstr "Διπλασιασμός κόμβων"
#: editor/scene_tree_dock.cpp
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Node must belong to the edited scene to become root."
msgstr ""
diff --git a/editor/translations/es.po b/editor/translations/es.po
index 841ead1bab..b00045e09c 100644
--- a/editor/translations/es.po
+++ b/editor/translations/es.po
@@ -10,7 +10,7 @@
# Carlos López <genetita@gmail.com>, 2016.
# David Arranz <davarrcal@hotmail.com>, 2018.
# David Couto <davidcouto@gmail.com>, 2017.
-# Dharkael <izhe@hotmail.es>, 2017.
+# Dharkael <izhe@hotmail.es>, 2017, 2019.
# Diego López <diegodario21@gmail.com>, 2017.
# eon-s <emanuel.segretin@gmail.com>, 2018.
# Gustavo Leon <gleondiaz@gmail.com>, 2017-2018.
@@ -42,8 +42,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2019-01-16 20:20+0000\n"
-"Last-Translator: juan david julio <illus.kun@gmail.com>\n"
+"PO-Revision-Date: 2019-01-26 21:22+0000\n"
+"Last-Translator: Dharkael <izhe@hotmail.es>\n"
"Language-Team: Spanish <https://hosted.weblate.org/projects/godot-engine/"
"godot/es/>\n"
"Language: es\n"
@@ -51,7 +51,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 3.4-dev\n"
+"X-Generator: Weblate 3.5-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -3373,6 +3373,20 @@ msgstr "Ajuste..."
msgid "Reimport"
msgstr "Reimportar"
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+#, fuzzy
+msgid "Changing the type of an imported file requires editor restart."
+msgstr "Cambiar el driver de video requiere reiniciar el editor."
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr "Error al cargar el recurso."
@@ -7184,6 +7198,38 @@ msgid "Browse"
msgstr "Examinar"
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr "Proyecto sin nombre"
@@ -7911,12 +7957,16 @@ msgid "Duplicate Node(s)"
msgstr "Duplicar nodo(s)"
#: editor/scene_tree_dock.cpp
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Node must belong to the edited scene to become root."
msgstr ""
#: editor/scene_tree_dock.cpp
msgid "Instantiated scenes can't become root"
-msgstr ""
+msgstr "Las escenas instanciadas no pueden ser raíz"
#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)?"
@@ -9146,6 +9196,8 @@ msgstr ""
#: platform/android/export/export.cpp
msgid "The character '%s' is not allowed in Android application package names."
msgstr ""
+"El carácter '%s' no está permitido en nombres de paquete de aplicación "
+"Android."
#: platform/android/export/export.cpp
msgid "A digit cannot be the first character in a package segment."
@@ -9157,15 +9209,15 @@ msgstr ""
#: platform/android/export/export.cpp
msgid "The package must have at least one '.' separator."
-msgstr ""
+msgstr "El paquete debe tener al menos un '.' como separador."
#: platform/android/export/export.cpp
msgid "ADB executable not configured in the Editor Settings."
-msgstr ""
+msgstr "Ejecutable ADB no configurado en Ajustes del Editor."
#: platform/android/export/export.cpp
msgid "OpenJDK jarsigner not configured in the Editor Settings."
-msgstr ""
+msgstr "OpenJDK jarsigner no configurado en Ajustes del Editor."
#: platform/android/export/export.cpp
msgid "Debug keystore not configured in the Editor Settings nor in the preset."
@@ -9173,7 +9225,7 @@ msgstr ""
#: platform/android/export/export.cpp
msgid "Invalid public key for APK expansion."
-msgstr ""
+msgstr "Clave pública inválida para la expansión de APK."
#: platform/android/export/export.cpp
#, fuzzy
@@ -9182,7 +9234,7 @@ msgstr "El nombre de clase no es correcto"
#: platform/iphone/export/export.cpp
msgid "Identifier is missing."
-msgstr ""
+msgstr "Identificador no encontrado."
#: platform/iphone/export/export.cpp
msgid "Identifier segments must be of non-zero length."
@@ -9204,11 +9256,12 @@ msgstr ""
#: platform/iphone/export/export.cpp
msgid "The Identifier must have at least one '.' separator."
-msgstr ""
+msgstr "El Identificador debe tener al menos un '.' como separador."
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
+"App Store Team ID no especificado - no se puede configurar el proyecto."
#: platform/iphone/export/export.cpp
#, fuzzy
diff --git a/editor/translations/es_AR.po b/editor/translations/es_AR.po
index b413af0c4d..86f1e6a72d 100644
--- a/editor/translations/es_AR.po
+++ b/editor/translations/es_AR.po
@@ -13,7 +13,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2019-01-16 20:20+0000\n"
+"PO-Revision-Date: 2019-01-26 21:22+0000\n"
"Last-Translator: Lisandro Lorea <lisandrolorea@gmail.com>\n"
"Language-Team: Spanish (Argentina) <https://hosted.weblate.org/projects/"
"godot-engine/godot/es_AR/>\n"
@@ -22,7 +22,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 3.4-dev\n"
+"X-Generator: Weblate 3.5-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -1292,11 +1292,8 @@ msgid "Storing File:"
msgstr "Almacenando Archivo:"
#: editor/editor_export.cpp
-#, fuzzy
msgid "No export template found at the expected path:"
-msgstr ""
-"No se encontraron plantillas de exportación.\n"
-"Descargá o instalá plantillas de exportación."
+msgstr "No se encontraron plantillas de exportación en la ruta esperada:"
#: editor/editor_export.cpp
msgid "Packing"
@@ -1305,16 +1302,14 @@ msgstr "Empaquetando"
#: editor/editor_export.cpp platform/android/export/export.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#, fuzzy
msgid "Custom debug template not found."
-msgstr "Paquete debug personalizado no encontrado."
+msgstr "Plantilla debug personalizada no encontrada."
#: editor/editor_export.cpp platform/android/export/export.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#, fuzzy
msgid "Custom release template not found."
-msgstr "Paquete release personalizado no encontrado."
+msgstr "Plantilla release personalizada no encontrada."
#: editor/editor_export.cpp platform/javascript/export/export.cpp
msgid "Template file not found:"
@@ -3337,6 +3332,20 @@ msgstr "Preseteo..."
msgid "Reimport"
msgstr "Reimportar"
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+#, fuzzy
+msgid "Changing the type of an imported file requires editor restart."
+msgstr "Cambiar el driver de video requiere reiniciar el editor."
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr "Fallo al cargar recurso."
@@ -7142,6 +7151,38 @@ msgid "Browse"
msgstr "Examinar"
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr "Proyecto Sin Nombre"
@@ -7869,12 +7910,16 @@ msgid "Duplicate Node(s)"
msgstr "Duplicar Nodo(s)"
#: editor/scene_tree_dock.cpp
-msgid "Node must belong to the edited scene to become root."
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Node must belong to the edited scene to become root."
+msgstr "El nodo debe pertenecer a la escena editada para convertirse en raíz."
+
+#: editor/scene_tree_dock.cpp
msgid "Instantiated scenes can't become root"
-msgstr ""
+msgstr "Las escenas instanciadas no pueden convertirse en raíz"
#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)?"
@@ -9094,87 +9139,92 @@ msgstr "Asignar %s"
#: platform/android/export/export.cpp
msgid "Package name is missing."
-msgstr ""
+msgstr "Nombre de paquete faltante."
#: platform/android/export/export.cpp
msgid "Package segments must be of non-zero length."
-msgstr ""
+msgstr "Los segmentos del paquete deben ser de largo no nulo."
#: platform/android/export/export.cpp
msgid "The character '%s' is not allowed in Android application package names."
msgstr ""
+"El caracter '%s' no está permitido en nombres de paquete de aplicación "
+"Android."
#: platform/android/export/export.cpp
msgid "A digit cannot be the first character in a package segment."
-msgstr ""
+msgstr "Un dígito no puede ser el primer caracter en un segmento de paquete."
#: platform/android/export/export.cpp
msgid "The character '%s' cannot be the first character in a package segment."
msgstr ""
+"El caracter '%s' no puede ser el primer caracter en un segmento de paquete."
#: platform/android/export/export.cpp
msgid "The package must have at least one '.' separator."
-msgstr ""
+msgstr "El paquete debe tener al menos un '.' como separador."
#: platform/android/export/export.cpp
msgid "ADB executable not configured in the Editor Settings."
-msgstr ""
+msgstr "Ejecutable ADB no configurado en Configuración del Editor."
#: platform/android/export/export.cpp
msgid "OpenJDK jarsigner not configured in the Editor Settings."
-msgstr ""
+msgstr "OpenJDK jarsigner no configurado en Configuración del Editor."
#: platform/android/export/export.cpp
msgid "Debug keystore not configured in the Editor Settings nor in the preset."
msgstr ""
+"Keystore debug no configurada en Configuración del Editor ni en el preset."
#: platform/android/export/export.cpp
msgid "Invalid public key for APK expansion."
-msgstr ""
+msgstr "Clave pública inválida para la expansión de APK."
#: platform/android/export/export.cpp
-#, fuzzy
msgid "Invalid package name:"
-msgstr "Nombre de clase inválido"
+msgstr "Nombre de paquete inválido:"
#: platform/iphone/export/export.cpp
msgid "Identifier is missing."
-msgstr ""
+msgstr "Identificador no encontrado."
#: platform/iphone/export/export.cpp
msgid "Identifier segments must be of non-zero length."
-msgstr ""
+msgstr "Los segmentos de un identificador deben ser de largo no nulo."
#: platform/iphone/export/export.cpp
-#, fuzzy
msgid "The character '%s' is not allowed in Identifier."
-msgstr "El nombre no es un identificador válido:"
+msgstr "El caracter '%s' no esta permitido como identificador."
#: platform/iphone/export/export.cpp
msgid "A digit cannot be the first character in a Identifier segment."
msgstr ""
+"Un dígito no puede ser el primer caracter en un segmento Identificador."
#: platform/iphone/export/export.cpp
msgid ""
"The character '%s' cannot be the first character in a Identifier segment."
msgstr ""
+"El caracter '%s' no puede ser el primer caracter en un segmento "
+"Identificador."
#: platform/iphone/export/export.cpp
msgid "The Identifier must have at least one '.' separator."
-msgstr ""
+msgstr "El Identificador debe tener al menos un '.' como separador."
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
+"App Store Team ID no especificado - no se puede configurar el proyecto."
#: platform/iphone/export/export.cpp
-#, fuzzy
msgid "Invalid Identifier:"
-msgstr "El nombre no es un identificador válido:"
+msgstr "Identificador inválido:"
#: platform/iphone/export/export.cpp
msgid "Required icon is not specified in the preset."
-msgstr ""
+msgstr "El icono requerido no esta especificado en el preset."
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
@@ -9209,9 +9259,8 @@ msgid "Using default boot splash image."
msgstr "Usando imagen boot splash por defecto."
#: platform/uwp/export/export.cpp
-#, fuzzy
msgid "Invalid package unique name."
-msgstr "Nombre único inválido."
+msgstr "Nombre único de paquete inválido."
#: platform/uwp/export/export.cpp
msgid "Invalid product GUID."
@@ -9579,13 +9628,12 @@ msgstr ""
"PathFollow solo funciona cuando está asignado como hijo de un nodo Path."
#: scene/3d/path.cpp
-#, fuzzy
msgid ""
"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent "
"Path's Curve resource."
msgstr ""
-"OrientedPathFollow requiere que \"Up Vector\" esté activo en el recurso "
-"Curve de su Path padre."
+"PathFollow ROTATION_ORIENTED requiere que \"Up Vector\" esté activo en el "
+"recurso Curve de su Path padre."
#: scene/3d/physics_body.cpp
msgid ""
diff --git a/editor/translations/et.po b/editor/translations/et.po
index 7cae825420..948c2861b7 100644
--- a/editor/translations/et.po
+++ b/editor/translations/et.po
@@ -3187,6 +3187,19 @@ msgstr ""
msgid "Reimport"
msgstr ""
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Changing the type of an imported file requires editor restart."
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr ""
@@ -6918,6 +6931,38 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -7609,6 +7654,10 @@ msgid "Duplicate Node(s)"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Node must belong to the edited scene to become root."
msgstr ""
diff --git a/editor/translations/fa.po b/editor/translations/fa.po
index dc9f765b9e..0eec8c6d9d 100644
--- a/editor/translations/fa.po
+++ b/editor/translations/fa.po
@@ -3320,6 +3320,19 @@ msgstr ""
msgid "Reimport"
msgstr "وارد کردن دوباره"
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Changing the type of an imported file requires editor restart."
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr ""
@@ -7227,6 +7240,38 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr "پروژه بی نام"
@@ -7941,6 +7986,10 @@ msgid "Duplicate Node(s)"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Node must belong to the edited scene to become root."
msgstr ""
diff --git a/editor/translations/fi.po b/editor/translations/fi.po
index 5f81a9e41c..094baf8c80 100644
--- a/editor/translations/fi.po
+++ b/editor/translations/fi.po
@@ -13,7 +13,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2019-01-16 20:20+0000\n"
+"PO-Revision-Date: 2019-01-26 21:22+0000\n"
"Last-Translator: Tapani Niemi <tapani.niemi@kapsi.fi>\n"
"Language-Team: Finnish <https://hosted.weblate.org/projects/godot-engine/"
"godot/fi/>\n"
@@ -22,7 +22,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 3.4-dev\n"
+"X-Generator: Weblate 3.5-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -1288,7 +1288,7 @@ msgstr "Varastoidaan tiedostoa:"
#: editor/editor_export.cpp
msgid "No export template found at the expected path:"
-msgstr ""
+msgstr "Vientimallia ei löytynyt odotetusta polusta:"
#: editor/editor_export.cpp
msgid "Packing"
@@ -1297,15 +1297,14 @@ msgstr "Pakataan"
#: editor/editor_export.cpp platform/android/export/export.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#, fuzzy
msgid "Custom debug template not found."
-msgstr "Mallitiedostoa ei löytynyt:"
+msgstr "Mukautettua debug-vientimallia ei löytynyt."
#: editor/editor_export.cpp platform/android/export/export.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom release template not found."
-msgstr ""
+msgstr "Mukautettua release-vientimallia ei löytynyt."
#: editor/editor_export.cpp platform/javascript/export/export.cpp
msgid "Template file not found:"
@@ -3309,6 +3308,20 @@ msgstr "Esiasetus..."
msgid "Reimport"
msgstr "Tuo uudelleen"
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+#, fuzzy
+msgid "Changing the type of an imported file requires editor restart."
+msgstr "Näyttöajurin vaihtaminen edellyttää editorin uudelleenkäynnistystä."
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr "Resurssin lataaminen epäonnistui."
@@ -7109,6 +7122,38 @@ msgid "Browse"
msgstr "Selaa"
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr "Nimetön projekti"
@@ -7829,12 +7874,18 @@ msgid "Duplicate Node(s)"
msgstr "Kahdenna solmu(t)"
#: editor/scene_tree_dock.cpp
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Node must belong to the edited scene to become root."
msgstr ""
+"Solmun täytyy kuulua muokattavana olevaan skeneen, jotta se voidaan asettaa "
+"juureksi."
#: editor/scene_tree_dock.cpp
msgid "Instantiated scenes can't become root"
-msgstr ""
+msgstr "Skenejen ilmentymiä ei voi asettaa juureksi"
#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)?"
@@ -9052,87 +9103,85 @@ msgstr "Aseta %s"
#: platform/android/export/export.cpp
msgid "Package name is missing."
-msgstr ""
+msgstr "Paketin nimi puuttuu."
#: platform/android/export/export.cpp
msgid "Package segments must be of non-zero length."
-msgstr ""
+msgstr "Paketin osioiden pituuksien täytyy olla nollasta poikkeavia."
#: platform/android/export/export.cpp
msgid "The character '%s' is not allowed in Android application package names."
-msgstr ""
+msgstr "Merkki '%s' ei ole sallittu Android-sovellusten pakettien nimissä."
#: platform/android/export/export.cpp
msgid "A digit cannot be the first character in a package segment."
-msgstr ""
+msgstr "Paketin osion ensimmäinen merkki ei voi olla numero."
#: platform/android/export/export.cpp
msgid "The character '%s' cannot be the first character in a package segment."
-msgstr ""
+msgstr "Merkki '%s' ei voi olla paketin osion ensimmäinen merkki."
#: platform/android/export/export.cpp
msgid "The package must have at least one '.' separator."
-msgstr ""
+msgstr "Paketilla on oltava ainakin yksi '.' erotinmerkki."
#: platform/android/export/export.cpp
msgid "ADB executable not configured in the Editor Settings."
-msgstr ""
+msgstr "ADB käynnistystiedostoa ei ole määritetty editorin asetuksissa."
#: platform/android/export/export.cpp
msgid "OpenJDK jarsigner not configured in the Editor Settings."
-msgstr ""
+msgstr "OpenJDK jarsigner ei ole määritettynä editorin asetuksissa."
#: platform/android/export/export.cpp
msgid "Debug keystore not configured in the Editor Settings nor in the preset."
msgstr ""
+"Debug keystore ei ole määritettynä editorin asetuksissa eikä esiasetuksissa."
#: platform/android/export/export.cpp
msgid "Invalid public key for APK expansion."
-msgstr ""
+msgstr "Virheellinen julkinen avain APK-laajennosta varten."
#: platform/android/export/export.cpp
-#, fuzzy
msgid "Invalid package name:"
-msgstr "Virheellinen luokan nimi"
+msgstr "Virheellinen paketin nimi:"
#: platform/iphone/export/export.cpp
msgid "Identifier is missing."
-msgstr ""
+msgstr "Tunniste puuttuu."
#: platform/iphone/export/export.cpp
msgid "Identifier segments must be of non-zero length."
-msgstr ""
+msgstr "Tunnisteen osiot eivät voi olla nollan pituisia."
#: platform/iphone/export/export.cpp
-#, fuzzy
msgid "The character '%s' is not allowed in Identifier."
-msgstr "Nimi ei ole kelvollinen tunniste:"
+msgstr "Merkki '%s' ei ole sallittu Identifier osiossa."
#: platform/iphone/export/export.cpp
msgid "A digit cannot be the first character in a Identifier segment."
-msgstr ""
+msgstr "Identifier osion ensimmäinen merkki ei voi olla numero."
#: platform/iphone/export/export.cpp
msgid ""
"The character '%s' cannot be the first character in a Identifier segment."
-msgstr ""
+msgstr "Merkki '%s' ei voi olla Identifier osion ensimmäinen merkki."
#: platform/iphone/export/export.cpp
msgid "The Identifier must have at least one '.' separator."
-msgstr ""
+msgstr "Identifier osiossa täytyy olla vähintään yksi '.' erotinmerkki."
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
-msgstr ""
+msgstr "App Store Team ID ei ole määritetty - ei voida konfiguroida projektia."
#: platform/iphone/export/export.cpp
-#, fuzzy
msgid "Invalid Identifier:"
-msgstr "Nimi ei ole kelvollinen tunniste:"
+msgstr "Virheellinen Identifier osio:"
#: platform/iphone/export/export.cpp
msgid "Required icon is not specified in the preset."
-msgstr ""
+msgstr "Vaadittavaa ikonia ei ole määritetty esiasetuksissa."
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
@@ -9167,19 +9216,16 @@ msgid "Using default boot splash image."
msgstr "Käytetään oletuskäynnistyskuvaa."
#: platform/uwp/export/export.cpp
-#, fuzzy
msgid "Invalid package unique name."
-msgstr "Virheellinen ryhmän nimi."
+msgstr "Paketin yksilöllinen nimi on virheellinen."
#: platform/uwp/export/export.cpp
-#, fuzzy
msgid "Invalid product GUID."
-msgstr "Virheellinen projektin nimi."
+msgstr "Tuotteen GUID (yleisesti yksilöllinen tunniste) on virheellinen."
#: platform/uwp/export/export.cpp
-#, fuzzy
msgid "Invalid publisher GUID."
-msgstr "Virheellinen jako: "
+msgstr "Julkaisijan GUID (yleisesti yksilöllinen tunniste) on virheellinen."
#: platform/uwp/export/export.cpp
msgid "Invalid background color."
@@ -9187,31 +9233,33 @@ msgstr "Virheellinen taustaväri."
#: platform/uwp/export/export.cpp
msgid "Invalid Store Logo image dimensions (should be 50x50)."
-msgstr ""
+msgstr "Virheellinen Store Logo kuvan koko (pitäisi olla 50x50)."
#: platform/uwp/export/export.cpp
msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
-msgstr ""
+msgstr "Virheellinen neliömäisen 44x44 logon kuvakoko (pitäisi olla 44x44)."
#: platform/uwp/export/export.cpp
msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
-msgstr ""
+msgstr "Virheellinen neliömäisen 71x71 logon kuvakoko (pitäisi olla 71x71)."
#: platform/uwp/export/export.cpp
msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
msgstr ""
+"Virheellinen neliömäisen 150x150 logon kuvakoko (pitäisi olla 150x150)."
#: platform/uwp/export/export.cpp
msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
msgstr ""
+"Virheellinen neliömäisen 310x310 logon kuvakoko (pitäisi olla 310x310)."
#: platform/uwp/export/export.cpp
msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
-msgstr ""
+msgstr "Virheellinen leveän 310x150 logon kuvakoko (pitäisi olla 310x150)."
#: platform/uwp/export/export.cpp
msgid "Invalid splash screen image dimensions (should be 620x300)."
-msgstr ""
+msgstr "Virheellinen käynnistyskuvan kuvakoko (pitäisi olla 620x300)."
#: scene/2d/animated_sprite.cpp
msgid ""
@@ -9530,13 +9578,12 @@ msgid "PathFollow only works when set as a child of a Path node."
msgstr "PathFollow toimii ainoastaan ollessaan asetettuna Path solmun alle."
#: scene/3d/path.cpp
-#, fuzzy
msgid ""
"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent "
"Path's Curve resource."
msgstr ""
-"OrientedPathFollow edellyttää, että sen Path isäntäsolmun Curve resurssin "
-"\"Up Vector\" on asetettu päälle."
+"PathFollow ROTATION_ORIENTED edellyttää, että sen Path isäntäsolmun Curve "
+"resurssin \"Up Vector\" on asetettu päälle."
#: scene/3d/physics_body.cpp
msgid ""
diff --git a/editor/translations/fr.po b/editor/translations/fr.po
index 879c25cef9..3827c3f40b 100644
--- a/editor/translations/fr.po
+++ b/editor/translations/fr.po
@@ -50,14 +50,15 @@
# Florent Wijanto <f_wijanto@hotmail.com>, 2018.
# Olivier gareau <olivier.gareau@protonmail.com>, 2018.
# Rémi Verschelde <akien@godotengine.org>, 2018, 2019.
-# Rémi Bintein <reminus5@hotmail.fr>, 2018.
+# Rémi Bintein <reminus5@hotmail.fr>, 2018, 2019.
# Sylvain Corsini <sylvain.corsini@gmail.com>, 2018.
+# Caye Pierre <pierrecaye@laposte.net>, 2019.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2019-01-18 23:32+0000\n"
-"Last-Translator: Gilles Roudiere <gilles.roudiere@gmail.com>\n"
+"PO-Revision-Date: 2019-01-26 21:22+0000\n"
+"Last-Translator: Rémi Bintein <reminus5@hotmail.fr>\n"
"Language-Team: French <https://hosted.weblate.org/projects/godot-engine/"
"godot/fr/>\n"
"Language: fr\n"
@@ -65,7 +66,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Generator: Weblate 3.4-dev\n"
+"X-Generator: Weblate 3.5-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -1343,7 +1344,7 @@ msgstr "Stockage du fichier :"
#: editor/editor_export.cpp
msgid "No export template found at the expected path:"
-msgstr ""
+msgstr "Aucun modèle d'exportation n'a été trouvé au chemin prévu :"
#: editor/editor_export.cpp
msgid "Packing"
@@ -1352,15 +1353,14 @@ msgstr "Empaquetage"
#: editor/editor_export.cpp platform/android/export/export.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#, fuzzy
msgid "Custom debug template not found."
-msgstr "Fichier modèle introuvable :"
+msgstr "Modèle de débogage personnalisé introuvable."
#: editor/editor_export.cpp platform/android/export/export.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom release template not found."
-msgstr ""
+msgstr "Modèle de version personnalisée introuvable."
#: editor/editor_export.cpp platform/javascript/export/export.cpp
msgid "Template file not found:"
@@ -3394,6 +3394,20 @@ msgstr "Pré-réglage…"
msgid "Reimport"
msgstr "Ré-importer"
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+#, fuzzy
+msgid "Changing the type of an imported file requires editor restart."
+msgstr "Changer le pilote vidéo nécessite le redémarrage de l'éditeur."
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr "Impossible de charger la ressource."
@@ -7214,6 +7228,38 @@ msgid "Browse"
msgstr "Parcourir"
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr "Projet sans titre"
@@ -7941,12 +7987,16 @@ msgid "Duplicate Node(s)"
msgstr "Dupliquer le(s) nœud(s)"
#: editor/scene_tree_dock.cpp
-msgid "Node must belong to the edited scene to become root."
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Node must belong to the edited scene to become root."
+msgstr "Le nœud doit appartenir à la scène éditée pour devenir la racine."
+
+#: editor/scene_tree_dock.cpp
msgid "Instantiated scenes can't become root"
-msgstr ""
+msgstr "Les scènes instanciées ne peuvent pas devenir la racine"
#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)?"
@@ -9168,87 +9218,97 @@ msgstr "Définir %s"
#: platform/android/export/export.cpp
msgid "Package name is missing."
-msgstr ""
+msgstr "Nom du paquet manquant."
#: platform/android/export/export.cpp
msgid "Package segments must be of non-zero length."
-msgstr ""
+msgstr "Les segments du paquet doivent être de longueur non nulle."
#: platform/android/export/export.cpp
msgid "The character '%s' is not allowed in Android application package names."
msgstr ""
+"Le caractère '%s' n'est pas autorisé dans les noms de paquet d'applications "
+"Android."
#: platform/android/export/export.cpp
msgid "A digit cannot be the first character in a package segment."
msgstr ""
+"Un chiffre ne peut pas être le premier caractère d'un segment de paquet."
#: platform/android/export/export.cpp
msgid "The character '%s' cannot be the first character in a package segment."
msgstr ""
+"Le caractère \"%s\" ne peut pas être le premier caractère d'un segment de "
+"paquet."
#: platform/android/export/export.cpp
msgid "The package must have at least one '.' separator."
-msgstr ""
+msgstr "Le paquet doit comporter au moins un séparateur '.'."
#: platform/android/export/export.cpp
msgid "ADB executable not configured in the Editor Settings."
-msgstr ""
+msgstr "L'exécutable ADB n'est pas configuré dans les paramètres de l'éditeur."
#: platform/android/export/export.cpp
msgid "OpenJDK jarsigner not configured in the Editor Settings."
msgstr ""
+"OpenJDK jarsigner n'est pas configuré dans les paramètres de l'éditeur."
#: platform/android/export/export.cpp
+#, fuzzy
msgid "Debug keystore not configured in the Editor Settings nor in the preset."
msgstr ""
+"Debug keystore n'est pas configuré dans les paramètres de l'éditeur ni dans "
+"le préréglage."
#: platform/android/export/export.cpp
msgid "Invalid public key for APK expansion."
-msgstr ""
+msgstr "Clé publique invalide pour l'expansion APK."
#: platform/android/export/export.cpp
-#, fuzzy
msgid "Invalid package name:"
-msgstr "Nom de classe invalide"
+msgstr "Nom de paquet invalide :"
#: platform/iphone/export/export.cpp
msgid "Identifier is missing."
-msgstr ""
+msgstr "L'identifiant est manquant."
#: platform/iphone/export/export.cpp
msgid "Identifier segments must be of non-zero length."
msgstr ""
+"Les segments de l'identifiant doivent être d'une longueur différente de zéro."
#: platform/iphone/export/export.cpp
-#, fuzzy
msgid "The character '%s' is not allowed in Identifier."
-msgstr "Le nom n'est pas un identifiant valide :"
+msgstr "Le caractère'%s' n'est pas autorisé dans l'identifiant."
#: platform/iphone/export/export.cpp
msgid "A digit cannot be the first character in a Identifier segment."
msgstr ""
+"Un chiffre ne peut pas être le premier caractère d'un segment d'identifiant."
#: platform/iphone/export/export.cpp
msgid ""
"The character '%s' cannot be the first character in a Identifier segment."
msgstr ""
+"Le caractère'%s' ne peut pas être le premier caractère d'un segment "
+"d'identifiant."
#: platform/iphone/export/export.cpp
msgid "The Identifier must have at least one '.' separator."
-msgstr ""
+msgstr "L'identifiant doit avoir au moins un séparateur '.'."
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
-msgstr ""
+msgstr "App Store Team ID non spécifié - ne peut pas configurer le projet."
#: platform/iphone/export/export.cpp
-#, fuzzy
msgid "Invalid Identifier:"
-msgstr "Le nom n'est pas un identifiant valide :"
+msgstr "Identifiant invalide :"
#: platform/iphone/export/export.cpp
msgid "Required icon is not specified in the preset."
-msgstr ""
+msgstr "L'icône requise n'est pas spécifiée dans le préréglage."
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
@@ -9283,52 +9343,61 @@ msgid "Using default boot splash image."
msgstr "Impossible de lire l'image de démarrage."
#: platform/uwp/export/export.cpp
-#, fuzzy
msgid "Invalid package unique name."
-msgstr "Nom de groupe invalide."
+msgstr "Nom unique de paquet invalide."
#: platform/uwp/export/export.cpp
-#, fuzzy
msgid "Invalid product GUID."
-msgstr "Nom du projet invalide."
+msgstr "GUID produit invalide."
#: platform/uwp/export/export.cpp
-#, fuzzy
msgid "Invalid publisher GUID."
-msgstr "Fractionnement invalide : "
+msgstr "GUID éditeur invalide."
#: platform/uwp/export/export.cpp
-#, fuzzy
msgid "Invalid background color."
-msgstr "Nom de groupe invalide."
+msgstr "Couleur de fond invalide."
#: platform/uwp/export/export.cpp
msgid "Invalid Store Logo image dimensions (should be 50x50)."
msgstr ""
+"Les dimensions de l'image du logo du magasin ne sont pas valides (doit être "
+"50x50)."
#: platform/uwp/export/export.cpp
msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
msgstr ""
+"Les dimensions de l'image du logo carré 44x44 sont invalides (doivent être "
+"44x44)."
#: platform/uwp/export/export.cpp
msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
msgstr ""
+"Les dimensions de l'image du logo carré 71x71 sont invalides (doivent être "
+"71x71)."
#: platform/uwp/export/export.cpp
msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
msgstr ""
+"Les dimensions de l'image du logo carré 150x150 sont invalides (doivent être "
+"150x150)."
#: platform/uwp/export/export.cpp
msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
msgstr ""
+"Les dimensions de l'image du logo carré 310x310 sont invalides (doivent être "
+"310x310)."
#: platform/uwp/export/export.cpp
msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
msgstr ""
+"Les dimensions de l'image du logo large sont invalides (doivent être de "
+"310x150)."
#: platform/uwp/export/export.cpp
msgid "Invalid splash screen image dimensions (should be 620x300)."
msgstr ""
+"Les dimensions du splash screen sont invalides (doivent être de 620x300)."
#: scene/2d/animated_sprite.cpp
msgid ""
@@ -9654,13 +9723,12 @@ msgstr ""
"nœud de type Path."
#: scene/3d/path.cpp
-#, fuzzy
msgid ""
"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent "
"Path's Curve resource."
msgstr ""
-"OrientedPathFollow requiert l'activation de la propriété \"Up Vector\" de la "
-"ressource Curve de son Path parent."
+"PathFollow ROTATION_ORIENTED nécessite l'activation de \"Up Vector\" dans la "
+"ressource Path's Curve de son parent."
#: scene/3d/physics_body.cpp
msgid ""
diff --git a/editor/translations/he.po b/editor/translations/he.po
index 1a3c117420..09d368d4e3 100644
--- a/editor/translations/he.po
+++ b/editor/translations/he.po
@@ -3304,6 +3304,19 @@ msgstr "ערכה מוגדרת…"
msgid "Reimport"
msgstr "×™×™×‘×•× ×ž×—×“×©"
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Changing the type of an imported file requires editor restart."
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr "טעינת המש×ב נכשלה."
@@ -7168,6 +7181,38 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -7878,6 +7923,10 @@ msgid "Duplicate Node(s)"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Node must belong to the edited scene to become root."
msgstr ""
diff --git a/editor/translations/hi.po b/editor/translations/hi.po
index 3977d98c9c..687665d165 100644
--- a/editor/translations/hi.po
+++ b/editor/translations/hi.po
@@ -3269,6 +3269,19 @@ msgstr ""
msgid "Reimport"
msgstr ""
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Changing the type of an imported file requires editor restart."
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr ""
@@ -7050,6 +7063,38 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -7744,6 +7789,10 @@ msgid "Duplicate Node(s)"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Node must belong to the edited scene to become root."
msgstr ""
diff --git a/editor/translations/hr.po b/editor/translations/hr.po
index bad0a8d8e7..36017a4f78 100644
--- a/editor/translations/hr.po
+++ b/editor/translations/hr.po
@@ -3192,6 +3192,19 @@ msgstr ""
msgid "Reimport"
msgstr ""
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Changing the type of an imported file requires editor restart."
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr ""
@@ -6923,6 +6936,38 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -7614,6 +7659,10 @@ msgid "Duplicate Node(s)"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Node must belong to the edited scene to become root."
msgstr ""
diff --git a/editor/translations/hu.po b/editor/translations/hu.po
index 0a4f616efd..15932c95bf 100644
--- a/editor/translations/hu.po
+++ b/editor/translations/hu.po
@@ -3404,6 +3404,19 @@ msgstr "Beépített Beállítások..."
msgid "Reimport"
msgstr "Újraimportálás"
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Changing the type of an imported file requires editor restart."
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr "Nem sikerült betölteni az erőforrást."
@@ -7312,6 +7325,38 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -8016,6 +8061,10 @@ msgid "Duplicate Node(s)"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Node must belong to the edited scene to become root."
msgstr ""
diff --git a/editor/translations/id.po b/editor/translations/id.po
index b9e0d05df5..6f399a2ae3 100644
--- a/editor/translations/id.po
+++ b/editor/translations/id.po
@@ -3400,6 +3400,20 @@ msgstr "Prasetel..."
msgid "Reimport"
msgstr "Impor ulang"
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+#, fuzzy
+msgid "Changing the type of an imported file requires editor restart."
+msgstr "Mengubah driver video harus memulai ulang editor."
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr "Gagal memuat resource."
@@ -7370,6 +7384,38 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -8100,6 +8146,10 @@ msgid "Duplicate Node(s)"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Node must belong to the edited scene to become root."
msgstr ""
diff --git a/editor/translations/is.po b/editor/translations/is.po
index 4395d37555..0f42409c0d 100644
--- a/editor/translations/is.po
+++ b/editor/translations/is.po
@@ -3216,6 +3216,19 @@ msgstr ""
msgid "Reimport"
msgstr ""
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Changing the type of an imported file requires editor restart."
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr ""
@@ -6966,6 +6979,38 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -7661,6 +7706,10 @@ msgid "Duplicate Node(s)"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Node must belong to the edited scene to become root."
msgstr ""
diff --git a/editor/translations/it.po b/editor/translations/it.po
index 8d35becf3c..693e07ba94 100644
--- a/editor/translations/it.po
+++ b/editor/translations/it.po
@@ -25,12 +25,14 @@
# Davide Wayan Mores <moresdavidewayan@gmail.com>, 2018.
# Alessandro Zoppi <alessandro.zoppi@live.it>, 2019.
# Hairic95 <hairic95@gmail.com>, 2019.
+# Christian Biffi <creixx@virgilio.it>, 2019.
+# Giuseppe Guerra <me@nyodev.xyz>, 2019.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2019-01-19 19:21+0000\n"
-"Last-Translator: Hairic95 <hairic95@gmail.com>\n"
+"PO-Revision-Date: 2019-01-26 13:31+0000\n"
+"Last-Translator: Giuseppe Guerra <me@nyodev.xyz>\n"
"Language-Team: Italian <https://hosted.weblate.org/projects/godot-engine/"
"godot/it/>\n"
"Language: it\n"
@@ -38,7 +40,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 3.4-dev\n"
+"X-Generator: Weblate 3.5-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -93,9 +95,8 @@ msgid "Balanced"
msgstr "Bilanciato"
#: editor/animation_bezier_editor.cpp
-#, fuzzy
msgid "Mirror"
-msgstr "Specchia X"
+msgstr "Specchia"
#: editor/animation_bezier_editor.cpp
msgid "Insert Key Here"
@@ -145,7 +146,7 @@ msgstr "Proprietà:"
#: editor/animation_track_editor.cpp
#, fuzzy
msgid "3D Transform Track"
-msgstr "Tipo Transform"
+msgstr "Trasformazione 3D"
#: editor/animation_track_editor.cpp
msgid "Call Method Track"
@@ -153,7 +154,7 @@ msgstr ""
#: editor/animation_track_editor.cpp
msgid "Bezier Curve Track"
-msgstr ""
+msgstr "Traccia Curva di Bezier"
#: editor/animation_track_editor.cpp
msgid "Audio Playback Track"
@@ -165,19 +166,16 @@ msgid "Animation Playback Track"
msgstr "Ferma il playback dell'animazione. (S)"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Add Track"
-msgstr "Anim Aggiungi Traccia"
+msgstr "Aggiungi Traccia"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Animation Length Time (seconds)"
-msgstr "Lunghezza animazone (in secondi)."
+msgstr "Durata animazione (in secondi)"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Animation Looping"
-msgstr "Zoom Animazione."
+msgstr "Ripeti Animazione"
#: editor/animation_track_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
@@ -195,9 +193,8 @@ msgid "Anim Clips:"
msgstr "Clips"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Toggle this track on/off."
-msgstr "Abilita modalità senza distrazioni."
+msgstr "Attiva/Disattiva la traccia."
#: editor/animation_track_editor.cpp
msgid "Update Mode (How this property is set)"
@@ -213,14 +210,12 @@ msgid "Loop Wrap Mode (Interpolate end with beginning on loop)"
msgstr ""
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Remove this track."
-msgstr "Rimuovi traccia selezionata."
+msgstr "Rimuovi questa traccia."
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Time (s): "
-msgstr "Tempo(i) di Crossfade:"
+msgstr "Tempo (s): "
#: editor/animation_track_editor.cpp
msgid "Continuous"
@@ -235,13 +230,13 @@ msgid "Trigger"
msgstr "Attivazione"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Capture"
-msgstr "Texture"
+msgstr "Cattura"
#: editor/animation_track_editor.cpp
+#, fuzzy
msgid "Nearest"
-msgstr ""
+msgstr "Più vicino"
#: editor/animation_track_editor.cpp editor/plugins/curve_editor_plugin.cpp
#: editor/property_editor.cpp
@@ -250,7 +245,7 @@ msgstr "Lineare"
#: editor/animation_track_editor.cpp
msgid "Cubic"
-msgstr ""
+msgstr "Cubico"
#: editor/animation_track_editor.cpp
#, fuzzy
@@ -356,7 +351,7 @@ msgstr ""
#: editor/animation_track_editor.cpp
#, fuzzy
msgid "Method not found in object: "
-msgstr "VariableGet non trovato nello script: "
+msgstr "Metodo non trovato nell'oggetto: "
#: editor/animation_track_editor.cpp
msgid "Anim Move Keys"
@@ -365,7 +360,7 @@ msgstr "Anim Sposta Key"
#: editor/animation_track_editor.cpp
#, fuzzy
msgid "Clipboard is empty"
-msgstr "Clipboard risorse vuota!"
+msgstr "Gli appunti sono vuoti"
#: editor/animation_track_editor.cpp
msgid "Anim Scale Keys"
@@ -404,9 +399,8 @@ msgid "Edit"
msgstr "Modifica"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Animation properties."
-msgstr "AnimazioneAlbero"
+msgstr "Proprietà animazione."
#: editor/animation_track_editor.cpp
#, fuzzy
@@ -435,19 +429,16 @@ msgid "Duplicate Transposed"
msgstr "Duplica Transposto"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Delete Selection"
-msgstr "Elimina selezionati"
+msgstr "Elimina la selezione"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Go to Next Step"
-msgstr "Vai a Step Successivo"
+msgstr "Vai allo Step Successivo"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Go to Previous Step"
-msgstr "Vai a Step Precedente"
+msgstr "Vai allo Step Precedente"
#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
@@ -591,9 +582,8 @@ msgid "Warnings:"
msgstr "Avvertimento"
#: editor/code_editor.cpp
-#, fuzzy
msgid "Font Size:"
-msgstr "Dimensione Font sorgente:"
+msgstr "Dimensione Font:"
#: editor/code_editor.cpp
msgid "Line:"
@@ -701,17 +691,15 @@ msgstr "Disconnetti"
#: editor/connections_dialog.cpp
#, fuzzy
msgid "Connect Signal: "
-msgstr "Connessione Segnali:"
+msgstr "Connetti il segnale: "
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Edit Connection: "
-msgstr "Modifica Connessioni"
+msgstr "Modifica Connessione: "
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Are you sure you want to remove all connections from the \"%s\" signal?"
-msgstr "Sei sicuro di voler eseguire più di un progetto?"
+msgstr "Sei sicuro di voler rimuovere tutte le connessioni dal segnale \"%s\"?"
#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
@@ -722,9 +710,8 @@ msgid "Are you sure you want to remove all connections from this signal?"
msgstr ""
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Disconnect All"
-msgstr "Disconnetti"
+msgstr "Disconnetti tutto"
#: editor/connections_dialog.cpp
#, fuzzy
@@ -732,9 +719,8 @@ msgid "Edit..."
msgstr "Modifica"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Go To Method"
-msgstr "Metodi"
+msgstr "Vai al metodo"
#: editor/create_dialog.cpp
msgid "Change %s Type"
@@ -1377,9 +1363,8 @@ msgid "File Exists, Overwrite?"
msgstr "File Esistente, Sovrascrivere?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Select This Folder"
-msgstr "Seleziona Metodo"
+msgstr "Seleziona questa cartella"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
msgid "Copy Path"
@@ -1392,7 +1377,6 @@ msgstr "Mostra nel File Manager"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
#: editor/project_manager.cpp
-#, fuzzy
msgid "Show in File Manager"
msgstr "Mostra nel File Manager"
@@ -1537,19 +1521,16 @@ msgid "Methods"
msgstr "Metodi"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Methods:"
-msgstr "Metodi"
+msgstr "Metodi:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Theme Properties"
-msgstr "Proprietà"
+msgstr "Proprietà del tema"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Theme Properties:"
-msgstr "Proprietà:"
+msgstr "Proprietà del tema:"
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Signals:"
@@ -1576,14 +1557,12 @@ msgid "Constants:"
msgstr "Costanti:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Class Description"
-msgstr "Descrizione"
+msgstr "Descrizione della classe"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Class Description:"
-msgstr "Descrizione:"
+msgstr "Descrizione della classe:"
#: editor/editor_help.cpp
msgid "Online Tutorials:"
@@ -1600,12 +1579,10 @@ msgstr ""
"$url2]richiedendone una[/url][/color]."
#: editor/editor_help.cpp
-#, fuzzy
msgid "Property Descriptions"
-msgstr "Descrizione Proprietà:"
+msgstr "Descrizione Proprietà"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Property Descriptions:"
msgstr "Descrizione Proprietà:"
@@ -1618,12 +1595,10 @@ msgstr ""
"$color][url=$url]aggiungendone una[/url][/color]!"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Method Descriptions"
-msgstr "Descrizione Metodo:"
+msgstr "Descrizione Metodo"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Method Descriptions:"
msgstr "Descrizione Metodo:"
@@ -1641,39 +1616,32 @@ msgid "Search Help"
msgstr "Cerca Aiuto"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Display All"
-msgstr "Mostra Normale"
+msgstr "Mostra Tutto"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Classes Only"
-msgstr "Classi"
+msgstr "Solo le classi"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Methods Only"
-msgstr "Metodi"
+msgstr "Solo i metodi"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Signals Only"
-msgstr "Segnali"
+msgstr "Solo i segnali"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Constants Only"
-msgstr "Costanti"
+msgstr "Solo le costanti"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Properties Only"
-msgstr "Proprietà"
+msgstr "Solo le proprietà"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Theme Properties Only"
-msgstr "Proprietà"
+msgstr "Solo le proprietà del tema"
#: editor/editor_help_search.cpp
#, fuzzy
@@ -1681,9 +1649,8 @@ msgid "Member Type"
msgstr "Membri"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Class"
-msgstr "Classe:"
+msgstr "Classe"
#: editor/editor_inspector.cpp editor/project_settings_editor.cpp
msgid "Property:"
@@ -2059,13 +2026,12 @@ msgid "Unable to load addon script from path: '%s'."
msgstr "Impossibile caricare uno script aggiuntivo dal percorso: '%s'."
#: editor/editor_node.cpp
-#, fuzzy
msgid ""
"Unable to load addon script from path: '%s' There seems to be an error in "
"the code, please check the syntax."
msgstr ""
-"Impossibile caricare uno script aggiuntivo dal percorso: Lo script '%s' non "
-"è in tool mode."
+"Impossibile caricare uno script aggiuntivo dal percorso: '%s' Sembra esserci "
+"un errore nel codice, controlla la sintassi."
#: editor/editor_node.cpp
msgid ""
@@ -2121,19 +2087,16 @@ msgstr "Default"
#: editor/editor_node.cpp editor/editor_properties.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
-#, fuzzy
msgid "Show in FileSystem"
-msgstr "Mostra nel File System"
+msgstr "Mostra nel FileSystem"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Play This Scene"
msgstr "Esegui Scena"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Close Tab"
-msgstr "Chiudi le altre schede"
+msgstr "Chiudi scheda"
#: editor/editor_node.cpp
msgid "Switch Scene Tab"
@@ -2208,7 +2171,6 @@ msgid "Save Scene"
msgstr "Salva Scena"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Save All Scenes"
msgstr "Salva tutte le Scene"
@@ -2267,9 +2229,8 @@ msgid "Tools"
msgstr "Strumenti"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Project Data Folder"
-msgstr "Aprire Gestione Progetti?"
+msgstr "Apri la cartella del progetto"
#: editor/editor_node.cpp
msgid "Quit to Project List"
@@ -3442,6 +3403,19 @@ msgstr "Preset..."
msgid "Reimport"
msgstr "Reimporta"
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Changing the type of an imported file requires editor restart."
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr "Caricamento della risorsa fallito."
@@ -7413,6 +7387,38 @@ msgid "Browse"
msgstr "Sfoglia"
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr "Progetto Senza Nome"
@@ -7669,7 +7675,7 @@ msgstr "Aggiungi Evento"
#: editor/project_settings_editor.cpp
msgid "Button"
-msgstr ""
+msgstr "Bottone"
#: editor/project_settings_editor.cpp
msgid "Left Button."
@@ -8153,6 +8159,10 @@ msgid "Duplicate Node(s)"
msgstr "Duplica Nodo(i)"
#: editor/scene_tree_dock.cpp
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Node must belong to the edited scene to become root."
msgstr ""
@@ -9814,7 +9824,7 @@ msgstr ""
#: scene/3d/arvr_nodes.cpp
msgid "ARVRCamera must have an ARVROrigin node as its parent"
-msgstr "ARVRCamera deve avere un nodo ARVROrigin come suo genitore."
+msgstr "ARVRCamera deve avere un nodo ARVROrigin come suo nodo padre"
#: scene/3d/arvr_nodes.cpp
msgid "ARVRController must have an ARVROrigin node as its parent"
diff --git a/editor/translations/ja.po b/editor/translations/ja.po
index 20e4856721..20966bda3a 100644
--- a/editor/translations/ja.po
+++ b/editor/translations/ja.po
@@ -3322,6 +3322,20 @@ msgstr "プリセット..."
msgid "Reimport"
msgstr "å†ã‚¤ãƒ³ãƒãƒ¼ãƒˆ"
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+#, fuzzy
+msgid "Changing the type of an imported file requires editor restart."
+msgstr "ビデオドライãƒã‚’変更ã™ã‚‹ã«ã¯ã€ã‚¨ãƒ‡ã‚£ã‚¿ã‚’å†èµ·å‹•ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚"
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr "リソースã®èª­è¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸã€‚"
@@ -7292,6 +7306,38 @@ msgid "Browse"
msgstr "å‚ç…§"
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr "åç„¡ã—ã®ãƒ—ロジェクト"
@@ -8038,6 +8084,10 @@ msgid "Duplicate Node(s)"
msgstr "ノードを複製"
#: editor/scene_tree_dock.cpp
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Node must belong to the edited scene to become root."
msgstr ""
diff --git a/editor/translations/ka.po b/editor/translations/ka.po
index 93530f85a8..d14fe2be04 100644
--- a/editor/translations/ka.po
+++ b/editor/translations/ka.po
@@ -3252,6 +3252,19 @@ msgstr ""
msgid "Reimport"
msgstr ""
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Changing the type of an imported file requires editor restart."
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr ""
@@ -7034,6 +7047,38 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -7730,6 +7775,10 @@ msgid "Duplicate Node(s)"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Node must belong to the edited scene to become root."
msgstr ""
diff --git a/editor/translations/ko.po b/editor/translations/ko.po
index 8fdb80d145..23e4633092 100644
--- a/editor/translations/ko.po
+++ b/editor/translations/ko.po
@@ -16,7 +16,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2019-01-16 20:20+0000\n"
+"PO-Revision-Date: 2019-01-26 21:22+0000\n"
"Last-Translator: 송태섭 <xotjq237@gmail.com>\n"
"Language-Team: Korean <https://hosted.weblate.org/projects/godot-engine/"
"godot/ko/>\n"
@@ -25,7 +25,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 3.4-dev\n"
+"X-Generator: Weblate 3.5-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -1286,11 +1286,8 @@ msgid "Storing File:"
msgstr "íŒŒì¼ ì €ìž¥ 중:"
#: editor/editor_export.cpp
-#, fuzzy
msgid "No export template found at the expected path:"
-msgstr ""
-"내보내기 í…œí”Œë¦¿ì„ ì°¾ì„ ìˆ˜ 없습니다.\n"
-"내보내기 í…œí”Œë¦¿ì„ ë‹¤ìš´ë¡œë“œí•˜ì—¬ 설치하십시요."
+msgstr "ì˜ˆìƒ ê²½ë¡œì—서 내보내기 í…œí”Œë¦¿ì„ ì°¾ì„ ìˆ˜ 없습니다:"
#: editor/editor_export.cpp
msgid "Packing"
@@ -1299,16 +1296,14 @@ msgstr "패킹 중"
#: editor/editor_export.cpp platform/android/export/export.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#, fuzzy
msgid "Custom debug template not found."
-msgstr "커스텀 디버그 패키지를 ì°¾ì„ ìˆ˜ 없습니다."
+msgstr "커스텀 디버그 í…œí”Œë¦¿ì„ ì°¾ì„ ìˆ˜ 없습니다."
#: editor/editor_export.cpp platform/android/export/export.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#, fuzzy
msgid "Custom release template not found."
-msgstr "커스텀 릴리즈 패키지를 ì°¾ì„ ìˆ˜ 없습니다."
+msgstr "커스텀 릴리즈 í…œí”Œë¦¿ì„ ì°¾ì„ ìˆ˜ 없습니다."
#: editor/editor_export.cpp platform/javascript/export/export.cpp
msgid "Template file not found:"
@@ -3306,6 +3301,20 @@ msgstr "프리셋..."
msgid "Reimport"
msgstr "다시 가져오기"
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+#, fuzzy
+msgid "Changing the type of an imported file requires editor restart."
+msgstr "비디오 드ë¼ì´ë²„를 변경하려면 ì—디터를 다시 시작해야 합니다."
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr "리소스 불러오기 실패."
@@ -7089,6 +7098,38 @@ msgid "Browse"
msgstr "찾아보기"
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr "ì´ë¦„없는 프로ì íЏ"
@@ -7807,12 +7848,16 @@ msgid "Duplicate Node(s)"
msgstr "노드 복제"
#: editor/scene_tree_dock.cpp
-msgid "Node must belong to the edited scene to become root."
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Node must belong to the edited scene to become root."
+msgstr "노드는 루트로 ë˜ë ¤ë©´ íŽ¸ì§‘ëœ ì”¬ì— ì†í•´ìžˆì–´ì•¼ 합니다."
+
+#: editor/scene_tree_dock.cpp
msgid "Instantiated scenes can't become root"
-msgstr ""
+msgstr "ì¸ìŠ¤í„´íŠ¸í™”ëœ ì”¬ì€ ë£¨íŠ¸ê°€ ë  ìˆ˜ 없습니다"
#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)?"
@@ -9026,87 +9071,84 @@ msgstr "Set %s"
#: platform/android/export/export.cpp
msgid "Package name is missing."
-msgstr ""
+msgstr "패키지 ì´ë¦„ì´ ì—†ìŠµë‹ˆë‹¤."
#: platform/android/export/export.cpp
msgid "Package segments must be of non-zero length."
-msgstr ""
+msgstr "패키지 세그먼트는 길ì´ê°€ 0ì´ ì•„ë‹ˆì–´ì•¼ 합니다."
#: platform/android/export/export.cpp
msgid "The character '%s' is not allowed in Android application package names."
-msgstr ""
+msgstr "ë¬¸ìž '%s' 는 안드로ì´ë“œ 애플리케ì´ì…˜ 패키지 ì´ë¦„으로 쓸 수 없습니다."
#: platform/android/export/export.cpp
msgid "A digit cannot be the first character in a package segment."
-msgstr ""
+msgstr "숫ìžëŠ” 패키지 ì„¸ê·¸ë¨¼íŠ¸ì˜ ì²« 문ìžê°€ ë  ìˆ˜ 없습니다."
#: platform/android/export/export.cpp
msgid "The character '%s' cannot be the first character in a package segment."
-msgstr ""
+msgstr "ë¬¸ìž '%s' 는 패키지 ì„¸ê·¸ë¨¼íŠ¸ì˜ ì²« 문ìžê°€ ë  ìˆ˜ 없습니다."
#: platform/android/export/export.cpp
msgid "The package must have at least one '.' separator."
-msgstr ""
+msgstr "패키지는 ì ì–´ë„ í•˜ë‚˜ì˜ '.' 분리 기호를 ê°–ê³  있어야 합니다."
#: platform/android/export/export.cpp
msgid "ADB executable not configured in the Editor Settings."
-msgstr ""
+msgstr "ADB 실행 파ì¼ì´ ì—디터 설정ì—서 구성ë˜ì§€ 않았습니다."
#: platform/android/export/export.cpp
msgid "OpenJDK jarsigner not configured in the Editor Settings."
-msgstr ""
+msgstr "OpenJDK jarsignerê°€ ì—디터 설정ì—서 구성ë˜ì§€ 않았습니다."
#: platform/android/export/export.cpp
msgid "Debug keystore not configured in the Editor Settings nor in the preset."
-msgstr ""
+msgstr "Debug keystoreì´ ì—디터 설정 ë˜ëŠ” 프리셋ì—서 구성ë˜ì§€ 않았습니다."
#: platform/android/export/export.cpp
msgid "Invalid public key for APK expansion."
-msgstr ""
+msgstr "APK í™•ìž¥ì— ìœ íš¨í•˜ì§€ ì•Šì€ ê³µìš© 키입니다."
#: platform/android/export/export.cpp
-#, fuzzy
msgid "Invalid package name:"
-msgstr "유효하지 ì•Šì€ í´ëž˜ìŠ¤ëª…"
+msgstr "유효하지 ì•Šì€ íŒ¨í‚¤ì§€ ì´ë¦„:"
#: platform/iphone/export/export.cpp
msgid "Identifier is missing."
-msgstr ""
+msgstr "ì‹ë³„ìžê°€ 없습니다."
#: platform/iphone/export/export.cpp
msgid "Identifier segments must be of non-zero length."
-msgstr ""
+msgstr "ì‹ë³„ìž ì„¸ê·¸ë¨¼íŠ¸ëŠ” 길ì´ê°€ 0ì´ ì•„ë‹ˆì–´ì•¼ 합니다."
#: platform/iphone/export/export.cpp
-#, fuzzy
msgid "The character '%s' is not allowed in Identifier."
-msgstr "유효한 ì‹ë³„ìžê°€ 아닌 ì´ë¦„:"
+msgstr "ë¬¸ìž '%s' 는 ì‹ë³„ìžì— 쓸 수 없습니다."
#: platform/iphone/export/export.cpp
msgid "A digit cannot be the first character in a Identifier segment."
-msgstr ""
+msgstr "숫ìžëŠ” ì‹ë³„ìž ì„¸ê·¸ë¨¼íŠ¸ì˜ ì²« 문ìžê°€ ë  ìˆ˜ 없습니다."
#: platform/iphone/export/export.cpp
msgid ""
"The character '%s' cannot be the first character in a Identifier segment."
-msgstr ""
+msgstr "ë¬¸ìž '%s' 는 ì‹ë³„ìž ì„¸ê·¸ë¨¼íŠ¸ì˜ ì²« 문ìžê°€ ë  ìˆ˜ 없습니다."
#: platform/iphone/export/export.cpp
msgid "The Identifier must have at least one '.' separator."
-msgstr ""
+msgstr "ì‹ë³„ìžëŠ” ì ì–´ë„ í•˜ë‚˜ì˜ '.' 분리 기호를 ê°–ê³  있어야 합니다."
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
-msgstr ""
+msgstr "앱스토어 팀 IDê°€ 지정ë˜ì§€ 않았습니다 - 프로ì íŠ¸ë¥¼ 구성할 수 없습니다."
#: platform/iphone/export/export.cpp
-#, fuzzy
msgid "Invalid Identifier:"
-msgstr "유효한 ì‹ë³„ìžê°€ 아닌 ì´ë¦„:"
+msgstr "유효하지 ì•Šì€ ì‹ë³„ìž:"
#: platform/iphone/export/export.cpp
msgid "Required icon is not specified in the preset."
-msgstr ""
+msgstr "요구ë˜ëŠ” ì•„ì´ì½˜ì´ 프리셋ì—서 지정ë˜ì§€ 않았습니다."
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
@@ -9141,9 +9183,8 @@ msgid "Using default boot splash image."
msgstr "기본 부트 스플래시 ì´ë¯¸ì§€ 사용."
#: platform/uwp/export/export.cpp
-#, fuzzy
msgid "Invalid package unique name."
-msgstr "유효하지 ì•Šì€ ê³ ìœ  ì´ë¦„."
+msgstr "유효하지 ì•Šì€ íŒ¨í‚¤ì§€ 고유 ì´ë¦„."
#: platform/uwp/export/export.cpp
msgid "Invalid product GUID."
@@ -9491,13 +9532,12 @@ msgid "PathFollow only works when set as a child of a Path node."
msgstr "PathFollow는 Path ë…¸ë“œì˜ ìžì‹ìœ¼ë¡œ ìžˆì„ ë•Œë§Œ ë™ìž‘합니다."
#: scene/3d/path.cpp
-#, fuzzy
msgid ""
"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent "
"Path's Curve resource."
msgstr ""
-"OrientedPathFollow는 부모 Pathì˜ Curve 리소스ì—서 \"Up Vector\"를 활성화해야 "
-"합니다."
+"PathFollow ROTATION_ORIENTED는 부모 Pathì˜ Curve 리소스ì—서 \"Up Vector\"ê°€ "
+"활성화ë˜ì–´ 있어야 합니다."
#: scene/3d/physics_body.cpp
msgid ""
diff --git a/editor/translations/lt.po b/editor/translations/lt.po
index 0f8aa52ad5..72c804b3d3 100644
--- a/editor/translations/lt.po
+++ b/editor/translations/lt.po
@@ -3246,6 +3246,19 @@ msgstr ""
msgid "Reimport"
msgstr ""
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Changing the type of an imported file requires editor restart."
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr ""
@@ -7049,6 +7062,38 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -7745,6 +7790,10 @@ msgid "Duplicate Node(s)"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Node must belong to the edited scene to become root."
msgstr ""
diff --git a/editor/translations/lv.po b/editor/translations/lv.po
index bd3f7fdf5f..6c87d52153 100644
--- a/editor/translations/lv.po
+++ b/editor/translations/lv.po
@@ -3240,6 +3240,19 @@ msgstr ""
msgid "Reimport"
msgstr ""
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Changing the type of an imported file requires editor restart."
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr ""
@@ -7022,6 +7035,38 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -7716,6 +7761,10 @@ msgid "Duplicate Node(s)"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Node must belong to the edited scene to become root."
msgstr ""
diff --git a/editor/translations/ml.po b/editor/translations/ml.po
index c3ed7a96dd..8487b78616 100644
--- a/editor/translations/ml.po
+++ b/editor/translations/ml.po
@@ -3193,6 +3193,19 @@ msgstr ""
msgid "Reimport"
msgstr ""
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Changing the type of an imported file requires editor restart."
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr ""
@@ -6924,6 +6937,38 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -7615,6 +7660,10 @@ msgid "Duplicate Node(s)"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Node must belong to the edited scene to become root."
msgstr ""
diff --git a/editor/translations/ms.po b/editor/translations/ms.po
index 10efbffe6b..d384ae1e44 100644
--- a/editor/translations/ms.po
+++ b/editor/translations/ms.po
@@ -3202,6 +3202,19 @@ msgstr ""
msgid "Reimport"
msgstr ""
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Changing the type of an imported file requires editor restart."
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr ""
@@ -6940,6 +6953,38 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -7633,6 +7678,10 @@ msgid "Duplicate Node(s)"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Node must belong to the edited scene to become root."
msgstr ""
diff --git a/editor/translations/nb.po b/editor/translations/nb.po
index 49eb853332..933d2f0ed9 100644
--- a/editor/translations/nb.po
+++ b/editor/translations/nb.po
@@ -3434,6 +3434,19 @@ msgstr "Preset..."
msgid "Reimport"
msgstr "Reimporter"
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Changing the type of an imported file requires editor restart."
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr "Kunne ikke laste ressurs."
@@ -7384,6 +7397,38 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -8097,6 +8142,10 @@ msgid "Duplicate Node(s)"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Node must belong to the edited scene to become root."
msgstr ""
diff --git a/editor/translations/nl.po b/editor/translations/nl.po
index 4171adbe3a..19ef09b17b 100644
--- a/editor/translations/nl.po
+++ b/editor/translations/nl.po
@@ -28,12 +28,13 @@
# rxadmin <r.van.eeghem@gmail.com>, 2018.
# Peter Goelst <muis24@gmail.com>, 2019.
# Wouter Buckens <wou.buc@gmail.com>, 2019.
+# Stijn Hinlopen <f.a.hinlopen@gmail.com>, 2019.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2019-01-21 19:30+0000\n"
-"Last-Translator: Wouter Buckens <wou.buc@gmail.com>\n"
+"PO-Revision-Date: 2019-01-26 21:22+0000\n"
+"Last-Translator: Stijn Hinlopen <f.a.hinlopen@gmail.com>\n"
"Language-Team: Dutch <https://hosted.weblate.org/projects/godot-engine/godot/"
"nl/>\n"
"Language: nl\n"
@@ -41,12 +42,13 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 3.4-dev\n"
+"X-Generator: Weblate 3.5-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
+#, fuzzy
msgid "Invalid type argument to convert(), use TYPE_* constants."
-msgstr "Ongeldige type argument voor convert(), gebruik TYPE_* constanten."
+msgstr "Ongeldig argumenttype aan convert(), gebruik TYPE_* constanten."
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/mono/glue/gd_glue.cpp
@@ -575,9 +577,8 @@ msgid "Warnings:"
msgstr "Waarschuwingen:"
#: editor/code_editor.cpp
-#, fuzzy
msgid "Font Size:"
-msgstr "Vooraanzicht"
+msgstr "Lettertypegrootte:"
#: editor/code_editor.cpp
msgid "Line:"
@@ -710,9 +711,8 @@ msgid "Disconnect All"
msgstr "Losmaken"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Edit..."
-msgstr "Bewerken"
+msgstr "Bewerken..."
#: editor/connections_dialog.cpp
msgid "Go To Method"
@@ -1005,14 +1005,13 @@ msgid "Uncompressing Assets"
msgstr "Bronnen aan het uitpakken"
#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-#, fuzzy
msgid "Package installed successfully!"
-msgstr "Pakket Succesvol Geïnstalleerd!"
+msgstr "Pakket succesvol geïnstalleerd!"
#: editor/editor_asset_installer.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Success!"
-msgstr "Succes!"
+msgstr "Geslaagd!"
#: editor/editor_asset_installer.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -1321,11 +1320,8 @@ msgid "Storing File:"
msgstr "Bestand Opslaan:"
#: editor/editor_export.cpp
-#, fuzzy
msgid "No export template found at the expected path:"
-msgstr ""
-"Geen export templates gevonden.\n"
-"Download en installeer export templates."
+msgstr "Geen exporteersjabloon gevonden op het verwachte pad:"
#: editor/editor_export.cpp
msgid "Packing"
@@ -1358,18 +1354,16 @@ msgid "File Exists, Overwrite?"
msgstr "Bestand Bestaat, Overschrijven?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Select This Folder"
-msgstr "Selecteer Modus"
+msgstr "Selecteer deze map"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
msgid "Copy Path"
msgstr "Kopieer Pad"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
-#, fuzzy
msgid "Open in File Manager"
-msgstr "Weergeven in Bestandsbeheer"
+msgstr "Openen in Bestandsbeheer"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
#: editor/project_manager.cpp
@@ -1518,19 +1512,16 @@ msgid "Methods"
msgstr "Methodes"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Methods:"
-msgstr "Methodes"
+msgstr "Methodes:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Theme Properties"
-msgstr "Eigenschappen"
+msgstr "Thema Eigenschappen"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Theme Properties:"
-msgstr "Eigenschappen:"
+msgstr "Thema Eigenschappen:"
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Signals:"
@@ -1557,14 +1548,12 @@ msgid "Constants:"
msgstr "Constanten:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Class Description"
-msgstr "Beschrijving"
+msgstr "Klassebeschrijving"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Class Description:"
-msgstr "Omschrijving:"
+msgstr "Klassebeschrijving:"
#: editor/editor_help.cpp
msgid "Online Tutorials:"
@@ -1622,34 +1611,28 @@ msgid "Search Help"
msgstr "Zoek Hulp"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Display All"
-msgstr "Weergave Normaalvector"
+msgstr "Alles tonen"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Classes Only"
-msgstr "Klassen"
+msgstr "Alleen Klassen"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Methods Only"
-msgstr "Methodes"
+msgstr "Alleen Methoden"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Signals Only"
-msgstr "Signalen"
+msgstr "Alleen Signalen"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Constants Only"
-msgstr "Constanten"
+msgstr "Alleen Constanten"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Properties Only"
-msgstr "Eigenschappen"
+msgstr "Alleen Eigenschappen"
#: editor/editor_help_search.cpp
#, fuzzy
@@ -1662,9 +1645,8 @@ msgid "Member Type"
msgstr "Leden"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Class"
-msgstr "Klasse:"
+msgstr "Klasse"
#: editor/editor_inspector.cpp editor/project_settings_editor.cpp
msgid "Property:"
@@ -2041,12 +2023,12 @@ msgid "Unable to load addon script from path: '%s'."
msgstr "Volgend script kon niet geladen worden: '%s'."
#: editor/editor_node.cpp
-#, fuzzy
msgid ""
"Unable to load addon script from path: '%s' There seems to be an error in "
"the code, please check the syntax."
msgstr ""
-"Volgend script kon niet geladen worden: '%s' Script is niet in tool modus."
+"Script kon niet geladen worden van het pad: '%s'. Er lijkt een fout in de "
+"code te zijn, controleer de syntax."
#: editor/editor_node.cpp
msgid ""
@@ -2109,9 +2091,8 @@ msgid "Play This Scene"
msgstr "Speel Scene"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Close Tab"
-msgstr "Sluit Andere Tabbladen"
+msgstr "Tabblad sluiten"
#: editor/editor_node.cpp
msgid "Switch Scene Tab"
@@ -2203,10 +2184,12 @@ msgid "Convert To..."
msgstr "Converteer Naar..."
#: editor/editor_node.cpp
+#, fuzzy
msgid "MeshLibrary..."
-msgstr "MeshLibrary..."
+msgstr "MeshBibilotheek..."
#: editor/editor_node.cpp
+#, fuzzy
msgid "TileSet..."
msgstr "TileSet..."
@@ -2304,7 +2287,7 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Visible Navigation"
-msgstr "Navigatie Zichtbaar"
+msgstr "Navigatie zichtbaar"
#: editor/editor_node.cpp
msgid ""
@@ -2316,7 +2299,7 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Sync Scene Changes"
-msgstr "Synchroniseer Scene Veranderingen"
+msgstr "Sceneveranderingen synchroniseren"
#: editor/editor_node.cpp
msgid ""
@@ -2332,7 +2315,7 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Sync Script Changes"
-msgstr "Synchroniseer Script Veranderingen"
+msgstr "Scriptveranderingen synchroniseren"
#: editor/editor_node.cpp
msgid ""
@@ -2347,8 +2330,9 @@ msgstr ""
"efficiënter met het netwerk bestandssysteem."
#: editor/editor_node.cpp
+#, fuzzy
msgid "Editor"
-msgstr "Editor"
+msgstr "Verwerker"
#: editor/editor_node.cpp editor/settings_config_dialog.cpp
msgid "Editor Settings"
@@ -2456,9 +2440,8 @@ msgstr "Om de video driver te veranderen moet de editor herstart worden."
#: editor/editor_node.cpp editor/project_settings_editor.cpp
#: editor/settings_config_dialog.cpp
-#, fuzzy
msgid "Save & Restart"
-msgstr "Opslaan & Afsluiten"
+msgstr "Opslaan & Herstarten"
#: editor/editor_node.cpp
msgid "Spins when the editor window repaints!"
@@ -2494,9 +2477,8 @@ msgid "Node"
msgstr "Knooppunt"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Expand Bottom Panel"
-msgstr "Klap alles uit"
+msgstr "Vergroot onderste paneel"
#: editor/editor_node.cpp scene/resources/visual_shader.cpp
msgid "Output"
@@ -2575,9 +2557,8 @@ msgid "Thumbnail..."
msgstr "Voorbeeld..."
#: editor/editor_plugin_settings.cpp
-#, fuzzy
msgid "Edit Plugin"
-msgstr "Bewerk Poly"
+msgstr "Bewerk Plugin"
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
@@ -2601,15 +2582,13 @@ msgid "Status:"
msgstr "Staat:"
#: editor/editor_plugin_settings.cpp
-#, fuzzy
msgid "Edit:"
-msgstr "Bewerken"
+msgstr "Bewerken:"
#: editor/editor_profiler.cpp editor/plugins/animation_state_machine_editor.cpp
#: editor/rename_dialog.cpp
-#, fuzzy
msgid "Start"
-msgstr "Starten!"
+msgstr "Start"
#: editor/editor_profiler.cpp
msgid "Measure:"
@@ -2676,15 +2655,16 @@ msgid "Assign..."
msgstr "Toewijzen..."
#: editor/editor_properties.cpp
-#, fuzzy
msgid "Invalid RID"
-msgstr "Ongeldig Path"
+msgstr "Ongeldige RID"
#: editor/editor_properties.cpp
msgid ""
"The selected resource (%s) does not match any type expected for this "
"property (%s)."
msgstr ""
+"De geselecteerde hulpbron (%s) komt niet overeen met het verwachte type van "
+"deze eigenschap (%s)."
#: editor/editor_properties.cpp
msgid ""
@@ -2731,22 +2711,19 @@ msgid "Paste"
msgstr "Plakken"
#: editor/editor_properties.cpp editor/property_editor.cpp
-#, fuzzy
msgid "Convert To %s"
-msgstr "Verbind Aan Node:"
+msgstr "Omzetten naar %s"
#: editor/editor_properties.cpp
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#, fuzzy
msgid "Open Editor"
-msgstr "Openen in Editor"
+msgstr "Editor Openen"
#: editor/editor_properties.cpp editor/property_editor.cpp
-#, fuzzy
msgid "Selected node is not a Viewport!"
-msgstr "Geselecteerde ..... is geen Aanzicht Portaal!"
+msgstr "Geselecteerde knoop is geen Viewport!"
#: editor/editor_properties_array_dict.cpp
msgid "Size: "
@@ -2757,18 +2734,16 @@ msgid "Page: "
msgstr "Pagina: "
#: editor/editor_properties_array_dict.cpp
-#, fuzzy
msgid "New Key:"
-msgstr "Nieuwe naam:"
+msgstr "Nieuwe Sleutel:"
#: editor/editor_properties_array_dict.cpp
-#, fuzzy
msgid "New Value:"
-msgstr "Nieuwe naam:"
+msgstr "Nieuwe Waarde:"
#: editor/editor_properties_array_dict.cpp
msgid "Add Key/Value Pair"
-msgstr ""
+msgstr "Sleutel-Waarde Paar Toevoegen"
#: editor/editor_properties_array_dict.cpp
#: editor/plugins/theme_editor_plugin.cpp
@@ -2861,9 +2836,8 @@ msgid "Can't open export templates zip."
msgstr "Kan exportsjablonen niet openen."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Invalid version.txt format inside templates: %s."
-msgstr "Ongeldig version.txt formaat in sjablonen."
+msgstr "Ongeldig version.txt formaat in sjablonen: %s."
#: editor/export_template_manager.cpp
msgid "No version.txt found inside templates."
@@ -3010,9 +2984,8 @@ msgid "Download Templates"
msgstr "Download Sjablonen"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Select mirror from list: (Shift+Click: Open in Browser)"
-msgstr "Selecteer mirror uit lijst: "
+msgstr "Selecteer mirror uit lijst: (Shift-klik: In Browser openen)"
#: editor/file_type_cache.cpp
msgid "Can't open file_type_cache.cch for writing, not saving file type cache!"
@@ -3021,9 +2994,8 @@ msgstr ""
"bewaard!"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Favorites"
-msgstr "Favorieten:"
+msgstr "Favorieten"
#: editor/filesystem_dock.cpp
msgid "Cannot navigate to '%s' as it has not been found in the file system!"
@@ -3032,9 +3004,8 @@ msgstr ""
"is!"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "View items as a grid of thumbnails."
-msgstr "Toon items in een rooster van miniaturen"
+msgstr "Toon items in een miniatuurraster."
#: editor/filesystem_dock.cpp
#, fuzzy
@@ -3108,14 +3079,12 @@ msgid "Instance"
msgstr "Instantie"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Add to favorites"
-msgstr "Favorieten:"
+msgstr "Aan favorieten toevoegen"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Remove from favorites"
-msgstr "Verwijderen uit Groep"
+msgstr "Uit favorieten verwijderen"
#: editor/filesystem_dock.cpp
msgid "Edit Dependencies..."
@@ -3138,24 +3107,20 @@ msgid "Move To..."
msgstr "Verplaats Naar..."
#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "New Script..."
-msgstr "Open Script Snel..."
+msgstr "Nieuw Script..."
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "New Resource..."
-msgstr "Resource Opslaan Als..."
+msgstr "Nieuwe Hulpbron..."
#: editor/filesystem_dock.cpp editor/script_editor_debugger.cpp
-#, fuzzy
msgid "Expand All"
-msgstr "Klap alles uit"
+msgstr "Alles uitklappen"
#: editor/filesystem_dock.cpp editor/script_editor_debugger.cpp
-#, fuzzy
msgid "Collapse All"
-msgstr "Klap alles in"
+msgstr "Alles inklappen"
#: editor/filesystem_dock.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
@@ -3177,14 +3142,12 @@ msgid "Re-Scan Filesystem"
msgstr "Bestandssysteem Opnieuw Scannen"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Toggle split mode"
-msgstr "Toggle Modus"
+msgstr "Gesplitste modus omschakelen"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Search files"
-msgstr "Zoek Klasses"
+msgstr "Zoek bestanden"
#: editor/filesystem_dock.cpp
msgid "Instance the selected scene(s) as child of the selected node."
@@ -3205,9 +3168,8 @@ msgid "Move"
msgstr "Verplaatsen"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "There is already file or folder with the same name in this location."
-msgstr "Er is al een map in dit pad met dezelfde naam."
+msgstr "Er is al een bestand of map met dezelfde naam op dit pad."
#: editor/filesystem_dock.cpp
msgid "Overwrite"
@@ -3223,9 +3185,8 @@ msgid "Find in Files"
msgstr "Vind Tegel"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Find:"
-msgstr "Zoeken"
+msgstr "Zoeken:"
#: editor/find_in_files.cpp
#, fuzzy
@@ -3233,9 +3194,8 @@ msgid "Folder:"
msgstr "Map Maken"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Filters:"
-msgstr "Filter:"
+msgstr "Filters:"
#: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
@@ -3251,24 +3211,20 @@ msgid "Cancel"
msgstr "Annuleer"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Find: "
-msgstr "Zoeken"
+msgstr "Zoeken: "
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Replace: "
-msgstr "Vervangen"
+msgstr "Vervangen: "
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Replace all (no undo)"
-msgstr "Alle Vervangen"
+msgstr "Alle vervangen (geen ongedaan maken)"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Searching..."
-msgstr "Opslaan..."
+msgstr "Aan het zoeken..."
#: editor/find_in_files.cpp
#, fuzzy
@@ -3276,33 +3232,28 @@ msgid "Search complete"
msgstr "Zoek Tekst"
#: editor/groups_editor.cpp
-#, fuzzy
msgid "Group name already exists."
-msgstr "FOUTMELDING: Animatie naam bestaat al!"
+msgstr "Groepnaam bestaat al."
#: editor/groups_editor.cpp
-#, fuzzy
msgid "Invalid group name."
-msgstr "Ongeldige naam."
+msgstr "Ongeldige groepnaam."
#: editor/groups_editor.cpp editor/node_dock.cpp
msgid "Groups"
msgstr "Groepen"
#: editor/groups_editor.cpp
-#, fuzzy
msgid "Nodes not in Group"
-msgstr "Toevoegen aan Groep"
+msgstr "Knopen niet in de groep"
#: editor/groups_editor.cpp editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Filter nodes"
-msgstr "Filter:"
+msgstr "Filter knopen"
#: editor/groups_editor.cpp
-#, fuzzy
msgid "Nodes in Group"
-msgstr "Toevoegen aan Groep"
+msgstr "Knopen in de groep"
#: editor/groups_editor.cpp
msgid "Add to Group"
@@ -3313,9 +3264,8 @@ msgid "Remove from Group"
msgstr "Verwijderen uit Groep"
#: editor/groups_editor.cpp
-#, fuzzy
msgid "Manage Groups"
-msgstr "Groepen"
+msgstr "Groepen beheren"
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
@@ -3418,6 +3368,20 @@ msgstr "Voorinstelling..."
msgid "Reimport"
msgstr "Herimporteer"
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+#, fuzzy
+msgid "Changing the type of an imported file requires editor restart."
+msgstr "Om de video driver te veranderen moet de editor herstart worden."
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr "Mislukt om resource te laden."
@@ -3446,9 +3410,8 @@ msgid "Paste Params"
msgstr "Plak Parameters"
#: editor/inspector_dock.cpp
-#, fuzzy
msgid "Edit Resource Clipboard"
-msgstr "Bronnen klembord is leeg!"
+msgstr "Hulpbron in klembord bewerken"
#: editor/inspector_dock.cpp
msgid "Copy Resource"
@@ -3495,9 +3458,8 @@ msgid "Object properties."
msgstr "Objecteigenschappen."
#: editor/inspector_dock.cpp
-#, fuzzy
msgid "Filter properties"
-msgstr "Filter:"
+msgstr "Filter eigenschappen"
#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
@@ -3512,19 +3474,16 @@ msgid "Select a Node to edit Signals and Groups."
msgstr "Selecteer een Node om Signalen en Groepen aan te passen."
#: editor/plugin_config_dialog.cpp
-#, fuzzy
msgid "Edit a Plugin"
-msgstr "Bewerk Poly"
+msgstr "Een plugin bewerken"
#: editor/plugin_config_dialog.cpp
-#, fuzzy
msgid "Create a Plugin"
-msgstr "Subscriptie Maken"
+msgstr "Een plugin aanmaken"
#: editor/plugin_config_dialog.cpp
-#, fuzzy
msgid "Plugin Name:"
-msgstr "Plugins"
+msgstr "Pluginnaam:"
#: editor/plugin_config_dialog.cpp
msgid "Subfolder:"
@@ -3535,9 +3494,8 @@ msgid "Language:"
msgstr "Taal:"
#: editor/plugin_config_dialog.cpp
-#, fuzzy
msgid "Script Name:"
-msgstr "Projectnaam:"
+msgstr "Scriptnaam:"
#: editor/plugin_config_dialog.cpp
msgid "Activate now?"
@@ -3545,53 +3503,45 @@ msgstr "Nu activeren?"
#: editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid "Create Polygon"
-msgstr "Creëer Poly"
+msgstr "Veelhoek aanmaken"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#, fuzzy
msgid "Edit Polygon"
-msgstr "Bewerk Poly"
+msgstr "Veelhoek bewerken"
#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid "Insert Point"
msgstr "Punt Toevoegen"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#, fuzzy
msgid "Edit Polygon (Remove Point)"
-msgstr "Bewerk Poly (Verwijder punt)"
+msgstr "Veelhoek bewerken (punt verwijderen)"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#, fuzzy
msgid "Remove Polygon And Point"
-msgstr "Verwijder Poly en punt"
+msgstr "Veelhoek en punt verwijderen"
#: editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
-#, fuzzy
msgid "Create points."
-msgstr "Verwijder punten"
+msgstr "Punten aanmaken."
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#, fuzzy
msgid ""
"Edit points.\n"
"LMB: Move Point\n"
"RMB: Erase Point"
msgstr ""
-"Bewerk bestaande polygoon:\n"
-"LMK: Verplaats punt.\n"
-"Ctrl+LMK: Splits segment.\n"
-"RMK: Wis punt."
+"Punten bewerken:\n"
+"LMK: Punt verplaasten\n"
+"RMK: Punt wissen"
#: editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/animation_blend_space_1d_editor.cpp
-#, fuzzy
msgid "Erase points."
-msgstr "RMB: Verwijder Punt."
+msgstr "Punten wissen."
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
@@ -3605,17 +3555,15 @@ msgstr "Voeg Animatie Toe"
#: editor/plugins/animation_blend_space_2d_editor.cpp
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
#: editor/plugins/animation_state_machine_editor.cpp
-#, fuzzy
msgid "Load..."
-msgstr "Laden"
+msgstr "Laden..."
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
#: editor/plugins/animation_state_machine_editor.cpp
-#, fuzzy
msgid "This type of node can't be used. Only root nodes are allowed."
msgstr ""
-"Dit type node kan niet gebruikt worden. Alleen root nodes zijn toegestaan."
+"Dit knooptype kan niet gebruikt worden. Alleen wortelknopen zijn toegestaan."
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
@@ -3632,12 +3580,12 @@ msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Set the blending position within the space"
-msgstr ""
+msgstr "Zet de overgangspositie binnen de ruimte"
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Select and move points, create points with RMB."
-msgstr ""
+msgstr "Selecteer en verplaats punten, maak punten aan met RMK."
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp scene/gui/graph_edit.cpp
@@ -3646,26 +3594,23 @@ msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
-#, fuzzy
msgid "Point"
-msgstr "Beweeg Punt"
+msgstr "Punt"
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
#: editor/plugins/animation_state_machine_editor.cpp
-#, fuzzy
msgid "Open Animation Node"
-msgstr "Animatie Node"
+msgstr "Animatieknoop openen"
#: editor/plugins/animation_blend_space_2d_editor.cpp
-#, fuzzy
msgid "Triangle already exists"
-msgstr "FOUTMELDING: Animatie naam bestaat al!"
+msgstr "Driehoek bestaat al"
#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "BlendSpace2D does not belong to an AnimationTree node."
-msgstr ""
+msgstr "BlendSpace2D hoort niet bij een AnimationTree knoop."
#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "No triangles exist, so no blending can take place."
@@ -3673,11 +3618,11 @@ msgstr ""
#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Create triangles by connecting points."
-msgstr ""
+msgstr "Maak driehoeken door punten te verbinden."
#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Erase points and triangles."
-msgstr ""
+msgstr "Punten en driehoeken wissen."
#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Generate blend triangles automatically (instead of manually)"
@@ -3701,37 +3646,40 @@ msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Unable to connect, port may be in use or connection may be invalid."
msgstr ""
+"Verbinding niet mogelijk, poort kan in gebruik zijn of de verbinding kan "
+"ongeldig zijn."
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
msgid "No animation player set, so unable to retrieve track names."
-msgstr ""
+msgstr "Geen animatiespeler ingesteld, spoornamen konden niet worden gevonden."
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
msgid "Player path set is invalid, so unable to retrieve track names."
-msgstr ""
+msgstr "Animatiespelerpad is ongeldig, spoornamen konden niet worden gevonden."
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
#: editor/plugins/root_motion_editor_plugin.cpp
+#, fuzzy
msgid ""
"Animation player has no valid root node path, so unable to retrieve track "
"names."
msgstr ""
+"Animatiespeler heeft geen geldig pad voor de wortelknoop, spoornamen konden "
+"niet worden gevonden."
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp
-#, fuzzy
msgid "Add Node..."
-msgstr "Node Toevoegen"
+msgstr "Voeg knoop toe..."
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
#: editor/plugins/root_motion_editor_plugin.cpp
-#, fuzzy
msgid "Edit Filtered Tracks:"
-msgstr "Filters Bewerken"
+msgstr "Bewerk gefilterde sporen:"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
msgid "Enable filtering"
-msgstr ""
+msgstr "Activeer filtering"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Toggle Autoplay"
@@ -3759,14 +3707,12 @@ msgid "Remove Animation"
msgstr "Verwijder Animatie"
#: editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "Invalid animation name!"
-msgstr "FOUTMELDING: Invalide animatie naam!"
+msgstr "Ongeldige animatienaam!"
#: editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "Animation name already exists!"
-msgstr "FOUTMELDING: Animatie naam bestaat al!"
+msgstr "Animatienaam bestaat al!"
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
@@ -3776,12 +3722,11 @@ msgstr "Animatie Hernoemen"
#: editor/plugins/animation_player_editor_plugin.cpp
#, fuzzy
msgid "Blend Next Changed"
-msgstr "Meng Volgende Aangepast"
+msgstr "Meng met volgende aanpassing"
#: editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "Change Blend Time"
-msgstr "Wijzig Meng Tijd"
+msgstr "Wijzig overlooptijd"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Load Animation"
@@ -3792,14 +3737,12 @@ msgid "Duplicate Animation"
msgstr "Dupliceer Animatie"
#: editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "No animation to copy!"
-msgstr "FOUTMELDING: Geen animatie om te kopiëren!"
+msgstr "Geen animatie om te kopiëren!"
#: editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "No animation resource on clipboard!"
-msgstr "FOUTMELDING: Geen animatie resource op klembord!"
+msgstr "Geen animatie hulpbron op klembord!"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Pasted Animation"
@@ -3810,9 +3753,8 @@ msgid "Paste Animation"
msgstr "Plak Animatie"
#: editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "No animation to edit!"
-msgstr "FOUTMELDING: Geen animatie om aan te passen!"
+msgstr "Geen animatie om aan te passen!"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Play selected animation backwards from current pos. (A)"
@@ -3856,14 +3798,13 @@ msgid "New"
msgstr "Nieuw"
#: editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "Edit Transitions..."
-msgstr "Transities"
+msgstr "Bewerk overgangen..."
#: editor/plugins/animation_player_editor_plugin.cpp
#, fuzzy
msgid "Open in Inspector"
-msgstr "Openen in Editor"
+msgstr "In Inspecteur openen"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Display list of animations in player."
@@ -3922,9 +3863,8 @@ msgid "Include Gizmos (3D)"
msgstr "Inclusief Gizmos (3D)"
#: editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "Pin AnimationPlayer"
-msgstr "Plak Animatie"
+msgstr "Animatiespeler vastzetten"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Create New Animation"
@@ -3956,27 +3896,28 @@ msgstr "Cross-animatie mixtijden"
#: editor/plugins/animation_state_machine_editor.cpp
msgid "End"
-msgstr ""
+msgstr "Einde"
#: editor/plugins/animation_state_machine_editor.cpp
msgid "Immediate"
-msgstr ""
+msgstr "Onmiddellijk"
#: editor/plugins/animation_state_machine_editor.cpp
msgid "Sync"
-msgstr ""
+msgstr "Synchroniseren"
#: editor/plugins/animation_state_machine_editor.cpp
msgid "At End"
-msgstr ""
+msgstr "Aan het einde"
#: editor/plugins/animation_state_machine_editor.cpp
msgid "Travel"
msgstr ""
#: editor/plugins/animation_state_machine_editor.cpp
+#, fuzzy
msgid "Start and end nodes are needed for a sub-transition."
-msgstr ""
+msgstr "Start- en eindknopen zijn nodig voor een sub-overgang"
#: editor/plugins/animation_state_machine_editor.cpp
#, fuzzy
@@ -3989,21 +3930,21 @@ msgid ""
"RMB to add new nodes.\n"
"Shift+LMB to create connections."
msgstr ""
+"Knopen selecteren en bewegen.\n"
+"RMK om nieuwe knopen toe te voegen.\n"
+"Shift-LMK om verbindingen aan te maken."
#: editor/plugins/animation_state_machine_editor.cpp
-#, fuzzy
msgid "Create new nodes."
-msgstr "Maake Nieuwe %s"
+msgstr "Nieuwe knopen maken."
#: editor/plugins/animation_state_machine_editor.cpp
-#, fuzzy
msgid "Connect nodes."
-msgstr "Verbind Aan Node:"
+msgstr "Knopen verbinden."
#: editor/plugins/animation_state_machine_editor.cpp
-#, fuzzy
msgid "Remove selected node or transition."
-msgstr "Verwijder geselecteerde track."
+msgstr "De uitgekozen knoop of overgang verwijderen."
#: editor/plugins/animation_state_machine_editor.cpp
msgid "Toggle autoplay this animation on start, restart or seek to zero."
@@ -4014,9 +3955,8 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr ""
#: editor/plugins/animation_state_machine_editor.cpp
-#, fuzzy
msgid "Transition: "
-msgstr "Transitie"
+msgstr "Overgang: "
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
@@ -4118,8 +4058,9 @@ msgid "OneShot Node"
msgstr "OneShot Node"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#, fuzzy
msgid "Mix Node"
-msgstr "Mix Node"
+msgstr "Meng Node"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Blend2 Node"
@@ -4142,8 +4083,9 @@ msgid "TimeSeek Node"
msgstr "TimeSeek Node"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#, fuzzy
msgid "Transition Node"
-msgstr "Transition Node"
+msgstr "Overgangsknoop"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Import Animations..."
@@ -4210,14 +4152,12 @@ msgid "Asset Download Error:"
msgstr "Asset Download Foutmelding:"
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Downloading (%s / %s)..."
-msgstr "Bezig met downloaden"
+msgstr "Bezig met neerladen (%s / %s)..."
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Downloading..."
-msgstr "Bezig met downloaden"
+msgstr "Bezig met neerladen..."
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Resolving..."
@@ -4244,14 +4184,12 @@ msgid "Download for this asset is already in progress!"
msgstr "Download voor dit onderdeel is al bezig!"
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "First"
-msgstr "eerste"
+msgstr "Eerste"
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Previous"
-msgstr "Vorig tabblad"
+msgstr "Vorige"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Next"
@@ -4259,7 +4197,7 @@ msgstr "Volgende"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Last"
-msgstr ""
+msgstr "Laatste"
#: editor/plugins/asset_library_editor_plugin.cpp
#: modules/gdnative/gdnative_library_editor_plugin.cpp
@@ -4386,34 +4324,28 @@ msgid "Create new horizontal and vertical guides"
msgstr "Maak nieuwe horizontale en verticale gidsen"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Move pivot"
-msgstr "Verplaats Draaipunt"
+msgstr "Draaipunt verplaatsen"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Rotate CanvasItem"
-msgstr "CanvasItem Bewerken"
+msgstr "CanvasItem roteren"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Move anchor"
-msgstr "Verplaats Actie"
+msgstr "Anker verplaatsen"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Resize CanvasItem"
-msgstr "CanvasItem Bewerken"
+msgstr "Formaat van CanvasItem wijzigen"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Scale CanvasItem"
-msgstr "CanvasItem Bewerken"
+msgstr "Schaal CanvasItem"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Move CanvasItem"
-msgstr "CanvasItem Bewerken"
+msgstr "Verplaats CanvasItem"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Anchors only"
@@ -4436,13 +4368,14 @@ msgid ""
"Warning: Children of a container get their position and size determined only "
"by their parent."
msgstr ""
+"Waarschuwing: De positie en grootte van de kinderen van een houder worden "
+"alleen door hun ouder bepaald."
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
-#, fuzzy
msgid "Zoom Reset"
-msgstr "Uitzoomen"
+msgstr "Zoom terugzetten"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Select Mode"
@@ -4475,9 +4408,8 @@ msgid "Rotate Mode"
msgstr "Rotatiemodus"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Scale Mode"
-msgstr "Schaalstand (R)"
+msgstr "Schaalwijze"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -4497,18 +4429,16 @@ msgid "Pan Mode"
msgstr "Verschuif Modus"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Toggle snapping."
-msgstr "Snappen Aan- of Uitschakelen"
+msgstr "Automatisch schikken omschakelen."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Use Snap"
msgstr "Gebruik Uitlijnen"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Snapping Options"
-msgstr "Uitlijnen opties"
+msgstr "Opties voor automatisch schikken"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Snap to grid"
@@ -4548,9 +4478,8 @@ msgid "Snap to node sides"
msgstr "Uitlijnen naar node zijden"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Snap to node center"
-msgstr "Snap naar node anker"
+msgstr "Schik automatisch aan middelpunt knoop"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Snap to other nodes"
@@ -4583,9 +4512,8 @@ msgstr ""
"object."
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Skeleton Options"
-msgstr "Singleton"
+msgstr "Skeletinstellingen"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Show Bones"
@@ -6816,9 +6744,8 @@ msgid "Erase TileMap"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Find Tile"
-msgstr "Vind Tegel"
+msgstr "Tegel vinden"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Transpose"
@@ -6841,42 +6768,37 @@ msgid "Pick Tile"
msgstr "Kies Tegel"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Copy Selection"
-msgstr "Verwijder Selectie"
+msgstr "Selectie kopiëren"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Rotate left"
-msgstr "Rotatiemodus"
+msgstr "Naar links draaien"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Rotate right"
-msgstr "Roteer Polygon"
+msgstr "Naar rechts draaien"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Flip horizontally"
-msgstr ""
+msgstr "Horizontaal omdraaien"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Flip vertically"
-msgstr ""
+msgstr "Verticaal omdraaien"
#: editor/plugins/tile_map_editor_plugin.cpp
#, fuzzy
msgid "Clear transform"
-msgstr "Transformatie"
+msgstr "Transform vrijmaken"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Add Texture(s) to TileSet."
-msgstr "Voeg Node(s) Toe Uit Tree"
+msgstr "Texture(n) aan TileSet toevoegen."
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Remove selected Texture from TileSet."
-msgstr "Verwijder Signaal"
+msgstr "Geselecteerde Texture uit TileSet verwijderen."
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Create from Scene"
@@ -6888,43 +6810,44 @@ msgstr "Vervoeg vanuit Scene"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Copy bitmask."
-msgstr ""
+msgstr "Bitmasker kopiëren."
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Paste bitmask."
-msgstr "Plak Animatie"
+msgstr "Animatie plakken."
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Erase bitmask."
-msgstr "RMB: Verwijder Punt."
+msgstr "Bitmasker wissen."
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Create a new polygon."
-msgstr "Creëer een compleet nieuwe polygon."
+msgstr "Nieuwe veelhoek aanmaken."
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid "Keep polygon inside region Rect."
-msgstr ""
+msgstr "Hou veelhoek in Rect bereik"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Enable snap and show grid (configurable via the Inspector)."
msgstr ""
+"Activeer automatisch schikken en toon raster (configureerbaar in de "
+"Inspecteur)."
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Display Tile Names (Hold Alt Key)"
-msgstr ""
+msgstr "Tegelnamen tonen (Alt-toets ingedrukt houden)"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Remove selected texture? This will remove all tiles which use it."
-msgstr "Verwijder Signaal"
+msgstr ""
+"Geselecteerde Texture verwijderen? Alle tegels die ervan gebruikt maken "
+"zullen verwijderd worden."
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "You haven't selected a texture to remove."
-msgstr ""
+msgstr "Geen Texture geselecteerd om te verwijderen."
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Create from scene? This will overwrite all current tiles."
@@ -7372,6 +7295,38 @@ msgid "Browse"
msgstr "Bladeren"
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr "Naamloos Project"
@@ -8096,6 +8051,10 @@ msgid "Duplicate Node(s)"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Node must belong to the edited scene to become root."
msgstr ""
@@ -10001,14 +9960,12 @@ msgid "Invalid font size."
msgstr "Ongeldige lettertype grootte."
#: scene/resources/visual_shader.cpp
-#, fuzzy
msgid "Input"
-msgstr "Voeg invoer toe"
+msgstr "Invoer"
#: scene/resources/visual_shader_nodes.cpp
-#, fuzzy
msgid "Invalid source for shader."
-msgstr "Ongeldige lettertype grootte."
+msgstr "Ongeldige bron voor shader."
#: servers/visual/shader_language.cpp
msgid "Assignment to function."
diff --git a/editor/translations/pl.po b/editor/translations/pl.po
index 4e552fb617..f4fa56512e 100644
--- a/editor/translations/pl.po
+++ b/editor/translations/pl.po
@@ -3332,6 +3332,20 @@ msgstr "Ustawienie predefiniowane..."
msgid "Reimport"
msgstr "Importuj ponownie"
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+#, fuzzy
+msgid "Changing the type of an imported file requires editor restart."
+msgstr "Zmiana sterownika grafiki wymaga restartu edytora."
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr "Nie udało się wczytać zasobu."
@@ -7184,6 +7198,38 @@ msgid "Browse"
msgstr "Szukaj"
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr "Projekt bez nazwy"
@@ -7897,6 +7943,10 @@ msgid "Duplicate Node(s)"
msgstr "Duplikuj węzeł(y)"
#: editor/scene_tree_dock.cpp
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Node must belong to the edited scene to become root."
msgstr ""
diff --git a/editor/translations/pr.po b/editor/translations/pr.po
index d3f6e39254..e8240ad087 100644
--- a/editor/translations/pr.po
+++ b/editor/translations/pr.po
@@ -3264,6 +3264,19 @@ msgstr ""
msgid "Reimport"
msgstr ""
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Changing the type of an imported file requires editor restart."
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr ""
@@ -7083,6 +7096,38 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -7783,6 +7828,10 @@ msgid "Duplicate Node(s)"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Node must belong to the edited scene to become root."
msgstr ""
diff --git a/editor/translations/pt_BR.po b/editor/translations/pt_BR.po
index 3cc119313e..be32fed935 100644
--- a/editor/translations/pt_BR.po
+++ b/editor/translations/pt_BR.po
@@ -30,7 +30,7 @@
# Henrique Combochi <henrique.combochi@gmail.com>, 2018, 2019.
# Gabriel Carvalho <billlmaster@gmail.com>, 2018, 2019.
# miketangogamer <miketangogamer@gmail.com>, 2018.
-# Eduardo Abreu <eduo.abreu@gmail.com>, 2018.
+# Eduardo Abreu <eduo.abreu@gmail.com>, 2018, 2019.
# Bruno Miranda Da Silva <brunofreezee@gmail.com>, 2018.
# Marcos Roberto Rodrigues Marques <contato.mroberto@gmail.com>, 2018.
# Dyefferson Azevedo <gamecanalbrasil@gmail.com>, 2018.
@@ -52,8 +52,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: 2016-05-30\n"
-"PO-Revision-Date: 2019-01-21 19:30+0000\n"
-"Last-Translator: Guilherme Felipe C G Silva <guilhermefelipecgs@gmail.com>\n"
+"PO-Revision-Date: 2019-01-26 21:22+0000\n"
+"Last-Translator: Eduardo Abreu <eduo.abreu@gmail.com>\n"
"Language-Team: Portuguese (Brazil) <https://hosted.weblate.org/projects/"
"godot-engine/godot/pt_BR/>\n"
"Language: pt_BR\n"
@@ -61,7 +61,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Generator: Weblate 3.4-dev\n"
+"X-Generator: Weblate 3.5-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -1327,7 +1327,7 @@ msgstr "Armazenando Arquivo:"
#: editor/editor_export.cpp
msgid "No export template found at the expected path:"
-msgstr ""
+msgstr "Nenhum template para exportação foi encontrado no caminho esperado:"
#: editor/editor_export.cpp
msgid "Packing"
@@ -1336,15 +1336,14 @@ msgstr "Empacotando"
#: editor/editor_export.cpp platform/android/export/export.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#, fuzzy
msgid "Custom debug template not found."
-msgstr "Arquivo de modelo não encontrado:"
+msgstr "Modelo customizado de depuração não encontrado."
#: editor/editor_export.cpp platform/android/export/export.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom release template not found."
-msgstr ""
+msgstr "Template customizado de release não encontrado."
#: editor/editor_export.cpp platform/javascript/export/export.cpp
msgid "Template file not found:"
@@ -3358,6 +3357,20 @@ msgstr "Predefinição..."
msgid "Reimport"
msgstr "Reimportar"
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+#, fuzzy
+msgid "Changing the type of an imported file requires editor restart."
+msgstr "Mudar o driver de vídeo necessita reinicializar o editor."
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr "Falha ao carregar recurso."
@@ -7164,6 +7177,38 @@ msgid "Browse"
msgstr "Navegar"
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr "Projeto Sem Nome"
@@ -7887,12 +7932,17 @@ msgid "Duplicate Node(s)"
msgstr "Duplicar Nó(s)"
#: editor/scene_tree_dock.cpp
-msgid "Node must belong to the edited scene to become root."
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
msgstr ""
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Node must belong to the edited scene to become root."
+msgstr "Node necessita pertencer à cena editada para se tornar raiz."
+
+#: editor/scene_tree_dock.cpp
msgid "Instantiated scenes can't become root"
-msgstr ""
+msgstr "Cenas instanciadas não podem se tornar raiz"
#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)?"
@@ -9107,20 +9157,24 @@ msgid "Set %s"
msgstr "Conjunto %s"
#: platform/android/export/export.cpp
+#, fuzzy
msgid "Package name is missing."
-msgstr ""
+msgstr "Nome do pacote está faltando."
#: platform/android/export/export.cpp
+#, fuzzy
msgid "Package segments must be of non-zero length."
-msgstr ""
+msgstr "Seguimentos de pacote necessitam ser de tamanho diferente de zero."
#: platform/android/export/export.cpp
msgid "The character '%s' is not allowed in Android application package names."
msgstr ""
+"O caractere '%s' não é permitido em nomes de pacotes de aplicações Android."
#: platform/android/export/export.cpp
msgid "A digit cannot be the first character in a package segment."
msgstr ""
+"Um dígito não pode ser o primeiro caractere em um seguimento de pacote."
#: platform/android/export/export.cpp
msgid "The character '%s' cannot be the first character in a package segment."
diff --git a/editor/translations/pt_PT.po b/editor/translations/pt_PT.po
index 3d9626592f..c3e9b189c2 100644
--- a/editor/translations/pt_PT.po
+++ b/editor/translations/pt_PT.po
@@ -13,13 +13,13 @@
# Rueben Stevens <supercell03@gmail.com>, 2017.
# SARDON <fabio3_Santos@hotmail.com>, 2017.
# Vinicius Gonçalves <viniciusgoncalves21@gmail.com>, 2017.
-# ssantos <ssantos@web.de>, 2018.
+# ssantos <ssantos@web.de>, 2018, 2019.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2019-01-13 15:07+0000\n"
-"Last-Translator: João Lopes <linux-man@hotmail.com>\n"
+"PO-Revision-Date: 2019-01-26 21:22+0000\n"
+"Last-Translator: ssantos <ssantos@web.de>\n"
"Language-Team: Portuguese (Portugal) <https://hosted.weblate.org/projects/"
"godot-engine/godot/pt_PT/>\n"
"Language: pt_PT\n"
@@ -27,7 +27,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 3.4-dev\n"
+"X-Generator: Weblate 3.5-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -1299,7 +1299,7 @@ msgstr "Arquivo de Armazenamento:"
#: editor/editor_export.cpp
msgid "No export template found at the expected path:"
-msgstr ""
+msgstr "Nenhum modelo de exportação encontrado no caminho previsto:"
#: editor/editor_export.cpp
msgid "Packing"
@@ -1308,15 +1308,14 @@ msgstr "Empacotamento"
#: editor/editor_export.cpp platform/android/export/export.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#, fuzzy
msgid "Custom debug template not found."
-msgstr "Ficheiro Modelo não encontrado:"
+msgstr "Modelo de depuração personalizado não encontrado."
#: editor/editor_export.cpp platform/android/export/export.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom release template not found."
-msgstr ""
+msgstr "Modelo de lançamento personalizado não encontrado."
#: editor/editor_export.cpp platform/javascript/export/export.cpp
msgid "Template file not found:"
@@ -2615,9 +2614,8 @@ msgid "Assign..."
msgstr "Atribuir..."
#: editor/editor_properties.cpp
-#, fuzzy
msgid "Invalid RID"
-msgstr "Caminho inválido"
+msgstr "RID inválido"
#: editor/editor_properties.cpp
msgid ""
@@ -3327,6 +3325,20 @@ msgstr "Predefinido..."
msgid "Reimport"
msgstr "Reimportar"
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+#, fuzzy
+msgid "Changing the type of an imported file requires editor restart."
+msgstr "Alterar o driver de vídeo requer reiniciar o editor."
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr "Falha ao carregar recurso."
@@ -5193,28 +5205,24 @@ msgid "Create Polygon & UV"
msgstr "Criar Polígono & UV"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid "Create Internal Vertex"
-msgstr "Criar nova guia horizontal"
+msgstr "Criar vértice interno"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid "Remove Internal Vertex"
-msgstr "Remover Ponto In-Control"
+msgstr "Remover Vértice Interno"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Invalid Polygon (need 3 different vertices)"
-msgstr ""
+msgstr "Polígono inválido (precisa de 3 vértices diferentes)"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid "Add Custom Polygon"
-msgstr "Editar Polígono"
+msgstr "Adicionar Polígono Personalizado"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid "Remove Custom Polygon"
-msgstr "Remover Polígono de Colisão"
+msgstr "Remover Polígono Personalizado"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Transform UV Map"
@@ -5241,14 +5249,12 @@ msgid "UV"
msgstr "UV"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid "Points"
-msgstr "Ponto"
+msgstr "Pontos"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid "Polygons"
-msgstr "Polígono->UV"
+msgstr "Polígonos"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Bones"
@@ -5285,12 +5291,16 @@ msgstr "Escalar Polígono"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Create a custom polygon. Enables custom polygon rendering."
msgstr ""
+"Crie um polígono personalizado. Habilita a renderização de polígonos "
+"personalizados."
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid ""
"Remove a custom polygon. If none remain, custom polygon rendering is "
"disabled."
msgstr ""
+"Remover um polígono personalizado. Se não restar nenhum, a renderização de "
+"polígonos personalizados é desativada."
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Paint weights with specified intensity."
@@ -7123,6 +7133,38 @@ msgid "Browse"
msgstr "Navegar"
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr "Projeto sem nome"
@@ -7845,12 +7887,16 @@ msgid "Duplicate Node(s)"
msgstr "Duplicar Nó(s)"
#: editor/scene_tree_dock.cpp
-msgid "Node must belong to the edited scene to become root."
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Node must belong to the edited scene to become root."
+msgstr "O nó deve pertencer à cena editada para se tornar root."
+
+#: editor/scene_tree_dock.cpp
msgid "Instantiated scenes can't become root"
-msgstr ""
+msgstr "Cenas instantâneas não se podem tornar root"
#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)?"
@@ -9064,87 +9110,93 @@ msgstr "Definir %s"
#: platform/android/export/export.cpp
msgid "Package name is missing."
-msgstr ""
+msgstr "Falta o nome do pacote."
#: platform/android/export/export.cpp
msgid "Package segments must be of non-zero length."
-msgstr ""
+msgstr "Os segmentos de pacote devem ser de comprimento diferente de zero."
#: platform/android/export/export.cpp
msgid "The character '%s' is not allowed in Android application package names."
msgstr ""
+"O caractere '%s' não é permitido em nomes de pacotes de aplicativos Android."
#: platform/android/export/export.cpp
msgid "A digit cannot be the first character in a package segment."
-msgstr ""
+msgstr "Um dígito não pode ser o primeiro caractere num segmento de pacote."
#: platform/android/export/export.cpp
msgid "The character '%s' cannot be the first character in a package segment."
msgstr ""
+"O caractere '%s' não pode ser o primeiro caractere num segmento de pacote."
#: platform/android/export/export.cpp
msgid "The package must have at least one '.' separator."
-msgstr ""
+msgstr "O pacote deve ter pelo menos um separador '.'."
#: platform/android/export/export.cpp
msgid "ADB executable not configured in the Editor Settings."
-msgstr ""
+msgstr "O executável ADB não está configurado nas Configurações do Editor."
#: platform/android/export/export.cpp
msgid "OpenJDK jarsigner not configured in the Editor Settings."
-msgstr ""
+msgstr "O jarsigner do OpenJDK não está configurado nas Definições do Editor."
#: platform/android/export/export.cpp
msgid "Debug keystore not configured in the Editor Settings nor in the preset."
msgstr ""
+"Depuração de keystore não configurado nas Configurações do Editor e nem na "
+"predefinição."
#: platform/android/export/export.cpp
msgid "Invalid public key for APK expansion."
-msgstr ""
+msgstr "Chave pública inválida para expansão APK."
#: platform/android/export/export.cpp
-#, fuzzy
msgid "Invalid package name:"
-msgstr "Nome de classe inválida"
+msgstr "Nome de pacote inválido:"
#: platform/iphone/export/export.cpp
msgid "Identifier is missing."
-msgstr ""
+msgstr "Falta o identificador."
#: platform/iphone/export/export.cpp
msgid "Identifier segments must be of non-zero length."
-msgstr ""
+msgstr "Identificador de segmentos devem ser de comprimento diferente de zero."
#: platform/iphone/export/export.cpp
-#, fuzzy
msgid "The character '%s' is not allowed in Identifier."
-msgstr "O nome não é um identificador válido:"
+msgstr "O caractere \"%s\" não é permitido no Identificador."
#: platform/iphone/export/export.cpp
msgid "A digit cannot be the first character in a Identifier segment."
msgstr ""
+"Um dígito não pode ser o primeiro caractere em um segmento de Identificador."
#: platform/iphone/export/export.cpp
msgid ""
"The character '%s' cannot be the first character in a Identifier segment."
msgstr ""
+"O caractere \"%s\" não pode ser o primeiro caractere num segmento de "
+"Identificador."
#: platform/iphone/export/export.cpp
msgid "The Identifier must have at least one '.' separator."
-msgstr ""
+msgstr "O identificador deve ter pelo menos um separador \".\"."
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
+"ID da equipa da App Store não especificado - não é possível configurar o "
+"projecto."
#: platform/iphone/export/export.cpp
-#, fuzzy
msgid "Invalid Identifier:"
-msgstr "O nome não é um identificador válido:"
+msgstr "Identificador Inválido:"
#: platform/iphone/export/export.cpp
msgid "Required icon is not specified in the preset."
-msgstr ""
+msgstr "O ícone obrigatório não está especificado na predefinição."
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
@@ -9179,52 +9231,54 @@ msgid "Using default boot splash image."
msgstr "A usar imagem padrão de inicialização."
#: platform/uwp/export/export.cpp
-#, fuzzy
msgid "Invalid package unique name."
-msgstr "Nome de índice propriedade inválido."
+msgstr "Nome único de pacote inválido."
#: platform/uwp/export/export.cpp
-#, fuzzy
msgid "Invalid product GUID."
-msgstr "Nome do Projeto Inválido."
+msgstr "GUID do produto inválido."
#: platform/uwp/export/export.cpp
-#, fuzzy
msgid "Invalid publisher GUID."
-msgstr "Separação inválida: "
+msgstr "GUID do editor inválido."
#: platform/uwp/export/export.cpp
-#, fuzzy
msgid "Invalid background color."
-msgstr "Nome de grupo inválido."
+msgstr "Cor de fundo inválida."
#: platform/uwp/export/export.cpp
msgid "Invalid Store Logo image dimensions (should be 50x50)."
-msgstr ""
+msgstr "Inválidas dimensões da imagem do logotipo do Store (deve ser 50x50)."
#: platform/uwp/export/export.cpp
msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
msgstr ""
+"Dimensões inválidas do quadrado 44x44 da imagem do logotipo (deve ser 44x44)."
#: platform/uwp/export/export.cpp
msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
msgstr ""
+"Quadrado inválido 71x71 das dimensões da imagem do logotipo (deve ser 71x71)."
#: platform/uwp/export/export.cpp
msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
msgstr ""
+"Quadrado inválido 150x150 das dimensões da imagem do logotipo (deve ser "
+"150x150)."
#: platform/uwp/export/export.cpp
msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
msgstr ""
+"Quadrado inválido 310x310 das dimensões da imagem do logotipo (deve ser "
+"310x310)."
#: platform/uwp/export/export.cpp
msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
-msgstr ""
+msgstr "Largura inválida da imagem do logotipo 310x150 (deve ser 310x150)."
#: platform/uwp/export/export.cpp
msgid "Invalid splash screen image dimensions (should be 620x300)."
-msgstr ""
+msgstr "Dimensões inválidas da imagem do ecrã inicial (deve ser 620x300)."
#: scene/2d/animated_sprite.cpp
msgid ""
@@ -9542,12 +9596,12 @@ msgid "PathFollow only works when set as a child of a Path node."
msgstr "PathFollow apenas funciona quando definido como filho de um Nó Path."
#: scene/3d/path.cpp
-#, fuzzy
msgid ""
"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent "
"Path's Curve resource."
msgstr ""
-"OrientedPathFollow requer \"Up Vector\" ativado no recurso Curve do pai dele."
+"PathFollow ROTATION_ORIENTED requer \"Up Vector\" habilitado em seu recurso "
+"de Curva do caminho pai."
#: scene/3d/physics_body.cpp
msgid ""
diff --git a/editor/translations/ro.po b/editor/translations/ro.po
index af5ba72479..88e95546a6 100644
--- a/editor/translations/ro.po
+++ b/editor/translations/ro.po
@@ -3397,6 +3397,20 @@ msgstr "Presetare..."
msgid "Reimport"
msgstr "Reimportă"
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+#, fuzzy
+msgid "Changing the type of an imported file requires editor restart."
+msgstr "Schimbarea driver-ului video necesită restartarea editorului."
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr "Încărcarea resursei a eșuat."
@@ -7295,6 +7309,38 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -8005,6 +8051,10 @@ msgid "Duplicate Node(s)"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Node must belong to the edited scene to become root."
msgstr ""
diff --git a/editor/translations/ru.po b/editor/translations/ru.po
index bb8b8da15b..901e7858ce 100644
--- a/editor/translations/ru.po
+++ b/editor/translations/ru.po
@@ -22,22 +22,23 @@
# Егор Бураков <fend.q@mail.ru>, 2018.
# Grigore Antoniuc <grisa181@gmail.com>, 2018.
# Neo6666666 <Neo6666666@gmail.com>, 2018.
-# Roman <Steel_hawk@list.ru>, 2018.
+# Roman <Steel_hawk@list.ru>, 2018, 2019.
# Егор РÑбуха (REgorion) <ryrgor@gmail.com>, 2018.
# Yan <uvokinuvokines@gmail.com>, 2018.
-# V. <Unit68189@gmail.com>, 2018.
+# V. <Unit68189@gmail.com>, 2018, 2019.
# Victor Butorin <mrwebsterchannel@gmail.com>, 2018.
# ÐлекÑандр <ol-vin@mail.ru>, 2018, 2019.
-# Ðнатолий Горбунов <afgorbunov@gmail.com>, 2018.
-# Vadim Vergasov <vadim.vergasov2003@gmail.com>, 2018.
+# Ðнатолий Горбунов <afgorbunov@gmail.com>, 2018, 2019.
+# Vadim Vergasov <vadim.vergasov2003@gmail.com>, 2018, 2019.
# ÐÑлан Снупов <aslan170505@gmail.com>, 2018.
# Alexandr Eremeev <ae125529@gmail.com>, 2019.
+# Ruaguzov Michael <miha890r@gmail.com>, 2019.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2019-01-18 22:28+0000\n"
-"Last-Translator: ÐлекÑандр <ol-vin@mail.ru>\n"
+"PO-Revision-Date: 2019-01-26 21:22+0000\n"
+"Last-Translator: Ruaguzov Michael <miha890r@gmail.com>\n"
"Language-Team: Russian <https://hosted.weblate.org/projects/godot-engine/"
"godot/ru/>\n"
"Language: ru\n"
@@ -46,7 +47,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: Weblate 3.4-dev\n"
+"X-Generator: Weblate 3.5-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -995,7 +996,6 @@ msgid "Uncompressing Assets"
msgstr "РаÑпаковка аÑÑетов"
#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-#, fuzzy
msgid "Package installed successfully!"
msgstr "Пакет уÑпешно уÑтановлен!"
@@ -1240,7 +1240,7 @@ msgstr "Ðе в пути реÑурÑов."
#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
-msgstr "Добавить автозагрузку"
+msgstr "Добавить в автозагрузку"
#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
#: editor/plugins/animation_tree_editor_plugin.cpp scene/gui/file_dialog.cpp
@@ -1314,11 +1314,8 @@ msgid "Storing File:"
msgstr "Сохранение файла:"
#: editor/editor_export.cpp
-#, fuzzy
msgid "No export template found at the expected path:"
-msgstr ""
-"Шаблоны ÑкÑпорта не найдены.\n"
-"Скачайте и уÑтановите шаблоны ÑкÑпорта."
+msgstr "Шаблоны ÑкÑпорта не найдены по ожидаемому пути:"
#: editor/editor_export.cpp
msgid "Packing"
@@ -1327,9 +1324,8 @@ msgstr "Упаковывание"
#: editor/editor_export.cpp platform/android/export/export.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#, fuzzy
msgid "Custom debug template not found."
-msgstr "ПользовательÑкий отладочный пакет не найден."
+msgstr "ПользовательÑкий отладочный шаблон не найден."
#: editor/editor_export.cpp platform/android/export/export.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
@@ -2325,16 +2321,17 @@ msgid "Toggle Fullscreen"
msgstr "Переключить полноÑкранный режим"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Open Editor Data/Settings Folder"
msgstr "Открыть папку данных/наÑтроек редактора"
#: editor/editor_node.cpp
msgid "Open Editor Data Folder"
-msgstr "Открыть папку данных редактора"
+msgstr "Открыть папку редактора данных"
#: editor/editor_node.cpp
msgid "Open Editor Settings Folder"
-msgstr "Открыть папку наÑтроек Редктора"
+msgstr "Открыть папку наÑтроек редактора"
#: editor/editor_node.cpp editor/project_export.cpp
msgid "Manage Export Templates"
@@ -2629,22 +2626,19 @@ msgid "[Empty]"
msgstr "[ПуÑто]"
#: editor/editor_properties.cpp editor/plugins/root_motion_editor_plugin.cpp
-#, fuzzy
msgid "Assign..."
-msgstr "Ðазначить.."
+msgstr "ÐазначаетÑÑ..."
#: editor/editor_properties.cpp
-#, fuzzy
msgid "Invalid RID"
msgstr "Ðеверный путь"
#: editor/editor_properties.cpp
-#, fuzzy
msgid ""
"The selected resource (%s) does not match any type expected for this "
"property (%s)."
msgstr ""
-"Выбранные реÑурÑÑ‹ (%s) не ÑоответÑтвуют типу, ожидаемому Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ "
+"Выбранные реÑурÑÑ‹ (%s) не ÑоответÑтвуют типам, ожидаемым Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ "
"ÑвойÑтва (%s)."
#: editor/editor_properties.cpp
@@ -2664,8 +2658,8 @@ msgid ""
msgstr ""
"Ðевозможно Ñоздать ViewportTexture Ð´Ð»Ñ Ñтого реÑурÑа, потому что он не "
"уÑтановлен как локальный Ð´Ð»Ñ Ñцены.\n"
-"Включите ÑвойÑтво «Локально Ð´Ð»Ñ Ñцены» (и вÑе реÑурÑÑ‹, Ñодержащие его вверх "
-"от узла)."
+"ПожалуйÑта, включите ÑвойÑтво «Локально Ð´Ð»Ñ Ñцены» Ð´Ð»Ñ Ð½ÐµÐ³Ð¾ (и Ð´Ð»Ñ Ð²Ñех "
+"родительÑких реÑурÑов)."
#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Pick a Viewport"
@@ -2730,7 +2724,7 @@ msgstr "Ðовое значение:"
#: editor/editor_properties_array_dict.cpp
msgid "Add Key/Value Pair"
-msgstr "добавить пару Ключ/Значение"
+msgstr "Добавить пару: Ключ/Значение"
#: editor/editor_properties_array_dict.cpp
#: editor/plugins/theme_editor_plugin.cpp
@@ -2812,7 +2806,7 @@ msgstr "(Текущий)"
#: editor/export_template_manager.cpp
msgid "Retrieving mirrors, please wait..."
-msgstr "Получение зеркал, пожалуйÑта подождите."
+msgstr "Получение зеркал, пожалуйÑта подождите..."
#: editor/export_template_manager.cpp
msgid "Remove template version '%s'?"
@@ -2824,7 +2818,7 @@ msgstr "Ðе удаётÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ архив шаблонов ÑкÑпÐ
#: editor/export_template_manager.cpp
msgid "Invalid version.txt format inside templates: %s."
-msgstr "ÐедейÑтвительный формат version.txt внутри шаблонов: %s."
+msgstr "Ðеверный формат version.txt файла внутри шаблонов: %s."
#: editor/export_template_manager.cpp
msgid "No version.txt found inside templates."
@@ -2852,6 +2846,7 @@ msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
msgid "Can't resolve."
msgstr "Ðе удаётÑÑ Ñ€Ð°Ð·Ñ€ÐµÑˆÐ¸Ñ‚ÑŒ."
@@ -3347,6 +3342,20 @@ msgstr "ПредуÑтановка..."
msgid "Reimport"
msgstr "Переимпортировать"
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+#, fuzzy
+msgid "Changing the type of an imported file requires editor restart."
+msgstr "Ð”Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð²Ð¸Ð´ÐµÐ¾Ð´Ñ€Ð°Ð¹Ð²ÐµÑ€Ð° необходим перезапуÑк редактора."
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr "Ðе удалоÑÑŒ загрузить реÑурÑ."
@@ -3518,9 +3527,8 @@ msgstr "Добавить анимацию"
#: editor/plugins/animation_blend_space_2d_editor.cpp
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
#: editor/plugins/animation_state_machine_editor.cpp
-#, fuzzy
msgid "Load..."
-msgstr "Загрузить.."
+msgstr "Загрузка..."
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
@@ -3904,9 +3912,8 @@ msgid "Connect nodes."
msgstr "Соединить узлы."
#: editor/plugins/animation_state_machine_editor.cpp
-#, fuzzy
msgid "Remove selected node or transition."
-msgstr "Удалить выделенный узел или переход"
+msgstr "Удалить выделенный узел или переход."
#: editor/plugins/animation_state_machine_editor.cpp
msgid "Toggle autoplay this animation on start, restart or seek to zero."
@@ -5218,28 +5225,24 @@ msgid "Create Polygon & UV"
msgstr "Создать Полигон и UV"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid "Create Internal Vertex"
-msgstr "Создать новую горизонтальную направлÑющую"
+msgstr "Создать внутреннюю вершину"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid "Remove Internal Vertex"
-msgstr "Удалить входную контрольную точку"
+msgstr "Удалить внутреннюю вершину"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Invalid Polygon (need 3 different vertices)"
msgstr "Ðекорректный Полигон (требуетÑÑ 3 различные вершины)"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid "Add Custom Polygon"
-msgstr "Редактировать полигон"
+msgstr "Добавить пользовательÑкий полигон"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid "Remove Custom Polygon"
-msgstr "Удалить Полигон и Точку"
+msgstr "Удалить пользовательÑкий полигон"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Transform UV Map"
@@ -5250,9 +5253,8 @@ msgid "Transform Polygon"
msgstr "Преобразовать полигон"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid "Paint Bone Weights"
-msgstr "КоÑтные грузы Ð´Ð»Ñ ÐºÑ€Ð°Ñки"
+msgstr "Изменить Ð²ÐµÑ ÐºÐ¾Ñтей"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Open Polygon 2D UV editor."
@@ -5267,14 +5269,12 @@ msgid "UV"
msgstr "UV"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid "Points"
-msgstr "Точка"
+msgstr "Точки"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid "Polygons"
-msgstr "Полигон -> UV"
+msgstr "Полигоны"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Bones"
@@ -5309,28 +5309,25 @@ msgid "Scale Polygon"
msgstr "МаÑштабировать полигон"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid "Create a custom polygon. Enables custom polygon rendering."
msgstr ""
-"Создать пользовательÑкий полигон. ПозволÑет наÑтраивать рендеринг полигонов."
+"Создать пользовательÑкий полигон. Включает рендер пользовательÑких полигонов."
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid ""
"Remove a custom polygon. If none remain, custom polygon rendering is "
"disabled."
msgstr ""
-"Удалить пользовательÑкий полигон. ЕÑли ничего не оÑталоÑÑŒ, пользовательÑкий "
-"рендеринг полигонов отключен."
+"Удалить пользовательÑкий полигон. ЕÑли ничего не оÑталоÑÑŒ, рендер "
+"пользовательÑких полигонов отключитÑÑ."
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Paint weights with specified intensity."
msgstr "ПокраÑить веÑа Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð¹ интенÑивноÑтью."
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid "Unpaint weights with specified intensity."
-msgstr "СнÑть краÑку веÑа Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð¹ интенÑивноÑтью"
+msgstr "Убрать Ð²ÐµÑ Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð¹ интенÑивноÑтью."
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Radius:"
@@ -5923,7 +5920,7 @@ msgstr "Ð’Ñ‹Ñота"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Yaw"
-msgstr "Отклонение"
+msgstr "РыÑкание"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn"
@@ -6469,7 +6466,7 @@ msgstr "Разделитель:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
-msgstr "TextureRegion"
+msgstr "ОблаÑтьТекÑтуры"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Can't save theme to file:"
@@ -6720,27 +6717,25 @@ msgid "Display Tile Names (Hold Alt Key)"
msgstr "Отобразить имена плиток (удерживать нажатой клавишу Alt)"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Remove selected texture? This will remove all tiles which use it."
-msgstr "Удалить выделенную текÑтуру и ВСЕ ПЛИТКИ, которые ее иÑпользуют?"
+msgstr ""
+"Удалить выделенную текÑтуру? Это удалит вÑе тайлы, которые её иÑпользуют."
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "You haven't selected a texture to remove."
msgstr "Ð’Ñ‹ не выбрали текÑтуру Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ."
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Create from scene? This will overwrite all current tiles."
-msgstr "Создавать из Ñцены? Это перезапишет вÑе текущие плитки."
+msgstr "Создавать из Ñцены? Это перезапишет вÑе текущие тайлы."
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Merge from scene?"
msgstr "СлиÑние из Ñцены?"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Remove Texture"
-msgstr "Удалить шаблон"
+msgstr "Удалить текÑтуру"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "%s file(s) were not added because was already on the list."
@@ -6807,86 +6802,72 @@ msgstr ""
"Ðажмите на другую плитку, чтобы отредактировать ее."
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Set Tile Region"
-msgstr "Задать регион"
+msgstr "Задать облаÑть тайла"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Create Tile"
-msgstr "Создать папку"
+msgstr "Создать тайл"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Set Tile Icon"
msgstr "УÑтановить Иконку Плитки"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Edit Tile Bitmask"
-msgstr "Редактировать фильтры"
+msgstr "Редактировать битовую маÑку тайла"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Edit Collision Polygon"
-msgstr "Редактировать ÑущеÑтвующий полигон:"
+msgstr "Редактирование полигона Ñтолкновений"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Edit Occlusion Polygon"
-msgstr "Редактировать полигон"
+msgstr "Редактировать полигон перекрытиÑ"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Edit Navigation Polygon"
-msgstr "Создать Navigation Polygon"
+msgstr "Редактирование полигона навигации"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Paste Tile Bitmask"
-msgstr "Ð’Ñтавить битовую маÑку."
+msgstr "Ð’Ñтавить битовую маÑку тайла"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Clear Tile Bitmask"
msgstr "ОчиÑтить Битовую МаÑку Плитки"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Remove Tile"
-msgstr "Удалить шаблон"
+msgstr "Удалить тайл"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Remove Collision Polygon"
-msgstr "Удалить Полигон и Точку"
+msgstr "Удалить полигон Ñтолкновений"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Remove Occlusion Polygon"
-msgstr "Создан затенÑющий полигон"
+msgstr "Удалить полигон перекрытиÑ"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Remove Navigation Polygon"
-msgstr "Создать Navigation Polygon"
+msgstr "Удалить полигон навигации"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Edit Tile Priority"
-msgstr "Редактировать фильтры"
+msgstr "Редактировать приоритет тайла"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Edit Tile Z Index"
msgstr "Редактирование Z индекÑа плитки"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Create Collision Polygon"
-msgstr "Создать Navigation Polygon"
+msgstr "Создать полигон Ñтолкновений"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Create Occlusion Polygon"
-msgstr "Создан затенÑющий полигон"
+msgstr "Создать полигон перекрытиÑ"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "This property can't be changed."
@@ -7005,9 +6986,8 @@ msgid "Feature List:"
msgstr "СпиÑок ÑвойÑтв:"
#: editor/project_export.cpp
-#, fuzzy
msgid "Script"
-msgstr "Ðовый Ñкрипт"
+msgstr "Скрипт"
#: editor/project_export.cpp
msgid "Script Export Mode:"
@@ -7172,13 +7152,44 @@ msgid "Browse"
msgstr "Обзор"
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr "БезымÑнный проект"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Can't open project at '%s'."
-msgstr "Ðе удаётÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ проект"
+msgstr "ÐÐµÐ»ÑŒÐ·Ñ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ проект в \"%s\"."
#: editor/project_manager.cpp
msgid "Are you sure to open more than one project?"
@@ -7779,7 +7790,7 @@ msgstr ""
#: editor/rename_dialog.cpp
msgid "Regular Expressions"
-msgstr "РегулÑрные ВыражениÑ"
+msgstr "РегулÑрное выражение"
#: editor/rename_dialog.cpp
msgid "Post-Process"
@@ -7794,9 +7805,8 @@ msgid "CamelCase to under_scored"
msgstr "CamelCase в under_scored"
#: editor/rename_dialog.cpp
-#, fuzzy
msgid "under_scored to CamelCase"
-msgstr "under_scored в CamelCase"
+msgstr "under_scored к CamelCase"
#: editor/rename_dialog.cpp
#, fuzzy
@@ -7804,18 +7814,16 @@ msgid "Case"
msgstr "РегиÑтр"
#: editor/rename_dialog.cpp
-#, fuzzy
msgid "To Lowercase"
-msgstr "нижний региÑтр"
+msgstr "К нижнему региÑтру"
#: editor/rename_dialog.cpp
-#, fuzzy
msgid "To Uppercase"
-msgstr "ВЕРХÐИЙ РЕГИСТР"
+msgstr "Ð’ верхний региÑтр"
#: editor/rename_dialog.cpp
msgid "Reset"
-msgstr "СброÑ"
+msgstr "СброÑить"
#: editor/rename_dialog.cpp
msgid "Error"
@@ -7902,12 +7910,16 @@ msgid "Duplicate Node(s)"
msgstr "Дублировать узел(узлы)"
#: editor/scene_tree_dock.cpp
-msgid "Node must belong to the edited scene to become root."
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Node must belong to the edited scene to become root."
+msgstr "Узел должен принадлежать редактируемой Ñцене, что бы Ñтать корневым."
+
+#: editor/scene_tree_dock.cpp
msgid "Instantiated scenes can't become root"
-msgstr ""
+msgstr "Мгновенные Ñцены не могут быть корневыми"
#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)?"
@@ -7951,11 +7963,11 @@ msgstr "Создать корневой узел:"
#: editor/scene_tree_dock.cpp
msgid "2D Scene"
-msgstr "2D-Ñцена"
+msgstr "2D Ñцена"
#: editor/scene_tree_dock.cpp
msgid "3D Scene"
-msgstr "3D-Ñцена"
+msgstr "3D Ñцена"
#: editor/scene_tree_dock.cpp
msgid "User Interface"
@@ -8179,7 +8191,6 @@ msgid "N/A"
msgstr "Ð/Д"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Open Script/Choose Location"
msgstr "Открыть Скрипт/Выбрать МеÑто"
@@ -8402,9 +8413,8 @@ msgid "Change Camera Size"
msgstr "Изменить размер камеры"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Change Notifier AABB"
-msgstr "Изменить границы уведомителÑ"
+msgstr "Изменить уведомитель AABB"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Particles AABB"
@@ -8511,7 +8521,6 @@ msgid "GDNative"
msgstr "GDNative"
#: modules/gdscript/gdscript_functions.cpp
-#, fuzzy
msgid "Step argument is zero!"
msgstr "Ðргумент шага равен нулю!"
@@ -8577,9 +8586,8 @@ msgid "GridMap Delete Selection"
msgstr "Удалить выделенную Ñетку"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "GridMap Fill Selection"
-msgstr "Заполнить выделенную GridMap"
+msgstr "Злить выделенную GridMap"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "GridMap Duplicate Selection"
@@ -8734,9 +8742,8 @@ msgid "End of inner exception stack trace"
msgstr "Конец траÑÑировки внутреннего Ñтека иÑключений"
#: modules/recast/navigation_mesh_editor_plugin.cpp
-#, fuzzy
msgid "Bake NavMesh"
-msgstr "ИÑпечь NavMesh"
+msgstr "Запечь NavMesh"
#: modules/recast/navigation_mesh_editor_plugin.cpp
msgid "Clear the navigation mesh."
@@ -8963,7 +8970,6 @@ msgid "Connect Nodes"
msgstr "ПриÑоединить узлы"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Connect Node Data"
msgstr "ПриÑоединить данные узла"
@@ -9130,87 +9136,87 @@ msgstr "Задать %s"
#: platform/android/export/export.cpp
msgid "Package name is missing."
-msgstr ""
+msgstr "ОтÑутÑтвует Ð¸Ð¼Ñ Ð¿Ð°ÐºÐµÑ‚Ð°."
#: platform/android/export/export.cpp
msgid "Package segments must be of non-zero length."
-msgstr ""
+msgstr "ЧаÑти пакета не могут быть пуÑтыми."
#: platform/android/export/export.cpp
msgid "The character '%s' is not allowed in Android application package names."
-msgstr ""
+msgstr "Символ '%s' не допуÑтим в имени пакета Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð´ Android."
#: platform/android/export/export.cpp
msgid "A digit cannot be the first character in a package segment."
-msgstr ""
+msgstr "ЧиÑло не может быть первым Ñимволом в чаÑти пакета."
#: platform/android/export/export.cpp
msgid "The character '%s' cannot be the first character in a package segment."
-msgstr ""
+msgstr "Символ '%s' не может ÑтоÑть первым в Ñегменте пакета."
#: platform/android/export/export.cpp
msgid "The package must have at least one '.' separator."
-msgstr ""
+msgstr "Пакет должен иметь Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ один '.' разделитель."
#: platform/android/export/export.cpp
msgid "ADB executable not configured in the Editor Settings."
-msgstr ""
+msgstr "ИÑполнÑемый файл ADB не Ñконфигурирован в наÑтройках редактора."
#: platform/android/export/export.cpp
+#, fuzzy
msgid "OpenJDK jarsigner not configured in the Editor Settings."
-msgstr ""
+msgstr "Значок OpenJDK jarsigner не Ñконфигурирован в наÑтройках редактора."
#: platform/android/export/export.cpp
msgid "Debug keystore not configured in the Editor Settings nor in the preset."
msgstr ""
+"ÐžÑ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ð°Ñ ÐºÐ»Ð°Ð²Ð¸Ð°Ñ‚ÑƒÑ€Ð° не наÑтроена ни в наÑтройках редактора, ни в "
+"предуÑтановках."
#: platform/android/export/export.cpp
msgid "Invalid public key for APK expansion."
-msgstr ""
+msgstr "ÐедейÑтвительный публичный ключ Ð´Ð»Ñ Ñ€Ð°ÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ APK."
#: platform/android/export/export.cpp
-#, fuzzy
msgid "Invalid package name:"
-msgstr "ÐедопуÑтимое Ð¸Ð¼Ñ ÐºÐ»Ð°ÑÑа"
+msgstr "ÐедопуÑтимое Ð¸Ð¼Ñ Ð¿Ð°ÐºÐµÑ‚Ð°:"
#: platform/iphone/export/export.cpp
msgid "Identifier is missing."
-msgstr ""
+msgstr "ОтÑутÑтвует определитель."
#: platform/iphone/export/export.cpp
msgid "Identifier segments must be of non-zero length."
-msgstr ""
+msgstr "Идентифицированные Ñегменты не должны быть пуÑтыми."
#: platform/iphone/export/export.cpp
-#, fuzzy
msgid "The character '%s' is not allowed in Identifier."
-msgstr "Ð˜Ð¼Ñ Ð½Ðµ ÑвлÑетÑÑ Ð´Ð¾Ð¿ÑƒÑтимым идентификатором:"
+msgstr "Символ '%s' в идентификаторе не допуÑкаетÑÑ."
#: platform/iphone/export/export.cpp
msgid "A digit cannot be the first character in a Identifier segment."
-msgstr ""
+msgstr "Цифра не может быть первым Ñимволом идентификатора Ñегмента."
#: platform/iphone/export/export.cpp
msgid ""
"The character '%s' cannot be the first character in a Identifier segment."
-msgstr ""
+msgstr "Символ '%s' не может быть первым Ñимволом идентификатора Ñегмента."
#: platform/iphone/export/export.cpp
msgid "The Identifier must have at least one '.' separator."
-msgstr ""
+msgstr "Идентификатор должен иметь Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ один '.' разделитель."
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
-msgstr ""
+msgstr "App Store Team ID не указан - невозможно наÑтроить проект."
#: platform/iphone/export/export.cpp
-#, fuzzy
msgid "Invalid Identifier:"
-msgstr "Ð˜Ð¼Ñ Ð½Ðµ ÑвлÑетÑÑ Ð´Ð¾Ð¿ÑƒÑтимым идентификатором:"
+msgstr "Ðеверный идентификатор:"
#: platform/iphone/export/export.cpp
msgid "Required icon is not specified in the preset."
-msgstr ""
+msgstr "Требуемый значок не указан в предуÑтановке."
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
@@ -9245,9 +9251,8 @@ msgid "Using default boot splash image."
msgstr "ИÑпользовать Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð·Ð°Ñтавки по умолчанию."
#: platform/uwp/export/export.cpp
-#, fuzzy
msgid "Invalid package unique name."
-msgstr "Ðеверное уникальное имÑ."
+msgstr "Ðеверное уникальное Ð¸Ð¼Ñ Ð¿Ð°ÐºÐµÑ‚Ð°."
#: platform/uwp/export/export.cpp
msgid "Invalid product GUID."
@@ -9608,13 +9613,12 @@ msgid "PathFollow only works when set as a child of a Path node."
msgstr "PathFollow работает только при еÑли она дочь узла Path."
#: scene/3d/path.cpp
-#, fuzzy
msgid ""
"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent "
"Path's Curve resource."
msgstr ""
-"OrientedPathFollow требует, чтобы в его родительÑком пути были включены "
-"векторы."
+"PathFollow ROTATION_ORIENTED требует Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° \"Up Vector\" в "
+"родительÑком реÑурÑе Path's Curve."
#: scene/3d/physics_body.cpp
msgid ""
@@ -9804,9 +9808,8 @@ msgid "Invalid font size."
msgstr "ÐедопуÑтимый размер шрифта."
#: scene/resources/visual_shader.cpp
-#, fuzzy
msgid "Input"
-msgstr "Добавить вход"
+msgstr "Вход"
#: scene/resources/visual_shader_nodes.cpp
msgid "Invalid source for shader."
diff --git a/editor/translations/si.po b/editor/translations/si.po
index f313cbfaa6..286cddb867 100644
--- a/editor/translations/si.po
+++ b/editor/translations/si.po
@@ -3197,6 +3197,19 @@ msgstr ""
msgid "Reimport"
msgstr ""
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Changing the type of an imported file requires editor restart."
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr ""
@@ -6932,6 +6945,38 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -7623,6 +7668,10 @@ msgid "Duplicate Node(s)"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Node must belong to the edited scene to become root."
msgstr ""
diff --git a/editor/translations/sk.po b/editor/translations/sk.po
index 0e5c8f84da..3ba9f42b94 100644
--- a/editor/translations/sk.po
+++ b/editor/translations/sk.po
@@ -3256,6 +3256,19 @@ msgstr ""
msgid "Reimport"
msgstr ""
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Changing the type of an imported file requires editor restart."
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr ""
@@ -7081,6 +7094,38 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -7781,6 +7826,10 @@ msgid "Duplicate Node(s)"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Node must belong to the edited scene to become root."
msgstr ""
diff --git a/editor/translations/sl.po b/editor/translations/sl.po
index 713db04abd..23b3436ef7 100644
--- a/editor/translations/sl.po
+++ b/editor/translations/sl.po
@@ -3382,6 +3382,19 @@ msgstr "Prednastavitev..."
msgid "Reimport"
msgstr "Ponovno Uvozi"
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Changing the type of an imported file requires editor restart."
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr "Napaka pri nalaganju vira."
@@ -7275,6 +7288,38 @@ msgid "Browse"
msgstr "Brskaj"
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -7979,6 +8024,10 @@ msgid "Duplicate Node(s)"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Node must belong to the edited scene to become root."
msgstr ""
diff --git a/editor/translations/sq.po b/editor/translations/sq.po
index 8ebfe37131..ea81392f89 100644
--- a/editor/translations/sq.po
+++ b/editor/translations/sq.po
@@ -3192,6 +3192,19 @@ msgstr ""
msgid "Reimport"
msgstr ""
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Changing the type of an imported file requires editor restart."
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr ""
@@ -6925,6 +6938,38 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -7616,6 +7661,10 @@ msgid "Duplicate Node(s)"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Node must belong to the edited scene to become root."
msgstr ""
diff --git a/editor/translations/sr_Cyrl.po b/editor/translations/sr_Cyrl.po
index def08d0cf0..b74074cda1 100644
--- a/editor/translations/sr_Cyrl.po
+++ b/editor/translations/sr_Cyrl.po
@@ -3411,6 +3411,19 @@ msgstr "ПоÑтавке..."
msgid "Reimport"
msgstr "Поново увези"
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Changing the type of an imported file requires editor restart."
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr "Грешка при учитавању реÑурÑа."
@@ -7359,6 +7372,38 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -8064,6 +8109,10 @@ msgid "Duplicate Node(s)"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Node must belong to the edited scene to become root."
msgstr ""
diff --git a/editor/translations/sr_Latn.po b/editor/translations/sr_Latn.po
index 7143c655d4..7a50fedd2c 100644
--- a/editor/translations/sr_Latn.po
+++ b/editor/translations/sr_Latn.po
@@ -3207,6 +3207,19 @@ msgstr ""
msgid "Reimport"
msgstr ""
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Changing the type of an imported file requires editor restart."
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr ""
@@ -6972,6 +6985,38 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -7666,6 +7711,10 @@ msgid "Duplicate Node(s)"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Node must belong to the edited scene to become root."
msgstr ""
diff --git a/editor/translations/sv.po b/editor/translations/sv.po
index 87cc34bf1f..6071ea21a8 100644
--- a/editor/translations/sv.po
+++ b/editor/translations/sv.po
@@ -3642,6 +3642,19 @@ msgstr ""
msgid "Reimport"
msgstr ""
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Changing the type of an imported file requires editor restart."
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr "Misslyckades att ladda resurs."
@@ -7642,6 +7655,38 @@ msgid "Browse"
msgstr "Bläddra"
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
#, fuzzy
msgid "Unnamed Project"
msgstr "Namnlöst Projekt"
@@ -8382,6 +8427,10 @@ msgid "Duplicate Node(s)"
msgstr "Duplicera Nod(er)"
#: editor/scene_tree_dock.cpp
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Node must belong to the edited scene to become root."
msgstr ""
diff --git a/editor/translations/ta.po b/editor/translations/ta.po
index 19bd4573ef..a928d02019 100644
--- a/editor/translations/ta.po
+++ b/editor/translations/ta.po
@@ -3204,6 +3204,19 @@ msgstr ""
msgid "Reimport"
msgstr ""
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Changing the type of an imported file requires editor restart."
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr ""
@@ -6943,6 +6956,38 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -7636,6 +7681,10 @@ msgid "Duplicate Node(s)"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Node must belong to the edited scene to become root."
msgstr ""
diff --git a/editor/translations/te.po b/editor/translations/te.po
index 95eaa3784d..394a3c4208 100644
--- a/editor/translations/te.po
+++ b/editor/translations/te.po
@@ -3193,6 +3193,19 @@ msgstr ""
msgid "Reimport"
msgstr ""
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Changing the type of an imported file requires editor restart."
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr ""
@@ -6924,6 +6937,38 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -7615,6 +7660,10 @@ msgid "Duplicate Node(s)"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Node must belong to the edited scene to become root."
msgstr ""
diff --git a/editor/translations/th.po b/editor/translations/th.po
index aea2854626..afc0684350 100644
--- a/editor/translations/th.po
+++ b/editor/translations/th.po
@@ -3355,6 +3355,19 @@ msgstr "à¹à¸šà¸š..."
msgid "Reimport"
msgstr "นำเข้าใหม่"
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Changing the type of an imported file requires editor restart."
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr "โหลดรีซอร์สไม่ได้"
@@ -7289,6 +7302,38 @@ msgid "Browse"
msgstr "เลือà¸"
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr "โปรเจà¸à¸•์ไม่มีชื่อ"
@@ -8008,6 +8053,10 @@ msgid "Duplicate Node(s)"
msgstr "ทำซ้ำโหนด"
#: editor/scene_tree_dock.cpp
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Node must belong to the edited scene to become root."
msgstr ""
diff --git a/editor/translations/tr.po b/editor/translations/tr.po
index f1654c533b..1f52b34675 100644
--- a/editor/translations/tr.po
+++ b/editor/translations/tr.po
@@ -3416,6 +3416,19 @@ msgstr "Ön ayar..."
msgid "Reimport"
msgstr "Yeniden İçe Aktar"
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Changing the type of an imported file requires editor restart."
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr "Kaynak yükleme başarısız oldu."
@@ -7355,6 +7368,38 @@ msgid "Browse"
msgstr "Gözat"
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr "Adsız Proje"
@@ -8082,6 +8127,10 @@ msgid "Duplicate Node(s)"
msgstr "Düğüm(leri) Çoğalt"
#: editor/scene_tree_dock.cpp
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Node must belong to the edited scene to become root."
msgstr ""
diff --git a/editor/translations/uk.po b/editor/translations/uk.po
index f89d55ae5f..84bf261ae2 100644
--- a/editor/translations/uk.po
+++ b/editor/translations/uk.po
@@ -15,7 +15,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Ukrainian (Godot Engine)\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2019-01-16 20:20+0000\n"
+"PO-Revision-Date: 2019-01-26 21:22+0000\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <https://hosted.weblate.org/projects/godot-engine/"
"godot/uk/>\n"
@@ -25,7 +25,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: Weblate 3.4-dev\n"
+"X-Generator: Weblate 3.5-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -1295,7 +1295,7 @@ msgstr "Ð—Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ:"
#: editor/editor_export.cpp
msgid "No export template found at the expected path:"
-msgstr ""
+msgstr "У очікуваному каталозі не знайдено шаблонів екÑпортуваннÑ:"
#: editor/editor_export.cpp
msgid "Packing"
@@ -1304,15 +1304,14 @@ msgstr "ПакуваннÑ"
#: editor/editor_export.cpp platform/android/export/export.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#, fuzzy
msgid "Custom debug template not found."
-msgstr "Файл шаблону не знайдено:"
+msgstr "Ðетипового шаблону діагноÑтики не знайдено."
#: editor/editor_export.cpp platform/android/export/export.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom release template not found."
-msgstr ""
+msgstr "Ðетипового шаблону випуÑку не знайдено."
#: editor/editor_export.cpp platform/javascript/export/export.cpp
msgid "Template file not found:"
@@ -3325,6 +3324,20 @@ msgstr "Заздалегідь уÑтановлений..."
msgid "Reimport"
msgstr "Переімпортувати"
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+#, fuzzy
+msgid "Changing the type of an imported file requires editor restart."
+msgstr "Зміна відеодрайвера потребує перезапуÑку редактора."
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ реÑурÑ."
@@ -7134,6 +7147,38 @@ msgid "Browse"
msgstr "Вибрати"
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr "Проект без назви"
@@ -7860,12 +7905,16 @@ msgid "Duplicate Node(s)"
msgstr "Дублювати вузли"
#: editor/scene_tree_dock.cpp
-msgid "Node must belong to the edited scene to become root."
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Node must belong to the edited scene to become root."
+msgstr "Щоб Ñтати кореневим, вузол має належати редагованій Ñцені."
+
+#: editor/scene_tree_dock.cpp
msgid "Instantiated scenes can't become root"
-msgstr ""
+msgstr "Сцени зі Ñтвореними екземплÑрами не можуть Ñтавати кореневими"
#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)?"
@@ -9079,87 +9128,92 @@ msgstr "Ð’Ñтановити %s"
#: platform/android/export/export.cpp
msgid "Package name is missing."
-msgstr ""
+msgstr "Ðе вказано назви пакунка."
#: platform/android/export/export.cpp
msgid "Package segments must be of non-zero length."
-msgstr ""
+msgstr "Сегменти пакунка повинні мати ненульову довжину."
#: platform/android/export/export.cpp
msgid "The character '%s' is not allowed in Android application package names."
msgstr ""
+"Ðе можна викориÑтовувати у назві пакунка програми на Android Ñимволи «%s»."
#: platform/android/export/export.cpp
msgid "A digit cannot be the first character in a package segment."
-msgstr ""
+msgstr "Цифра не може бути першим Ñимволом у Ñегменті пакунка."
#: platform/android/export/export.cpp
msgid "The character '%s' cannot be the first character in a package segment."
msgstr ""
+"Ðе можна викориÑтовувати Ñимвол «%s» Ñк перший Ñимвол назви Ñегмента пакунка."
#: platform/android/export/export.cpp
msgid "The package must have at least one '.' separator."
-msgstr ""
+msgstr "У назві пакунка має бути принаймні один роздільник «.»."
#: platform/android/export/export.cpp
msgid "ADB executable not configured in the Editor Settings."
-msgstr ""
+msgstr "У параметрах редактора не налаштовано виконуваного файла ADB."
#: platform/android/export/export.cpp
msgid "OpenJDK jarsigner not configured in the Editor Settings."
-msgstr ""
+msgstr "У параметрах редактора не налаштовано jarsigner з OpenJDK."
#: platform/android/export/export.cpp
msgid "Debug keystore not configured in the Editor Settings nor in the preset."
msgstr ""
+"ÐÑ– у параметрах редактора, ні у шаблоні не налаштовано діагноÑтичне Ñховище "
+"ключів."
#: platform/android/export/export.cpp
msgid "Invalid public key for APK expansion."
-msgstr ""
+msgstr "Ðеокректний відкритий ключ Ð´Ð»Ñ Ñ€Ð¾Ð·Ð³Ð¾Ñ€Ñ‚Ð°Ð½Ð½Ñ APK."
#: platform/android/export/export.cpp
-#, fuzzy
msgid "Invalid package name:"
-msgstr "Ðекоректна назва клаÑу"
+msgstr "Ðекоректна назва пакунка:"
#: platform/iphone/export/export.cpp
msgid "Identifier is missing."
-msgstr ""
+msgstr "Ðе вказано ідентифікатор."
#: platform/iphone/export/export.cpp
msgid "Identifier segments must be of non-zero length."
-msgstr ""
+msgstr "Сегменти ідентифікатора повинні мати ненульову довжину."
#: platform/iphone/export/export.cpp
-#, fuzzy
msgid "The character '%s' is not allowed in Identifier."
-msgstr "Ðазва не Ñ” коректним ідентифікатором:"
+msgstr "У назві ідентифікатора не можна викориÑтовувати Ñимволи «%s»."
#: platform/iphone/export/export.cpp
msgid "A digit cannot be the first character in a Identifier segment."
msgstr ""
+"Ðе можна викориÑтовувати цифри Ñк перші Ñимволи Ñегмента ідентифікатора."
#: platform/iphone/export/export.cpp
msgid ""
"The character '%s' cannot be the first character in a Identifier segment."
msgstr ""
+"Ðе можна викориÑтовувати Ñимвол «%s» Ñк перший Ñимвол Ñегмента "
+"ідентифікатора."
#: platform/iphone/export/export.cpp
msgid "The Identifier must have at least one '.' separator."
-msgstr ""
+msgstr "У ідентифікаторі має бути принаймні один роздільник «.»."
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
+"Ðе вказано ідентифікатор команди App Store — проект неможливо налаштувати."
#: platform/iphone/export/export.cpp
-#, fuzzy
msgid "Invalid Identifier:"
-msgstr "Ðазва не Ñ” коректним ідентифікатором:"
+msgstr "Ðекоректний ідентифікатор:"
#: platform/iphone/export/export.cpp
msgid "Required icon is not specified in the preset."
-msgstr ""
+msgstr "У шаблоні не вказано потрібної піктограми."
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
@@ -9194,52 +9248,58 @@ msgid "Using default boot splash image."
msgstr "ВикориÑÑ‚Ð°Ð½Ð½Ñ Ñ‚Ð¸Ð¿Ð¾Ð²Ð¾Ð³Ð¾ файлу Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð·Ð°Ñтавки."
#: platform/uwp/export/export.cpp
-#, fuzzy
msgid "Invalid package unique name."
-msgstr "ÐеприпуÑтима назва групи."
+msgstr "Ðекоректна унікальна назва пакунка."
#: platform/uwp/export/export.cpp
-#, fuzzy
msgid "Invalid product GUID."
-msgstr "Ðекоректна назва проекту."
+msgstr "Ðекоректний GUID продукту."
#: platform/uwp/export/export.cpp
-#, fuzzy
msgid "Invalid publisher GUID."
-msgstr "Ðекоректний поділ: "
+msgstr "Ðекоректний GUID видавцÑ."
#: platform/uwp/export/export.cpp
-#, fuzzy
msgid "Invalid background color."
-msgstr "ÐеприпуÑтима назва групи."
+msgstr "Ðекоректний колір тла."
#: platform/uwp/export/export.cpp
msgid "Invalid Store Logo image dimensions (should be 50x50)."
-msgstr ""
+msgstr "Ðекоректні розмірноÑті Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð»Ð¾Ð³Ð¾Ñ‚Ð¸Ð¿Ñƒ Store (мають бути 50x50)."
#: platform/uwp/export/export.cpp
msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
msgstr ""
+"Ðекоректні розмірноÑті Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ ÐºÐ²Ð°Ð´Ñ€Ð°Ñ‚Ð½Ð¾Ð³Ð¾ логотипу 44x44 (мають бути "
+"44x44)."
#: platform/uwp/export/export.cpp
msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
msgstr ""
+"Ðекоректні розмірноÑті Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ ÐºÐ²Ð°Ð´Ñ€Ð°Ñ‚Ð½Ð¾Ð³Ð¾ логотипу 71x71 (мають бути "
+"71x71)."
#: platform/uwp/export/export.cpp
msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
msgstr ""
+"Ðекоректні розмірноÑті Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ ÐºÐ²Ð°Ð´Ñ€Ð°Ñ‚Ð½Ð¾Ð³Ð¾ логотипу 150x150 (мають бути "
+"150x150)."
#: platform/uwp/export/export.cpp
msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
msgstr ""
+"Ðекоректні розмірноÑті Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ ÐºÐ²Ð°Ð´Ñ€Ð°Ñ‚Ð½Ð¾Ð³Ð¾ логотипу 310x310 (мають бути "
+"310x310)."
#: platform/uwp/export/export.cpp
msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
msgstr ""
+"Ðекоректні розмірноÑті Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ ÑˆÐ¸Ñ€Ð¾ÐºÐ¾Ð³Ð¾ логотипу 310x150 (мають бути "
+"310x150)."
#: platform/uwp/export/export.cpp
msgid "Invalid splash screen image dimensions (should be 620x300)."
-msgstr ""
+msgstr "Ðекоректні розмірноÑті Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð²Ñ–ÐºÐ½Ð° Ð²Ñ–Ñ‚Ð°Ð½Ð½Ñ (мають бути 620x300)."
#: scene/2d/animated_sprite.cpp
msgid ""
@@ -9558,12 +9618,12 @@ msgid "PathFollow only works when set as a child of a Path node."
msgstr "PathFollow працюватиме лише Ñк дочірній елемент вузла Path."
#: scene/3d/path.cpp
-#, fuzzy
msgid ""
"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent "
"Path's Curve resource."
msgstr ""
-"OrientedPathFollow потребує Ð²Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Â«Up Vector» у його батьківÑькому Path."
+"PathFollow ROTATION_ORIENTED потребує Ð²Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Â«Up Vector» у його "
+"батьківÑькому реÑурÑÑ– Curve у Path."
#: scene/3d/physics_body.cpp
msgid ""
diff --git a/editor/translations/ur_PK.po b/editor/translations/ur_PK.po
index d44b9da09a..e0d4e7628b 100644
--- a/editor/translations/ur_PK.po
+++ b/editor/translations/ur_PK.po
@@ -3229,6 +3229,19 @@ msgstr ""
msgid "Reimport"
msgstr ""
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Changing the type of an imported file requires editor restart."
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr ""
@@ -7033,6 +7046,38 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -7728,6 +7773,10 @@ msgid "Duplicate Node(s)"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Node must belong to the edited scene to become root."
msgstr ""
diff --git a/editor/translations/vi.po b/editor/translations/vi.po
index 35b0657660..ad0feaa6a1 100644
--- a/editor/translations/vi.po
+++ b/editor/translations/vi.po
@@ -3287,6 +3287,19 @@ msgstr ""
msgid "Reimport"
msgstr ""
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Changing the type of an imported file requires editor restart."
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr ""
@@ -7106,6 +7119,38 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -7808,6 +7853,10 @@ msgid "Duplicate Node(s)"
msgstr "Nhân đôi Node(s)"
#: editor/scene_tree_dock.cpp
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Node must belong to the edited scene to become root."
msgstr ""
diff --git a/editor/translations/zh_CN.po b/editor/translations/zh_CN.po
index 4b8263f883..6071ac66c8 100644
--- a/editor/translations/zh_CN.po
+++ b/editor/translations/zh_CN.po
@@ -38,12 +38,14 @@
# DKLost <514dklost@gmail.com>, 2018.
# thanksshu <hezihanshangyuan@gmail.com>, 2018.
# Jsheng <yangea@outlook.com>, 2019.
+# Zhang Zhibo <zzhibo98@gmail.com>, 2019.
+# ws00010203 <ws00010203@hotmail.com>, 2019.
msgid ""
msgstr ""
"Project-Id-Version: Chinese (Simplified) (Godot Engine)\n"
"POT-Creation-Date: 2018-01-20 12:15+0200\n"
-"PO-Revision-Date: 2019-01-21 19:30+0000\n"
-"Last-Translator: Jsheng <yangea@outlook.com>\n"
+"PO-Revision-Date: 2019-01-26 21:22+0000\n"
+"Last-Translator: ws00010203 <ws00010203@hotmail.com>\n"
"Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/"
"godot-engine/godot/zh_Hans/>\n"
"Language: zh_CN\n"
@@ -51,7 +53,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 3.4-dev\n"
+"X-Generator: Weblate 3.5-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -1298,11 +1300,8 @@ msgid "Storing File:"
msgstr "文件排åº:"
#: editor/editor_export.cpp
-#, fuzzy
msgid "No export template found at the expected path:"
-msgstr ""
-"找ä¸åˆ°å¯¼å‡ºæ¨¡ç‰ˆã€‚\n"
-"下载并安装导出模版。"
+msgstr "目标路径找ä¸åˆ°å¯¼å‡ºæ¨¡ç‰ˆï¼š"
#: editor/editor_export.cpp
msgid "Packing"
@@ -1311,14 +1310,12 @@ msgstr "打包中"
#: editor/editor_export.cpp platform/android/export/export.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#, fuzzy
msgid "Custom debug template not found."
msgstr "找ä¸åˆ°è‡ªå®šä¹‰è°ƒè¯•包。"
#: editor/editor_export.cpp platform/android/export/export.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#, fuzzy
msgid "Custom release template not found."
msgstr "找ä¸åˆ°è‡ªå®šä¹‰å‘布包。"
@@ -2580,17 +2577,14 @@ msgid "[Empty]"
msgstr "[空]"
#: editor/editor_properties.cpp editor/plugins/root_motion_editor_plugin.cpp
-#, fuzzy
msgid "Assign..."
-msgstr "分é……。"
+msgstr "分é……"
#: editor/editor_properties.cpp
-#, fuzzy
msgid "Invalid RID"
msgstr "è·¯å¾„éžæ³•"
#: editor/editor_properties.cpp
-#, fuzzy
msgid ""
"The selected resource (%s) does not match any type expected for this "
"property (%s)."
@@ -3286,6 +3280,20 @@ msgstr "预设..."
msgid "Reimport"
msgstr "釿–°å¯¼å…¥"
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+#, fuzzy
+msgid "Changing the type of an imported file requires editor restart."
+msgstr "改å˜è§†é¢‘驱动需è¦é‡å¯ç¼–辑器。"
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr "加载资æºå¤±è´¥ã€‚"
@@ -3834,9 +3842,8 @@ msgid "Connect nodes."
msgstr "连接节点。"
#: editor/plugins/animation_state_machine_editor.cpp
-#, fuzzy
msgid "Remove selected node or transition."
-msgstr "移除选中的节点或过渡动画"
+msgstr "移除选中的节点或过渡动画。"
#: editor/plugins/animation_state_machine_editor.cpp
msgid "Toggle autoplay this animation on start, restart or seek to zero."
@@ -4250,11 +4257,10 @@ msgid "Paste Pose"
msgstr "粘贴姿势"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid ""
"Warning: Children of a container get their position and size determined only "
"by their parent."
-msgstr "警告:容器中的å­çº§åªèƒ½ç”±å®ƒçš„父级确定ä½ç½®ä¸Žå¤§å°ã€‚"
+msgstr "警告:容器å­çº§çš„ä½ç½®ä¸Žå¤§å°åªèƒ½ç”±å®ƒçš„父级确定。"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -5136,9 +5142,8 @@ msgid "Create Polygon & UV"
msgstr "创建多边形和 UV"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid "Create Internal Vertex"
-msgstr "创建水平标尺"
+msgstr "创建内部顶点"
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
@@ -5146,13 +5151,13 @@ msgid "Remove Internal Vertex"
msgstr "移除曲线内控制点"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
msgid "Invalid Polygon (need 3 different vertices)"
-msgstr ""
+msgstr "无效的多边形(需è¦ä¸‰ä¸ªæŽ§åˆ¶ç‚¹ï¼‰"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid "Add Custom Polygon"
-msgstr "编辑多边形"
+msgstr "添加自定义多边形"
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
@@ -5227,13 +5232,13 @@ msgstr "缩放多边形"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Create a custom polygon. Enables custom polygon rendering."
-msgstr ""
+msgstr "建立自定义多边形。å¯ç”¨è‡ªå®šä¹‰å¤šè¾¹å½¢æ¸²æŸ“。"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid ""
"Remove a custom polygon. If none remain, custom polygon rendering is "
"disabled."
-msgstr ""
+msgstr "移除自定义多边形。如果ä¸å­˜åœ¨ï¼Œç¦ç”¨è‡ªå®šä¹‰å¤šè¾¹å½¢æ¸²æŸ“。"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Paint weights with specified intensity."
@@ -6644,8 +6649,9 @@ msgid "You haven't selected a texture to remove."
msgstr "请先选择è¦ç§»é™¤çš„纹ç†ã€‚"
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid "Create from scene? This will overwrite all current tiles."
-msgstr ""
+msgstr "ä»Žåœºæ™¯åˆ›å»ºï¼Ÿè¿™å°†è¦†ç›–æ‰€æœ‰å½“å‰æ ‡é¢˜ã€‚"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Merge from scene?"
@@ -7081,6 +7087,38 @@ msgid "Browse"
msgstr "æµè§ˆ"
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr "未命å项目"
@@ -7786,6 +7824,10 @@ msgid "Duplicate Node(s)"
msgstr "å¤åˆ¶èŠ‚ç‚¹"
#: editor/scene_tree_dock.cpp
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Node must belong to the edited scene to become root."
msgstr ""
diff --git a/editor/translations/zh_HK.po b/editor/translations/zh_HK.po
index 04e8cfdea2..7b072a4123 100644
--- a/editor/translations/zh_HK.po
+++ b/editor/translations/zh_HK.po
@@ -3441,6 +3441,19 @@ msgstr ""
msgid "Reimport"
msgstr "å°Žå…¥"
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Changing the type of an imported file requires editor restart."
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr "資æºåŠ è¼‰å¤±æ•—ã€‚"
@@ -7371,6 +7384,38 @@ msgid "Browse"
msgstr "ç€è¦½"
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -8088,6 +8133,10 @@ msgid "Duplicate Node(s)"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Node must belong to the edited scene to become root."
msgstr ""
diff --git a/editor/translations/zh_TW.po b/editor/translations/zh_TW.po
index 3ec1e387c2..58c3085900 100644
--- a/editor/translations/zh_TW.po
+++ b/editor/translations/zh_TW.po
@@ -3349,6 +3349,19 @@ msgstr ""
msgid "Reimport"
msgstr ""
+#: editor/import_dock.cpp
+msgid "Save scenes, re-import and restart"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Changing the type of an imported file requires editor restart."
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid ""
+"WARNING: Assets exist that use this resource, they may stop loading properly."
+msgstr ""
+
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
msgstr ""
@@ -7229,6 +7242,38 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
+msgid "Renderer:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 3.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Higher visual quality\n"
+"All features available\n"
+"Incompatible with older hardware\n"
+"Not recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "OpenGL ES 2.0"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Lower visual quality\n"
+"Some features not available\n"
+"Works on most hardware\n"
+"Recommended for web games"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -7937,6 +7982,10 @@ msgid "Duplicate Node(s)"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Node must belong to the edited scene to become root."
msgstr ""
diff --git a/modules/bullet/SCsub b/modules/bullet/SCsub
index 11ce18449b..0416dd7f5f 100644
--- a/modules/bullet/SCsub
+++ b/modules/bullet/SCsub
@@ -187,6 +187,8 @@ if env['builtin_bullet']:
thirdparty_sources = [thirdparty_dir + file for file in bullet2_src]
env_bullet.Append(CPPPATH=[thirdparty_dir])
+ if env['target'] == "debug" or env['target'] == "release_debug":
+ env_bullet.Append(CCFLAGS=['-DBT_DEBUG'])
env_thirdparty = env_bullet.Clone()
env_thirdparty.disable_warnings()
diff --git a/modules/bullet/rigid_body_bullet.cpp b/modules/bullet/rigid_body_bullet.cpp
index 09177205b4..22f2214898 100644
--- a/modules/bullet/rigid_body_bullet.cpp
+++ b/modules/bullet/rigid_body_bullet.cpp
@@ -797,6 +797,9 @@ void RigidBodyBullet::set_transform__bullet(const btTransform &p_global_transfor
btBody->setLinearVelocity((p_global_transform.getOrigin() - btBody->getWorldTransform().getOrigin()) / space->get_delta_time());
// The kinematic use MotionState class
godotMotionState->moveBody(p_global_transform);
+ } else {
+ // Is necesasry to avoid wrong location on the rendering side on the next frame
+ godotMotionState->setWorldTransform(p_global_transform);
}
CollisionObjectBullet::set_transform__bullet(p_global_transform);
}
@@ -822,7 +825,8 @@ void RigidBodyBullet::reload_shapes() {
// shapes incorrectly do not set the vector in calculateLocalIntertia.
// Arbitrary zero is preferable to undefined behaviour.
btVector3 inertia(0, 0, 0);
- mainShape->calculateLocalInertia(mass, inertia);
+ if (EMPTY_SHAPE_PROXYTYPE != mainShape->getShapeType()) // Necessary to avoid assertion of the empty shape
+ mainShape->calculateLocalInertia(mass, inertia);
btBody->setMassProps(mass, inertia);
}
btBody->updateInertiaTensor();
diff --git a/modules/csg/csg_shape.cpp b/modules/csg/csg_shape.cpp
index a13f731c11..f62e6f5c40 100644
--- a/modules/csg/csg_shape.cpp
+++ b/modules/csg/csg_shape.cpp
@@ -575,6 +575,18 @@ void CSGShape::_validate_property(PropertyInfo &property) const {
}
}
+Array CSGShape::get_meshes() const {
+
+ if (root_mesh.is_valid()) {
+ Array arr;
+ arr.resize(2);
+ arr[0] = Transform();
+ arr[1] = root_mesh;
+ return arr;
+ }
+
+ return Array();
+}
void CSGShape::_bind_methods() {
ClassDB::bind_method(D_METHOD("_update_shape"), &CSGShape::_update_shape);
@@ -604,6 +616,8 @@ void CSGShape::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_calculate_tangents", "enabled"), &CSGShape::set_calculate_tangents);
ClassDB::bind_method(D_METHOD("is_calculating_tangents"), &CSGShape::is_calculating_tangents);
+ ClassDB::bind_method(D_METHOD("get_meshes"), &CSGShape::get_meshes);
+
ADD_PROPERTY(PropertyInfo(Variant::INT, "operation", PROPERTY_HINT_ENUM, "Union,Intersection,Subtraction"), "set_operation", "get_operation");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "snap", PROPERTY_HINT_RANGE, "0.0001,1,0.001"), "set_snap", "get_snap");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "calculate_tangents"), "set_calculate_tangents", "is_calculating_tangents");
diff --git a/modules/csg/csg_shape.h b/modules/csg/csg_shape.h
index df503faf2e..1622fb3a15 100644
--- a/modules/csg/csg_shape.h
+++ b/modules/csg/csg_shape.h
@@ -116,6 +116,8 @@ protected:
virtual void _validate_property(PropertyInfo &property) const;
+ Array get_meshes() const;
+
public:
void set_operation(Operation p_operation);
Operation get_operation() const;
diff --git a/modules/gdnative/gdnative/variant.cpp b/modules/gdnative/gdnative/variant.cpp
index 491abbde9e..8f0d5a2db4 100644
--- a/modules/gdnative/gdnative/variant.cpp
+++ b/modules/gdnative/gdnative/variant.cpp
@@ -37,8 +37,22 @@
extern "C" {
#endif
+// Workaround GCC ICE on armv7hl which was affected GCC 6.0 up to 8.0 (GH-16100).
+// It was fixed upstream in 8.1, and a fix was backported to 7.4.
+// This can be removed once no supported distro ships with versions older than 7.4.
+#if defined(__arm__) && defined(__GNUC__) && !defined(__clang__) && \
+ (__GNUC__ == 6 || (__GNUC__ == 7 && __GNUC_MINOR__ < 4) || (__GNUC__ == 8 && __GNUC_MINOR__ < 1))
+#pragma GCC push_options
+#pragma GCC optimize("-O0")
+#endif
+
#define memnew_placement_custom(m_placement, m_class, m_constr) _post_initialize(new (m_placement, sizeof(m_class), "") m_constr)
+#if defined(__arm__) && defined(__GNUC__) && !defined(__clang__) && \
+ (__GNUC__ == 6 || (__GNUC__ == 7 && __GNUC_MINOR__ < 4) || (__GNUC__ == 8 && __GNUC_MINOR__ < 1))
+#pragma GCC pop_options
+#endif
+
// Constructors
godot_variant_type GDAPI godot_variant_get_type(const godot_variant *p_self) {
diff --git a/modules/gdscript/gdscript.cpp b/modules/gdscript/gdscript.cpp
index ae70525de5..6d85eb3c90 100644
--- a/modules/gdscript/gdscript.cpp
+++ b/modules/gdscript/gdscript.cpp
@@ -223,16 +223,21 @@ void GDScript::_placeholder_erased(PlaceHolderScriptInstance *p_placeholder) {
void GDScript::get_script_method_list(List<MethodInfo> *p_list) const {
- for (const Map<StringName, GDScriptFunction *>::Element *E = member_functions.front(); E; E = E->next()) {
- GDScriptFunction *func = E->get();
- MethodInfo mi;
- mi.name = E->key();
- for (int i = 0; i < func->get_argument_count(); i++) {
- mi.arguments.push_back(func->get_argument_type(i));
+ const GDScript *current = this;
+ while (current) {
+ for (const Map<StringName, GDScriptFunction *>::Element *E = member_functions.front(); E; E = E->next()) {
+ GDScriptFunction *func = E->get();
+ MethodInfo mi;
+ mi.name = E->key();
+ for (int i = 0; i < func->get_argument_count(); i++) {
+ mi.arguments.push_back(func->get_argument_type(i));
+ }
+
+ mi.return_val = func->get_return_type();
+ p_list->push_back(mi);
}
- mi.return_val = func->get_return_type();
- p_list->push_back(mi);
+ current = current->_base;
}
}
diff --git a/modules/hdr/image_loader_hdr.cpp b/modules/hdr/image_loader_hdr.cpp
index eb424d36f8..f75a4a926a 100644
--- a/modules/hdr/image_loader_hdr.cpp
+++ b/modules/hdr/image_loader_hdr.cpp
@@ -33,8 +33,6 @@
#include "core/os/os.h"
#include "core/print_string.h"
-#include "thirdparty/tinyexr/tinyexr.h"
-
Error ImageLoaderHDR::load_image(Ref<Image> p_image, FileAccess *f, bool p_force_linear, float p_scale) {
String header = f->get_token();
diff --git a/modules/mono/utils/path_utils.cpp b/modules/mono/utils/path_utils.cpp
index 80f2324e15..6e431f51e7 100644
--- a/modules/mono/utils/path_utils.cpp
+++ b/modules/mono/utils/path_utils.cpp
@@ -59,7 +59,7 @@ String path_which(const String &p_name) {
#ifdef WINDOWS_ENABLED
for (int j = 0; j < exts.size(); j++) {
- String p2 = p + exts[j];
+ String p2 = p + exts[j].to_lower(); // lowercase to reduce risk of case mismatch warning
if (FileAccess::exists(p2))
return p2;
diff --git a/modules/pvr/texture_loader_pvr.cpp b/modules/pvr/texture_loader_pvr.cpp
index d3f2f3c272..01e011e64c 100644
--- a/modules/pvr/texture_loader_pvr.cpp
+++ b/modules/pvr/texture_loader_pvr.cpp
@@ -33,6 +33,7 @@
#include "RgbaBitmap.h"
#include "core/os/file_access.h"
#include <string.h>
+#include <new>
static void _pvrtc_decompress(Image *p_img);
@@ -215,12 +216,10 @@ static void _compress_pvrtc4(Image *p_img) {
int ofs, size, w, h;
img->get_mipmap_offset_size_and_dimensions(i, ofs, size, w, h);
Javelin::RgbaBitmap bm(w, h);
- copymem(bm.GetData(), &r[ofs], size);
- {
+ for (unsigned j = 0; j < size / 4; j++) {
Javelin::ColorRgba<unsigned char> *dp = bm.GetData();
- for (int j = 0; j < size / 4; j++) {
- SWAP(dp[j].r, dp[j].b);
- }
+ /* red and Green colors are swapped. */
+ new (dp) Javelin::ColorRgba<unsigned char>(r[ofs + 4 * j + 2], r[ofs + 4 * j + 1], r[ofs + 4 * j], r[ofs + 4 * j + 3]);
}
new_img->get_mipmap_offset_size_and_dimensions(i, ofs, size, w, h);
diff --git a/modules/svg/image_loader_svg.cpp b/modules/svg/image_loader_svg.cpp
index 404ca24482..e36844a1bc 100644
--- a/modules/svg/image_loader_svg.cpp
+++ b/modules/svg/image_loader_svg.cpp
@@ -109,7 +109,12 @@ Error ImageLoaderSVG::_create_image(Ref<Image> p_image, const PoolVector<uint8_t
float upscale = upsample ? 2.0 : 1.0;
int w = (int)(svg_image->width * p_scale * upscale);
+ ERR_EXPLAIN(vformat("Can't create image from SVG with scale %s, the resulting image size exceeds max width.", rtos(p_scale)));
+ ERR_FAIL_COND_V(w > Image::MAX_WIDTH, ERR_PARAMETER_RANGE_ERROR);
+
int h = (int)(svg_image->height * p_scale * upscale);
+ ERR_EXPLAIN(vformat("Can't create image from SVG with scale %s, the resulting image size exceeds max height.", rtos(p_scale)));
+ ERR_FAIL_COND_V(h > Image::MAX_HEIGHT, ERR_PARAMETER_RANGE_ERROR);
PoolVector<uint8_t> dst_image;
dst_image.resize(w * h * 4);
diff --git a/modules/websocket/doc_classes/WebSocketClient.xml b/modules/websocket/doc_classes/WebSocketClient.xml
index 6b73b80350..ffb6d40e30 100644
--- a/modules/websocket/doc_classes/WebSocketClient.xml
+++ b/modules/websocket/doc_classes/WebSocketClient.xml
@@ -25,7 +25,8 @@
</argument>
<description>
Connect to the given URL requesting one of the given [code]protocols[/code] as sub-protocol.
- If [code]true[/code], is passed as [code]gd_mp_api[/code], the client will behave like a network peer for the [MultiplayerAPI]. Note: connections to non Godot servers will not work, and [signal data_received] will not be emitted when this option is true.
+ If [code]true[/code] is passed as [code]gd_mp_api[/code], the client will behave like a network peer for the [MultiplayerAPI], connections to non Godot servers will not work, and [signal data_received] will not be emitted.
+ If [code]false[/code] is passed instead (default), you must call [PacketPeer] functions ([code]put_packet[/code], [code]get_packet[/code], etc.) on the [WebSocketPeer] returned via [code]get_peer(1)[/code] and not on this object directly (e.g. [code]get_peer(1).put_packet(data)[/code]).
</description>
</method>
<method name="disconnect_from_host">
diff --git a/modules/websocket/doc_classes/WebSocketServer.xml b/modules/websocket/doc_classes/WebSocketServer.xml
index ba66fdd89b..2932bf782a 100644
--- a/modules/websocket/doc_classes/WebSocketServer.xml
+++ b/modules/websocket/doc_classes/WebSocketServer.xml
@@ -72,7 +72,8 @@
<description>
Start listening on the given port.
You can specify the desired subprotocols via the "protocols" array. If the list empty (default), "binary" will be used.
- You can use this server as a network peer for [MultiplayerAPI] by passing [code]true[/code] as [code]gd_mp_api[/code]. Note: [signal data_received] will not be fired and clients other than Godot will not work in this case.
+ If [code]true[/code] is passed as [code]gd_mp_api[/code], the server will behave like a network peer for the [MultiplayerAPI], connections from non Godot clients will not work, and [signal data_received] will not be emitted.
+ If [code]false[/code] is passed instead (default), you must call [PacketPeer] functions ([code]put_packet[/code], [code]get_packet[/code], etc.), on the [WebSocketPeer] returned via [code]get_peer(ID)[/code] to communicate with the peer with given [code]ID[/code] (e.g. [code]get_peer(ID).get_available_packet_count[/code]).
</description>
</method>
<method name="stop">
diff --git a/modules/websocket/websocket_multiplayer.cpp b/modules/websocket/websocket_multiplayer.cpp
index 7c8cc36fad..11caac944b 100644
--- a/modules/websocket/websocket_multiplayer.cpp
+++ b/modules/websocket/websocket_multiplayer.cpp
@@ -96,6 +96,7 @@ void WebSocketMultiplayerPeer::_bind_methods() {
//
int WebSocketMultiplayerPeer::get_available_packet_count() const {
+ ERR_EXPLAIN("Please use get_peer(ID).get_available_packet_count to get available packet count from peers when not using the MultiplayerAPI.");
ERR_FAIL_COND_V(!_is_multiplayer, ERR_UNCONFIGURED);
return _incoming_packets.size();
@@ -103,9 +104,11 @@ int WebSocketMultiplayerPeer::get_available_packet_count() const {
Error WebSocketMultiplayerPeer::get_packet(const uint8_t **r_buffer, int &r_buffer_size) {
- r_buffer_size = 0;
+ ERR_EXPLAIN("Please use get_peer(ID).get_packet/var to communicate with peers when not using the MultiplayerAPI.");
ERR_FAIL_COND_V(!_is_multiplayer, ERR_UNCONFIGURED);
+ r_buffer_size = 0;
+
if (_current_packet.data != NULL) {
memfree(_current_packet.data);
_current_packet.data = NULL;
@@ -122,6 +125,7 @@ Error WebSocketMultiplayerPeer::get_packet(const uint8_t **r_buffer, int &r_buff
Error WebSocketMultiplayerPeer::put_packet(const uint8_t *p_buffer, int p_buffer_size) {
+ ERR_EXPLAIN("Please use get_peer(ID).put_packet/var to communicate with peers when not using the MultiplayerAPI.");
ERR_FAIL_COND_V(!_is_multiplayer, ERR_UNCONFIGURED);
PoolVector<uint8_t> buffer = _make_pkt(SYS_NONE, get_unique_id(), _target_peer, p_buffer, p_buffer_size);
@@ -154,6 +158,7 @@ void WebSocketMultiplayerPeer::set_target_peer(int p_target_peer) {
int WebSocketMultiplayerPeer::get_packet_peer() const {
+ ERR_EXPLAIN("This function is not available when not using the MultiplayerAPI.");
ERR_FAIL_COND_V(!_is_multiplayer, 1);
ERR_FAIL_COND_V(_incoming_packets.size() == 0, 1);
diff --git a/platform/android/dir_access_jandroid.cpp b/platform/android/dir_access_jandroid.cpp
index 62cc7a380f..4b3d93aaa7 100644
--- a/platform/android/dir_access_jandroid.cpp
+++ b/platform/android/dir_access_jandroid.cpp
@@ -217,7 +217,6 @@ String DirAccessJAndroid::get_filesystem_type() const {
return "APK";
}
-
//FileType get_file_type() const;
size_t DirAccessJAndroid::get_space_left() {
diff --git a/platform/android/thread_jandroid.cpp b/platform/android/thread_jandroid.cpp
index 98f6e79dcb..9df9e57b24 100644
--- a/platform/android/thread_jandroid.cpp
+++ b/platform/android/thread_jandroid.cpp
@@ -34,9 +34,13 @@
#include "core/safe_refcount.h"
#include "core/script_language.h"
+static void _thread_id_key_destr_callback(void *p_value) {
+ memdelete(static_cast<Thread::ID *>(p_value));
+}
+
static pthread_key_t _create_thread_id_key() {
pthread_key_t key;
- pthread_key_create(&key, NULL);
+ pthread_key_create(&key, &_thread_id_key_destr_callback);
return key;
}
@@ -59,7 +63,7 @@ void *ThreadAndroid::thread_callback(void *userdata) {
setup_thread();
ScriptServer::thread_enter(); //scripts may need to attach a stack
t->id = atomic_increment(&next_thread_id);
- pthread_setspecific(thread_id_key, (void *)t->id);
+ pthread_setspecific(thread_id_key, (void *)memnew(ID(t->id)));
t->callback(t->user);
ScriptServer::thread_exit();
return NULL;
@@ -80,7 +84,14 @@ Thread *ThreadAndroid::create_func_jandroid(ThreadCreateCallback p_callback, voi
Thread::ID ThreadAndroid::get_thread_id_func_jandroid() {
- return (ID)pthread_getspecific(thread_id_key);
+ void *value = pthread_getspecific(thread_id_key);
+
+ if (value)
+ return *static_cast<ID *>(value);
+
+ ID new_id = atomic_increment(&next_thread_id);
+ pthread_setspecific(thread_id_key, (void *)memnew(ID(new_id)));
+ return new_id;
}
void ThreadAndroid::wait_to_finish_func_jandroid(Thread *p_thread) {
diff --git a/platform/javascript/os_javascript.cpp b/platform/javascript/os_javascript.cpp
index b92634c8d6..e820d07a2a 100644
--- a/platform/javascript/os_javascript.cpp
+++ b/platform/javascript/os_javascript.cpp
@@ -442,6 +442,9 @@ void OS_JavaScript::set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_s
if (texture.is_valid()) {
image = texture->get_data();
+ if (image.is_valid()) {
+ image->duplicate();
+ }
}
if (!image.is_valid() && atlas_texture.is_valid()) {
@@ -468,6 +471,8 @@ void OS_JavaScript::set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_s
ERR_FAIL_COND(!image.is_valid());
+ image = image->duplicate();
+
if (atlas_texture.is_valid())
image->crop_from_point(
atlas_rect.position.x,
@@ -861,8 +866,21 @@ Error OS_JavaScript::initialize(const VideoMode &p_desired, int p_video_driver,
video_driver_index = p_video_driver;
video_mode = p_desired;
- // Can't fulfill fullscreen request during start-up due to browser security.
+ // fullscreen_change_callback will correct this if the request is successful.
video_mode.fullscreen = false;
+ // Emscripten only attempts fullscreen requests if the user input callback
+ // was registered through one its own functions, so request manually for
+ // start-up fullscreen.
+ if (p_desired.fullscreen) {
+ /* clang-format off */
+ EM_ASM({
+ (canvas.requestFullscreen || canvas.msRequestFullscreen ||
+ canvas.mozRequestFullScreen || canvas.mozRequestFullscreen ||
+ canvas.webkitRequestFullscreen
+ ).call(canvas);
+ });
+ /* clang-format on */
+ }
/* clang-format off */
if (EM_ASM_INT_V({ return Module.resizeCanvasOnStart })) {
/* clang-format on */
diff --git a/platform/osx/detect.py b/platform/osx/detect.py
index 31fcbc0427..36a753e683 100644
--- a/platform/osx/detect.py
+++ b/platform/osx/detect.py
@@ -126,7 +126,7 @@ def configure(env):
env.Append(CPPPATH=['#platform/osx'])
env.Append(CPPFLAGS=['-DOSX_ENABLED', '-DUNIX_ENABLED', '-DGLES_ENABLED', '-DAPPLE_STYLE_KEYS', '-DCOREAUDIO_ENABLED', '-DCOREMIDI_ENABLED'])
- env.Append(LINKFLAGS=['-framework', 'Cocoa', '-framework', 'Carbon', '-framework', 'OpenGL', '-framework', 'AGL', '-framework', 'AudioUnit', '-framework', 'CoreAudio', '-framework', 'CoreMIDI', '-lz', '-framework', 'IOKit', '-framework', 'ForceFeedback'])
+ env.Append(LINKFLAGS=['-framework', 'Cocoa', '-framework', 'Carbon', '-framework', 'OpenGL', '-framework', 'AGL', '-framework', 'AudioUnit', '-framework', 'CoreAudio', '-framework', 'CoreMIDI', '-lz', '-framework', 'IOKit', '-framework', 'ForceFeedback', '-framework', 'CoreVideo'])
env.Append(LIBS=['pthread'])
env.Append(CPPFLAGS=['-mmacosx-version-min=10.9'])
diff --git a/platform/osx/os_osx.h b/platform/osx/os_osx.h
index 262079fa89..927c8c9b00 100644
--- a/platform/osx/os_osx.h
+++ b/platform/osx/os_osx.h
@@ -43,8 +43,10 @@
#include "servers/visual/rasterizer.h"
#include "servers/visual/visual_server_wrap_mt.h"
#include "servers/visual_server.h"
+#include <AppKit/AppKit.h>
#include <AppKit/NSCursor.h>
#include <ApplicationServices/ApplicationServices.h>
+#include <CoreVideo/CoreVideo.h>
#undef CursorShape
/**
@@ -102,10 +104,13 @@ public:
id window_view;
id autoreleasePool;
id cursor;
- id pixelFormat;
- id context;
+ NSOpenGLPixelFormat *pixelFormat;
+ NSOpenGLContext *context;
bool layered_window;
+ bool waiting_for_vsync;
+ NSCondition *vsync_condition;
+ CVDisplayLinkRef displayLink;
CursorShape cursor_shape;
NSCursor *cursors[CURSOR_MAX];
diff --git a/platform/osx/os_osx.mm b/platform/osx/os_osx.mm
index 760858b2e5..3f80d19fa1 100644
--- a/platform/osx/os_osx.mm
+++ b/platform/osx/os_osx.mm
@@ -117,6 +117,21 @@ static Vector2 get_mouse_pos(NSPoint locationInWindow, CGFloat backingScaleFacto
return Vector2(mouse_x, mouse_y);
}
+// DisplayLinkCallback is called from our DisplayLink OS thread informing us right before
+// a screen update is required. We can use it to work around the broken vsync.
+static CVReturn DisplayLinkCallback(CVDisplayLinkRef displayLink, const CVTimeStamp *now, const CVTimeStamp *outputTime, CVOptionFlags flagsIn, CVOptionFlags *flagsOut, void *displayLinkContext) {
+ OS_OSX *os = (OS_OSX *)displayLinkContext;
+
+ // Set flag so we know we can output our next frame and signal our conditional lock
+ // if we're not doing vsync this will be ignored
+ [os->vsync_condition lock];
+ os->waiting_for_vsync = false;
+ [os->vsync_condition signal];
+ [os->vsync_condition unlock];
+
+ return kCVReturnSuccess;
+}
+
@interface GodotApplication : NSApplication
@end
@@ -1366,6 +1381,15 @@ Error OS_OSX::initialize(const VideoMode &p_desired, int p_video_driver, int p_a
[context makeCurrentContext];
+ // setup our display link, this will inform us when a refresh is needed
+ CVDisplayLinkCreateWithActiveCGDisplays(&displayLink);
+ CVDisplayLinkSetOutputCallback(displayLink, &DisplayLinkCallback, this);
+ CVDisplayLinkSetCurrentCGDisplayFromOpenGLContext(displayLink, context.CGLContextObj, pixelFormat.CGLPixelFormatObj);
+ CVDisplayLinkStart(displayLink);
+
+ // initialise a conditional lock object
+ vsync_condition = [[NSCondition alloc] init];
+
set_use_vsync(p_desired.use_vsync);
[NSApp activateIgnoringOtherApps:YES];
@@ -1453,6 +1477,11 @@ void OS_OSX::finalize() {
midi_driver.close();
#endif
+ if (displayLink) {
+ CVDisplayLinkRelease(displayLink);
+ }
+ [vsync_condition release];
+
CFNotificationCenterRemoveObserver(CFNotificationCenterGetDistributedCenter(), NULL, kTISNotifySelectedKeyboardInputSourceChanged, NULL);
CGDisplayRemoveReconfigurationCallback(displays_arrangement_changed, NULL);
@@ -1967,6 +1996,17 @@ String OS_OSX::get_locale() const {
}
void OS_OSX::swap_buffers() {
+ if (is_vsync_enabled()) {
+ // Wait until our DisplayLink callback unsets our flag...
+ [vsync_condition lock];
+ while (waiting_for_vsync)
+ [vsync_condition wait];
+
+ // Make sure we wait again next frame around
+ waiting_for_vsync = true;
+
+ [vsync_condition unlock];
+ }
[context flushBuffer];
}
@@ -2633,22 +2673,22 @@ Error OS_OSX::move_to_trash(const String &p_path) {
}
void OS_OSX::_set_use_vsync(bool p_enable) {
- CGLContextObj ctx = CGLGetCurrentContext();
+ // CGLCPSwapInterval broke in OSX 10.14 and it seems Apple is not interested in fixing
+ // it as OpenGL is now deprecated and Metal solves this differently.
+ // Following SDLs example we're working around this using DisplayLink
+ // When vsync is enabled we set a flag "waiting_for_vsync" to true.
+ // This flag is set to false when DisplayLink informs us our display is about to refresh.
+
+ /* CGLContextObj ctx = CGLGetCurrentContext();
if (ctx) {
GLint swapInterval = p_enable ? 1 : 0;
CGLSetParameter(ctx, kCGLCPSwapInterval, &swapInterval);
- }
-}
-/*
-bool OS_OSX::is_vsync_enabled() const {
- GLint swapInterval = 0;
- CGLContextObj ctx = CGLGetCurrentContext();
- if (ctx) {
- CGLGetParameter(ctx, kCGLCPSwapInterval, &swapInterval);
- }
- return swapInterval ? true : false;
+ }*/
+
+ ///TODO Maybe pause/unpause display link?
+ waiting_for_vsync = p_enable;
}
-*/
+
OS_OSX *OS_OSX::singleton = NULL;
OS_OSX::OS_OSX() {
diff --git a/platform/windows/joypad.cpp b/platform/windows/joypad.cpp
index ba05d2e495..5fafc7c8c0 100644
--- a/platform/windows/joypad.cpp
+++ b/platform/windows/joypad.cpp
@@ -29,9 +29,9 @@
/*************************************************************************/
#include "joypad.h"
+
#include <oleauto.h>
#include <wbemidl.h>
-#include <iostream>
#ifndef __GNUC__
#define __builtin_bswap32 _byteswap_ulong
@@ -149,15 +149,12 @@ bool JoypadWindows::setup_dinput_joypad(const DIDEVICEINSTANCE *instance) {
const DWORD devtype = (instance->dwDevType & 0xFF);
if ((devtype != DI8DEVTYPE_JOYSTICK) && (devtype != DI8DEVTYPE_GAMEPAD) && (devtype != DI8DEVTYPE_1STPERSON)) {
- //printf("ignore device %s, type %x\n", instance->tszProductName, devtype);
return false;
}
hr = dinput->CreateDevice(instance->guidInstance, &joy->di_joy, NULL);
if (FAILED(hr)) {
-
- //std::wcout << "failed to create device: " << instance->tszProductName << std::endl;
return false;
}
@@ -383,8 +380,6 @@ void JoypadWindows::process_joypads() {
hr = joy->di_joy->GetDeviceState(sizeof(DIJOYSTATE2), &js);
if (FAILED(hr)) {
-
- //printf("failed to read joy #%d\n", i);
continue;
}
diff --git a/platform/x11/SCsub b/platform/x11/SCsub
index 97d3d1b514..e302f09c88 100644
--- a/platform/x11/SCsub
+++ b/platform/x11/SCsub
@@ -13,6 +13,7 @@ common_x11 = [
"key_mapping_x11.cpp",
"joypad_linux.cpp",
"power_x11.cpp",
+ "detect_prime.cpp"
]
prog = env.add_program('#bin/godot', ['godot_x11.cpp'] + common_x11)
diff --git a/platform/x11/detect_prime.cpp b/platform/x11/detect_prime.cpp
new file mode 100644
index 0000000000..04a825fac9
--- /dev/null
+++ b/platform/x11/detect_prime.cpp
@@ -0,0 +1,233 @@
+/*************************************************************************/
+/* detect_prime.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#ifdef X11_ENABLED
+#if defined(OPENGL_ENABLED)
+
+#include "core/print_string.h"
+#include "core/ustring.h"
+
+#include <stdlib.h>
+
+#include <GL/gl.h>
+#include <GL/glx.h>
+#include <X11/Xlib.h>
+#include <X11/Xutil.h>
+
+#include <cstring>
+
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <unistd.h>
+
+#define GLX_CONTEXT_MAJOR_VERSION_ARB 0x2091
+#define GLX_CONTEXT_MINOR_VERSION_ARB 0x2092
+
+typedef GLXContext (*GLXCREATECONTEXTATTRIBSARBPROC)(Display *, GLXFBConfig, GLXContext, Bool, const int *);
+
+struct vendor {
+ const char *glxvendor;
+ int priority;
+};
+
+vendor vendormap[] = {
+ { "Advanced Micro Devices, Inc.", 30 },
+ { "NVIDIA Corporation", 30 },
+ { "X.Org", 30 },
+ { "Intel Open Source Technology Center", 20 },
+ { "nouveau", 10 },
+ { "Mesa Project", 0 },
+ { NULL, 0 }
+};
+
+// Runs inside a child. Exiting will not quit the engine.
+void create_context() {
+ Display *x11_display = XOpenDisplay(NULL);
+ Window x11_window;
+ GLXContext glx_context;
+
+ GLXCREATECONTEXTATTRIBSARBPROC glXCreateContextAttribsARB = (GLXCREATECONTEXTATTRIBSARBPROC)glXGetProcAddress((const GLubyte *)"glXCreateContextAttribsARB");
+
+ static int visual_attribs[] = {
+ GLX_RENDER_TYPE, GLX_RGBA_BIT,
+ GLX_DRAWABLE_TYPE, GLX_WINDOW_BIT,
+ GLX_DOUBLEBUFFER, true,
+ GLX_RED_SIZE, 1,
+ GLX_GREEN_SIZE, 1,
+ GLX_BLUE_SIZE, 1,
+ GLX_DEPTH_SIZE, 24,
+ None
+ };
+
+ int fbcount;
+ GLXFBConfig fbconfig = 0;
+ XVisualInfo *vi = NULL;
+
+ XSetWindowAttributes swa;
+ swa.event_mask = StructureNotifyMask;
+ swa.border_pixel = 0;
+ unsigned long valuemask = CWBorderPixel | CWColormap | CWEventMask;
+
+ GLXFBConfig *fbc = glXChooseFBConfig(x11_display, DefaultScreen(x11_display), visual_attribs, &fbcount);
+ if (!fbc)
+ exit(1);
+
+ vi = glXGetVisualFromFBConfig(x11_display, fbc[0]);
+
+ fbconfig = fbc[0];
+
+ static int context_attribs[] = {
+ GLX_CONTEXT_MAJOR_VERSION_ARB, 3,
+ GLX_CONTEXT_MINOR_VERSION_ARB, 3,
+ GLX_CONTEXT_PROFILE_MASK_ARB, GLX_CONTEXT_CORE_PROFILE_BIT_ARB,
+ GLX_CONTEXT_FLAGS_ARB, GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB,
+ None
+ };
+
+ glx_context = glXCreateContextAttribsARB(x11_display, fbconfig, NULL, true, context_attribs);
+
+ swa.colormap = XCreateColormap(x11_display, RootWindow(x11_display, vi->screen), vi->visual, AllocNone);
+ x11_window = XCreateWindow(x11_display, RootWindow(x11_display, vi->screen), 0, 0, 10, 10, 0, vi->depth, InputOutput, vi->visual, valuemask, &swa);
+
+ if (!x11_window)
+ exit(1);
+
+ glXMakeCurrent(x11_display, x11_window, glx_context);
+ XFree(vi);
+}
+
+int detect_prime() {
+ pid_t p;
+ int priorities[2];
+ String vendors[2];
+ String renderers[2];
+
+ vendors[0] = "Unknown";
+ vendors[1] = "Unknown";
+ renderers[0] = "Unknown";
+ renderers[1] = "Unknown";
+
+ for (int i = 0; i < 2; ++i) {
+ int fdset[2];
+
+ if (pipe(fdset) == -1) {
+ print_verbose("Failed to pipe(), using default GPU");
+ return 0;
+ }
+
+ // Fork so the driver initialization can crash without taking down the engine.
+ p = fork();
+
+ if (p > 0) {
+ // Main thread
+
+ int stat_loc = 0;
+ char string[201];
+ string[200] = '\0';
+
+ close(fdset[1]);
+
+ waitpid(p, &stat_loc, 0);
+
+ if (!stat_loc) {
+ // No need to do anything complicated here. Anything less than
+ // PIPE_BUF will be delivered in one read() call.
+ read(fdset[0], string, sizeof(string) - 1);
+
+ vendors[i] = string;
+ renderers[i] = string + strlen(string) + 1;
+ }
+
+ close(fdset[0]);
+
+ } else {
+ // In child, exit() here will not quit the engine.
+
+ char string[201];
+
+ close(fdset[0]);
+
+ if (i) setenv("DRI_PRIME", "1", 1);
+ create_context();
+
+ const char *vendor = (const char *)glGetString(GL_VENDOR);
+ const char *renderer = (const char *)glGetString(GL_RENDERER);
+
+ int vendor_len = strlen(vendor) + 1;
+ int renderer_len = strlen(renderer) + 1;
+
+ if (vendor_len + renderer_len >= sizeof(string)) {
+ renderer_len = 200 - vendor_len;
+ }
+
+ memcpy(&string, vendor, vendor_len);
+ memcpy(&string[vendor_len], renderer, renderer_len);
+
+ write(fdset[1], string, vendor_len + renderer_len);
+
+ close(fdset[1]);
+ exit(0);
+ }
+ }
+
+ int preferred = 0;
+ int priority = 0;
+
+ if (vendors[0] == vendors[1]) {
+ print_verbose("Only one GPU found, using default.");
+ return 0;
+ }
+
+ for (int i = 1; i >= 0; --i) {
+ vendor *v = vendormap;
+ while (v->glxvendor) {
+ if (v->glxvendor == vendors[i]) {
+ priorities[i] = v->priority;
+
+ if (v->priority >= priority) {
+ priority = v->priority;
+ preferred = i;
+ }
+ }
+ ++v;
+ }
+ }
+
+ print_verbose("Found renderers:");
+ for (int i = 0; i < 2; ++i) {
+ print_verbose("Renderer " + itos(i) + ": " + renderers[i] + " with priority: " + itos(priorities[i]));
+ }
+
+ print_verbose("Using renderer: " + renderers[preferred]);
+ return preferred;
+}
+
+#endif
+#endif
diff --git a/platform/x11/detect_prime.h b/platform/x11/detect_prime.h
new file mode 100644
index 0000000000..13bcf6fc38
--- /dev/null
+++ b/platform/x11/detect_prime.h
@@ -0,0 +1,37 @@
+/*************************************************************************/
+/* detect_prime.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#ifdef X11_ENABLED
+#if defined(OPENGL_ENABLED)
+
+int detect_prime();
+
+#endif
+#endif
diff --git a/platform/x11/os_x11.cpp b/platform/x11/os_x11.cpp
index 0db79fa3e9..e0924fc982 100644
--- a/platform/x11/os_x11.cpp
+++ b/platform/x11/os_x11.cpp
@@ -29,6 +29,8 @@
/*************************************************************************/
#include "os_x11.h"
+#include "detect_prime.h"
+
#include "core/os/dir_access.h"
#include "core/print_string.h"
#include "drivers/gles2/rasterizer_gles2.h"
@@ -240,28 +242,15 @@ Error OS_X11::initialize(const VideoMode &p_desired, int p_video_driver, int p_a
// maybe contextgl wants to be in charge of creating the window
#if defined(OPENGL_ENABLED)
- // Set DRI_PRIME if not set. This means that Godot should default to a higher-power GPU if it exists.
- // Note: Due to the final '0' parameter to setenv any existing DRI_PRIME environment variables will not
- // be overwritten.
- bool enable_dri_prime = true;
- // Check if Nouveau is loaded, we don't want to force dGPU usage with that driver.
- if (FileAccess *f = FileAccess::open("/proc/modules", FileAccess::READ)) {
- // Match driver name + space
- String nouveau_str = "nouveau ";
-
- while (!f->eof_reached()) {
- String line = f->get_line();
-
- if (line.begins_with(nouveau_str)) {
- enable_dri_prime = false;
- break;
- }
+ if (getenv("DRI_PRIME") == NULL) {
+ print_verbose("Detecting GPUs, set DRI_PRIME in the environment to override GPU detection logic.");
+ int use_prime = detect_prime();
+
+ if (use_prime) {
+ print_line("Found discrete GPU, setting DRI_PRIME=1 to use it.");
+ print_line("Note: Set DRI_PRIME=0 in the environment to disable Godot from using the discrete GPU.");
+ setenv("DRI_PRIME", "1", 1);
}
- f->close();
- memdelete(f);
- }
- if (enable_dri_prime) {
- setenv("DRI_PRIME", "1", 0);
}
ContextGL_X11::ContextType opengl_api_type = ContextGL_X11::GLES_3_0_COMPATIBLE;
diff --git a/scene/2d/animated_sprite.cpp b/scene/2d/animated_sprite.cpp
index 707e95e271..28ddf6b5f8 100644
--- a/scene/2d/animated_sprite.cpp
+++ b/scene/2d/animated_sprite.cpp
@@ -395,8 +395,8 @@ void AnimatedSprite::_notification(int p_what) {
int fc = frames->get_frame_count(animation);
if (frame >= fc - 1) {
if (frames->get_animation_loop(animation)) {
- emit_signal(SceneStringNames::get_singleton()->animation_finished);
frame = 0;
+ emit_signal(SceneStringNames::get_singleton()->animation_finished);
} else {
frame = fc - 1;
if (!is_over) {
diff --git a/scene/2d/light_2d.cpp b/scene/2d/light_2d.cpp
index d7ed6f8f49..d1fce74085 100644
--- a/scene/2d/light_2d.cpp
+++ b/scene/2d/light_2d.cpp
@@ -431,7 +431,7 @@ void Light2D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "enabled"), "set_enabled", "is_enabled");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "editor_only"), "set_editor_only", "is_editor_only");
- ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "texture", PROPERTY_HINT_RESOURCE_TYPE, "StreamTexture,ImageTexture"), "set_texture", "get_texture");
+ ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture"), "set_texture", "get_texture");
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "offset"), "set_texture_offset", "get_texture_offset");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "texture_scale", PROPERTY_HINT_RANGE, "0.01,50,0.01"), "set_texture_scale", "get_texture_scale");
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "color"), "set_color", "get_color");
diff --git a/scene/3d/camera.cpp b/scene/3d/camera.cpp
index fd28b876f3..ed9374e422 100644
--- a/scene/3d/camera.cpp
+++ b/scene/3d/camera.cpp
@@ -495,6 +495,7 @@ void Camera::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_keep_aspect_mode"), &Camera::get_keep_aspect_mode);
ClassDB::bind_method(D_METHOD("set_doppler_tracking", "mode"), &Camera::set_doppler_tracking);
ClassDB::bind_method(D_METHOD("get_doppler_tracking"), &Camera::get_doppler_tracking);
+ ClassDB::bind_method(D_METHOD("get_frustum"), &Camera::get_frustum);
ClassDB::bind_method(D_METHOD("set_cull_mask_bit", "layer", "enable"), &Camera::set_cull_mask_bit);
ClassDB::bind_method(D_METHOD("get_cull_mask_bit", "layer"), &Camera::get_cull_mask_bit);
diff --git a/scene/animation/animation_blend_tree.cpp b/scene/animation/animation_blend_tree.cpp
index a343a4f0ed..0daa574f72 100644
--- a/scene/animation/animation_blend_tree.cpp
+++ b/scene/animation/animation_blend_tree.cpp
@@ -141,10 +141,14 @@ void AnimationNodeOneShot::get_parameter_list(List<PropertyInfo> *r_list) const
r_list->push_back(PropertyInfo(Variant::BOOL, prev_active, PROPERTY_HINT_NONE, "", 0));
r_list->push_back(PropertyInfo(Variant::REAL, time, PROPERTY_HINT_NONE, "", 0));
r_list->push_back(PropertyInfo(Variant::REAL, remaining, PROPERTY_HINT_NONE, "", 0));
+ r_list->push_back(PropertyInfo(Variant::REAL, time_to_restart, PROPERTY_HINT_NONE, "", 0));
}
+
Variant AnimationNodeOneShot::get_parameter_default_value(const StringName &p_parameter) const {
if (p_parameter == active || p_parameter == prev_active) {
return false;
+ } else if (p_parameter == time_to_restart) {
+ return -1;
} else {
return 0.0;
}
@@ -218,13 +222,26 @@ float AnimationNodeOneShot::process(float p_time, bool p_seek) {
bool prev_active = get_parameter(this->prev_active);
float time = get_parameter(this->time);
float remaining = get_parameter(this->remaining);
+ float time_to_restart = get_parameter(this->time_to_restart);
if (!active) {
//make it as if this node doesn't exist, pass input 0 by.
if (prev_active) {
set_parameter(this->prev_active, false);
}
- return blend_input(0, p_time, p_seek, 1.0, FILTER_IGNORE, !sync);
+ if (time_to_restart >= 0.0 && !p_seek) {
+ time_to_restart -= p_time;
+ if (time_to_restart < 0) {
+ //restart
+ set_parameter(this->active, true);
+ active = true;
+ }
+ set_parameter(this->time_to_restart, time_to_restart);
+ }
+
+ if (!active) {
+ return blend_input(0, p_time, p_seek, 1.0, FILTER_IGNORE, !sync);
+ }
}
bool os_seek = p_seek;
@@ -276,6 +293,10 @@ float AnimationNodeOneShot::process(float p_time, bool p_seek) {
if (remaining <= 0) {
set_parameter(this->active, false);
set_parameter(this->prev_active, false);
+ if (autorestart) {
+ float restart_sec = autorestart_delay + Math::randf() * autorestart_random_delay;
+ set_parameter(this->time_to_restart, restart_sec);
+ }
}
}
@@ -350,6 +371,7 @@ AnimationNodeOneShot::AnimationNodeOneShot() {
prev_active = "prev_active";
time = "time";
remaining = "remaining";
+ time_to_restart = "time_to_restart";
}
////////////////////////////////////////////////
diff --git a/scene/animation/animation_blend_tree.h b/scene/animation/animation_blend_tree.h
index e207713134..c16dcb1b8c 100644
--- a/scene/animation/animation_blend_tree.h
+++ b/scene/animation/animation_blend_tree.h
@@ -91,6 +91,7 @@ private:
StringName prev_active;
StringName time;
StringName remaining;
+ StringName time_to_restart;
protected:
static void _bind_methods();
diff --git a/scene/animation/animation_node_state_machine.cpp b/scene/animation/animation_node_state_machine.cpp
index 56faba27cf..08cc655cdd 100644
--- a/scene/animation/animation_node_state_machine.cpp
+++ b/scene/animation/animation_node_state_machine.cpp
@@ -373,7 +373,7 @@ float AnimationNodeStateMachinePlayback::process(AnimationNodeStateMachine *sm,
if (fading_from != StringName()) {
- sm->blend_node(current, sm->states[fading_from].node, p_time, p_seek, 1.0 - fade_blend, AnimationNode::FILTER_IGNORE, false);
+ sm->blend_node(fading_from, sm->states[fading_from].node, p_time, p_seek, 1.0 - fade_blend, AnimationNode::FILTER_IGNORE, false);
}
//guess playback position
diff --git a/scene/animation/animation_tree.cpp b/scene/animation/animation_tree.cpp
index 706717a8e3..c32001dbcd 100644
--- a/scene/animation/animation_tree.cpp
+++ b/scene/animation/animation_tree.cpp
@@ -685,6 +685,10 @@ bool AnimationTree::_update_caches(AnimationPlayer *player) {
track = track_animation;
} break;
+ default: {
+ ERR_PRINT("Animation corrupted (invalid track type)");
+ continue;
+ }
}
track_cache[path] = track;
@@ -853,6 +857,9 @@ void AnimationTree::_process_graph(float p_delta) {
for (int i = 0; i < a->get_track_count(); i++) {
NodePath path = a->track_get_path(i);
+
+ ERR_CONTINUE(!track_cache.has(path));
+
TrackCache *track = track_cache[path];
if (track->type != a->track_get_type(i)) {
continue; //may happen should not
diff --git a/scene/gui/color_picker.cpp b/scene/gui/color_picker.cpp
index 6ed465562e..4b1c7b3db7 100644
--- a/scene/gui/color_picker.cpp
+++ b/scene/gui/color_picker.cpp
@@ -35,6 +35,7 @@
#include "core/os/os.h"
#ifdef TOOLS_ENABLED
+#include "editor_scale.h"
#include "editor_settings.h"
#endif
@@ -81,11 +82,8 @@ void ColorPicker::_notification(int p_what) {
} break;
case MainLoop::NOTIFICATION_WM_QUIT_REQUEST: {
- if (screen != NULL) {
- if (screen->is_visible()) {
- screen->hide();
- }
- }
+ if (screen != NULL && screen->is_visible())
+ screen->hide();
} break;
}
}
@@ -156,7 +154,7 @@ void ColorPicker::_value_changed(double) {
void ColorPicker::_html_entered(const String &p_html) {
- if (updating)
+ if (updating || text_is_constructor || !c_text->is_visible())
return;
float last_alpha = color.a;
@@ -211,15 +209,18 @@ void ColorPicker::_update_presets() {
}
void ColorPicker::_text_type_toggled() {
- if (!Engine::get_singleton()->is_editor_hint())
- return;
+
text_is_constructor = !text_is_constructor;
if (text_is_constructor) {
text_type->set_text("");
text_type->set_icon(get_icon("Script", "EditorIcons"));
+
+ c_text->set_editable(false);
} else {
text_type->set_text("#");
text_type->set_icon(NULL);
+
+ c_text->set_editable(true);
}
_update_color();
}
@@ -304,19 +305,21 @@ bool ColorPicker::is_deferred_mode() const {
void ColorPicker::_update_text_value() {
bool visible = true;
if (text_is_constructor) {
- String t = "Color(" + String::num(color.r) + "," + String::num(color.g) + "," + String::num(color.b);
+ String t = "Color(" + String::num(color.r) + ", " + String::num(color.g) + ", " + String::num(color.b);
if (edit_alpha && color.a < 1)
- t += ("," + String::num(color.a) + ")");
+ t += ", " + String::num(color.a) + ")";
else
t += ")";
c_text->set_text(t);
- } else {
- if (color.r > 1 || color.g > 1 || color.b > 1 || color.r < 0 || color.g < 0 || color.b < 0) {
- visible = false;
- } else {
- c_text->set_text(color.to_html(edit_alpha && color.a < 1));
- }
}
+
+ if (color.r > 1 || color.g > 1 || color.b > 1 || color.r < 0 || color.g < 0 || color.b < 0) {
+ visible = false;
+ } else if (!text_is_constructor) {
+ c_text->set_text(color.to_html(edit_alpha && color.a < 1));
+ }
+
+ text_type->set_visible(visible);
c_text->set_visible(visible);
}
@@ -494,21 +497,17 @@ void ColorPicker::_preset_input(const Ref<InputEvent> &p_event) {
void ColorPicker::_screen_input(const Ref<InputEvent> &p_event) {
Ref<InputEventMouseButton> bev = p_event;
-
- if (bev.is_valid()) {
-
- if (bev->get_button_index() == BUTTON_LEFT && !bev->is_pressed()) {
- emit_signal("color_changed", color);
- screen->hide();
- }
+ if (bev.is_valid() && bev->get_button_index() == BUTTON_LEFT && !bev->is_pressed()) {
+ emit_signal("color_changed", color);
+ screen->hide();
}
Ref<InputEventMouseMotion> mev = p_event;
-
if (mev.is_valid()) {
Viewport *r = get_tree()->get_root();
if (!r->get_visible_rect().has_point(Point2(mev->get_global_position().x, mev->get_global_position().y)))
return;
+
Ref<Image> img = r->get_texture()->get_data();
if (img.is_valid() && !img->empty()) {
img->lock();
@@ -534,6 +533,8 @@ void ColorPicker::_screen_pick_pressed() {
screen->set_anchors_and_margins_preset(Control::PRESET_WIDE);
screen->set_default_cursor_shape(CURSOR_POINTING_HAND);
screen->connect("gui_input", this, "_screen_input");
+ // It immediately toggles off in the first press otherwise.
+ screen->call_deferred("connect", "hide", btn_pick, "set_pressed", varray(false));
}
screen->raise();
screen->show_modal();
@@ -615,22 +616,25 @@ ColorPicker::ColorPicker() :
screen = NULL;
HBoxContainer *hb_smpl = memnew(HBoxContainer);
- btn_pick = memnew(ToolButton);
- btn_pick->connect("pressed", this, "_screen_pick_pressed");
+ add_child(hb_smpl);
sample = memnew(TextureRect);
+ hb_smpl->add_child(sample);
sample->set_h_size_flags(SIZE_EXPAND_FILL);
sample->connect("draw", this, "_sample_draw");
- hb_smpl->add_child(sample);
+ btn_pick = memnew(ToolButton);
hb_smpl->add_child(btn_pick);
- add_child(hb_smpl);
+ btn_pick->set_toggle_mode(true);
+ btn_pick->set_tooltip(TTR("Pick a color from the screen."));
+ btn_pick->connect("pressed", this, "_screen_pick_pressed");
HBoxContainer *hb_edit = memnew(HBoxContainer);
+ add_child(hb_edit);
hb_edit->set_v_size_flags(SIZE_EXPAND_FILL);
uv_edit = memnew(Control);
-
+ hb_edit->add_child(uv_edit);
uv_edit->connect("gui_input", this, "_uv_input");
uv_edit->set_mouse_filter(MOUSE_FILTER_PASS);
uv_edit->set_h_size_flags(SIZE_EXPAND_FILL);
@@ -638,19 +642,14 @@ ColorPicker::ColorPicker() :
uv_edit->set_custom_minimum_size(Size2(get_constant("sv_width"), get_constant("sv_height")));
uv_edit->connect("draw", this, "_hsv_draw", make_binds(0, uv_edit));
- add_child(hb_edit);
-
w_edit = memnew(Control);
+ hb_edit->add_child(w_edit);
w_edit->set_custom_minimum_size(Size2(get_constant("h_width"), 0));
w_edit->set_h_size_flags(SIZE_FILL);
w_edit->set_v_size_flags(SIZE_EXPAND_FILL);
w_edit->connect("gui_input", this, "_w_input");
w_edit->connect("draw", this, "_hsv_draw", make_binds(1, w_edit));
- hb_edit->add_child(uv_edit);
- hb_edit->add_child(memnew(VSeparator));
- hb_edit->add_child(w_edit);
-
VBoxContainer *vbl = memnew(VBoxContainer);
add_child(vbl);
@@ -691,31 +690,43 @@ ColorPicker::ColorPicker() :
}
HBoxContainer *hhb = memnew(HBoxContainer);
+ vbr->add_child(hhb);
btn_mode = memnew(CheckButton);
+ hhb->add_child(btn_mode);
btn_mode->set_text(TTR("Raw Mode"));
btn_mode->connect("toggled", this, "set_raw_mode");
- hhb->add_child(btn_mode);
- vbr->add_child(hhb);
+
text_type = memnew(Button);
- text_type->set_flat(true);
- text_type->connect("pressed", this, "_text_type_toggled");
hhb->add_child(text_type);
+ text_type->set_text("#");
+ text_type->set_tooltip(TTR("Switch between hexadecimal and code values."));
+ if (Engine::get_singleton()->is_editor_hint()) {
+
+#ifdef TOOLS_ENABLED
+ text_type->set_custom_minimum_size(Size2(28 * EDSCALE, 0)); // Adjust for the width of the "Script" icon.
+#endif
+ text_type->connect("pressed", this, "_text_type_toggled");
+ } else {
+
+ text_type->set_flat(true);
+ text_type->set_mouse_filter(MOUSE_FILTER_IGNORE);
+ }
c_text = memnew(LineEdit);
hhb->add_child(c_text);
+ c_text->set_h_size_flags(SIZE_EXPAND_FILL);
c_text->connect("text_entered", this, "_html_entered");
c_text->connect("focus_entered", this, "_focus_enter");
c_text->connect("focus_exited", this, "_html_focus_exit");
- text_type->set_text("#");
- c_text->set_h_size_flags(SIZE_EXPAND_FILL);
-
_update_controls();
updating = false;
set_pick_color(Color(1, 1, 1));
+ add_child(memnew(HSeparator));
+
HBoxContainer *bbc = memnew(HBoxContainer);
add_child(bbc);
@@ -725,9 +736,9 @@ ColorPicker::ColorPicker() :
preset->connect("draw", this, "_update_presets");
bt_add_preset = memnew(Button);
+ bbc->add_child(bt_add_preset);
bt_add_preset->set_tooltip(TTR("Add current color as a preset"));
bt_add_preset->connect("pressed", this, "_add_preset_pressed");
- bbc->add_child(bt_add_preset);
}
/////////////////
@@ -838,9 +849,9 @@ void ColorPickerButton::_bind_methods() {
ColorPickerButton::ColorPickerButton() {
- //Initialization is now done deferred
- //this improves performance in the inspector as the color picker
- //can be expensive to initialize
+ // Initialization is now done deferred,
+ // this improves performance in the inspector as the color picker
+ // can be expensive to initialize.
picker = NULL;
popup = NULL;
edit_alpha = true;
diff --git a/scene/main/scene_tree.cpp b/scene/main/scene_tree.cpp
index 5acb157279..f713851090 100644
--- a/scene/main/scene_tree.cpp
+++ b/scene/main/scene_tree.cpp
@@ -484,6 +484,14 @@ bool SceneTree::iteration(float p_time) {
return _quit;
}
+void SceneTree::_update_font_oversampling(float p_ratio) {
+
+ if (use_font_oversampling) {
+ DynamicFontAtSize::font_oversampling = p_ratio;
+ DynamicFont::update_oversampling();
+ }
+}
+
bool SceneTree::idle(float p_time) {
//print_line("ram: "+itos(OS::get_singleton()->get_static_memory_usage())+" sram: "+itos(OS::get_singleton()->get_dynamic_memory_usage()));
@@ -515,12 +523,6 @@ bool SceneTree::idle(float p_time) {
last_screen_size = win_size;
_update_root_rect();
-
- if (use_font_oversampling) {
- DynamicFontAtSize::font_oversampling = OS::get_singleton()->get_window_size().width / root->get_visible_rect().size.width;
- DynamicFont::update_oversampling();
- }
-
emit_signal("screen_resized");
}
@@ -1133,10 +1135,12 @@ void SceneTree::_update_root_rect() {
if (stretch_mode == STRETCH_MODE_DISABLED) {
+ _update_font_oversampling(1.0);
root->set_size((last_screen_size / stretch_shrink).floor());
root->set_attach_to_screen_rect(Rect2(Point2(), last_screen_size));
root->set_size_override_stretch(false);
root->set_size_override(false, Size2());
+ root->update_canvas_items();
return; //user will take care
}
@@ -1154,6 +1158,9 @@ void SceneTree::_update_root_rect() {
//same aspect or ignore aspect
viewport_size = desired_res;
screen_size = video_mode;
+ if (use_font_oversampling) {
+ WARN_PRINT("Font oversampling only works with the following resize modes 'Keep Width', 'Keep Height', and 'Expand'.")
+ }
} else if (viewport_aspect < video_mode_aspect) {
// screen ratio is smaller vertically
@@ -1208,21 +1215,30 @@ void SceneTree::_update_root_rect() {
switch (stretch_mode) {
case STRETCH_MODE_DISABLED: {
// Already handled above
+ _update_font_oversampling(1.0);
} break;
case STRETCH_MODE_2D: {
+ _update_font_oversampling(screen_size.x / viewport_size.x); //screen / viewport radio drives oversampling
root->set_size((screen_size / stretch_shrink).floor());
root->set_attach_to_screen_rect(Rect2(margin, screen_size));
root->set_size_override_stretch(true);
root->set_size_override(true, (viewport_size / stretch_shrink).floor());
+ root->update_canvas_items(); //force them to update just in case
} break;
case STRETCH_MODE_VIEWPORT: {
+ _update_font_oversampling(1.0);
root->set_size((viewport_size / stretch_shrink).floor());
root->set_attach_to_screen_rect(Rect2(margin, screen_size));
root->set_size_override_stretch(false);
root->set_size_override(false, Size2());
+ root->update_canvas_items(); //force them to update just in case
+
+ if (use_font_oversampling) {
+ WARN_PRINT("Font oversampling does not work in 'Viewport' stretch mode, only '2D'.")
+ }
} break;
}
@@ -1925,12 +1941,11 @@ void SceneTree::add_idle_callback(IdleCallback p_callback) {
void SceneTree::set_use_font_oversampling(bool p_oversampling) {
+ if (use_font_oversampling == p_oversampling)
+ return;
+
use_font_oversampling = p_oversampling;
- if (use_font_oversampling) {
- DynamicFontAtSize::font_oversampling = OS::get_singleton()->get_window_size().width / root->get_visible_rect().size.width;
- } else {
- DynamicFontAtSize::font_oversampling = 1.0;
- }
+ _update_root_rect();
}
bool SceneTree::is_using_font_oversampling() const {
@@ -1944,6 +1959,7 @@ SceneTree::SceneTree() {
accept_quit = true;
quit_on_go_back = true;
initialized = false;
+ use_font_oversampling = false;
#ifdef DEBUG_ENABLED
debug_collisions_hint = false;
debug_navigation_hint = false;
@@ -2079,8 +2095,6 @@ SceneTree::SceneTree() {
live_edit_root = NodePath("/root");
#endif
-
- use_font_oversampling = false;
}
SceneTree::~SceneTree() {
diff --git a/scene/main/scene_tree.h b/scene/main/scene_tree.h
index d6ab8c37b2..3a1ff5cb06 100644
--- a/scene/main/scene_tree.h
+++ b/scene/main/scene_tree.h
@@ -153,6 +153,7 @@ private:
Size2i stretch_min;
real_t stretch_shrink;
+ void _update_font_oversampling(float p_ratio);
void _update_root_rect();
List<ObjectID> delete_queue;
diff --git a/scene/main/viewport.cpp b/scene/main/viewport.cpp
index 8df007dcc7..61d6fc7401 100644
--- a/scene/main/viewport.cpp
+++ b/scene/main/viewport.cpp
@@ -693,6 +693,13 @@ bool Viewport::use_arvr() {
return arvr;
}
+void Viewport::update_canvas_items() {
+ if (!is_inside_tree())
+ return;
+
+ _update_canvas_items(this);
+}
+
void Viewport::set_size(const Size2 &p_size) {
if (size == p_size.floor())
@@ -1128,6 +1135,26 @@ Transform2D Viewport::get_final_transform() const {
return stretch_transform * global_canvas_transform;
}
+void Viewport::_update_canvas_items(Node *p_node) {
+ if (p_node != this) {
+
+ Viewport *vp = Object::cast_to<Viewport>(p_node);
+ if (vp)
+ return;
+
+ CanvasItem *ci = Object::cast_to<CanvasItem>(p_node);
+ if (ci) {
+ ci->update();
+ }
+ }
+
+ int cc = p_node->get_child_count();
+
+ for (int i = 0; i < cc; i++) {
+ _update_canvas_items(p_node->get_child(i));
+ }
+}
+
void Viewport::set_size_override(bool p_enable, const Size2 &p_size, const Vector2 &p_margin) {
if (size_override == p_enable && p_size == size_override_size)
diff --git a/scene/main/viewport.h b/scene/main/viewport.h
index cdb9d4afb5..4d0a4e8c87 100644
--- a/scene/main/viewport.h
+++ b/scene/main/viewport.h
@@ -385,6 +385,8 @@ private:
void _drop_mouse_focus();
+ void _update_canvas_items(Node *p_node);
+
protected:
void _notification(int p_what);
static void _bind_methods();
@@ -403,6 +405,7 @@ public:
bool is_audio_listener_2d() const;
void set_size(const Size2 &p_size);
+ void update_canvas_items();
Size2 get_size() const;
Rect2 get_visible_rect() const;
diff --git a/scene/resources/font.cpp b/scene/resources/font.cpp
index 7ecf9a2b16..c72ccc97db 100644
--- a/scene/resources/font.cpp
+++ b/scene/resources/font.cpp
@@ -497,6 +497,7 @@ Size2 Font::get_string_size(const String &p_string) const {
}
void BitmapFont::set_fallback(const Ref<BitmapFont> &p_fallback) {
+ ERR_FAIL_COND(p_fallback == this);
fallback = p_fallback;
}
diff --git a/scene/resources/texture.cpp b/scene/resources/texture.cpp
index 3870916779..ff5900cd3e 100644
--- a/scene/resources/texture.cpp
+++ b/scene/resources/texture.cpp
@@ -178,6 +178,12 @@ void ImageTexture::_reload_hook(const RID &p_hook) {
_change_notify();
}
+bool ImageTexture::keep_images_cached = false;
+
+void ImageTexture::set_keep_images_cached(bool p_enable) {
+ keep_images_cached = p_enable;
+}
+
void ImageTexture::create(int p_width, int p_height, Image::Format p_format, uint32_t p_flags) {
flags = p_flags;
@@ -198,6 +204,10 @@ void ImageTexture::create_from_image(const Ref<Image> &p_image, uint32_t p_flags
VisualServer::get_singleton()->texture_allocate(texture, p_image->get_width(), p_image->get_height(), 0, p_image->get_format(), VS::TEXTURE_TYPE_2D, p_flags);
VisualServer::get_singleton()->texture_set_data(texture, p_image);
_change_notify();
+
+ if (keep_images_cached) {
+ image_cache = p_image;
+ }
}
void ImageTexture::set_flags(uint32_t p_flags) {
@@ -245,6 +255,10 @@ void ImageTexture::set_data(const Ref<Image> &p_image) {
_change_notify();
alpha_cache.unref();
+
+ if (keep_images_cached) {
+ image_cache = p_image;
+ }
}
void ImageTexture::_resource_path_changed() {
@@ -254,7 +268,11 @@ void ImageTexture::_resource_path_changed() {
Ref<Image> ImageTexture::get_data() const {
- return VisualServer::get_singleton()->texture_get_data(texture);
+ if (image_cache.is_valid()) {
+ return image_cache;
+ } else {
+ return VisualServer::get_singleton()->texture_get_data(texture);
+ }
}
int ImageTexture::get_width() const {
@@ -925,6 +943,7 @@ uint32_t AtlasTexture::get_flags() const {
void AtlasTexture::set_atlas(const Ref<Texture> &p_atlas) {
+ ERR_FAIL_COND(p_atlas == this);
if (atlas == p_atlas)
return;
atlas = p_atlas;
@@ -1164,6 +1183,7 @@ void LargeTexture::set_piece_offset(int p_idx, const Point2 &p_offset) {
void LargeTexture::set_piece_texture(int p_idx, const Ref<Texture> &p_texture) {
+ ERR_FAIL_COND(p_texture == this);
ERR_FAIL_INDEX(p_idx, pieces.size());
pieces.write[p_idx].texture = p_texture;
};
@@ -1729,6 +1749,7 @@ void ProxyTexture::_bind_methods() {
void ProxyTexture::set_base(const Ref<Texture> &p_texture) {
+ ERR_FAIL_COND(p_texture == this);
base = p_texture;
if (base.is_valid()) {
VS::get_singleton()->texture_set_proxy(proxy, base->get_rid());
@@ -1844,6 +1865,8 @@ int AnimatedTexture::get_frames() const {
}
void AnimatedTexture::set_frame_texture(int p_frame, const Ref<Texture> &p_texture) {
+
+ ERR_FAIL_COND(p_texture == this);
ERR_FAIL_INDEX(p_frame, MAX_FRAMES);
RWLockWrite w(rw_lock);
@@ -1982,6 +2005,8 @@ void AnimatedTexture::_bind_methods() {
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "frame_" + itos(i) + "/texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_INTERNAL), "set_frame_texture", "get_frame_texture", i);
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "frame_" + itos(i) + "/delay_sec", PROPERTY_HINT_RANGE, "0.0,16.0,0.01", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_INTERNAL), "set_frame_delay", "get_frame_delay", i);
}
+
+ BIND_CONSTANT(MAX_FRAMES);
}
AnimatedTexture::AnimatedTexture() {
diff --git a/scene/resources/texture.h b/scene/resources/texture.h
index 2b67ebec62..4b5b504510 100644
--- a/scene/resources/texture.h
+++ b/scene/resources/texture.h
@@ -111,6 +111,7 @@ private:
Size2 size_override;
float lossy_storage_quality;
mutable Ref<BitMap> alpha_cache;
+ Ref<Image> image_cache;
protected:
virtual void reload_from_file();
@@ -125,7 +126,11 @@ protected:
void _set_data(Dictionary p_data);
+ static bool keep_images_cached;
+
public:
+ static void set_keep_images_cached(bool p_enable);
+
void create(int p_width, int p_height, Image::Format p_format, uint32_t p_flags = FLAGS_DEFAULT);
void create_from_image(const Ref<Image> &p_image, uint32_t p_flags = FLAGS_DEFAULT);
diff --git a/scene/resources/theme.cpp b/scene/resources/theme.cpp
index 786a136040..8d1a24dbf8 100644
--- a/scene/resources/theme.cpp
+++ b/scene/resources/theme.cpp
@@ -622,43 +622,47 @@ void Theme::clear() {
void Theme::copy_default_theme() {
Ref<Theme> default_theme = get_default();
+ copy_theme(default_theme);
+}
+
+void Theme::copy_theme(const Ref<Theme> &p_other) {
//these need reconnecting, so add normally
{
const StringName *K = NULL;
- while ((K = default_theme->icon_map.next(K))) {
+ while ((K = p_other->icon_map.next(K))) {
const StringName *L = NULL;
- while ((L = default_theme->icon_map[*K].next(L))) {
- set_icon(*K, *L, default_theme->icon_map[*K][*L]);
+ while ((L = p_other->icon_map[*K].next(L))) {
+ set_icon(*L, *K, p_other->icon_map[*K][*L]);
}
}
}
{
const StringName *K = NULL;
- while ((K = default_theme->style_map.next(K))) {
+ while ((K = p_other->style_map.next(K))) {
const StringName *L = NULL;
- while ((L = default_theme->style_map[*K].next(L))) {
- set_stylebox(*K, *L, default_theme->style_map[*K][*L]);
+ while ((L = p_other->style_map[*K].next(L))) {
+ set_stylebox(*L, *K, p_other->style_map[*K][*L]);
}
}
}
{
const StringName *K = NULL;
- while ((K = default_theme->font_map.next(K))) {
+ while ((K = p_other->font_map.next(K))) {
const StringName *L = NULL;
- while ((L = default_theme->font_map[*K].next(L))) {
- set_font(*K, *L, default_theme->font_map[*K][*L]);
+ while ((L = p_other->font_map[*K].next(L))) {
+ set_font(*L, *K, p_other->font_map[*K][*L]);
}
}
}
//these are ok to just copy
- color_map = default_theme->color_map;
- constant_map = default_theme->constant_map;
- shader_map = default_theme->shader_map;
+ color_map = p_other->color_map;
+ constant_map = p_other->constant_map;
+ shader_map = p_other->shader_map;
_change_notify();
emit_changed();
@@ -752,6 +756,7 @@ void Theme::_bind_methods() {
ClassDB::bind_method(D_METHOD("_emit_theme_changed"), &Theme::_emit_theme_changed);
ClassDB::bind_method("copy_default_theme", &Theme::copy_default_theme);
+ ClassDB::bind_method(D_METHOD("copy_theme", "other"), &Theme::copy_theme);
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "default_font", PROPERTY_HINT_RESOURCE_TYPE, "Font"), "set_default_font", "get_default_font");
}
diff --git a/scene/resources/theme.h b/scene/resources/theme.h
index 021a2936bd..fb59073cbe 100644
--- a/scene/resources/theme.h
+++ b/scene/resources/theme.h
@@ -184,6 +184,7 @@ public:
void get_type_list(List<StringName> *p_list) const;
void copy_default_theme();
+ void copy_theme(const Ref<Theme> &p_other);
void clear();
Theme();
diff --git a/scene/resources/visual_shader.cpp b/scene/resources/visual_shader.cpp
index 931ee98e47..d96b37938f 100644
--- a/scene/resources/visual_shader.cpp
+++ b/scene/resources/visual_shader.cpp
@@ -1046,32 +1046,40 @@ const VisualShaderNodeInput::Port VisualShaderNodeInput::ports[] = {
{ Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_SCALAR, "point_size", "POINT_SIZE" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_TRANSFORM, "world", "WORLD_MATRIX" },
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_TRANSFORM, "modelview", "MODELVIEW_MATRIX" },
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_TRANSFORM, "camera", "CAMERA_MATRIX" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_TRANSFORM, "inv_camera", "INV_CAMERA_MATRIX" },
- { Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_TRANSFORM, "projection", "PROJECTION" },
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_TRANSFORM, "projection", "PROJECTION_MATRIX" },
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_TRANSFORM, "inv_projection", "INV_PROJECTION_MATRIX" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_SCALAR, "time", "TIME" },
- { Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR, "vp_size", "vec3(VIEWPORT_SIZE, 0)" },
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR, "viewport_size", "vec3(VIEWPORT_SIZE, 0)" },
// Spatial, Fragment
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "fragcoord", "FRAGCOORD.xyz" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "vertex", "VERTEX" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "normal", "NORMAL" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "tangent", "TANGENT" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "binormal", "BINORMAL" },
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "view", "VIEW" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "uv", "vec3(UV,0.0)" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "uv2", "vec3(UV2,0.0)" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "color", "COLOR.rgb" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SCALAR, "alpha", "COLOR.a" },
- { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "point_coord", "vec2(POINT_COORD,0.0)" },
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "point_coord", "vec3(POINT_COORD,0.0)" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "screen_uv", "vec3(SCREEN_UV,0.0)" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SCALAR, "side", "float(FRONT_FACING ? 1.0 : 0.0)" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_TRANSFORM, "world", "WORLD_MATRIX" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_TRANSFORM, "inv_camera", "INV_CAMERA_MATRIX" },
- { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_TRANSFORM, "projection", "PROJECTION" },
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_TRANSFORM, "camera", "CAMERA_MATRIX" },
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_TRANSFORM, "projection", "PROJECTION_MATRIX" },
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_TRANSFORM, "inv_projection", "INV_PROJECTION_MATRIX" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SCALAR, "time", "TIME" },
- { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "vp_size", "vec3(VIEWPORT_SIZE, 0.0)" },
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "viewport_size", "vec3(VIEWPORT_SIZE, 0.0)" },
// Spatial, Light
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "fragcoord", "FRAGCOORD.xyz" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "normal", "NORMAL" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "view", "VIEW" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "light", "LIGHT" },
@@ -1083,15 +1091,18 @@ const VisualShaderNodeInput::Port VisualShaderNodeInput::ports[] = {
{ Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_TRANSFORM, "world", "WORLD_MATRIX" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_TRANSFORM, "inv_camera", "INV_CAMERA_MATRIX" },
- { Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_TRANSFORM, "projection", "PROJECTION" },
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_TRANSFORM, "camera", "CAMERA_MATRIX" },
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_TRANSFORM, "projection", "PROJECTION_MATRIX" },
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_TRANSFORM, "inv_projection", "INV_PROJECTION_MATRIX" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_SCALAR, "time", "TIME" },
- { Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "vp_size", "vec3(VIEWPORT_SIZE, 0.0)" },
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "viewport_size", "vec3(VIEWPORT_SIZE, 0.0)" },
// Canvas Item, Vertex
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR, "vertex", "vec3(VERTEX,0.0)" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR, "uv", "vec3(UV,0.0)" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR, "color", "COLOR.rgb" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_SCALAR, "alpha", "COLOR.a" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_SCALAR, "point_size", "POINT_SIZE" },
+ { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR, "texture_pixel_size", "vec3(TEXTURE_PIXEL_SIZE, 1.0)" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_TRANSFORM, "world", "WORLD_MATRIX" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_TRANSFORM, "projection", "PROJECTION_MATRIX" },
@@ -1099,14 +1110,18 @@ const VisualShaderNodeInput::Port VisualShaderNodeInput::ports[] = {
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_SCALAR, "time", "TIME" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_SCALAR, "light_pass", "float(AT_LIGHT_PASS ? 1.0 : 0.0)" },
// Canvas Item, Fragment
+ { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "fragcoord", "FRAGCOORD.xyz" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "uv", "vec3(UV,0.0)" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "color", "COLOR.rgb" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SCALAR, "alpha", "COLOR.a" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "screen_uv", "vec3(SCREEN_UV,0.0)" },
- { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "point_coord", "vec2(POINT_COORD,0.0)" },
+ { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "texture_pixel_size", "vec3(TEXTURE_PIXEL_SIZE, 1.0)" },
+ { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "screen_pixel_size", "vec3(SCREEN_PIXEL_SIZE, 1.0)" },
+ { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "point_coord", "vec3(POINT_COORD,0.0)" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SCALAR, "time", "TIME" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SCALAR, "light_pass", "float(AT_LIGHT_PASS ? 1.0 : 0.0)" },
// Canvas Item, Light
+ { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "fragcoord", "FRAGCOORD.xyz" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "uv", "vec3(UV,0.0)" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "normal", "NORMAL" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "color", "COLOR.rgb" },
@@ -1117,10 +1132,11 @@ const VisualShaderNodeInput::Port VisualShaderNodeInput::ports[] = {
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "light_alpha", "LIGHT_COLOR.a" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "light_uv", "vec3(LIGHT_UV,0.0)" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "shadow_color", "SHADOW_COLOR.rgb" },
-
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "screen_uv", "vec3(SCREEN_UV,0.0)" },
- { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "point_coord", "vec2(POINT_COORD,0.0)" },
+ { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "texture_pixel_size", "vec3(TEXTURE_PIXEL_SIZE, 1.0)" },
+ { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "point_coord", "vec3(POINT_COORD,0.0)" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_SCALAR, "time", "TIME" },
+
// Particles, Vertex
{ Shader::MODE_PARTICLES, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR, "color", "COLOR.rgb" },
{ Shader::MODE_PARTICLES, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_SCALAR, "alpha", "COLOR.a" },
@@ -1151,16 +1167,16 @@ const VisualShaderNodeInput::Port VisualShaderNodeInput::preview_ports[] = {
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "color", "vec3(1.0)" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SCALAR, "alpha", "1.0" },
- { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "screen_uv", "vec3(UV,0.0)" },
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "screen_uv", "vec3(SCREEN_UV,0.0)" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SCALAR, "side", "1.0" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SCALAR, "time", "TIME" },
- { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "vp_size", "vec3(1.0,1.0, 0.0)" },
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "viewport_size", "vec3(1.0,1.0, 0.0)" },
// Spatial, Light
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "normal", "vec3(0.0,0.0,1.0)" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_SCALAR, "time", "TIME" },
- { Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "vp_size", "vec3(1.0, 1.0, 0.0)" },
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "viewport_size", "vec3(1.0, 1.0, 0.0)" },
// Canvas Item, Vertex
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR, "vertex", "vec3(VERTEX,0.0)" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR, "uv", "vec3(UV,0.0)" },
@@ -1171,7 +1187,7 @@ const VisualShaderNodeInput::Port VisualShaderNodeInput::preview_ports[] = {
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "uv", "vec3(UV,0.0)" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "color", "vec3(1.0)" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SCALAR, "alpha", "1.0" },
- { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "screen_uv", "vec3(UV,0.0)" },
+ { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "screen_uv", "vec3(SCREEN_UV,0.0)" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SCALAR, "time", "TIME" },
// Canvas Item, Light
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "uv", "vec3(UV,0.0)" },
@@ -1179,7 +1195,7 @@ const VisualShaderNodeInput::Port VisualShaderNodeInput::preview_ports[] = {
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "color", "vec3(1.0)" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_SCALAR, "alpha", "1.0" },
- { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "screen_uv", "vec3(UV,0.0)" },
+ { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "screen_uv", "vec3(SCREEN_UV,0.0)" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_SCALAR, "time", "TIME" },
// Particles, Vertex
{ Shader::MODE_PARTICLES, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR, "color", "vec3(1.0)" },
diff --git a/servers/physics_2d_server.cpp b/servers/physics_2d_server.cpp
index 99f539ea86..ca914b67e0 100644
--- a/servers/physics_2d_server.cpp
+++ b/servers/physics_2d_server.cpp
@@ -620,7 +620,7 @@ void Physics2DServer::_bind_methods() {
ClassDB::bind_method(D_METHOD("body_clear_shapes", "body"), &Physics2DServer::body_clear_shapes);
ClassDB::bind_method(D_METHOD("body_set_shape_disabled", "body", "shape_idx", "disable"), &Physics2DServer::body_set_shape_disabled);
- ClassDB::bind_method(D_METHOD("body_set_shape_as_one_way_collision", "body", "shape_idx", "enable"), &Physics2DServer::body_set_shape_as_one_way_collision);
+ ClassDB::bind_method(D_METHOD("body_set_shape_as_one_way_collision", "body", "shape_idx", "enable", "margin"), &Physics2DServer::body_set_shape_as_one_way_collision);
ClassDB::bind_method(D_METHOD("body_attach_object_instance_id", "body", "id"), &Physics2DServer::body_attach_object_instance_id);
ClassDB::bind_method(D_METHOD("body_get_object_instance_id", "body"), &Physics2DServer::body_get_object_instance_id);
diff --git a/servers/register_server_types.cpp b/servers/register_server_types.cpp
index 0c43000186..4e167be300 100644
--- a/servers/register_server_types.cpp
+++ b/servers/register_server_types.cpp
@@ -81,7 +81,6 @@ static void _debugger_get_resource_usage(List<ScriptDebuggerRemote::ResourceUsag
ShaderTypes *shader_types = NULL;
PhysicsServer *_createGodotPhysicsCallback() {
- WARN_PRINT("The GodotPhysics 3D physics engine is deprecated and will be removed in Godot 3.2. You should use the Bullet physics engine instead (configurable in your project settings).");
return memnew(PhysicsServerSW);
}
@@ -167,8 +166,8 @@ void register_server_types() {
GLOBAL_DEF(PhysicsServerManager::setting_property_name, "DEFAULT");
ProjectSettings::get_singleton()->set_custom_property_info(PhysicsServerManager::setting_property_name, PropertyInfo(Variant::STRING, PhysicsServerManager::setting_property_name, PROPERTY_HINT_ENUM, "DEFAULT"));
- PhysicsServerManager::register_server("GodotPhysics - deprecated", &_createGodotPhysicsCallback);
- PhysicsServerManager::set_default_server("GodotPhysics - deprecated");
+ PhysicsServerManager::register_server("GodotPhysics", &_createGodotPhysicsCallback);
+ PhysicsServerManager::set_default_server("GodotPhysics");
}
void unregister_server_types() {
diff --git a/servers/visual/rasterizer.h b/servers/visual/rasterizer.h
index 6f8a30070a..33081dcd0c 100644
--- a/servers/visual/rasterizer.h
+++ b/servers/visual/rasterizer.h
@@ -221,6 +221,7 @@ public:
virtual void textures_keep_original(bool p_enable) = 0;
virtual void texture_set_proxy(RID p_proxy, RID p_base) = 0;
+ virtual Size2 texture_size_with_proxy(RID p_texture) const = 0;
virtual void texture_set_force_redraw_if_visible(RID p_texture, bool p_enable) = 0;
/* SKY API */
diff --git a/servers/visual/visual_server_scene.cpp b/servers/visual/visual_server_scene.cpp
index 23ad2ec1ec..c8d64fca45 100644
--- a/servers/visual/visual_server_scene.cpp
+++ b/servers/visual/visual_server_scene.cpp
@@ -32,6 +32,7 @@
#include "core/os/os.h"
#include "visual_server_global.h"
#include "visual_server_raster.h"
+#include <new>
/* CAMERA API */
RID VisualServerScene::camera_create() {
@@ -573,6 +574,19 @@ void VisualServerScene::instance_set_transform(RID p_instance, const Transform &
if (instance->transform == p_transform)
return; //must be checked to avoid worst evil
+#ifdef DEBUG_ENABLED
+
+ for (int i = 0; i < 4; i++) {
+ const Vector3 &v = i < 3 ? p_transform.basis.elements[i] : p_transform.origin;
+ ERR_FAIL_COND(Math::is_inf(v.x));
+ ERR_FAIL_COND(Math::is_nan(v.x));
+ ERR_FAIL_COND(Math::is_inf(v.y));
+ ERR_FAIL_COND(Math::is_nan(v.y));
+ ERR_FAIL_COND(Math::is_inf(v.z));
+ ERR_FAIL_COND(Math::is_nan(v.z));
+ }
+
+#endif
instance->transform = p_transform;
_instance_queue_update(instance, true);
}
@@ -1240,7 +1254,9 @@ void VisualServerScene::_update_instance_lightmap_captures(Instance *p_instance)
//print_line("update captures for pos: " + p_instance->transform.origin);
- zeromem(p_instance->lightmap_capture_data.ptrw(), 12 * sizeof(Color));
+ for (int i = 0; i < 12; i++)
+ new (&p_instance->lightmap_capture_data.ptrw()[i]) Color;
+
//this could use some sort of blending..
for (List<Instance *>::Element *E = geom->lightmap_captures.front(); E; E = E->next()) {
const PoolVector<RasterizerStorage::LightmapCaptureOctree> *octree = VSG::storage->lightmap_capture_get_octree_ptr(E->get()->base);
diff --git a/servers/visual/visual_server_viewport.cpp b/servers/visual/visual_server_viewport.cpp
index 92b17eae47..7a7ae3a823 100644
--- a/servers/visual/visual_server_viewport.cpp
+++ b/servers/visual/visual_server_viewport.cpp
@@ -97,7 +97,7 @@ void VisualServerViewport::_draw_viewport(Viewport *p_viewport, ARVRInterface::E
RasterizerCanvas::Light *cl = F->get();
if (cl->enabled && cl->texture.is_valid()) {
//not super efficient..
- Size2 tsize(VSG::storage->texture_get_width(cl->texture), VSG::storage->texture_get_height(cl->texture));
+ Size2 tsize = VSG::storage->texture_size_with_proxy(cl->texture);
tsize *= cl->scale;
Vector2 offset = tsize / 2.0;
diff --git a/servers/visual_server.cpp b/servers/visual_server.cpp
index 02acf72951..14c9a29ae5 100644
--- a/servers/visual_server.cpp
+++ b/servers/visual_server.cpp
@@ -2406,7 +2406,7 @@ VisualServer::VisualServer() {
GLOBAL_DEF("rendering/quality/shading/force_blinn_over_ggx.mobile", true);
GLOBAL_DEF("rendering/quality/depth_prepass/enable", true);
- GLOBAL_DEF("rendering/quality/depth_prepass/disable_for_vendors", "PowerVR,Mali,Adreno");
+ GLOBAL_DEF("rendering/quality/depth_prepass/disable_for_vendors", "PowerVR,Mali,Adreno,Apple");
GLOBAL_DEF("rendering/quality/filters/use_nearest_mipmap_filter", false);
}