The 2D editor grid toggle shortcut has been changed to use
`KEY_MASK_CMD` for consistency. This means it will now use Cmd
on macOS instead of Ctrl.
(cherry picked from commit 2cc053c64b)
Since lightmap baking can take a very long time, printing the time
spent can be useful for users tweaking the lightmap settings
to optimize bake times.
Completing lightmap baking will also request attention, which is
useful if you're doing something else while waiting for lightmaps
to bake.
This is an older, easier to implement variant of CAS as a pure
fragment shader. It doesn't support upscaling, but we won't make
use of it (at least for now).
The sharpening intensity can be adjusted on a per-Viewport basis.
For the root viewport, it can be adjusted in the Project Settings.
Since `textureLodOffset()` isn't available in GLES2, there is no
way to support contrast-adaptive sharpening in GLES2.
This backports the improved RayCast debug drawing functionality
from the `master` branch.
`ArrayMesh.clear_surfaces()` was also backported from the `master`
branch and exposed because the new debug drawing code requires it.
Previously, the wrong tooltip was shown.
This also tweaks the tooltips' texts to be clearer and remove
references to "game" (since Godot is used for more than just games).
(cherry picked from commit d1c5dd5b68)
The editor only needs to redraw when the camera is moving.
This helps preserver battery life on laptops when using freelook,
especially with the toggle mode (Shift + F).
(cherry picked from commit 21807f8d88)
The default value is 80. The hard line length guideline's default column
has been moved to 100 to account for the new soft line length guideline.
It can be disabled by setting its value to the same column as the
hard line length guideline.
This could occur when attempting to save project settings when
no scenes or scripts are open (which is common in a brand new project).
(cherry picked from commit 16876bec76)
- Tweak the dialog messages to be more informative.
- The "Saved N modified resources" dialog is not a warning per se,
so make it more explicit.
(cherry picked from commit 39f9b92f54)
This makes it possible for external editors to pick up the changes.
Most modern editors should reload the file automatically,
but some older/lightweight editors may ask the user instead
(or only warn after trying to save in the external editor).
This closes#41283.
(cherry picked from commit 0ade686601)
- Make the timeline indicator thicker and with an indicator triangle,
similar to the animation editor timeline.
- Add Space bar shortcut to play/pause the audio preview.
- Only seek when clicking or dragging with the left mouse button,
not other mouse buttons.
(cherry picked from commit a50a81b703)
As a bonus, to have consistency between use Beziers and create insert tracks, use Beziers also gets a default via editor settings that is used when the confirmation dialog is disabled, instead of just falling back to creating non-Bezier tracks.
We've been using standard C library functions `memcpy`/`memset` for these since
2016 with 67f65f6639.
There was still the possibility for third-party platform ports to override the
definitions with a custom header, but this doesn't seem useful anymore.
Backport of #48239.
When there is no selection, the camera will center around the
world origin.
This helps people get back to the world center if they haven't added
any nodes yet.
(cherry picked from commit fc055e1993)
When ctrl-clicking in the code editor, the view will now be centered on the function result.
Also replaces a circumstance where goto_line_centered should be used.
(cherry picked from commit 2b775bd698)
The changes made in this commit refresh the URL OptionButton when editor settings are modified.
No need to restart any more for the changes to appear in the Asset Library.
Fix#46977
(cherry picked from commit 6525d74623)
ALT key modifier was hardcoded is node_3d_editor_plugin.cpp and didn't take editor settings into account.
Fix#46973
(cherry picked from commit 31077d875e)
- Based on C++11's `atomic`
- Reworked `SafeRefCount` (based on the rewrite by @hpvb)
- Replaced free atomic functions by the new `SafeNumeric<T>`
- Replaced wrong cases of `volatile` by the new `SafeFlag`
- Platform-specific implementations no longer needed
Co-authored-by: Hein-Pieter van Braam-Stewart <hp@tmm.cx>
This commit adds a view-dependant fade to the 3D viewport grid. It fades out
at steep view angles to hide the solid regions that appear far from the camera.
I also included a fade to hide the grid borders.
I added some improvements to the dynamic grid when the camera is in orthogonal mode.
It properly handles zoom now, and the grid center is now set to the intersection point
between the grid plane and the camera forward ray, keeping the grid
always visible.
(cherry picked from commit 73e62dffb9)
Cinematic preview enables the Camera3D preview automatically.
When previewing a Camera3D, the rotation gizmo isn't displayed as
it can't be used.
(cherry picked from commit fa1d853eeb)
Completely re-write the lightmap generation code:
- Follow the general lightmapper code structure from 4.0.
- Use proper path tracing to compute the global illumination.
- Use atlassing to merge all lightmaps into a single texture (done by @RandomShaper)
- Use OpenImageDenoiser to improve the generated lightmaps.
- Take into account alpha transparency in material textures.
- Allow baking environment lighting.
- Add bicubic lightmap filtering.
There is some minor compatibility breakage in some properties and methods
in BakedLightmap, but lightmaps generated in previous engine versions
should work fine out of the box.
The scene importer has been changed to generate `.unwrap_cache` files
next to the imported scene files. These files *SHOULD* be added to any
version control system as they guarantee there won't be differences when
re-importing the scene from other OSes or engine versions.
This work started as a Google Summer of Code project; Was later funded by IMVU for a good amount of progress;
Was then finished and polished by me on my free time.
Co-authored-by: Pedro J. Estébanez <pedrojrulez@gmail.com>
fix for issue #44282
AABB for collision geometry was being calculated based on parent nodes transform without consideration for collision geometries translation.
Also hopefully clarified logic for selecting starting point for ray cast
(cherry picked from commit 4f171afecc)
Happy new year to the wonderful Godot community!
2020 has been a tough year for most of us personally, but a good year for
Godot development nonetheless with a huge amount of work done towards Godot
4.0 and great improvements backported to the long-lived 3.2 branch.
We've had close to 400 contributors to engine code this year, authoring near
7,000 commit! (And that's only for the `master` branch and for the engine code,
there's a lot more when counting docs, demos and other first-party repos.)
Here's to a great year 2021 for all Godot users 🎆
(cherry picked from commit b5334d14f7)
- Brighten gizmos when highlighted to make the difference between a
non-highlighted and a highlighted gizmo more visible.
- Tweak the manipulator gizmo size property hint.
(cherry picked from commit 8522ac7711)
fix for issue #44231: snap_selected_nodes_to_floor() results in an editor
crash when a child collisionshape has invalid shape object
(cherry picked from commit 52f6e0b5ad)
- The grid is now infinite, it follows the camera.
- The grid is now dynamic, if you zoom in and out, the grid subdivides,
expands, and fades.
- You can now enable grid planes for the XY and YZ planes. Only the flat
XZ plane is enabled by default. Each plane is independently dynamic
of the others.
- The default grid size has been increased to 200, and the maximum
has been increased to 2000. At 1000, the grid mostly looks edgeless.
- If you set the division level max and min to the same value then
the grid does not expand or subdivide, but instead stays the same size
and just follows the camera. Also, if these values are the same,
the bias value does nothing.
- If you want to have Blender-like behavior, set max to 1, min to 0,
and set the bias to a really low value. You may also wish to increase
the grid size if you have a small bias.
Co-authored-by: Aaron Franke <arnfranke@yahoo.com>
- Draw two boxes slightly offset from each other to give the illustion
of a thicker outline.
- Decrease the offset compared to the 3D node's AABB to give a more
accurate representation of its size.
- Make the box fully visible instead of only displaying the corners.
- Draw a x-ray version of the box that's more translucent, but visible
through walls. This helps make the box more visible while still
having a sense of depth.
- Use an orange color similar to the 2D editor.
Undo/redo log messages will now specify the modified node's
name (or number of modified nodes if several were modified).
On top of that, the new position/rotation/scale/pivot offset
will also be mentioned in the message.
(cherry picked from commit 996740de43)
Hide the back sides of the rotation gizmo circles and add a white
outline for better visualization of the rotation "sphere".
This is a 3.2 backport of @JFons work on the master branch; all credit
goes to him.
It can be enabled in the Project Settings
(`rendering/quality/filters/use_debanding`). It's disabled
by default as it has a small performance impact and can make
PNG screenshots much larger (due to how dithering works).
As a result, it should be enabled only when banding is noticeable enough.
Since debanding requires a HDR viewport to work, it's only supported
in the GLES3 backend.
Treats application unfocus as a mouse release for
TOOL_PAINTING, by finishing the undo state and
resetting the tool. Also sets a flag to prevent extra
lines from being drawn when the application is refocused.
fixes#42398, fixes#24970
(cherry picked from commit 70a4cd1afe)
Batching is mostly separated into a common template which can be used with multiple backends (GLES2 and GLES3 here). Only necessary specifics are in the backend files.
Batching is extended to cover more primitives.
Entering text will now start searching automatically after 0.25 seconds
have passed (debounce delay).
This removes the need for a separate Search button.
(cherry picked from commit 6055db2a72)
Fixed issue where using arrows to change the selected tile would not reach all subtiles in an autotile, only going up to the second to last row and column.
Patch for #21755. Node scaling arrows pointed the wrong way when nodes were rotated. Ammend: made math cleaner.
Simplified expression
Changes suggested by Aaron Franke
Co-authored-by: Aaron Franke <arnfranke@yahoo.com>
(cherry picked from commit 603febdbfe)
When changing the texture region for a StyleBox, the regions was not updating automatically in the Texture editor.
(cherry picked from commit 7d7727bade)
Fixes#34509 where the theme editor would push away the inspector
if something like "hseperation" is really high.
Now `set_enable_h_scroll` is true which fixes this.
(cherry picked from commit d602be077d)
Ensures that the editor preview when placing a tile on a TileMap takes
into account the transformation of the TileMap. Previously, only the
origin of the Tile was transformed, but not its orientation or
scaling.
(cherry picked from commit cf04aabef1)
This removes:
```
ERROR: get_breakpoints: Condition ' base.begins_with("local://")
```
while running a project with blank scripts caused by deleting
or moving, or built-in scripts which are not yet saved within a scene
on running a project.
(cherry picked from commit 1c70a33d9c)
Methods were being called with InputEventMouseMotion instead of InputEventPanGesture, and they were null.
Fixesgodotengine/godot#16181 on the master branch
(cherry picked from commit 394a7826be)
A static function is added to EditorNode which allows for filename
disambiguation given a list of filenames and the corresponding list of
absolute paths for those files. This function is then used to
disambiguate scene and script tabs in the editor.
(cherry picked from commit 4285211f40)
This change avoids the editor to freeze for several seconds when a
project with lots of scripts is loaded in the editor.
It focuses on a few heavy operations previously executed on all
previously loaded scripts:
- Initialize script resource (script validation/parsing) only
on focus
- ScriptTextEditor: code editor and edit menu are added to the
scene only on focus
- Add to recent scripts only when opening new scripts
(load/save scene metadata)
`ConvexPolygonShape2D` and `ConcavePolygonShape2D` are only meant to be
used directly in code and not in the editor for physics-based use cases
specifically.
Developers are advised to use `CollisionPolygon2D` instead, which does
generate those shapes under the hood, handling polygon convexivity,
proper orientation etc.
(cherry picked from commit dc446203be)
Fix to ensure that undo/redo works when painting bones in the Polygon2D
UV editor. Previously, bone painting would continue silently in the
background, because a mouse click signalling the end of an edit would
not be appropriately dealt with.
(cherry picked from commit 6e60aa3876)
This fixes issue #39844, where the confirmation dialog when a user
attempts to close an unsaved script did not actually save it even after
clicking "Save."
(cherry picked from commit d2a5b92e9b)
Ensures that closure of Polygon2D in the editor takes into account
Grid Snap if enabled. Does this by comparing the polygon start with
grid snap applied to mouse click location. Note: transformation is
applied in order to deal with different editor zoom levels.
(cherry picked from commit b8d55b244a)
Modifies polygon auto-completion based on UV editor scale, in order
to enable finer grained control for the user. Enables selection of
points closer than the current threshold of 8 pixels.
(cherry picked from commit 69d0d89214)
Ensures no error is issued when attempting to preview a resource that
may be scaled down to <1 pixel when resizing to fit the thumbnail.
(cherry picked from commit c7a8dc7bb9)
Occurred when selecting polygon collision mode, then drawing a single point, then selecting rectangle mode, and finally trying to select a rectangle.
(cherry picked from commit 7850d0316f)