The freelook shortcuts now use the action system by proxy. This allows the actions system to be leveraged for input checking. When the shortcut changes, the respective action is updated.
- Tweak colors to be less saturated and more balanced (in terms of hue).
The cool blue sky is balanced by a warm brown ground,
which makes reflections look closer to how they'd look like when using
an HDRI panorama texture.
- Make the ground color dark on both ProceduralSkyMaterial and
PhysicalSkyMaterial to reduce indoor light leaking, especially
when using GI.
- Tweak the PhysicalSkyMaterial colors to be as close as possible
to ProceduralSkyMaterial (with the default sun orientation).
- Tweak editor environment defaults to be identical to the default
ProceduralSkyMaterial colors. Previously, the default editor sky
color was different from the colors of a newly created
ProceduralSkyMaterial resource.
Both new skies were tested without GI, with SDFGI and with VoxelGI.
They were tuned to look best when using ACES tonemapping with a
whitepoint set to 6, but they still look good with other
tonemapping operators.
After starting an instant transform and cancelling it, the mouse was
blocked because cancel_transform did not set _edit.instant back to
false.
This refactors all the cleanup into a separate function that both
cancel_transform and commit_transform can call.
Fixes#57868.
This reverts commit 4234a72b25.
There are some errors which are problematic to have in 4.0 alpha 2.
The PR can be redone with fixes and merged again after the dev release.
Fixes#57839.
* Get rid of deadzones.
* Make it easier to select rotation handles at very oblique angles.
* Handle rotation for axes that are perpendicular to the camera.
This reverts commit a988fad9a0.
As discussed in #57725 and clarified in #57788, `SNAME` is not meant to be used
everywhere but only in critical code paths. For theme methods specifically, it
was by design that only getters use `SNAME` and not setters.
- Rename "Directional Shadow" to "Directional Shadow Map"
to distinguish it from the "Directional Shadow Splits" option.
- Rename "Disable LOD" to "Disable Mesh LOD" as it only affects
automatic mesh LOD, not visibility ranges.
- Rename "GI Buffer" to "VoxelGI/SDFGI Buffer" as it doesn't cover
LightmapGI or SSIL.
- Rename the cluster options to match the respective node names.
This commit adds a condition to VariantCaster that casts Variants of type OBJECT to any type T, if T is derived from Object.
This change enables a fair bit of code cleanup. First, the Variant implicit cast operators for Node and Control can be removed, which allows for some invalid includes to be removed. Second, helper methods in Tree whose sole purpose was to cast arguments to TreeItem * are no longer necessary.
A few small changes also had to be made to other files, due to the changes cascading down all the includes.
See godotengine/godot-proposals#1215.
This adds shortcuts for blender-inspired transforms, where you can press
the key and immediately be transforming an object without holding the
mouse. Clicking commits the transformation, ESC aborts it.
This is inspired by Blender's G(rab)/R(otate)/S(cale) shortcuts, but I
decided not to add default bindings as `S` is already bound to the
regular scale tool, and it might be confusing to only bind some of them.
While actively using a transform tool, you can press X/Y/Z to lock the
transform to an axis or (shift)+X/Y/Z to constrain the transform to a
plane. These keys are only processed if you have a transform tool
(translate/rotate/scale) active _and_ the mouse button is held.
Pressing XX/YY/ZZ will lock the transform to a local (rather than
global) axis.
This is achieved by temporarily toggling the local transform button. I
did this (vs handling it in the transform functions) for 3 reasons:
- Transform logic for translate/rotate (but not scale) appears to be
tightly coupled to the gizmo
- This ensures the gizmo changes to indicate we're transforming
locally/globally
- Toggling the button state in the UI also gives the user feedback about
the nature of the transform.
The original state of the button is reset when the transform completes.
Pressing the `spatial_editor/cancel_transform` shortcut key during a
transform operation will cancel the transform and reset the objects back
to their original transforms.
This functionality was already accessible by pressing RMB during a
transform, however:
- ESC is more familiar to blender users, and a more common "cancel" key
in general.
- Given you must hold LMB during a transform, pressing RMB as well is
clumsy if not impossible (on a laptop trackpad).
Most of the custom logic to handle special keying cases is now inside
the AnimationPlayerEditorPlugin.
The EditorInspector now emits a signal when inspecting a new object.