/***************************************************************************
*                                                                          *
*  Copyright (C) Golaem S.A. - All Rights Reserved.                        *
*                                                                          *
***************************************************************************/
#pragma once

#include <glmCrowdIOAPI.h>
#include <glmSimulationData.h>
#include <glmFrameData.h>
#include <glmArray.h>
#include <glmPODArray.h>

namespace glm
{
    //predeclarations
    class AssetOverride;
    class ShaderOverrides;

    namespace crowdio
    {
        //predeclarations
        struct GlmLayoutNode_v1;
        class glmHistoryRuntimeStructure;
        class CachedSimulation;
        class SimulationCacheVisualFeedbackArray;

        void updateSelectedEntities(uint32_t randomSeed, float ratio, glm::PODArray<int64_t>& selectedEntities);

        void glmSimulationCacheKill_SimDataTransformation(const GlmLayoutNode_v1* currentNode, int currentNodeIndex, size_t currentNodeExecutionOrderIndex, CachedSimulation& cachedSimulation, glmHistoryRuntimeStructure* historyRuntime, const GlmSimulationData* srcSimData, GlmSimulationData* dstSimData);

        void glmSimulationCacheKill_FrameDataOperation(const GlmLayoutNode_v1* currentNode, int currentNodeIndex, size_t currentNodeExecutionOrderIndex, CachedSimulation& cachedSimulation, size_t historyIndex, int currentFrameIndex, GlmSimulationData_v0* dstSimData, GlmFrameData_v0* dstFrameData, SimulationCacheVisualFeedbackArray* visualFeedbackArray);

    } // namespace crowdio
} // namespace glm
