From ef17c4668ad18a8732a3bccbd2474887ab394cd7 Mon Sep 17 00:00:00 2001 From: Juan Linietsky Date: Wed, 31 Aug 2022 11:12:42 +0200 Subject: 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. --- doc/classes/ConfigFile.xml | 6 ++++ doc/classes/EditorExportPlatform.xml | 9 ++++++ doc/classes/EditorExportPlugin.xml | 57 ++++++++++++++++++++++++++++++++++++ 3 files changed, 72 insertions(+) create mode 100644 doc/classes/EditorExportPlatform.xml (limited to 'doc/classes') diff --git a/doc/classes/ConfigFile.xml b/doc/classes/ConfigFile.xml index d3ad4e6e4b..7ba53f852b 100644 --- a/doc/classes/ConfigFile.xml +++ b/doc/classes/ConfigFile.xml @@ -98,6 +98,12 @@ Removes the entire contents of the config. + + + + Obtain the text version of this config file (the same text that would be written to a file). + + diff --git a/doc/classes/EditorExportPlatform.xml b/doc/classes/EditorExportPlatform.xml new file mode 100644 index 0000000000..1d63af9233 --- /dev/null +++ b/doc/classes/EditorExportPlatform.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/doc/classes/EditorExportPlugin.xml b/doc/classes/EditorExportPlugin.xml index 091bac7d8e..3e8ce10aa5 100644 --- a/doc/classes/EditorExportPlugin.xml +++ b/doc/classes/EditorExportPlugin.xml @@ -10,6 +10,51 @@ + + + + + + Return true if this plugin will customize resources based on the platform and features used. + + + + + + + + Return true if this plugin will customize scenes based on the platform and features used. + + + + + + + + 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. + + + + + + + + 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. + + + + + + This is called when the customization process for resources ends. + + + + + + This is called when the customization process for scenes ends. + + @@ -36,6 +81,18 @@ Calling [method skip] inside this callback will make the file not included in the export. + + + + Return a hash based on the configuration passed (for both scenes and resources). This helps keep separate caches for separate export configurations. + + + + + + Return the name identifier of this plugin (for future identification by the exporter). + + -- cgit v1.2.3