#include "xmaterialargumentdef.h"
#include "xmaterialshaderargument.h"

XMaterialArgumentDef::XMaterialArgumentDef()
    : XAsset()
    , mCodeSampler(0)
    , mParent(nullptr)
{
    SetName("Material Argument Definition");
}

XMaterialArgumentDef::XMaterialArgumentDef(XMaterialShaderArgument &aParent)
    : XAsset()
    , mCodeSampler(0)
    , mParent(&aParent)
{
    SetName("Material Argument Definition");
}

XMaterialArgumentDef::~XMaterialArgumentDef()
{

}

void XMaterialArgumentDef::Clear()
{
    
}

void XMaterialArgumentDef::ParseData(XDataStream *aStream)
{
    if (!mParent)
    {
        return;
    }

    *aStream >> mCodeSampler;

    if (mParent->GetType() == 1 || mParent->GetType() == 7)
    {
        if (mCodeSampler == -1)
        {
            // TODO: Figure out wtf this parses...
            aStream->skipRawData(16);
        }
    }
}
