Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilipp Oeser <info@graphics-engineer.com>2022-05-09 16:19:48 +0300
committerPhilipp Oeser <info@graphics-engineer.com>2022-05-11 17:45:20 +0300
commit06a7afb528d8bdbbed1c07abfadc83fc95682ec4 (patch)
tree42ebd035f453f9c84905b83c41e8bfbbf1da894b /source/blender/editors/io
parentedd892166d48077290759c3299e2433638f85aa1 (diff)
Fix T97947: USD will fail to export without file extension
Now add a default ".usdc" file extension if no (or the wrong) extension is given instead of presenting the user with the error that "no suitable USD plugin to write is found". This is in line with how other exporters do this. Maniphest Tasks: T97947 Differential Revision: https://developer.blender.org/D14895
Diffstat (limited to 'source/blender/editors/io')
-rw-r--r--source/blender/editors/io/io_usd.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/source/blender/editors/io/io_usd.c b/source/blender/editors/io/io_usd.c
index e0616a0cec3..ca9c2de63a4 100644
--- a/source/blender/editors/io/io_usd.c
+++ b/source/blender/editors/io/io_usd.c
@@ -190,6 +190,20 @@ static void wm_usd_export_draw(bContext *UNUSED(C), wmOperator *op)
uiItemR(box, ptr, "use_instancing", 0, NULL, ICON_NONE);
}
+static bool wm_usd_export_check(bContext *UNUSED(C), wmOperator *op)
+{
+ char filepath[FILE_MAX];
+ RNA_string_get(op->ptr, "filepath", filepath);
+
+ if (!BLI_path_extension_check_n(filepath, ".usd", ".usda", ".usdc", NULL)) {
+ BLI_path_extension_ensure(filepath, FILE_MAX, ".usdc");
+ RNA_string_set(op->ptr, "filepath", filepath);
+ return true;
+ }
+
+ return false;
+}
+
void WM_OT_usd_export(struct wmOperatorType *ot)
{
ot->name = "Export USD";
@@ -200,6 +214,7 @@ void WM_OT_usd_export(struct wmOperatorType *ot)
ot->exec = wm_usd_export_exec;
ot->poll = WM_operator_winactive;
ot->ui = wm_usd_export_draw;
+ ot->check = wm_usd_export_check;
ot->flag = OPTYPE_REGISTER; /* No UNDO possible. */