--- a/include/LDParse/ModelBuilder/ModelBuilderImpl.hpp +++ b/include/LDParse/ModelBuilder/ModelBuilderImpl.hpp @@ -144,8 +144,9 @@ } template - Action ModelBuilder::handleInclude(Model& target, const ColorRef &, const TransMatrix &, const std::string &name){ + Action ModelBuilder::handleInclude(Model& target, const ColorRef &, const TransMatrix &tx, const std::string &name){ if(indeterminate(target.mCertify)) target.mCertify = false; + target.mChildren.emplace_back(0, mInvertNext.count(&target) ? Invert : Standard, tx, nullptr); Action ret = Action(); std::optional> subIndex; std::optional> subModel; @@ -165,14 +166,23 @@ } template - Action ModelBuilder::handleTriangle(Model& target, const ColorRef &, const Triangle &){ + Action ModelBuilder::handleTriangle(Model& target, const ColorRef &, const Triangle &t){ if(indeterminate(target.mCertify)) target.mCertify = false; + auto& positions = std::get<0>(target.mData.attributes); + uint32_t base = static_cast(positions.size()); + positions.push_back(std::get<0>(t)); positions.push_back(std::get<1>(t)); positions.push_back(std::get<2>(t)); + target.mData.indices.push_back(base); target.mData.indices.push_back(base+1); target.mData.indices.push_back(base+2); return Action(); } template - Action ModelBuilder::handleQuad(Model& target, const ColorRef &, const Quad &){ + Action ModelBuilder::handleQuad(Model& target, const ColorRef &, const Quad &q){ if(indeterminate(target.mCertify)) target.mCertify = false; + auto& positions = std::get<0>(target.mData.attributes); + uint32_t base = static_cast(positions.size()); + positions.push_back(std::get<0>(q)); positions.push_back(std::get<1>(q)); positions.push_back(std::get<2>(q)); positions.push_back(std::get<3>(q)); + target.mData.indices.push_back(base); target.mData.indices.push_back(base+1); target.mData.indices.push_back(base+2); + target.mData.indices.push_back(base); target.mData.indices.push_back(base+2); target.mData.indices.push_back(base+3); return Action(); }