From ea90c4be6b7eecbd29fae83f5c0a9bac2914d7e1 Mon Sep 17 00:00:00 2001 From: momo5502 Date: Tue, 27 Dec 2016 00:12:07 +0100 Subject: [PATCH] [IMaterial] Correct constant reading --- .../Modules/AssetInterfaces/IMaterial.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/Components/Modules/AssetInterfaces/IMaterial.cpp b/src/Components/Modules/AssetInterfaces/IMaterial.cpp index a41f630e..8d863cb1 100644 --- a/src/Components/Modules/AssetInterfaces/IMaterial.cpp +++ b/src/Components/Modules/AssetInterfaces/IMaterial.cpp @@ -101,15 +101,19 @@ namespace Assets for (char i = 0; i < material->constantCount; ++i) { - std::string constName = reader.readString(); - strncpy_s(material->constantTable[i].name, 12, constName.data(), 12); + for (int j = 0; j < 12; ++j) + { + material->constantTable[i].name[j] = reader.readByte(); + } + + std::string constName(material->constantTable[i].name, 12); + constName.push_back('0'); material->constantTable[i].nameHash = Game::R_HashString(constName.data()); - float* literal = reader.readArray(4); - material->constantTable[i].literal[0] = literal[0]; - material->constantTable[i].literal[1] = literal[1]; - material->constantTable[i].literal[2] = literal[2]; - material->constantTable[i].literal[3] = literal[3]; + material->constantTable[i].literal[0] = reader.read(); + material->constantTable[i].literal[1] = reader.read(); + material->constantTable[i].literal[2] = reader.read(); + material->constantTable[i].literal[3] = reader.read(); } material->stateBitTable = reader.readArray(material->stateBitsCount);