Add scene side discrete level of detail.
New node `LOD` for UI, and `LODManager` within `World` for automatically updating child visibilities based on distance from cameras.
As many open source projects have started doing it, we're removing the
current year from the copyright notice, so that we don't need to bump
it every year.
It seems like only the first year of publication is technically
relevant for copyright notices, and even that seems to be something
that many companies stopped listing altogether (in a version controlled
codebase, the commits are a much better source of date of publication
than a hardcoded copyright statement).
We also now list Godot Engine contributors first as we're collectively
the current maintainers of the project, and we clarify that the
"exclusive" copyright of the co-founders covers the timespan before
opensourcing (their further contributions are included as part of Godot
Engine contributors).
Also fixed "cf." Frenchism - it's meant as "refer to / see".
Backported from #70885.
Makes the Perspective menu consistent with the View menu in the 3D
viewport. This allows for quicker inspection of the scene, and makes
missclicks more forgiving.
(cherry picked from commit e3ab344af9)
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).
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.
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`.