Commit Graph

156 Commits

Author SHA1 Message Date
passivestar a9ef6cd418 Improve viewport rotation gizmo drawing 2024-06-26 23:33:24 +04:00
Rémi Verschelde 25b17bd245
Merge pull request #92188 from SaracenOne/ownerless_node_select
Disallow selection of ownerless nodes
2024-05-28 15:48:54 +02:00
Saracen 596026a1ee Disallows selection of ownerless nodes:
Attempts to select first node owned by the edited scene instead.
2024-05-28 11:13:40 +01:00
Hugo Locurcio 60084dcc2c
Prevent label width from flickering rapidly in editor frametime panel
This also improves the background display by drawing a single background
for all 3 labels. This avoids visible corners between each label.
2024-05-23 20:50:25 +02:00
Haoyu Qiu e5c321448e Create AudioStreamPlayer when dropping AudioStream
- Create AudioStreamPlayer if dropped in between nodes in the Scene dock
- Create AudioStreamPlayer2D if dropped into 2D editor
- Create AudioStreamPlayer3D if dropped into 3D editor
2024-05-19 20:26:04 +08:00
Rémi Verschelde 1069d7b7c6
Merge pull request #88343 from Riteo/warped-mouse-float
Handle warped mouse motion as floating point
2024-05-06 15:14:46 +02:00
Aaron Franke 1bcbbe96c4
Organize existing code for editor plugins 2024-04-27 11:59:58 -07:00
Rémi Verschelde 8516304b82
Merge pull request #89847 from GreenCrowDev/missing-bezier-handles
UX and stability improvements for `Path3D` node
2024-04-04 14:31:49 +02:00
jsjtxietian 20f4a5d03a Fix path3d's pick works incorrectly when viewport is in half resolution 2024-03-26 17:24:41 +08:00
matricola787 5c83d14698 UX and stability improvements for Path3D node 2024-03-25 16:51:37 +01:00
David Luevano Alvarado 71426d0f5c
Fix wrong undo-redo action when dropping files containing circular dependencies 2024-03-07 12:20:49 -06:00
Muller-Castro 1638c1b28f Add const lvalue ref to editor/* container parameters 2024-02-26 15:28:15 -03:00
Rémi Verschelde fd788d7df9
Merge pull request #88584 from ryevdokimov/hide_grid_per_viewport
Add ability to hide grid per viewport
2024-02-23 22:19:01 +01:00
Robert Yevdokimov df431542c3 Add ability to hide grid per viewport 2024-02-23 10:25:29 -05:00
pohy 6efff2cd06 Use subgizmos instead of handles for Path3D curve points 2024-02-22 22:33:34 +01:00
Riteo 759a32eb0c Handle warped mouse motion as floating point
Fixes certain issues where sub-pixel motions would get discarded while
the mouse is captured, such as when free look is enabled in the editor
(at least when turned on while holding right click).

Very slightly compat breaking, as actual public APIs are changed,
although with "compatible" types (Point2i->Point2).
2024-02-14 22:37:51 +01:00
Robbie Cooper 30914c0434 Fix bounding boxes
Each time an AABB is rotated, it gets bigger. That means opposite rotations don't cancel out.

The previous implementation repeatedly rotates children AABBs as it climbs up the tree. This often resulted in selection boxes looking bigger than their contents.

This implementation calculates and applies a single final transformation to each AABB before it is merged with the others. After merging, there are no additional rotations, so AABBs remain accurate.

Co-Authored-By: Robert Yevdokimov <105675984+ryevdokimov@users.noreply.github.com>
2024-02-02 07:59:47 -05:00
Yuri Sizov 95b27fe8c7 Reorganize code related to editor theming
This change introduces a new EditorThemeManager class
to abstract theme generatio and its subroutines.

Logic related to EditorTheme, EditorColorMap, and editor
icons has been extracted into their respective files with
includes cleaned up.

All related files have been moved to a separate folder to
better scope them in the project. This includes relevant
generated files as well.
2024-01-16 11:57:45 +01:00
Rémi Verschelde 0cdb530c18
Merge pull request #83895 from clayjohn/origin-lines
Use screen-aligned quads for origin lines to avoid issues on NVidia
2024-01-04 16:39:42 +01:00
kleonc 74a35526e0 Fix some Node3DEditor snapping issues 2023-10-27 13:00:49 +02:00
clayjohn 5591f289d7 Uses screen-aligned quads for origin lines to avoid issues on NVidia
While we are add it, use alpha-antialised lines to make them look nice
2023-10-24 18:02:36 +02:00
Dario 057367bf4f Add FidelityFX Super Resolution 2.2 (FSR 2.2.1) support.
Introduces support for FSR2 as a new upscaler option available from the project settings. Also introduces an specific render list for surfaces that require motion and the ability to derive motion vectors from depth buffer and camera motion.
2023-09-25 10:37:47 -03:00
Yuri Sizov f542dffb39 Improve the looks of 2D/3D viewport contextual toolbars 2023-09-13 13:04:55 +02:00
Ryan Roden-Corrent d6a83a6bac
Implement numeric blender-style transforms.
This allows the user to input numbers during an "instant" (blender
style) transform operation to specify exactly how far to transform the
object. For example:

g2.5xx: Translate 2.5 units along the local x-axis
ry-45: Rotate -45 degrees around the y-axis
s.25Z: Scale by a factor of .25 on the xy plane

Some shared code between the traslate/rotate/scale branches of update_transform
was refactored into apply_transform so numeric transforms could reuse it.

This removes any "{X,Y,Z}-Axis Transform" messages. These prevented the
"Transforming: (x,y,z)" messages from showing, and the latter are more
useful, as they tell you the actual units.

This also rearranges finish_transform to clear _edit before updating
the axis rendering, so an axis doesn't remain highlighted.

Co-authored-by: Rémi Verschelde <rverschelde@gmail.com>
2023-08-10 07:18:18 -04:00
Ryan Roden-Corrent 90bddd21c8
Wrap mouse for blender-style transforms.
When performing a blender-style translate or scale (but not rotate),
wrap the mouse inside the bounds of the viewport. This allows moving the
mouse indefinitely for large translate or scale operations, and is
consistent with how blender works.

This enables global input processing during blender-style transforms, so
we can capture and wrap mouse events outside the bounds of the viewport.

Other wrapping operations use _sinput, which I assume is possible
because a mouse button is held, so the control receives input even when
the mouse exits the control.

This does not implement wrapping for regular (gizmo-driven) transforms,
though this could be done if desired.

Fixes godotengine/godot-proposals#4255.
2023-07-08 07:53:47 -04:00
Rémi Verschelde 6306eb4047
Merge pull request #76372 from sygi/dont_propagate_lock_view
Store lock view rotation whether its on or off
2023-06-12 17:09:38 +02:00
Bram Stolk 4bc513edbc Add missing initializations for Node3DEditor.
Do not try to format fields with garbage values in _snap_update()
Initialize grid_enable[] before use.
Initialize previewing_camera before use.
These are all cases found live, with valgrind.
Fixes #76925
2023-05-11 08:16:04 -07:00
Hendrik Brucker dc46163b12 Improve editor state persistence 2023-05-11 04:17:03 +02:00
Jakub Sygnowski 07258c3984 Store lock view rotation whether its on or off 2023-04-23 15:18:22 +01:00
Yuri Sizov 49d7041d34 Decouple EditorInterface from EditorPlugin
- Simplify some includes in the process.
- Also exposes EditorInterface.movie_maker_enabled as a property.
2023-04-17 21:59:09 +02:00
Rémi Verschelde d76c1c4f45
Merge pull request #73651 from hakro/editor-freelook-physical-shortcuts
Use physical shortcuts for freelook navigation in the editor
2023-03-03 11:02:53 +01:00
bruvzg cebfc02d6f
Revert "Reordering emitted signals in PopupMenu" and fix editor selection issue in the safer way. 2023-02-24 21:17:05 +02:00
Hakim 52de40310a Use physical shortcuts for freelook navigation in the editor 2023-02-21 10:56:14 +01:00
Eric M 4074c647e4 Fix 3D editor Perspective/Ortho shortcut inconsistency 2023-01-21 23:18:13 +10:00
Rémi Verschelde d95794ec8a
One Copyright Update to rule them all
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".
2023-01-05 13:25:55 +01:00
Fredia Huya-Kouadio 3083455002 Update the visibility logic for the spatial editor navigation controls 2022-12-13 17:46:12 -08:00
Haoyu Qiu f6ae2f2fd5 Use ObjectID as argument when referred-calling _request_gizmo
Fixes crash on project launch.
2022-12-10 18:52:10 +08:00
Fredia Huya-Kouadio eacb29c007 Minor tweaks/polish to the navigation controls to prevent interference:
- Reduce controls size
- Enable opacity on hover to increase visibility
2022-12-02 23:17:38 -08:00
Fredia Huya-Kouadio 1566f3d49f Add navigation control to the node3d editor viewport 2022-11-29 17:43:16 -08:00
trollodel c90d0bd84f Use forward-declarations in big editor classes 2022-11-29 09:59:43 +01:00
Markus Sauermann 3b14f0334c Remove redundant Variant-types initializations 2022-11-14 19:35:19 +01:00
trollodel ba9e619b51 Use forward-declarations in EditorPlugin where possible 2022-11-11 20:25:51 +01:00
kobewi 15831e381b Unify usage of undo_redo in editor 2022-11-02 17:51:58 +01:00
Max Hilbrunner b209065e89
Merge pull request #67543 from clayjohn/PLU-default
Use CameraAttributesPractical in the editor default environment
2022-10-19 21:49:57 +02:00
clayjohn 15e14c5b59 Use CameraAttributesPractical in the editor default environment
This avoids forcing DoF in the editor when physical light units are enabled
2022-10-18 10:15:53 -07:00
Ricardo Buring d9ce8b8996 Node3D editor: cast rays in NOTIFICATION_PHYSICS_PROCESS
Fixes crashes in the editor with threaded physics (when dragging a scene
into the viewport or when snapping a node to the floor).
2022-10-14 23:37:20 +02:00
clayjohn 969f20656a Free preview sun and environement on editor close.
Previously, they would only be freed if they were in the editor node tree.
2022-09-15 20:45:19 -07:00
clayjohn 385ee5c70b Implement Physical Light Units as an optional setting.
This allows light sources to be specified in physical light units in addition to the regular energy multiplier. In order to avoid loss of precision at high values, brightness values are premultiplied by an exposure normalization value.

In support of Physical Light Units this PR also renames CameraEffects to CameraAttributes.
2022-08-31 12:14:46 -07:00
Micky e31bb5ffeb Rename `CanvasItem.update()` to `queue_redraw()`
Affects a lot of classes. Very thoroughly checked signal connections and deferred calls to this method, add_do_method/add_undo_method calls, and so on.

Also renames the internal `_update_callback()` to `_redraw_callback()` for consistency.

Just a few comments have also been changed to say "redraw".

In CPUParticles2D, there was a private variable with the same name. It has been renamed to `do_redraw`.
2022-08-29 14:59:47 +02:00
Rémi Verschelde fd6453c45e Revert "Remove NOTIFICATION_ENTER_TREE when paired with NOTIFICATION_THEME_CHANGED"
This reverts commit 4b817a565c.

Fixes #64988.
Fixes #64997.

This caused several regressions (#64988, #64997,
https://github.com/godotengine/godot/issues/64997#issuecomment-1229970605)
which point at a flaw in the current logic:

- `Control::NOTIFICATION_ENTER_TREE` triggers a *deferred* notification with
  `NOTIFCATION_THEME_CHANGED` as introduced in #62845.
- Some classes use their `THEME_CHANGED` to cache theme items in
  member variables (e.g. `style_normal`, etc.), and use those member
  variables in `ENTER_TREE`, `READY`, `DRAW`, etc. Since the `THEME_CHANGE`
  notification is now deferred, they end up accessing invalid state and this
  can lead to not applying theme properly (e.g. for EditorHelp) or crashing
  (e.g. for EditorLog or CodeEdit).

So we need to go back to the drawing board and see if `THEME_CHANGED` can be
called earlier so that the previous logic still works?

Or can we refactor all engine code to make sure that:
- `ENTER_TREE` and similar do not depend on theme properties cached in member
  variables.
- Or `THEME_CHANGE` does trigger a general UI update to make sure that any
  bad theme handling in `ENTER_TREE` and co. gets fixed when `THEME_CHANGE`
  does arrive for the first time. But that means having a temporary invalid
  (and possibly still crashing) state, and doing some computations twice
  which might be heavy (e.g. `EditorHelp::_update_doc()`).
2022-08-29 11:11:29 +02:00