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

#pragma once

#include "glmRTTI.h"

namespace glm
{
	struct AssetManagerV3;

	/**
	* \brief Mesh Asset
	*/
	struct GLM_CORE_API MeshAssetV0
	{
		GLM_RTTI("49459a14-825b-40be-b3bb-7a5b93bc47d5", MeshAssetV0, addAttributes)
	public:

		GLM_CLASS_STAT_ID( glm::MemoryStatIds::GolaemShared);

		/// The asset manager
		const AssetManagerV3* _assetManager;

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

		/// The list of meshes in the mesh asset
		glm::Array<glm::GlmString> _meshNames;

		/// The excluded mesh assets
		glm::Array<MeshAssetV0*> _excludedMeshAssets;

		MeshAssetV0();
		~MeshAssetV0();

		/**
		* \brief Removes an excluded mesh asset
		*/
		void removeExcludedMeshAsset(const MeshAssetV0* assetToRemove);

	protected:

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

