From eed617c04cb9be2f1e77365e3e250e45f5aa66f9 Mon Sep 17 00:00:00 2001 From: Leonardo Zide Date: Sat, 26 Oct 2019 11:30:25 -0700 Subject: [PATCH] Fixed missing triangles in lods with textures. --- common/lc_meshloader.cpp | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/common/lc_meshloader.cpp b/common/lc_meshloader.cpp index 3c0d846a..9c6d33a0 100644 --- a/common/lc_meshloader.cpp +++ b/common/lc_meshloader.cpp @@ -1167,22 +1167,36 @@ lcMesh* lcLibraryMeshData::CreateMesh() if (MergeSection.Shared) { - quint16 BaseVertex = DstSection.Texture ? BaseTexturedVertices[LC_MESHDATA_SHARED] : BaseVertices[LC_MESHDATA_SHARED]; lcLibraryMeshSection* SrcSection = MergeSection.Shared; - for (int IndexIdx = 0; IndexIdx < SrcSection->mIndices.GetSize(); IndexIdx++) - *Index++ = BaseVertex + SrcSection->mIndices[IndexIdx]; + if (!mHasTextures) + { + quint16 BaseVertex = DstSection.Texture ? BaseTexturedVertices[LC_MESHDATA_SHARED] : BaseVertices[LC_MESHDATA_SHARED]; + + for (int IndexIdx = 0; IndexIdx < SrcSection->mIndices.GetSize(); IndexIdx++) + *Index++ = BaseVertex + SrcSection->mIndices[IndexIdx]; + } + else + for (int IndexIdx = 0; IndexIdx < SrcSection->mIndices.GetSize(); IndexIdx++) + *Index++ = SrcSection->mIndices[IndexIdx]; DstSection.NumIndices += SrcSection->mIndices.GetSize(); } if (MergeSection.Lod) { - quint16 BaseVertex = DstSection.Texture ? BaseTexturedVertices[LodIdx] : BaseVertices[LodIdx]; lcLibraryMeshSection* SrcSection = MergeSection.Lod; - for (int IndexIdx = 0; IndexIdx < SrcSection->mIndices.GetSize(); IndexIdx++) - *Index++ = BaseVertex + SrcSection->mIndices[IndexIdx]; + if (!mHasTextures) + { + quint16 BaseVertex = DstSection.Texture ? BaseTexturedVertices[LodIdx] : BaseVertices[LodIdx]; + + for (int IndexIdx = 0; IndexIdx < SrcSection->mIndices.GetSize(); IndexIdx++) + *Index++ = BaseVertex + SrcSection->mIndices[IndexIdx]; + } + else + for (int IndexIdx = 0; IndexIdx < SrcSection->mIndices.GetSize(); IndexIdx++) + *Index++ = SrcSection->mIndices[IndexIdx]; DstSection.NumIndices += SrcSection->mIndices.GetSize(); }