get_cursor_shape() is used in cases where a Control displays different cursors in different areas.
There is no need to set the default cursor shape on every mouse move event.
Fix minor issue with selection order.
(cherry picked from commit 0d96dbcb2a)
This provides easier visual grepping.
Incindentally, this change will force constant editor redrawing whenever
the View FPS option is enabled in the 3D viewport settings. This is
required to get an accurate FPS display in 3.x.
Otherwise, the FPS counter shot all the way up to 145 FPS
whenever nothing was changing on screen (even if actual
performance was much lower).
Most frames there will be no change in project settings, and it makes no sense to read settings every frame in case of changes, as a large number of string compares are involved.
This PR adds a signal to ProjectSettings that can be subscribed to in order to keep local settings up to date with ProjectSettings.
In addition a function `ProjectSettings::has_changes()` is provided for objects outside the signal system (e.g. Rasterizers).
When editor continuous redraws is switched off, the editor only redraws when a redraw_request was issued by an element in the scene. This works well in most situations, but when scenes have dynamic content they will continuously issue redraw_requests.
This can be fine on high power desktops but can be an annoyance on lower power machines.
This PR splits redraw requests into high and low priority requests, defaulting to high priority. Requests due to e.g. shaders using TIME are assigned low priority.
An extra editor setting is used to record the user preference and an extra option is added to the editor spinner menu, to allow the user to select between 3 modes:
* Continuous
* Update all changes
* Update vital changes
Pressing `ctrl+z` after clicking "Create Physical Skeleton" will now
undo the creation of all physical bones by that operation.
Previously undo would remove one bone at a time.
Fixes https://github.com/godotengine/godot/issues/55351.
(cherry picked from commit c9cce53983)
Change the entire navigation system.
Remove editor prefix from nav mesh generator class. It is now used for baking
at runtime as well.
Navigation supports obstacle avoidance now with the RVO2 library.
Nav system will also automatically link all nav meshes together to form one
overall complete nav map.
This allows configuring orbit sensitivity and freelook sensitivity
independently from each other. Often, it's needed to use a lower
freelook sensitivity compared to the orbit sensitivity.
Also, when using a FOV scale lower than the default
(using Alt + mouse wheel), the mouse sensitivity is now scaled
to make it easier to use freelook to look at distant objects.
This does not affect orbiting and panning.
Many assets include links in the description.
This change enables selection for the links,
and other information such as version numbers,
to be copied/pasted.
(cherry picked from commit 814a4ee434)
* Adds proxy related methods for `HTTPClient` and `HTTPRequest`
* Adds `network/http_proxy/{host,port}` editor settings
* Makes AssetLib and Export Template Manager proxy aware
This commit was created by merging the commits presented in #39255 for
the GSoC 2020 VCS Improvement project
VCS: Make EditorVCSInterface store less amount of internal state
VCS: Add force push checkbox + more frequent VCS updates
Add force push checkbox in the Commit dock. Also add some missing
opportunities for checking the VCS state again on from UI inputs
VCS: Fix script contents not being updated on merge conflict
VCS: Add branch creation VCS interface calls
VCS: Add VCS remote creation and remote selection menus
VCS: Show more commit information + Fix truncated commit offsets
VCS: Make VCS less noisy + Fix diff view refreshes
VCS: Fix mismatched argument names in VCS helpers
VCS: Add SSH transport support for remote operations
Also, moves the editor's VCS settings registrations to
project_settings.cpp and editor_settings.cpp
VCS: Change TTR() to vformat() for branch and remote removal text
VCS: Add VCS branch icon instead of using Tree node icon
Co-authored-by: @ChronicallySerious
This makes it possible to change the branch of the documentation that
URLs are pointing to without having to modify all class reference
files.
In the XML class reference, the `$DOCS_URL` placeholder should be used,
and will be replaced automatically in the editor and when generating
the RST class reference.
The documentation branch string is set in `version.py`.
Co-authored-by: Hugo Locurcio <hugo.locurcio@hugo.pro>
(cherry picked from commit 5341e6010e)
This prevents the viewport from going upside-down.
This was suggested at:
https://github.com/godotengine/godot/pull/51984#issuecomment-948614191:
> For 3.4, I think we can just clamp the angle value when using the
> camera orbiting shortcuts. We can investigate what to do with panning
> and freelook in 3.5 and 4.0.
(cherry picked from commit 3bd7c4f2a9)
When comparing different graphics settings or optimizations,
this makes precise measurements and frametime comparisons easier.
This also makes the editor FPS display use `pad_decimals()`
for consistency with the implementation in `master`.
- Locking nodes can now be done by pressing Ctrl + L, and unlocking with
Ctrl + Shift + L.
- Grouping nodes is now done by pressing Ctrl + G, and ungrouping with
Ctrl + Shift + G (similar to Inkscape).
- Toggling the grid is now done by pressing the `#` key
(also similar to Inkscape). This change was needed as Ctrl + G
now groups selected nodes.
Different shortcuts are used for the lock/unlock and group/ungroup
actions, so that the shortcuts are idempotent.
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.
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)
- 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)
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).
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)
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 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.