From f83f13f3a202c61b6dfb682f17dafb1c2fdcc368 Mon Sep 17 00:00:00 2001 From: Aaron Franke Date: Sun, 11 Dec 2022 00:27:57 -0600 Subject: [PATCH] Pass GLTFState to the export_preflight method --- modules/gltf/doc_classes/GLTFDocumentExtension.xml | 3 ++- modules/gltf/extensions/gltf_document_extension.cpp | 6 +++--- modules/gltf/extensions/gltf_document_extension.h | 4 ++-- modules/gltf/gltf_document.cpp | 2 +- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/modules/gltf/doc_classes/GLTFDocumentExtension.xml b/modules/gltf/doc_classes/GLTFDocumentExtension.xml index ac638a89629..6004de32f19 100644 --- a/modules/gltf/doc_classes/GLTFDocumentExtension.xml +++ b/modules/gltf/doc_classes/GLTFDocumentExtension.xml @@ -42,7 +42,8 @@ - + + Part of the export process. This method is run first, before all other parts of the export process. The return value is used to determine if this [GLTFDocumentExtension] instance should be used for exporting a given GLTF file. If [constant OK], the export will use this [GLTFDocumentExtension] instance. If not overridden, [constant OK] is returned. diff --git a/modules/gltf/extensions/gltf_document_extension.cpp b/modules/gltf/extensions/gltf_document_extension.cpp index f997fe8f66c..630a62ba5ca 100644 --- a/modules/gltf/extensions/gltf_document_extension.cpp +++ b/modules/gltf/extensions/gltf_document_extension.cpp @@ -40,7 +40,7 @@ void GLTFDocumentExtension::_bind_methods() { GDVIRTUAL_BIND(_import_node, "state", "gltf_node", "json", "node"); GDVIRTUAL_BIND(_import_post, "state", "root"); // Export process. - GDVIRTUAL_BIND(_export_preflight, "root"); + GDVIRTUAL_BIND(_export_preflight, "state", "root"); GDVIRTUAL_BIND(_convert_scene_node, "state", "gltf_node", "scene_node"); GDVIRTUAL_BIND(_export_node, "state", "gltf_node", "json", "node"); GDVIRTUAL_BIND(_export_post, "state"); @@ -102,10 +102,10 @@ Error GLTFDocumentExtension::import_post(Ref p_state, Node *p_root) { } // Export process. -Error GLTFDocumentExtension::export_preflight(Node *p_root) { +Error GLTFDocumentExtension::export_preflight(Ref p_state, Node *p_root) { ERR_FAIL_NULL_V(p_root, ERR_INVALID_PARAMETER); int err = OK; - GDVIRTUAL_CALL(_export_preflight, p_root, err); + GDVIRTUAL_CALL(_export_preflight, p_state, p_root, err); return Error(err); } diff --git a/modules/gltf/extensions/gltf_document_extension.h b/modules/gltf/extensions/gltf_document_extension.h index 7cc9ca592fc..66cb9a3c339 100644 --- a/modules/gltf/extensions/gltf_document_extension.h +++ b/modules/gltf/extensions/gltf_document_extension.h @@ -49,7 +49,7 @@ public: virtual Error import_node(Ref p_state, Ref p_gltf_node, Dictionary &r_json, Node *p_node); virtual Error import_post(Ref p_state, Node *p_node); // Export process. - virtual Error export_preflight(Node *p_state); + virtual Error export_preflight(Ref p_state, Node *p_root); virtual void convert_scene_node(Ref p_state, Ref p_gltf_node, Node *p_scene_node); virtual Error export_node(Ref p_state, Ref p_gltf_node, Dictionary &r_json, Node *p_node); virtual Error export_post(Ref p_state); @@ -63,7 +63,7 @@ public: GDVIRTUAL4R(int, _import_node, Ref, Ref, Dictionary, Node *); GDVIRTUAL2R(int, _import_post, Ref, Node *); // Export process. - GDVIRTUAL1R(int, _export_preflight, Node *); + GDVIRTUAL2R(int, _export_preflight, Ref, Node *); GDVIRTUAL3(_convert_scene_node, Ref, Ref, Node *); GDVIRTUAL4R(int, _export_node, Ref, Ref, Dictionary, Node *); GDVIRTUAL1R(int, _export_post, Ref); diff --git a/modules/gltf/gltf_document.cpp b/modules/gltf/gltf_document.cpp index 2cb2d218543..f4db576b0c7 100644 --- a/modules/gltf/gltf_document.cpp +++ b/modules/gltf/gltf_document.cpp @@ -6930,7 +6930,7 @@ Error GLTFDocument::append_from_scene(Node *p_node, Ref p_state, uint document_extensions.clear(); for (Ref ext : all_document_extensions) { ERR_CONTINUE(ext.is_null()); - Error err = ext->export_preflight(p_node); + Error err = ext->export_preflight(p_state, p_node); if (err == OK) { document_extensions.push_back(ext); }