XPlor/libs/xassets/xgfxlight.cpp

154 lines
2.8 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)
, mUnused({0, 0})
, mColor({0.0f, 0.0f, 0.0f})
, mDir({0.0f, 0.0f, 0.0f})
, mOrigin({0.0f, 0.0f, 0.0f})
, mRadius(0.0f)
, mCosHalfFovOuter(0.0f)
, mCosHalfFovInner(0.0f)
, mExponent(0)
, mSpotShadowIndex(0)
, mDefPtr(0)
, mDef(new XGfxLightDef())
{
}
XGfxLight::~XGfxLight()
{
delete mDef;
2025-08-17 13:14:17 -04:00
}
void XGfxLight::ParseData(QDataStream *aStream) {
if (GetPtr() == -1) {
*aStream
>> mType
>> mCanUseShadowMap;
aStream->skipRawData(2);
float r, g, b;
*aStream
>> r
>> g
>> b
>> mDir[0]
>> mDir[1]
>> mDir[2]
>> mOrigin[0]
>> mOrigin[1]
>> mOrigin[2]
>> mRadius
>> mCosHalfFovOuter
>> mCosHalfFovInner
>> mExponent
>> mSpotShadowIndex
>> mDefPtr;
mColor = QColor(r, g, b);
if (mDefPtr == -1)
{
mDef->ParseData(aStream);
}
2025-08-17 13:14:17 -04:00
}
}
unsigned char XGfxLight::GetType() const {
return mType;
}
void XGfxLight::SetType(unsigned char aType) {
mType = aType;
2025-08-17 13:14:17 -04:00
}
unsigned char XGfxLight::CanUseShadowMap() const {
return mCanUseShadowMap;
}
void XGfxLight::SetCanUseShadowMap(bool aCanUse) {
mCanUseShadowMap = aCanUse ? 1 : 0;
2025-08-17 13:14:17 -04:00
}
QColor XGfxLight::GetColor() const {
2025-08-17 13:14:17 -04:00
return mColor;
}
void XGfxLight::SetColor(const QColor &aColor) {
mColor = aColor;
2025-08-17 13:14:17 -04:00
}
QVector<float> XGfxLight::GetDir() const {
2025-08-17 13:14:17 -04:00
return mDir;
}
void XGfxLight::SetDir(const QVector<float> &aDir) {
mDir = aDir;
2025-08-17 13:14:17 -04:00
}
QVector<float> XGfxLight::GetOrigin() const {
2025-08-17 13:14:17 -04:00
return mOrigin;
}
void XGfxLight::SetOrigin(const QVector<float> &aOrigin) {
mOrigin = aOrigin;
2025-08-17 13:14:17 -04:00
}
float XGfxLight::GetRadius() const {
return mRadius;
}
void XGfxLight::SetRadius(float aRadius) {
mRadius = aRadius;
2025-08-17 13:14:17 -04:00
}
float XGfxLight::GetCosHalfFovOuter() const {
return mCosHalfFovOuter;
}
void XGfxLight::SetCosHalfFovOuter(float aCosHalfFov) {
mCosHalfFovOuter = aCosHalfFov;
2025-08-17 13:14:17 -04:00
}
float XGfxLight::GetCosHalfFovInner() const {
return mCosHalfFovInner;
}
void XGfxLight::SetCosHalfFovInner(float aCosHalfFov) {
mCosHalfFovInner = aCosHalfFov;
2025-08-17 13:14:17 -04:00
}
int XGfxLight::GetExponent() const {
return mExponent;
}
void XGfxLight::SetExponent(int aExponent) {
mExponent = aExponent;
2025-08-17 13:14:17 -04:00
}
unsigned int XGfxLight::GetSpotShadowIndex() const {
return mSpotShadowIndex;
}
void XGfxLight::SetSpotShadowIndex(unsigned int aIndex) {
mSpotShadowIndex = aIndex;
2025-08-17 13:14:17 -04:00
}
int XGfxLight::GetDefPtr() const {
return mDefPtr;
}
void XGfxLight::SetDefPtr(int ptr) {
mDefPtr = ptr;
}