mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2025-04-25 07:09:09 +00:00
chore: small code style adjustments for XModelBinWriter
This commit is contained in:
parent
101487d869
commit
dc282170bc
@ -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));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user