From 0f0640386250f0f5fd4141093eb2ba46fced535f Mon Sep 17 00:00:00 2001 From: lzwdgc Date: Wed, 9 Dec 2020 05:10:07 +0300 Subject: [PATCH] [mod_converter] Allow to process and print loaded .mod files from Viewer.exe from AIM2 SDK. --- src/mod_converter/mod_converter.cpp | 5 +++-- src/model/model.cpp | 9 +++++++++ src/model/model.h | 2 ++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/mod_converter/mod_converter.cpp b/src/mod_converter/mod_converter.cpp index 0cd9caa..9f3884d 100644 --- a/src/mod_converter/mod_converter.cpp +++ b/src/mod_converter/mod_converter.cpp @@ -86,9 +86,10 @@ auto read_model(const path &fn) model m; if (fn.extension() == ".mod") // single block file from m2 sdk viewer { - block bl; + block bl = {}; + bl.printable = true; // allow to output bl.h.name = to_printable_string(fn.stem()); - bl.loadPayload(b); + bl.loadPayloadAndProcess(b); m.blocks.push_back(bl); } else diff --git a/src/model/model.cpp b/src/model/model.cpp index 0422303..1b095e1 100644 --- a/src/model/model.cpp +++ b/src/model/model.cpp @@ -482,6 +482,12 @@ void block::load(const buffer &b) pmd = process_block(md); } +void block::loadPayloadAndProcess(const buffer &b) +{ + loadPayload(b); + pmd = process_block(md); +} + void block::loadPayload(const buffer &data) { // anims @@ -692,6 +698,9 @@ bool block::isEngineFx() const bool block::canPrint() const { + if (printable) + return true; + // block all lods except 0 if (!(h.all_lods == 15 || h.LODs.lod1)) return false; diff --git a/src/model/model.h b/src/model/model.h index 5788205..57f651c 100644 --- a/src/model/model.h +++ b/src/model/model.h @@ -343,6 +343,7 @@ struct block void load(const buffer &b); void loadPayload(const buffer &b); + void loadPayloadAndProcess(const buffer &b); void linkFaces(); std::string printMtl() const; @@ -354,6 +355,7 @@ struct block // processed_model_data pmd; + bool printable = false; }; struct model