Fleshed out the "Optimize Mesh" options found in the mesh import UI
Gave a checkbox to every vertex attribute that can be compressed
Surfaced option to enable/disable Octahedral compression for
normal/tangent vectors
Also surfaces the vertex position compression option which previously
inaccessible because the defaults did not compress vertex positions
Supports all current importers (obj, fbx, collada, gltf)
Sets `AlignOperands` to `DontAlign`.
`clang-format` developers seem to mostly care about space-based indentation and
every other version of clang-format breaks the bad mismatch of tabs and spaces
that it seems to use for operand alignment. So it's better without, so that it
respects our two-tabs `ContinuationIndentWidth`.
- Make the Debugger bottom panel menu more prominent when
there are errors or warnings by adjusting the text color.
- Add some spacing to the right of the error/warning icon
for better visual appearance.
This reduces the size of the editor binaries significantly, as we otherwise
embed all WIP translations, including ones with very low completion ratios,
and end up paying for the size of all `msgid`s for each locale.
Cf. https://github.com/godotengine/godot-proposals/issues/3421 for details.
The thresholds used are:
- 30% for the editor interface (should already include most common strings
while more obscure ones like UndoRedo action names might be untranslated).
- 10% for the class reference: this is a HUGE resource and 10% is already
a lot of useful content, especially if focused on the most used APIs.
For 3.x, we also exclude languages that require complex text layout support
to be displayed properly.
This currently reduces the size of the editor binary by 17% on Linux.
The list will be synced manually every now and then.
Fixesgodotengine/godot-proposals#2051.
Relates to godotengine/godot-proposals#1215.
Implements shortucts for adjusting the camera rotation in 15-degree
increments, similar to Blender.
I did not add corresponding menu entries for these, as I didn't feel
like they would be too useful from a menu, and didn't want to make the
menu too long.
(cherry picked from commit cb15ec20bb)
Whenever we change the name (or remove) generated cpp files with the `.gen.cpp`
extension, users run into build issues when switching between branches (i.e.
switching before and after the name change/removal). This is because we glob
`*.cpp` so if a now-obsolete file from a previous build is present, we'll
include it too, potentially leading to bugs or compilation failure (due to
missing headers or invalid code).
So globbing patterns in `add_source_files` will now skip files ending with
`.gen.cpp`, which should instead be passed explicitly where they're used.
(cherry picked from commit c133480531)
- Increase drag-and-drop snapping to 50 units
(from 10 units).
- Increase Snap Object to Floor maximum height to 500 units
(from 20 units).
- Increase Snap Object to Floor negative margin to 1 unit
(from 0.2 units).
(cherry picked from commit 7a3d0b79b4)
Physical Key should be used for most game inputs as it allows
keys to work on non-QWERTY layouts out of the box.
This is especially important for WASD movement layouts.
In contrast, remapped (non-physical) keys are mainly useful in
non-game applications, where shortcuts are expected to match a
precise letter rather than a location on the keyboard.
And do the dedent and stripping for both translated and
non-translated strings for consistency, and so that we
don't need to do it at the call site.
(cherry picked from commit a16031beb6)
- Parse `.po` files from `doc/translations/*.po` like already done
with `editor/translations/*.po`.
- Add logic to register a doc translation mapping in `TranslationServer`
and `EditorSettings`.
- Add `DTR()` to lookup the doc translation mapping (similar to `TTR()`).
Strings are automatically dedented and stripped of whitespace to ensure
that they would match the translation catalog.
- Use `DTR()` to translate relevant strings in `EditorHelp`,
`EditorInspector`, `CreateDialog`, `ConnectionsDialog`.
- Small simplification to `TranslationLoaderPO`, the path argument was
not really meaningful.
(cherry picked from commit 4857648a16)
This can be used to free some CPU cores when baking lightmaps.
When using fewer CPU cores, lightmap baking is slower but background
tasks aren't slowed down as much.
This feature is enabled by default, but it can be disabled in the editor
settings in case it interferes with other uses of the extra buttons
(such as push-to-talk in a VoIP program).
When clicking on a resource field in the inspector dock, you now have
the "Quick Load" option in addition to "Load". This opens a QuickOpen
dialog allowing the user to type in a phrase to quickly locate the
desired resource (similar to "Quick Open Scene").
In my experience, this is much faster than clicking through the File
Dialog.
Relates to godotengine/godot-proposals#346.
(cherry picked from commit 470b94fe22)
Unnamed gizmos should be avoided, so this should help editor plugin
authors resolve issues with gizmo naming if they forgot to override
the function.
(cherry picked from commit e5406ba952)
- Use a colon instead of parentheses and a comma to reduce visual
clutter.
- Pad the line number with 4 spaces to account for scripts longer
than 999 lines.
(cherry picked from commit 1e8976fcb5)
Since this avoids accidentally placing 2D nodes at subpixel positions,
this results in more crisp visuals by default, even when pixel snapping
is disabled in the project settings.
(cherry picked from commit c03e7c2dde)
This makes property casing consistent with the editor.
If property capitalization is disabled in the Editor Settings,
the remote inspector will also disable capitalization.
(cherry picked from commit 854f328517)
This makes setting up AudioStreamPlayer3D nodes for Doppler playback
a bit easier.
- Move AudioStreamPlayer3D's Doppler Tracking property outside a group
since the group only had 1 property, which resulted in unnecessary
folding in the inspector.
- Put the AudioStreamPlayer3D Playing and Autoplay properties higher up
in the inspector since these are likely to be modified often.
The icon was present in `editor/icons/`, but it was never implemented
in the editor gizmos code.
This also removes some unused gizmo drawing code (overridden methods
that are no longer called anywhere).
The default orbit sensitivity was decreased to account for this change.
Rotational inertia (orbit + freelook) was disabled by default due to
known issues.
This also removes the need for separate manipulation inertia settings,
as the default settings are more responsive.
This is already supported by FreeType, but it wasn't exposed.
Adding support for WOFF2 would require linking a Brotli decompression
library in Godot, so only WOFF1 is exposed here.
- Display the scene name, then the project name, then "Godot Engine".
- Display the "modified" mark before anytihng else.
Both of these changes ensure important, project-specific elements
can always be seen in the task bar which may truncate strings due to
its low per-item width.
- Use "Unnamed Project" if the project has no name (similar to the
Project Manager).
- Allow snapping bezier handles to the timeline.
- Allow precise snapping when holding Shift for keyframes and handles.
- Previously, it was only allowed for seeking the timeline.
- This change also impacts the animation track editor,
not just the bezier editor.
- Invert the Ctrl + mouse wheel behavior to match the zoom direction
in the animation track editor.
- Increase the line spacing between the "Time:" and "Value:" texts
to improve readability.
- Tweak box selection styling to match the animation track editor.
- Adjust line widths for hiDPI displays.
(cherry picked from commit 4a4d977bea)
When using non-English UI, there were `Index p_idx = -1 is out of bounds (items.size() = 2).`
errors on on startup if any text file is open in the script editor. And clicking the Standard
highlighter option does not check that menu item.
This is caused by `TextEditor` searching for that menu item with unlocalized text. As already
did in `ScriptTextEditor`, this PR stores and searches for menu item with `TTR`ed text.
* Make Undo/Redo menu items disabled when clicking it does nothing.
* Context menu of `TextEdit`
* Context menu of `LineEdit`
* Editor's Scene menu
* Script editor's Edit menu and context menu (for Script and Text)
* Make editor undo/redo log messages translatable.
* Mark `UndoRedo`'s `has_{un,re}do()` methods as `const`.
* Expose `TextEdit`'s `has_{un,re}do()` to scripts since `{un,re}do()` are already available.
Add framework for supporting geometrical occluders within rooms, and add support for sphere occluders.
Includes gizmos for editing.
They also work outside the portal system.
This is only available on the GLES3 backend.
This can be useful for advanced shaders, but it should generally
not be enabled otherwise as full precision has a performance cost.
For general-purpose rendering, the built-in debanding filter should
be used to reduce banding instead.
Updating continuously should only be enabled for troubleshooting
purposes, as it uses a lot of CPU/GPU power.
The update spinner is now displayed in red when the Update Continuously
editor setting is enabled.
(cherry picked from commit a97c5b50db)
For the time being we don't support writing a description for those, preferring
having all details in the method's description.
Using self-closing tags saves half the lines, and prevents contributors from
thinking that they should write the argument or return documentation there.
(cherry picked from commit 7adf4cc9b5)
This pull request fixes an issue where the "View" menu in the 3D view toolbar would close when you selected either the "View Origin" or "View Grid" checkboxes. This was inconvenient and wasted time by making you have to reopen the menu in order to get to other settings anytime you changed this.
(cherry picked from commit 3ffd75107d)
This pull request fixes an issue where searches using the "Find in Files" function would include folders with `.gdignore` files in them. The editor is supposed to ignore directories with these files in them altogether.
(cherry picked from commit 658b152bd8)
- Use the ° symbol instead of "deg" to reduce clutter.
- Round the displayed lengths to only one decimal instead of two
to further reduce clutter.
- Don't make the `px` suffix localizable, as it isn't localizable
anywhere else in the editor.
(cherry picked from commit 026aea681d)
I had forgotten to add a call to update_portal_tools() at the end of the SpatialEditor constructors. This ensures that the portal UI is off by default in normal use without portals.
This PR makes the 'convert rooms' button permanently on the toolbar and accessible whichever node is selected, so you can convert rooms without having to select the RoomManager first.
It also adds a togglable item 'view portal culling' to the 'View' menu which is a simple way of setting the RoomManager 'active' setting without the RoomManager being the selected node.
Both of these have keyboard shortcuts, which should make it much faster to reconvert rooms and edit.
In addition there the string in the 'Perspective' Listbox is modified to show [portals active] when portal culling is operational, for visual feedback. This is updated when you change modes, and when the rooms are invalidated.
This makes it easier to notice that some menu items only appear when
specific nodes are selected.
This change applies to both 2D and 3D editors, including both plugin-based
menus and the hardcoded 2D layout/animation contextual menus.
- Now able to display up to 32 layers in physics (still 20 for render)
- Adjustable grid size to fit available space in dock
- Expansion icon to display more layers vertically
- Layer numbers in cells to help with selection
Implement Octahedral Compression for normal/tangent vectors
*Oct32 for uncompressed vectors
*Oct16 for compressed vectors
Reduces vertex size for each attribute by
*Uncompressed: 12 bytes, vec4<float32> -> vec2<unorm16>
*Compressed: 2 bytes, vec4<unorm8> -> vec2<unorm8>
Binormal sign is encoded in the y coordinate of the encoded tangent
Added conversion functions to go from octahedral mapping to cartesian
for normal and tangent vectors
sprite_3d and soft_body meshes write to their vertex buffer memory
directly and need to convert their normals and tangents to the new oct
format before writing
Created a new mesh flag to specify whether a mesh is using octahedral
compression or not
Updated documentation to discuss new flag/defaults
Created shader flags to specify whether octahedral or cartesian vectors
are being used
Updated importers to use octahedral representation as the default format
for importing meshes
Updated ShaderGLES2 to support 64 bit version codes as we hit the limit
of the 32-bit integer that was previously used as a bitset to store
enabled/disabled flags