Commit Graph

123 Commits

Author SHA1 Message Date
97b469c46d [Editor] Add EditorPlugin::scene_saved signal
Matches the `EditorNode` one for parity with the exposed
`resource_saved` signal
2024-01-22 17:51:12 +01:00
a6de7a8a3f Allow contextual plugins to persist temporarily 2023-10-06 15:58:50 +02:00
fca3ab5564 Deprecate project_settings_changed signal 2023-08-10 15:07:25 +02:00
d17811c814 Re-architect how Android plugins are packaged and handled at export time
The previous packaging format for Godot Android plugins consisted of the plugin's `gdap` config file accompanied by binaries defined in the `gdap` file.
This format is now deprecated (starting with Godot 4.2), and instead Godot Android plugins are now packaged as `EditorExportPlugin` plugins.

The `EditorExportPlugin` class has been updated with the following methods to provide the necessary set of functionality:
- `_supports_platform`: returns true if the plugin supports the given platform
- `_get_android_dependencies`: retrieve the set of android dependencies (e.g: `org.godot.example:my-plugin:0.0.0`) provided by the plugin
- `_get_android_dependencies_maven_repos`: retrieve the urls of the maven repos for the provided android dependencies
- `_get_android_libraries`: retrieve the local paths of the android libraries (AAR files) provided by the plugin
- `_get_android_manifest_activity_element_contents`: update the contents of the `<activity>` element in the generated Android manifest
- `_get_android_manifest_application_element_contents`: update the contents of the `<application>` element in the generated Android manifest
- `_get_android_manifest_element_contents`: update the contents of the `<manifest>` element in the generated Android manifest
2023-07-18 19:14:53 +02:00
b883f32188 Check for unsaved changes when closing a scene 2023-07-18 14:27:56 +02:00
6dc5dc3479 Add _get_unsaved_status() method to EditorPlugin 2023-07-18 14:18:36 +02:00
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
d2b4e30058 Change _can_handle and _edit virtual methods to take Object* 2023-02-17 14:10:38 +01:00
4ca6a9809d Merge pull request #44596 from KoBeWi/🧹🧹🧹
Cleanup unused engine code v2
2023-01-19 19:32:51 +01:00
d3665effd5 Merge pull request #71443 from TechnoPorg/fix-resource-conversion-plugins
Make EditorResourceConversionPlugin usable.
2023-01-19 13:23:37 +01:00
c0083e431b Cleanup unused engine code v2 2023-01-19 13:02:18 +01:00
b58111588a Add EditorUndoRedoManager singleton 2023-01-16 01:11:52 +01:00
2904d19069 Make EditorResourceConversionPlugin usable.
Previously, EditorResourceConversionPlugin nominally existed in scripting, but there was no way for a user to actually register one.
This PR adds methods to EditorPlugin for registering/unregistering EditorResourceConversionPlugins.
Additionally, it documents EditorResourceConversionPlugin with descriptions and a basic example.
2023-01-14 18:48:11 -07:00
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
75177455d9 Move editor class and plugin registrations to a dedicated file 2022-11-18 08:02:08 +01:00
4b00c2ec57 Add EditorInterface.get_selected_paths()
Exposes the selected paths in the editor filesystem dock.
Implements this proposal : https://github.com/godotengine/godot-proposals/issues/2424

Also renamed the old `get_selected_path` to `get_selected_directory` to
better match the already existing get_current_path function.
2022-11-14 22:46:27 +01:00
d568b25e36 [Editor] Better expose EditorDebuggerPlugin.
Now splitted into two classes:
- EditorDebuggerPlugin (RefCounted).
- EditorDebuggerSession (abstract).

This allows the EditorPlugin to be in control of the debugger plugin
lifecycle, be notified when sessions are created, and customize each of
them independently.

We should slowly transition the various profilers and captures in
ScriptEditorDebugger to their own plugins, and decouple
ScriptEditorDebugger from it's UI part (making it the "real"
EditorDebuggerSession potentially dropping the wrappers).
2022-11-14 14:55:22 +01:00
ba9e619b51 Use forward-declarations in EditorPlugin where possible 2022-11-11 20:25:51 +01:00
15831e381b Unify usage of undo_redo in editor 2022-11-02 17:51:58 +01:00
778ffce1e3 Merge pull request #62416 from Calinou/movie-maker-request-attention-on-finish
Request attention on the editor window when done recording a movie
2022-10-31 23:03:21 +01:00
ae5771e1b1 Rename remaining "Spatial" in Plugins to "Node3D"
For EditorNode3DGizmo:
- `get_spatial_node` -> `get_node_3d`
- `set_spatial_node` -> `set_node_3d`

For EditorPlugin:
- `add_spatial_gizmo_plugin` -> `add_node_3d_gizmo_plugin`
- `remove_spatial_gizmo_plugin` -> `remove_node_3d_gizmo_plugin`

