XPlor/libs/xassets/xcstaticmodels.cpp
2025-08-17 13:14:17 -04:00

94 lines
2.0 KiB
C++

#include "xcstaticmodels.h"
XCStaticModel_s::XCStaticModel_s()
: XAsset() {
}
void XCStaticModel_s::ParseData(QDataStream *aStream) {
if (GetPtr() == -1) {
// Parse writable
mWritable.ParseData(aStream);
// We would parse xmodel here, but we're using a placeholder
// Parse origin
aStream->read((char*)mOrigin, 3 * sizeof(float));
// Parse invScaledAxis
for (int i = 0; i < 3; ++i) {
aStream->read((char*)mInvScaledAxis[i], 3 * sizeof(float));
}
// Parse absmin and absmax
aStream->read((char*)mAbsmin, 3 * sizeof(float));
aStream->read((char*)mAbsmax, 3 * sizeof(float));
}
}
const XCStaticModelWritable& XCStaticModel_s::GetWritable() const {
return mWritable;
}
void XCStaticModel_s::SetWritable(const XCStaticModelWritable& writable) {
mWritable = writable;
}
void* XCStaticModel_s::GetXModel() const {
return mXModel;
}
void XCStaticModel_s::SetXModel(void* model) {
mXModel = model;
}
const float* XCStaticModel_s::GetOrigin() const {
return mOrigin;
}
void XCStaticModel_s::SetOrigin(const float* origin, size_t count) {
if (count <= 3) {
memcpy(mOrigin, origin, count * sizeof(float));
}
}
const float* XCStaticModel_s::GetInvScaledAxis() const {
return &mInvScaledAxis[0][0];
}
void XCStaticModel_s::SetInvScaledAxis(const float* axis, size_t rows, size_t cols) {
if (rows <= 3 && cols <= 3) {
for (size_t i = 0; i < rows; ++i) {
memcpy(mInvScaledAxis[i], &axis[i * cols], cols * sizeof(float));
}
}
}
const float* XCStaticModel_s::GetAbsmin() const {
return mAbsmin;
}
void XCStaticModel_s::SetAbsmin(const float* absmin, size_t count) {
if (count <= 3) {
memcpy(mAbsmin, absmin, count * sizeof(float));
}
}
const float* XCStaticModel_s::GetAbsmax() const {
return mAbsmax;
}
void XCStaticModel_s::SetAbsmax(const float* absmax, size_t count) {
if (count <= 3) {
memcpy(mAbsmax, absmax, count * sizeof(float));
}
}