From 4e7d10b3b7f889e979dac120e35032e4b1b488e3 Mon Sep 17 00:00:00 2001 From: kovacsv Date: Sun, 26 Dec 2021 01:11:19 +0100 Subject: [PATCH] Use model filter from export dialog. --- source/export/exporter.js | 4 ++-- source/export/exporterbase.js | 3 +-- source/export/exportermodel.js | 2 +- test/tests/exporter_test.js | 6 ++++-- test/tests/exportimport_test.js | 3 ++- website/o3dv/js/exportdialog.js | 21 ++++++++++++++++----- website/o3dv/js/website.js | 3 +++ 7 files changed, 29 insertions(+), 13 deletions(-) diff --git a/source/export/exporter.js b/source/export/exporter.js index fb45e8c..4e30c11 100644 --- a/source/export/exporter.js +++ b/source/export/exporter.js @@ -17,7 +17,7 @@ OV.Exporter = class this.exporters.push (exporter); } - Export (model, format, extension, callbacks) + Export (exporterModel, format, extension, callbacks) { let exporter = null; for (let i = 0; i < this.exporters.length; i++) { @@ -32,7 +32,7 @@ OV.Exporter = class return; } - exporter.Export (model, format, (files) => { + exporter.Export (exporterModel, format, (files) => { if (files.length === 0) { callbacks.onError (); } else { diff --git a/source/export/exporterbase.js b/source/export/exporterbase.js index 40ed73b..ad76e85 100644 --- a/source/export/exporterbase.js +++ b/source/export/exporterbase.js @@ -51,10 +51,9 @@ OV.ExporterBase = class return false; } - Export (model, format, onFinish) + Export (exporterModel, format, onFinish) { let files = []; - let exporterModel = new OV.ExporterModel (model); this.ExportContent (exporterModel, format, files, () => { onFinish (files); }); diff --git a/source/export/exportermodel.js b/source/export/exportermodel.js index df12641..127c237 100644 --- a/source/export/exportermodel.js +++ b/source/export/exportermodel.js @@ -68,7 +68,7 @@ OV.ExporterModel = class }); }); let vertexOffset = 0; - this.model.EnumerateMeshInstances ((meshInstance) => { + this.EnumerateMeshInstances ((meshInstance) => { meshInstance.EnumerateTriangleVertexIndices ((v0, v1, v2) => { callbacks.onTriangle (v0 + vertexOffset, v1 + vertexOffset, v2 + vertexOffset); }); diff --git a/test/tests/exporter_test.js b/test/tests/exporter_test.js index 08071db..962cd01 100644 --- a/test/tests/exporter_test.js +++ b/test/tests/exporter_test.js @@ -65,7 +65,8 @@ function CreateTestModel () function Export (model, format, extension, onReady) { let exporter = new OV.Exporter (); - exporter.Export (model, format, extension, { + let exporterModel = new OV.ExporterModel (model); + exporter.Export (exporterModel, format, extension, { onSuccess : function (files) { onReady (files); } @@ -108,7 +109,8 @@ describe ('Exporter', function () { it ('Exporter Error', function (done) { let model = CreateTestModel (); let exporter = new OV.Exporter (); - exporter.Export (model, OV.FileFormat.Text, 'ext', { + let exporterModel = new OV.ExporterModel (model); + exporter.Export (exporterModel, OV.FileFormat.Text, 'ext', { onError : function () { done (); } diff --git a/test/tests/exportimport_test.js b/test/tests/exportimport_test.js index fdb67e3..90ebb03 100644 --- a/test/tests/exportimport_test.js +++ b/test/tests/exportimport_test.js @@ -109,7 +109,8 @@ function CreateTestModel () function ExportImport (model, format, extension, onReady) { let exporter = new OV.Exporter (); - exporter.Export (model, format, extension, { + let exporterModel = new OV.ExporterModel (model); + exporter.Export (exporterModel, format, extension, { onSuccess : function (exportedFiles) { let importer = new OV.Importer (); let settings = new OV.ImportSettings (); diff --git a/website/o3dv/js/exportdialog.js b/website/o3dv/js/exportdialog.js index e2ee3d7..b81405d 100644 --- a/website/o3dv/js/exportdialog.js +++ b/website/o3dv/js/exportdialog.js @@ -41,7 +41,7 @@ OV.ModelExporterUI = class extends OV.ExporterUI return OV.ExportType.Model; } - ExportModel (model, onDialog) + ExportModel (model, callbacks) { let progressDialog = new OV.ProgressDialog (); progressDialog.Init ('Exporting Model'); @@ -49,7 +49,13 @@ OV.ModelExporterUI = class extends OV.ExporterUI OV.RunTaskAsync (() => { let exporter = new OV.Exporter (); - exporter.Export (model, this.format, this.extension, { + let exporterModel = new OV.ExporterModel (model, { + isMeshVisible : (meshInstanceId) => { + // TODO return callbacks.isMeshVisible (meshInstanceId); + return true; + } + }); + exporter.Export (exporterModel, this.format, this.extension, { onError : () => { progressDialog.Hide (); }, @@ -63,7 +69,7 @@ OV.ModelExporterUI = class extends OV.ExporterUI } else if (files.length > 1) { progressDialog.Hide (); let filesDialog = this.ShowExportedFiles (files); - onDialog (filesDialog); + callbacks.onDialog (filesDialog); } } }); @@ -217,8 +223,13 @@ OV.ExportDialog = class ExportFormat (model, viewer) { if (this.selectedExporter.GetType () === OV.ExportType.Model) { - this.selectedExporter.ExportModel (model, (filesDialog) => { - this.callbacks.onDialog (filesDialog); + this.selectedExporter.ExportModel (model, { + isMeshVisible : (meshInstanceId) => { + return this.callbacks.isMeshVisible (meshInstanceId); + }, + onDialog : (filesDialog) => { + this.callbacks.onDialog (filesDialog); + } }); } else if (this.selectedExporter.GetType () === OV.ExportType.Image) { this.selectedExporter.ExportImage (viewer); diff --git a/website/o3dv/js/website.js b/website/o3dv/js/website.js index 1e8e62d..8d0a861 100644 --- a/website/o3dv/js/website.js +++ b/website/o3dv/js/website.js @@ -537,6 +537,9 @@ OV.Website = class AddSeparator (this.toolbar, ['only_full_width', 'only_on_model']); AddButton (this.toolbar, this.eventHandler, 'export', 'Export model', ['only_full_width', 'only_on_model'], () => { let exportDialog = new OV.ExportDialog ({ + isMeshVisible : (meshInstanceId) => { + return this.navigator.IsMeshVisible (meshInstanceId); + }, onDialog : (dialog) => { this.dialog = dialog; }