/***************************************************************************
*                                                                          *
*  Copyright (C) Golaem S.A.  All Rights Reserved.                         *
*                                                                          *
****************************************************************************/

#pragma once

#include "glmRTTI.h"

#include <glmGolaemCharacterDeclarations.h> // GolaemCharacter declarations

namespace glm
{
    struct ShaderAssetV1;

    /**
	* \brief Shader Asset
	*/
    class GLM_CORE_API ShaderAssetV2
    {
        GLM_RTTI("7d75d516-a703-43f6-bd1f-47bc9706330d", ShaderAssetV2, addAttributes)
    public:
        GLM_CLASS_STAT_ID( glm::MemoryStatIds::GolaemShared);

        /// The name of the asset
        glm::GlmString _name;

        /// The category of the shader asset
        glm::GlmString _category;

        /// preview shader name, since 8.0.1
        glm::GlmString _previewName;

    public:
        ShaderAssetV2();
        ~ShaderAssetV2();

        bool hasCategory(const glm::GlmString& category) const;

        /**
		* \brief V1 backwards compatibility
		* \note v2 adds _data member
		*/
        void createFromV1(const ShaderAssetV1& shaderAssetV1);

    protected:
        /**
		* \brief Inspection needed method declaring the inspectable attributes.
		*/
        static void addAttributes();
    };
} // namespace glm
