2017-09-16 07:46:14 +08:00
<?xml version="1.0" encoding="UTF-8" ?>
2022-02-14 21:18:53 +08:00
<class name= "EditorExportPlugin" inherits= "RefCounted" version= "4.0" xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation= "../class.xsd" >
2017-09-16 07:46:14 +08:00
<brief_description >
2020-12-29 19:23:29 +08:00
A script that is executed when exporting the project.
2017-09-16 07:46:14 +08:00
</brief_description>
<description >
2021-10-15 20:30:58 +08:00
[EditorExportPlugin]s are automatically invoked whenever the user exports the project. Their most common use is to determine what files are being included in the exported project. For each plugin, [method _export_begin] is called at the beginning of the export process and then [method _export_file] is called for each exported file.
To use [EditorExportPlugin], register it using the [method EditorPlugin.add_export_plugin] method first.
2017-09-16 07:46:14 +08:00
</description>
<tutorials >
</tutorials>
<methods >
Add support for scene/resource customization in export plugins
EditorExportPlugin adds a set of callbacks to allow customizing scenes, resources or subresources in all files exported:
* Can take scene files, resource files and subresources in all of them.
* Uses a cache for the converted files if nothing changes, so this work only happens if a file is modified.
* Uses hashing to differentiate export configuration caches.
* Removed the previous conversion code to binary, as this one uses existing stuff.
This API is useful in several scenarios:
* Needed by the "server" export platform to get rid of textures, meshes, audio, etc.
* Needed by text to binary converters.
* Needed by eventual optimizations such as shader precompiling on export, mesh merging and optimization, etc.
This is a draft, feedback is very welcome.
2022-08-31 17:12:42 +08:00
<method name= "_begin_customize_resources" qualifiers= "virtual const" >
<return type= "bool" />
<param index= "0" name= "platform" type= "EditorExportPlatform" />
<param index= "1" name= "features" type= "PackedStringArray" />
<description >
Return true if this plugin will customize resources based on the platform and features used.
</description>
</method>
<method name= "_begin_customize_scenes" qualifiers= "virtual const" >
<return type= "bool" />
<param index= "0" name= "platform" type= "EditorExportPlatform" />
<param index= "1" name= "features" type= "PackedStringArray" />
<description >
Return true if this plugin will customize scenes based on the platform and features used.
</description>
</method>
<method name= "_customize_resource" qualifiers= "virtual" >
<return type= "Resource" />
<param index= "0" name= "resource" type= "Resource" />
<param index= "1" name= "path" type= "String" />
<description >
Customize a resource. If changes are made to it, return the same or a new resource. Otherwise, return [code]null[/code].
The [i]path[/i] argument is only used when customizing an actual file, otherwise this means that this resource is part of another one and it will be empty.
</description>
</method>
<method name= "_customize_scene" qualifiers= "virtual" >
<return type= "Node" />
<param index= "0" name= "scene" type= "Node" />
<param index= "1" name= "path" type= "String" />
<description >
Customize a scene. If changes are made to it, return the same or a new scene. Otherwise, return [code]null[/code]. If a new scene is returned, it is up to you to dispose of the old one.
</description>
</method>
<method name= "_end_customize_resources" qualifiers= "virtual" >
<return type= "void" />
<description >
This is called when the customization process for resources ends.
</description>
</method>
<method name= "_end_customize_scenes" qualifiers= "virtual" >
<return type= "void" />
<description >
This is called when the customization process for scenes ends.
</description>
</method>
2017-09-16 07:46:14 +08:00
<method name= "_export_begin" qualifiers= "virtual" >
2021-07-30 21:28:05 +08:00
<return type= "void" />
2022-08-07 02:11:48 +08:00
<param index= "0" name= "features" type= "PackedStringArray" />
<param index= "1" name= "is_debug" type= "bool" />
<param index= "2" name= "path" type= "String" />
<param index= "3" name= "flags" type= "int" />
2017-09-16 07:46:14 +08:00
<description >
2022-08-13 00:07:53 +08:00
Virtual method to be overridden by the user. It is called when the export starts and provides all information about the export. [param features] is the list of features for the export, [param is_debug] is [code]true[/code] for debug builds, [param path] is the target path for the exported project. [param flags] is only used when running a runnable profile, e.g. when using native run on Android.
2019-05-24 05:31:02 +08:00
</description>
</method>
<method name= "_export_end" qualifiers= "virtual" >
2021-07-30 21:28:05 +08:00
<return type= "void" />
2019-05-24 05:31:02 +08:00
<description >
2020-03-04 02:21:21 +08:00
Virtual method to be overridden by the user. Called when the export is finished.
2017-09-16 07:46:14 +08:00
</description>
</method>
<method name= "_export_file" qualifiers= "virtual" >
2021-07-30 21:28:05 +08:00
<return type= "void" />
2022-08-07 02:11:48 +08:00
<param index= "0" name= "path" type= "String" />
<param index= "1" name= "type" type= "String" />
<param index= "2" name= "features" type= "PackedStringArray" />
2017-09-16 07:46:14 +08:00
<description >
2022-08-13 00:07:53 +08:00
Virtual method to be overridden by the user. Called for each exported file, providing arguments that can be used to identify the file. [param path] is the path of the file, [param type] is the [Resource] represented by the file (e.g. [PackedScene]) and [param features] is the list of features for the export.
2020-12-29 19:23:29 +08:00
Calling [method skip] inside this callback will make the file not included in the export.
2017-09-16 07:46:14 +08:00
</description>
</method>
Add support for scene/resource customization in export plugins
EditorExportPlugin adds a set of callbacks to allow customizing scenes, resources or subresources in all files exported:
* Can take scene files, resource files and subresources in all of them.
* Uses a cache for the converted files if nothing changes, so this work only happens if a file is modified.
* Uses hashing to differentiate export configuration caches.
* Removed the previous conversion code to binary, as this one uses existing stuff.
This API is useful in several scenarios:
* Needed by the "server" export platform to get rid of textures, meshes, audio, etc.
* Needed by text to binary converters.
* Needed by eventual optimizations such as shader precompiling on export, mesh merging and optimization, etc.
This is a draft, feedback is very welcome.
2022-08-31 17:12:42 +08:00
<method name= "_get_customization_configuration_hash" qualifiers= "virtual const" >
<return type= "int" />
<description >
Return a hash based on the configuration passed (for both scenes and resources). This helps keep separate caches for separate export configurations.
</description>
</method>
<method name= "_get_name" qualifiers= "virtual const" >
<return type= "String" />
<description >
Return the name identifier of this plugin (for future identification by the exporter).
</description>
</method>
2017-09-16 07:46:14 +08:00
<method name= "add_file" >
2021-07-30 21:28:05 +08:00
<return type= "void" />
2022-08-07 02:11:48 +08:00
<param index= "0" name= "path" type= "String" />
<param index= "1" name= "file" type= "PackedByteArray" />
<param index= "2" name= "remap" type= "bool" />
2017-09-16 07:46:14 +08:00
<description >
2022-08-13 00:07:53 +08:00
Adds a custom file to be exported. [param path] is the virtual path that can be used to load the file, [param file] is the binary data of the file. If [param remap] is [code]true[/code], file will not be exported, but instead remapped to the given [param path].
2017-09-16 07:46:14 +08:00
</description>
</method>
2017-11-24 16:16:27 +08:00
<method name= "add_ios_bundle_file" >
2021-07-30 21:28:05 +08:00
<return type= "void" />
2022-08-07 02:11:48 +08:00
<param index= "0" name= "path" type= "String" />
2017-11-24 16:16:27 +08:00
<description >
2022-08-13 00:07:53 +08:00
Adds an iOS bundle file from the given [param path] to the exported project.
2017-11-24 16:16:27 +08:00
</description>
</method>
<method name= "add_ios_cpp_code" >
2021-07-30 21:28:05 +08:00
<return type= "void" />
2022-08-07 02:11:48 +08:00
<param index= "0" name= "code" type= "String" />
2017-11-24 16:16:27 +08:00
<description >
2020-12-29 19:23:29 +08:00
Adds a C++ code to the iOS export. The final code is created from the code appended by each active export plugin.
2017-11-24 16:16:27 +08:00
</description>
</method>
2020-08-31 17:25:11 +08:00
<method name= "add_ios_embedded_framework" >
2021-07-30 21:28:05 +08:00
<return type= "void" />
2022-08-07 02:11:48 +08:00
<param index= "0" name= "path" type= "String" />
2017-11-24 16:16:27 +08:00
<description >
2020-08-31 17:25:11 +08:00
Adds a dynamic library (*.dylib, *.framework) to Linking Phase in iOS's Xcode project and embeds it into resulting binary.
[b]Note:[/b] For static libraries (*.a) works in same way as [code]add_ios_framework[/code].
This method should not be used for System libraries as they are already present on the device.
2020-08-06 01:55:29 +08:00
</description>
</method>
2020-08-31 17:25:11 +08:00
<method name= "add_ios_framework" >
2021-07-30 21:28:05 +08:00
<return type= "void" />
2022-08-07 02:11:48 +08:00
<param index= "0" name= "path" type= "String" />
2020-08-06 01:55:29 +08:00
<description >
2020-08-31 17:25:11 +08:00
Adds a static library (*.a) or dynamic library (*.dylib, *.framework) to Linking Phase in iOS's Xcode project.
2017-11-24 16:16:27 +08:00
</description>
</method>
<method name= "add_ios_linker_flags" >
2021-07-30 21:28:05 +08:00
<return type= "void" />
2022-08-07 02:11:48 +08:00
<param index= "0" name= "flags" type= "String" />
2017-11-24 16:16:27 +08:00
<description >
2020-12-29 19:23:29 +08:00
Adds linker flags for the iOS export.
2017-11-24 16:16:27 +08:00
</description>
</method>
<method name= "add_ios_plist_content" >
2021-07-30 21:28:05 +08:00
<return type= "void" />
2022-08-07 02:11:48 +08:00
<param index= "0" name= "plist_content" type= "String" />
2017-11-24 16:16:27 +08:00
<description >
2020-12-29 19:23:29 +08:00
Adds content for iOS Property List files.
2017-11-24 16:16:27 +08:00
</description>
</method>
2020-04-03 16:11:23 +08:00
<method name= "add_ios_project_static_lib" >
2021-07-30 21:28:05 +08:00
<return type= "void" />
2022-08-07 02:11:48 +08:00
<param index= "0" name= "path" type= "String" />
2020-04-03 16:11:23 +08:00
<description >
2022-08-13 00:07:53 +08:00
Adds a static lib from the given [param path] to the iOS project.
2020-04-03 16:11:23 +08:00
</description>
</method>
2022-07-20 14:28:22 +08:00
<method name= "add_macos_plugin_file" >
2021-12-18 17:21:08 +08:00
<return type= "void" />
2022-08-07 02:11:48 +08:00
<param index= "0" name= "path" type= "String" />
2021-12-18 17:21:08 +08:00
<description >
2022-08-13 00:07:53 +08:00
Adds file or directory matching [param path] to [code]PlugIns[/code] directory of macOS app bundle.
2021-12-18 17:21:08 +08:00
[b]Note:[/b] This is useful only for macOS exports.
</description>
</method>
2017-09-16 07:46:14 +08:00
<method name= "add_shared_object" >
2021-07-30 21:28:05 +08:00
<return type= "void" />
2022-08-07 02:11:48 +08:00
<param index= "0" name= "path" type= "String" />
<param index= "1" name= "tags" type= "PackedStringArray" />
<param index= "2" name= "target" type= "String" />
2017-09-16 07:46:14 +08:00
<description >
2022-08-13 00:07:53 +08:00
Adds a shared object or a directory containing only shared objects with the given [param tags] and destination [param path].
2021-12-18 17:21:08 +08:00
[b]Note:[/b] In case of macOS exports, those shared objects will be added to [code]Frameworks[/code] directory of app bundle.
In case of a directory code-sign will error if you place non code object in directory.
2017-09-16 07:46:14 +08:00
</description>
</method>
<method name= "skip" >
2021-07-30 21:28:05 +08:00
<return type= "void" />
2017-09-16 07:46:14 +08:00
<description >
2020-12-29 19:23:29 +08:00
To be called inside [method _export_file]. Skips the current file, so it's not included in the export.
2017-09-16 07:46:14 +08:00
</description>
</method>
</methods>
</class>