Also renames some internal methods for consistency (`forward_3d_draw_over_viewport` & `forward_3d_force_draw_over_viewport` ...). Basically, Spatial has been completely eradicated.
2022-10-04 16:27:29 +02:00
b52305351d Merge pull request #64465 from TokageItLab/bind-after-gui-input
Bind `AfterGUIInput` to GDScript and update document
2022-09-10 20:01:48 +02:00
3c7a5fd8ac bind AfterGUIInput 2022-09-08 20:02:48 +09:00
1459507ed2 Rename EditorInterface.get_editor_main_control to get_editor_main_screen 2022-09-07 03:01:58 +03:00
7adc8376ed Change Array arguments to TypedArray 2022-09-01 13:13:19 +02:00
8be27dc59e Replace Array return types with TypedArray 2022-08-22 22:42:36 +02:00
b8a64313f0 Merge pull request #59564 from KoBeWi/FINALLY,_ULTIMATE_UNDO_REDO 2022-08-22 22:37:33 +02:00
ece3df3938 Add per-scene UndoRedo 2022-08-22 18:05:10 +02:00
92f5a0a1db Add a method for restarting the editor to EditorInterface 2022-08-18 18:51:38 -05:00
55dff09e93 Rename EditorPlugin.*_PROPERTY_EDITOR_* to *_INSPECTOR_*
The name "Inspector" has been adopted for years and is thus more familiar.
2022-08-13 12:59:03 +02:00
90019676b0 Code quality: Fix header guards consistency
Adds `header_guards.sh` bash script, used in CI to validate future
changes. Can be run locally to fix invalid header guards.
2022-07-25 11:17:40 +02:00
ca7e92ed39 Request attention on the editor window when done recording a movie
Recording a movie can take a long time, so the user may not be
paying attention to the editor while leaving a movie rendering
in the background.

This also allows editor plugins to access the state of Movie Maker mode
within the editor (and set it).
2022-06-26 02:26:38 +02:00
0ea7780e33 move gltf export under scene menu 2022-04-12 19:42:41 +05:30
cd1d7294d8 Remove the EditorNode parameter from EditorPlugins create methods
Remove EditorNode usage from the Navigation editor plugin.
2022-02-14 18:21:42 +01:00
ec00283f91 ResourceImporter: Restore default append logic for new importers
This was changed in #56943 to allow adding new importers from plugins that
take precedence over built-in ones, but this should be opt-in, not the default
behavior.

Fixes #57730.
2022-02-07 09:47:16 +01:00
7072b359b4 Improve some method bindings to use specific Object subtypes
This was made possible by changes to `VariantCaster` which now make
it possible to pass any `Object`-derived type as pointer.
2022-01-28 15:07:22 +01:00
fe52458154 Update copyright statements to 2022
Happy new year to the wonderful Godot community!
2022-01-03 21:27:34 +01:00
9535831866 Expose ScriptEditor::edit to scripting
Exposes a method in `EditorInterface` to open scripts on a specified
line and column. This method handles if the internal or the external
editor should be used.
2021-12-08 15:25:05 +01:00
b3bf90b3ce Add scene Post-Import Plugin support.
* New plugin system to control the whole import workflow
* Can add options and run code at every import step (general, per node, mesh, animation, material etc.)

This constitutes a first version of these plugins. The ability to interact with the import preview dialog will likely be added later on.
2021-10-15 09:12:04 -03:00
f2e9867e9f Implemented SkeletonEditorGizmo
Co-authored-by: Lyuma <xn.lyuma@gmail.com>
2021-10-07 01:07:46 +09:00
3682978aee Replace BIND_VMETHOD by new GDVIRTUAL syntax
* New syntax is type safe.
* New syntax allows for type safe virtuals in native extensions.
* New syntax permits extremely fast calling.

Note: Everything was replaced where possible except for `_gui_input` `_input` and `_unhandled_input`.
These will require API rework on a separate PR as they work different than the rest of the functions.

Added a new method flag METHOD_FLAG_OBJECT_CORE, used internally. Allows to not dump the core virtuals like `_notification` to the json API, since each language will implement those as it is best fits.
2021-08-22 08:23:58 -03:00
a0a019a998 Added EditorCommandPalette 2021-08-09 17:41:50 +05:30
de3f6699a5 Rename Transform to Transform3D in core 2021-06-03 07:30:01 -04:00
0d2e02945b Implement shader caching
* Shader compilation is now cached. Subsequent loads take less than a millisecond.
* Improved game, editor and project manager startup time.
* Editor uses .godot/shader_cache to store shaders.
* Game uses user://shader_cache
* Project manager uses $config_dir/shader_cache
* Options to tweak shader caching in project settings.
* Editor path configuration moved from EditorSettings to new class, EditorPaths, so it can be available early on (before shaders are compiled).
* Reworked ShaderCompilerRD to ensure deterministic shader code creation (else shader may change and cache will be invalidated).
* Added shader compression with SMOLV: https://github.com/aras-p/smol-v
2021-05-31 10:13:09 +02:00
b46672db72 Provide a way to hook into Inspectors UndoRedo. 2021-05-04 09:55:22 +02:00
72014a7a2e Expose edit_node() for editor plugins 2021-04-12 00:13:08 +02:00
ea31af68ba Expose editor scale to the plugin API 2021-04-05 18:44:01 +03:00
288540a690 Fix editor always redrawing
-Only update rendering settings when project settings change
-Fixes the update spinner (and editor rendering) updating all the time.
-Added a "project_settings_changed" signal to EditorNode and EditorPlugin
2021-02-13 14:57:28 -03:00
b5334d14f7 Update copyright statements to 2021
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 🎆
2021-01-01 20:19:21 +01:00
e1128431de Rename EditorInterface get_editor_viewport to get_editor_main_control 2020-12-19 14:17:42 +00:00