This is already done in `Node.add_child()` documentation, but
this copies the note in `Node.owner` for good measure.
(cherry picked from commit be1acf3b92)
As _buttons and _axes have both valid string and nullptr.
When iterating over them, if given key exists it will work correctly.
But if given key does not exist, it will end up with
String::operator=(nullptr). As String constructor from nullptr exists, I
use it.
(cherry picked from commit c77b710035)
Trailing slash of directories was mishandled, and incorrect derived paths
were formed. Stripping the slash fixes this.
(cherry picked from commit 2c00b90613)
The buffer upload size appears to have been incorrect for quite some time, which causes uploading from undefined memory.
(cherry picked from commit 3dc0e97d05)
This was comparing arrays, GCC 12 raises a warning for it:
```
drivers/gles2/shader_gles2.cpp: In member function 'bool ShaderGLES2::bind()':
drivers/gles2/shader_gles2.cpp:80:71: error: comparison between two arrays [-Werror=array-compare]
80 | if (active != this || !version || new_conditional_version.key != conditional_version.key) {
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gles2/shader_gles2.cpp:80:71: note: use unary '+' which decays operands to pointers or '&'component_ref' not supported by dump_decl<declaration error>[0] != &'component_ref' not supported by dump_decl<declaration error>[0]' to compare the addresses
```
(cherry picked from commit 76df26b110)
When compressed vertex positions are used in a blend shapes mesh, we
need to make sure we set the w-component of the position vector to 1.0
When octahedral compression is used on normals/tangents, they need to be
converted to cartesian floats to be used for blend shapes
This conversion also changes the number of components of that vertex
attribute, which caused issues because previously there was an
assumption that you had the same number of components in the blend shape
buffer as you did in the original mesh's buffer (which is not true for
oct norm/tang)
(cherry picked from commit 733a84f7a4)
Previously, conditionals set on the shader would change outside of the
_render_list function when blend shapes were used
This is an issue because the function keeps track of the previous shader
state to try to minimize state changes
Now we keep all this shader state change within the _render_list
function to ensure the saved previous state is correct
(cherry picked from commit 9988739332)
During room conversion, if a prefixed Spatial is converted to a Room / RoomGroup etc, when using instanced scenes the owner was incorrectly set, resulting in the instanced scene objects being duplicated.
This PR corrects this.
(cherry picked from commit 4ec4b5a60d)
Previously, only one line per 100 files was printed.
This also refactors the print statement to use Godot methods and
make it more informative overall.
(cherry picked from commit 8e57e5dc6a)