diff --git a/libs/xassets/xwater.cpp b/libs/xassets/xwater.cpp index 9091caf..b1a7d26 100644 --- a/libs/xassets/xwater.cpp +++ b/libs/xassets/xwater.cpp @@ -3,19 +3,19 @@ XWater::XWater() : XAsset() , mWritable() - , mH0X(0) - , mH0Y(0) - , mWTerm(0) + , mH0X() + , mH0Y() + , mWTerm() , mM(0) , mN(0) , mLx(0) , mLz(0) , mGravity(0) - , mWindvel(0) - , mWinddir({ 0, 0 }) + , mWindVel(0) + , mWindDir(1) , mAmplitude(0) - , mCodeConstant({ 0, 0, 0, 0 }) - , mImage(new XGfxImage()) + , mCodeConstant(4) + , mImage() { } @@ -27,12 +27,48 @@ XWater::~XWater() void XWater::ParseData(QDataStream *aStream) { - + mWritable.ParseData(aStream); + + qint32 h0xPtr, h0yPtr, wTermPtr; + *aStream + >> h0xPtr + >> h0yPtr + >> wTermPtr + >> mM + >> mN + >> mLx + >> mLz + >> mGravity + >> mWindVel + >> mWindDir[0] + >> mWindDir[1] + >> mAmplitude + >> mWindDir[0] + >> mWindDir[1] + >> mWindDir[2] + >> mWindDir[3]; + + mImage.ParsePtr(aStream, false); + + if (h0xPtr) + { + aStream->readRawData(mH0X.data(), 4 * mM * mN); + } + if (h0yPtr) + { + aStream->readRawData(mH0X.data(), 4 * mM * mN); + } + if (wTermPtr) + { + aStream->readRawData(mWTerm.data(), 4 * mM * mN); + } + + mImage.ParseData(aStream); } void XWater::Clear() { - mWritable = XWaterWritable(); + mWritable.Clear(); mH0X = 0; mH0Y = 0; mWTerm = 0; @@ -41,9 +77,9 @@ void XWater::Clear() mLx = 0; mLz = 0; mGravity = 0; - mWindvel = 0; - mWinddir = { 0, 0 }; + mWindVel = 0; + mWindDir.clear(); mAmplitude = 0; - mCodeConstant = { 0, 0, 0, 0 }; - mImage = new XGfxImage(); + mCodeConstant.clear(); + mImage.Clear(); } diff --git a/libs/xassets/xwater.h b/libs/xassets/xwater.h index c899581..60366b5 100644 --- a/libs/xassets/xwater.h +++ b/libs/xassets/xwater.h @@ -18,19 +18,19 @@ public: private: XWaterWritable mWritable; - float *mH0X; - float *mH0Y; - float *mWTerm; + QByteArray mH0X; + QByteArray mH0Y; + QByteArray mWTerm; int mM; int mN; float mLx; float mLz; float mGravity; - float mWindvel; - QVector mWinddir; + float mWindVel; + QVector mWindDir; float mAmplitude; QVector mCodeConstant; - XGfxImage *mImage; + XGfxImage mImage; }; #endif // XWATER_H