XPlor/libs/xassets/xgfxlight.cpp

67 lines
2.1 KiB
C++
Raw Normal View History

2025-08-17 13:14:17 -04:00
#include "xgfxlight.h"
#include "qcolor.h"
#include "xgfxlightdef.h"
2025-08-17 13:14:17 -04:00
XGfxLight::XGfxLight()
: XAsset()
, mType(0)
, mCanUseShadowMap(0)
2025-09-05 18:35:17 -04:00
, mColor()
, mDir()
, mOrigin()
, mRadius(0.0f)
, mCosHalfFovOuter(0.0f)
, mCosHalfFovInner(0.0f)
, mExponent(0)
, mSpotShadowIndex(0)
, mDefPtr(0)
, mDef(new XGfxLightDef())
{
2025-09-10 21:58:26 -04:00
SetName("GFX Light");
}
XGfxLight::~XGfxLight()
{
delete mDef;
2025-08-17 13:14:17 -04:00
}
2025-09-10 21:58:26 -04:00
void XGfxLight::ParseData(XDataStream *aStream) {
2025-08-17 13:14:17 -04:00
if (GetPtr() == -1) {
2025-09-10 21:58:26 -04:00
mType = aStream->ParseUInt8(QString("%1 type").arg(GetName()));
mCanUseShadowMap = aStream->ParseUInt8(QString("%1 can use shadow map").arg(GetName()));
aStream->skipRawData(2);
2025-09-10 21:58:26 -04:00
float r = aStream->ParseSingle(QString("%1 color r").arg(GetName()));
float g = aStream->ParseSingle(QString("%1 color g").arg(GetName()));
float b = aStream->ParseSingle(QString("%1 color b").arg(GetName()));
mColor = QColor::fromRgbF(r, g, b);
2025-09-10 21:58:26 -04:00
mDir.setX(aStream->ParseSingle(QString("%1 dir x").arg(GetName())));
mDir.setY(aStream->ParseSingle(QString("%1 dir y").arg(GetName())));
mDir.setZ(aStream->ParseSingle(QString("%1 dir z").arg(GetName())));
2025-09-10 21:58:26 -04:00
mOrigin.setX(aStream->ParseSingle(QString("%1 origin x").arg(GetName())));
mOrigin.setY(aStream->ParseSingle(QString("%1 origin y").arg(GetName())));
mOrigin.setZ(aStream->ParseSingle(QString("%1 origin z").arg(GetName())));
2025-09-10 21:58:26 -04:00
mRadius = aStream->ParseSingle(QString("%1 radius").arg(GetName()));
mCosHalfFovOuter = aStream->ParseSingle(QString("%1 cos half fov outer").arg(GetName()));
mCosHalfFovInner = aStream->ParseSingle(QString("%1 cos half fov inner").arg(GetName()));
mExponent = aStream->ParseInt32(QString("%1 exponent").arg(GetName()));
mSpotShadowIndex = aStream->ParseUInt32(QString("%1 spot shadow index").arg(GetName()));
mDefPtr = aStream->ParseInt32(QString("%1 def ptr").arg(GetName()));
if (mDefPtr == -1) {
mDef->ParseData(aStream);
}
2025-08-17 13:14:17 -04:00
}
}
2025-09-10 21:58:26 -04:00
2025-09-05 18:35:17 -04:00
void XGfxLight::Clear()
{
2025-08-17 13:14:17 -04:00
}