chore: small code style adjustments for XModelBinWriter

This commit is contained in:
Jan 2025-04-23 16:52:04 +01:00
parent 101487d869
commit dc282170bc
No known key found for this signature in database
GPG Key ID: 44B581F78FF5C57C

View File

@ -86,16 +86,17 @@ protected:
auto vertexOffset = 0u; auto vertexOffset = 0u;
for (const auto& vertex : xmodel.m_vertices) for (const auto& vertex : xmodel.m_vertices)
{ {
XModelVertexBoneWeights weights{0, 0}; XModelVertexBoneWeights weights{.weightOffset = 0, .weightCount = 0};
if (vertexOffset < xmodel.m_vertex_bone_weights.size()) if (vertexOffset < xmodel.m_vertex_bone_weights.size())
weights = xmodel.m_vertex_bone_weights[vertexOffset]; weights = xmodel.m_vertex_bone_weights[vertexOffset];
m_vertex_merger.Add(VertexMergerPos{vertex.coordinates[0], m_vertex_merger.Add(
vertex.coordinates[1], VertexMergerPos{.x = vertex.coordinates[0],
vertex.coordinates[2], .y = vertex.coordinates[1],
xmodel.m_bone_weight_data.weights.empty() ? nullptr : &xmodel.m_bone_weight_data.weights[weights.weightOffset], .z = vertex.coordinates[2],
weights.weightCount}); .weights = xmodel.m_bone_weight_data.weights.empty() ? nullptr : &xmodel.m_bone_weight_data.weights[weights.weightOffset],
.weightCount = weights.weightCount});
vertexOffset++; vertexOffset++;
} }
@ -106,7 +107,7 @@ protected:
m_writer.write(reinterpret_cast<const char*>(&data), sizeof(T)); m_writer.write(reinterpret_cast<const char*>(&data), sizeof(T));
} }
void WriteNullTerminatedString(std::string string) void WriteNullTerminatedString(const std::string& string)
{ {
m_writer.write(string.c_str(), string.size() + 1); m_writer.write(string.c_str(), string.size() + 1);
} }
@ -138,21 +139,21 @@ protected:
Write(value); Write(value);
} }
int16_t ClampFloatToShort(const float value) const [[nodiscard]] static int16_t ClampFloatToShort(const float value)
{ {
return std::clamp(static_cast<int16_t>(std::numeric_limits<int16_t>::max() * std::clamp(value, -1.0f, 1.0f)), return std::clamp(static_cast<int16_t>(std::numeric_limits<int16_t>::max() * std::clamp(value, -1.0f, 1.0f)),
std::numeric_limits<int16_t>::min(), std::numeric_limits<int16_t>::min(),
std::numeric_limits<int16_t>::max()); std::numeric_limits<int16_t>::max());
} }
uint8_t ClampFloatToUByte(const float value) const [[nodiscard]] static uint8_t ClampFloatToUByte(const float value)
{ {
return std::clamp(static_cast<uint8_t>(std::numeric_limits<uint8_t>::max() * std::clamp(value, -1.0f, 1.0f)), return std::clamp(static_cast<uint8_t>(std::numeric_limits<uint8_t>::max() * std::clamp(value, -1.0f, 1.0f)),
std::numeric_limits<uint8_t>::min(), std::numeric_limits<uint8_t>::min(),
std::numeric_limits<uint8_t>::max()); std::numeric_limits<uint8_t>::max());
} }
void WriteHeader(uint16_t version) void WriteHeader(const uint16_t version)
{ {
WriteComment("OpenAssetTools " GIT_VERSION " XMODEL_BIN File"); WriteComment("OpenAssetTools " GIT_VERSION " XMODEL_BIN File");
WriteComment(std::format("Game Origin: {}", m_game_name)); WriteComment(std::format("Game Origin: {}", m_game_name));
@ -182,7 +183,7 @@ protected:
boneNum = 0; boneNum = 0;
for (const auto& bone : xmodel.m_bones) for (const auto& bone : xmodel.m_bones)
{ {
WriteUInt16(XModelBinHash::BONE_INDEX, static_cast<uint32_t>(boneNum)); WriteUInt16(XModelBinHash::BONE_INDEX, static_cast<uint16_t>(boneNum));
Write(static_cast<uint32_t>(XModelBinHash::OFFSET)); Write(static_cast<uint32_t>(XModelBinHash::OFFSET));
Write(bone.globalOffset[0]); // X Write(bone.globalOffset[0]); // X
@ -271,7 +272,7 @@ class XModelBinWriter7 final : public XModelBinWriterBase
{ {
const auto& weight = vertexPos.weights[weightIndex]; const auto& weight = vertexPos.weights[weightIndex];
WriteInt16(XModelBinHash::VERT_WEIGHT, weight.boneIndex); WriteUInt16(XModelBinHash::VERT_WEIGHT, static_cast<uint16_t>(weight.boneIndex));
XModelBinWriterBase::Write(weight.weight); XModelBinWriterBase::Write(weight.weight);
} }
vertexNum++; vertexNum++;
@ -292,7 +293,7 @@ class XModelBinWriter7 final : public XModelBinWriterBase
XModelBinWriterBase::Write(ClampFloatToUByte(vertex.color[3])); // A XModelBinWriterBase::Write(ClampFloatToUByte(vertex.color[3])); // A
XModelBinWriterBase::Write(XModelBinHash::UV); XModelBinWriterBase::Write(XModelBinHash::UV);
XModelBinWriterBase::Write(static_cast<uint16_t>(1)); // Layer XModelBinWriterBase::Write(static_cast<uint16_t>(1u)); // Layer
XModelBinWriterBase::Write(vertex.uv[0]); XModelBinWriterBase::Write(vertex.uv[0]);
XModelBinWriterBase::Write(vertex.uv[1]); XModelBinWriterBase::Write(vertex.uv[1]);
} }
@ -452,8 +453,8 @@ class XModelBinWriter7 final : public XModelBinWriterBase
public: public:
XModelBinWriter7(std::ostream& stream, std::string gameName, std::string zoneName) XModelBinWriter7(std::ostream& stream, std::string gameName, std::string zoneName)
: m_stream(stream), : XModelBinWriterBase(std::move(gameName), std::move(zoneName)),
XModelBinWriterBase(std::move(gameName), std::move(zoneName)) m_stream(stream)
{ {
} }
@ -468,10 +469,10 @@ public:
WriteMaterials(xmodel); WriteMaterials(xmodel);
auto uncompressedSize = static_cast<uint32_t>(m_writer.str().size()); auto uncompressedSize = static_cast<uint32_t>(m_writer.str().size());
auto estimatedCompressedFileSize = LZ4_compressBound(m_writer.str().size()); const auto estimatedCompressedFileSize = LZ4_compressBound(static_cast<int>(m_writer.str().size()));
const auto compressedBuffer = std::make_unique<char[]>(estimatedCompressedFileSize); const auto compressedBuffer = std::make_unique<char[]>(estimatedCompressedFileSize);
auto actualCompressedFileSize = const auto actualCompressedFileSize =
LZ4_compress_default(m_writer.str().c_str(), compressedBuffer.get(), m_writer.str().size(), estimatedCompressedFileSize); LZ4_compress_default(m_writer.str().c_str(), compressedBuffer.get(), static_cast<int>(m_writer.str().size()), estimatedCompressedFileSize);
static constexpr char MAGIC[5] = {'*', 'L', 'Z', '4', '*'}; static constexpr char MAGIC[5] = {'*', 'L', 'Z', '4', '*'};
m_stream.write(MAGIC, sizeof(MAGIC)); m_stream.write(MAGIC, sizeof(MAGIC));