










#ifndef XGFXWORLD_H
#define XGFXWORLD_H

#include "xasset.h"
#include "xgfxworldstreaminfo.h"
#include "xgfxworldvertexdata.h"
#include "xsunlightparseparams.h"
#include "xgfxlight.h"
#include "xgfxreflectionprobe.h"

class XGfxWorld : public XAsset
{
public:
    explicit XGfxWorld();

    void ParseData(QDataStream *aStream) override;

    const char* GetName() const;
    void SetName(const char* name);

    XGfxWorldStreamInfo& GetStreamingInfo();
    const XGfxWorldStreamInfo& GetStreamingInfo() const;
    void SetStreamingInfo(const XGfxWorldStreamInfo& info);

    XGfxWorldVertexData& GetVertexData();
    const XGfxWorldVertexData& GetVertexData() const;
    void SetVertexData(const XGfxWorldVertexData& data);

    XSunLightParseParams& GetSunLightParams();
    const XSunLightParseParams& GetSunLightParams() const;
    void SetSunLightParams(const XSunLightParseParams& params);

    QVector<XGfxLight>& GetLights();
    const QVector<XGfxLight>& GetLights() const;
    void SetLights(const QVector<XGfxLight>& lights);

    QVector<XGfxReflectionProbe>& GetReflectionProbes();
    const QVector<XGfxReflectionProbe>& GetReflectionProbes() const;
    void SetReflectionProbes(const QVector<XGfxReflectionProbe>& probes);

private:
    char mName[64] = {0};
    XGfxWorldStreamInfo mStreamingInfo;
    XGfxWorldVertexData mVertexData;
    XSunLightParseParams mSunLightParams;
    QVector<XGfxLight> mLights;
    QVector<XGfxReflectionProbe> mReflectionProbes;
};

#endif // XGFXWORLD_H










