From b8be2d31f867c8e49975d8cc16cbef6085cff4bb Mon Sep 17 00:00:00 2001 From: KillzXGaming Date: Sat, 2 Nov 2019 19:43:22 -0400 Subject: [PATCH] Texture mapping fixes for LM3. --- .../FileFormats/NLG/LM3/LM3_DICT.cs | 8 ++++---- .../FileFormats/NLG/LM3/LM3_Model.cs | 19 +++++++++++-------- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/File_Format_Library/FileFormats/NLG/LM3/LM3_DICT.cs b/File_Format_Library/FileFormats/NLG/LM3/LM3_DICT.cs index 817e976b..64cd40fb 100644 --- a/File_Format_Library/FileFormats/NLG/LM3/LM3_DICT.cs +++ b/File_Format_Library/FileFormats/NLG/LM3/LM3_DICT.cs @@ -360,7 +360,7 @@ namespace FirstPlugin.LuigisMansion3 chunkEntry.DataFile = File053Data; break; case SubDataType.BoneData: - if (chunk.ChunkSize > 0x40 && currentModel.Skeleton == null) + /* if (chunk.ChunkSize > 0x40 && currentModel.Skeleton == null) { chunkEntry.DataFile = File052Data; using (var boneReader = new FileReader(chunkEntry.FileData)) @@ -392,7 +392,7 @@ namespace FirstPlugin.LuigisMansion3 currentModel.Skeleton.reset(); currentModel.Skeleton.update(); } - } + }*/ break; case (SubDataType)0x5012: case (SubDataType)0x5013: @@ -422,8 +422,8 @@ namespace FirstPlugin.LuigisMansion3 foreach (var model in modelFolder.Nodes) { - ((LM3_Model)currentModel).ModelInfo.Read(new FileReader( - currentModel.ModelInfo.Data), currentModel, currentModel.Meshes, TextureHashes); + ((LM3_Model)model).ModelInfo.Read(new FileReader( + ((LM3_Model)model).ModelInfo.Data), ((LM3_Model)model), TextureHashes); } if (havokFolder.Nodes.Count > 0) diff --git a/File_Format_Library/FileFormats/NLG/LM3/LM3_Model.cs b/File_Format_Library/FileFormats/NLG/LM3/LM3_Model.cs index 7159c5ea..c4107ed4 100644 --- a/File_Format_Library/FileFormats/NLG/LM3/LM3_Model.cs +++ b/File_Format_Library/FileFormats/NLG/LM3/LM3_Model.cs @@ -226,6 +226,8 @@ namespace FirstPlugin.LuigisMansion3 Tag = tex }); } + else + Nodes.Add(TextureHashes[t].ToString("x")); } if (texturesList.Nodes.Count > 0) @@ -428,10 +430,8 @@ namespace FirstPlugin.LuigisMansion3 { public byte[] Data; - public void Read(FileReader reader, LM3_Model model, List Meshes, List Hashes) + public void Read(FileReader reader, LM3_Model model, List Hashes) { - uint meshSize = (uint)(reader.BaseStream.Length / Meshes.Count); - while (!reader.EndOfStream && reader.Position < reader.BaseStream.Length - 4) { uint HashIDCheck = reader.ReadUInt32(); @@ -441,9 +441,12 @@ namespace FirstPlugin.LuigisMansion3 model.TextureHashes.Add(HashIDCheck); } } - - /* for (int i = 0; i < Meshes.Count; i++) + reader.Position = 0; + + var meshSize = reader.BaseStream.Length / model.Meshes.Count; + + for (int i = 0; i < model.Meshes.Count; i++) { reader.SeekBegin(i * meshSize); while (!reader.EndOfStream && reader.Position < reader.BaseStream.Length - 4) @@ -452,9 +455,9 @@ namespace FirstPlugin.LuigisMansion3 if (Hashes.Contains(HashIDCheck)) { Console.WriteLine("HashCheck " + HashIDCheck); - Meshes[i].Material = new LM3_Material(); + model.Meshes[i].Material = new LM3_Material(); var texUnit = 1; - Meshes[i].Material.TextureMaps.Add(new STGenericMatTexture() + model.Meshes[i].Material.TextureMaps.Add(new STGenericMatTexture() { textureUnit = texUnit++, Type = STGenericMatTexture.TextureType.Diffuse, @@ -464,7 +467,7 @@ namespace FirstPlugin.LuigisMansion3 break; } } - }*/ + } } }