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

#pragma once

#include "glmRTTI.h"

#include <glmGolaemCharacterDeclarations.h> // GolaemCharacter declarations

namespace glm
{
    class GLM_CORE_API RenderInfoV0
    {
        GLM_RTTI("b2f19df0-70a1-405c-850e-7a3f97ef9bc8", RenderInfoV0, addAttributes);

    public:
        GLM_CLASS_STAT_ID( glm::MemoryStatIds::GolaemShared);

        int _entityId;
        int _characterIdx;
        int _renderingTypeIdx;

        RenderInfoV0();
        RenderInfoV0(const RenderInfoV0& source);
        RenderInfoV0& operator=(const RenderInfoV0& source);

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

    class GLM_CORE_API AssetAssociationsV0
    {
        GLM_RTTI("0e0a1888-492a-49e3-9dcb-398d9fbbe0d8", AssetAssociationsV0, addAttributes);

    public:
        GLM_CLASS_STAT_ID( glm::MemoryStatIds::GolaemShared);

        /// The RNG seed to use for the shader assets
        unsigned int _rngSeed;

        /// entity id to rendering type id associations
        glm::Array<RenderInfoV0> _entityRenderInfo;

        AssetAssociationsV0();

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