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

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

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

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

		void glmSimulationCacheNoop_FrameSelection(const GlmLayoutNode_v1* currentNode, size_t currentNodeExecutionOrderIndex, const glmHistoryRuntimeStructure* historyRuntime, int64_t entityID, const glm::Time inputFrameIndex, glm::Time& outputFrameIndex);
		void glmSimulationCacheNoop_SimDataTransformation(const GlmLayoutNode_v1* currentNode, int currentNodeIndex, size_t currentNodeExecutionOrderIndex, CachedSimulation& cachedSimulation, glmHistoryRuntimeStructure* historyRuntime, const GlmSimulationData_v0* srcSimData, GlmSimulationData_v0* dstSimData);
		void glmSimulationCacheNoop_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);
		void glmSimulationCacheNoop_AssetAssociation(const GlmLayoutNode_v1* currentNode, int currentNodeIndex, size_t currentNodeExecutionOrderIndex, CachedSimulation& cachedSimulation, size_t historyIndex, glm::Time currentTime, const GlmSimulationData_v0* srcSimData, const GlmSimulationData_v0* dstSimData, glm::Array<glm::AssetOverride>& assetOverrides, glm::Array<glm::ShaderOverrides>& shaderOverrides, glm::ShaderNameReplacement& shaderNameReplacements);

	} // namespace crowdio
} // namespace glm
