diff --git a/libs/xassets/xmaterialtexturedefinfo.cpp b/libs/xassets/xmaterialtexturedefinfo.cpp index be91ab2..5847730 100644 --- a/libs/xassets/xmaterialtexturedefinfo.cpp +++ b/libs/xassets/xmaterialtexturedefinfo.cpp @@ -1,13 +1,24 @@ #include "xmaterialtexturedefinfo.h" +#include "xmaterialtexturedef.h" XMaterialTextureDefInfo::XMaterialTextureDefInfo() : XAsset() , mImage() , mWater() + , aParent(nullptr) { } +XMaterialTextureDefInfo::XMaterialTextureDefInfo(XMaterialTextureDef &aParent) + : XAsset() + , mImage() + , mWater() + , aParent(&aParent) +{ + +} + XMaterialTextureDefInfo::~XMaterialTextureDefInfo() { @@ -15,7 +26,18 @@ XMaterialTextureDefInfo::~XMaterialTextureDefInfo() void XMaterialTextureDefInfo::ParseData(QDataStream *aStream) { - + mImage.ParsePtr(aStream, false); + + if (aParent->GetSemantic() == 11) { + if (mImage.GetPtr() == -1) + { + mWater.ParseData(aStream); + } + } + else + { + mImage.ParseData(aStream); + } } void XMaterialTextureDefInfo::Clear() diff --git a/libs/xassets/xmaterialtexturedefinfo.h b/libs/xassets/xmaterialtexturedefinfo.h index c5e3f2c..63db6d3 100644 --- a/libs/xassets/xmaterialtexturedefinfo.h +++ b/libs/xassets/xmaterialtexturedefinfo.h @@ -5,10 +5,13 @@ #include "xgfximage.h" #include "xwater.h" +class XMaterialTextureDef; + class XMaterialTextureDefInfo : public XAsset { public: - XMaterialTextureDefInfo(); + explicit XMaterialTextureDefInfo(); + XMaterialTextureDefInfo(XMaterialTextureDef& aParent); ~XMaterialTextureDefInfo(); virtual void ParseData(QDataStream* aStream) override; @@ -17,6 +20,7 @@ public: private: XGfxImage mImage; XWater mWater; + XMaterialTextureDef* aParent; }; #endif // XMATERIALTEXTUREDEFINFO_H