summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/io/pck_packer.cpp4
-rw-r--r--core/io/xml_parser.cpp8
-rw-r--r--doc/classes/@GlobalScope.xml5
-rw-r--r--doc/classes/AudioServer.xml53
-rw-r--r--doc/classes/GraphNode.xml11
-rw-r--r--doc/classes/JavaClass.xml13
-rw-r--r--doc/classes/JavaClassWrapper.xml21
-rw-r--r--doc/classes/KinematicCollision.xml2
-rw-r--r--doc/classes/KinematicCollision2D.xml2
-rw-r--r--doc/classes/PacketPeer.xml4
-rwxr-xr-xdoc/tools/makerst.py2
-rw-r--r--drivers/coreaudio/audio_driver_coreaudio.cpp14
-rw-r--r--drivers/pulseaudio/audio_driver_pulseaudio.cpp20
-rw-r--r--drivers/wasapi/audio_driver_wasapi.cpp10
-rw-r--r--editor/editor_path.cpp1
-rw-r--r--editor/editor_themes.cpp2
-rw-r--r--editor/plugins/canvas_item_editor_plugin.cpp14
-rw-r--r--editor/project_manager.cpp3
-rw-r--r--editor/rename_dialog.cpp8
-rw-r--r--editor/spatial_editor_gizmos.cpp2
-rw-r--r--editor/translations/af.po4
-rw-r--r--editor/translations/ar.po4
-rw-r--r--editor/translations/bg.po4
-rw-r--r--editor/translations/bn.po4
-rw-r--r--editor/translations/ca.po4
-rw-r--r--editor/translations/cs.po4
-rw-r--r--editor/translations/da.po4
-rw-r--r--editor/translations/de.po20
-rw-r--r--editor/translations/de_CH.po4
-rw-r--r--editor/translations/editor.pot4
-rw-r--r--editor/translations/el.po4
-rw-r--r--editor/translations/eo.po4
-rw-r--r--editor/translations/es.po32
-rw-r--r--editor/translations/es_AR.po4
-rw-r--r--editor/translations/et.po4
-rw-r--r--editor/translations/eu.po4
-rw-r--r--editor/translations/fa.po4
-rw-r--r--editor/translations/fi.po20
-rw-r--r--editor/translations/fil.po4
-rw-r--r--editor/translations/fr.po4
-rw-r--r--editor/translations/ga.po4
-rw-r--r--editor/translations/he.po4
-rw-r--r--editor/translations/hi.po4
-rw-r--r--editor/translations/hr.po4
-rw-r--r--editor/translations/hu.po4
-rw-r--r--editor/translations/id.po4
-rw-r--r--editor/translations/is.po4
-rw-r--r--editor/translations/it.po4
-rw-r--r--editor/translations/ja.po4
-rw-r--r--editor/translations/ka.po4
-rw-r--r--editor/translations/ko.po20
-rw-r--r--editor/translations/lt.po4
-rw-r--r--editor/translations/lv.po4
-rw-r--r--editor/translations/mi.po4
-rw-r--r--editor/translations/ml.po4
-rw-r--r--editor/translations/mr.po4
-rw-r--r--editor/translations/ms.po4
-rw-r--r--editor/translations/nb.po4
-rw-r--r--editor/translations/nl.po228
-rw-r--r--editor/translations/or.po4
-rw-r--r--editor/translations/pl.po20
-rw-r--r--editor/translations/pr.po4
-rw-r--r--editor/translations/pt_BR.po4
-rw-r--r--editor/translations/pt_PT.po20
-rw-r--r--editor/translations/ro.po257
-rw-r--r--editor/translations/ru.po11
-rw-r--r--editor/translations/si.po4
-rw-r--r--editor/translations/sk.po4
-rw-r--r--editor/translations/sl.po4
-rw-r--r--editor/translations/sq.po4
-rw-r--r--editor/translations/sr_Cyrl.po4
-rw-r--r--editor/translations/sr_Latn.po4
-rw-r--r--editor/translations/sv.po4
-rw-r--r--editor/translations/ta.po4
-rw-r--r--editor/translations/te.po4
-rw-r--r--editor/translations/th.po4
-rw-r--r--editor/translations/tr.po4
-rw-r--r--editor/translations/uk.po20
-rw-r--r--editor/translations/ur_PK.po4
-rw-r--r--editor/translations/vi.po4
-rw-r--r--editor/translations/zh_CN.po20
-rw-r--r--editor/translations/zh_HK.po4
-rw-r--r--editor/translations/zh_TW.po4
-rw-r--r--modules/gdscript/gdscript_parser.cpp8
-rw-r--r--modules/mono/class_db_api_json.cpp7
-rw-r--r--modules/mono/csharp_script.cpp2
-rw-r--r--modules/mono/editor/GodotTools/GodotTools/Internals/ScriptClassParser.cs6
-rw-r--r--modules/mono/editor/editor_internal_calls.cpp9
-rw-r--r--modules/mono/editor/script_class_parser.cpp6
-rw-r--r--modules/recast/register_types.cpp10
-rw-r--r--modules/visual_script/visual_script_nodes.cpp16
-rw-r--r--modules/visual_script/visual_script_nodes.h3
-rw-r--r--platform/android/api/api.cpp86
-rw-r--r--platform/android/api/api.h32
-rw-r--r--platform/android/api/java_class_wrapper.h (renamed from platform/android/java_class_wrapper.h)19
-rw-r--r--platform/android/audio_driver_opensl.cpp6
-rw-r--r--platform/android/java_class_wrapper.cpp7
-rw-r--r--platform/android/java_godot_lib_jni.cpp3
-rw-r--r--scene/main/scene_tree.cpp17
-rw-r--r--scene/resources/dynamic_font.cpp11
-rw-r--r--scene/resources/visual_shader.cpp30
-rw-r--r--scene/resources/visual_shader.h3
-rw-r--r--servers/audio/audio_stream.cpp42
-rw-r--r--servers/audio/audio_stream.h2
-rw-r--r--servers/audio_server.cpp65
-rw-r--r--servers/audio_server.h25
106 files changed, 910 insertions, 580 deletions
diff --git a/core/io/pck_packer.cpp b/core/io/pck_packer.cpp
index 8bc73103e9..fb83f0ac90 100644
--- a/core/io/pck_packer.cpp
+++ b/core/io/pck_packer.cpp
@@ -63,6 +63,10 @@ void PCKPacker::_bind_methods() {
Error PCKPacker::pck_start(const String &p_file, int p_alignment) {
+ if (file != NULL) {
+ memdelete(file);
+ }
+
file = FileAccess::open(p_file, FileAccess::WRITE);
ERR_FAIL_COND_V_MSG(!file, ERR_CANT_CREATE, "Can't open file to write: " + String(p_file) + ".");
diff --git a/core/io/xml_parser.cpp b/core/io/xml_parser.cpp
index 53e7da91a7..bd450dd84f 100644
--- a/core/io/xml_parser.cpp
+++ b/core/io/xml_parser.cpp
@@ -471,6 +471,10 @@ Error XMLParser::open_buffer(const Vector<uint8_t> &p_buffer) {
ERR_FAIL_COND_V(p_buffer.size() == 0, ERR_INVALID_DATA);
+ if (data) {
+ memdelete_arr(data);
+ }
+
length = p_buffer.size();
data = memnew_arr(char, length + 1);
copymem(data, p_buffer.ptr(), length);
@@ -489,6 +493,10 @@ Error XMLParser::open(const String &p_path) {
length = file->get_len();
ERR_FAIL_COND_V(length < 1, ERR_FILE_CORRUPT);
+ if (data) {
+ memdelete_arr(data);
+ }
+
data = memnew_arr(char, length + 1);
file->get_buffer((uint8_t *)data, length);
data[length] = 0;
diff --git a/doc/classes/@GlobalScope.xml b/doc/classes/@GlobalScope.xml
index e84e265983..a131f1f8c8 100644
--- a/doc/classes/@GlobalScope.xml
+++ b/doc/classes/@GlobalScope.xml
@@ -42,8 +42,13 @@
<member name="JSON" type="JSON" setter="" getter="">
The [JSON] singleton.
</member>
+ <member name="JavaClassWrapper" type="JavaClassWrapper" setter="" getter="">
+ The [JavaClassWrapper] singleton.
+ [b]Note:[/b] Only implemented on Android.
+ </member>
<member name="JavaScript" type="JavaScript" setter="" getter="">
The [JavaScript] singleton.
+ [b]Note:[/b] Only implemented on HTML5.
</member>
<member name="Marshalls" type="Reference" setter="" getter="">
The [Marshalls] singleton.
diff --git a/doc/classes/AudioServer.xml b/doc/classes/AudioServer.xml
index 2d3ceebed5..71e78500af 100644
--- a/doc/classes/AudioServer.xml
+++ b/doc/classes/AudioServer.xml
@@ -32,25 +32,26 @@
Adds an [AudioEffect] effect to the bus [code]bus_idx[/code] at [code]at_position[/code].
</description>
</method>
- <method name="capture_get_device_list">
- <return type="Array">
+ <method name="capture_get_device">
+ <return type="String">
</return>
<description>
- Returns the names of all audio input devices detected on the system.
+ Name of the current device for audio input (see [method capture_get_device_list]).
</description>
</method>
- <method name="capture_start">
- <return type="int" enum="Error">
+ <method name="capture_get_device_list">
+ <return type="Array">
</return>
<description>
- Attempts to start recording from the audio driver's capture device. On success, the return value is [constant OK].
+ Returns the names of all audio input devices detected on the system.
</description>
</method>
- <method name="capture_stop">
- <return type="int" enum="Error">
+ <method name="capture_set_device">
+ <return type="void">
</return>
+ <argument index="0" name="name" type="String">
+ </argument>
<description>
- Attempts to stop recording from the audio driver's capture device. On success, the return value is [constant OK].
</description>
</method>
<method name="generate_bus_layout" qualifiers="const">
@@ -159,32 +160,11 @@
Returns the volume of the bus at index [code]bus_idx[/code] in dB.
</description>
</method>
- <method name="get_capture_buffer">
- <return type="PoolIntArray">
- </return>
- <description>
- Returns an [PoolIntArray] containing audio frames from the capture device.
- </description>
- </method>
- <method name="get_capture_position">
- <return type="int">
- </return>
- <description>
- Returns the write position of the capture device buffer.
- </description>
- </method>
- <method name="get_capture_size">
- <return type="int">
- </return>
- <description>
- Returns the size of the capture device buffer.
- </description>
- </method>
<method name="get_device_list">
<return type="Array">
</return>
<description>
- Returns the names of all audio output devices detected on the system.
+ Returns the names of all audio devices detected on the system.
</description>
</method>
<method name="get_mix_rate" qualifiers="const">
@@ -409,9 +389,6 @@
<member name="bus_count" type="int" setter="set_bus_count" getter="get_bus_count" default="1">
Number of available audio buses.
</member>
- <member name="capture_device" type="String" setter="capture_set_device" getter="capture_get_device" default="&quot;&quot;">
- Name of the current device for audio input (see [method capture_get_device_list]).
- </member>
<member name="device" type="String" setter="set_device" getter="get_device" default="&quot;Default&quot;">
Name of the current device for audio output (see [method get_device_list]).
</member>
@@ -420,14 +397,6 @@
</member>
</members>
<signals>
- <signal name="audio_mix_callback">
- <description>
- </description>
- </signal>
- <signal name="audio_update_callback">
- <description>
- </description>
- </signal>
<signal name="bus_layout_changed">
<description>
Emitted when the [AudioBusLayout] changes.
diff --git a/doc/classes/GraphNode.xml b/doc/classes/GraphNode.xml
index 8fda9c20a5..1729d20e54 100644
--- a/doc/classes/GraphNode.xml
+++ b/doc/classes/GraphNode.xml
@@ -1,11 +1,12 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="GraphNode" inherits="Container" category="Core" version="3.2">
<brief_description>
- A GraphNode is a container with several input and output slots allowing connections between GraphNodes. Slots can have different, incompatible types.
+ A GraphNode is a container with potentially several input and output slots allowing connections between GraphNodes. Slots can have different, incompatible types.
</brief_description>
<description>
- A GraphNode is a container defined by a title. It can have one or more input and output slots, which can be enabled (shown) or disabled (not shown) and have different (incompatible) types. Colors can also be assigned to slots. A tuple of input and output slots is defined for each GUI element included in the GraphNode. Input and output connections are left and right slots, but only enabled slots are counted as connections.
- To add a slot to GraphNode, add any [Control]-derived child node to it.
+ A GraphNode is a container. Each GraphNode can have several input and output slots, sometimes refered to as ports, allowing connections between GraphNodes. To add a slot to GraphNode, add any [Control]-derived child node to it.
+ After adding at least one child to GraphNode new sections will be automatically created in the Inspector called 'Slot'. When 'Slot' is expanded you will see list with index number for each slot. You can click on each of them to expand further.
+ In the Inspector you can enable (show) or disable (hide) slots. By default all slots are disabled so you may not see any slots on your GraphNode initially. You can assign a type to each slot. Only slots of the same type will be able to connect to each other. You can also assign colors to slots. A tuple of input and output slots is defined for each GUI element included in the GraphNode. Input connections are on the left and output connections are on the right side of GraphNode. Only enabled slots are counted as connections.
</description>
<tutorials>
</tutorials>
@@ -192,14 +193,14 @@
</member>
<member name="resizable" type="bool" setter="set_resizable" getter="is_resizable" default="false">
If [code]true[/code], the user can resize the GraphNode.
- [b]Note:[/b] Dragging the handle will only trigger the [signal resize_request] signal, the GraphNode needs to be resized manually.
+ [b]Note:[/b] Dragging the handle will only emit the [signal resize_request] signal, the GraphNode needs to be resized manually.
</member>
<member name="selected" type="bool" setter="set_selected" getter="is_selected" default="false">
If [code]true[/code], the GraphNode is selected.
</member>
<member name="show_close" type="bool" setter="set_show_close_button" getter="is_close_button_visible" default="false">
If [code]true[/code], the close button will be visible.
- [b]Note:[/b] Pressing it will only trigger the [signal close_request] signal, the GraphNode needs to be removed manually.
+ [b]Note:[/b] Pressing it will only emit the [signal close_request] signal, the GraphNode needs to be removed manually.
</member>
<member name="title" type="String" setter="set_title" getter="get_title" default="&quot;&quot;">
The text displayed in the GraphNode's title bar.
diff --git a/doc/classes/JavaClass.xml b/doc/classes/JavaClass.xml
new file mode 100644
index 0000000000..c56f3cd481
--- /dev/null
+++ b/doc/classes/JavaClass.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="JavaClass" inherits="Reference" category="Core" version="3.2">
+ <brief_description>
+ </brief_description>
+ <description>
+ </description>
+ <tutorials>
+ </tutorials>
+ <methods>
+ </methods>
+ <constants>
+ </constants>
+</class>
diff --git a/doc/classes/JavaClassWrapper.xml b/doc/classes/JavaClassWrapper.xml
new file mode 100644
index 0000000000..f027ddb975
--- /dev/null
+++ b/doc/classes/JavaClassWrapper.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="JavaClassWrapper" inherits="Object" category="Core" version="3.2">
+ <brief_description>
+ </brief_description>
+ <description>
+ </description>
+ <tutorials>
+ </tutorials>
+ <methods>
+ <method name="wrap">
+ <return type="JavaClass">
+ </return>
+ <argument index="0" name="name" type="String">
+ </argument>
+ <description>
+ </description>
+ </method>
+ </methods>
+ <constants>
+ </constants>
+</class>
diff --git a/doc/classes/KinematicCollision.xml b/doc/classes/KinematicCollision.xml
index 46e4176e9f..b193847e92 100644
--- a/doc/classes/KinematicCollision.xml
+++ b/doc/classes/KinematicCollision.xml
@@ -37,7 +37,7 @@
The colliding body's shape's normal at the point of collision.
</member>
<member name="position" type="Vector3" setter="" getter="get_position" default="Vector3( 0, 0, 0 )">
- The point of collision.
+ The point of collision, in global coordinates.
</member>
<member name="remainder" type="Vector3" setter="" getter="get_remainder" default="Vector3( 0, 0, 0 )">
The moving object's remaining movement vector.
diff --git a/doc/classes/KinematicCollision2D.xml b/doc/classes/KinematicCollision2D.xml
index 4c9337f82d..8860c05d40 100644
--- a/doc/classes/KinematicCollision2D.xml
+++ b/doc/classes/KinematicCollision2D.xml
@@ -37,7 +37,7 @@
The colliding body's shape's normal at the point of collision.
</member>
<member name="position" type="Vector2" setter="" getter="get_position" default="Vector2( 0, 0 )">
- The point of collision.
+ The point of collision, in global coordinates.
</member>
<member name="remainder" type="Vector2" setter="" getter="get_remainder" default="Vector2( 0, 0 )">
The moving object's remaining movement vector.
diff --git a/doc/classes/PacketPeer.xml b/doc/classes/PacketPeer.xml
index d52bf4e3bb..e8c1980dd9 100644
--- a/doc/classes/PacketPeer.xml
+++ b/doc/classes/PacketPeer.xml
@@ -67,6 +67,10 @@
If [code]true[/code], the PacketPeer will allow encoding and decoding of object via [method get_var] and [method put_var].
[b]Warning:[/b] Deserialized objects can contain code which gets executed. Do not use this option if the serialized object comes from untrusted sources to avoid potential security threats such as remote code execution.
</member>
+ <member name="encode_buffer_max_size" type="int" setter="set_encode_buffer_max_size" getter="get_encode_buffer_max_size" default="8388608">
+ Maximum buffer size allowed when encoding [Variant]s. Raise this value to support heavier memory allocations.
+ The [method put_var] method allocates memory on the stack, and the buffer used will grow automatically to the closest power of two to match the size of the [Variant]. If the [Variant] is bigger than [code]encode_buffer_max_size[/code], the method will error out with [constant ERR_OUT_OF_MEMORY].
+ </member>
</members>
<constants>
</constants>
diff --git a/doc/tools/makerst.py b/doc/tools/makerst.py
index 4b07bf00ee..18fc70516e 100755
--- a/doc/tools/makerst.py
+++ b/doc/tools/makerst.py
@@ -149,7 +149,7 @@ class State:
getter = property.get("getter") or None
default_value = property.get("default") or None
if default_value is not None:
- default_value = escape_rst(default_value)
+ default_value = '``{}``'.format(default_value)
overridden = property.get("override") or False
property_def = PropertyDef(property_name, type_name, setter, getter, property.text, default_value, overridden)
diff --git a/drivers/coreaudio/audio_driver_coreaudio.cpp b/drivers/coreaudio/audio_driver_coreaudio.cpp
index 1e97100a32..c67e90c1df 100644
--- a/drivers/coreaudio/audio_driver_coreaudio.cpp
+++ b/drivers/coreaudio/audio_driver_coreaudio.cpp
@@ -233,11 +233,11 @@ OSStatus AudioDriverCoreAudio::input_callback(void *inRefCon,
if (result == noErr) {
for (unsigned int i = 0; i < inNumberFrames * ad->capture_channels; i++) {
int32_t sample = ad->input_buf[i] << 16;
- ad->capture_buffer_write(sample);
+ ad->input_buffer_write(sample);
if (ad->capture_channels == 1) {
- // In case capture device is single channel convert it to Stereo
- ad->capture_buffer_write(sample);
+ // In case input device is single channel convert it to Stereo
+ ad->input_buffer_write(sample);
}
}
} else {
@@ -487,7 +487,7 @@ void AudioDriverCoreAudio::capture_finish() {
Error AudioDriverCoreAudio::capture_start() {
- capture_buffer_init(buffer_frames);
+ input_buffer_init(buffer_frames);
OSStatus result = AudioOutputUnitStart(input_unit);
if (result != noErr) {
@@ -642,9 +642,9 @@ void AudioDriverCoreAudio::_set_device(const String &device, bool capture) {
ERR_FAIL_COND(result != noErr);
if (capture) {
- // Reset audio capture to keep synchronisation.
- capture_position = 0;
- capture_size = 0;
+ // Reset audio input to keep synchronisation.
+ input_position = 0;
+ input_size = 0;
}
}
}
diff --git a/drivers/pulseaudio/audio_driver_pulseaudio.cpp b/drivers/pulseaudio/audio_driver_pulseaudio.cpp
index 68487c7805..524f0363a1 100644
--- a/drivers/pulseaudio/audio_driver_pulseaudio.cpp
+++ b/drivers/pulseaudio/audio_driver_pulseaudio.cpp
@@ -229,8 +229,8 @@ Error AudioDriverPulseAudio::init_device() {
samples_out.resize(pa_buffer_size);
// Reset audio input to keep synchronisation.
- capture_position = 0;
- capture_size = 0;
+ input_position = 0;
+ input_size = 0;
return OK;
}
@@ -465,7 +465,7 @@ void AudioDriverPulseAudio::thread_func(void *p_udata) {
size_t bytes = pa_stream_readable_size(ad->pa_rec_str);
if (bytes > 0) {
const void *ptr = NULL;
- size_t maxbytes = ad->capture_buffer.size() * sizeof(int16_t);
+ size_t maxbytes = ad->input_buffer.size() * sizeof(int16_t);
bytes = MIN(bytes, maxbytes);
ret = pa_stream_peek(ad->pa_rec_str, &ptr, &bytes);
@@ -475,11 +475,11 @@ void AudioDriverPulseAudio::thread_func(void *p_udata) {
int16_t *srcptr = (int16_t *)ptr;
for (size_t i = bytes >> 1; i > 0; i--) {
int32_t sample = int32_t(*srcptr++) << 16;
- ad->capture_buffer_write(sample);
+ ad->input_buffer_write(sample);
if (ad->pa_rec_map.channels == 1) {
- // In case capture device is single channel convert it to Stereo
- ad->capture_buffer_write(sample);
+ // In case input device is single channel convert it to Stereo
+ ad->input_buffer_write(sample);
}
}
@@ -666,7 +666,7 @@ Error AudioDriverPulseAudio::capture_init_device() {
break;
default:
- WARN_PRINTS("PulseAudio: Unsupported number of capture channels: " + itos(pa_rec_map.channels));
+ WARN_PRINTS("PulseAudio: Unsupported number of input channels: " + itos(pa_rec_map.channels));
pa_channel_map_init_stereo(&pa_rec_map);
break;
}
@@ -698,10 +698,10 @@ Error AudioDriverPulseAudio::capture_init_device() {
ERR_FAIL_V(ERR_CANT_OPEN);
}
- capture_buffer_init(input_buffer_frames);
+ input_buffer_init(input_buffer_frames);
- print_verbose("PulseAudio: detected " + itos(pa_rec_map.channels) + " capture channels");
- print_verbose("PulseAudio: capture buffer frames: " + itos(input_buffer_frames) + " calculated latency: " + itos(input_buffer_frames * 1000 / mix_rate) + "ms");
+ print_verbose("PulseAudio: detected " + itos(pa_rec_map.channels) + " input channels");
+ print_verbose("PulseAudio: input buffer frames: " + itos(input_buffer_frames) + " calculated latency: " + itos(input_buffer_frames * 1000 / mix_rate) + "ms");
return OK;
}
diff --git a/drivers/wasapi/audio_driver_wasapi.cpp b/drivers/wasapi/audio_driver_wasapi.cpp
index 8b342fb416..9a05284aea 100644
--- a/drivers/wasapi/audio_driver_wasapi.cpp
+++ b/drivers/wasapi/audio_driver_wasapi.cpp
@@ -342,8 +342,8 @@ Error AudioDriverWASAPI::init_render_device(bool reinit) {
// Sample rate is independent of channels (ref: https://stackoverflow.com/questions/11048825/audio-sample-frequency-rely-on-channels)
samples_in.resize(buffer_frames * channels);
- capture_position = 0;
- capture_size = 0;
+ input_position = 0;
+ input_size = 0;
print_verbose("WASAPI: detected " + itos(channels) + " channels");
print_verbose("WASAPI: audio buffer frames: " + itos(buffer_frames) + " calculated latency: " + itos(buffer_frames * 1000 / mix_rate) + "ms");
@@ -362,7 +362,7 @@ Error AudioDriverWASAPI::init_capture_device(bool reinit) {
HRESULT hr = audio_input.audio_client->GetBufferSize(&max_frames);
ERR_FAIL_COND_V(hr != S_OK, ERR_CANT_OPEN);
- capture_buffer_init(max_frames);
+ input_buffer_init(max_frames);
return OK;
}
@@ -715,8 +715,8 @@ void AudioDriverWASAPI::thread_func(void *p_udata) {
}
}
- ad->capture_buffer_write(l);
- ad->capture_buffer_write(r);
+ ad->input_buffer_write(l);
+ ad->input_buffer_write(r);
}
read_frames += num_frames_available;
diff --git a/editor/editor_path.cpp b/editor/editor_path.cpp
index d538c7c23d..f0d69f98fb 100644
--- a/editor/editor_path.cpp
+++ b/editor/editor_path.cpp
@@ -150,6 +150,7 @@ void EditorPath::_bind_methods() {
EditorPath::EditorPath(EditorHistory *p_history) {
history = p_history;
+ set_clip_text(true);
set_text_align(ALIGN_LEFT);
get_popup()->connect("about_to_show", this, "_about_to_show");
get_popup()->connect("id_pressed", this, "_id_pressed");
diff --git a/editor/editor_themes.cpp b/editor/editor_themes.cpp
index 2cacc767c8..621f531687 100644
--- a/editor/editor_themes.cpp
+++ b/editor/editor_themes.cpp
@@ -1218,7 +1218,7 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
Ref<Theme> create_custom_theme(const Ref<Theme> p_theme) {
Ref<Theme> theme;
- String custom_theme = EditorSettings::get_singleton()->get("interface/theme/custom_theme");
+ const String custom_theme = EditorSettings::get_singleton()->get("interface/theme/custom_theme");
if (custom_theme != "") {
theme = ResourceLoader::load(custom_theme);
}
diff --git a/editor/plugins/canvas_item_editor_plugin.cpp b/editor/plugins/canvas_item_editor_plugin.cpp
index e1fafde6b9..f798714812 100644
--- a/editor/plugins/canvas_item_editor_plugin.cpp
+++ b/editor/plugins/canvas_item_editor_plugin.cpp
@@ -1750,8 +1750,18 @@ bool CanvasItemEditor::_gui_input_resize(const Ref<InputEvent> &p_event) {
Transform2D xform = canvas_item->get_global_transform_with_canvas().affine_inverse();
- Point2 drag_to_snapped_begin = snap_point(xform.affine_inverse().xform(current_begin) + (drag_to - drag_from), SNAP_NODE_ANCHORS | SNAP_NODE_PARENT | SNAP_OTHER_NODES | SNAP_GRID | SNAP_PIXEL, 0, canvas_item);
- Point2 drag_to_snapped_end = snap_point(xform.affine_inverse().xform(current_end) + (drag_to - drag_from), SNAP_NODE_ANCHORS | SNAP_NODE_PARENT | SNAP_OTHER_NODES | SNAP_GRID | SNAP_PIXEL, 0, canvas_item);
+ Point2 drag_to_snapped_begin;
+ Point2 drag_to_snapped_end;
+
+ // last call decides which snapping lines are drawn
+ if (drag_type == DRAG_LEFT || drag_type == DRAG_TOP || drag_type == DRAG_TOP_LEFT) {
+ drag_to_snapped_end = snap_point(xform.affine_inverse().xform(current_end) + (drag_to - drag_from), SNAP_NODE_ANCHORS | SNAP_NODE_PARENT | SNAP_OTHER_NODES | SNAP_GRID | SNAP_PIXEL, 0, canvas_item);
+ drag_to_snapped_begin = snap_point(xform.affine_inverse().xform(current_begin) + (drag_to - drag_from), SNAP_NODE_ANCHORS | SNAP_NODE_PARENT | SNAP_OTHER_NODES | SNAP_GRID | SNAP_PIXEL, 0, canvas_item);
+ } else {
+ drag_to_snapped_begin = snap_point(xform.affine_inverse().xform(current_begin) + (drag_to - drag_from), SNAP_NODE_ANCHORS | SNAP_NODE_PARENT | SNAP_OTHER_NODES | SNAP_GRID | SNAP_PIXEL, 0, canvas_item);
+ drag_to_snapped_end = snap_point(xform.affine_inverse().xform(current_end) + (drag_to - drag_from), SNAP_NODE_ANCHORS | SNAP_NODE_PARENT | SNAP_OTHER_NODES | SNAP_GRID | SNAP_PIXEL, 0, canvas_item);
+ }
+
Point2 drag_begin = xform.xform(drag_to_snapped_begin);
Point2 drag_end = xform.xform(drag_to_snapped_end);
diff --git a/editor/project_manager.cpp b/editor/project_manager.cpp
index ca3431d3ec..9bbb9bd38c 100644
--- a/editor/project_manager.cpp
+++ b/editor/project_manager.cpp
@@ -2419,12 +2419,11 @@ ProjectManager::ProjectManager() {
FileDialog::set_default_show_hidden_files(EditorSettings::get_singleton()->get("filesystem/file_dialog/show_hidden_files"));
set_anchors_and_margins_preset(Control::PRESET_WIDE);
- set_theme(create_editor_theme());
+ set_theme(create_custom_theme());
gui_base = memnew(Control);
add_child(gui_base);
gui_base->set_anchors_and_margins_preset(Control::PRESET_WIDE);
- gui_base->set_theme(create_custom_theme());
Panel *panel = memnew(Panel);
gui_base->add_child(panel);
diff --git a/editor/rename_dialog.cpp b/editor/rename_dialog.cpp
index ce37b9e7f6..32fcdab4c6 100644
--- a/editor/rename_dialog.cpp
+++ b/editor/rename_dialog.cpp
@@ -109,14 +109,8 @@ RenameDialog::RenameDialog(SceneTreeEditor *p_scene_tree_editor, UndoRedo *p_und
const int feature_min_height = 160 * EDSCALE;
- Ref<Theme> collapse_theme = create_editor_theme();
- collapse_theme->set_icon("checked", "CheckBox", collapse_theme->get_icon("GuiTreeArrowDown", "EditorIcons"));
- collapse_theme->set_icon("unchecked", "CheckBox", collapse_theme->get_icon("GuiTreeArrowRight", "EditorIcons"));
-
- CheckBox *chk_collapse_features = memnew(CheckBox);
+ CheckButton *chk_collapse_features = memnew(CheckButton);
chk_collapse_features->set_text(TTR("Advanced Options"));
- chk_collapse_features->set_theme(collapse_theme);
- chk_collapse_features->set_focus_mode(FOCUS_NONE);
vbc->add_child(chk_collapse_features);
tabc_features = memnew(TabContainer);
diff --git a/editor/spatial_editor_gizmos.cpp b/editor/spatial_editor_gizmos.cpp
index 89713c2579..418ff1d2a3 100644
--- a/editor/spatial_editor_gizmos.cpp
+++ b/editor/spatial_editor_gizmos.cpp
@@ -885,7 +885,7 @@ void LightSpatialGizmoPlugin::set_handle(EditorSpatialGizmo *p_gizmo, int p_idx,
d = Math::stepify(d, SpatialEditor::get_singleton()->get_translate_snap());
}
- if (d < 0)
+ if (d <= 0) // Equal is here for negative zero.
d = 0;
light->set_param(Light::PARAM_RANGE, d);
diff --git a/editor/translations/af.po b/editor/translations/af.po
index 129fe3e6aa..9e9f07b064 100644
--- a/editor/translations/af.po
+++ b/editor/translations/af.po
@@ -7394,6 +7394,10 @@ msgid "Cinematic Preview"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr ""
diff --git a/editor/translations/ar.po b/editor/translations/ar.po
index 1fa1ceb069..8eed29764d 100644
--- a/editor/translations/ar.po
+++ b/editor/translations/ar.po
@@ -7554,6 +7554,10 @@ msgid "Cinematic Preview"
msgstr "يُنشئ مستعرضات الميش"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr ""
diff --git a/editor/translations/bg.po b/editor/translations/bg.po
index adf1218188..f5f4b0071d 100644
--- a/editor/translations/bg.po
+++ b/editor/translations/bg.po
@@ -7444,6 +7444,10 @@ msgid "Cinematic Preview"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr "Свободен Изглед Отляво"
diff --git a/editor/translations/bn.po b/editor/translations/bn.po
index 6c4abed64b..eb2f1b5b22 100644
--- a/editor/translations/bn.po
+++ b/editor/translations/bn.po
@@ -7845,6 +7845,10 @@ msgid "Cinematic Preview"
msgstr "মেস লাইব্রেরি তৈরি হচ্ছে"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr "বাম দিকে ফ্রিলুক করুন"
diff --git a/editor/translations/ca.po b/editor/translations/ca.po
index 047ab04858..9902c8a736 100644
--- a/editor/translations/ca.po
+++ b/editor/translations/ca.po
@@ -7433,6 +7433,10 @@ msgid "Cinematic Preview"
msgstr "Previsualització Cinemàtica"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr "Vista Lliure Esquerra"
diff --git a/editor/translations/cs.po b/editor/translations/cs.po
index 2ed1e15d3d..9c8c99d251 100644
--- a/editor/translations/cs.po
+++ b/editor/translations/cs.po
@@ -7371,6 +7371,10 @@ msgid "Cinematic Preview"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr "Volný pohled doleva"
diff --git a/editor/translations/da.po b/editor/translations/da.po
index 3f36d56975..1851018836 100644
--- a/editor/translations/da.po
+++ b/editor/translations/da.po
@@ -7549,6 +7549,10 @@ msgid "Cinematic Preview"
msgstr "Opretter Maske Forhåndsvisninger"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr ""
diff --git a/editor/translations/de.po b/editor/translations/de.po
index 0285643cde..60b086ffe6 100644
--- a/editor/translations/de.po
+++ b/editor/translations/de.po
@@ -52,7 +52,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2020-01-13 13:36+0000\n"
+"PO-Revision-Date: 2020-01-19 11:03+0000\n"
"Last-Translator: So Wieso <sowieso@dukun.de>\n"
"Language-Team: German <https://hosted.weblate.org/projects/godot-engine/"
"godot/de/>\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.10.1\n"
+"X-Generator: Weblate 3.10.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -1985,9 +1985,8 @@ msgid "Inherited by:"
msgstr "Vererbt an:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Description"
-msgstr "Beschreibung:"
+msgstr "Beschreibung"
#: editor/editor_help.cpp
msgid "Online Tutorials"
@@ -2008,14 +2007,12 @@ msgid "Properties"
msgstr "Eigenschaften"
#: editor/editor_help.cpp
-#, fuzzy
msgid "override:"
-msgstr "Überschreibungen"
+msgstr "Überschreibungen:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "default:"
-msgstr "Standard"
+msgstr "Standard:"
#: editor/editor_help.cpp
msgid "Methods"
@@ -2038,9 +2035,8 @@ msgid "Property Descriptions"
msgstr "Eigenschaften-Beschreibung"
#: editor/editor_help.cpp
-#, fuzzy
msgid "(value)"
-msgstr "Wert"
+msgstr "(Wert)"
#: editor/editor_help.cpp
msgid ""
@@ -7361,6 +7357,10 @@ msgid "Cinematic Preview"
msgstr "Cinematische Vorschau"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr "Freisicht Links"
diff --git a/editor/translations/de_CH.po b/editor/translations/de_CH.po
index 1c2ef6990a..bfa4c18d1f 100644
--- a/editor/translations/de_CH.po
+++ b/editor/translations/de_CH.po
@@ -7384,6 +7384,10 @@ msgid "Cinematic Preview"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr ""
diff --git a/editor/translations/editor.pot b/editor/translations/editor.pot
index 21b718b405..5a69173c37 100644
--- a/editor/translations/editor.pot
+++ b/editor/translations/editor.pot
@@ -7048,6 +7048,10 @@ msgid "Cinematic Preview"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr ""
diff --git a/editor/translations/el.po b/editor/translations/el.po
index fd426b4614..0c1313d388 100644
--- a/editor/translations/el.po
+++ b/editor/translations/el.po
@@ -7338,6 +7338,10 @@ msgid "Cinematic Preview"
msgstr "Κινηματογραφική Προεπισκόπηση"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr "Ελεύθερο κοίταγμα αριστερά"
diff --git a/editor/translations/eo.po b/editor/translations/eo.po
index 032ef20e91..c2acb4613b 100644
--- a/editor/translations/eo.po
+++ b/editor/translations/eo.po
@@ -7166,6 +7166,10 @@ msgid "Cinematic Preview"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr ""
diff --git a/editor/translations/es.po b/editor/translations/es.po
index 52d555bef1..3e76fcf75f 100644
--- a/editor/translations/es.po
+++ b/editor/translations/es.po
@@ -46,7 +46,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2020-01-16 22:23+0000\n"
+"PO-Revision-Date: 2020-01-19 11:03+0000\n"
"Last-Translator: Javier Ocampos <xavier.ocampos@gmail.com>\n"
"Language-Team: Spanish <https://hosted.weblate.org/projects/godot-engine/"
"godot/es/>\n"
@@ -55,7 +55,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.10.2-dev\n"
+"X-Generator: Weblate 3.10.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -1982,9 +1982,8 @@ msgid "Inherited by:"
msgstr "Heredada por:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Description"
-msgstr "Descripción:"
+msgstr "Descripción"
#: editor/editor_help.cpp
msgid "Online Tutorials"
@@ -2005,14 +2004,12 @@ msgid "Properties"
msgstr "Propiedades"
#: editor/editor_help.cpp
-#, fuzzy
msgid "override:"
-msgstr "Sobreescritura"
+msgstr "anulación:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "default:"
-msgstr "Predeterminado"
+msgstr "predeterminado:"
#: editor/editor_help.cpp
msgid "Methods"
@@ -2035,9 +2032,8 @@ msgid "Property Descriptions"
msgstr "Descripción de Propiedades"
#: editor/editor_help.cpp
-#, fuzzy
msgid "(value)"
-msgstr "Valor"
+msgstr "(valor)"
#: editor/editor_help.cpp
msgid ""
@@ -5368,7 +5364,7 @@ msgid ""
"Overrides game camera with editor viewport camera."
msgstr ""
"Reemplazar Cámara del Juego\n"
-"Reemplaza la cámara del juego con la cámara del viewport del editor."
+"Reemplaza la cámara del juego por la cámara del viewport del editor."
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5377,7 +5373,7 @@ msgid ""
"No game instance running."
msgstr ""
"Reemplazar Cámara del Juego\n"
-"No hay ninguna instancia de juego ejecutándose."
+"No hay ninguna instancia del juego en ejecución."
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7354,6 +7350,10 @@ msgid "Cinematic Preview"
msgstr "Vista Previa Cinemática"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr "Vista Libre Izquierda"
@@ -10100,7 +10100,7 @@ msgstr "Evento de Acción de Entrada Movido"
#: editor/project_settings_editor.cpp
msgid "Override for Feature"
-msgstr "Sobrescribir la Característica"
+msgstr "Anulación de la Característica"
#: editor/project_settings_editor.cpp
msgid "Add Translation"
@@ -10148,7 +10148,7 @@ msgstr "General"
#: editor/project_settings_editor.cpp
msgid "Override For..."
-msgstr "Sustituir por..."
+msgstr "Anulación de..."
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "The editor must be restarted for changes to take effect."
@@ -10844,7 +10844,7 @@ msgstr "Error al cargar script desde %s"
#: editor/script_create_dialog.cpp
msgid "Overrides"
-msgstr "Sobreescritura"
+msgstr "Anulaciones"
#: editor/script_create_dialog.cpp
msgid "N/A"
@@ -11510,7 +11510,7 @@ msgstr "Añadir Puerto de Salida"
#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
-msgstr "Sobrescribir una función incorporada existente."
+msgstr "Anular una función integrada existente."
#: modules/visual_script/visual_script_editor.cpp
msgid "Create a new function."
diff --git a/editor/translations/es_AR.po b/editor/translations/es_AR.po
index 35c5c515fb..62c54c7f8c 100644
--- a/editor/translations/es_AR.po
+++ b/editor/translations/es_AR.po
@@ -7320,6 +7320,10 @@ msgid "Cinematic Preview"
msgstr "Vista Previa Cinemática"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr "Vista Libre A La Izquierda"
diff --git a/editor/translations/et.po b/editor/translations/et.po
index aab6358e01..e1fd30d97e 100644
--- a/editor/translations/et.po
+++ b/editor/translations/et.po
@@ -7068,6 +7068,10 @@ msgid "Cinematic Preview"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr ""
diff --git a/editor/translations/eu.po b/editor/translations/eu.po
index 403016ba49..7431e5407f 100644
--- a/editor/translations/eu.po
+++ b/editor/translations/eu.po
@@ -7053,6 +7053,10 @@ msgid "Cinematic Preview"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr ""
diff --git a/editor/translations/fa.po b/editor/translations/fa.po
index 72c8596b7f..bc5adb4ce0 100644
--- a/editor/translations/fa.po
+++ b/editor/translations/fa.po
@@ -7483,6 +7483,10 @@ msgid "Cinematic Preview"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr ""
diff --git a/editor/translations/fi.po b/editor/translations/fi.po
index 55729dc95f..11f8a2a611 100644
--- a/editor/translations/fi.po
+++ b/editor/translations/fi.po
@@ -14,7 +14,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2020-01-16 22:24+0000\n"
+"PO-Revision-Date: 2020-01-19 11:03+0000\n"
"Last-Translator: Tapani Niemi <tapani.niemi@kapsi.fi>\n"
"Language-Team: Finnish <https://hosted.weblate.org/projects/godot-engine/"
"godot/fi/>\n"
@@ -23,7 +23,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.10.2-dev\n"
+"X-Generator: Weblate 3.10.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -1936,9 +1936,8 @@ msgid "Inherited by:"
msgstr "Perivät:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Description"
-msgstr "Kuvaus:"
+msgstr "Kuvaus"
#: editor/editor_help.cpp
msgid "Online Tutorials"
@@ -1959,14 +1958,12 @@ msgid "Properties"
msgstr "Ominaisuudet"
#: editor/editor_help.cpp
-#, fuzzy
msgid "override:"
-msgstr "Ylikirjoittaa"
+msgstr "ylikirjoita:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "default:"
-msgstr "Oletus"
+msgstr "oletus:"
#: editor/editor_help.cpp
msgid "Methods"
@@ -1989,9 +1986,8 @@ msgid "Property Descriptions"
msgstr "Ominaisuuksien kuvaukset"
#: editor/editor_help.cpp
-#, fuzzy
msgid "(value)"
-msgstr "Arvo"
+msgstr "(arvo)"
#: editor/editor_help.cpp
msgid ""
@@ -7276,6 +7272,10 @@ msgid "Cinematic Preview"
msgstr "Elokuvallinen esikatselu"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr "Liiku vasemmalle"
diff --git a/editor/translations/fil.po b/editor/translations/fil.po
index 5d069ac803..db6c34ffe8 100644
--- a/editor/translations/fil.po
+++ b/editor/translations/fil.po
@@ -7068,6 +7068,10 @@ msgid "Cinematic Preview"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr ""
diff --git a/editor/translations/fr.po b/editor/translations/fr.po
index 799709c4b8..010380ae58 100644
--- a/editor/translations/fr.po
+++ b/editor/translations/fr.po
@@ -7399,6 +7399,10 @@ msgid "Cinematic Preview"
msgstr "Aperçu cinématographique"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr "Non disponible quand le moteur de rendu GLES2 est utilisé."
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr "Vue libre gauche"
diff --git a/editor/translations/ga.po b/editor/translations/ga.po
index 5ae3963052..c21203046c 100644
--- a/editor/translations/ga.po
+++ b/editor/translations/ga.po
@@ -7061,6 +7061,10 @@ msgid "Cinematic Preview"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr ""
diff --git a/editor/translations/he.po b/editor/translations/he.po
index 592952ad3c..f316738641 100644
--- a/editor/translations/he.po
+++ b/editor/translations/he.po
@@ -7476,6 +7476,10 @@ msgid "Cinematic Preview"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr ""
diff --git a/editor/translations/hi.po b/editor/translations/hi.po
index dbdbc182ec..65b542cbfe 100644
--- a/editor/translations/hi.po
+++ b/editor/translations/hi.po
@@ -7260,6 +7260,10 @@ msgid "Cinematic Preview"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr ""
diff --git a/editor/translations/hr.po b/editor/translations/hr.po
index 3b477c74fb..97b2df1bc2 100644
--- a/editor/translations/hr.po
+++ b/editor/translations/hr.po
@@ -7092,6 +7092,10 @@ msgid "Cinematic Preview"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr ""
diff --git a/editor/translations/hu.po b/editor/translations/hu.po
index cbf3298e16..b7a1a08cad 100644
--- a/editor/translations/hu.po
+++ b/editor/translations/hu.po
@@ -7646,6 +7646,10 @@ msgid "Cinematic Preview"
msgstr "Háló Előnézetek Létrehozása"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr ""
diff --git a/editor/translations/id.po b/editor/translations/id.po
index 66847a39ac..e73d9c355d 100644
--- a/editor/translations/id.po
+++ b/editor/translations/id.po
@@ -7329,6 +7329,10 @@ msgid "Cinematic Preview"
msgstr "Pratinjau Sinematik"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr "TampilanBebas Kiri"
diff --git a/editor/translations/is.po b/editor/translations/is.po
index 9a70a1051c..529051be32 100644
--- a/editor/translations/is.po
+++ b/editor/translations/is.po
@@ -7130,6 +7130,10 @@ msgid "Cinematic Preview"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr ""
diff --git a/editor/translations/it.po b/editor/translations/it.po
index c025271c39..571281ead8 100644
--- a/editor/translations/it.po
+++ b/editor/translations/it.po
@@ -7357,6 +7357,10 @@ msgid "Cinematic Preview"
msgstr "Anteprima Cinematografica"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr "Vista Libera Sinistra"
diff --git a/editor/translations/ja.po b/editor/translations/ja.po
index cd98aaa199..546c4c3e12 100644
--- a/editor/translations/ja.po
+++ b/editor/translations/ja.po
@@ -7301,6 +7301,10 @@ msgid "Cinematic Preview"
msgstr "シネマティックプレビュー"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr "フリールック左"
diff --git a/editor/translations/ka.po b/editor/translations/ka.po
index 9f3631d0d9..f19630502b 100644
--- a/editor/translations/ka.po
+++ b/editor/translations/ka.po
@@ -7289,6 +7289,10 @@ msgid "Cinematic Preview"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr ""
diff --git a/editor/translations/ko.po b/editor/translations/ko.po
index 5b234a28ee..8e5b32a895 100644
--- a/editor/translations/ko.po
+++ b/editor/translations/ko.po
@@ -19,7 +19,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2020-01-16 22:23+0000\n"
+"PO-Revision-Date: 2020-01-19 11:03+0000\n"
"Last-Translator: 송태섭 <xotjq237@gmail.com>\n"
"Language-Team: Korean <https://hosted.weblate.org/projects/godot-engine/"
"godot/ko/>\n"
@@ -28,7 +28,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.10.2-dev\n"
+"X-Generator: Weblate 3.10.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -1934,9 +1934,8 @@ msgid "Inherited by:"
msgstr "상속한 클래스:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Description"
-msgstr "설명:"
+msgstr "설명"
#: editor/editor_help.cpp
msgid "Online Tutorials"
@@ -1957,14 +1956,12 @@ msgid "Properties"
msgstr "속성"
#: editor/editor_help.cpp
-#, fuzzy
msgid "override:"
-msgstr "다시 정의하기"
+msgstr "다시 정의하기:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "default:"
-msgstr "기본"
+msgstr "기본:"
#: editor/editor_help.cpp
msgid "Methods"
@@ -1987,9 +1984,8 @@ msgid "Property Descriptions"
msgstr "속성 설명"
#: editor/editor_help.cpp
-#, fuzzy
msgid "(value)"
-msgstr "값"
+msgstr "(값)"
#: editor/editor_help.cpp
msgid ""
@@ -7237,6 +7233,10 @@ msgid "Cinematic Preview"
msgstr "시네마틱 미리 보기"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr "자유 시점 왼쪽으로 가기"
diff --git a/editor/translations/lt.po b/editor/translations/lt.po
index 233f6a850e..5a156470d8 100644
--- a/editor/translations/lt.po
+++ b/editor/translations/lt.po
@@ -7265,6 +7265,10 @@ msgid "Cinematic Preview"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr ""
diff --git a/editor/translations/lv.po b/editor/translations/lv.po
index e255b6edfc..2cecc5ae11 100644
--- a/editor/translations/lv.po
+++ b/editor/translations/lv.po
@@ -7247,6 +7247,10 @@ msgid "Cinematic Preview"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr ""
diff --git a/editor/translations/mi.po b/editor/translations/mi.po
index 4359913c26..e2b6df89b4 100644
--- a/editor/translations/mi.po
+++ b/editor/translations/mi.po
@@ -7046,6 +7046,10 @@ msgid "Cinematic Preview"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr ""
diff --git a/editor/translations/ml.po b/editor/translations/ml.po
index ed53a3535c..e7ffab4f18 100644
--- a/editor/translations/ml.po
+++ b/editor/translations/ml.po
@@ -7061,6 +7061,10 @@ msgid "Cinematic Preview"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr ""
diff --git a/editor/translations/mr.po b/editor/translations/mr.po
index 2094400280..a4bdd7f18a 100644
--- a/editor/translations/mr.po
+++ b/editor/translations/mr.po
@@ -7053,6 +7053,10 @@ msgid "Cinematic Preview"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr ""
diff --git a/editor/translations/ms.po b/editor/translations/ms.po
index b2433b0a2f..50895dcaae 100644
--- a/editor/translations/ms.po
+++ b/editor/translations/ms.po
@@ -7100,6 +7100,10 @@ msgid "Cinematic Preview"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr ""
diff --git a/editor/translations/nb.po b/editor/translations/nb.po
index 2768de9c40..5b57604bc9 100644
--- a/editor/translations/nb.po
+++ b/editor/translations/nb.po
@@ -7728,6 +7728,10 @@ msgid "Cinematic Preview"
msgstr "Lager Forhåndsvisning av Mesh"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr ""
diff --git a/editor/translations/nl.po b/editor/translations/nl.po
index 1b59654e9d..423d10d264 100644
--- a/editor/translations/nl.po
+++ b/editor/translations/nl.po
@@ -44,7 +44,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2020-01-12 13:26+0000\n"
+"PO-Revision-Date: 2020-01-19 11:03+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"
@@ -53,7 +53,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.10.1\n"
+"X-Generator: Weblate 3.10.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -1230,9 +1230,8 @@ msgid "Error opening package file, not in ZIP format."
msgstr "Fout bij het openen van het pakketbestand, geen zip-formaat."
#: editor/editor_asset_installer.cpp
-#, fuzzy
msgid "%s (Already Exists)"
-msgstr "Bestaat al"
+msgstr "%s (bestaat al)"
#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
@@ -1243,9 +1242,8 @@ msgid "The following files failed extraction from package:"
msgstr "De volgende bestanden konden niet worden uitgepakt:"
#: editor/editor_asset_installer.cpp
-#, fuzzy
msgid "And %s more files."
-msgstr "nog %d bestand(en)"
+msgstr "En nog %s bestand(en)."
#: editor/editor_asset_installer.cpp editor/project_manager.cpp
msgid "Package installed successfully!"
@@ -1257,9 +1255,8 @@ msgid "Success!"
msgstr "Gelukt!"
#: editor/editor_asset_installer.cpp
-#, fuzzy
msgid "Package Contents:"
-msgstr "Inhoud:"
+msgstr "Pakketinhoud:"
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
@@ -1399,9 +1396,8 @@ msgid "Invalid file, not an audio bus layout."
msgstr "Ongeldig bestand, geen audiobus layout."
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Error saving file: %s"
-msgstr "Error bij het opslaan van bestand!"
+msgstr "Fout bij het opslaan van bestand: %s"
#: editor/editor_audio_buses.cpp
msgid "Add Bus"
@@ -1532,7 +1528,7 @@ msgstr "Singleton"
#: editor/editor_data.cpp
msgid "Updating Scene"
-msgstr "Scene aan het Updaten"
+msgstr "Scène aan het bijwerken"
#: editor/editor_data.cpp
msgid "Storing local changes..."
@@ -1540,7 +1536,7 @@ msgstr "Lokale wijziging aan het opslaan..."
#: editor/editor_data.cpp
msgid "Updating scene..."
-msgstr "Scene aan het updaten..."
+msgstr "Scène aan het bijwerken..."
#: editor/editor_data.cpp editor/editor_properties.cpp
msgid "[empty]"
@@ -1654,7 +1650,7 @@ msgstr "Asset bibliotheek"
#: editor/editor_feature_profile.cpp
msgid "Scene Tree Editing"
-msgstr "Scene structuur bewerking"
+msgstr "Scèneboombewerking"
#: editor/editor_feature_profile.cpp
msgid "Import Dock"
@@ -1976,9 +1972,8 @@ msgid "Inherited by:"
msgstr "Geërfd door:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Description"
-msgstr "Omschrijving:"
+msgstr "Beschrijving"
#: editor/editor_help.cpp
msgid "Online Tutorials"
@@ -1999,14 +1994,12 @@ msgid "Properties"
msgstr "Eigenschappen"
#: editor/editor_help.cpp
-#, fuzzy
msgid "override:"
-msgstr "Overschrijvers"
+msgstr "overschreven:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "default:"
-msgstr "Standaard"
+msgstr "standaard:"
#: editor/editor_help.cpp
msgid "Methods"
@@ -2029,9 +2022,8 @@ msgid "Property Descriptions"
msgstr "Eigenschap Beschrijvingen"
#: editor/editor_help.cpp
-#, fuzzy
msgid "(value)"
-msgstr "Waarde"
+msgstr "(waarde)"
#: editor/editor_help.cpp
msgid ""
@@ -2220,8 +2212,8 @@ msgid ""
"This resource can't be saved because it does not belong to the edited scene. "
"Make it unique first."
msgstr ""
-"Deze hulpbron kan niet bewaard worden omdat ze geen deel uitmaakt van de "
-"bewerkte scene. Maak ze eerst alleenstaand."
+"Deze hulpbron kan niet opgeslagen worden omdat het niet bij de bewerkte "
+"scène hoort. Maak het eerst uniek."
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Save Resource As..."
@@ -2262,7 +2254,7 @@ msgstr "Fout tijdens het laden van '%s'."
#: editor/editor_node.cpp
msgid "Saving Scene"
-msgstr "Scene Aan Het Opslaan"
+msgstr "Scène aan het opslaan"
#: editor/editor_node.cpp
msgid "Analyzing"
@@ -2281,7 +2273,8 @@ msgid ""
"This scene can't be saved because there is a cyclic instancing inclusion.\n"
"Please resolve it and then attempt to save again."
msgstr ""
-"Deze scene kan niet opgeslagen worden vanwege een cyclische instantiëring.\n"
+"Deze scène kan niet opgeslagen worden omdat er een cyclische instantiëring "
+"aanwezig is.\n"
"Opslaan is pas mogelijk als dit opgelost wordt."
#: editor/editor_node.cpp
@@ -2289,12 +2282,12 @@ msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
-"Kon de scene niet opslaan. Waarschijnlijk konden afhankelijkheden "
+"Kon de scène niet opslaan. Waarschijnlijk konden afhankelijkheden "
"(instanties of erfelijkheden) niet voldaan worden."
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "Can't overwrite scene that is still open!"
-msgstr "Kan geen scenes overschrijven die nog open zijn!"
+msgstr "Kan geen scènes overschrijven die nog open zijn!"
#: editor/editor_node.cpp
msgid "Can't load MeshLibrary for merging!"
@@ -2318,7 +2311,7 @@ msgstr "Error bij het opslaan van layout!"
#: editor/editor_node.cpp
msgid "Default editor layout overridden."
-msgstr "Standaard editor layout overschreven."
+msgstr "Standaard editorindeling overschreven."
#: editor/editor_node.cpp
msgid "Layout name not found!"
@@ -2345,7 +2338,7 @@ msgid ""
msgstr ""
"Dit bestand hoort bij een scene die geïnstantieerd of overgeërfd werd.\n"
"Aanpassingen zullen niet worden behouden bij het opslaan van de huidige "
-"scene."
+"scène."
#: editor/editor_node.cpp
msgid ""
@@ -2365,7 +2358,7 @@ msgstr ""
"Deze scene werd geïmporteerd, dus aanpassingen zullen niet worden behouden.\n"
"Door het te instantiëren of over te erven kunnen er wijzigingen worden "
"aangebracht.\n"
-"Lees de documentatie met betrekking tot importeren van scenes om dit proces "
+"Lees de documentatie met betrekking tot importeren van scènes om dit proces "
"beter te begrijpen."
#: editor/editor_node.cpp
@@ -2380,11 +2373,11 @@ msgstr ""
#: editor/editor_node.cpp
msgid "There is no defined scene to run."
-msgstr "Er is geen startscene gedefinieerd."
+msgstr "Er is geen startscène ingesteld."
#: editor/editor_node.cpp
msgid "Current scene was never saved, please save it prior to running."
-msgstr "De huidige scene werd nooit opgeslagen, sla ze op voor het uitvoeren."
+msgstr "De huidige scène is nooit opgeslagen, sla het op voor het uitvoeren."
#: editor/editor_node.cpp
msgid "Could not start subprocess!"
@@ -2392,11 +2385,11 @@ msgstr "Kon het subproces niet opstarten!"
#: editor/editor_node.cpp editor/filesystem_dock.cpp
msgid "Open Scene"
-msgstr "Scene Openen"
+msgstr "Scène openen"
#: editor/editor_node.cpp
msgid "Open Base Scene"
-msgstr "Open Basisscene"
+msgstr "Basisscène openen"
#: editor/editor_node.cpp
msgid "Quick Open..."
@@ -2404,7 +2397,7 @@ msgstr "Snel Openen..."
#: editor/editor_node.cpp
msgid "Quick Open Scene..."
-msgstr "Open Scene Snel..."
+msgstr "Scène snel openen..."
#: editor/editor_node.cpp
msgid "Quick Open Script..."
@@ -2428,7 +2421,7 @@ msgstr "Een wortelknoop is nodig om de scène op te slaan."
#: editor/editor_node.cpp
msgid "Save Scene As..."
-msgstr "Sla Scene Op Als..."
+msgstr "Scène opslaan als..."
#: editor/editor_node.cpp
msgid "No"
@@ -2444,7 +2437,7 @@ msgstr "Deze scene is nooit opgeslagen. Sla op voor het uitvoeren?"
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "This operation can't be done without a scene."
-msgstr "Deze operatie kan niet uitgevoerd worden zonder scene."
+msgstr "Deze operatie kan niet uitgevoerd worden zonder scène."
#: editor/editor_node.cpp
msgid "Export Mesh Library"
@@ -2465,11 +2458,11 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Current scene not saved. Open anyway?"
-msgstr "De huidige scene is nog niet opgeslagen. Toch openen?"
+msgstr "De huidige scène is niet opgeslagen. Toch openen?"
#: editor/editor_node.cpp
msgid "Can't reload a scene that was never saved."
-msgstr "Een scene die nooit opgeslagen is kan je niet opnieuw laden."
+msgstr "Een scène die nooit opgeslagen is kan niet opnieuw laden worden."
#: editor/editor_node.cpp
msgid "Revert"
@@ -2481,7 +2474,7 @@ msgstr "Deze actie kan niet ongedaan gemaakt worden. Toch herstellen?"
#: editor/editor_node.cpp
msgid "Quick Run Scene..."
-msgstr "Snel Scene Uitvoeren..."
+msgstr "Scène snel starten..."
#: editor/editor_node.cpp
msgid "Quit"
@@ -2489,7 +2482,7 @@ msgstr "Afsluiten"
#: editor/editor_node.cpp
msgid "Exit the editor?"
-msgstr "Sluit de editor af?"
+msgstr "Editor afsluiten?"
#: editor/editor_node.cpp
msgid "Open Project Manager?"
@@ -2501,8 +2494,7 @@ msgstr "Opslaan & Afsluiten"
#: editor/editor_node.cpp
msgid "Save changes to the following scene(s) before quitting?"
-msgstr ""
-"Wil je de wijzigen aan de volgende scene(s) opslaan voor het afsluiten?"
+msgstr "Wijzigen aan de volgende scène(s) opslaan voor het afsluiten?"
#: editor/editor_node.cpp
msgid "Save changes the following scene(s) before opening Project Manager?"
@@ -2519,15 +2511,15 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Pick a Main Scene"
-msgstr "Kies een Hoofdscene"
+msgstr "Kies een startscène"
#: editor/editor_node.cpp
msgid "Close Scene"
-msgstr "Scene Sluiten"
+msgstr "Scène sluiten"
#: editor/editor_node.cpp
msgid "Reopen Closed Scene"
-msgstr "Gesloten Scène Opnieuw Openen"
+msgstr "Gesloten scène heropenen"
#: editor/editor_node.cpp
msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
@@ -2583,7 +2575,7 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Scene '%s' has broken dependencies:"
-msgstr "De scene '%s' heeft kapotte afhankelijkheden:"
+msgstr "De scène '%s' heeft verbroken afhankelijkheden:"
#: editor/editor_node.cpp
msgid "Clear Recent Scenes"
@@ -2595,9 +2587,8 @@ msgid ""
"You can change it later in \"Project Settings\" under the 'application' "
"category."
msgstr ""
-"Er is nooit een hoofdscene gekozen, wil je er een selecteren?\n"
-"Je kan dit later nog aanpassen in \"Projectinstellingen\" onder de categorie "
-"'toepassing'."
+"Er is nooit een startscène gekozen, wil je er een selecteren?\n"
+"Je kan dit later nog aanpassen in Project→Projectinstellingen→Application."
#: editor/editor_node.cpp
msgid ""
@@ -2606,8 +2597,7 @@ msgid ""
"category."
msgstr ""
"De geselecteerde scene '%s' bestaat niet, selecteer een andere?\n"
-"Je kan dit later aanpassen in \"Projectinstellingen\" onder de categorie "
-"'toepassing'."
+"Je kan dit later nog aanpassen in Project→Projectinstellingen→Application."
#: editor/editor_node.cpp
msgid ""
@@ -2615,9 +2605,8 @@ msgid ""
"You can change it later in \"Project Settings\" under the 'application' "
"category."
msgstr ""
-"De geselecteerde scene '%s' is geen scenebestand, selecteer een andere?\n"
-"Je kan dit later aanpassen in \"Projectinstellingen\" onder de categorie "
-"'toepassing'."
+"De geselecteerde scene '%s' is geen scènebestand, selecteer een andere?\n"
+"Je kan dit later nog aanpassen in Project→Projectinstellingen→Application."
#: editor/editor_node.cpp
msgid "Save Layout"
@@ -2663,7 +2652,7 @@ msgstr "Sluit Alle Tabbladen"
#: editor/editor_node.cpp
msgid "Switch Scene Tab"
-msgstr "Scenetab Wisselen"
+msgstr "Scènetab wisselen"
#: editor/editor_node.cpp
msgid "%d more files or folders"
@@ -2691,7 +2680,7 @@ msgstr "Afleidingsvrije modus veranderen."
#: editor/editor_node.cpp
msgid "Add a new scene."
-msgstr "Nieuwe scene toevoegen."
+msgstr "Nieuwe scène toevoegen."
#: editor/editor_node.cpp
msgid "Scene"
@@ -2699,7 +2688,7 @@ msgstr "Scène"
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
-msgstr "Ga naar de vorige geopende scene."
+msgstr "Ga naar de eerder geopende scène."
#: editor/editor_node.cpp
msgid "Copy Text"
@@ -2719,19 +2708,19 @@ msgstr "Bestanden Filteren..."
#: editor/editor_node.cpp
msgid "Operations with scene files."
-msgstr "Operaties met scenebestanden."
+msgstr "Operaties met scènebestanden."
#: editor/editor_node.cpp
msgid "New Scene"
-msgstr "Nieuwe Scene"
+msgstr "Nieuwe scène"
#: editor/editor_node.cpp
msgid "New Inherited Scene..."
-msgstr "Nieuwe Geërfde Scene..."
+msgstr "Nieuwe geërfde scène..."
#: editor/editor_node.cpp
msgid "Open Scene..."
-msgstr "Scene Openen..."
+msgstr "Scène openen..."
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Open Recent"
@@ -2739,11 +2728,11 @@ msgstr "Recente Scenes Openen"
#: editor/editor_node.cpp
msgid "Save Scene"
-msgstr "Scene Opslaan"
+msgstr "Scène opslaan"
#: editor/editor_node.cpp
msgid "Save All Scenes"
-msgstr "Alle Scènes Opslaan"
+msgstr "Alle scènes opslaan"
#: editor/editor_node.cpp
msgid "Convert To..."
@@ -2769,7 +2758,7 @@ msgstr "Opnieuw"
#: editor/editor_node.cpp
msgid "Revert Scene"
-msgstr "Scene Herstellen"
+msgstr "Scène terugzetten"
#: editor/editor_node.cpp
msgid "Miscellaneous project or scene-wide tools."
@@ -2883,7 +2872,7 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Sync Scene Changes"
-msgstr "Sceneveranderingen synchroniseren"
+msgstr "Scèneveranderingen synchroniseren"
#: editor/editor_node.cpp
msgid ""
@@ -3009,11 +2998,11 @@ msgstr "Pauzeer de uitvoering van de scène voor foutopsporing."
#: editor/editor_node.cpp
msgid "Pause Scene"
-msgstr "Pauzeer Scene"
+msgstr "Scène pauzeren"
#: editor/editor_node.cpp
msgid "Stop the scene."
-msgstr "Stop de scene."
+msgstr "Scène stoppen."
#: editor/editor_node.cpp
msgid "Play the edited scene."
@@ -3399,7 +3388,7 @@ msgstr "Schrijf je logica in de _run() methode."
#: editor/editor_run_script.cpp
msgid "There is an edited scene already."
-msgstr "Er is al een bewerkte scene."
+msgstr "Er is al een bewerkte scène."
#: editor/editor_run_script.cpp
msgid "Couldn't instance script:"
@@ -3427,7 +3416,7 @@ msgstr "Bladeren"
#: editor/editor_sub_scene.cpp
msgid "Scene Path:"
-msgstr "Scene Pad:"
+msgstr "Scènepad:"
#: editor/editor_sub_scene.cpp
msgid "Import From Node:"
@@ -3711,11 +3700,11 @@ msgstr "Folder dupliceren:"
#: editor/filesystem_dock.cpp
msgid "New Inherited Scene"
-msgstr "Nieuwe overgeërfde scene"
+msgstr "Nieuwe geërfde scène"
#: editor/filesystem_dock.cpp
msgid "Set As Main Scene"
-msgstr "Instellen als hoofdscène"
+msgstr "Instellen als startscène"
#: editor/filesystem_dock.cpp
msgid "Open Scenes"
@@ -5704,7 +5693,7 @@ msgstr "Knoop maken"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Error instancing scene from %s"
-msgstr "Er is iets misgegaan bij het instantiëren van scene vanaf %s"
+msgstr "Fout bij het instantiëren van scène vanaf %s"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Change Default Type"
@@ -5769,20 +5758,18 @@ msgstr "Emissiemasker"
#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
#: editor/plugins/particles_2d_editor_plugin.cpp
-#, fuzzy
msgid "Solid Pixels"
-msgstr "Krimpen (Pixels): "
+msgstr "Vaste pixels"
#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Border Pixels"
-msgstr ""
+msgstr "Randpixels"
#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
#: editor/plugins/particles_2d_editor_plugin.cpp
-#, fuzzy
msgid "Directed Border Pixels"
-msgstr "Mappen & Bestanden:"
+msgstr "Gerichte randpixels"
#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
#: editor/plugins/particles_2d_editor_plugin.cpp
@@ -5914,7 +5901,7 @@ msgstr "Creëer een statisch convex lichaam"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "This doesn't work on scene root!"
-msgstr "Dit werkt niet op scene root!"
+msgstr "Dit werkt niet op scènewortel!"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Static Shape"
@@ -6022,7 +6009,7 @@ msgid ""
"Update from existing scene?:\n"
"%s"
msgstr ""
-"Update vanuit bestaande scène?:\n"
+"Bijwerken vanuit bestaande scène?:\n"
"%s"
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -6044,7 +6031,7 @@ msgstr "Vanuit scène importeren"
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Update from Scene"
-msgstr "Update Vanuit Scene"
+msgstr "Bijwerken vanuit scène"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "No mesh source specified (and no MultiMesh set in node)."
@@ -6930,7 +6917,7 @@ msgstr "Alleen bronnen uit bestandssysteem kunnen gedropt worden."
#: modules/visual_script/visual_script_editor.cpp
msgid "Can't drop nodes because script '%s' is not used in this scene."
msgstr ""
-"Kan knopen niet plaatsen, script '%s'' wordt niet in deze scène gebruikt."
+"Kan knopen niet plaatsen, script '%s' wordt niet in deze scène gebruikt."
#: editor/plugins/script_text_editor.cpp
msgid "Lookup Symbol"
@@ -7334,6 +7321,10 @@ msgid "Cinematic Preview"
msgstr "Bioscoop Preview"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr "Vrijekijk Links"
@@ -8081,11 +8072,11 @@ msgstr "Geselecteerde Texture uit TileSet verwijderen."
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Create from Scene"
-msgstr "Creëer vanuit Scene"
+msgstr "Vanuit scène maken"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Merge from Scene"
-msgstr "Vervoeg vanuit Scene"
+msgstr "Vanuit scène samenvoegen"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "New Single Tile"
@@ -8226,11 +8217,11 @@ msgstr "Geen Texture geselecteerd om te verwijderen."
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Create from scene? This will overwrite all current tiles."
-msgstr "Creëer vanuit scène? Hiermee worden alle huidige tegels overschreven."
+msgstr "Vanuit scène maken? Alle huidige tegels zullen worden overschreven."
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Merge from scene?"
-msgstr "Vervoegen vanuit scene?"
+msgstr "Vanuit scène samenvoegen?"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Remove Texture"
@@ -9458,7 +9449,7 @@ msgstr "Exporteer alle bronnen in het project"
#: editor/project_export.cpp
msgid "Export selected scenes (and dependencies)"
-msgstr "Exporteer geselecteerde scenes (en afhankelijkheden)"
+msgstr "Exporteer geselecteerde scènes (en afhankelijkheden)"
#: editor/project_export.cpp
msgid "Export selected resources (and dependencies)"
@@ -9719,7 +9710,7 @@ msgstr ""
#: editor/project_manager.cpp
msgid "Renderer can be changed later, but scenes may need to be adjusted."
msgstr ""
-"Renderer kan later worden gewijzigd, scenes moeten dan mogelijk worden "
+"Renderer kan later worden gewijzigd, scènes moeten dan mogelijk worden "
"bijgesteld."
#: editor/project_manager.cpp
@@ -9798,9 +9789,9 @@ msgid ""
"Please edit the project and set the main scene in the Project Settings under "
"the \"Application\" category."
msgstr ""
-"Kan project niet uitvoeren: geen hoofdscène gedefinieerd.\n"
-"Bewerk het project en stel de hoofdscène in bij \"Projectinstellingen\" "
-"onder de categorie \"Toepassing\"."
+"Kan project niet uitvoeren: geen startscène gedefinieerd.\n"
+"Bewerk het project en stel de startscène in "
+"Project→Projectinstellingen→Application."
#: editor/project_manager.cpp
msgid ""
@@ -10313,7 +10304,7 @@ msgstr "Knooptype"
#: editor/rename_dialog.cpp
msgid "Current scene name"
-msgstr "Huidige scene naam"
+msgstr "Naam huidige scène"
#: editor/rename_dialog.cpp
msgid "Root node name"
@@ -10419,23 +10410,23 @@ msgstr "Uitvoermodus:"
#: editor/run_settings_dialog.cpp
msgid "Current Scene"
-msgstr "Huidige Scene"
+msgstr "Huidige scène"
#: editor/run_settings_dialog.cpp
msgid "Main Scene"
-msgstr "Hoofdscène"
+msgstr "Startscène"
#: editor/run_settings_dialog.cpp
msgid "Main Scene Arguments:"
-msgstr "Hoofdscene Argumenten:"
+msgstr "Startscène argumenten:"
#: editor/run_settings_dialog.cpp
msgid "Scene Run Settings"
-msgstr "Scene Uitvoerinstellingen"
+msgstr "Scène uitvoerinstellingen"
#: editor/scene_tree_dock.cpp
msgid "No parent to instance the scenes at."
-msgstr "Geen ouder om scenes mee te instantiëren."
+msgstr "Geen ouder om scènes mee te instantiëren."
#: editor/scene_tree_dock.cpp
msgid "Error loading scene from %s"
@@ -10451,15 +10442,15 @@ msgstr ""
#: editor/scene_tree_dock.cpp
msgid "Instance Scene(s)"
-msgstr "Instantie Scene(s)"
+msgstr "Scène(s) instantiëren"
#: editor/scene_tree_dock.cpp
msgid "Replace with Branch Scene"
-msgstr "Vervangen met vertakte Scene"
+msgstr "Vervangen met vertakte scène"
#: editor/scene_tree_dock.cpp
msgid "Instance Child Scene"
-msgstr "Initialiseer Kind Scene"
+msgstr "Scène instantiëren"
#: editor/scene_tree_dock.cpp
msgid "Clear Script"
@@ -10484,7 +10475,7 @@ msgstr "Dupliceer knoop/knopen"
#: editor/scene_tree_dock.cpp
msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
msgstr ""
-"Kan ouderschap van knopen in geërfde scenes niet aanpassen, volgorde van "
+"Kan ouderschap van knopen in geërfde scènes niet aanpassen, volgorde van "
"knopen kan niet veranderen."
#: editor/scene_tree_dock.cpp
@@ -10493,7 +10484,7 @@ msgstr "Knoop moet bij de bewerkte scène horen om wortelknoop te worden."
#: editor/scene_tree_dock.cpp
msgid "Instantiated scenes can't become root"
-msgstr "Scene kan geen wortel worden"
+msgstr "Geïnstantieerde scène kan geen wortel worden"
#: editor/scene_tree_dock.cpp
msgid "Make node as Root"
@@ -10521,11 +10512,11 @@ msgstr "Kan deze operatie niet uitvoeren met de wortelknoop."
#: editor/scene_tree_dock.cpp
msgid "This operation can't be done on instanced scenes."
-msgstr "Deze operatie kan niet worden uitgevoerd op instanced scenes."
+msgstr "Deze operatie kan niet worden uitgevoerd op geïnstantieerde scènes."
#: editor/scene_tree_dock.cpp
msgid "Save New Scene As..."
-msgstr "Nieuwe Scène Opslaan Als..."
+msgstr "Nieuwe scène opslaan als..."
#: editor/scene_tree_dock.cpp
msgid ""
@@ -10550,7 +10541,7 @@ msgstr "Maak locaal"
#: editor/scene_tree_dock.cpp
msgid "New Scene Root"
-msgstr "Nieuwe wortel Scene"
+msgstr "Nieuwe scènewortel"
#: editor/scene_tree_dock.cpp
msgid "Create Root Node:"
@@ -10602,11 +10593,11 @@ msgstr ""
#: editor/scene_tree_dock.cpp
msgid "Error saving scene."
-msgstr "Fout bij het opslaan van de scene."
+msgstr "Fout bij het opslaan van de scène."
#: editor/scene_tree_dock.cpp
msgid "Error duplicating scene to save it."
-msgstr "Fout bij het opslaan van een gekopieerde scene."
+msgstr "Fout bij het opslaan van een gekopieerde scène."
#: editor/scene_tree_dock.cpp
msgid "Sub-Resources"
@@ -10646,15 +10637,15 @@ msgstr "Onder nieuwe knoop hangen"
#: editor/scene_tree_dock.cpp
msgid "Make Scene Root"
-msgstr "Maak Scene wortel"
+msgstr "Scènewortel instellen"
#: editor/scene_tree_dock.cpp
msgid "Merge From Scene"
-msgstr "Samenvoegen uit scene"
+msgstr "Samenvoegen uit scène"
#: editor/scene_tree_dock.cpp editor/script_editor_debugger.cpp
msgid "Save Branch as Scene"
-msgstr "Tak opslaan als Scene"
+msgstr "Tak opslaan als scène"
#: editor/scene_tree_dock.cpp editor/script_editor_debugger.cpp
msgid "Copy Node Path"
@@ -10870,7 +10861,7 @@ msgstr "Toegestaan: a-z, A-Z, 0-9 en ."
#: editor/script_create_dialog.cpp
msgid "Built-in script (into scene file)."
-msgstr "Ingebouwd script (in scene bestand)."
+msgstr "Ingebouwd script (in scènebestand)."
#: editor/script_create_dialog.cpp
msgid "Will create a new script file."
@@ -10881,9 +10872,8 @@ msgid "Will load an existing script file."
msgstr "Laad bestaand script."
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Script file already exists."
-msgstr "Bestaat al"
+msgstr "Scriptbestand bestaat al."
#: editor/script_create_dialog.cpp
msgid "Class Name:"
@@ -12082,7 +12072,7 @@ msgid ""
"scenes). The first created one will work, while the rest will be ignored."
msgstr ""
"Maar één zichtbare CanvasModulate is toegestaan per scene (of set van "
-"geïnstantieerde scenes). De eerst gemaakte zal werken, terwijl de rest "
+"geïnstantieerde scènes). De eerst gemaakte zal werken, terwijl de rest "
"genegeerd wordt."
#: scene/2d/collision_object_2d.cpp
@@ -12506,8 +12496,8 @@ msgstr ""
msgid ""
"Only one WorldEnvironment is allowed per scene (or set of instanced scenes)."
msgstr ""
-"Slechts één WorldEnvironment is toegestaan per scene (of set van "
-"geïnstantieerde scenes)."
+"Slechts één WorldEnvironment is toegestaan per scène (of verzameling van "
+"geïnstantieerde scènes)."
#: scene/3d/world_environment.cpp
msgid ""
@@ -12564,11 +12554,13 @@ msgid ""
"LMB: Set color\n"
"RMB: Remove preset"
msgstr ""
+"Kleur: #%s\n"
+"LMK: Kleur instellen\n"
+"RMK: Voorinstelling verwijderen"
#: scene/gui/color_picker.cpp
-#, fuzzy
msgid "Pick a color from the editor window."
-msgstr "Kies een kleur van het scherm."
+msgstr "Kies een kleur uit het editorvenster."
#: scene/gui/color_picker.cpp
msgid "HSV"
diff --git a/editor/translations/or.po b/editor/translations/or.po
index 46e6a4fa48..ce0cb50f1b 100644
--- a/editor/translations/or.po
+++ b/editor/translations/or.po
@@ -7052,6 +7052,10 @@ msgid "Cinematic Preview"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr ""
diff --git a/editor/translations/pl.po b/editor/translations/pl.po
index 3a165db4ed..fbb866b003 100644
--- a/editor/translations/pl.po
+++ b/editor/translations/pl.po
@@ -42,7 +42,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2020-01-16 22:23+0000\n"
+"PO-Revision-Date: 2020-01-19 11:03+0000\n"
"Last-Translator: Tomek <kobewi4e@gmail.com>\n"
"Language-Team: Polish <https://hosted.weblate.org/projects/godot-engine/"
"godot/pl/>\n"
@@ -52,7 +52,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2;\n"
-"X-Generator: Weblate 3.10.2-dev\n"
+"X-Generator: Weblate 3.10.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -1962,9 +1962,8 @@ msgid "Inherited by:"
msgstr "Dziedziczone przez:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Description"
-msgstr "Opis:"
+msgstr "Opis"
#: editor/editor_help.cpp
msgid "Online Tutorials"
@@ -1985,14 +1984,12 @@ msgid "Properties"
msgstr "Właściwości"
#: editor/editor_help.cpp
-#, fuzzy
msgid "override:"
-msgstr "Nadpisuje"
+msgstr "przeciążenie:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "default:"
-msgstr "Domyślny"
+msgstr "domyślne:"
#: editor/editor_help.cpp
msgid "Methods"
@@ -2015,9 +2012,8 @@ msgid "Property Descriptions"
msgstr "Opisy właściwości"
#: editor/editor_help.cpp
-#, fuzzy
msgid "(value)"
-msgstr "Wartość"
+msgstr "(wartość)"
#: editor/editor_help.cpp
msgid ""
@@ -7306,6 +7302,10 @@ msgid "Cinematic Preview"
msgstr "Podgląd kinowy"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr "\"Wolny widok\" w lewo"
diff --git a/editor/translations/pr.po b/editor/translations/pr.po
index b5855bd1a1..5ea27369e9 100644
--- a/editor/translations/pr.po
+++ b/editor/translations/pr.po
@@ -7280,6 +7280,10 @@ msgid "Cinematic Preview"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr ""
diff --git a/editor/translations/pt_BR.po b/editor/translations/pt_BR.po
index 407e23f94e..9bbb6be911 100644
--- a/editor/translations/pt_BR.po
+++ b/editor/translations/pt_BR.po
@@ -7364,6 +7364,10 @@ msgid "Cinematic Preview"
msgstr "Pré-visualização Cinemática"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr "Visão Livre Esquerda"
diff --git a/editor/translations/pt_PT.po b/editor/translations/pt_PT.po
index ed2cd4b083..5c8f792b4f 100644
--- a/editor/translations/pt_PT.po
+++ b/editor/translations/pt_PT.po
@@ -19,7 +19,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2020-01-13 13:36+0000\n"
+"PO-Revision-Date: 2020-01-19 11:03+0000\n"
"Last-Translator: João Lopes <linux-man@hotmail.com>\n"
"Language-Team: Portuguese (Portugal) <https://hosted.weblate.org/projects/"
"godot-engine/godot/pt_PT/>\n"
@@ -28,7 +28,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.10.1\n"
+"X-Generator: Weblate 3.10.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -1945,9 +1945,8 @@ msgid "Inherited by:"
msgstr "Herdado por:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Description"
-msgstr "Descrição:"
+msgstr "Descrição"
#: editor/editor_help.cpp
msgid "Online Tutorials"
@@ -1968,14 +1967,12 @@ msgid "Properties"
msgstr "Propriedades"
#: editor/editor_help.cpp
-#, fuzzy
msgid "override:"
-msgstr "Sobrepõe"
+msgstr "Sobrepõe:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "default:"
-msgstr "Padrão"
+msgstr "Padrão:"
#: editor/editor_help.cpp
msgid "Methods"
@@ -1998,9 +1995,8 @@ msgid "Property Descriptions"
msgstr "Descrições da Propriedade"
#: editor/editor_help.cpp
-#, fuzzy
msgid "(value)"
-msgstr "Valor"
+msgstr "(valor)"
#: editor/editor_help.cpp
msgid ""
@@ -7283,6 +7279,10 @@ msgid "Cinematic Preview"
msgstr "Pré-visualização Cinemática"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr "Vista livre esquerda"
diff --git a/editor/translations/ro.po b/editor/translations/ro.po
index 90200bbe58..a71fc3e5f1 100644
--- a/editor/translations/ro.po
+++ b/editor/translations/ro.po
@@ -9,12 +9,14 @@
# Grigore Antoniuc <grisa181@gmail.com>, 2018.
# Boby Ilea <boby.ilea@gmail.com>, 2019.
# EVOKZH <avip.ady@gmail.com>, 2019.
+# Marincia Catalin <catalinmarincia@gmail.com>, 2020.
+# Marincia Cătălin <catalinmarincia@gmail.com>, 2020.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2019-11-09 22:04+0000\n"
-"Last-Translator: EVOKZH <avip.ady@gmail.com>\n"
+"PO-Revision-Date: 2020-01-19 13:12+0000\n"
+"Last-Translator: Marincia Cătălin <catalinmarincia@gmail.com>\n"
"Language-Team: Romanian <https://hosted.weblate.org/projects/godot-engine/"
"godot/ro/>\n"
"Language: ro\n"
@@ -23,7 +25,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
"20)) ? 1 : 2;\n"
-"X-Generator: Weblate 3.10-dev\n"
+"X-Generator: Weblate 3.10.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -32,7 +34,7 @@ msgstr "Argument de tip invalid pentru convert(), folosiți constante TYPE_*"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
msgid "Expected a string of length 1 (a character)."
-msgstr ""
+msgstr "Se așteaptă un șir de lungime 1 (un caracter)."
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/mono/glue/gd_glue.cpp
@@ -42,7 +44,7 @@ msgstr "Bytes insuficienti pentru decodare bytes, sau format invalid"
#: core/math/expression.cpp
msgid "Invalid input %i (not passed) in expression"
-msgstr "Intrare invalida %i in expresie"
+msgstr "Intrare invalida %i (nu a fost transmisă) in expresie"
#: core/math/expression.cpp
msgid "self can't be used because instance is null (not passed)"
@@ -177,19 +179,16 @@ msgid "Anim Multi Change Transform"
msgstr "Anim Transformare multifuncțională"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Anim Multi Change Keyframe Value"
msgstr "Anim Schimbare valoare cadre cheie"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Anim Multi Change Call"
-msgstr "Anim Schimbare apelare"
+msgstr "Anim executa schimbari multiple"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Change Animation Length"
-msgstr "Schimbă Numele Animației:"
+msgstr "Schimbă Lungimea Animației"
#: editor/animation_track_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
@@ -198,38 +197,35 @@ msgstr "Schimbați Bucla Animației"
#: editor/animation_track_editor.cpp
msgid "Property Track"
-msgstr ""
+msgstr "Lista De Proprietati"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "3D Transform Track"
-msgstr "Transformare hartă UV"
+msgstr "Transformare Pistei 3d"
#: editor/animation_track_editor.cpp
msgid "Call Method Track"
-msgstr ""
+msgstr "Cheama linia de metode"
#: editor/animation_track_editor.cpp
msgid "Bezier Curve Track"
-msgstr ""
+msgstr "Traseu curbă Bezier"
#: editor/animation_track_editor.cpp
msgid "Audio Playback Track"
-msgstr ""
+msgstr "Cale Audio Playback"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Animation Playback Track"
-msgstr "Oprește rularea animației. (S)"
+msgstr "Oprește rularea animației"
#: editor/animation_track_editor.cpp
msgid "Animation length (frames)"
msgstr "Lungime Animație (în frame-uri)."
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Animation length (seconds)"
-msgstr "Lungime Animație (în secunde)."
+msgstr "Lungime Animație (în secunde)"
#: editor/animation_track_editor.cpp
#, fuzzy
@@ -237,22 +233,21 @@ msgid "Add Track"
msgstr "Anim Adăugați Pistă"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Animation Looping"
-msgstr "Zoom Animație."
+msgstr "Zoom Animație"
#: editor/animation_track_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Functions:"
-msgstr ""
+msgstr "Funcții:"
#: editor/animation_track_editor.cpp
msgid "Audio Clips:"
-msgstr ""
+msgstr "Secvențe Audio:"
#: editor/animation_track_editor.cpp
msgid "Anim Clips:"
-msgstr ""
+msgstr "Secvențe Anim:"
#: editor/animation_track_editor.cpp
#, fuzzy
@@ -260,32 +255,28 @@ msgid "Change Track Path"
msgstr "Schimbați Valoarea Array-ului"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Toggle this track on/off."
-msgstr "Comutează modul fără distrageri."
+msgstr "Comutează această pistă pornit/oprit."
#: editor/animation_track_editor.cpp
msgid "Update Mode (How this property is set)"
-msgstr ""
+msgstr "Modul Actualizare (Cum este setată această proprietate)"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Interpolation Mode"
-msgstr "Nod de Animație"
+msgstr "Mod Intercalare"
#: editor/animation_track_editor.cpp
msgid "Loop Wrap Mode (Interpolate end with beginning on loop)"
msgstr ""
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Remove this track."
msgstr "Ștergeți pista selectată."
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Time (s): "
-msgstr "Timp X-Decolorare (s):"
+msgstr "Timp (s): "
#: editor/animation_track_editor.cpp
#, fuzzy
@@ -305,13 +296,12 @@ msgid "Trigger"
msgstr "Trăgaci"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Capture"
-msgstr "Viitor"
+msgstr "Capturează"
#: editor/animation_track_editor.cpp
msgid "Nearest"
-msgstr ""
+msgstr "Cel mai apropiat"
#: editor/animation_track_editor.cpp editor/plugins/curve_editor_plugin.cpp
#: editor/property_editor.cpp
@@ -320,7 +310,7 @@ msgstr "Linear"
#: editor/animation_track_editor.cpp
msgid "Cubic"
-msgstr ""
+msgstr "Cubic"
#: editor/animation_track_editor.cpp
msgid "Clamp Loop Interp"
@@ -336,29 +326,24 @@ msgid "Insert Key"
msgstr "Inserează Notă"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Duplicate Key(s)"
-msgstr "Anim Clonare Chei"
+msgstr "Clonare Chei(s)"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Delete Key(s)"
-msgstr "Anim Ștergeți Cheile"
+msgstr "Ștergeți Cheile"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Change Animation Update Mode"
-msgstr "Schimbă Numele Animației:"
+msgstr "Schimbă Modul de Actualizare al Animației"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Change Animation Interpolation Mode"
-msgstr "Nod de Animație"
+msgstr "Schimbă Modul de Intercalare al Animației"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Change Animation Loop Mode"
-msgstr "Schimbați Bucla Anim"
+msgstr "Schimbați Bucla Animației"
#: editor/animation_track_editor.cpp
msgid "Remove Anim Track"
@@ -390,7 +375,7 @@ msgstr "Anim Inserați"
#: editor/animation_track_editor.cpp
msgid "AnimationPlayer can't animate itself, only other players."
-msgstr ""
+msgstr "AnimationPlayer nu se poate anima singur, doar alți jucători."
#: editor/animation_track_editor.cpp
msgid "Anim Create & Insert"
@@ -405,12 +390,10 @@ msgid "Anim Insert Key"
msgstr "Anim Inserați Cheie"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Change Animation Step"
-msgstr "Schimbă Numele Animației:"
+msgstr "Schimbă Pasul Animației"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Rearrange Tracks"
msgstr "Rearanjați Autoload-urile"
@@ -436,61 +419,55 @@ msgstr ""
#: editor/animation_track_editor.cpp
msgid "Not possible to add a new track without a root"
-msgstr ""
+msgstr "Nu este posibil să fie adăugată o nouă pistă fără a avea o rădăcină"
#: editor/animation_track_editor.cpp
msgid "Invalid track for Bezier (no suitable sub-properties)"
-msgstr ""
+msgstr "Pistă invalidă pentru Bezier(nicio sub-proprietate corespunzătoare)"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Add Bezier Track"
-msgstr "Anim Adăugați Pistă"
+msgstr "Adăugați Pistă Bezier"
#: editor/animation_track_editor.cpp
msgid "Track path is invalid, so can't add a key."
-msgstr ""
+msgstr "Calea pistei este invalidă, așa că nu poate fi adăugată o cheie."
#: editor/animation_track_editor.cpp
msgid "Track is not of type Spatial, can't insert key"
-msgstr ""
+msgstr "Pista nu este de tipul Spatial, nu se poate insera cheie"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Add Transform Track Key"
-msgstr "Transformare hartă UV"
+msgstr "Adăugare Cheie de Tranformare a Pistei"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Add Track Key"
msgstr "Anim Adăugați Pistă"
#: editor/animation_track_editor.cpp
msgid "Track path is invalid, so can't add a method key."
-msgstr ""
+msgstr "Calea pistei este invalidă, așa că nu poate fi adăugată o metodă."
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Add Method Track Key"
-msgstr "Anim Inserați Pistă și Cheie"
+msgstr "Inserați Pistă și Cheie"
#: editor/animation_track_editor.cpp
msgid "Method not found in object: "
-msgstr ""
+msgstr "Metoda nu a fost găsită în obiect: "
#: editor/animation_track_editor.cpp
msgid "Anim Move Keys"
msgstr "Anim Mutați Cheie"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Clipboard is empty"
-msgstr "Clip-board de resurse gol !"
+msgstr "Clip-board de resurse gol"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Paste Tracks"
-msgstr "Lipiţi Parametrii"
+msgstr "Lipiţi Piste"
#: editor/animation_track_editor.cpp
msgid "Anim Scale Keys"
@@ -500,6 +477,8 @@ msgstr "Anim Scalați Cheile"
msgid ""
"This option does not work for Bezier editing, as it's only a single track."
msgstr ""
+"Această opțiune nu funcționează pentru editarea Bezier, din moment ce e o "
+"singură pistă."
#: editor/animation_track_editor.cpp
msgid ""
@@ -516,7 +495,7 @@ msgstr ""
#: editor/animation_track_editor.cpp
msgid "Warning: Editing imported animation"
-msgstr ""
+msgstr "Avertisment: Se editează animația încărcată"
#: editor/animation_track_editor.cpp
#, fuzzy
@@ -526,28 +505,27 @@ msgstr "Selectați un Animator din Copacul Scenă să editați animații."
#: editor/animation_track_editor.cpp
msgid "Only show tracks from nodes selected in tree."
msgstr ""
+"Arată numai pistele ce aparțin nodurilor selectate în managerul de file."
#: editor/animation_track_editor.cpp
msgid "Group tracks by node or display them as plain list."
-msgstr ""
+msgstr "Grupează pistele în funcție de nod sau afișează-le ca o listă simplă."
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Snap:"
-msgstr "Aliniere"
+msgstr "Fixare:"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Animation step value."
-msgstr "Arborele Animației este valid."
+msgstr "Pasul Animației."
#: editor/animation_track_editor.cpp
msgid "Seconds"
-msgstr ""
+msgstr "Secunde"
#: editor/animation_track_editor.cpp
msgid "FPS"
-msgstr ""
+msgstr "FPS(cadre pe secundă)"
#: editor/animation_track_editor.cpp editor/editor_properties.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -560,14 +538,12 @@ msgid "Edit"
msgstr "Modificare"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Animation properties."
-msgstr "ArboreAnimație"
+msgstr "Proprietăți animație."
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Copy Tracks"
-msgstr "Copie Parametrii"
+msgstr "Copiază Piste"
#: editor/animation_track_editor.cpp
msgid "Scale Selection"
@@ -586,17 +562,14 @@ msgid "Duplicate Transposed"
msgstr "Duplicați Transpunerea"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Delete Selection"
-msgstr "Centrează Selecția"
+msgstr "Șterge Selecția"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Go to Next Step"
msgstr "Mergeți la Pasul Următor"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Go to Previous Step"
msgstr "Mergeți la Pasul Anterior"
@@ -610,11 +583,11 @@ msgstr "Curățați Animația"
#: editor/animation_track_editor.cpp
msgid "Pick the node that will be animated:"
-msgstr ""
+msgstr "Alege nodul care urmează să fie animat:"
#: editor/animation_track_editor.cpp
msgid "Use Bezier Curves"
-msgstr ""
+msgstr "Folosește curbe Bezier"
#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
@@ -661,9 +634,8 @@ msgid "Scale Ratio:"
msgstr "Proporție Scalare:"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Select Tracks to Copy"
-msgstr "Setează Tranziții la:"
+msgstr "Selectează Pistele de Copiat"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
#: editor/editor_properties.cpp
@@ -672,12 +644,11 @@ msgstr "Setează Tranziții la:"
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Copy"
-msgstr ""
+msgstr "Copiază"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Select All/None"
-msgstr "Mod Selectare"
+msgstr "Selectează Tot/Nimic"
#: editor/animation_track_editor_plugins.cpp
#, fuzzy
@@ -718,12 +689,11 @@ msgstr "Înlocuit %d potriviri."
#: editor/code_editor.cpp editor/editor_help.cpp
msgid "%d match."
-msgstr ""
+msgstr "%d potriviri."
#: editor/code_editor.cpp editor/editor_help.cpp
-#, fuzzy
msgid "%d matches."
-msgstr "Nici o Potrivire"
+msgstr "%d potriviri."
#: editor/code_editor.cpp editor/find_in_files.cpp
msgid "Match Case"
@@ -748,7 +718,7 @@ msgstr "Numai Selecția"
#: editor/code_editor.cpp editor/plugins/script_text_editor.cpp
#: editor/plugins/text_editor.cpp
msgid "Standard"
-msgstr ""
+msgstr "Standard"
#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp
msgid "Toggle Scripts Panel"
@@ -772,45 +742,39 @@ msgstr "Resetați Zoom-area"
#: editor/code_editor.cpp
msgid "Warnings"
-msgstr ""
+msgstr "Avertismente"
#: editor/code_editor.cpp
msgid "Line and column numbers."
-msgstr ""
+msgstr "Numerele liniilor și coloanelor."
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Method in target node must be specified."
-msgstr "Metoda din Nod-ul țintă trebuie specificată!"
+msgstr "Metoda din nodul țintă trebuie specificată."
#: editor/connections_dialog.cpp
-#, fuzzy
msgid ""
"Target method not found. Specify a valid method or attach a script to the "
"target node."
msgstr ""
"Metoda țintă nu există! Specificați o metodă validă sau atașați un script la "
-"Nod-ul țintă."
+"nodul țintă."
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Connect to Node:"
msgstr "Conectați la Nod:"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Connect to Script:"
-msgstr "Nu se poate conecta la gazda:"
+msgstr "Conectează la Script:"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "From Signal:"
msgstr "Semnale:"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Scene does not contain any script."
-msgstr "Nodul nu conține geometrie."
+msgstr "Scena nu conține niciun script."
#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
#: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp
@@ -838,14 +802,12 @@ msgid "Extra Call Arguments:"
msgstr "Extra Argumente de Chemare:"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Receiver Method:"
-msgstr "Proprietățile obiectului."
+msgstr "Metodă Primitor:"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Advanced"
-msgstr "Opțiuni Snapping"
+msgstr "Avansate"
#: editor/connections_dialog.cpp
msgid "Deferred"
@@ -862,12 +824,11 @@ msgstr "Tragere unică"
#: editor/connections_dialog.cpp
msgid "Disconnects the signal after its first emission."
-msgstr ""
+msgstr "Deconectează semnalul după prima emitere."
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Cannot connect signal"
-msgstr "Conectați Semnal:"
+msgstr "Nu se poate conecta semnalul"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
#: editor/export_template_manager.cpp editor/groups_editor.cpp
@@ -889,9 +850,8 @@ msgid "Connect"
msgstr "Conectați"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Signal:"
-msgstr "Semnale:"
+msgstr "Semnal:"
#: editor/connections_dialog.cpp
msgid "Connect '%s' to '%s'"
@@ -902,7 +862,6 @@ msgid "Disconnect '%s' from '%s'"
msgstr "Deconectați '%s' de la '%s'"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Disconnect all from signal: '%s'"
msgstr "Deconectați '%s' de la '%s'"
@@ -916,19 +875,16 @@ msgid "Disconnect"
msgstr "Deconectați"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Connect a Signal to a Method"
-msgstr "Conectați Semnal:"
+msgstr "Conectați Semnal la o Metodă"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Edit Connection:"
-msgstr "Eroare de Conexiune"
+msgstr "Modifică Conexiunea:"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Are you sure you want to remove all connections from the \"%s\" signal?"
-msgstr "Ești sigur că vrei să execuți acel proiect?"
+msgstr "Ești sigur că vrei să ștergi toate conexiunile de la semnalul \"%s\"?"
#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
@@ -936,22 +892,19 @@ msgstr "Semnale"
#: editor/connections_dialog.cpp
msgid "Are you sure you want to remove all connections from this signal?"
-msgstr ""
+msgstr "Ești sigur că vrei să ștergi toate conexiunile de la acest semnal?"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Disconnect All"
-msgstr "Deconectați"
+msgstr "Deconectați Toate"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Edit..."
-msgstr "Modificare"
+msgstr "Modificare..."
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Go To Method"
-msgstr "Metode"
+msgstr "Mergi la Metodă"
#: editor/create_dialog.cpp
msgid "Change %s Type"
@@ -1003,16 +956,14 @@ msgid "Dependencies For:"
msgstr "Dependențe Pentru:"
#: editor/dependency_editor.cpp
-#, fuzzy
msgid ""
"Scene '%s' is currently being edited.\n"
"Changes will only take effect when reloaded."
msgstr ""
"Scena '%s' este în proces de editare. \n"
-"Modificările nu vor avea efect dacă nu reîncărcați."
+"Modificările vor avea efect doar după reîncărcare."
#: editor/dependency_editor.cpp
-#, fuzzy
msgid ""
"Resource '%s' is in use.\n"
"Changes will only take effect when reloaded."
@@ -1065,9 +1016,8 @@ msgid "Owners Of:"
msgstr "Stăpâni La:"
#: editor/dependency_editor.cpp
-#, fuzzy
msgid "Remove selected files from the project? (Can't be restored)"
-msgstr "Ștergeți fișierele selectate din proiect? (fără anulare)"
+msgstr "Ștergeți fișierele selectate din proiect? (Acțiune ireversibilă)"
#: editor/dependency_editor.cpp
msgid ""
@@ -1088,7 +1038,6 @@ msgid "Error loading:"
msgstr "Eroare încărcând:"
#: editor/dependency_editor.cpp
-#, fuzzy
msgid "Load failed due to missing dependencies:"
msgstr "Scena nu a putut fi încărcata deoarece are dependențe în lipsa:"
@@ -1113,9 +1062,8 @@ msgid "Permanently delete %d item(s)? (No undo!)"
msgstr "Ștergeți permanent %d articol(e)? (Fără anulare!)"
#: editor/dependency_editor.cpp
-#, fuzzy
msgid "Show Dependencies"
-msgstr "Dependențe"
+msgstr "Arată Dependențe"
#: editor/dependency_editor.cpp
msgid "Orphan Resource Explorer"
@@ -1206,12 +1154,10 @@ msgid "License"
msgstr "Licență"
#: editor/editor_about.cpp
-#, fuzzy
msgid "Third-party Licenses"
msgstr "Licenţe Thirdparty"
#: editor/editor_about.cpp
-#, fuzzy
msgid ""
"Godot Engine relies on a number of third-party free and open source "
"libraries, all compatible with the terms of its MIT license. The following "
@@ -1220,8 +1166,8 @@ msgid ""
msgstr ""
"Motorul Godot se bazează pe un număr de biblioteci thirdparty gratis și "
"opensource, toate compatibile cu termenii licenţei MIT ai lui. Mai jos este "
-"o listă exhaustivă a tuturor acestor componente de thirdparty cu declaraţii "
-"de autor respective şi termenii licenței."
+"o listă exhaustivă a tuturor acestor componente de thirdparty cu "
+"declaraţiile de autor respective şi termenii licenței."
#: editor/editor_about.cpp
msgid "All Components"
@@ -1236,14 +1182,12 @@ msgid "Licenses"
msgstr "Licențe"
#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-#, fuzzy
msgid "Error opening package file, not in ZIP format."
-msgstr "Eroare la deschiderea fişierului pachet, nu este în format zip."
+msgstr "Eroare la deschiderea fişierului pachet, nu este în format ZIP."
#: editor/editor_asset_installer.cpp
-#, fuzzy
msgid "%s (Already Exists)"
-msgstr "AutoLoad '%s' există deja!"
+msgstr "%s (Există deja)"
#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
@@ -1251,17 +1195,15 @@ msgstr "Decomprimare Asset-uri"
#: editor/editor_asset_installer.cpp editor/project_manager.cpp
msgid "The following files failed extraction from package:"
-msgstr ""
+msgstr "Următoarele file au eșuat extragerea din pachet:"
#: editor/editor_asset_installer.cpp
-#, fuzzy
msgid "And %s more files."
-msgstr "%d mai multe fișiere"
+msgstr "și %d alte fișiere."
#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-#, fuzzy
msgid "Package installed successfully!"
-msgstr "Pachet Instalat cu Succes!"
+msgstr "Pachet instalat cu succes!"
#: editor/editor_asset_installer.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -1269,9 +1211,8 @@ msgid "Success!"
msgstr "Succes!"
#: editor/editor_asset_installer.cpp
-#, fuzzy
msgid "Package Contents:"
-msgstr "Conținut:"
+msgstr "Conținutul pachetului:"
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
@@ -1326,7 +1267,6 @@ msgid "Delete Bus Effect"
msgstr "Ștergeți Pista Efect"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Drag & drop to rearrange."
msgstr "Pista Audio, Trageți și Plasați pentru a rearanja."
@@ -1401,7 +1341,7 @@ msgstr "Deschide Schema Pistei Audio"
#: editor/editor_audio_buses.cpp
msgid "There is no '%s' file."
-msgstr ""
+msgstr "Nu este niciun '%s' în filă."
#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
msgid "Layout"
@@ -1412,9 +1352,8 @@ msgid "Invalid file, not an audio bus layout."
msgstr "Fişier nevalid, nu este o schemă de pistă audio."
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Error saving file: %s"
-msgstr "Eroare la salvarea TileSet!"
+msgstr "Eroare la salvarea filei: %s"
#: editor/editor_audio_buses.cpp
msgid "Add Bus"
@@ -7630,6 +7569,10 @@ msgid "Cinematic Preview"
msgstr "Se creează Previzualizările Mesh-ului"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr ""
diff --git a/editor/translations/ru.po b/editor/translations/ru.po
index 7d7e5f2f74..177883732e 100644
--- a/editor/translations/ru.po
+++ b/editor/translations/ru.po
@@ -66,7 +66,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2020-01-16 22:24+0000\n"
+"PO-Revision-Date: 2020-01-19 11:03+0000\n"
"Last-Translator: Danil Alexeev <danil@alexeev.xyz>\n"
"Language-Team: Russian <https://hosted.weblate.org/projects/godot-engine/"
"godot/ru/>\n"
@@ -76,7 +76,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.10.2-dev\n"
+"X-Generator: Weblate 3.10.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -1995,9 +1995,8 @@ msgid "Inherited by:"
msgstr "Унаследован:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Description"
-msgstr "Описание:"
+msgstr "Описание"
#: editor/editor_help.cpp
msgid "Online Tutorials"
@@ -7339,6 +7338,10 @@ msgid "Cinematic Preview"
msgstr "Кинематографический предварительный просмотр"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr "Обзор налево"
diff --git a/editor/translations/si.po b/editor/translations/si.po
index 4b1ddaed39..a7779c0ff9 100644
--- a/editor/translations/si.po
+++ b/editor/translations/si.po
@@ -7103,6 +7103,10 @@ msgid "Cinematic Preview"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr ""
diff --git a/editor/translations/sk.po b/editor/translations/sk.po
index d399f70f14..006b0bf6a6 100644
--- a/editor/translations/sk.po
+++ b/editor/translations/sk.po
@@ -7311,6 +7311,10 @@ msgid "Cinematic Preview"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr ""
diff --git a/editor/translations/sl.po b/editor/translations/sl.po
index 9032c7ed35..e2659207e9 100644
--- a/editor/translations/sl.po
+++ b/editor/translations/sl.po
@@ -7601,6 +7601,10 @@ msgid "Cinematic Preview"
msgstr "Ustvari Predogled Modela"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr ""
diff --git a/editor/translations/sq.po b/editor/translations/sq.po
index 0066dd3b26..d97ef32da2 100644
--- a/editor/translations/sq.po
+++ b/editor/translations/sq.po
@@ -7346,6 +7346,10 @@ msgid "Cinematic Preview"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr ""
diff --git a/editor/translations/sr_Cyrl.po b/editor/translations/sr_Cyrl.po
index 8fdbaa81a2..a22771c9b4 100644
--- a/editor/translations/sr_Cyrl.po
+++ b/editor/translations/sr_Cyrl.po
@@ -7668,6 +7668,10 @@ msgid "Cinematic Preview"
msgstr "Направи приказ мрежа"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr "Слободан поглед лево"
diff --git a/editor/translations/sr_Latn.po b/editor/translations/sr_Latn.po
index 291e70410b..8a743d0ccf 100644
--- a/editor/translations/sr_Latn.po
+++ b/editor/translations/sr_Latn.po
@@ -7144,6 +7144,10 @@ msgid "Cinematic Preview"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr ""
diff --git a/editor/translations/sv.po b/editor/translations/sv.po
index 6212071472..390082dd3e 100644
--- a/editor/translations/sv.po
+++ b/editor/translations/sv.po
@@ -7553,6 +7553,10 @@ msgid "Cinematic Preview"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr ""
diff --git a/editor/translations/ta.po b/editor/translations/ta.po
index 94bbe2234a..d4ee4376a1 100644
--- a/editor/translations/ta.po
+++ b/editor/translations/ta.po
@@ -7105,6 +7105,10 @@ msgid "Cinematic Preview"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr ""
diff --git a/editor/translations/te.po b/editor/translations/te.po
index 428319aa29..cc40ba3888 100644
--- a/editor/translations/te.po
+++ b/editor/translations/te.po
@@ -7054,6 +7054,10 @@ msgid "Cinematic Preview"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr ""
diff --git a/editor/translations/th.po b/editor/translations/th.po
index 52077132ee..58c78d82a9 100644
--- a/editor/translations/th.po
+++ b/editor/translations/th.po
@@ -7577,6 +7577,10 @@ msgid "Cinematic Preview"
msgstr "กำลังสร้างภาพตัวอย่าง Mesh"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr "มุมมองอิสระ ไปซ้าย"
diff --git a/editor/translations/tr.po b/editor/translations/tr.po
index 9451624a4a..4a58570f66 100644
--- a/editor/translations/tr.po
+++ b/editor/translations/tr.po
@@ -7338,6 +7338,10 @@ msgid "Cinematic Preview"
msgstr "Sinematik Önizleme"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr "Serbestbakış Sola"
diff --git a/editor/translations/uk.po b/editor/translations/uk.po
index 779506a0e9..fefe38de7d 100644
--- a/editor/translations/uk.po
+++ b/editor/translations/uk.po
@@ -17,7 +17,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Ukrainian (Godot Engine)\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2020-01-13 13:36+0000\n"
+"PO-Revision-Date: 2020-01-19 11:04+0000\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <https://hosted.weblate.org/projects/godot-engine/"
"godot/uk/>\n"
@@ -27,7 +27,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.10.1\n"
+"X-Generator: Weblate 3.10.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -1950,9 +1950,8 @@ msgid "Inherited by:"
msgstr "Успадковано:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Description"
-msgstr "Опис:"
+msgstr "Опис"
#: editor/editor_help.cpp
msgid "Online Tutorials"
@@ -1973,14 +1972,12 @@ msgid "Properties"
msgstr "Властивості"
#: editor/editor_help.cpp
-#, fuzzy
msgid "override:"
-msgstr "Перевизначення"
+msgstr "перевизначення:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "default:"
-msgstr "Типовий"
+msgstr "типовий:"
#: editor/editor_help.cpp
msgid "Methods"
@@ -2003,9 +2000,8 @@ msgid "Property Descriptions"
msgstr "Описи властивостей"
#: editor/editor_help.cpp
-#, fuzzy
msgid "(value)"
-msgstr "Значення"
+msgstr "(значення)"
#: editor/editor_help.cpp
msgid ""
@@ -7307,6 +7303,10 @@ msgid "Cinematic Preview"
msgstr "Кінематичний перегляд"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr "Огляд ліворуч"
diff --git a/editor/translations/ur_PK.po b/editor/translations/ur_PK.po
index 73cfbb3650..06d553b158 100644
--- a/editor/translations/ur_PK.po
+++ b/editor/translations/ur_PK.po
@@ -7209,6 +7209,10 @@ msgid "Cinematic Preview"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr ""
diff --git a/editor/translations/vi.po b/editor/translations/vi.po
index 6024fc9d8d..e670590750 100644
--- a/editor/translations/vi.po
+++ b/editor/translations/vi.po
@@ -7307,6 +7307,10 @@ msgid "Cinematic Preview"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr ""
diff --git a/editor/translations/zh_CN.po b/editor/translations/zh_CN.po
index 42e78e233e..afec9c9187 100644
--- a/editor/translations/zh_CN.po
+++ b/editor/translations/zh_CN.po
@@ -63,7 +63,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Chinese (Simplified) (Godot Engine)\n"
"POT-Creation-Date: 2018-01-20 12:15+0200\n"
-"PO-Revision-Date: 2020-01-13 13:36+0000\n"
+"PO-Revision-Date: 2020-01-19 11:03+0000\n"
"Last-Translator: Haoyu Qiu <timothyqiu32@gmail.com>\n"
"Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/"
"godot-engine/godot/zh_Hans/>\n"
@@ -72,7 +72,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.10.1\n"
+"X-Generator: Weblate 3.10.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -1961,9 +1961,8 @@ msgid "Inherited by:"
msgstr "派生:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Description"
-msgstr "描述:"
+msgstr "描述"
#: editor/editor_help.cpp
msgid "Online Tutorials"
@@ -1983,14 +1982,12 @@ msgid "Properties"
msgstr "属性"
#: editor/editor_help.cpp
-#, fuzzy
msgid "override:"
-msgstr "重写"
+msgstr "覆盖:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "default:"
-msgstr "默认"
+msgstr "默认:"
#: editor/editor_help.cpp
msgid "Methods"
@@ -2013,9 +2010,8 @@ msgid "Property Descriptions"
msgstr "属性说明"
#: editor/editor_help.cpp
-#, fuzzy
msgid "(value)"
-msgstr "值"
+msgstr "(值)"
#: editor/editor_help.cpp
msgid ""
@@ -7211,6 +7207,10 @@ msgid "Cinematic Preview"
msgstr "效果预览"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr "自由视图 左"
diff --git a/editor/translations/zh_HK.po b/editor/translations/zh_HK.po
index c8f82b6421..657567e0f6 100644
--- a/editor/translations/zh_HK.po
+++ b/editor/translations/zh_HK.po
@@ -7614,6 +7614,10 @@ msgid "Cinematic Preview"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr ""
diff --git a/editor/translations/zh_TW.po b/editor/translations/zh_TW.po
index 61fcbd3f4c..429406e820 100644
--- a/editor/translations/zh_TW.po
+++ b/editor/translations/zh_TW.po
@@ -7592,6 +7592,10 @@ msgid "Cinematic Preview"
msgstr "影片預覽"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Not available when using the GLES2 renderer."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
msgstr "自由視圖 左"
diff --git a/modules/gdscript/gdscript_parser.cpp b/modules/gdscript/gdscript_parser.cpp
index 5c2e7137bf..aec7110ee5 100644
--- a/modules/gdscript/gdscript_parser.cpp
+++ b/modules/gdscript/gdscript_parser.cpp
@@ -5404,12 +5404,12 @@ void GDScriptParser::_determine_inheritance(ClassNode *p_class, bool p_recursive
ident += ("." + subclass);
- if (base_script->get_subclasses().has(subclass)) {
+ if (find_subclass->get_subclasses().has(subclass)) {
- find_subclass = base_script->get_subclasses()[subclass];
- } else if (base_script->get_constants().has(subclass)) {
+ find_subclass = find_subclass->get_subclasses()[subclass];
+ } else if (find_subclass->get_constants().has(subclass)) {
- Ref<GDScript> new_base_class = base_script->get_constants()[subclass];
+ Ref<GDScript> new_base_class = find_subclass->get_constants()[subclass];
if (new_base_class.is_null()) {
_set_error("Constant isn't a class: " + ident, p_class->line);
return;
diff --git a/modules/mono/class_db_api_json.cpp b/modules/mono/class_db_api_json.cpp
index c1d6f4dccf..b04e53bd81 100644
--- a/modules/mono/class_db_api_json.cpp
+++ b/modules/mono/class_db_api_json.cpp
@@ -71,6 +71,13 @@ void class_db_api_to_json(const String &p_output_file, ClassDB::APIType p_api) {
while ((k = t->method_map.next(k))) {
+ String name = k->operator String();
+
+ ERR_CONTINUE(name.empty());
+
+ if (name[0] == '_')
+ continue; // Ignore non-virtual methods that start with an underscore
+
snames.push_back(*k);
}
diff --git a/modules/mono/csharp_script.cpp b/modules/mono/csharp_script.cpp
index 0f6b8357b8..210267e681 100644
--- a/modules/mono/csharp_script.cpp
+++ b/modules/mono/csharp_script.cpp
@@ -106,7 +106,7 @@ Error CSharpLanguage::execute_file(const String &p_path) {
void CSharpLanguage::init() {
#ifdef DEBUG_METHODS_ENABLED
- if (OS::get_singleton()->get_cmdline_args().find("--class_db_to_json")) {
+ if (OS::get_singleton()->get_cmdline_args().find("--class-db-json")) {
class_db_api_to_json("user://class_db_api.json", ClassDB::API_CORE);
#ifdef TOOLS_ENABLED
class_db_api_to_json("user://class_db_api_editor.json", ClassDB::API_EDITOR);
diff --git a/modules/mono/editor/GodotTools/GodotTools/Internals/ScriptClassParser.cs b/modules/mono/editor/GodotTools/GodotTools/Internals/ScriptClassParser.cs
index 80e45b3a3c..11afa8773e 100644
--- a/modules/mono/editor/GodotTools/GodotTools/Internals/ScriptClassParser.cs
+++ b/modules/mono/editor/GodotTools/GodotTools/Internals/ScriptClassParser.cs
@@ -25,14 +25,14 @@ namespace GodotTools.Internals
}
[MethodImpl(MethodImplOptions.InternalCall)]
- private static extern Error internal_ParseFile(string filePath, Array<Dictionary> classes);
+ private static extern Error internal_ParseFile(string filePath, Array<Dictionary> classes, out string errorStr);
public static void ParseFileOrThrow(string filePath, out IEnumerable<ClassDecl> classes)
{
var classesArray = new Array<Dictionary>();
- var error = internal_ParseFile(filePath, classesArray);
+ var error = internal_ParseFile(filePath, classesArray, out string errorStr);
if (error != Error.Ok)
- throw new Exception($"Failed to determine namespace and class for script: {filePath}. Parse error: {error}");
+ throw new Exception($"Failed to determine namespace and class for script: {filePath}. Parse error: {errorStr ?? error.ToString()}");
var classesList = new List<ClassDecl>();
diff --git a/modules/mono/editor/editor_internal_calls.cpp b/modules/mono/editor/editor_internal_calls.cpp
index cfc869cd39..c8d20e80be 100644
--- a/modules/mono/editor/editor_internal_calls.cpp
+++ b/modules/mono/editor/editor_internal_calls.cpp
@@ -201,7 +201,9 @@ uint32_t godot_icall_BindingsGenerator_CsGlueVersion() {
return CS_GLUE_VERSION;
}
-int32_t godot_icall_ScriptClassParser_ParseFile(MonoString *p_filepath, MonoObject *p_classes) {
+int32_t godot_icall_ScriptClassParser_ParseFile(MonoString *p_filepath, MonoObject *p_classes, MonoString **r_error_str) {
+ *r_error_str = NULL;
+
String filepath = GDMonoMarshal::mono_string_to_godot(p_filepath);
ScriptClassParser scp;
@@ -220,6 +222,11 @@ int32_t godot_icall_ScriptClassParser_ParseFile(MonoString *p_filepath, MonoObje
classDeclDict["base_count"] = classDecl.base.size();
classes.push_back(classDeclDict);
}
+ } else {
+ String error_str = scp.get_error();
+ if (!error_str.empty()) {
+ *r_error_str = GDMonoMarshal::mono_string_from_godot(error_str);
+ }
}
return err;
}
diff --git a/modules/mono/editor/script_class_parser.cpp b/modules/mono/editor/script_class_parser.cpp
index c400479b89..84163dd952 100644
--- a/modules/mono/editor/script_class_parser.cpp
+++ b/modules/mono/editor/script_class_parser.cpp
@@ -302,8 +302,10 @@ Error ScriptClassParser::_skip_generic_type_params() {
Error err = _skip_generic_type_params();
if (err)
return err;
- continue;
- } else if (tk == TK_OP_GREATER) {
+ tk = get_token();
+ }
+
+ if (tk == TK_OP_GREATER) {
return OK;
} else if (tk != TK_COMMA) {
error_str = "Unexpected token: " + get_token_name(tk);
diff --git a/modules/recast/register_types.cpp b/modules/recast/register_types.cpp
index a1286c58c8..ea0ab00771 100644
--- a/modules/recast/register_types.cpp
+++ b/modules/recast/register_types.cpp
@@ -38,17 +38,17 @@ EditorNavigationMeshGenerator *_nav_mesh_generator = NULL;
void register_recast_types() {
#ifdef TOOLS_ENABLED
- EditorPlugins::add_by_type<NavigationMeshEditorPlugin>();
- _nav_mesh_generator = memnew(EditorNavigationMeshGenerator);
-
ClassDB::APIType prev_api = ClassDB::get_current_api();
ClassDB::set_current_api(ClassDB::API_EDITOR);
- ClassDB::register_class<EditorNavigationMeshGenerator>();
+ EditorPlugins::add_by_type<NavigationMeshEditorPlugin>();
+ _nav_mesh_generator = memnew(EditorNavigationMeshGenerator);
- ClassDB::set_current_api(prev_api);
+ ClassDB::register_class<EditorNavigationMeshGenerator>();
Engine::get_singleton()->add_singleton(Engine::Singleton("NavigationMeshGenerator", EditorNavigationMeshGenerator::get_singleton()));
+
+ ClassDB::set_current_api(prev_api);
#endif
}
diff --git a/modules/visual_script/visual_script_nodes.cpp b/modules/visual_script/visual_script_nodes.cpp
index 0a9f228b0a..86c1080182 100644
--- a/modules/visual_script/visual_script_nodes.cpp
+++ b/modules/visual_script/visual_script_nodes.cpp
@@ -2377,10 +2377,7 @@ VisualScriptEngineSingleton::TypeGuess VisualScriptEngineSingleton::guess_output
return tg;
}
-void VisualScriptEngineSingleton::_bind_methods() {
-
- ClassDB::bind_method(D_METHOD("set_singleton", "name"), &VisualScriptEngineSingleton::set_singleton);
- ClassDB::bind_method(D_METHOD("get_singleton"), &VisualScriptEngineSingleton::get_singleton);
+void VisualScriptEngineSingleton::_validate_property(PropertyInfo &property) const {
String cc;
@@ -2397,7 +2394,16 @@ void VisualScriptEngineSingleton::_bind_methods() {
cc += E->get().name;
}
- ADD_PROPERTY(PropertyInfo(Variant::STRING, "constant", PROPERTY_HINT_ENUM, cc), "set_singleton", "get_singleton");
+ property.hint = PROPERTY_HINT_ENUM;
+ property.hint_string = cc;
+}
+
+void VisualScriptEngineSingleton::_bind_methods() {
+
+ ClassDB::bind_method(D_METHOD("set_singleton", "name"), &VisualScriptEngineSingleton::set_singleton);
+ ClassDB::bind_method(D_METHOD("get_singleton"), &VisualScriptEngineSingleton::get_singleton);
+
+ ADD_PROPERTY(PropertyInfo(Variant::STRING, "constant"), "set_singleton", "get_singleton");
}
VisualScriptEngineSingleton::VisualScriptEngineSingleton() {
diff --git a/modules/visual_script/visual_script_nodes.h b/modules/visual_script/visual_script_nodes.h
index fe44af277f..0df5071491 100644
--- a/modules/visual_script/visual_script_nodes.h
+++ b/modules/visual_script/visual_script_nodes.h
@@ -614,6 +614,9 @@ class VisualScriptEngineSingleton : public VisualScriptNode {
String singleton;
+protected:
+ void _validate_property(PropertyInfo &property) const;
+
static void _bind_methods();
public:
diff --git a/platform/android/api/api.cpp b/platform/android/api/api.cpp
new file mode 100644
index 0000000000..2146c5409b
--- /dev/null
+++ b/platform/android/api/api.cpp
@@ -0,0 +1,86 @@
+/*************************************************************************/
+/* api.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#include "api.h"
+
+#include "core/engine.h"
+#include "java_class_wrapper.h"
+
+#if !defined(ANDROID_ENABLED)
+static JavaClassWrapper *java_class_wrapper = NULL;
+#endif
+
+void register_android_api() {
+
+#if !defined(ANDROID_ENABLED)
+ java_class_wrapper = memnew(JavaClassWrapper); // Dummy
+#endif
+
+ ClassDB::register_class<JavaClass>();
+ ClassDB::register_class<JavaClassWrapper>();
+ Engine::get_singleton()->add_singleton(Engine::Singleton("JavaClassWrapper", JavaClassWrapper::get_singleton()));
+}
+
+void unregister_android_api() {
+
+#if !defined(ANDROID_ENABLED)
+ memdelete(java_class_wrapper);
+#endif
+}
+
+void JavaClassWrapper::_bind_methods() {
+
+ ClassDB::bind_method(D_METHOD("wrap", "name"), &JavaClassWrapper::wrap);
+}
+
+#if !defined(ANDROID_ENABLED)
+
+Variant JavaClass::call(const StringName &, const Variant **, int, Variant::CallError &) {
+ return Variant();
+}
+
+JavaClass::JavaClass() {
+}
+
+Variant JavaObject::call(const StringName &, const Variant **, int, Variant::CallError &) {
+ return Variant();
+}
+
+JavaClassWrapper *JavaClassWrapper::singleton = NULL;
+
+Ref<JavaClass> JavaClassWrapper::wrap(const String &) {
+ return Ref<JavaClass>();
+}
+
+JavaClassWrapper::JavaClassWrapper() {
+ singleton = this;
+}
+
+#endif
diff --git a/platform/android/api/api.h b/platform/android/api/api.h
new file mode 100644
index 0000000000..c7296d92a7
--- /dev/null
+++ b/platform/android/api/api.h
@@ -0,0 +1,32 @@
+/*************************************************************************/
+/* api.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+void register_android_api();
+void unregister_android_api();
diff --git a/platform/android/java_class_wrapper.h b/platform/android/api/java_class_wrapper.h
index 8075b297b0..6c06d57ac1 100644
--- a/platform/android/java_class_wrapper.h
+++ b/platform/android/api/java_class_wrapper.h
@@ -32,16 +32,22 @@
#define JAVA_CLASS_WRAPPER_H
#include "core/reference.h"
+
+#ifdef ANDROID_ENABLED
#include <android/log.h>
#include <jni.h>
+#endif
+#ifdef ANDROID_ENABLED
class JavaObject;
+#endif
class JavaClass : public Reference {
GDCLASS(JavaClass, Reference);
- enum ArgumentType {
+#ifdef ANDROID_ENABLED
+ enum ArgumentType{
ARG_TYPE_VOID,
ARG_TYPE_BOOLEAN,
@@ -159,6 +165,7 @@ class JavaClass : public Reference {
friend class JavaClassWrapper;
Map<StringName, List<MethodInfo> > methods;
jclass _class;
+#endif
public:
virtual Variant call(const StringName &p_method, const Variant **p_args, int p_argcount, Variant::CallError &r_error);
@@ -170,22 +177,27 @@ class JavaObject : public Reference {
GDCLASS(JavaObject, Reference);
+#ifdef ANDROID_ENABLED
Ref<JavaClass> base_class;
friend class JavaClass;
jobject instance;
+#endif
public:
virtual Variant call(const StringName &p_method, const Variant **p_args, int p_argcount, Variant::CallError &r_error);
+#ifdef ANDROID_ENABLED
JavaObject(const Ref<JavaClass> &p_base, jobject *p_instance);
~JavaObject();
+#endif
};
class JavaClassWrapper : public Object {
GDCLASS(JavaClassWrapper, Object);
+#ifdef ANDROID_ENABLED
Map<String, Ref<JavaClass> > class_cache;
friend class JavaClass;
jclass activityClass;
@@ -211,6 +223,7 @@ class JavaClassWrapper : public Object {
jobject classLoader;
bool _get_type_sig(JNIEnv *env, jobject obj, uint32_t &sig, String &strsig);
+#endif
static JavaClassWrapper *singleton;
@@ -222,7 +235,11 @@ public:
Ref<JavaClass> wrap(const String &p_class);
+#ifdef ANDROID_ENABLED
JavaClassWrapper(jobject p_activity = NULL);
+#else
+ JavaClassWrapper();
+#endif
};
#endif // JAVA_CLASS_WRAPPER_H
diff --git a/platform/android/audio_driver_opensl.cpp b/platform/android/audio_driver_opensl.cpp
index 9e294f3f14..6e9864c803 100644
--- a/platform/android/audio_driver_opensl.cpp
+++ b/platform/android/audio_driver_opensl.cpp
@@ -208,8 +208,8 @@ void AudioDriverOpenSL::_record_buffer_callback(SLAndroidSimpleBufferQueueItf qu
for (int i = 0; i < rec_buffer.size(); i++) {
int32_t sample = rec_buffer[i] << 16;
- capture_buffer_write(sample);
- capture_buffer_write(sample); // call twice to convert to Stereo
+ input_buffer_write(sample);
+ input_buffer_write(sample); // call twice to convert to Stereo
}
SLresult res = (*recordBufferQueueItf)->Enqueue(recordBufferQueueItf, rec_buffer.ptrw(), rec_buffer.size() * sizeof(int16_t));
@@ -280,7 +280,7 @@ Error AudioDriverOpenSL::capture_init_device() {
const int rec_buffer_frames = 2048;
rec_buffer.resize(rec_buffer_frames);
- capture_buffer_init(rec_buffer_frames);
+ input_buffer_init(rec_buffer_frames);
res = (*recordBufferQueueItf)->Enqueue(recordBufferQueueItf, rec_buffer.ptrw(), rec_buffer.size() * sizeof(int16_t));
ERR_FAIL_COND_V(res != SL_RESULT_SUCCESS, ERR_CANT_OPEN);
diff --git a/platform/android/java_class_wrapper.cpp b/platform/android/java_class_wrapper.cpp
index feebea2738..fe2fd89710 100644
--- a/platform/android/java_class_wrapper.cpp
+++ b/platform/android/java_class_wrapper.cpp
@@ -28,7 +28,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "java_class_wrapper.h"
+#include "api/java_class_wrapper.h"
#include "string_android.h"
#include "thread_jandroid.h"
@@ -546,11 +546,6 @@ JavaObject::~JavaObject() {
////////////////////
-void JavaClassWrapper::_bind_methods() {
-
- ClassDB::bind_method(D_METHOD("wrap", "name"), &JavaClassWrapper::wrap);
-}
-
bool JavaClassWrapper::_get_type_sig(JNIEnv *env, jobject obj, uint32_t &sig, String &strsig) {
jstring name2 = (jstring)env->CallObjectMethod(obj, Class_getName);
diff --git a/platform/android/java_godot_lib_jni.cpp b/platform/android/java_godot_lib_jni.cpp
index 858ff89cbc..dedb2ee114 100644
--- a/platform/android/java_godot_lib_jni.cpp
+++ b/platform/android/java_godot_lib_jni.cpp
@@ -33,6 +33,7 @@
#include "java_godot_wrapper.h"
#include "android/asset_manager_jni.h"
+#include "api/java_class_wrapper.h"
#include "audio_driver_jandroid.h"
#include "core/engine.h"
#include "core/os/keyboard.h"
@@ -40,7 +41,6 @@
#include "dir_access_jandroid.h"
#include "file_access_android.h"
#include "file_access_jandroid.h"
-#include "java_class_wrapper.h"
#include "main/input_default.h"
#include "main/main.h"
#include "net_socket_android.h"
@@ -739,7 +739,6 @@ JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_setup(JNIEnv *env, jo
}
java_class_wrapper = memnew(JavaClassWrapper(godot_java->get_activity()));
- Engine::get_singleton()->add_singleton(Engine::Singleton("JavaClassWrapper", java_class_wrapper));
_initialize_java_modules();
}
diff --git a/scene/main/scene_tree.cpp b/scene/main/scene_tree.cpp
index 7c43d8fb14..238d6c20cc 100644
--- a/scene/main/scene_tree.cpp
+++ b/scene/main/scene_tree.cpp
@@ -459,10 +459,7 @@ void SceneTree::input_event(const Ref<InputEvent> &p_event) {
}
void SceneTree::init() {
-
- //_quit=false;
initialized = true;
-
root->_set_tree(this);
MainLoop::init();
}
@@ -1285,6 +1282,14 @@ void SceneTree::_change_scene(Node *p_to) {
current_scene = NULL;
}
+ // If we're quitting, abort.
+ if (unlikely(_quit)) {
+ if (p_to) { // Prevent memory leak.
+ memdelete(p_to);
+ }
+ return;
+ }
+
if (p_to) {
current_scene = p_to;
root->add_child(p_to);
@@ -1292,15 +1297,14 @@ void SceneTree::_change_scene(Node *p_to) {
}
Error SceneTree::change_scene(const String &p_path) {
-
Ref<PackedScene> new_scene = ResourceLoader::load(p_path);
if (new_scene.is_null())
return ERR_CANT_OPEN;
return change_scene_to(new_scene);
}
-Error SceneTree::change_scene_to(const Ref<PackedScene> &p_scene) {
+Error SceneTree::change_scene_to(const Ref<PackedScene> &p_scene) {
Node *new_scene = NULL;
if (p_scene.is_valid()) {
new_scene = p_scene->instance();
@@ -1310,8 +1314,8 @@ Error SceneTree::change_scene_to(const Ref<PackedScene> &p_scene) {
call_deferred("_change_scene", new_scene);
return OK;
}
-Error SceneTree::reload_current_scene() {
+Error SceneTree::reload_current_scene() {
ERR_FAIL_COND_V(!current_scene, ERR_UNCONFIGURED);
String fname = current_scene->get_filename();
return change_scene(fname);
@@ -1322,6 +1326,7 @@ void SceneTree::add_current_scene(Node *p_current) {
current_scene = p_current;
root->add_child(p_current);
}
+
#ifdef DEBUG_ENABLED
static void _fill_array(Node *p_node, Array &array, int p_level) {
diff --git a/scene/resources/dynamic_font.cpp b/scene/resources/dynamic_font.cpp
index 8b619345d6..a21015f872 100644
--- a/scene/resources/dynamic_font.cpp
+++ b/scene/resources/dynamic_font.cpp
@@ -130,7 +130,10 @@ Error DynamicFontAtSize::_load() {
} else {
FileAccess *f = FileAccess::open(font->font_path, FileAccess::READ);
- ERR_FAIL_COND_V_MSG(!f, ERR_CANT_OPEN, "Cannot open font file '" + font->font_path + "'.");
+ if (!f) {
+ FT_Done_FreeType(library);
+ ERR_FAIL_V_MSG(ERR_CANT_OPEN, "Cannot open font file '" + font->font_path + "'.");
+ }
size_t len = f->get_len();
_fontdata[font->font_path] = Vector<uint8_t>();
@@ -145,7 +148,10 @@ Error DynamicFontAtSize::_load() {
if (font->font_mem == NULL && font->font_path != String()) {
FileAccess *f = FileAccess::open(font->font_path, FileAccess::READ);
- ERR_FAIL_COND_V_MSG(!f, ERR_CANT_OPEN, "Cannot open font file '" + font->font_path + "'.");
+ if (!f) {
+ FT_Done_FreeType(library);
+ ERR_FAIL_V_MSG(ERR_CANT_OPEN, "Cannot open font file '" + font->font_path + "'.");
+ }
memset(&stream, 0, sizeof(FT_StreamRec));
stream.base = NULL;
@@ -176,6 +182,7 @@ Error DynamicFontAtSize::_load() {
error = FT_Open_Face(library, &fargs, 0, &face);
} else {
+ FT_Done_FreeType(library);
ERR_FAIL_V_MSG(ERR_UNCONFIGURED, "DynamicFont uninitialized.");
}
diff --git a/scene/resources/visual_shader.cpp b/scene/resources/visual_shader.cpp
index 37792eaaea..4d2082e3c1 100644
--- a/scene/resources/visual_shader.cpp
+++ b/scene/resources/visual_shader.cpp
@@ -378,6 +378,9 @@ void VisualShader::remove_node(Type p_type, int p_id) {
List<Connection>::Element *N = E->next();
if (E->get().from_node == p_id || E->get().to_node == p_id) {
g->connections.erase(E);
+ if (E->get().from_node == p_id) {
+ g->nodes[E->get().to_node].prev_connected_nodes.erase(p_id);
+ }
}
E = N;
}
@@ -399,6 +402,25 @@ bool VisualShader::is_node_connection(Type p_type, int p_from_node, int p_from_p
return false;
}
+bool VisualShader::is_nodes_connected_relatively(const Graph *p_graph, int p_node, int p_target) const {
+ bool result = false;
+
+ const VisualShader::Node &node = p_graph->nodes[p_node];
+
+ for (const List<int>::Element *E = node.prev_connected_nodes.front(); E; E = E->next()) {
+
+ if (E->get() == p_target) {
+ return true;
+ }
+
+ result = is_nodes_connected_relatively(p_graph, E->get(), p_target);
+ if (result) {
+ break;
+ }
+ }
+ return result;
+}
+
bool VisualShader::can_connect_nodes(Type p_type, int p_from_node, int p_from_port, int p_to_node, int p_to_port) const {
ERR_FAIL_INDEX_V(p_type, TYPE_MAX, false);
@@ -433,6 +455,9 @@ bool VisualShader::can_connect_nodes(Type p_type, int p_from_node, int p_from_po
}
}
+ if (is_nodes_connected_relatively(g, p_from_node, p_to_node))
+ return false;
+
return true;
}
@@ -449,6 +474,8 @@ void VisualShader::connect_nodes_forced(Type p_type, int p_from_node, int p_from
c.to_node = p_to_node;
c.to_port = p_to_port;
g->connections.push_back(c);
+ g->nodes[p_to_node].prev_connected_nodes.push_back(p_from_node);
+
_queue_update();
}
@@ -479,6 +506,7 @@ Error VisualShader::connect_nodes(Type p_type, int p_from_node, int p_from_port,
c.to_node = p_to_node;
c.to_port = p_to_port;
g->connections.push_back(c);
+ g->nodes[p_to_node].prev_connected_nodes.push_back(p_from_node);
_queue_update();
return OK;
@@ -492,6 +520,7 @@ void VisualShader::disconnect_nodes(Type p_type, int p_from_node, int p_from_por
if (E->get().from_node == p_from_node && E->get().from_port == p_from_port && E->get().to_node == p_to_node && E->get().to_port == p_to_port) {
g->connections.erase(E);
+ g->nodes[p_to_node].prev_connected_nodes.erase(p_from_node);
_queue_update();
return;
}
@@ -1326,6 +1355,7 @@ void VisualShader::_input_type_changed(Type p_type, int p_id) {
List<Connection>::Element *N = E->next();
if (E->get().from_node == p_id) {
g->connections.erase(E);
+ g->nodes[E->get().to_node].prev_connected_nodes.erase(p_id);
}
E = N;
}
diff --git a/scene/resources/visual_shader.h b/scene/resources/visual_shader.h
index 0a3d5f96bd..b2803d1dfb 100644
--- a/scene/resources/visual_shader.h
+++ b/scene/resources/visual_shader.h
@@ -65,6 +65,7 @@ private:
struct Node {
Ref<VisualShaderNode> node;
Vector2 position;
+ List<int> prev_connected_nodes;
};
struct Graph {
@@ -135,6 +136,8 @@ public:
void remove_node(Type p_type, int p_id);
bool is_node_connection(Type p_type, int p_from_node, int p_from_port, int p_to_node, int p_to_port) const;
+
+ bool is_nodes_connected_relatively(const Graph *p_graph, int p_node, int p_target) const;
bool can_connect_nodes(Type p_type, int p_from_node, int p_from_port, int p_to_node, int p_to_port) const;
Error connect_nodes(Type p_type, int p_from_node, int p_from_port, int p_to_node, int p_to_port);
void disconnect_nodes(Type p_type, int p_from_node, int p_from_port, int p_to_node, int p_to_port);
diff --git a/servers/audio/audio_stream.cpp b/servers/audio/audio_stream.cpp
index 6b286e09e9..58742c82d4 100644
--- a/servers/audio/audio_stream.cpp
+++ b/servers/audio/audio_stream.cpp
@@ -134,31 +134,31 @@ AudioStreamMicrophone::AudioStreamMicrophone() {
void AudioStreamPlaybackMicrophone::_mix_internal(AudioFrame *p_buffer, int p_frames) {
- AudioServer::get_singleton()->lock();
+ AudioDriver::get_singleton()->lock();
- PoolVector<int32_t> capture_buffer = AudioServer::get_singleton()->get_capture_buffer();
- unsigned int capture_size = AudioServer::get_singleton()->get_capture_size();
- int mix_rate = AudioServer::get_singleton()->get_mix_rate();
- unsigned int playback_delay = MIN(((50 * mix_rate) / 1000) * 2, capture_buffer.size() >> 1);
+ Vector<int32_t> buf = AudioDriver::get_singleton()->get_input_buffer();
+ unsigned int input_size = AudioDriver::get_singleton()->get_input_size();
+ int mix_rate = AudioDriver::get_singleton()->get_mix_rate();
+ unsigned int playback_delay = MIN(((50 * mix_rate) / 1000) * 2, buf.size() >> 1);
#ifdef DEBUG_ENABLED
- unsigned int capture_position = AudioServer::get_singleton()->get_capture_position();
+ unsigned int input_position = AudioDriver::get_singleton()->get_input_position();
#endif
- if (playback_delay > capture_size) {
+ if (playback_delay > input_size) {
for (int i = 0; i < p_frames; i++) {
p_buffer[i] = AudioFrame(0.0f, 0.0f);
}
- capture_ofs = 0;
+ input_ofs = 0;
} else {
for (int i = 0; i < p_frames; i++) {
- if (capture_size > capture_ofs && (int)capture_ofs < capture_buffer.size()) {
- float l = (capture_buffer[capture_ofs++] >> 16) / 32768.f;
- if ((int)capture_ofs >= capture_buffer.size()) {
- capture_ofs = 0;
+ if (input_size > input_ofs && (int)input_ofs < buf.size()) {
+ float l = (buf[input_ofs++] >> 16) / 32768.f;
+ if ((int)input_ofs >= buf.size()) {
+ input_ofs = 0;
}
- float r = (capture_buffer[capture_ofs++] >> 16) / 32768.f;
- if ((int)capture_ofs >= capture_buffer.size()) {
- capture_ofs = 0;
+ float r = (buf[input_ofs++] >> 16) / 32768.f;
+ if ((int)input_ofs >= buf.size()) {
+ input_ofs = 0;
}
p_buffer[i] = AudioFrame(l, r);
@@ -169,12 +169,12 @@ void AudioStreamPlaybackMicrophone::_mix_internal(AudioFrame *p_buffer, int p_fr
}
#ifdef DEBUG_ENABLED
- if (capture_ofs > capture_position && (int)(capture_ofs - capture_position) < (p_frames * 2)) {
- print_verbose(String(get_class_name()) + " buffer underrun: capture_position=" + itos(capture_position) + " capture_ofs=" + itos(capture_ofs) + " capture_size=" + itos(capture_size));
+ if (input_ofs > input_position && (int)(input_ofs - input_position) < (p_frames * 2)) {
+ print_verbose(String(get_class_name()) + " buffer underrun: input_position=" + itos(input_position) + " input_ofs=" + itos(input_ofs) + " input_size=" + itos(input_size));
}
#endif
- AudioServer::get_singleton()->unlock();
+ AudioDriver::get_singleton()->unlock();
}
void AudioStreamPlaybackMicrophone::mix(AudioFrame *p_buffer, float p_rate_scale, int p_frames) {
@@ -196,9 +196,9 @@ void AudioStreamPlaybackMicrophone::start(float p_from_pos) {
return;
}
- capture_ofs = 0;
+ input_ofs = 0;
- if (AudioServer::get_singleton()->capture_start() == OK) {
+ if (AudioDriver::get_singleton()->capture_start() == OK) {
active = true;
_begin_resample();
}
@@ -206,7 +206,7 @@ void AudioStreamPlaybackMicrophone::start(float p_from_pos) {
void AudioStreamPlaybackMicrophone::stop() {
if (active) {
- AudioServer::get_singleton()->capture_stop();
+ AudioDriver::get_singleton()->capture_stop();
active = false;
}
}
diff --git a/servers/audio/audio_stream.h b/servers/audio/audio_stream.h
index 58775c3d94..6d62eabec1 100644
--- a/servers/audio/audio_stream.h
+++ b/servers/audio/audio_stream.h
@@ -123,7 +123,7 @@ class AudioStreamPlaybackMicrophone : public AudioStreamPlaybackResampled {
friend class AudioStreamMicrophone;
bool active;
- unsigned int capture_ofs;
+ unsigned int input_ofs;
Ref<AudioStreamMicrophone> microphone;
diff --git a/servers/audio_server.cpp b/servers/audio_server.cpp
index ccb406bf9a..6ce07fb7b8 100644
--- a/servers/audio_server.cpp
+++ b/servers/audio_server.cpp
@@ -85,26 +85,26 @@ double AudioDriver::get_time_to_next_mix() const {
return mix_buffer - total;
}
-void AudioDriver::capture_buffer_init(int driver_buffer_frames) {
+void AudioDriver::input_buffer_init(int driver_buffer_frames) {
- const int capture_buffer_channels = 2;
- capture_buffer.resize(driver_buffer_frames * capture_buffer_channels * 4);
- capture_position = 0;
- capture_size = 0;
+ const int input_buffer_channels = 2;
+ input_buffer.resize(driver_buffer_frames * input_buffer_channels * 4);
+ input_position = 0;
+ input_size = 0;
}
-void AudioDriver::capture_buffer_write(int32_t sample) {
+void AudioDriver::input_buffer_write(int32_t sample) {
- if ((int)capture_position < capture_buffer.size()) {
- capture_buffer.write()[capture_position++] = sample;
- if ((int)capture_position >= capture_buffer.size()) {
- capture_position = 0;
+ if ((int)input_position < input_buffer.size()) {
+ input_buffer.write[input_position++] = sample;
+ if ((int)input_position >= input_buffer.size()) {
+ input_position = 0;
}
- if ((int)capture_size < capture_buffer.size()) {
- capture_size++;
+ if ((int)input_size < input_buffer.size()) {
+ input_size++;
}
} else {
- WARN_PRINTS("capture_buffer_write: Invalid capture_position=" + itos(capture_position) + " capture_buffer.size()=" + itos(capture_buffer.size()));
+ WARN_PRINTS("input_buffer_write: Invalid input_position=" + itos(input_position) + " input_buffer.size()=" + itos(input_buffer.size()));
}
}
@@ -154,8 +154,8 @@ AudioDriver::AudioDriver() {
_last_mix_time = 0;
_last_mix_frames = 0;
- capture_position = 0;
- capture_size = 0;
+ input_position = 0;
+ input_size = 0;
#ifdef DEBUG_ENABLED
prof_time = 0;
@@ -338,8 +338,6 @@ void AudioServer::_mix_step() {
E->get().callback(E->get().userdata);
}
- emit_signal("audio_mix_callback");
-
for (int i = buses.size() - 1; i >= 0; i--) {
//go bus by bus
Bus *bus = buses[i];
@@ -1059,8 +1057,6 @@ void AudioServer::update() {
E->get().callback(E->get().userdata);
}
-
- emit_signal("audio_update_callback");
}
void AudioServer::load_default_bus_layout() {
@@ -1079,7 +1075,6 @@ void AudioServer::finish() {
for (int i = 0; i < AudioDriverManager::get_driver_count(); i++) {
AudioDriverManager::get_driver(i)->finish();
- AudioDriverManager::get_driver(i)->clear_capture_buffer();
}
for (int i = 0; i < buses.size(); i++) {
@@ -1307,14 +1302,6 @@ void AudioServer::set_device(String device) {
AudioDriver::get_singleton()->set_device(device);
}
-Error AudioServer::capture_start() {
- return AudioDriver::get_singleton()->capture_start();
-}
-
-Error AudioServer::capture_stop() {
- return AudioDriver::get_singleton()->capture_stop();
-}
-
Array AudioServer::capture_get_device_list() {
return AudioDriver::get_singleton()->capture_get_device_list();
@@ -1330,18 +1317,6 @@ void AudioServer::capture_set_device(const String &p_name) {
AudioDriver::get_singleton()->capture_set_device(p_name);
}
-PoolVector<int32_t> AudioServer::get_capture_buffer() {
- return AudioDriver::get_singleton()->get_capture_buffer();
-}
-
-unsigned int AudioServer::get_capture_position() {
- return AudioDriver::get_singleton()->get_capture_position();
-}
-
-unsigned int AudioServer::get_capture_size() {
- return AudioDriver::get_singleton()->get_capture_size();
-}
-
void AudioServer::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_bus_count", "amount"), &AudioServer::set_bus_count);
@@ -1402,28 +1377,18 @@ void AudioServer::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_time_since_last_mix"), &AudioServer::get_time_since_last_mix);
ClassDB::bind_method(D_METHOD("get_output_latency"), &AudioServer::get_output_latency);
- ClassDB::bind_method(D_METHOD("capture_start"), &AudioServer::capture_start);
- ClassDB::bind_method(D_METHOD("capture_stop"), &AudioServer::capture_stop);
-
ClassDB::bind_method(D_METHOD("capture_get_device_list"), &AudioServer::capture_get_device_list);
ClassDB::bind_method(D_METHOD("capture_get_device"), &AudioServer::capture_get_device);
ClassDB::bind_method(D_METHOD("capture_set_device", "name"), &AudioServer::capture_set_device);
- ClassDB::bind_method(D_METHOD("get_capture_buffer"), &AudioServer::get_capture_buffer);
- ClassDB::bind_method(D_METHOD("get_capture_position"), &AudioServer::get_capture_position);
- ClassDB::bind_method(D_METHOD("get_capture_size"), &AudioServer::get_capture_size);
-
ClassDB::bind_method(D_METHOD("set_bus_layout", "bus_layout"), &AudioServer::set_bus_layout);
ClassDB::bind_method(D_METHOD("generate_bus_layout"), &AudioServer::generate_bus_layout);
ADD_PROPERTY(PropertyInfo(Variant::INT, "bus_count"), "set_bus_count", "get_bus_count");
ADD_PROPERTY(PropertyInfo(Variant::STRING, "device"), "set_device", "get_device");
- ADD_PROPERTY(PropertyInfo(Variant::STRING, "capture_device"), "capture_set_device", "capture_get_device");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "global_rate_scale"), "set_global_rate_scale", "get_global_rate_scale");
ADD_SIGNAL(MethodInfo("bus_layout_changed"));
- ADD_SIGNAL(MethodInfo("audio_mix_callback"));
- ADD_SIGNAL(MethodInfo("audio_update_callback"));
BIND_ENUM_CONSTANT(SPEAKER_MODE_STEREO);
BIND_ENUM_CONSTANT(SPEAKER_SURROUND_31);
diff --git a/servers/audio_server.h b/servers/audio_server.h
index 8037c7feed..13d6abbc8d 100644
--- a/servers/audio_server.h
+++ b/servers/audio_server.h
@@ -53,14 +53,14 @@ class AudioDriver {
#endif
protected:
- PoolVector<int32_t> capture_buffer;
- unsigned int capture_position;
- unsigned int capture_size;
+ Vector<int32_t> input_buffer;
+ unsigned int input_position;
+ unsigned int input_size;
void audio_server_process(int p_frames, int32_t *p_buffer, bool p_update_mix_time = true);
void update_mix_time(int p_frames);
- void capture_buffer_init(int driver_buffer_frames);
- void capture_buffer_write(int32_t sample);
+ void input_buffer_init(int driver_buffer_frames);
+ void input_buffer_write(int32_t sample);
#ifdef DEBUG_ENABLED
_FORCE_INLINE_ void start_counting_ticks() { prof_ticks = OS::get_singleton()->get_ticks_usec(); }
@@ -111,11 +111,9 @@ public:
SpeakerMode get_speaker_mode_by_total_channels(int p_channels) const;
int get_total_channels_by_speaker_mode(SpeakerMode) const;
- PoolVector<int32_t> get_capture_buffer() { return capture_buffer; }
- unsigned int get_capture_position() { return capture_position; }
- unsigned int get_capture_size() { return capture_size; }
-
- void clear_capture_buffer() { capture_buffer.resize(0); }
+ Vector<int32_t> get_input_buffer() { return input_buffer; }
+ unsigned int get_input_position() { return input_position; }
+ unsigned int get_input_size() { return input_size; }
#ifdef DEBUG_ENABLED
uint64_t get_profiling_time() const { return prof_time; }
@@ -386,17 +384,10 @@ public:
String get_device();
void set_device(String device);
- Error capture_start();
- Error capture_stop();
-
Array capture_get_device_list();
String capture_get_device();
void capture_set_device(const String &p_name);
- PoolVector<int32_t> get_capture_buffer();
- unsigned int get_capture_position();
- unsigned int get_capture_size();
-
AudioServer();
virtual ~AudioServer();
};