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

#pragma once

#include "glmRTTI.h"

#include "glmAssetGroupV1.h" //contains AssetUnitV1
#include "glmClothAsset.h"
#include "glmFurAsset.h"

namespace glm
{
    struct MeshAssetV3;

    /**
    * \brief Mesh Asset
    */
	struct GLM_CORE_API MeshAssetV4
    {
        GLM_RTTI("cff5d5ea-1353-4dd6-87f7-c45af7c4c853", MeshAssetV4, addAttributes)
    public:
        GLM_CLASS_STAT_ID( glm::MemoryStatIds::GolaemShared);

        /// The name of the mesh
        glm::GlmString _name;
        glm::GlmString _exportAlias;

        glm::PODArray<int> _shadingGroups;

        glm::Array<AssetUnitV1> _excludedAssets;

        ClothAssetV0 _clothAsset;

        FurAssetV0 _furAsset;

		struct IsFurStatus
		{
			enum Value
			{
				IS_FUR,
				NOT_FUR,
				END //default status, used when the fur state has not be computed yet
			};
		};
		mutable IsFurStatus::Value _isFur;

        MeshAssetV4();
        MeshAssetV4(const MeshAssetV3& source);

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